A method of scheduling queue servicing in a data packet switching environment is provided. The method includes a sequence of cyclical steps. The output queues are scheduled for servicing on a least credit value basis. An output queue is selected from a group of output queues associated with a communications port. The selected output port has at least one Payload Data unit (PDU) pending transmission and a lowest credit value associated therewith. At least one PDU having a length is transmitted from the selected output queue and the credit value is incremented taking the length of the transmitted PDU into consideration. The transmission of PDUs is divided into transmission periods. Once per transmission period credit values associated with output queues holding PDUs pending transmission are decremented in accordance with transmission apportionments assigned for each output queue. The method emulates weighted fair queue servicing with minimal computation enabling hardware implementation thereof.
|
1. A method of scheduling for servicing a plurality of output queues associated with a communications port, the method comprising cyclical steps of:
selecting for servicing an output queue holding at least one Payload Data unit (PDU) from the plurality of output queues, the selected output queue having an associated credit counter holding a lowest credit value;
selectively incrementing the credit value held in the credit counter to account for the transmission of the at least one PDU having a length from the selected output queue; and
periodically decrementing the credit values of a subgroup of the corresponding plurality of credit counters associated with output queues holding at least one PDU pending transmission in accordance with transmission bandwidth apportionments assigned to each output queue;
wherein selectively incrementing the credit value held in the credit counter associated with the selected output queue comprises setting the credit value of the credit counter to the length of the packet if the credit value of the credit counter has a positive value, whereby selecting for servicing the output queue having the lowest credit value emulated weighted fair queuing is achieved in the long run with minimal computation.
2. A method as claimed in
3. A method as claimed in
4. A method as claimed in
5. A method as claimed in
6. A method as claimed in
7. A method as claimed in
|
This application claims the benefit of U.S. provisional application No. 60/236,166 filed Sep. 29, 2000.
The invention relates to the field of electronic data transport, and in particular it relates to methods and apparatus for partitioning egress bandwidth between data traffic flows at a switching point in a data transport network.
In the field of PDU switching, a switching device 10 (see
In order to provide Quality-of-Service (QoS) guarantees, a Class-of-Service (CoS) is associated to each PDU and data traffic flow 32. PDUs having the same CoS and destined for a particular output port 30, are aggregated into a single data flow 32. PDUs 106 associated with a single data flow 32 are queued in a corresponding output queue Q(j) for transmission over a physical medium 102 of the output port 30. Each one of m output queues Q(j) associated with the output port 30 may be implemented in hardware or software and is ascribed at least a transmission bandwidth and priority in relation to other data traffic flows 32 destined for the output port 30. As such, a high priority PDU associated with a voice connection may await in an output queue Q(m−1) having a high service priority associated therewith while a low priority PDU associated with an electronic mail transfers session may await in an output queue Q(0) having a low service priority associated therewith.
The selection of PDUs 106 for transmission over the physical medium is made by a scheduler 40. In providing QoS guarantees it is generally required that high priority PDUs receive a guaranteed fraction of the transmission bandwidth. Therefore high priority PDUs benefit from preferential processing thereof.
Due to a varying length 110 of the PDUs conveyed, all data traffic flows 32 become subject to transmission delay and transmission jitter. It is considered desirable for low transmission priority output queues to receive some guaranteed fraction of bandwidth so as not to completely be blacked out during periods of data traffic bursts of high priority PDUs. To implement CoS and to achieve low transmission delays and jitter, an enforcer 50 is used in queuing PDUs in the output queues Q(j) ensuring that not too many high priority PDUs 106 are queued for transmission during an interval of time.
Several theoretical models have been developed to partition the transport bandwidth of the output physical medium 102 among the output queues Q(j) implementing Weighted Fair Queuing (WFQ) techniques. One such technique is described by Srinivasan Keshav in “An Engineering Approach to Computer Networking: ATM Networks, the Internet, and the Telephone Network” published by Addison Wesley, 1997, Reading Mass., pp 209–263.
WFQ techniques provide a solution to the problem of bandwidth partitioning while being considered impractical to implement in hardware. Theoretical queue servicing models typically assume that the computational time spent implementing WFQ is infinitesimal and therefore ignored. In practice the computational time can not be ignored. WFQ techniques use iterative calculations in sequencing output queue servicing. Iterative calculations are time intensive. WFQ sequencing calculations also require division operations which represent sources of great implementation complexity in hardware.
There therefore is a need to develop methods to sequence output queue servicing in a manner that emulates weighted fair queuing techniques while overcoming the above presented shortcomings.
In accordance with a preferred embodiment of the invention methods of output queue service scheduling in a data switching environment include a sequence of cyclical steps. Output queues are scheduled for servicing on a least credit value basis. An output queue is selected from a plurality of output queues associated with a communications port. The selected output port has at least one Payload Data Unit (PDU) pending transmission and a lowest credit value associated therewith. At least one PDU having a length is transmitted from the selected output queue and the credit value is incremented taking the length of the transmitted PDU into consideration. The transmission of PDUs is divided into transmission periods. Once per transmission period, credit values associated with output queues holding PDUs pending transmission are decremented in accordance with transmission apportionments assigned for each output queue.
The methods presented herein emulate weighted fair queue servicing techniques with minimal computation enabling hardware implementation thereof.
The invention will be better understood by way of the following detailed description of a preferred embodiment of the invention with reference to the appended drawings in which:
It will be noted that like features have similar labels.
Each PDU irrespective of CoS association is conveyed over the physical transmission medium 102 at a transmission rate T schematically shown at 104 of the physical medium 102 as each PDU 106 is considered indivisible for purposes of transmission.
The transmission of data over the output physical medium 102 is divided in sequential transmission periods, each transmission period having an integer duration K schematically shown at 108.
In accordance with the invention, each output queue Q(j) is ascribed a desired transmission bandwidth apportionment A(j). The ascribed value A(j) to each output queue 112 is an integer corresponding to a fraction of the transmission period K, such that the processing time required to serve all transmission bandwidth apportionments add up to the transmission period K. The choice of performing integer calculations ensures fast real-time processing.
Although the A(j)'s implicitly represent fractional portions of the time period K, it may be computationally more efficient to specify A(j) values in terms of bits, bytes, octets, cells, frames, etc. Persons of ordinary skill in the art would appreciate that the units used cancel out regardless of the design choice implemented. To facilitate understanding of the concepts presented herein, the values held by A(j)'s, C(j)'s, and L will be understood to be expressed in bytes heretofore.
A second parameter used in sequencing queue servicing is the length L of each PDU 106. While each A(j) represents a portion, measured in bytes as indicated hereinabove, of the transmission period K to be devoted to transmission of PDUs associated with output queue Q(j), each PDU length L represents the amount of data actually transmitted in servicing a particular output queue as each PDU is transmitted therefrom. The PDU length L includes the actual PDU payload length and may additionally account for: transmission guard gaps, padding, existing headers, headers added by lower transmission protocol layers, etc.
In accordance with a preferred embodiment of the invention, a credit counter C(j) is associated with each output queue Q(j) and each output queue Q(j) is serviced if and only if there is at least one PDU awaiting transmission in an ordered fashion biased towards servicing the output queue Q(j) having the lowest credit counter C(j), first.
Initially the credit counters C(j) are set to 0 (zero).
Each credit counter C(j) is changed upon servicing the corresponding output queue Q(j) and the transmission of a PDU 106 of length L from that output queue Q(j) over the physical transmission medium 102.
If the credit counter C(j) is greater or equal to zero, the credit counter C(j) is assigned the value of length L of the PDU 106 just transmitted. If the credit counter C(j) is less than zero, then the credit counter C(j) is assigned the value C(j)+L. Therefore as each PDU 106 is transmitted, the simple process described herein assigns the lesser of L and C(j)+L to the corresponding credit counter C(j) with minimal computation.
Once per transmission period K, the output queues Q(j) are examined for PDUs 106 pending transmission. If a particular output queue Q(j) contains at least one PDU 106 pending transmission, then the corresponding credit counter C(j) is assigned the value C(j)−A(j). If a particular output queue Q(j) is found empty, the corresponding credit counter C(j) is left unchanged.
During the output queue service sequencing process the credit counters C(j) may contain negative values. C(j)'s having negative values represent output queues Q(j) which have been shortchanged with respect to the transmission of PDUs 106.
The output queue service sequencing process is started in step 200. Prior to the start of a first transmission period K, all credit counters C(j) are loaded with 0 (zero) values in step 202.
A serviceable output queue Q(j) having the lowest credit value C(j) is found in step 204. Exemplary processes of finding a serviceable output queue having the lowest credit value are presented below with reference to
The serviceable output queue having the lowest credit value is selected in step 206 and serviced by transmitting at least one PDU over the transmission medium 102 in step 208. The credit counter C(j) corresponding to the serviced output queue Q(j) is set to the minimum between the length L of the at least one transmitted PDU and C(j)+L in step 210.
The process resumes from step 204 if a transmission period K has not elapsed, fact ascertained in step 212.
If the transmission period K has elapsed in step 212, the process selects in step 214 a first output queue Q(j) and if it is found, in step 216, to contain at least one PDU pending transmission, the associated credit counter C(j) is set to C(j)−A(j) in step 218.
If the selected output queue does not contain at least one pending PDU in step 216 or subsequent to the assignment in step 218, the process identifies in step 220 whether the selected output queue Q(j) is the last output queue to be processed.
If the selected output queue Q(j) is not the last output queue to be processed, then the process selects, in step 222, a next output queue and resumes from step 216.
Subsequent to identifying the last output queue to be processed in step 220, the process proceeds with finding a serviceable output queue having a lowest credit value, in step 204.
The process depicted in
In particular, the preferred parallel implementation depicted in
Ideally all credit counters C(j) would have a zero value after each transmission period K elapses. That would mean that, for every transmission period K, the amount of data transmitted with respect to each output queue Q(j) would exactly correspond to the allocated bandwidth for each particular output queue Q(j). In practice, the PDUs 106 have variable lengths, the PDUs are indivisible, and the data traffic may be bursty. The residual values of each credit counter C(j) after one transmission period K represent temporary imbalances in data transmission.
In accordance with the preferred embodiment of the invention, by always selecting for servicing the output queue Q(j) having the lowest associated credit counter value C(j) the induced temporary imbalances are restored over the long term.
A list of output queues associated with an output port is obtained in step 602 and sorted in step 604 according to the credit values held in the corresponding credit counters C(j). The output queue having the lowest credit value is selected in step 606 and is inspected for pending PDUs 106 pending transmission in step 608.
If the selected output queue has at least one PDU pending transmission, a pointer is set, in step 610, to point to the current output queue Q(j) having found a serviceable output queue having a lowest credit value. The pointer is inspected in step 206 in selecting the serviceable queue having the lowest credit value. Other methods known in the art include, but are not limited to, loading a register with the current output queue designation Q(j).
If the selected output queue does not have at least one PDU pending transmission in step 608, a next output queue having a next lowest credit value is selected in step 612 and the process resumes from step 608.
If the last output queue in the list was inspected, fact ascertained in step 614, the sets the pointer to NULL in step 616 and resumes from step 602.
A list of output queues associated with an output port is obtained in step 702.
Initially output queues not having pending PDUs are discarded from the list by scanning through the list. A first output queue is selected in step 704 and inspected in step 706 to determine whether the selected output queue contains at least one PDU pending transmission.
If the currently selected output queue does not contain at least one PDU pending transmission in step 706, the currently selected output queue is removed from the list in step 708. A next output queue is selected in step 712 if the end of the list has not been reached, fact ascertained in step 710 and the process then resumes from step 706.
If the currently selected output queue is found to contain at least one PDU pending transmission in step 706, the process continues by selecting a next output queue in step 712 if the end of the list has not been reached.
If the end of the list is reached in step 710, the list is inspected in step 714.
If in inspecting the list in step 714 it is found that the list does not contain any output queues, the process sets the pointer to NULL in step 716 and resumes execution from step 702.
If in inspecting the list in step 714 it is found that the list contains at least one output queue the process continues by scanning through the remaining list for an output queue having a lowest associated credit value.
A register C holding the lowest credit value found so far is set to a maximum machine expressible value in step 718. A first output queue is selected from the remaining list in step 720 and its associated credit value is compared against the value held in register C in step 722.
If the credit value associated with the currently selected output queue is lower than the value held in the register C, the register C is assigned the credit value in step 724 and the pointer is set to point to the current output queue in step 726. The process continues to scan the reminder of the list by selecting a next output queue in step 730 until the end of the list is reached in step 728.
The methods presented herein emulate weighted fair queue servicing techniques with minimal computation enabling hardware implementation thereof.
It is understood that the above described embodiments are exemplary only and that modifications are possible without departing from the spirit of the invention, the scope of the invention being defined solely by the appended claims.
Wang, Linghsiao, Chang, Rong-Feng, Barrack, Craig
Patent | Priority | Assignee | Title |
10348633, | Dec 19 2014 | AIRBUS OPERATIONS S A S | Aircraft communication systems and methods |
10432536, | Dec 11 2017 | XILINX, Inc. | Systems and methods for policing streams in a network |
7346068, | Dec 13 2002 | Cisco Technology, Inc. | Traffic management scheme for crossbar switch |
7889729, | Dec 20 2001 | Qualcomm Incorporated | System and method for reevaluating granted arbitrated bids |
7965624, | Dec 14 2001 | Qualcomm Incorporated | Data link fault tolerance |
8045563, | Dec 27 2007 | Cellco Partnership | Dynamically adjusted credit based round robin scheduler |
8418129, | Dec 14 2001 | Qualcomm Incorporated | Method for automatically generating code to define a system of hardware elements |
9042398, | Dec 27 2007 | Cellco Partnership | Dynamically adjusted credit based round robin scheduler |
Patent | Priority | Assignee | Title |
5231633, | Jul 11 1990 | Motorola, Inc | Method for prioritizing, selectively discarding, and multiplexing differing traffic type fast packets |
5748614, | Jun 09 1995 | Siemens Aktiengesellschaft | Method for scheduling message cells leaving an ATM node |
5959993, | Sep 13 1996 | Intel Corporation | Scheduler design for ATM switches, and its implementation in a distributed shared memory architecture |
6052375, | Nov 26 1997 | International Business Machines Corporation | High speed internetworking traffic scaler and shaper |
6101193, | Sep 10 1996 | Kabushiki Kaisha Toshiba | Packet scheduling scheme for improving short time fairness characteristic in weighted fair queueing |
6438134, | Aug 19 1998 | Alcatel-Lucent Canada Inc | Two-component bandwidth scheduler having application in multi-class digital communications systems |
6570883, | Aug 28 1999 | POINT REYES NETWORKS, INC | Packet scheduling using dual weight single priority queue |
6618354, | Mar 13 1998 | Hewlett Packard Enterprise Development LP | Credit initialization in systems with proactive flow control |
6683884, | Mar 31 2000 | U S BANK NATIONAL ASSOCIATION, AS COLLATERAL AGENT | Shared credit round robin queuing |
6735174, | Mar 29 2000 | Intel Corporation | Method and systems for flow control of transmissions over channel-based switched fabric connections |
JP8246291, | |||
JP9227193, |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
Mar 15 2001 | Zarlink Semiconductor V.N. Inc. | (assignment on the face of the patent) | / | |||
May 29 2001 | WANG, LINGHSIAO | Mitel Corporation | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 011916 | /0156 | |
May 29 2001 | BARRACK, CRAIG | Mitel Corporation | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 011916 | /0156 | |
May 29 2001 | CHANG, RONG-FENG | Mitel Corporation | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 011916 | /0156 | |
Jul 25 2001 | Mitel Corporation | ZARLINK SEMICONDUCTOR INC | CHANGE OF NAME SEE DOCUMENT FOR DETAILS | 012254 | /0809 | |
Sep 11 2001 | ZARLINK SEMICONDUCTOR INC | ZARLINK SEMICONDUCTOR N V INC | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 012254 | /0759 | |
Sep 11 2001 | ZARLINK SEMICONDUCTOR INC | ZARLINK SEMICONDUCTOR V N INC | CORRECTIVE TO CORRECT ASSIGNEE NAME, PREVIOUSLY RECORDED AT REEL 012254, FRAME 0759 ON OCTOBER 10, 2001 | 014309 | /0462 | |
Oct 25 2006 | ZARLINK SEMICONDUCTOR V N INC | Conexant Systems, Inc | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 018498 | /0775 | |
Oct 25 2006 | ZARLINK SEMICONDUCTOR, INC | Conexant Systems, Inc | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 018498 | /0775 | |
Nov 13 2006 | Conexant Systems, Inc | BANK OF NEW YORK TRUST COMPANY, N A | SECURITY AGREEMENT | 018711 | /0818 | |
Jan 28 2010 | THE BANK OF NEW YORK MELLON TRUST COMPANY, N A FORMERLY, THE BANK OF NEW YORK TRUST COMPANY, N A | Conexant Systems, Inc | RELEASE BY SECURED PARTY SEE DOCUMENT FOR DETAILS | 023998 | /0838 | |
Mar 10 2010 | Conexant Systems, Inc | THE BANK OF NEW YORK, MELLON TRUST COMPANY, N A | SECURITY AGREEMENT | 024066 | /0075 | |
Mar 10 2010 | BROOKTREE BROADBAND HOLDING, INC | THE BANK OF NEW YORK, MELLON TRUST COMPANY, N A | SECURITY AGREEMENT | 024066 | /0075 | |
Mar 10 2010 | CONEXANT, INC | THE BANK OF NEW YORK, MELLON TRUST COMPANY, N A | SECURITY AGREEMENT | 024066 | /0075 | |
Mar 10 2010 | CONEXANT SYSTEMS WORLDWIDE, INC | THE BANK OF NEW YORK, MELLON TRUST COMPANY, N A | SECURITY AGREEMENT | 024066 | /0075 | |
Jul 12 2013 | Conexant Systems, Inc | LAKESTAR SEMI INC | CHANGE OF NAME SEE DOCUMENT FOR DETAILS | 038777 | /0885 | |
Jul 12 2013 | LAKESTAR SEMI INC | Conexant Systems, Inc | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 038803 | /0693 | |
Mar 10 2014 | THE BANK OF NEW YORK MELLON TRUST COMPANY, N A | Conexant Systems, Inc | RELEASE BY SECURED PARTY SEE DOCUMENT FOR DETAILS | 038631 | /0452 | |
Mar 10 2014 | THE BANK OF NEW YORK MELLON TRUST COMPANY, N A | CONEXANT, INC | RELEASE BY SECURED PARTY SEE DOCUMENT FOR DETAILS | 038631 | /0452 | |
Mar 10 2014 | THE BANK OF NEW YORK MELLON TRUST COMPANY, N A | BROOKTREE BROADBAND HOLDING, INC | RELEASE BY SECURED PARTY SEE DOCUMENT FOR DETAILS | 038631 | /0452 | |
Mar 10 2014 | THE BANK OF NEW YORK MELLON TRUST COMPANY, N A | CONEXANT SYSTEMS WORLDWIDE, INC | RELEASE BY SECURED PARTY SEE DOCUMENT FOR DETAILS | 038631 | /0452 | |
Mar 20 2017 | Conexant Systems, Inc | Conexant Systems, LLC | CHANGE OF NAME SEE DOCUMENT FOR DETAILS | 042986 | /0613 | |
Sep 01 2017 | Conexant Systems, LLC | Synaptics Incorporated | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 043786 | /0267 | |
Sep 27 2017 | Synaptics Incorporated | Wells Fargo Bank, National Association | SECURITY INTEREST SEE DOCUMENT FOR DETAILS | 044037 | /0896 |
Date | Maintenance Fee Events |
May 28 2010 | M1551: Payment of Maintenance Fee, 4th Year, Large Entity. |
Jul 11 2014 | REM: Maintenance Fee Reminder Mailed. |
Sep 19 2014 | M1552: Payment of Maintenance Fee, 8th Year, Large Entity. |
Sep 19 2014 | M1555: 7.5 yr surcharge - late pmt w/in 6 mo, Large Entity. |
Jul 09 2018 | REM: Maintenance Fee Reminder Mailed. |
Dec 31 2018 | EXP: Patent Expired for Failure to Pay Maintenance Fees. |
Date | Maintenance Schedule |
Nov 28 2009 | 4 years fee payment window open |
May 28 2010 | 6 months grace period start (w surcharge) |
Nov 28 2010 | patent expiry (for year 4) |
Nov 28 2012 | 2 years to revive unintentionally abandoned end. (for year 4) |
Nov 28 2013 | 8 years fee payment window open |
May 28 2014 | 6 months grace period start (w surcharge) |
Nov 28 2014 | patent expiry (for year 8) |
Nov 28 2016 | 2 years to revive unintentionally abandoned end. (for year 8) |
Nov 28 2017 | 12 years fee payment window open |
May 28 2018 | 6 months grace period start (w surcharge) |
Nov 28 2018 | patent expiry (for year 12) |
Nov 28 2020 | 2 years to revive unintentionally abandoned end. (for year 12) |