US8442063B1 - System and method for scheduling unicast and multicast traffic - Google Patents

System and method for scheduling unicast and multicast traffic Download PDF

Info

Publication number
US8442063B1
US8442063B1 US12/642,998 US64299809A US8442063B1 US 8442063 B1 US8442063 B1 US 8442063B1 US 64299809 A US64299809 A US 64299809A US 8442063 B1 US8442063 B1 US 8442063B1
Authority
US
United States
Prior art keywords
value
multicast
entry
unicast
subqueue
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.)
Expired - Fee Related, expires
Application number
US12/642,998
Inventor
Xuyang Zhou
Yongbing Xu
Xiaoxi Sun
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Priority to US12/642,998 priority Critical patent/US8442063B1/en
Assigned to ATHEROS COMMUNICATIONS INC. reassignment ATHEROS COMMUNICATIONS INC. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: SUN, XIAOXI, XU, YONGBING, ZHOU, XUYANG
Assigned to QUALCOMM ATHEROS, INC. reassignment QUALCOMM ATHEROS, INC. MERGER (SEE DOCUMENT FOR DETAILS). Assignors: ATHEROS COMMUNICATIONS, INC.
Assigned to QUALCOMM INCORPORATED reassignment QUALCOMM INCORPORATED ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: QUALCOMM ATHEROS, INC.
Application granted granted Critical
Publication of US8442063B1 publication Critical patent/US8442063B1/en
Expired - Fee Related legal-status Critical Current
Adjusted expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/02Details
    • H04L12/16Arrangements for providing special services to substations
    • H04L12/18Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
    • H04L12/1881Arrangements for providing special services to substations for broadcast or conference, e.g. multicast with schedule organisation, e.g. priority, sequence management

Definitions

  • the present invention relates to data communication systems in general, and more specifically, to scheduling multicast and unicast packet switching to improve data transport.
  • Data communication systems employing packet switching strategies can offer desirable advances in resource utilization and reliability with minimal losses in delivery speed.
  • Digital data is divided into packets, each of which is routed independently to its destination. Access to, routing within and delivery from the network for the packets is mediated by a framework of routers, adapters, switches and other network nodes, generally termed the switching fabric.
  • This configuration allows the network to dynamically adjust to the demands of varying traffic patterns.
  • an important consideration in the design of such networks is the efficient use of inputs and outputs, so that an adequate number are available to provide the desired level of throughput without incurring the expense of providing an excess that go underutilized for significant periods of time.
  • a primary technique for allocating network resource to achieve this minimization of contention and avoidance of starvation is the use of buffers and queues to asynchronously transmit the data streams of packets.
  • a typical approach to facilitate the routing and switching of the individual data packets is to employ the use of descriptors that identify the destination of each packet and its storage location within the memory of the network. Since the descriptors can be significantly smaller than the packets themselves, manipulating the descriptors provides important savings in processing time and storage requirements.
  • unicast data deals with information being delivered from a single sender to a single recipient.
  • unicast packets consume one input port and one output port of the switching fabric.
  • multicast data can originate from one or more senders and be delivered to one or more recipients.
  • the multicast packets are replicated during the delivery process by the network and are fanned-out to the desired output ports.
  • each node comprises N bidirectional ports, each allowing for inbound or outbound traffic.
  • a single multicast packet may consume only a single input port but consume all available outgoing ports (N ⁇ 1), leading to starvation of traffic.
  • the buffering and queuing strategies employed by the network system should accommodate these situations to allow for “fair” scheduling of unicast and multicast traffic to prevent starvation of one type.
  • the scheduling between the unicast and multicasts depends upon the counters, the inter-departure-counter for each multicast FIFO entry and the arrival and departure counters for each queue. This requirement prevents the system from scaling well with variable length queues.
  • the Wang reference requires the use of a fixed multicast FIFO entry for every queue. As one of skill in the art will recognize, this does not represent the most efficient use of memory space, since each FIFO buffer requires a fixed amount of space. Similarly, this makes the system less scalable for worst case tolerance.
  • this disclosure is directed to a hybrid queue for an output port of a protocol data unit (PDU) switching node comprising a plurality of entries, a header type field, a tail type field, a unicast subqueue, and a multicast subqueue, wherein the unicast subqueue includes at least one the entries, wherein the multicast subqueue includes at least one of the entries, and wherein the header type field is configured to signal a processing order for the unicast subqueue and the multicast subqueue.
  • each entry comprises an interleave indicator and the header type field is toggled between a first value and a second value depending upon the value of at least one of the interleave indicators.
  • the header type field is toggled when an entry having an interleave indicator with a first value is processed.
  • the default value for the interleave indicators of unicast entries is the first value.
  • the default value for interleave indicators of multicast entries is a second value that does not toggle the header type field when processed.
  • the tail type field is set to a first value when a unicast entry is appended to the hybrid queue and is set to a second value when a multicast entry is appended to the hybrid queue.
  • at least one interleave indicator is set to a value corresponding to the tail type field before a unicast entry is appended to the hybrid queue.
  • the unicast subqueue is configured as a linked list of unicast descriptors.
  • the multicast subqueue is configured in a data structure selected from the group consisting of a multicast pointer array, a FIFO multicast pointer queue, and a linked list of multicast pointers.
  • the disclosure is also directed to an output port of a protocol data unit (PDU) switching node comprising the hybrid queue as described above and a scheduler.
  • PDU protocol data unit
  • the scheduler is configured to process a head of line entry from the unicast subqueue when the header type field is set to the first value and a head of line entry from the multicast subqueue when the header type field is set to the second value.
  • each interleave indicator is a single bit.
  • the disclosure is further directed to a method for scheduling multicast and unicast traffic at an output port of a protocol data unit (PDU) switching node comprising the steps of: generating a hybrid queue for the output port including a plurality of entries corresponding to stored PDUs, a header type field, a tail type field, a unicast subqueue, and a multicast subqueue, wherein the unicast subqueue includes at least one the entries, wherein the multicast subqueue includes at least one of the entries, and wherein each entry has an interleave indicator and toggling the header type field between a first value and a second value depending upon the value of at least one of the interleave indicators.
  • PDU protocol data unit
  • such methods also include the step of servicing a hybrid queue entry wherein the interleave indicator of the hybrid queue entry has a first value, so that the header type field is toggled because the interleave indicator has the first value.
  • the step of generating a hybrid queue can include appending a unicast entry to the unicast subqueue, wherein the appended unicast entry has an interleave indicator with the first value, and appending a multicast entry to the multicast subqueue, wherein the appended multicast entry has an interleave indicator with a second value.
  • the method further includes the step of servicing a hybrid queue entry wherein the interleave indicator of the hybrid queue entry has the second value, so that the header type field is not toggled because the interleave indicator has the second value.
  • the method also includes setting the tail type field to a first value when a unicast entry is appended to the hybrid queue and setting the tail type field to a second value when a multicast entry is appended to the hybrid queue.
  • this can include appending a first entry to the hybrid queue having an interleave indicator, determining a next hybrid queue entry is a unicast entry, changing the value of the first interleave indicator to a value dictated by the tail type field and appending the next hybrid queue entry.
  • the method includes servicing a hybrid queue entry by scheduling a head of line entry from the unicast subqueue when the header type field is set to first value and scheduling a head of line entry from the multicast subqueue when the header type field is set to the second value.
  • FIG. 1 is a schematic illustration of elements of a hybrid queue, according to the invention.
  • FIG. 2 is a flow chart depicting steps in the process of adding unicast and multicast entries to a hybrid queue, according to the invention
  • FIG. 3 is a schematic depiction of the configuration of a suitable unicast descriptor
  • FIG. 4 is a schematic depiction of one embodiment of a suitable multicast subqueue having a pointer array
  • FIG. 5 is a schematic depiction of another embodiment of a suitable multicast subqueue having a FIFO queue.
  • FIG. 6 is a schematic depiction of yet another embodiment of a suitable multicast subqueue having a linked list of multicast pointers.
  • the systems and methods of this disclosure feature a hybrid queue having a unicast subqueue and a multicast subqueue.
  • An interleave indicator for each unicast and multicast entry in the queue is used to toggle the header type field of the hybrid queue.
  • a scheduler selects between the unicast subqueue and multicast subqueue as dictated by the state of the header type field.
  • the disclosed interleave indicator techniques add minimal overhead to the system, allowing ready scaling with increasing port densities. Further, the data structure of the multicast subqueue can be selected to optimize the system and achieve desired performance characteristics.
  • the storage requirements of the system can be minimized by avoiding replication of multicast descriptors. Further, the bandwidth requirements are reduced to allow for increased port densities. Similarly, the systems are more scalable to accommodate increased port densities or data buffers.
  • PDU refers to a protocol data unit which generally corresponds to a packet of information having an associated network destination address.
  • descriptor refers to a data structure having information that identifies the location of a PDU within the memory storage of the switching node of the network.
  • a descriptor can also include, without limitation, information identifying the PDU as unicast or multicast, fan-out diversity in the case of multicast traffic, service priority and network destination address.
  • a unicast queue entry refers to a data structure having information that identifies the location of a PDU within the memory storage of the switching node of the network.
  • a unicast queue entry is a unicast descriptor and a multicast queue entry can be a multicast descriptor, a multicast pointer to a descriptor, or a multicast pointer array.
  • the bask operation of packet switching follows conventional patterns.
  • Each packet, or PDU arrives through an input port of a network switching node.
  • the arriving PDUs are inspected, descriptors for the PDUs are generated and the PDUs are stored in the memory of the node.
  • the descriptor for each PDU contains information including the priority associated with the PDU, the type of PDU (whether unicast or multicast), its size, its location in storage, delivery information and other pertinent details, depending upon the application.
  • one or more destination network addresses are correlated with each PDU, depending upon whether it is unicast or multicast traffic.
  • switch requests are queued so that the PDUs will be delivered to the appropriate output ports using switching or routing tables as known in the art.
  • the relevant priority information from the descriptors is also used to generate the switch requests.
  • multicast and unicast queue entries are stored in a hybrid output queue for each output port.
  • a scheduler or sequencer selects an entry from the hybrid queue, which specifies a multicast or unicast PDU.
  • the PDU is then retrieved from memory storage, switched to the indicated output port and delivered from the network node.
  • the memory of the system for PDU storage, descriptor storage, buffering and queuing can be implemented in any number of suitable ways.
  • a centralized storage can utilize logical partitions to accommodate the various required elements.
  • multiple physical memory locations may be used if desired.
  • hybrid queue includes a header type field 101 , a tail type field 102 , a unicast subqueue 103 and a multicast subqueue 104 .
  • the header type field 101 is used to signal the order in which entries from the unicast subqueue 103 and the multicast subqueue 104 are processed.
  • Unicast subqueue 103 comprises a series of unicast descriptors 105 - 109 in a linked list configuration.
  • the use of a linked list creates a virtual queue wherein the location of a subsequent entry is identified by a pointer included in the previous entry.
  • a pointer included in the previous entry One of skill in the art will recognize this allows for an efficient utilization of memory, since the linked list entries can be placed at arbitrary locations rather than requiring a fixed block of memory as required by a traditional FIFO queue.
  • each descriptor includes an interleave indicator field 110 - 114 .
  • the interleave indicator is used to control the header type field 101 of hybrid queue 100 and thus control the sequence of PDU departures.
  • a header pointer 115 identifies the head of line (HOL) of the unicast subqueue while tail pointer 116 registers the end and signals the point at which subsequent unicast descriptors are to be appended.
  • HOL head of line
  • multicast subqueue 104 comprises a series of multicast entries 117 - 119 , each of which also includes an interleave indicator field 120 - 122 .
  • Multicast subqueue 104 also includes a header pointer 123 and tail pointer 124 .
  • the interleave indicator in the unicast descriptors and multicast queue entries controls the order of departure from the unicast subqueue to multicast subqueue.
  • the header type field 101 controls the order of departure from the hybrid queue 100 .
  • a value of 0 in the header type field 101 specifies the HOL for unicast subqueue 103 and a value of 1 specifies the HOL for multicast subqueue 104 .
  • the tail type field 102 is used to identify the type of traffic associated with the last addition to hybrid queue 100 , here a value of 0 indicates a unicast entry was appended and a value of 1 indicates a multicast entry was appended.
  • the interleave indicator is used to toggle header type field 101 according to the sequence in which unicasts and multicasts are received.
  • the interleave indicator requires only one bit of information in the descriptor or entry.
  • an interleave indicator value of 1 toggles header type field 101 while an interleave indicator value of 0 leaves header type field 101 unchanged.
  • header type field 101 is toggled so that the next departure will be the HOL of the other subqueue.
  • header type field 101 is left unchanged so that the next departure will be the HOL of the same subqueue.
  • each the interleave indicator is assigned a default value that initially depends upon the type of traffic, but can be changed depending upon the nature of the next entry to the hybrid queue.
  • the default value of the interleave indicator for a unicast descriptor is 1 while the default value for a multicast entry is 0.
  • the arrival of a unicast entry triggers a potential changes to the default value of the preceding interleave indicator.
  • the preceding interleave indicator is assigned the current value of tail type field 102 .
  • An example of this sequencing routine with respect to the hybrid queue 100 shown in FIG. 1 .
  • a unicast descriptor 105 is appended to unicast descriptor subqueue 103 at a location designated by the tail pointer. Since this is the first unicast descriptor in the queue, header pointer 115 links to this descriptor.
  • Interleave indicator 110 initially has the default value of 1. Header type field 101 is assigned a value of 0, so that the HOL of unicast subqueue 103 will be the selected for the next PDU to depart. Tail type field 102 is assigned a value of 0 to indicate that the current end of the hybrid queue 100 is the unicast subqueue 103 . Tail pointer 116 is updated to reflect that unicast descriptor 105 is the current end of unicast subqueue 103 .
  • the next entry to hybrid queue 100 is unicast descriptor 106 .
  • the interleave indicator 110 of the preceding entry, unicast descriptor 105 is assigned the current value of tail type field 102 , changing it to 0.
  • Unicast descriptor 106 is then appended to the subqueue at the location indicated by tail pointer 116 . Changes to the header type field 101 are implemented upon the departure of a PDU, so this field remains the same and no changes are made to tail type field 102 since this PDU is also a unicast.
  • the interleave indicator 111 of unicast descriptor 106 is assigned the initial default value of 1. This will maintain the sequence of departure when these PDUs leave the queue.
  • Tail pointer 116 is updated to reflect that unicast descriptor 106 is now the current end of unicast subqueue 103 .
  • multicast queue entry 117 is entered into hybrid queue 100 after unicast descriptor 106 .
  • Header pointer 123 and tail pointer 124 maintain the order within multicast subqueue 104 .
  • the header type field 101 is changed upon queue departures, so it remains unchanged.
  • Tail type field 102 is now assigned a value of 1 to indicate that the end of multicast subqueue 104 now represents the end of hybrid queue 100 .
  • interleave indicator 120 of multicast queue entry 117 initially has a value of 0, the default value for a multicast entry.
  • this represents a significantly improved worst-case tolerance situation than offered by a single linked list implementation that combines multicast and unicast entries. Since the bandwidth requirements are thus tied to the multicast entries, suitable systems can be designed that minimize bandwidth requirements by tailoring to the expected multicast traffic.
  • a subsequent multicast queue entry 118 is appended to the end of multicast queue 104 . Accordingly, no changes are made to header type 101 , tail type 102 fields or to the interleave indicator of the preceding entry.
  • the preceding entry is multicast entry 117 and thus interleave indicator 120 remains at its default value of 0.
  • the current interleave indicator 121 initially has a value of 0, since that is the default for the multicast data type.
  • interleave indicator 121 of multicast queue entry 118 is changed from its default of 0 to 1.
  • the interleave indicator 112 of unicast descriptor 107 initially is assigned the default value of 0 for a unicast data type.
  • Tail type field 102 is changed to 0 to represent that the current entry is a unicast type.
  • Further entries are appended to hybrid queue 100 in the same way.
  • the preceding interleave indicator 112 is assigned the current value of tail type field 102 , which as indicated above is 0.
  • Unicast descriptor 108 includes interleave indicator 113 with its initial default value of 1.
  • the tail type 102 is updated to 0 since the entry being appended is a unicast.
  • the next entry is multicast queue entry 119 , so no changes are made to the preceding entry's interleave indicator.
  • the tail type field 102 is set to 1 and multicast queue entry 119 has interleave indicator 122 with an initial default value of 0.
  • unicast descriptor 109 is appended to hybrid queue 100 , the preceding interleave indicator 122 is set to 1, the current value of tail type field 102 . Unicast descriptor 109 is then appended to unicast subqueue 103 with a default interleave indicator of 1 and tail type field 102 is changed to 0 to indicate that the most recent addition is a unicast.
  • step 201 incoming entries are analyzed to distinguish between unicast entries and multicast entries. If either the header type field 101 or tail type field 102 has a null value, then it is set to 0 if the entry is a unicast and 1 if the entry is a multicast. If the entry is a unicast, the process goes to step 202 .
  • the interleave indicator for the preceding entry is set to the current value of tail type field 102 .
  • step 203 the current entry is placed in the linked list at the address indicated by tail pointer 116 with an interleave indicator having a value of 1.
  • step 204 the tail type field 102 is set to 0 to correspond to the unicast entry.
  • step 205 the tail pointer 116 is updated and the process returns to step 201 .
  • step 206 the process goes from step 201 to step 206 , where the multicast entry is appended at the location indicated by tail pointer 124 with an interleave indicator having a value of 0.
  • step 207 the tail type field value is set to 1 to indicate the current last entry is a multicast entry.
  • step 208 the tail pointer 124 is updated and the process returns to step 201 .
  • the sequence of dequeuing is determined.
  • the scheduler inspects the header type 101 of hybrid queue 100 . If the field has a value of 0, the HOL of the unicast subqueue 103 is selected for departure. If the HOL unicast descriptor has an interleave indicator with a value of 1, the header type 101 is toggled to a value of 1, otherwise the header type is unchanged. Conversely, if the header type field 101 has a value of 1, the HOL of the multicast subqueue 104 is selected for departure.
  • the header type 101 is toggled to a value of 0, otherwise the header type is unchanged. The process is then repeated, with the scheduler selecting between the unicast subqueue and the multicast subqueue on the basis of the current value in header type field 101 .
  • FIG. 1 An example of these steps is shown in FIG. 1 , where the dequeue order is depicted by broken arrows.
  • header type 101 initially was assigned a value of 0 to indicate that the HOL is the unicast subqueue 103 .
  • a departure scheduler selects unicast subqueue 103 and is directed to the current HOL, unicast descriptor 105 by header pointer 115 .
  • interleave indicator 110 has a value 0, so header type 101 is not changed.
  • Header pointer 115 is updated to indicate the new HOL of the unicast subqueue 103 , now unicast descriptor 106 .
  • header type 101 Since header type 101 remains at 0, the next departure also is selected from the unicast subqueue 103 .
  • Unicast descriptor 106 has an interleave indicator 111 with a value of 1.
  • header type 101 is toggled, which in this situation changes it from 0 to 1.
  • the next departure will be selected from the multicast subqueue 104 .
  • Header pointer 123 indicates that multicast queue entry 117 is the current HOL of this subqueue. Accordingly, scheduler processes entry 117 , which includes interleave indicator 120 with value 0.
  • header type 101 remains unchanged at its current value of 1.
  • header pointer 123 is updated to indicate multicast entry 118 is the new HOL.
  • the header type value of 1 means that the scheduler selects the multicast subqueue 104 and thus multicast entry 118 for the next departure. Since entry 118 has an interleave indicator 121 value of 1, the header type 101 is toggled, changing from 1 to 0.
  • unicast descriptor 107 with interleave indicator 112 having a value of 0, then unicast descriptor 108 with interleave indicator 113 having a value of 11, then multicast queue entry 119 with interleave indicator 119 having a value of 1 and finally unicast descriptor 109 .
  • the scheduler will alternate between the unicast and multicast subqueues.
  • the unicast subqueue 103 is configured as a linked list.
  • a suitable format for the unicast descriptors is shown in FIG. 3 .
  • the unicast descriptor 301 includes an address 302 indicating the location of each PDU in the memory structure of the network node, an interleave indicator 303 as described above, and a pointer 304 that chains to the next unicast descriptor.
  • the pointer 304 of a unicast descriptor is updated when the subsequent unicast descriptor is appended to the unicast subqueue 103 .
  • the multicast subqueue 104 portion of hybrid queue 100 can be configured in a variety of ways depending on the intended applications of the system to optimize various aspects of its performance. As will be recognized, it is desirable to utilize a multicast subqueue comprising pointers to the multicast descriptors rather than the descriptors themselves. By avoiding the need to replicate multicast descriptors, considerable efficiencies are realized, particularly for situations where the diversity of the multicast is relatively high.
  • the multicast subqueue 104 can be implemented as a pointer array or a multicast pointer queue using a fixed FIFO queue, a linked list or a hybrid of the two.
  • the multicast subqueue can be configured as a linked list queue of multicast descriptors.
  • multicast subqueue 103 entries include pointer array rows 402 and 403 corresponding to multicast descriptors 404 and 405 , respectively.
  • Each multicast descriptor 404 and 405 includes an address 406 and 407 indicating the location of the PDU in memory storage.
  • Each multicast descriptor 404 and 405 also includes a diversity field 408 and 409 which specify the fan-out of the multicast PDU.
  • each multicast descriptor also can include a pointer to the row of the pointer array.
  • pointer 410 of multicast descriptor 404 specifies the location of array row 402 and pointer 411 of multicast descriptor 405 specifies the location of array row 403 .
  • each array entry is then mapped 1:1 to the descriptor. This implementation does not represent the most efficient use of resources as it allocates pointers at each port for every descriptor, all of which are unlikely to be consumed at a given time.
  • pointer array row 402 has a width equal to the number of possible output ports at the network node, that is 0 to N ⁇ 1.
  • the number of array rows corresponds to the number of multicast descriptors.
  • Each array entry for example 412 and 413 , includes an interleave indicator 414 and 415 and next descriptor pointer 416 and 417 .
  • next descriptor pointer 416 links to the subsequent multicast descriptor 405 .
  • array entry pointer 411 of multicast descriptor 405 links to array row 403 , also including N entries, including entries 418 and 419 .
  • Each entry respectively contains an associated interleave indicator 420 and 421 and next descriptor pointer 422 and 423 .
  • this embodiment is optimized for worst case tolerance. However, it does represent a tradeoff in efficiency since anything less than full fan-out diversity for each multicast results in empty array entries. This can result in a significant memory overhead and may cause slower processing times.
  • a fixed FIFO queue 501 can be used for the multicast subqueue 103 .
  • FIFO queue 501 includes a sequence of multicast pointers, in this depiction two pointers 502 and 503 are shown.
  • Each FIFO queue entry comprises a multicast descriptor pointer 504 and 505 and interleave indicator 506 and 507 , respectively.
  • multicast pointer 504 links to the storage location of multicast descriptor 508 .
  • multicast pointer 505 links to multicast descriptor 509 .
  • Each multicast descriptor 508 and 509 includes the memory address 510 and 511 of the multicast PDU and its associated fan-out diversity field 512 and 513 , respectively.
  • multicast subqueue can use a linked list 601 of multicast pointers entries as shown in FIG. 6 .
  • Multicast pointer entry 602 includes multicast descriptor pointer 604 with the location of multicast descriptor 605 , interleave indicator 606 and next pointer 607 .
  • multicast pointer entry 603 includes multicast descriptor pointer 608 with the location of multicast descriptor 609 , interleave indicator 610 and next pointer 611 .
  • multicast descriptors 605 and 609 respectively include the storage address 612 and 613 for their associated PDUs and a diversity field 614 and 615 to specify the multicast fan-out.
  • the multicast subqueue can be configured to utilize a hybrid of FIFO queue and linked list multicast pointers.
  • pointers are shared by allocating to blocks. Accordingly, the pointer in every block is a FIFO queue and the pointer block is a linked list.

Abstract

A system and method for scheduling delivery of packetized data traffic at an output port of a network node featuring a hybrid queue with a unicast subqueue and a multicast subqueue. An interleave indicator for each unicast and multicast entry in the queue is used to toggle the header type field of the hybrid queue. Upon departure, a scheduler selects between the unicast subqueue and multicast subqueue as dictated by the state of the header type field. The disclosed interleave indicator techniques add minimal overhead to the system, allowing ready scaling with increasing port densities. Further, the data structure of the multicast subqueue can be selected to optimize the system and achieve desired performance characteristics.

Description

FIELD OF THE PRESENT INVENTION
The present invention relates to data communication systems in general, and more specifically, to scheduling multicast and unicast packet switching to improve data transport.
BACKGROUND OF THE INVENTION
Data communication systems employing packet switching strategies can offer desirable advances in resource utilization and reliability with minimal losses in delivery speed. Digital data is divided into packets, each of which is routed independently to its destination. Access to, routing within and delivery from the network for the packets is mediated by a framework of routers, adapters, switches and other network nodes, generally termed the switching fabric. This configuration allows the network to dynamically adjust to the demands of varying traffic patterns. As will be appreciated, an important consideration in the design of such networks is the efficient use of inputs and outputs, so that an adequate number are available to provide the desired level of throughput without incurring the expense of providing an excess that go underutilized for significant periods of time. A primary technique for allocating network resource to achieve this minimization of contention and avoidance of starvation is the use of buffers and queues to asynchronously transmit the data streams of packets.
A typical approach to facilitate the routing and switching of the individual data packets is to employ the use of descriptors that identify the destination of each packet and its storage location within the memory of the network. Since the descriptors can be significantly smaller than the packets themselves, manipulating the descriptors provides important savings in processing time and storage requirements.
Despite the advantages, packet switching systems cannot rely on a dedicated connection between two points on the network, such as that offered by circuit switching systems. Thus, each packet in a given data stream potentially experiences different latencies and transmission rates, resulting in the possibility that packets will arrive at the destination at of order or that some packets may be dropped. These concerns are less important when dealing with static files, but for the streaming delivery of multimedia content or real time communication applications, for example, robust and timely delivery of the packets is a priority. To maintain adequate quality of service (QoS) for such applications, techniques have been developed to assign varying priority levels to the packets of data. Accordingly, the buffering and queuing process carried out within the switching fabric must be able to implement these priorities in the delivery of data. In systems employing descriptors, the priority information is included along with the location and destination information recorded by the descriptor.
Another challenge in the implementation of packet switched networks is the distinction between unicast data and multicast data. As indicated by the name, unicast data deals with information being delivered from a single sender to a single recipient. Thus, unicast packets consume one input port and one output port of the switching fabric. On the other hand, multicast data can originate from one or more senders and be delivered to one or more recipients. Generally, the multicast packets are replicated during the delivery process by the network and are fanned-out to the desired output ports. Generally, in modern networks, each node comprises N bidirectional ports, each allowing for inbound or outbound traffic. In the worst case scenario, a single multicast packet may consume only a single input port but consume all available outgoing ports (N−1), leading to starvation of traffic. Again, the buffering and queuing strategies employed by the network system should accommodate these situations to allow for “fair” scheduling of unicast and multicast traffic to prevent starvation of one type.
One prior art technique is disclosed in U.S. Pat. No. 7,397,809 to Wang. The implementation disclosed in this reference makes use of hybrid queue composed of a linked list of descriptors for unicast data and a first in, first out (FIFO) buffer of pointers for multicast descriptors. To schedule between multicast and unicast traffic, the system employs an arrival counter, a departure counter and each multicast FIFO entry has an inter-departure-counter value specifying the number of unicast linked list entries that have to be serviced before servicing the multicast FIFO entry.
Despite the advantages offered by this approach, it does suffer from certain drawbacks. Specifically, the scheduling between the unicast and multicasts depends upon the counters, the inter-departure-counter for each multicast FIFO entry and the arrival and departure counters for each queue. This requirement prevents the system from scaling well with variable length queues. Furthermore, the Wang reference requires the use of a fixed multicast FIFO entry for every queue. As one of skill in the art will recognize, this does not represent the most efficient use of memory space, since each FIFO buffer requires a fixed amount of space. Similarly, this makes the system less scalable for worst case tolerance.
Therefore, it would be desirable to provide systems and methods that allow for efficient and scalable scheduling of multicast and unicast packetized data traffic. It would also be desirable to provide systems and methods for providing such scheduling while minimizing the overhead imparted to output queues. Finally, it would be desirable to provide such systems and methods that enable the use of multiple data structures for multicast queues.
SUMMARY OF THE INVENTION
In accordance with the above needs and those that will be mentioned and will become apparent below, this disclosure is directed to a hybrid queue for an output port of a protocol data unit (PDU) switching node comprising a plurality of entries, a header type field, a tail type field, a unicast subqueue, and a multicast subqueue, wherein the unicast subqueue includes at least one the entries, wherein the multicast subqueue includes at least one of the entries, and wherein the header type field is configured to signal a processing order for the unicast subqueue and the multicast subqueue. Preferably, each entry comprises an interleave indicator and the header type field is toggled between a first value and a second value depending upon the value of at least one of the interleave indicators.
In one aspect, the header type field is toggled when an entry having an interleave indicator with a first value is processed. Preferably, the default value for the interleave indicators of unicast entries is the first value. Also preferably, the default value for interleave indicators of multicast entries is a second value that does not toggle the header type field when processed.
In another aspect, the tail type field is set to a first value when a unicast entry is appended to the hybrid queue and is set to a second value when a multicast entry is appended to the hybrid queue. Preferably, at least one interleave indicator is set to a value corresponding to the tail type field before a unicast entry is appended to the hybrid queue.
In one embodiment, the unicast subqueue is configured as a linked list of unicast descriptors. In a further embodiment, the multicast subqueue is configured in a data structure selected from the group consisting of a multicast pointer array, a FIFO multicast pointer queue, and a linked list of multicast pointers.
The disclosure is also directed to an output port of a protocol data unit (PDU) switching node comprising the hybrid queue as described above and a scheduler. Preferably, the scheduler is configured to process a head of line entry from the unicast subqueue when the header type field is set to the first value and a head of line entry from the multicast subqueue when the header type field is set to the second value.
In yet another aspect of the disclosure, each interleave indicator is a single bit.
The disclosure is further directed to a method for scheduling multicast and unicast traffic at an output port of a protocol data unit (PDU) switching node comprising the steps of: generating a hybrid queue for the output port including a plurality of entries corresponding to stored PDUs, a header type field, a tail type field, a unicast subqueue, and a multicast subqueue, wherein the unicast subqueue includes at least one the entries, wherein the multicast subqueue includes at least one of the entries, and wherein each entry has an interleave indicator and toggling the header type field between a first value and a second value depending upon the value of at least one of the interleave indicators.
Preferably, such methods also include the step of servicing a hybrid queue entry wherein the interleave indicator of the hybrid queue entry has a first value, so that the header type field is toggled because the interleave indicator has the first value.
Further, the step of generating a hybrid queue can include appending a unicast entry to the unicast subqueue, wherein the appended unicast entry has an interleave indicator with the first value, and appending a multicast entry to the multicast subqueue, wherein the appended multicast entry has an interleave indicator with a second value. Preferably, the method further includes the step of servicing a hybrid queue entry wherein the interleave indicator of the hybrid queue entry has the second value, so that the header type field is not toggled because the interleave indicator has the second value.
In another aspect, the method also includes setting the tail type field to a first value when a unicast entry is appended to the hybrid queue and setting the tail type field to a second value when a multicast entry is appended to the hybrid queue. Preferably, this can include appending a first entry to the hybrid queue having an interleave indicator, determining a next hybrid queue entry is a unicast entry, changing the value of the first interleave indicator to a value dictated by the tail type field and appending the next hybrid queue entry.
In yet another aspect, the method includes servicing a hybrid queue entry by scheduling a head of line entry from the unicast subqueue when the header type field is set to first value and scheduling a head of line entry from the multicast subqueue when the header type field is set to the second value.
BRIEF DESCRIPTION OF THE DRAWINGS
Further features and advantages will become apparent from the following and more particular description of the preferred embodiments of the invention, as illustrated in the accompanying drawing, and in which like referenced characters generally refer to the same parts or elements throughout the views, and in which:
FIG. 1 is a schematic illustration of elements of a hybrid queue, according to the invention;
FIG. 2 is a flow chart depicting steps in the process of adding unicast and multicast entries to a hybrid queue, according to the invention;
FIG. 3 is a schematic depiction of the configuration of a suitable unicast descriptor;
FIG. 4 is a schematic depiction of one embodiment of a suitable multicast subqueue having a pointer array;
FIG. 5 is a schematic depiction of another embodiment of a suitable multicast subqueue having a FIFO queue; and
FIG. 6 is a schematic depiction of yet another embodiment of a suitable multicast subqueue having a linked list of multicast pointers.
DETAILED DESCRIPTION OF THE INVENTION
As discussed above, the systems and methods of this disclosure feature a hybrid queue having a unicast subqueue and a multicast subqueue. An interleave indicator for each unicast and multicast entry in the queue is used to toggle the header type field of the hybrid queue. Upon departure, a scheduler selects between the unicast subqueue and multicast subqueue as dictated by the state of the header type field. The disclosed interleave indicator techniques add minimal overhead to the system, allowing ready scaling with increasing port densities. Further, the data structure of the multicast subqueue can be selected to optimize the system and achieve desired performance characteristics.
By implementing the hybrid queue techniques as described herein, the storage requirements of the system can be minimized by avoiding replication of multicast descriptors. Further, the bandwidth requirements are reduced to allow for increased port densities. Similarly, the systems are more scalable to accommodate increased port densities or data buffers.
At the outset, it is to be understood that this disclosure is not limited to particularly exemplified materials, architectures, routines, methods or structures as such may, of course, vary. Thus, although a number of such option, similar or equivalent to those described herein, can be used in the practice of embodiments of this disclosure, the preferred materials and methods are described herein.
It is also to be understood that the terminology used herein is for the purpose of describing particular embodiments of this disclosure only and is not intended to be limiting.
Unless defined otherwise, all technical and scientific terms used herein have the same meaning as commonly understood by one having ordinary skill in the art to which the disclosure pertains.
As used herein, the term “PDU” refers to a protocol data unit which generally corresponds to a packet of information having an associated network destination address.
As used herein, the term “descriptor” refers to a data structure having information that identifies the location of a PDU within the memory storage of the switching node of the network. A descriptor can also include, without limitation, information identifying the PDU as unicast or multicast, fan-out diversity in the case of multicast traffic, service priority and network destination address.
As used herein, the term “queue entry” refers to a data structure having information that identifies the location of a PDU within the memory storage of the switching node of the network. For example, a unicast queue entry is a unicast descriptor and a multicast queue entry can be a multicast descriptor, a multicast pointer to a descriptor, or a multicast pointer array.
In accordance with this disclosure, the bask operation of packet switching follows conventional patterns. Each packet, or PDU, arrives through an input port of a network switching node. The arriving PDUs are inspected, descriptors for the PDUs are generated and the PDUs are stored in the memory of the node. Preferably, the descriptor for each PDU contains information including the priority associated with the PDU, the type of PDU (whether unicast or multicast), its size, its location in storage, delivery information and other pertinent details, depending upon the application.
From the delivery information, one or more destination network addresses are correlated with each PDU, depending upon whether it is unicast or multicast traffic. Using the network addresses, switch requests are queued so that the PDUs will be delivered to the appropriate output ports using switching or routing tables as known in the art. In implementations having tiered levels of priority to ensure a specific QoS, the relevant priority information from the descriptors is also used to generate the switch requests. Thus, as a result of the switch requests, multicast and unicast queue entries are stored in a hybrid output queue for each output port. To deliver the packet, a scheduler or sequencer selects an entry from the hybrid queue, which specifies a multicast or unicast PDU. The PDU is then retrieved from memory storage, switched to the indicated output port and delivered from the network node.
As one of skill in the art will recognize, the memory of the system for PDU storage, descriptor storage, buffering and queuing can be implemented in any number of suitable ways. For example, in some embodiments a centralized storage can utilize logical partitions to accommodate the various required elements. Alternatively, multiple physical memory locations may be used if desired. These aspects can be readily tailored by using types of memory having different read and write speeds and latencies, as well as by employing caching strategies and the like.
Turning now to FIG. 1, an example of an output hybrid queue 100 is schematically diagrammed. As shown, hybrid queue includes a header type field 101, a tail type field 102, a unicast subqueue 103 and a multicast subqueue 104. The header type field 101 is used to signal the order in which entries from the unicast subqueue 103 and the multicast subqueue 104 are processed.
Unicast subqueue 103 comprises a series of unicast descriptors 105-109 in a linked list configuration. The use of a linked list creates a virtual queue wherein the location of a subsequent entry is identified by a pointer included in the previous entry. One of skill in the art will recognize this allows for an efficient utilization of memory, since the linked list entries can be placed at arbitrary locations rather than requiring a fixed block of memory as required by a traditional FIFO queue.
Further, each descriptor includes an interleave indicator field 110-114. As described in greater detail below, the interleave indicator is used to control the header type field 101 of hybrid queue 100 and thus control the sequence of PDU departures. A header pointer 115 identifies the head of line (HOL) of the unicast subqueue while tail pointer 116 registers the end and signals the point at which subsequent unicast descriptors are to be appended.
Similarly, multicast subqueue 104 comprises a series of multicast entries 117-119, each of which also includes an interleave indicator field 120-122. Multicast subqueue 104 also includes a header pointer 123 and tail pointer 124.
As indicated, the interleave indicator in the unicast descriptors and multicast queue entries controls the order of departure from the unicast subqueue to multicast subqueue. The header type field 101 controls the order of departure from the hybrid queue 100. For example, a value of 0 in the header type field 101 specifies the HOL for unicast subqueue 103 and a value of 1 specifies the HOL for multicast subqueue 104. The tail type field 102 is used to identify the type of traffic associated with the last addition to hybrid queue 100, here a value of 0 indicates a unicast entry was appended and a value of 1 indicates a multicast entry was appended. In turn, the interleave indicator is used to toggle header type field 101 according to the sequence in which unicasts and multicasts are received. Preferably, the interleave indicator requires only one bit of information in the descriptor or entry.
In the embodiment shown, an interleave indicator value of 1 toggles header type field 101 while an interleave indicator value of 0 leaves header type field 101 unchanged. Thus, when a unicast descriptor or multicast queue entry having an interleave indicator with a value of 1 is serviced, header type field 101 is toggled so that the next departure will be the HOL of the other subqueue. Conversely, when a unicast descriptor or multicast queue entry having an interleave indicator with a value of 0 is serviced, header type field 101 is left unchanged so that the next departure will be the HOL of the same subqueue. As discussed below, each the interleave indicator is assigned a default value that initially depends upon the type of traffic, but can be changed depending upon the nature of the next entry to the hybrid queue.
In this implementation, the default value of the interleave indicator for a unicast descriptor is 1 while the default value for a multicast entry is 0. The arrival of a unicast entry triggers a potential changes to the default value of the preceding interleave indicator. Specifically, before appending a new unicast descriptor entry, the preceding interleave indicator is assigned the current value of tail type field 102. An example of this sequencing routine with respect to the hybrid queue 100 shown in FIG. 1. Upon arrival, a unicast descriptor 105 is appended to unicast descriptor subqueue 103 at a location designated by the tail pointer. Since this is the first unicast descriptor in the queue, header pointer 115 links to this descriptor. Interleave indicator 110 initially has the default value of 1. Header type field 101 is assigned a value of 0, so that the HOL of unicast subqueue 103 will be the selected for the next PDU to depart. Tail type field 102 is assigned a value of 0 to indicate that the current end of the hybrid queue 100 is the unicast subqueue 103. Tail pointer 116 is updated to reflect that unicast descriptor 105 is the current end of unicast subqueue 103.
The next entry to hybrid queue 100 is unicast descriptor 106. Before appending, the interleave indicator 110 of the preceding entry, unicast descriptor 105, is assigned the current value of tail type field 102, changing it to 0. Unicast descriptor 106 is then appended to the subqueue at the location indicated by tail pointer 116. Changes to the header type field 101 are implemented upon the departure of a PDU, so this field remains the same and no changes are made to tail type field 102 since this PDU is also a unicast. The interleave indicator 111 of unicast descriptor 106 is assigned the initial default value of 1. This will maintain the sequence of departure when these PDUs leave the queue. Tail pointer 116 is updated to reflect that unicast descriptor 106 is now the current end of unicast subqueue 103.
Additions to multicast subqueue 104 are made in an analogous manner, except arriving multicast entries do not trigger potential changes in the preceding interleave indicator. In the example shown, multicast queue entry 117 is entered into hybrid queue 100 after unicast descriptor 106. Header pointer 123 and tail pointer 124 maintain the order within multicast subqueue 104. Again, the header type field 101 is changed upon queue departures, so it remains unchanged. Tail type field 102 is now assigned a value of 1 to indicate that the end of multicast subqueue 104 now represents the end of hybrid queue 100. As discussed above, interleave indicator 120 of multicast queue entry 117 initially has a value of 0, the default value for a multicast entry.
As will be recognized, a single linked list implementation for both the multicast and unicast queues exemplified by the prior art creates a situation in which an incoming multicast requires updating every linked list descriptor of output port queues. As a result, the effective bandwidth consumption is N−1. In contrast, under the disclosed system, no changes are made to unicast descriptor 106 when multicast entry 117 is appended to hybrid queue 100. Here, the preceding interleave indicator 111 of unicast descriptor 106 retains its default value of 1. By implementing this alternation of unicast 103 and multicast 104 subqueues, the need to update each unicast descriptor is avoided. Accordingly, this represents a significantly improved worst-case tolerance situation than offered by a single linked list implementation that combines multicast and unicast entries. Since the bandwidth requirements are thus tied to the multicast entries, suitable systems can be designed that minimize bandwidth requirements by tailoring to the expected multicast traffic.
Next, a subsequent multicast queue entry 118 is appended to the end of multicast queue 104. Accordingly, no changes are made to header type 101, tail type 102 fields or to the interleave indicator of the preceding entry. Here, the preceding entry is multicast entry 117 and thus interleave indicator 120 remains at its default value of 0. The current interleave indicator 121 initially has a value of 0, since that is the default for the multicast data type.
As described above, when a subsequent addition to hybrid queue 100 is a unicast descriptor, descriptor 107 as shown here, the preceding interleave indicator is assigned to the current tail type 102 value. Here, interleave indicator 121 of multicast queue entry 118 is changed from its default of 0 to 1. The interleave indicator 112 of unicast descriptor 107 initially is assigned the default value of 0 for a unicast data type. Tail type field 102 is changed to 0 to represent that the current entry is a unicast type.
Further entries are appended to hybrid queue 100 in the same way. In the example shown, before adding unicast descriptor 108, the preceding interleave indicator 112 is assigned the current value of tail type field 102, which as indicated above is 0. Unicast descriptor 108 includes interleave indicator 113 with its initial default value of 1. The tail type 102 is updated to 0 since the entry being appended is a unicast. The next entry is multicast queue entry 119, so no changes are made to the preceding entry's interleave indicator. The tail type field 102 is set to 1 and multicast queue entry 119 has interleave indicator 122 with an initial default value of 0. Finally, before unicast descriptor 109 is appended to hybrid queue 100, the preceding interleave indicator 122 is set to 1, the current value of tail type field 102. Unicast descriptor 109 is then appended to unicast subqueue 103 with a default interleave indicator of 1 and tail type field 102 is changed to 0 to indicate that the most recent addition is a unicast.
Turning now to FIG. 2, a flow chart of the primary steps in the above described routine is depicted. In step 201, incoming entries are analyzed to distinguish between unicast entries and multicast entries. If either the header type field 101 or tail type field 102 has a null value, then it is set to 0 if the entry is a unicast and 1 if the entry is a multicast. If the entry is a unicast, the process goes to step 202. The interleave indicator for the preceding entry is set to the current value of tail type field 102. Next, in step 203, the current entry is placed in the linked list at the address indicated by tail pointer 116 with an interleave indicator having a value of 1. In step 204, the tail type field 102 is set to 0 to correspond to the unicast entry. Finally, in step 205, the tail pointer 116 is updated and the process returns to step 201.
Similarly, if the current entry is a multicast queue entry, the process goes from step 201 to step 206, where the multicast entry is appended at the location indicated by tail pointer 124 with an interleave indicator having a value of 0. Next, in step 207, the tail type field value is set to 1 to indicate the current last entry is a multicast entry. Finally, in step 208, the tail pointer 124 is updated and the process returns to step 201.
In view of the interrelation between the header type 101 and tail type 102 fields and the respective interleave indicators 110-114 and 120-122, the sequence of dequeuing is determined. The scheduler inspects the header type 101 of hybrid queue 100. If the field has a value of 0, the HOL of the unicast subqueue 103 is selected for departure. If the HOL unicast descriptor has an interleave indicator with a value of 1, the header type 101 is toggled to a value of 1, otherwise the header type is unchanged. Conversely, if the header type field 101 has a value of 1, the HOL of the multicast subqueue 104 is selected for departure. If the HOL multicast queue entry has an interleave indicator with a value of 1, the header type 101 is toggled to a value of 0, otherwise the header type is unchanged. The process is then repeated, with the scheduler selecting between the unicast subqueue and the multicast subqueue on the basis of the current value in header type field 101.
An example of these steps is shown in FIG. 1, where the dequeue order is depicted by broken arrows. Since the initial entry to hybrid queue 100 was unicast descriptor 105, header type 101 initially was assigned a value of 0 to indicate that the HOL is the unicast subqueue 103. Thus, a departure scheduler selects unicast subqueue 103 and is directed to the current HOL, unicast descriptor 105 by header pointer 115. Upon processing, interleave indicator 110 has a value 0, so header type 101 is not changed. Header pointer 115 is updated to indicate the new HOL of the unicast subqueue 103, now unicast descriptor 106.
Since header type 101 remains at 0, the next departure also is selected from the unicast subqueue 103. Unicast descriptor 106 has an interleave indicator 111 with a value of 1. Correspondingly, when this descriptor is processed, header type 101 is toggled, which in this situation changes it from 0 to 1. Now, the next departure will be selected from the multicast subqueue 104. Header pointer 123 indicates that multicast queue entry 117 is the current HOL of this subqueue. Accordingly, scheduler processes entry 117, which includes interleave indicator 120 with value 0. Thus, header type 101 remains unchanged at its current value of 1. Upon departure of multicast entry 117, header pointer 123 is updated to indicate multicast entry 118 is the new HOL. The header type value of 1 means that the scheduler selects the multicast subqueue 104 and thus multicast entry 118 for the next departure. Since entry 118 has an interleave indicator 121 value of 1, the header type 101 is toggled, changing from 1 to 0.
In this manner, the remaining sequence of departures is unicast descriptor 107 with interleave indicator 112 having a value of 0, then unicast descriptor 108 with interleave indicator 113 having a value of 11, then multicast queue entry 119 with interleave indicator 119 having a value of 1 and finally unicast descriptor 109. As will be appreciated, each time an entry having an interleave indicator of 1 is processed, the scheduler will alternate between the unicast and multicast subqueues.
Preferably, the unicast subqueue 103 is configured as a linked list. As such, a suitable format for the unicast descriptors is shown in FIG. 3. Generally, the unicast descriptor 301 includes an address 302 indicating the location of each PDU in the memory structure of the network node, an interleave indicator 303 as described above, and a pointer 304 that chains to the next unicast descriptor. As will be appreciated, the pointer 304 of a unicast descriptor is updated when the subsequent unicast descriptor is appended to the unicast subqueue 103.
The multicast subqueue 104 portion of hybrid queue 100 can be configured in a variety of ways depending on the intended applications of the system to optimize various aspects of its performance. As will be recognized, it is desirable to utilize a multicast subqueue comprising pointers to the multicast descriptors rather than the descriptors themselves. By avoiding the need to replicate multicast descriptors, considerable efficiencies are realized, particularly for situations where the diversity of the multicast is relatively high. For example, the multicast subqueue 104 can be implemented as a pointer array or a multicast pointer queue using a fixed FIFO queue, a linked list or a hybrid of the two. Alternatively, the multicast subqueue can be configured as a linked list queue of multicast descriptors.
In one embodiment, representative entries of a two-dimensional pointer array 401 are shown in FIG. 4. Generally, multicast subqueue 103 entries include pointer array rows 402 and 403 corresponding to multicast descriptors 404 and 405, respectively. Each multicast descriptor 404 and 405 includes an address 406 and 407 indicating the location of the PDU in memory storage. Each multicast descriptor 404 and 405 also includes a diversity field 408 and 409 which specify the fan-out of the multicast PDU. Finally, each multicast descriptor also can include a pointer to the row of the pointer array. Accordingly, pointer 410 of multicast descriptor 404 specifies the location of array row 402 and pointer 411 of multicast descriptor 405 specifies the location of array row 403. As will be recognized, if the size of the array equals the number of descriptors, each array entry is then mapped 1:1 to the descriptor. This implementation does not represent the most efficient use of resources as it allocates pointers at each port for every descriptor, all of which are unlikely to be consumed at a given time.
In turn, pointer array row 402 has a width equal to the number of possible output ports at the network node, that is 0 to N−1. The number of array rows corresponds to the number of multicast descriptors. Each array entry, for example 412 and 413, includes an interleave indicator 414 and 415 and next descriptor pointer 416 and 417. As shown, next descriptor pointer 416 links to the subsequent multicast descriptor 405.
Similarly, array entry pointer 411 of multicast descriptor 405 links to array row 403, also including N entries, including entries 418 and 419. Each entry respectively contains an associated interleave indicator 420 and 421 and next descriptor pointer 422 and 423.
By providing an array entry for each potential output port for every multicast descriptor, this embodiment is optimized for worst case tolerance. However, it does represent a tradeoff in efficiency since anything less than full fan-out diversity for each multicast results in empty array entries. This can result in a significant memory overhead and may cause slower processing times.
To optimize the efficiency of the system, other multicast subqueue structures can be used to conserve system resources. In one embodiment, shown in FIG. 5, a fixed FIFO queue 501 can be used for the multicast subqueue 103. Generally, FIFO queue 501 includes a sequence of multicast pointers, in this depiction two pointers 502 and 503 are shown. Each FIFO queue entry comprises a multicast descriptor pointer 504 and 505 and interleave indicator 506 and 507, respectively. As indicated, multicast pointer 504 links to the storage location of multicast descriptor 508. Likewise, multicast pointer 505 links to multicast descriptor 509. Each multicast descriptor 508 and 509 includes the memory address 510 and 511 of the multicast PDU and its associated fan-out diversity field 512 and 513, respectively.
To avoid the necessity of reserving memory space for FIFO queues and to further optimize the efficiency of the system, multicast subqueue can use a linked list 601 of multicast pointers entries as shown in FIG. 6. Here, two multicast pointer entries 602 and 603 are shown. Multicast pointer entry 602 includes multicast descriptor pointer 604 with the location of multicast descriptor 605, interleave indicator 606 and next pointer 607. Similarly, multicast pointer entry 603 includes multicast descriptor pointer 608 with the location of multicast descriptor 609, interleave indicator 610 and next pointer 611. As with the above multicast descriptors, multicast descriptors 605 and 609 respectively include the storage address 612 and 613 for their associated PDUs and a diversity field 614 and 615 to specify the multicast fan-out.
In yet another embodiment, the multicast subqueue can be configured to utilize a hybrid of FIFO queue and linked list multicast pointers. In such implementations, pointers are shared by allocating to blocks. Accordingly, the pointer in every block is a FIFO queue and the pointer block is a linked list.
The above description has been made with regard to various presently preferred embodiments. However, one of skill in the art will recognize that the teachings herein can be applied to a variety of different application as desired. As such, changes and modifications are properly, equitably, and intended to be, within the full range of equivalence of the following claims.

Claims (19)

What is claimed is:
1. A protocol data unit (PDU) switching node comprising a hybrid queue having: a plurality of entries, a header type field, a tail type field, a unicast subqueue, and a multicast subqueue, wherein the unicast subqueue includes at least one of the entries, wherein the multicast subqueue includes at least one of the entries, wherein the header type field has a value selected from a group consisting of a first value and a second value to signal a processing order for the unicast subqueue and the multicast subqueue, wherein each entry comprises an interleave indicator having a value selected from the group consisting of the first value and the second value and wherein the header type field is toggled between the first value and the second value depending upon the value of the interleave indicator of a departing entry.
2. The PDU switching node of claim 1, wherein at least one interleave indicator has the first value and wherein the header type field is toggled when an entry having an interleave indicator with the first value is processed.
3. The PDU switching node of claim 2, wherein the interleave indicator of the at least one entry of the unicast subqueue has a default value comprising the first value.
4. The PDU switching node of claim 3, wherein the at least one entry of the multicast subqueue has an interleave indicator with the second value that does not toggle the header type field when the at least one entry of the multicast subqueue is processed.
5. The PDU switching node of claim 3, wherein the tail type field has a value selected from the group consisting of a first value and a second value and is set to the first value when a unicast entry is appended to the PDU switching node and is set to the second value when a multicast entry is appended to the hybrid queue.
6. The PDU switching node of claim 5, wherein at least one interleave indicator of an entry in the hybrid queue is set to the value of the tail type field before a unicast entry is appended to the hybrid queue.
7. The PDU switching node of claim 1, wherein the unicast subqueue is configured as a linked list of unicast descriptors.
8. The PDU switching node of claim 1, wherein the multicast subqueue is configured in a data structure selected from the group consisting of a multicast pointer array, a FIFO multicast pointer queue, and a linked list of multicast pointers.
9. The PDU switching node of claim 2 further comprising a scheduler.
10. The PDU switching node of claim 9, wherein the scheduler is configured to process a head of line entry from the unicast subqueue when the header type field is set to the first value and a head of line entry from the multicast subqueue when the header type field is set to the second value.
11. A method for scheduling multicast and unicast traffic at an output port of a protocol data unit (PDU) switching node comprising the steps of:
generating a hybrid queue for the output port including a plurality of entries corresponding to stored PDUs, a header type field that has a value selected from a group consisting of a first value and a second value, a tail type field that has a value selected from the group consisting of the first value and the second value, a unicast subqueue, and a multicast subqueue, wherein the unicast subqueue includes at least one of the entries, wherein the multicast subqueue includes at least one of the entries, and wherein each entry has an interleave indicator having a value selected from the group consisting of the first value and the second value; and
toggling the header type field between the first value and the second value, wherein the first and second values are configured to specify the unicast subqueue and the multicast subqueue, depending upon the value of the interleave indicator of a departing entry.
12. The method of claim 11, further comprising the step of servicing a hybrid queue entry wherein the interleave indicator of the hybrid queue entry has the first value, wherein the header type field is toggled because the interleave indicator has the first value.
13. The method of claim 12, wherein the step of generating a hybrid queue comprises appending a unicast entry to the unicast subqueue, wherein the appended unicast entry has an interleave indicator with the first value, and appending a multicast entry to the multicast subqueue, wherein the appended multicast entry has an interleave indicator with the second value.
14. The method of claim 13, further comprising the steps of servicing a hybrid queue entry wherein the interleave indicator of the hybrid queue entry has the second value and leaving the header type field unchanged because the interleave indicator has the second value.
15. The method of claim 13, further comprising the steps of setting the tail type field to the first value when a unicast entry is appended to the hybrid queue and setting the tail type field to the second value when a multicast entry is appended to the hybrid queue.
16. The method of claim 15, further comprising the steps of appending a first entry to the hybrid queue having a first interleave indicator, determining a next hybrid queue entry is a unicast entry, changing the value of the first interleave indicator of the first entry to the hybrid queue to the value of the tail type field and appending the next hybrid queue entry.
17. The method of claim 11, wherein the unicast subqueue is configured as a linked list of unicast descriptors.
18. The method of claim 17, wherein the multicast subqueue is configured in a data structure selected from the group consisting of a multicast pointer array, a FIFO multicast pointer queue, and a linked list of multicast pointers.
19. The method of claim 12, further comprising the step of servicing a hybrid queue entry by scheduling a head of line entry from the unicast subqueue when the header type field is set to the first value and scheduling a head of line entry from the multicast subqueue when the header type field is set to the second value.
US12/642,998 2009-12-21 2009-12-21 System and method for scheduling unicast and multicast traffic Expired - Fee Related US8442063B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US12/642,998 US8442063B1 (en) 2009-12-21 2009-12-21 System and method for scheduling unicast and multicast traffic

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US12/642,998 US8442063B1 (en) 2009-12-21 2009-12-21 System and method for scheduling unicast and multicast traffic

Publications (1)

Publication Number Publication Date
US8442063B1 true US8442063B1 (en) 2013-05-14

Family

ID=48225495

Family Applications (1)

Application Number Title Priority Date Filing Date
US12/642,998 Expired - Fee Related US8442063B1 (en) 2009-12-21 2009-12-21 System and method for scheduling unicast and multicast traffic

Country Status (1)

Country Link
US (1) US8442063B1 (en)

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150124833A1 (en) * 2013-11-05 2015-05-07 Cisco Technology, Inc. Boosting linked list throughput
US20180074961A1 (en) * 2016-09-12 2018-03-15 Intel Corporation Selective application of interleave based on type of data to be stored in memory
US10079761B2 (en) 2013-11-05 2018-09-18 Cisco Technology, Inc. Hierarchical routing with table management across hardware modules
US10164782B2 (en) 2013-11-05 2018-12-25 Cisco Technology, Inc. Method and system for constructing a loop free multicast tree in a data-center fabric
US10182496B2 (en) 2013-11-05 2019-01-15 Cisco Technology, Inc. Spanning tree protocol optimization
US10187302B2 (en) 2013-11-05 2019-01-22 Cisco Technology, Inc. Source address translation in overlay networks
US10374878B2 (en) 2013-11-05 2019-08-06 Cisco Technology, Inc. Forwarding tables for virtual networking devices
US10382345B2 (en) 2013-11-05 2019-08-13 Cisco Technology, Inc. Dynamic flowlet prioritization
US10516612B2 (en) 2013-11-05 2019-12-24 Cisco Technology, Inc. System and method for identification of large-data flows
US10778584B2 (en) 2013-11-05 2020-09-15 Cisco Technology, Inc. System and method for multi-path load balancing in network fabrics
US10951522B2 (en) 2013-11-05 2021-03-16 Cisco Technology, Inc. IP-based forwarding of bridged and routed IP packets and unicast ARP
US10999417B2 (en) * 2017-12-11 2021-05-04 Greyware Automation Products, Inc. Method and apparatus for unicast packet sharing

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040114616A1 (en) * 2002-12-13 2004-06-17 Zarlink Semiconductor V.N. Inc. Scheduling methods for combined unicast and multicast queuing
US6941392B2 (en) * 1998-07-26 2005-09-06 Marvell Semiconductor Israel Ltd. Buffer switch having descriptor cache and method thereof
US20060268868A1 (en) * 2004-08-12 2006-11-30 Intel Corporation Method and system for processing multicast packets
US20060292292A1 (en) * 1998-05-08 2006-12-28 Brightman Thomas B Digital communications processor
US20070248082A1 (en) * 2006-04-20 2007-10-25 Enigma Semiconductor, Inc. Multicast switching in a credit based unicast and multicast switching architecture
US20080117913A1 (en) * 2006-02-21 2008-05-22 Tatar Mohammed I Pipelined Packet Switching and Queuing Architecture
US20090175286A1 (en) * 2008-01-07 2009-07-09 Finbar Naven Switching method
US7586911B2 (en) * 2003-10-17 2009-09-08 Rmi Corporation Method and apparatus for packet transmit queue control
US7627870B1 (en) * 2001-04-28 2009-12-01 Cisco Technology, Inc. Method and apparatus for a data structure comprising a hierarchy of queues or linked list data structures

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060292292A1 (en) * 1998-05-08 2006-12-28 Brightman Thomas B Digital communications processor
US6941392B2 (en) * 1998-07-26 2005-09-06 Marvell Semiconductor Israel Ltd. Buffer switch having descriptor cache and method thereof
US7627870B1 (en) * 2001-04-28 2009-12-01 Cisco Technology, Inc. Method and apparatus for a data structure comprising a hierarchy of queues or linked list data structures
US20040114616A1 (en) * 2002-12-13 2004-06-17 Zarlink Semiconductor V.N. Inc. Scheduling methods for combined unicast and multicast queuing
US7586911B2 (en) * 2003-10-17 2009-09-08 Rmi Corporation Method and apparatus for packet transmit queue control
US20060268868A1 (en) * 2004-08-12 2006-11-30 Intel Corporation Method and system for processing multicast packets
US20080117913A1 (en) * 2006-02-21 2008-05-22 Tatar Mohammed I Pipelined Packet Switching and Queuing Architecture
US20070248082A1 (en) * 2006-04-20 2007-10-25 Enigma Semiconductor, Inc. Multicast switching in a credit based unicast and multicast switching architecture
US20090175286A1 (en) * 2008-01-07 2009-07-09 Finbar Naven Switching method

Cited By (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10581635B2 (en) 2013-11-05 2020-03-03 Cisco Technology, Inc. Managing routing information for tunnel endpoints in overlay networks
US10079761B2 (en) 2013-11-05 2018-09-18 Cisco Technology, Inc. Hierarchical routing with table management across hardware modules
US20150124833A1 (en) * 2013-11-05 2015-05-07 Cisco Technology, Inc. Boosting linked list throughput
US11888746B2 (en) 2013-11-05 2024-01-30 Cisco Technology, Inc. System and method for multi-path load balancing in network fabrics
US10606454B2 (en) 2013-11-05 2020-03-31 Cisco Technology, Inc. Stage upgrade of image versions on devices in a cluster
US10148586B2 (en) 2013-11-05 2018-12-04 Cisco Technology, Inc. Work conserving scheduler based on ranking
US10164782B2 (en) 2013-11-05 2018-12-25 Cisco Technology, Inc. Method and system for constructing a loop free multicast tree in a data-center fabric
US10182496B2 (en) 2013-11-05 2019-01-15 Cisco Technology, Inc. Spanning tree protocol optimization
US10187302B2 (en) 2013-11-05 2019-01-22 Cisco Technology, Inc. Source address translation in overlay networks
US10225179B2 (en) 2013-11-05 2019-03-05 Cisco Technology, Inc. Virtual port channel bounce in overlay network
CN105706043B (en) * 2013-11-05 2019-05-31 思科技术公司 The list handling capacity of push type link
US10623206B2 (en) 2013-11-05 2020-04-14 Cisco Technology, Inc. Multicast multipathing in an overlay network
US10382345B2 (en) 2013-11-05 2019-08-13 Cisco Technology, Inc. Dynamic flowlet prioritization
US10516612B2 (en) 2013-11-05 2019-12-24 Cisco Technology, Inc. System and method for identification of large-data flows
US11811555B2 (en) 2013-11-05 2023-11-07 Cisco Technology, Inc. Multicast multipathing in an overlay network
CN105706043A (en) * 2013-11-05 2016-06-22 思科技术公司 Boosting linked list throughput
US10374878B2 (en) 2013-11-05 2019-08-06 Cisco Technology, Inc. Forwarding tables for virtual networking devices
US10652163B2 (en) * 2013-11-05 2020-05-12 Cisco Technology, Inc. Boosting linked list throughput
US20200252345A1 (en) * 2013-11-05 2020-08-06 Cisco Technology, Inc. Boosting linked list throughput
US10778584B2 (en) 2013-11-05 2020-09-15 Cisco Technology, Inc. System and method for multi-path load balancing in network fabrics
US10904146B2 (en) 2013-11-05 2021-01-26 Cisco Technology, Inc. Hierarchical routing with table management across hardware modules
US10951522B2 (en) 2013-11-05 2021-03-16 Cisco Technology, Inc. IP-based forwarding of bridged and routed IP packets and unicast ARP
US11625154B2 (en) 2013-11-05 2023-04-11 Cisco Technology, Inc. Stage upgrade of image versions on devices in a cluster
US11018898B2 (en) 2013-11-05 2021-05-25 Cisco Technology, Inc. Multicast multipathing in an overlay network
US11411770B2 (en) 2013-11-05 2022-08-09 Cisco Technology, Inc. Virtual port channel bounce in overlay network
US11528228B2 (en) 2013-11-05 2022-12-13 Cisco Technology, Inc. System and method for multi-path load balancing in network fabrics
US20180074961A1 (en) * 2016-09-12 2018-03-15 Intel Corporation Selective application of interleave based on type of data to be stored in memory
US9971691B2 (en) * 2016-09-12 2018-05-15 Intel Corporation Selevtive application of interleave based on type of data to be stored in memory
US10999417B2 (en) * 2017-12-11 2021-05-04 Greyware Automation Products, Inc. Method and apparatus for unicast packet sharing

Similar Documents

Publication Publication Date Title
US8442063B1 (en) System and method for scheduling unicast and multicast traffic
EP1264430B1 (en) Non-consecutive data readout scheduler
EP1774714B1 (en) Hierarchal scheduler with multiple scheduling lanes
US7397809B2 (en) Scheduling methods for combined unicast and multicast queuing
US7391772B2 (en) Network multicasting
US7606250B2 (en) Assigning resources to items such as processing contexts for processing packets
US7649882B2 (en) Multicast scheduling and replication in switches
US6603772B1 (en) Multicast routing with multicast virtual output queues and shortest queue first allocation
US20050243829A1 (en) Traffic management architecture
US8149708B2 (en) Dynamically switching streams of packets among dedicated and shared queues
US20030202517A1 (en) Apparatus for controlling packet output
US7212535B2 (en) Scheduling items using mini-quantum values
US20020064156A1 (en) Switching arrangement and method
US9853920B2 (en) Systems and methods for performing packet reorder processing
US7916743B2 (en) System and method for improved multicast performance
US20060274779A1 (en) Filling token buckets of schedule entries
US7565496B2 (en) Sharing memory among multiple information channels
CN1853379A (en) System and method for providing quality of service in asynchronous transfer mode cell transmission
US6647011B1 (en) Method and system for switching using an arbitrator
US10581759B1 (en) Sharing packet processing resources
EP1774721B1 (en) Propagation of minimum guaranteed scheduling rates
EP1198098B1 (en) Switching arrangement and method with separated output buffers
WO2009029817A1 (en) Replicating and switching multicast internet packets in routers using crosspoint memory shared by output ports
US10554572B1 (en) Scalable ingress arbitration for merging control and payload
KR20100096599A (en) Packet scheduling apparatus and method

Legal Events

Date Code Title Description
AS Assignment

Owner name: ATHEROS COMMUNICATIONS INC., CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:ZHOU, XUYANG;XU, YONGBING;SUN, XIAOXI;REEL/FRAME:023689/0501

Effective date: 20091218

AS Assignment

Owner name: QUALCOMM ATHEROS, INC., CALIFORNIA

Free format text: MERGER;ASSIGNOR:ATHEROS COMMUNICATIONS, INC.;REEL/FRAME:026785/0505

Effective date: 20110524

AS Assignment

Owner name: QUALCOMM INCORPORATED, CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:QUALCOMM ATHEROS, INC.;REEL/FRAME:029504/0793

Effective date: 20121022

REMI Maintenance fee reminder mailed
LAPS Lapse for failure to pay maintenance fees
STCH Information on status: patent discontinuation

Free format text: PATENT EXPIRED DUE TO NONPAYMENT OF MAINTENANCE FEES UNDER 37 CFR 1.362

FP Lapsed due to failure to pay maintenance fee

Effective date: 20170514