WO1998035465B1 - Methods and apparatus for fair queuing over a network - Google Patents

Methods and apparatus for fair queuing over a network

Info

Publication number
WO1998035465B1
WO1998035465B1 PCT/US1997/021410 US9721410W WO9835465B1 WO 1998035465 B1 WO1998035465 B1 WO 1998035465B1 US 9721410 W US9721410 W US 9721410W WO 9835465 B1 WO9835465 B1 WO 9835465B1
Authority
WO
WIPO (PCT)
Prior art keywords
queue
virtual time
queues
bandwidth
recited
Prior art date
Application number
PCT/US1997/021410
Other languages
French (fr)
Other versions
WO1998035465A1 (en
Filing date
Publication date
Priority claimed from US08/812,853 external-priority patent/US5991812A/en
Application filed filed Critical
Priority to AU54532/98A priority Critical patent/AU5453298A/en
Publication of WO1998035465A1 publication Critical patent/WO1998035465A1/en
Publication of WO1998035465B1 publication Critical patent/WO1998035465B1/en

Links

Abstract

Disclosed is a queue selection method using a Packet classifier (112) and a Queue Selection Unit (120) for performing data transfers. The method includes scaling a system bandwidth into a plurality of scaled bandwidth integers that extend to a maximum scaled system bandwidth integer. Providing a plurality of queues (Q1-Qn) where each of the plurality of queues are associated with a scaled bandwidth integer (B1-Bn), and sum of the scaled bandwidth integers for each of the plurality of queues is less than or equal to maximum scaled system bandwidth integer (B). The method further determines an allocated bandwidth integer from the scaled bandwidth integers for each of the plurality of queues that are enabled, and increments a system virtual time upon each cycle of a system clock while at least one of the plurality of queues (Q1-Qn) is enabled. The method then selects one of the plurality of queues having a lowest queue virtual time, and outputs a packet (Pnn) from the selected one of the plurality of queues having the lowest queue virtual time. And, the queue virtual time of the selected one of the plurality of queues is incremented upon each cycle of the system clock while it is selected for transmission.

Claims

AMENDED CLAIMS[received by the International Bureau 27 August 1998 (27.08.98); original claim 29 cancelled; original claims 1, 2, 5, 10-13, 21, 22, 25, 26, 28, 30 and31 amended; new claims 32-38 added; remaining claims unchanged (11 pages)]
1. A queue selection method for data transfer, comprising:
scaling a system bandwidth into a plurality of scaled bandwidth integers
extending to a maximum scaled system bandwidth integer;
providing a plurality of queues, each of the plurality of queues being associated
with a scaled bandwidth integer such that a sum of the scaled bandwidth integers for each
of the plurality of queues is less than or equal to the maximum scaled system bandwidth
integer;
determining an allocated bandwidth integer from the scaled bandwidth integers of
the plurality of queues that are enabled;
incrementing a system virtual time upon each cycle of a system clock while at
least one of the plurality of queues is enabled;
selecting one of the plurality of queues having a lowest queue virtual time;
outputting a packet from the selected one of the plurality of queues having the
lowest queue virtual time; and
incrementing the queue virtual time of the selected one of the plurality of queues
upon each cycle of the system clock.
2. A queue selection method for data transfer as recited in claim 1 , wherein said incrementing the system virtual time includes incrementing by a pre- computed amount associated with the allocated bandwidth integer, wherein said selecting one of the plurality of queues makes use of the system virtual time, and wherein said outputting a packet includes outputting a packet of any length,
whereby said selected queue is selected in a computationally efficient manner.
3. A queue selection method for data transfer as recited in claim 2, wherein the pre-computed amount is retrieved from a virtual time increment array.
4. A queue selection method for data transfer as recited in claim 3, wherein the determined allocated bandwidth integer is mapped to a specific pre-computed amount in the virtual time increment array.
5. A queue selection method for data transfer as recited in claim 1,
wherein said incrementing the queue virtual time includes incrementing by a pre- computed amount associated with the scaled bandwidth integer for the selected queue,
wherein said selecting one of the plurality of queues includes comparing queue virtual times of said queues, and
wherein said outputting a packet includes outputting a packet of any length, whereby said selected queue is selected in a computationally efficient manner.
6. A queue selection method for data transfer as recited in claim 5, wherein the pre-computed amount is retrieved from a virtual time increment array.
7. A queue selection method for data transfer as recited in claim 6, wherein the scaled bandwidth integer of the selected one of the plurality of queues is mapped to a specific pre-computed amount in the virtual time increment array.
8. A queue selection method for data transfer as recited in claim 1, further comprising:
comparing a packet virtual time of a packet queued in one of the plurality of queues with the queue virtual time associated with the one of the plurality of queues; and updating the queue virtual time to the packet virtual time when the packet virtual time is greater than the queue virtual time.
9. A queue selection method for data transfer as recited in claim 8, wherein the packet virtual time is assigned the system virtual time when the packet is queued.
10. A queue selection method for data transfer of packets of any length over a network having a system bandwidth, comprising:
providing a plurality of queues to hold data to be transferred over the network, each of the plurality of queues being associated with a bandwidth integer, each of the plurality of queues having a bandwidth less than the system bandwidth, and the sum of the bandwidths for each of the plurality of queues is less than or equal to a maximum system bandwidth integer;
determining the plurality of queues that are enabled;
determining an allocated bandwidth integer from the bandwidth integers of the plurality of queues that are enabled;
incrementing a virtual time by a pre-computed amount while at least one of the plurality of queues is enabled;
selecting one of the plurality of queues based on the virtual time; and
outputting a packet of any length from the selected one of the plurality of queues, whereby said selected queue is selected in a computationally efficient manner.
11. A queue selection method for data transfer over a network having a system bandwidth as recited in claim 10, wherein the incrementing of the virtual time comprises incrementing a system virtual time for each cycle of a system clock.
12. A queue selection method for data transfer over a network having a system bandwidth as recited in claim 11 , wherein the pre-computed amount is retrieved from a virtual time increment array.
13. A queue selection method for data transfer over a network having a system bandwidth as recited in claim 12, wherein the allocated bandwidth integer is mapped to a specific pre-computed amount in the virtual time increment array.
14. A queue selection method for data transfer over a network having a system bandwidth as recited in claim 10, wherein the incrementing of the virtual time comprises incrementing a queue virtual time of the selected one of the plurality of queues.
15. A queue selection method for data transfer over a network having a system bandwidth as recited in claim 14, wherein the incrementing of the queue virtual time is performed upon each cycle of a system clock.
16. A queue selection method for data transfer over a network having a system bandwidth as recited in claim 15, wherein the incrementing of the queue virtual time is performed for at least one cycle of the system clock while the outputting of the packet from the selected one of the plurality of queues is in progress.
17. A queue selection method for data transfer over a network having a system bandwidth as recited in claim 16, wherein the pre-computed amount is retrieved from a virtual time increment array.
18. A queue selection method for data transfer over a network having a system bandwidth as recited in claim 17, wherein the bandwidth integer of the selected one of the plurality of queues is mapped to a specific pre-computed amount in the virtual time increment array.
19. A queue selection method for data transfer as recited in claim 14, further comprising: comparing a packet virtual time of a packet queued in one of the plurality of queues with the queue virtual time associated with the one of the plurality of queues; and updating the queue virtual time to be the packet virtual time when the packet virtual time is greater than the queue virtual time.
20. A queue selection method for data transfer as recited in claim 17, wherein the packet virtual time is assigned a system virtual time when the packet is queued.
21. A queue selection apparatus for transferring data packets of any length, said apparatus comprising:
a plurality of queues for holding data packets to be transferred over a network, each of the plurality of queues being associated with a bandwidth amount, each of the plurality of queues having a bandwidth that is less than a system bandwidth, and the sum of the bandwidth amounts for each of the plurality of queues is less than about a maximum system bandwidth integer; an allocated bandwidth computer for calculating an allocated bandwidth from the bandwidth amounts associated with each of the plurality of queues that are enabled;
a virtual time computer for incrementing a virtual time by a pre-computed amount while at least one of the plurality of queues is enabled;
a queue selection computer for selecting one of the plurality of queues based on the virtual time; and
an output port for outputting data packets of any length from the selected one of the plurality of queues, whereby said selected queue is selected in a computationally efficient manner.
22. A queue selection apparatus as recited in claim 21, wherein the virtual time computer increments a system virtual time in a system virtual time computer for each cycle of a system clock.
23. A queue selection apparatus as recited in claim 22, wherein the pre- computed amount is retrieved from a virtual time increment array.
24. A queue selection apparatus as recited in claim 23, wherein the allocated bandwidth is mapped to a specific pre-computed amount in the virtual time increment array.
25. A queue selection apparatus as recited in claim 24, wherein the virtual time computer increments a queue virtual time for the selected one of the plurality of queues in a queue virtual time computer.
26. A queue selection apparatus as recited in claim 25, wherein the queue virtual time computer increments the queue virtual time for the selected one of the plurality of queues upon each cycle of a system clock.
27. A queue selection apparatus as recited in claim 26, wherein the incrementing is performed for each cycle of the system clock while the outputting of the data is in progress.
28. A queue selection apparatus as recited in claim 27, wherein said apparatus further comprises a virtual time increment array that stores a plurality of pre-computed amounts, and wherein the pre-computed amount is retrieved from the virtual time increment array by the virtual time computer.
29. (Cancelled)
30. A queue selection apparatus as recited in claim 38, wherein the bandwidth of the selected one of the plurality of queues is mapped to a specific pre-computed amount in the virtual time increment array.
31. A queue selection apparatus as recited in claim 25, further comprising:
a queue virtual time adjuster for comparing a packet virtual time of a packet queued in one of the plurality of queues with the queue virtual time associated with the one of the plurality of queues, and adjusting the queue virtual time to be the packet virtual time when the packet virtual time is greater than the queue virtual time.
32. A method for selecting a queue for data transfer over a network, said method comprising: providing a plurality of queues available for data transfer, each queue being associated with a queue virtual time and arranged to accept packets of any length;
pre-computing a set of time increments;
incrementing a first queue virtual time of a first queue by reference to a first one of said pre-computed time increments;
selecting one of said queues for data transfer based upon a comparison of the queue virtual times of said queues; and
outputting a packet of data of any length from said selected queue over a network, whereby said selected queue is selected for data transfer in a computationally efficient manner.
33. A method for selecting a queue as recited in claim 32 further comprising:
scaling a system bandwidth into a plurality of scaled bandwidth integers arranged to index an array;
storing said set of pre-computed time increments in said array;
determining a bandwidth integer for said first queue; and
referencing said first pre-computed time increment in said array using said determined bandwidth integer, whereby said first queue virtual time is incremented in a fair and computationally efficient manner.
34. A method for selecting a queue as recited in claim 32 further comprising:
determining an allocated bandwidth for said plurality of queues;
referencing a second pre-computed time increment in said array using said determined allocated bandwidth; incrementing a system virtual time using said second pre-computed time increment without performing a multiplication or division operation; and
wherein said selecting one of said queues for data transfer is affected by said system virtual time.
35. A queue selection apparatus comprising:
a plurality of queues available for data transfer, each queue being associated with a queue virtual time and arranged to accept packets of any length;
a queue virtual time computer that increments a first queue virtual time of a first queue by reference to one of a plurality of pre-computed time increments;
a queue selection computer that selects one of said queues for data transfer based upon a comparison of the queue virtual times of said queues; and
an output port that outputs a packet of data of any length from said selected queue over a network, whereby said selected queue is selected for data transfer in a computationally efficient manner.
36. A queue selection apparatus as recited in claim 35 further comprising:
an array that stores said set of pre-computed time increments, said array being indexed by scaling a system bandwidth into a plurality of scaled bandwidth integers, wherein said queue virtual time computer references said one of a plurality of pre- computed time increments in said array using a determined bandwidth integer associated with said first queue, whereby said first queue virtual time is incremented in a fair and computationally efficient manner.
37. A queue selection apparatus as recited in claim 35 further comprising: a system virtual time computer that references a second one of said plurality of pre-computed time increments in said array using an allocated bandwidth integer and increments said system virtual time using said second pre-computed time increment without performing a multiplication or division operation.
38. A queue selection apparatus comprising:
a plurality of queues for holding data to be transferred over a network, each of said queues being associated with a bandwidth amount and each having a bandwidth that is less than a system bandwidth, and wherein the sum of the bandwidth amounts for each of said queues is less than about a maximum system bandwidth integer;
a virtual time increment array that stores a plurality of pre-computed amounts;
an allocated bandwidth computer for calculating an allocated bandwidth from the bandwidth amounts associated with each of said queues that are enabled, said allocated bandwidth being mapped to a specific pre-computed amount in said virtual time increment array;
a system virtual time computer that increments a system virtual time for each cycle of a system clock;
a queue virtual time computer that increments a queue virtual time by a pre- computed amount for each cycle of a system clock for one of said queues while at least one of said queues is enabled, said pre-computed amount being retrieved from said virtual time increment array by said queue virtual time computer, said incrementing being performed for each cycle of said system clock while outputting data is in progress;
a queue selection computer for selecting one of said queues based on said queue virtual time;
an output port for outputting data from said selected queue; and
wherein said plurality of pre-computed amounts stored in said virtual time increment array are determined in accordance with the following equation:
40 C * (100 l(u * i)), where i € [l.ΛOO/u],
wherein C is a constant, i and u are integers, and where i is an integer representing an index to said virtual time increment array and u is a unit of bandwidth allocation that is a percentage of said system bandwidth.
41
PCT/US1997/021410 1997-01-24 1997-11-21 Methods and apparatus for fair queuing over a network WO1998035465A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
AU54532/98A AU5453298A (en) 1997-01-24 1997-11-21 Methods and apparatus for fair queuing over a network

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US3638697P 1997-01-24 1997-01-24
US60/036,386 1997-01-24
US08/812,853 1997-03-06
US08/812,853 US5991812A (en) 1997-01-24 1997-03-06 Methods and apparatus for fair queuing over a network

Publications (2)

Publication Number Publication Date
WO1998035465A1 WO1998035465A1 (en) 1998-08-13
WO1998035465B1 true WO1998035465B1 (en) 1998-10-08

Family

ID=26713128

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US1997/021410 WO1998035465A1 (en) 1997-01-24 1997-11-21 Methods and apparatus for fair queuing over a network

Country Status (4)

Country Link
US (1) US5991812A (en)
AU (1) AU5453298A (en)
TW (1) TW386191B (en)
WO (1) WO1998035465A1 (en)

Families Citing this family (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69733129T2 (en) * 1997-06-20 2006-03-09 Alcatel Method and device for transmitting data packets with priorities
US6421786B1 (en) * 1998-03-13 2002-07-16 Nec Corporation Virtual system time management system utilizing a time storage area and time converting mechanism
US6154769A (en) * 1998-03-27 2000-11-28 Hewlett-Packard Company Scheduling server requests to decrease response time and increase server throughput
US6247058B1 (en) * 1998-03-30 2001-06-12 Hewlett-Packard Company Method and apparatus for processing network packets using time stamps
US6122673A (en) * 1998-07-22 2000-09-19 Fore Systems, Inc. Port scheduler and method for scheduling service providing guarantees, hierarchical rate limiting with/without overbooking capability
US6999421B1 (en) * 1998-10-26 2006-02-14 Fujitsu Limited Adjustable connection admission control method and device for packet-based switch
US6691208B2 (en) * 1999-03-12 2004-02-10 Diva Systems Corp. Queuing architecture including a plurality of queues and associated method for controlling admission for disk access requests for video content
US6798743B1 (en) * 1999-03-22 2004-09-28 Cisco Technology, Inc. Packet prioritization processing technique for routing traffic in a packet-switched computer network
US7065762B1 (en) * 1999-03-22 2006-06-20 Cisco Technology, Inc. Method, apparatus and computer program product for borrowed-virtual-time scheduling
US6742019B1 (en) * 1999-07-23 2004-05-25 International Business Machines Corporation Sieved caching for increasing data rate capacity of a heterogeneous striping group
US6976258B1 (en) 1999-11-30 2005-12-13 Ensim Corporation Providing quality of service guarantees to virtual hosts
US6882623B1 (en) * 2000-02-08 2005-04-19 Native Networks Technologies Ltd. Multi-level scheduling method for multiplexing packets in a communications network
US6754716B1 (en) 2000-02-11 2004-06-22 Ensim Corporation Restricting communication between network devices on a common network
US7343421B1 (en) 2000-02-14 2008-03-11 Digital Asset Enterprises Llc Restricting communication of selected processes to a set of specific network addresses
US6948003B1 (en) 2000-03-15 2005-09-20 Ensim Corporation Enabling a service provider to provide intranet services
US6985937B1 (en) 2000-05-11 2006-01-10 Ensim Corporation Dynamically modifying the resources of a virtual server
US6907421B1 (en) 2000-05-16 2005-06-14 Ensim Corporation Regulating file access rates according to file type
US7143024B1 (en) 2000-07-07 2006-11-28 Ensim Corporation Associating identifiers with virtual processes
US6909691B1 (en) * 2000-08-07 2005-06-21 Ensim Corporation Fairly partitioning resources while limiting the maximum fair share
DE10051147B4 (en) * 2000-10-16 2005-04-14 Siemens Ag Method for accessing and working in an IP network
US6914881B1 (en) * 2000-11-28 2005-07-05 Nortel Networks Ltd Prioritized continuous-deficit round robin scheduling
GB0031157D0 (en) * 2000-12-20 2001-01-31 Ncr Int Inc Streaming of data
US7219354B1 (en) 2000-12-22 2007-05-15 Ensim Corporation Virtualizing super-user privileges for multiple virtual processes
US7225242B2 (en) 2001-01-26 2007-05-29 Dell Products L.P. System and method for matching storage device queue depth to server command queue depth
JP2002223202A (en) * 2001-01-26 2002-08-09 Fujitsu Ltd Method of transmitting data and transmitter using it
US7486686B2 (en) 2001-02-26 2009-02-03 Vitesse Semiconductor Corporation Method and apparatus for scheduling data on a medium
US20020176361A1 (en) * 2001-05-25 2002-11-28 Yunnan Wu End-to-end traffic management and adaptive multi-hop multimedia transmission
US6922732B2 (en) * 2001-06-08 2005-07-26 Mobixell Networks Inc. Class-based per-flow queuing across multiple hierarchical link-sharing structures
US7027443B2 (en) * 2001-08-23 2006-04-11 Pmc-Sierra Ltd. Reassembly engines for multilink applications
US7376159B1 (en) * 2002-01-03 2008-05-20 The Directv Group, Inc. Exploitation of null packets in packetized digital television systems
US7286473B1 (en) 2002-07-10 2007-10-23 The Directv Group, Inc. Null packet replacement with bi-level scheduling
US7440403B2 (en) * 2002-10-10 2008-10-21 P-Cube Ltd. Method and software for calculating rate constraints
KR20040052012A (en) * 2002-12-13 2004-06-19 한국전자통신연구원 Packet scheduling system and method for high-speed packet networks
US7647221B2 (en) * 2003-04-30 2010-01-12 The Directv Group, Inc. Audio level control for compressed audio
US7912226B1 (en) 2003-09-12 2011-03-22 The Directv Group, Inc. Automatic measurement of audio presence and level by direct processing of an MPEG data stream
US7986624B2 (en) * 2005-10-28 2011-07-26 Viasat, Inc. Quality of service enhancements for adaptive coding and modulation
US7680040B2 (en) * 2005-10-28 2010-03-16 Viasat, Inc. Adaptive coding and modulation for broadband data transmission
EP2016717A2 (en) * 2006-04-29 2009-01-21 724 Solutions Software Inc. Platform for interoperability
US8327024B2 (en) * 2006-04-29 2012-12-04 724 Solutions Software, Inc. System and method for SMS/IP interoperability
EP2016714A2 (en) * 2006-04-29 2009-01-21 724 Solutions Software Inc. Contextual based identity
US8165033B1 (en) 2007-08-30 2012-04-24 Altera Corporation Method and apparatus for performing generalized processor sharing scheduling
US8102865B2 (en) * 2008-05-16 2012-01-24 Microsoft Corporation Group based allocation of network bandwidth
US9729120B1 (en) 2011-07-13 2017-08-08 The Directv Group, Inc. System and method to monitor audio loudness and provide audio automatic gain control
US9715365B2 (en) 2012-06-27 2017-07-25 Sonos, Inc. Systems and methods for mobile music zones

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3127523B2 (en) * 1991-10-31 2001-01-29 株式会社日立製作所 Communication control device and data transmission method
US5663961A (en) * 1995-02-24 1997-09-02 Motorola, Inc. Packet switch with centralized buffering for many output channels
US5519701A (en) * 1995-03-29 1996-05-21 International Business Machines Corporation Architecture for high performance management of multiple circular FIFO storage means
US5689508A (en) * 1995-12-21 1997-11-18 Xerox Corporation Reservation ring mechanism for providing fair queued access in a fast packet switch networks

Similar Documents

Publication Publication Date Title
WO1998035465B1 (en) Methods and apparatus for fair queuing over a network
US5905730A (en) High speed packet scheduling method and apparatus
US5991812A (en) Methods and apparatus for fair queuing over a network
US6483839B1 (en) Apparatus and method for scheduling multiple and simultaneous traffic in guaranteed frame rate in ATM communication system
US6438134B1 (en) Two-component bandwidth scheduler having application in multi-class digital communications systems
US6683884B1 (en) Shared credit round robin queuing
EP1867112B1 (en) Assigning resources to items such as processing contexts for processing packets
US20060029080A1 (en) Using burst tolerance values in time-based schedules
EP0874531A2 (en) ATM cell scheduling method
US6424622B1 (en) Optimal buffer management scheme with dynamic queue length thresholds for ATM switches
EP0859492A3 (en) Fair queuing system with adaptive bandwidth redistribution
CN101414958B (en) Method and apparatus for scheduling business
US7843940B2 (en) Filling token buckets of schedule entries
EP0752796A3 (en) Buffering of data for transmission in a computer communications system interface
EP1977569A1 (en) Apparatus, method, and computer program for data packet scheduling
US20070140285A1 (en) Weighted fair queue having extended effective range
JP2000252997A (en) Traffic shaper
US6990115B2 (en) Queue control method and system
US7565496B2 (en) Sharing memory among multiple information channels
US6208652B1 (en) Increment scheduler
US7350208B1 (en) Method and apparatus for scheduling using a resource variable decreased by amounts corresponding to the efficiency of the resource
US7324554B1 (en) Communication bandwidth distribution system and method
EP1021060B1 (en) High speed weighted fair queuing system for ATM switches
US20060153243A1 (en) Scheduling eligible entries using an approximated finish delay identified for an entry based on an associated speed group
EP1126668A2 (en) Method and apparatus for dynamic bitmap generator scheduler