IP Library Granted Patent US 6,904,015
Granted Patent B1
US 6,904,015 · App. 09/653,467 · Granted Jun 7, 2005

Congestion avoidance profiles in a packet switching system

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 6,904,015
App. No.
09/653,467
Granted
Jun 7, 2005
Kind
B1
Abstract

Methods and apparatus for an improvement on Random Early Detection (RED) router congestion avoidance are disclosed. A traffic conditioner stores a drop probability profile as a collection of configurable profile segments. A multi-stage comparator compares an average queue size (AQS) for a packet queue to the segments, and determines which segment the AQS lies within. This segment is keyed to a corresponding drop probability, which is used to make a packet discard/admit decision for a packet. In a preferred implementation, this computational core is surrounded by a set of registers, allowing it to serve multiple packet queues and packets with different discard priorities. Each queue and discard priority can be keyed to a drop probability profile selected from a pool of such profiles. This provides a highly-configurable, inexpensive, and fast RED solution for a high-performance router.

Claims (75)

1. A method of implementing random early detection of congestion for a data packet queue, the method comprising:

storing at least one configurable segment-based drop probability profile associated with the queue, each segment of the profile having a drop probability associated with a range of average queue sizes;

receiving an average queue size AQS for the queue;

determining whether the average queue size AQS falls within one of N segments S i , 0≦i<N, corresponding to the drop probability profile associated the queue; and

basing a drop/no-drop decision, for a data packet associated with the queue, on the drop probability associated with a segment S i when AQS falls within that segment.

2. The method of claim 1 , wherein each data packet assigned a drop priority from among possible drop priorities, M>1, and wherein M drop probability profiles are associated with the queue, further comprising identifying, based on the drop priority of the data packet awaiting the drop/no-drop decision, which of the M drop probability profiles to use in determining whether the average queue size AQS falls within one of N segments S i .

3. The method of claim 2 , wherein each of the M profiles comprises a high threshold T H and a delta threshold T δ , wherein T δ is used to determine multiple segment boundaries, each boundary lower than T H .

4. The method of claim 1 , wherein the configurable drop probability profile comprises a high threshold T H and a delta threshold T δ , wherein T δ is used to determine multiple segment boundaries, each boundary lower than T H .

5. The method of claim of 4 , wherein AQS falls within S i when

T H −T δ /2 i ≦AQS<T H −T δ /2 i+1 i≠N −1

T H −T δ /2 i ≦AQS<T H i=N −1

6. The method of claim 1 , wherein the segment endpoints for each segment S i are stored with the profile.

7. The method of claim 1 , wherein a set of drop probabilities P i correspond respectively to the segments S i , wherein basing a drop/no-drop decision comprises, when AQS falls within S i , performing a random trial having two outcomes, drop and admit, where the probability of the outcome drop is approximately P i .

8. The method of claim 1 , wherein multiple drop probability profiles exist, and wherein one set of drop probabilities P i correspond to all profiles.

9. The method of claim 1 , wherein multiple drop probability profiles exist, and wherein a set of drop probabilities P i is stored with each profile.

10. The method of claim 1 , wherein multiple drop probability profiles exist, and wherein each profile further comprises a segment type identifier, the segment type identifier corresponding to one of a plurality of fixed segment distributions.

11. A method of implementing random early detection of congestion for multiple data packet queues sharing a common queue memory, the method comprising:

maintaining a pool of drop probability profiles, the number of profiles in the pool less than the number of queues;

associating each of the data packet queues with at least one drop probability profile selected from the pool;

maintaining a queue size for each data packet queue; and

forming a drop/no-drop decision for a data packet prior to queuing that data packet in its destination data packet queue, the decision based on the destination data packet queue size and the profile associated with that queue.

12. The method of claim 11 , wherein each profile in the profile pool comprises a high threshold T H and a delta threshold T δ , wherein T δ is used to determine multiple segment boundaries, each boundary lower than T H .

13. The method of claim 11 , wherein forming a drop/no-drop decision comprises determining whether an average queue size AQS for that queue falls within one of N drop probability profile segments S i , 0≦i<N.

14. The method of claim 13 , wherein AQS falls within S i when

T H −T δ /2 i ≦AQS<T H −T δ /2 i+1 i≠N −1

T H −T δ /2 i ≦AQS<T H i=N −1

15. The method of claim 13 , wherein the segment endpoints for each segment S i are stored with the profile.

16. The method of claim 13 , wherein a set of drop probabilities P i correspond respectively to the segments S i , wherein using the profile associated with a queue further comprises, when AQS falls within S i , performing a random trial having two outcomes, drop and admit, where the probability of the outcome drop is approximately P i .

17. The method of claim 16 , wherein one set of drop probabilities P i correspond to all profiles.

18. The method of claim 13 , wherein a set of drop probabilities P i is stored with each profile.

19. The method of claim 13 , wherein each profile further comprises a segment type identifier, the segment type identifier corresponding to one of a plurality of fixed segment distributions.

20. The method of claim 11 , wherein each data packet is assigned a drop priority from among M possible drop priorities, and wherein each data packet queue is associated with M drop probability profiles, wherein using the profile associated with that queue to arrive at the drop/no-drop decision comprises using the profile associated with that queue and the drop priority of that data packet.

21. An integrated circuit comprising:

a profile register to store an array of segment-based drop probability profiles;

a profile matcher to accept a data packet queue identifier and select an active drop probability profile, from the array of drop probability profiles, that is associated with the data packet queue identifier,

a segment selector to accept an average queue size AQS associated with the selected data packet queue and the active drop probability profile, the selector identifying the segment of the active profile within which AQS falls; and

a probability comparator to accept a drop probability corresponding to the segment identification from the segment selector, the comparator producing a random packet-drop signal with a probability approximately equal to the drop probability.

22. The circuit of claim 21 , wherein the drop probability profile configuration of the profile register comprises a high threshold T H and a delta threshold T δ for each entry in the array, wherein T δ is used to determine multiple segment boundaries, each boundary lower than T H .

23. The circuit of claim 22 , wherein the segment selector has the capability to identify the segment as one of N segments S i , 0≦i<N, wherein the identified segment S i is the segment for which

T H −T δ /2 i ≦AQS<T H −T δ /2 i+1 i≠N −1

T H −T δ /2 i ≦AQS<T H i=N −1

24. The circuit of claim 22 , wherein the drop probability profile configuration of the profile register further comprises a set of drop probabilities, corresponding respectively to the possible segment identification values produced by the segment selector.

25. The circuit of claim 22 , wherein the drop probability profile configuration of the profile register further comprises a set of segment endpoints.

26. The circuit of claim 22 , wherein the drop probability profile configuration of the profile register further comprises a segment type identifier, the segment type identifier corresponding to one of a plurality of fixed segment types defined for the circuit.

27. The circuit of claim 21 , wherein the profile matcher comprises a profile pointer register having at least one entry corresponding to each valid data packet queue identifier, the profile matcher selecting an active drop probability profile by returning a pointer associated with the data packet queue identifier.

28. The circuit of claim 27 , wherein the profile matcher further accepts a drop priority identifier, and wherein, for each valid data packet queue identifier, the profile pointer register has one entry corresponding to each valid drop priority identifier, the profile matcher selecting an active drop probability profile by returning the register entry corresponding to the data packet queue identifier and the drop priority identifier.

29. The circuit of claim 21 , further comprising:

an average queue size register to store an array of average queue size elements AQS i , one element corresponding to each valid data packet queue identifier, and to supply the array element corresponding to the data packet queue identifier to the segment selector as AQS; and

an average queue size filter to update an average queue size element AQS i with a current queue size CQS i , where both AQS i and CQS i are associated with a selected data packet queue.

30. The circuit of claim 29 , wherein the filter operates according to the equation

AQS i =AQS i +α( CQS i −AQS i ),

where 0<α<1.

31. The circuit of claim 30 , wherein α=2 −n , where n is a positive integer.

32. The circuit of claim 21 , further comprising a random number generator to generate random numbers for use by the probability comparator.

33. A packet routing device comprising:

a packet pipeline to receive and delay a packet;

a multiple-queue packet memory to receive a packet into the queue designated for that packet, when that packet reaches the end of the packet pipeline without being dropped; and

a random early detection traffic conditioning circuit to snoop queue information from the packet while the packet is in the pipeline, the circuit having the capability to select a segment-based drop probability profile corresponding to the queue information and produce a packet drop/no-drop decision based on that profile before the packet reaches the end of the pipeline.

34. The device of claim 33 , wherein the packet pipeline has the capability to maintain the current queue size for each queue in the multiple-queue packet memory, and wherein the random early detection circuit uses the current queue size from the packet pipeline to maintain an average queue size for each queue in the multiple-queue packet memory.

35. The device of claim 33 , wherein the queue information corresponds to a destination port and a traffic class for the packet.

36. The device of claim 33 , wherein the random early detection circuit accepts a drop priority for the packet, and where the selection of a drop probability profile depends on the drop priority as well as on the destination port and traffic class of the packet.

37. The device of claim 36 , further comprising a traffic monitor circuit to produce the drop priority for the packet while the packet is in the packet pipeline.

38. The device of claim 33 , wherein the random early detection circuit comprises a bank of user-configurable drop probability profiles and a user-configurable profile pointer register having at least one pointer, pointing to a drop probability profile from the bank, for each queue in the multiple-queue packet memory, the random early detection circuit using the queue information to select a profile pointer from the register, thereby selecting the drop probability profile corresponding to the queue information.

39. The device of claim 33 , further comprising multiple packet ingress interfaces, each ingress interface coupled to supply packets to the packet pipeline.

40. An apparatus comprising a computer-readable medium containing computer instructions that, when executed, cause a processor or multiple communicating processors to perform a method for random early detection of congestion in a data packet queue, the method comprising:

storing at least one configurable segment-based drop probability profile associated with the data packet queue, each segment of the profile having a drop probability associated with a range of average queue sizes;

receiving an average queue size AQS for the queue;

determining whether the average queue size AQS falls within one of N segments S i , 0≦i<N, corresponding to the drop probability profile associated with the queue; and

basing a drop/no-drop decision, for a data packet associated with the queue, on the drop probability associated with a segment S i when AQS falls within that segment.

41. The apparatus of claim 40 , wherein each data packet is assigned a drop priority from among M possible drop priorities, and wherein M drop probability profiles are associated with the queue, further comprising identifying, based on the drop priority of the data packet awaiting the drop/no-drop decision, which of the M drop probability profiles to use in determining whether the average queue size AQS falls within one of N segments S i .

42. An apparatus comprising a computer-readable medium containing computer instructions that, when executed, cause a processor or multiple communicating processors to perform a method for random early detection of congestion in multiple data packet queues sharing a common queue memory the method comprising:

maintaining a pool of drop probability profiles, the number of profiles in the pool less than the number of queues;

dynamically associating each of the data packet queues with at least one drop probability profile selected from the pool;

maintaining a queue size for each data packet queue; and

forming a drop/no-drop decision for a data packet prior to queuing that data packet in its destination data packet queue, the decision based on the destination data packet queue size and the profile associated with that queue.

Assignments (15)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053546/0001) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC IP HOLDING COMPANY LLC
Reel/Frame 071642/0001 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (045455/0001) Recorded May 20, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO ASAP SOFTWARE EXPRESS, INC.); DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC CORPORATION (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MAGINATICS LLC); EMC IP HOLDING COMPANY LLC (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MOZY, INC.); SCALEIO LLC
Reel/Frame 061753/0001 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (040136/0001) Recorded Apr 26, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO ASAP SOFTWARE EXPRESS, INC.); DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC CORPORATION (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MAGINATICS LLC); EMC IP HOLDING COMPANY LLC (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MOZY, INC.); SCALEIO LLC
Reel/Frame 061324/0001 →
RELEASE OF SECURITY INTEREST Recorded Nov 3, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL USA L.P.; DELL INTERNATIONAL, L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; WYSE TECHNOLOGY L.L.C.
Reel/Frame 058216/0001 →
MERGER Recorded Mar 4, 2021
From: FORCE10 NETWORKS, INC.
To: DELL MARKETING CORPORATION
Reel/Frame 056104/0988 →
SECURITY AGREEMENT Recorded Apr 22, 2020
From: CREDANT TECHNOLOGIES INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 053546/0001 →
SECURITY AGREEMENT Recorded Mar 21, 2019
From: CREDANT TECHNOLOGIES, INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 049452/0223 →
SECURITY AGREEMENT Recorded Sep 21, 2016
From: ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; SPANNING CLOUD APPS LLC; WYSE TECHNOLOGY L.L.C.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 040134/0001 →
SECURITY AGREEMENT Recorded Sep 21, 2016
From: ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; SPANNING CLOUD APPS LLC; WYSE TECHNOLOGY L.L.C.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 040136/0001 →
RELEASE OF SECURITY INTEREST Recorded Sep 14, 2016
From: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
To: DELL SOFTWARE INC.; FORCE10 NETWORKS, INC.; DELL MARKETING L.P.; ASAP SOFTWARE EXPRESS, INC.; APPASSURE SOFTWARE, INC.; COMPELLENT TECHNOLOGIES, INC.; CREDANT TECHNOLOGIES, INC.; DELL INC.; DELL PRODUCTS L.P.; DELL USA L.P.; PEROT SYSTEMS CORPORATION; SECUREWORKS, INC.; WYSE TECHNOLOGY L.L.C.
Reel/Frame 040040/0001 →
RELEASE OF SECURITY INTEREST Recorded Sep 14, 2016
From: BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
To: DELL MARKETING L.P.; ASAP SOFTWARE EXPRESS, INC.; APPASSURE SOFTWARE, INC.; COMPELLENT TECHNOLOGIES, INC.; CREDANT TECHNOLOGIES, INC.; DELL INC.; DELL PRODUCTS L.P.; DELL USA L.P.; DELL SOFTWARE INC.; FORCE10 NETWORKS, INC.; PEROT SYSTEMS CORPORATION; SECUREWORKS, INC.; WYSE TECHNOLOGY L.L.C.
Reel/Frame 040065/0618 →
RELEASE OF SECURITY INTEREST Recorded Sep 13, 2016
From: BANK OF AMERICA, N.A., AS ADMINISTRATIVE AGENT
To: DELL MARKETING L.P.; ASAP SOFTWARE EXPRESS, INC.; APPASSURE SOFTWARE, INC.; COMPELLANT TECHNOLOGIES, INC.; CREDANT TECHNOLOGIES, INC.; DELL INC.; DELL PRODUCTS L.P.; DELL USA L.P.; DELL SOFTWARE INC.; FORCE10 NETWORKS, INC.; PEROT SYSTEMS CORPORATION; SECUREWORKS, INC.; WYSE TECHNOLOGY L.L.C.
Reel/Frame 040065/0216 →
PATENT SECURITY AGREEMENT (NOTES) Recorded Jan 2, 2014
From: APPASSURE SOFTWARE, INC.; ASAP SOFTWARE EXPRESS, INC.; BOOMI, INC.; COMPELLENT TECHNOLOGIES, INC.; CREDANT TECHNOLOGIES, INC.; DELL INC.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL USA L.P.; FORCE10 NETWORKS, INC.; GALE TECHNOLOGIES, INC.; PEROT SYSTEMS CORPORATION; SECUREWORKS, INC.; WYSE TECHNOLOGY L.L.C.
To: BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS FIRST LIEN COLLATERAL AGENT
Reel/Frame 031897/0348 →
PATENT SECURITY AGREEMENT (ABL) Recorded Jan 2, 2014
From: DELL INC.; APPASSURE SOFTWARE, INC.; ASAP SOFTWARE EXPRESS, INC.; BOOMI, INC.; COMPELLENT TECHNOLOGIES, INC.; CREDANT TECHNOLOGIES, INC.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL USA L.P.; FORCE10 NETWORKS, INC.; GALE TECHNOLOGIES, INC.; PEROT SYSTEMS CORPORATION; SECUREWORKS, INC.; WYSE TECHNOLOGY L.L.C.
To: BANK OF AMERICA, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 031898/0001 →
PATENT SECURITY AGREEMENT (TERM LOAN) Recorded Jan 2, 2014
From: DELL INC.; APPASSURE SOFTWARE, INC.; ASAP SOFTWARE EXPRESS, INC.; BOOMI, INC.; COMPELLENT TECHNOLOGIES, INC.; CREDANT TECHNOLOGIES, INC.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL USA L.P.; FORCE10 NETWORKS, INC.; GALE TECHNOLOGIES, INC.; PEROT SYSTEMS CORPORATION; SECUREWORKS, INC.; WYSE TECHNOLOGY L.L.C.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 031899/0261 →