WO2024099565A1 - Method and apparatus for scheduling for input-queued switches - Google Patents
Method and apparatus for scheduling for input-queued switches Download PDFInfo
- Publication number
- WO2024099565A1 WO2024099565A1 PCT/EP2022/081425 EP2022081425W WO2024099565A1 WO 2024099565 A1 WO2024099565 A1 WO 2024099565A1 EP 2022081425 W EP2022081425 W EP 2022081425W WO 2024099565 A1 WO2024099565 A1 WO 2024099565A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- input port
- ports
- input
- port
- request message
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Ceased
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/25—Routing or path finding in a switch fabric
- H04L49/253—Routing or path finding in a switch fabric using establishment or release of connections between ports
- H04L49/254—Centralised controller, i.e. arbitration or scheduling
Definitions
- the present disclosure in some embodiments thereof, relates to switches and, more specifically, but not exclusively, to a method and apparatus for scheduling for input-queued switches.
- a switch may include buffered input ports, a switch fabric and buffered output ports. If first-in first-out (FIFO) input buffers are used, only the oldest packet is available for forwarding. More recent arrivals cannot be forwarded if the oldest packet cannot be forwarded because its destination output is busy. The output may be busy if there is output contention.
- FIFO first-in first-out
- a device for establishing a plurality of communication channels comprises: at least one processor in communication with a plurality of input ports and a plurality of output ports, configured for: in an initial iteration: sending by the plurality of input ports, a plurality of first instances of a request message to the plurality of output ports, each respective request message including an identifier of the respective input port, sending by each output port that selected an input port, a respective grant message to the selected input port, and storing the identifier of the selected input port, in each respective iteration of one or more iterations: sending, by each input port that received the grant message in a preceding iteration to the corresponding output port that sent the grant message, a subsequent instance of the request message that includes the identifier of the input port, checking by each corresponding output port that received the subsequent instance of the request message, that the identifier of the input port included in the subsequent request message matches the stored identifier, and in response to termination of the iterations: forwarding by each input port
- a device including an input port for establishing a communication channel with one of a plurality of output ports, comprises: a processor in communication with the input port, configured for: in an initial iteration: sending to each one of a plurality of output ports, a first instance of a request message, each respective request message including an identifier of the input port, receiving a grant message from an output port of the plurality of output ports, in each respective iteration of one or more iterations: in response to receiving the grant message in a preceding iteration, sending a subsequent instance of the request messages that includes the identifier, to the output port, in response to not receiving the grant message in the preceding iteration, sending a plurality of subsequent instances of the request message to the plurality of output ports, and in response to termination of the iterations: forwarding data to the output port.
- a device including an output port for establishing a communication channel with one of a plurality of input ports comprises: a processor in communication with the output port, configured for: in an initial iteration: receiving a plurality of first instances of request messages each including an identifier of an input port of a plurality of input ports that sent the respective request message, selecting one of the plurality of input ports, sending a grant message to the selected input port, storing the identifier of the selected input port included in the request message, in each respective iteration of one or more iterations: receiving a subsequent instance of the request message including an identifier of the input port that sent the subsequent instance of the request message, checking that the identifier in the subsequent instance of the request message matches the stored identifier, in response to termination of the iterations: receiving data from the input port.
- a computer implemented method for establishing a plurality of communication channels comprises: in an initial iteration: sending by the plurality of input ports, a plurality of first instances of a request message to the plurality of output ports, each respective request message including an identifier of the respective input port, sending by each output port that selected an input port, a respective grant message to the selected input port, and storing the identifier of the selected input port, in each respective iteration of one or more iterations: sending, by each input port that received the grant message in a preceding iteration to the corresponding output port that sent the grant message, a subsequent instance of the request message that includes the identifier of the input port, checking by each corresponding output port that received the subsequent instance of the request message, that the identifier of the input port included in the subsequent request message matches the stored identifier, and in response to termination of the iterations: forwarding by each input port, data destined for the corresponding output port.
- a computer implemented method for establishing a communication channel with one of a plurality of output ports comprises: in an initial iteration: sending to each one of a plurality of output ports, a first instance of a request message, each respective request message including an identifier of the input port, receiving a grant message from an output port of the plurality of output ports, in each respective iteration of one or more iterations: in response to receiving the grant message in a preceding iteration, sending a subsequent instance of the request messages that includes the identifier, to the output port, in response to not receiving the grant message in the preceding iteration, sending a plurality of subsequent instances of the request message to the plurality of output ports, and in response to termination of the iterations: forwarding data to the output port.
- a computer implemented method for establishing a communication channel with one of a plurality of input ports comprising: in an initial iteration: receiving a plurality of first instances of request messages each including an identifier of an input port of a plurality of input ports that sent the respective request message, selecting one of the plurality of input ports, sending a grant message to the selected input port, storing the identifier of the selected input port included in the request message, in each respective iteration of one or more iterations: receiving a subsequent instance of the request message including an identifier of the input port that sent the subsequent instance of the request message, checking that the identifier in the subsequent instance of the request message matches the stored identifier, in response to termination of the iterations: receiving data from the input port.
- Each of the programs below may be provided on a non-transitory storage medium.
- a computer program for establishing a plurality of communication channels comprising program instructions which, when executed by at least one processor, cause the at least one processor to: in an initial iteration: send by the plurality of input ports, a plurality of first instances of a request message to the plurality of output ports, each respective request message including an identifier of the respective input port, send by each output port that selected an input port, a respective grant message to the selected input port, and storing the identifier of the selected input port, in each respective iteration of one or more iterations: send, by each input port that received the grant message in a preceding iteration to the corresponding output port that sent the grant message, a subsequent instance of the request message that includes the identifier of the input port, check by each corresponding output port that received the subsequent instance of the request message, that the identifier of the input port included in the subsequent request message matches the stored identifier, and in response to termination of the iterations: forward by each input port, data
- a computer program for establishing a communication channel with one of a plurality of output ports, the computer program comprising program instructions which, when executed by at least one processor, cause the at least one processor to: in an initial iteration: send to each one of a plurality of output ports, a first instance of a request message, each respective request message including an identifier of the input port, receive a grant message from an output port of the plurality of output ports, in each respective iteration of one or more iterations: in response to receiving the grant message in a preceding iteration, send a subsequent instance of the request messages that includes the identifier, to the output port, in response to not receiving the grant message in the preceding iteration, send a plurality of subsequent instances of the request message to the plurality of output ports, and in response to termination of the iterations: forward data to the output port.
- a computer program for establishing a communication channel with one of a plurality of input ports, the computer program comprising program instructions which, when executed by at least one processor, cause the at least one processor to: in an initial iteration: receive a plurality of first instances of request messages each including an identifier of an input port of a plurality of input ports that sent the respective request message, select one of the plurality of input ports, send a grant message to the selected input port, store the identifier of the selected input port included in the request message, in each respective iteration of one or more iterations: receive a subsequent instance of the request message including an identifier of the input port that sent the subsequent instance of the request message, check that the identifier in the subsequent instance of the request message matches the stored identifier, in response to termination of the iterations: receive data from the input port.
- Output ports may operate independent of one another.
- Input ports may operate independently of one another.
- Implementations described herein use 2 steps per iteration and 3 steps at the last iteration, in contrast to prior approaches that use 3 steps per iteration, for all iterations.
- the decrease in iterations reduces traffic between the input and output ports over the switching fabric, which improves performance of the switching fabric and/or of the input and output ports.
- Communication channels are established faster and/or with fewer messages between the input and output ports, by sending the subsequent instance of the request messages instead of an accept message.
- the match is defined based on the checking of the identifier instead of an accept message, which saves on sending the accept message.
- the plurality of input ports and the plurality of output ports are network ports
- the communication channels are established over a network
- the data comprises network traffic
- the network traffic is routed from each input port to each matched output port.
- Network traffic and/or time to setup the communication channels is reduced by avoiding sending the accept messages.
- each input port is associated with a queue of network packets with destination addresses of different output ports, and the plurality of output ports to which the plurality of first instances of the request message are sent by each input port have addresses matching the destination addresses of the network packets.
- Network packets are sent earlier.
- the plurality of input ports are of a plurality of clients and the plurality of output ports are of a plurality of servers, where clients request servers.
- the input port sends the subsequent instance of the request message only to the selected one output port.
- An output port that does not receive the subsequent instance understands that the output port has not accepted its grant.
- the input port selects the one output port using a round robin scheme.
- the round robin scheme prevents dominant output ports from being selected, and/or ensures a distribution for selection of the output ports.
- each respective input port sends the plurality of first instances of the request messages to output ports that are targets for communication with the respective input port.
- Output ports that are not targets are not sent message, reducing the message traffic.
- each output port is configured for receiving request messages from at least two different input ports.
- the output port can select from the different input ports.
- the output port selects a single input port from the plurality of input ports that sent request messages.
- the non-selected input ports understands it has not been selected when no grant message is received.
- the output port selects the single input port using a round robin scheme.
- the round robin scheme prevents dominant output ports from being selected, and/or ensures a distribution for selection of the output ports.
- input ports that did not receive grant message in the preceding iteration send a plurality of subsequent instances of the request messages to a plurality of output ports.
- the non-selected input ports understands it has not been selected when no grant message is received.
- each input port that received at least one grant messages in the preceding iteration sends the subsequent instance of the request message only to one of the corresponding output ports that sent the grant message.
- the output port in response to the match, ignores additional request messages from other input ports, and does not send additional grant messages to the other input ports. The amount of message traffic is reduced.
- the one or more iterations terminate when at least one of the following is met: a predefined percentage of input ports are matched to output ports, a predefined number of input ports are matched to output ports, or a predefined number of iterations have elapsed.
- the at least one processor excludes sending an accept message from the input port to the corresponding output port for explicitly indicating acceptance of the grant.
- Accept messages are avoided, reducing the number of messages sent and/or reducing time to establish the sessions.
- the plurality of input ports are 1-to-l matched to the plurality of output ports, and each input port only sends data to the matched output port.
- One to one matching is efficient.
- the processor excludes sending an accept message to the output port for explicitly indicating acceptance of the grant.
- receiving the grant message comprises receiving a plurality of grant messages from at least two output ports of the plurality of output ports, and further comprising selecting one output port from the at least two output ports, wherein the substance instance of the request is sent to the selected one output port, and data is forwarded to the selected one output port.
- the input port is matched to the output port and unmatched to other output ports
- the output port is matched to the input port and unmatched to other input ports
- data is forward from the input port only to the matched output port
- the input port is associated with a queue of network packets with destination addresses of different output ports, and the plurality of output ports to which the request messages are sent have addresses matching the destination addresses of the network packets.
- the input port that sent the subsequent instance of the request message is identified as the selected input port when the identifier in the subsequent instance of the request message matches the stored identifier.
- FIG. 1 is a schematic of a Bipartite Graph, to help understand embodiments of the disclosure
- FIG. 2 is a sequence diagram for resolving the matching problem using an input PE and output PE based on the iSLIP and PIM approaches, to help understand some embodiments of the present disclosure
- FIG. 3 is a block diagram of components of a system for matching input ports to output ports, in accordance with some embodiments
- FIG. 4 is a flowchart of a method for establishing communication channels between input ports and output ports, in accordance with some embodiments
- FIG. 5 is a flowchart of a method for an input port for establishing a communication channel with one of multiple output ports, in accordance with some embodiments
- FIG. 6 is a flowchart of a method for an output port for establishing a communication channel with one of multiple input ports, in accordance with some embodiments; and FIG. 7 is a sequence diagram for matching input ports to output ports, in accordance with some embodiments.
- the present disclosure in some embodiments thereof, relates to switches and, more specifically, but not exclusively, to a method and apparatus for scheduling for input-queued switches.
- An aspect of some embodiments relates to a device, a method, and/or a computer program for establishing communication channels between input ports and output ports.
- a processor instructs sending first instances of a request message by the input ports, to the plurality output ports. Each respective request message includes an identifier of the respective input port.
- the processor instructs sending by each output port that selected an input port, a respective grant message to the selected input port. Each input port stores the identifier of the selected input port.
- the processor instructs sending, by each input port that received the grant message in a preceding iteration to the corresponding output port that sent the grant message, a subsequent instance of the request message that includes the identifier of the input port.
- Each corresponding output port that received the subsequent instance of the request message checks that the identifier of the input port included in the subsequent request message matches the stored identifier.
- the processor instructs forwarding by each input port, data destined for the corresponding output port.
- An aspect of some embodiments relates to a device, a method, and/or a computer program that includes and/or instructs an input port for establishing a communication channel with one of multiple output ports.
- a processor in communication with the input port instructs: in an initial iteration: sending to each one of the output ports, a first instance of a request message. Each respective request message includes an identifier of the input port.
- the input port receives a grant message from one or more of the output ports.
- the processor instructs sending a subsequent instance of the request messages that includes the identifier, to the output port.
- the processor In response to not receiving the grant message in the preceding iteration, the processor instructs sending subsequent instances of the request message to the output ports. In response to termination of the iterations: the processor instructs forwarding data to the output port.
- An aspect of some embodiments relates to a device, a method, and/or a computer program that includes and/or instructs an output port for establishing a communication channel with one of multiple input ports.
- a processor in communication with the output port instructs: in an initial iteration: receiving first instances of request messages each including an identifier of an input port of the multiple input ports that sent the respective request message.
- the processor instructs selecting one of the input ports, sending a grant message to the selected input port, and storing the identifier of the selected input port included in the request message.
- the processor instructs receiving a subsequent instance of the request message including an identifier of the input port that sent the subsequent instance of the request message, and checking that the identifier in the subsequent instance of the request message matches the stored identifier. In response to termination of the iterations the processor instructs receiving data from the input port.
- Implementations described herein use 2 steps per iteration and 3 steps at the last iteration, in contrast to prior approaches that use 3 steps per iteration, for all iterations.
- the decrease in iterations reduces traffic between the input and output ports over the switching fabric, which improves performance of the switching fabric and/or of the input and output ports.
- At least some implementations described herein address the technical problem of resolving matching in a Bipartite graph.
- Matching can be for example, in the field of network communications, for matching between input ports and outputs ports, in order to deliver traffic from the input ports to the output ports.
- Other examples of matching may be between applicants and jobs.
- At least some implementations described herein improve the technical field of switching, by resolving matching in a Bipartite graph.
- a matching in a Bipartite Graph is a set of edges chosen in such a way that no two edges share an endpoint.
- a maximum matching is a matching of maximum size (maximum number of edges), therefore, if any edge is added to it, it is no longer a matching. There can be more than one maximum matchings for a given Bipartite Graph.
- FIG. 1 is a schematic of a Bipartite Graph 102, to help understand embodiments of the disclosure.
- a simple example with reference to applicants and jobs is provided to help the reader understand the concept.
- the Bipartite Graph may be used for technical applications, for example, switching of packets between input and output ports over a switching fabric.
- Circles 104 represents applicants and circles 106 represent jobs.
- Thin lines 108 between applicants 104 and jobs 106 represent demand by specific applicants to one or more specific jobs. It is noted that a certain applicant may be suited for one or more jobs. However, each applicant may only accept one job, and each job may only be filled by a single application.
- Thick lines 110 represent matching between applicants 104 and jobs 106. In this example, a maximum matching was found as all applicants have a match, as shown in graph 112 where each circle 104 is connected to a single circle 106 by a single thick line 110.
- circles 104 represent input ports that have traffic destined to output ports marked as circles 106.
- Each input port has a dedicated queue for traffic to a specific output port.
- a thin line 108 from an input port to an output port represents the fact that the input port has traffic to be delivered to the corresponding output port, which means the corresponding queue is not empty.
- Thick lines 110 represent matching between input ports 104 and output ports 106.
- Maximal matching is considered as NP-Hard problem and consumes significant amount of time to resolve (O(N 3 ) where N is the number of ports). Therefore, multiple approaches were developed to find maximal matching. Maximal matching is the process of finding as many input/output pairs as possible within a time that is as short as possible.
- FIG. 2 is a sequence diagram 202 for resolving the matching problem using an input PE 204 and output PE 206 based on the iSLIP and PIM approaches, to help understand some embodiments of the present disclosure.
- iSLIP and PIM operates using multiple iterations where each iteration has 3 steps:
- Step 1 Request 208: Each unmatched input sends a request to every output for which it has a queued cell. Step 1 requires a message from input PEs 204 to output Pes 206.
- Step 2 Grant 210: If an unmatched output receives any requests, it grants to one on the requesting input ports. Step 2 requires a message from output PEs 206 to input PEs 204.
- Step 3 Accept 212: If an input port receives a grant, it accepts one of the granting output ports. Step 3 requires a message from input PEs 204 to output Pes 206.
- At least some implementations described herein address the technical problem of improving performance of matching between inputs and outputs, where each input is associated with one or more queues for one or more outputs. At least some implementations described herein improve the technical field of switching, by improving performance of matching between inputs and outputs, where each input is associated with one or more queues for one or more outputs.
- high radix switches iSLIP and PIM require increased number of iterations to achieve as many matches between input and output ports as possible.
- communication between input and output processors, i.e. transferring request, grant and accept messages may take longer than 1 clock cycle.
- the time it takes to converge the algorithm to high number of matching pairs may be longer than required.
- N is the number of iterations used.
- At least some embodiments described herein address the aforementioned technical problem, and/or improve the aforementioned technical field, by providing performance that is the same or similar as the original iSLIP/PIM approaches, with 2 steps per iteration and 3 steps at the last iteration.
- N is the number of iterations used.
- At least some embodiments described herein provide a reduction of N-l steps as compared to the original iSLIP/PIM approaches.
- the present disclosure may be a system, a method, and/or a computer program product.
- the computer program product may include a computer readable storage medium (or media) having computer readable program instructions thereon for causing a processor to carry out aspects of the present disclosure.
- the computer readable storage medium can be a tangible device that can retain and store instructions for use by an instruction execution device.
- the computer readable storage medium may be, for example, but is not limited to, an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination of the foregoing.
- Computer readable program instructions described herein can be downloaded to respective computing/processing devices from a computer readable storage medium or to an external computer or external storage device via a network, for example, the Internet, a local area network, a wide area network and/or a wireless network.
- a network for example, the Internet, a local area network, a wide area network and/or a wireless network.
- the computer readable program instructions may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server.
- the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider).
- LAN local area network
- WAN wide area network
- Internet Service Provider for example, AT&T, MCI, Sprint, EarthLink, MSN, GTE, etc.
- electronic circuitry including, for example, programmable logic circuitry, field-programmable gate arrays (FPGA), or programmable logic arrays (PLA) may execute the computer readable program instructions by utilizing state information of the computer readable program instructions to personalize the electronic circuitry, in order to perform aspects of the present disclosure.
- FPGA field-programmable gate arrays
- PLA programmable logic arrays
- each block in the flowchart or block diagrams may represent a module, segment, or portion of instructions, which comprises one or more executable instructions for implementing the specified logical function(s).
- the functions noted in the block may occur out of the order noted in the figures.
- two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved.
- FIG. 3 is a block diagram of components of a system 300 for matching input ports 302 to output ports 304, in accordance with some embodiments.
- FIG. 4 is a flowchart of a method for establishing communication channels between input ports and output ports, in accordance with some embodiments.
- FIG. 5 is a flowchart of a method for an input port for establishing a communication channel with one of multiple output ports, in accordance with some embodiments.
- FIG. 6 which is a flowchart of a method for an output port for establishing a communication channel with one of multiple input ports, in accordance with some embodiments.
- FIG. 7, is a sequence diagram 700 for matching input ports 702 to output ports 704, in accordance with some embodiments.
- System 300 may implement the acts of the methods described with reference to FIGs. 4-7, as described herein.
- system 300 includes multiple input ports 302 and multiple output ports 304, connected by a switch 306.
- Input ports 302 and/or output ports 304 may be implemented as, for example, virtual ports implemented in software, and/or physical ports implemented in hardware.
- Switch 306 may be implemented as, for example, a crossbar switch, switching fabric, and one or more networks (e.g., internet, a local area network, a virtual private network, a wireless network, a cellular network, and/or combinations of the aforementioned.
- Each input port 302 is associated with an input processor 308 that generate request message and/or receives grant messages, as described herein.
- Each output port 304 is associated with an output processor 310 that receives request message and/or generates grant messages, as described herein.
- a control processor(s) 370 is in communication with input ports 302 and/or output ports 304 and/or input processor(s) 308 and/or output processor(s) 310 and/or switch 306.
- control processor(s) 370 provides centralized control and/or synchronization for matching the input ports 203 with the output ports 304.
- control processor(s) 370 may control delivery of traffic from input ports 302 to the matched output port 304 destinations
- Input processor(s) 308 and/or output processor(s) 310 and/or control processor(s) 370 may be implemented as, for example, a software processor, a single processor per port, a single processor for multiple input ports and another single processor for multiple output ports, and a single processor for the input and output ports.
- Exemplary processor(s) 308 and/or 310 and/or 370 include: central processing unit(s) (CPU), graphics processing unit(s) (GPU), field programmable gate array(s) (FPGA), digital signal processor(s) (DSP), application specific integrated circuit(s) (ASIC), customized circuit(s), processors for interfacing with other units, and/or specialized hardware accelerators.
- Processor(s) may be implemented as a single processor, a multi-core processor, and/or a cluster of processors arranged for parallel processing (which may include homogenous and/or heterogeneous processor architectures).
- Each processor 308 and/or 310 and/or 370 may be implemented entirely in hardware, and/or may be associated with a memory 312 storing code instructions for execution by the associated processor.
- Memory 312 may be implemented as, for example, a random access memory (RAM), dynamic random access memory (DRAM) and/or storage class memory (SCM), non-volatile memory, magnetic media, semiconductor memory devices, hard drive, removable storage, and optical media (e.g., DVD, CD-ROM).
- Input processor(s) 308 and input port 302, with optional memory 312, may be arranged as an input device 314.
- Input device 314 may be a physical unit, and/or may be logically defined, and/or may be a concept without hardware and/or software definition.
- input device 314 may be a computer, a router, and an executing process.
- Output processor(s) 310 and input port 304, with optional memory 312, may be arranged as an output device 316.
- Output device 316 may be a physical unit, and/or may be logically defined, and/or may be a concept without hardware and/or software definition.
- output device 316 may be a computer, a router, and an executing process.
- Each input port 302 is associated with a data queue 318, which may be included in input device 314, for queueing data destined to one or more output ports 304, for example, packets.
- Data queued in data queue 318 may be generated by a data device 320, for example, a computer, a network, a sensor, a virtual device, a executing process, and a router.
- Each output port 304 may be associated with a data device 322 that is a destination of the data stored in data queue 318.
- Data device 322 may be implemented as, for example, a computer, a network, a sensor, a virtual device, a executing process, and a router.
- Each input port 302 and/or output port 304 may be associated with a switch interface 324 for connecting to switch 306.
- Switch interface 324 may be included in input device 314 and/or output device 316.
- Switch interface 324 may be implemented, as for example, one or more of, a bus interface for connecting to local busses, a network interface card, a wireless interface to connect to a wireless network, a physical interface, a virtual interface implemented in software, network communication software providing higher layers of network connectivity, and/or other implementations.
- Input devices 314 and/or output devices 316 may be in communication with one or more user interfaces 326 that include a mechanism for a user to enter data and/or view data.
- user interfaces 326 include, for example, one or more of, a touchscreen, a display, a keyboard, a mouse, and voice activated software using speakers and microphone.
- FIG. 4 a flowchart of a method for establishing communication channels between input ports and output ports is presented.
- the features of the method described with reference to FIG. 4 may be implemented, for example, by a centralized processor controlling multiple input ports and/or multiple output ports, and/or by an independent processor for each of the input ports and/or output ports.
- one or more of the input ports send a request message to the output ports.
- Each sending input port sends one or more request messages to one or more output ports.
- the initially sent request message is referred to herein as first instance of the request message.
- Each request message includes an identifier of the respective input port, for example, a network address of the sending input port, and/or other unique identifier of the sending input port.
- the sending of request messages by multiple input ports may be synchronized, for example, triggered by a central clock and/or central processor, and/or triggered to occur every defined amount of time within a defined time interval.
- the sending of request messages by multiple input ports may be asynchronous, for example, each input port sends its own request messages according to its own schedule.
- each respective input port sends multiples first instances of the request messages to output ports that are targets for communication with the respective input port. For example, for a certain input port for which network packets are queued in a queue, the certain input port sends request messages to the different output ports which are destinations for the queued network packets.
- Each output port is capable of receiving request messages from two or more different input ports.
- the output port selects a single input port, for example, using a round robin scheme (e.g., to help spread out the selected input ports), random selection, according to the first received request message, or other approaches.
- a round robin scheme e.g., to help spread out the selected input ports
- random selection e.g., random selection, according to the first received request message, or other approaches.
- the input ports and the output ports are implemented as network ports, optionally of different devices (e.g., loT) and/or of multiple processes (e.g., applications) running on a common device.
- the request messages may be for establishing communication channels over a network. Data that is sent over the established communication channels may be network traffic that is routed from each input port to each matched output port.
- Each input port may be associated with a queue of network packets with destination addresses of different output ports.
- the output ports to which the first instances of the request message are sent by each input port may have addresses matching the destination addresses of the network packets.
- the input ports are of clients and the output ports are of servers.
- Clients send the request message to the servers.
- each output port that selected an input port sends a grant message to the selected input port.
- Each output port that send the grant message stores the identifier of the selected input port to which the grant message was sent.
- each input port that received the grant message in a preceding iteration (or the initial iteration) sends a subsequent instance of the request message to the corresponding output port that sent the grant message.
- the subsequent instance of the request messages includes the same identifier of the input port that was sent in a preceding instance (or the first instance) of the request message.
- Each input port that received the grant message defines a match with the corresponding output port to which the subsequent instance of the request message was sent.
- Each input port that received the grant message in the preceding iteration sends the subsequent instance of the request message only to the corresponding output port that sent the grant message.
- the input port sends a single subsequent instance of the request message to the output port that sent the grant message. Now additional request message are sent to other output ports by the input port that received the grant message.
- an input port of the may receive two or more grant messages from two or more different output ports.
- the input port selects one output port from the two or more output ports. Selection may be done, for example, using a round robin scheme, randomly, according to the first received grant message, and other approaches.
- the input port sends the subsequent instance of the request message to the single selected output port.
- the input port sends the subsequent instance of the request message only to the selected single output port.
- the input port does not send additional request message to the other output ports that sent grant messages but that were not selected.
- each corresponding output port that received the subsequent instance of the request message checks that the identifier of the input port included in the subsequent request message matches the stored identifier.
- each corresponding output port that received the subsequent instance of the request message defines a match with the input port that sent the subsequent instance of the request message.
- the output port After an output port has defined a match with the input port, the output port ignores additional request messages from other input ports, and does not send additional grant messages to the other input ports.
- input ports that did not receive grant message in the preceding iteration send subsequent instances of the request messages to one or more output ports, in an attempt to obtain grant messages.
- the iterations terminate when one or more of the following conditions are met: a predefined percentage of input ports are matched to output ports, a predefined number of input ports are matched to output ports, and a predefined number of iterations have elapsed.
- an accept message is not sent from the input port to the corresponding output port for explicitly indicating acceptance of the grant.
- the subsequent request message sent during the next iteration serves at the accept message, thereby reducing the number of messages and the amount of time taken to match input ports to output ports in the multiple iterations.
- each matched input port sends data destined for the corresponding output port.
- Each input port matched to the corresponding output port forwards data destined for the corresponding output port.
- the approach described herein matches input ports in a 1-to-l manner to the output ports. Each input port only sends data to the matched output port.
- FIG. 5 a flowchart of a method for an input port for establishing a communication channel with one of multiple output ports, is presented.
- the features described with reference to FIG. 5 may be implemented, for example, by a processor of the input port (e.g., loT device, client) operating independently, or by a central processor controlling multiple input ports and/or multiple output ports.
- a processor of the input port e.g., loT device, client
- a central processor controlling multiple input ports and/or multiple output ports.
- the input ports sends a first instance of a request message to one or more output ports to which communication sessions are to be established.
- Each request message includes an identifier of the input port, that uniquely identifies the input port from other input ports which may be attempting to establish communication session with the output ports.
- the input port is associated with a queue of network packets with destination addresses of different output ports.
- the output ports to which the request messages are sent have addresses matching the destination addresses of the network packets.
- the input port receives a grant message from one or more of the output ports to which the request message was sent.
- the input port select one of the output ports.
- the subsequent instance of the request (as in 506) is sent to the selected output port, and data is forwarded to the selected output port (as in 512).
- the input port in response to receiving the grant message in a preceding iteration (or in the initial iteration), the input port sends a subsequent instance of the request messages that includes the identifier to the output port.
- the input port does not necessarily send an accept message to the output port for explicitly indicating acceptance of the grant.
- Sending of the subsequent instance of the request message replaces the accept message, saving time and/or number of transmitted messages for establishing the communication channel with the output port.
- the input port forwards data to the output port.
- the input port is matched to the output port that sent the grant message (selected message in the case of multiple grants) and unmatched to other output ports.
- the output port that sent the grant message (selected message in the case of multiple grants) is matched to the input port and unmatched to other input ports.
- the input port forwards data only to the matched output port.
- features 502-508 are iterated in multiple iterations until a grant message is received.
- the input port In response to not receiving the grant message in the preceding iteration (or the initial iteration), the input port sends another set of subsequent instances of the request message to the output ports as in 502.
- FIG. 6 a flowchart of a method for an output port for establishing a communication channel with one of multiple input ports, is presented.
- the features described with reference to FIG. 6 may be implemented, for example, by a processor of the output port (e.g., loT device, server) operating independently, or by a central processor controlling multiple input ports and/or multiple output ports.
- a processor of the output port e.g., loT device, server
- a central processor controlling multiple input ports and/or multiple output ports.
- the output port receives one or more first instances of request messages sent by one or more input ports.
- Each request message includes an identifier of the input port that uniquely identifies the sending input port from the other input ports that sent other request message.
- one of the input ports is selected by the output port.
- the output port sends a grant message to the selected input port.
- the output port stores the identifier of the selected input port (to which the grant message was sent). The stored identifier is obtained from the request message.
- the output receives a subsequent instance of the request message including an identifier of the input port that sent the subsequent instance of the request message.
- the output port checks that the identifier in the subsequent instance of the request message matches the stored identifier.
- the input port that sent the subsequent instance of the request message is identified as the selected input port when the identifier in the subsequent instance of the request message matches the stored identifier.
- features 606-608 may be iterated in multiple iterations, until the output port finds a subsequent instance of the request message matching the stored identifier, and identifies the input port as a match for communication.
- the output port In response to the subsequent instance of the request message matching the stored identifier (i.e., a matching input port for communication is found), the output port ignores additional request messages received from other input ports.
- the output port receives data from the input port.
- Matching may be done by communication between input processor(s) in communication with input ports 702 and output processor(s) in communication with output ports 704, and/or by a control processor(s) in communication with input ports 702 and output ports 704.
- Sequence diagram 700 illustrates that the number of steps for matching is reduced in comparison to the standard iSLIP/PIM approach, by the input port 702 that received a grant from an output port 704 responding with an implied ‘accept’ message, which is different than an explicit accept message in the standard iSLIP/PIM approach, using a subsequent request message of a next iteration. This saves the additional step a dedicated and explicit accept messages uses in the standard iSLIP/PIM approach.
- the input port that has been provided a grant by a certain output port generates another request message in the first step of the next iteration to the output port that granted its request, without sending additional request messages to other output ports that did not grant the request.
- the output port in return understands this additional request as being an implied accept message, which saves sending an additional explicit accept message.
- the output port stores locally an ID of the input port that it granted to. Therefore, in the grant step of the next iteration, if a request is received from the input port that has its ID stored (the one that was granted), then this is an indication to a match.
- each unmatched input port generates requests to all relevant output ports, for example, to each output port for which the input port has a queued packet.
- a single input port may send message to no output ports, to a single output port, or to multiple output ports, for example, according to the queued packets.
- the requests are sent from the input ports to the output ports, for example, synchronized by a central clock, controlled by a central controller, and/or in an asynchronous mode independently in which each input port sends its own requests independently from other input ports.
- the output port grants the request to one of the requesting input ports.
- An ID indicative of the input port that has been granted its request is stored in association with the granting output port, for example, stored in a memory or other data storage device.
- the output ports send the grants to the selected input ports.
- 710-716 may represent an initial first iteration.
- the input port that received a grant generates another request message to the corresponding output port that provided the grant.
- the additional request message includes the ID of the input port.
- the input port send the additional request message to the output port that granted its previous request, and does not send the additional request message to other output ports (e.g., that did not grant its request).
- the additional request message may be sent only to the output port that granted its previous request.
- the input port sets its internal states to indicate a match to the output port that granted its request. Input ports that remain unmatched sends another request to every output for which it has a queued packet, as described with reference to 710.
- the input ports send their request messages to the output ports.
- an unmatched output port receives a request from an input port that has an ID equal to the ID stored from the previous iteration, the output port sets its internal states to indicate a match with the input port. The output port subsequently ignores all other received requests and it does not generate grants to other input ports.
- an unmatched output port receives any other requests, it grants the request to one of the requesting input ports.
- the output port stores the ID of the input port it granted to.
- 726 and 728 are iterated as described with reference to 718, 720, 722, and 724, until a stop condition is met. For example, a maximum number of iterations is reached, and/or a percentage and/or number of input ports have been matched.
- 730, 732, and 734 represent a last iteration, as described with reference to 718, 720, 722, and 724.
- the input port that received a grant may accept one of the granting output ports, by optionally sending an accept message.
- the accept message may be omitted. For example, if the list of matching input/output ports is provided or if the output ports do not need to know their matching input ports then the accept step in 738 is not required.
- the input ports established a match to output port and provide matching indications without the need for the output ports to be aware of this as there are no other iterations to follow.
- composition or method may include additional ingredients and/or steps, but only if the additional ingredients and/or steps do not materially alter the basic and novel characteristics of the claimed composition or method.
- a compound or “at least one compound” may include a plurality of compounds, including mixtures thereof.
- exemplary is used herein to mean “serving as an example, instance or illustration”. Any embodiment described as “exemplary” is not necessarily to be construed as preferred or advantageous over other embodiments and/or to exclude the incorporation of features from other embodiments.
- word “optionally” is used herein to mean “is provided in some embodiments and not provided in other embodiments”. Any particular embodiment of the disclosure may include a plurality of “optional” features unless such features conflict.
- range format is merely for convenience and brevity and should not be construed as an inflexible limitation on the scope of the disclosure. Accordingly, the description of a range should be considered to have specifically disclosed all the possible subranges as well as individual numerical values within that range. For example, description of a range such as from 1 to 6 should be considered to have specifically disclosed subranges such as from 1 to 3, from 1 to 4, from 1 to 5, from 2 to 4, from 2 to 6, from 3 to 6 etc., as well as individual numbers within that range, for example, 1, 2, 3, 4, 5, and 6. This applies regardless of the breadth of the range.
- a numerical range is indicated herein, it is meant to include any cited numeral (fractional or integral) within the indicated range.
- the phrases “ranging/ranges between” a first indicate number and a second indicate number and “ranging/ranges from” a first indicate number “to” a second indicate number are used herein interchangeably and are meant to include the first and second indicated numbers and all the fractional and integral numerals therebetween.
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
Description
Claims
Priority Applications (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202280101732.2A CN120167109A (en) | 2022-11-10 | 2022-11-10 | Scheduling method and device for input queue switch |
| PCT/EP2022/081425 WO2024099565A1 (en) | 2022-11-10 | 2022-11-10 | Method and apparatus for scheduling for input-queued switches |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| PCT/EP2022/081425 WO2024099565A1 (en) | 2022-11-10 | 2022-11-10 | Method and apparatus for scheduling for input-queued switches |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| WO2024099565A1 true WO2024099565A1 (en) | 2024-05-16 |
Family
ID=84365595
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| PCT/EP2022/081425 Ceased WO2024099565A1 (en) | 2022-11-10 | 2022-11-10 | Method and apparatus for scheduling for input-queued switches |
Country Status (2)
| Country | Link |
|---|---|
| CN (1) | CN120167109A (en) |
| WO (1) | WO2024099565A1 (en) |
Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6519225B1 (en) * | 1999-05-14 | 2003-02-11 | Nortel Networks Limited | Backpressure mechanism for a network device |
| US7023840B2 (en) * | 2001-02-17 | 2006-04-04 | Alcatel | Multiserver scheduling system and method for a fast switching element |
-
2022
- 2022-11-10 CN CN202280101732.2A patent/CN120167109A/en active Pending
- 2022-11-10 WO PCT/EP2022/081425 patent/WO2024099565A1/en not_active Ceased
Patent Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6519225B1 (en) * | 1999-05-14 | 2003-02-11 | Nortel Networks Limited | Backpressure mechanism for a network device |
| US7023840B2 (en) * | 2001-02-17 | 2006-04-04 | Alcatel | Multiserver scheduling system and method for a fast switching element |
Non-Patent Citations (1)
| Title |
|---|
| N. MCKEOWN: "The iSLIP scheduling algorithm for input-queued switches", IEEE/ACM TRANSACTIONS ON NETWORKING, vol. 7, no. 2, April 1999 (1999-04-01), pages 188 - 201, XP000828686, DOI: 10.1109/90.769767 |
Also Published As
| Publication number | Publication date |
|---|---|
| CN120167109A (en) | 2025-06-17 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US9590914B2 (en) | Randomized per-packet port channel load balancing | |
| CN119697117A (en) | System and method for facilitating efficient load balancing in a network interface controller (NIC) | |
| US20150113190A1 (en) | Processing Concurrency in a Network Device | |
| US20230070690A1 (en) | Virtual channel starvation-free arbitration for switches | |
| KR20200135780A (en) | Mediating parts of a transaction through a virtual channel associated with the interconnect | |
| US9954771B1 (en) | Packet distribution with prefetch in a parallel processing network device | |
| EP2176773A2 (en) | Data packet processing method for a multi core processor | |
| US6721309B1 (en) | Method and apparatus for maintaining packet order integrity in parallel switching engine | |
| US9210095B2 (en) | Arbitration of multiple-thousands of flows for convergence enhanced ethernet | |
| CN110661720A (en) | Merge small payloads | |
| CN106330741B (en) | Message transmission method and device | |
| WO2008085324A1 (en) | Assigning tasks to threads requiring limited resources using programmable queues | |
| US12175285B1 (en) | Processing unit selection mechanism | |
| US10623521B2 (en) | Distribution of messages to queues in a distributed computing environment | |
| CN106210058A (en) | A kind of reverse proxy method of multi-core parallel concurrent | |
| US8976802B2 (en) | Prediction-based switch allocator | |
| WO2024099565A1 (en) | Method and apparatus for scheduling for input-queued switches | |
| US9268621B2 (en) | Reducing latency in multicast traffic reception | |
| US20150127799A1 (en) | Hierarchical distribution of control information in a massively scalable network server | |
| US10164906B1 (en) | Scalable switch fabric cell reordering | |
| CN101459598A (en) | Method for implementing packet exchange and system thereof | |
| US20190391856A1 (en) | Synchronization of multiple queues | |
| Mhamdi | PBC: A partially buffered crossbar packet switch | |
| WO2004015934A1 (en) | Packet switching system | |
| US9307057B2 (en) | Methods and systems for resource management in a single instruction multiple data packet parsing cluster |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| 121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 22814102 Country of ref document: EP Kind code of ref document: A1 |
|
| WWE | Wipo information: entry into national phase |
Ref document number: 202280101732.2 Country of ref document: CN |
|
| NENP | Non-entry into the national phase |
Ref country code: DE |
|
| WWP | Wipo information: published in national office |
Ref document number: 202280101732.2 Country of ref document: CN |
|
| 122 | Ep: pct application non-entry in european phase |
Ref document number: 22814102 Country of ref document: EP Kind code of ref document: A1 |