IP Library Granted Patent US 7,948,880
Granted Patent B2
US 7,948,880 · App. 11/260,269 · Granted May 24, 2011

Adaptive dynamic thresholding mechanism for link level flow control scheme

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 7,948,880
App. No.
11/260,269
Granted
May 24, 2011
Kind
B2
Abstract

A flow control sender includes an ingress port with one or more Class Groups (CG) defined including a shared buffer pool, a shared counter per ingress port per CG tracking an amount of the shared buffer pool utilized by each CG, an ingress port utilization counter per ingress port tracking an amount of the shared buffer pool utilized by the ingress port, and a controller computing a dynamic threshold for each CG, comparing the dynamic threshold of each CG with the ingress port utilization counter, and determining a particular CG experiencing congestion when the ingress port utilization counter is greater than the dynamic threshold for the particular CG. A flow control receiver ceases transmission of data packets to the particular CG experiencing congestion and allows transmission of the data packets corresponding to other CGs.

Claims (55)

1. A computer implemented flow control method, comprising:

receiving a data packet at a first ingress port of a network device;

incrementing a first ingress port reserve counter;

if the first ingress port reserve counter is less than a first ingress port reserve threshold, storing the received data packet in a reserved portion of a buffer, wherein the buffer is shared by a plurality of ingress ports of the network device; and

if the first ingress port reserve counter is greater than the first ingress port reserve threshold:

incrementing a first ingress port shared counter;

determining a first ingress port shared threshold; and

storing the received data packet in a shared portion of the buffer if the first ingress port shared counter is less than the first ingress port shared threshold.

2. The computer implemented flow control method of claim 1 , wherein determining the first ingress port shared threshold comprises:

determining an available amount of the shared portion of the buffer; and

multiplying the available amount of the shared portion of the buffer by a percentage amount indicating the percentage of the shared portion of the buffer that can be used to store packets received at the first ingress port.

3. The computer implemented flow control method of claim 1 , further comprising sending a pause message to a sender of data packets to the first ingress port if the first ingress port shared counter is greater than the first ingress port shared threshold.

4. The computer implemented flow control method of claim 3 , wherein the pause message includes a time value indicating an expiration time of the pause message.

5. The computer implemented flow control method of claim 3 , further comprising:

receiving an additional data packet at the first ingress port of the network device;

incrementing a first ingress port headroom counter;

storing the additional data packet in a reserved headroom portion of the buffer if the first ingress port headroom counter is less than a first ingress port headroom threshold; and

dropping the additional data packet if the first ingress port headroom counter is greater than the first ingress port headroom threshold.

6. The computer implemented flow control method of claim 3 , further comprising:

retrieving, from the shared portion of the buffer, a stored data packet that was received on the first ingress port of the network device;

decrementing the first ingress port shared counter;

determining whether the first ingress port shared counter is less than a first ingress port transmit on threshold; and

sending a pause off message to a sender of data packets to the first ingress port.

7. The computer implemented flow control method of claim 6 , further comprising determining the first ingress port transmit on threshold by multiplying the first ingress port shared threshold by a percentage.

8. A network device, comprising:

a plurality of ingress ports;

a processor; and

a memory coupled to the processor and storing instructions that when executed by the processor cause the processor to:

increment a first ingress port reserve counter when a data packet is received at a first ingress port of the network device;

store the received data packet in a reserved portion of a buffer if the first ingress port reserve counter is less than a first ingress port reserve threshold, wherein the buffer is shared by the plurality of ingress ports; and

if the first ingress port reserve counter is greater than the first ingress port reserve threshold:

increment a first ingress port shared counter;

determine a first ingress port shared threshold; and

store the received data packet in a shared portion of the buffer that is shared by the plurality of ingress ports if the first ingress port shared counter is less than the first ingress port shared threshold.

9. The network device of claim 8 , wherein the instruction stored in the memory to determine the first ingress port shared threshold further comprises instructions that when executed by the processor cause the processor to:

determine an available amount of the shared portion of the buffer; and

multiply the available amount of the shared portion of the buffer by a percentage amount indicating the percentage of the shared portion of the buffer that can be used to store packets received at the first ingress port.

10. The network device of claim 8 , wherein the memory further stores instructions that when executed by the processor cause the processor to send a pause message to a sender of data packets to the first ingress port if the first ingress port shared counter is greater than the first ingress port shared threshold.

11. The network device of claim 10 , wherein the pause message includes a time value indicating an expiration time of the pause message.

12. The network device of claim 10 , wherein the memory further stores instructions that when executed by the processor cause the processor to:

increment a first ingress port headroom counter upon receiving an additional data packet at the first ingress port of the network device;

store the additional data packet in a reserved headroom portion of the buffer if the first ingress port headroom counter is less than a first ingress port headroom threshold; and

drop the additional data packet if the first ingress port headroom counter is greater than the first ingress port headroom threshold.

13. The network device of claim 10 , wherein the memory further stores instructions that when executed by the processor cause the processor to:

retrieve, from the shared portion of the buffer, a stored data packet that was received on the first ingress port of the network device;

decrement the first ingress port shared counter;

determine whether the first ingress port shared counter is less than a first ingress port transmit on threshold; and

send a pause off message to a sender of data packets to the first ingress port.

14. The network device of claim 13 , wherein the memory further stores instructions that when executed by the processor cause the processor to determine the first ingress port transmit on threshold by multiplying the first ingress port shared threshold by a percentage.

15. A recordable non-transitory storage medium comprising instructions stored thereon that, when executed by a processor in a network device, cause the processor to: increment a first ingress port reserve counter when a data packet is received at a first ingress port of the network device; store the received data packet in a reserved portion of a buffer if the first ingress port reserve counter is less than a first ingress port reserve threshold, wherein the buffer is shared by the plurality of ingress ports; and if the first ingress port reserve counter is greater than the first ingress port reserve threshold: increment a first ingress port shared counter; determine a first ingress port shared threshold; and store the received data packet in a shared portion of the buffer that is shared by the plurality of ingress ports if the first ingress port shared counter is less than the first ingress port shared threshold.

16. The recordable non-transitory storage medium of claim 15 , wherein the instruction to determine the first ingress port shared threshold further comprises instructions that when executed by the processor cause the processor to: determine an available amount of the shared portion of the buffer; and multiply the available amount of the shared portion of the buffer by a percentage amount indicating the percentage of the shared portion of the buffer that can be used to store packets received at the first ingress port.

17. The recordable non-transitory storage medium of claim 15 , further comprising instructions stored thereon that when executed by the processor cause the processor to send a pause message to a sender of data packets to the first ingress port if the first ingress port shared counter is greater than the first ingress port shared threshold.

18. recordable non-transitory storage medium of claim 17 , wherein the pause message includes a time value indicating an expiration time of the pause message.

19. The recordable non-transitory storage medium of claim 17 , further comprising instructions stored thereon that when executed by the processor cause the processor to: increment a first ingress port headroom counter upon receiving an additional data packet at the first ingress port of the network device; store the additional data packet in a reserved headroom portion of the buffer if the first ingress port headroom counter is less than a first ingress port headroom threshold; and drop the additional data packet if the first ingress port headroom counter is greater than the first ingress port headroom threshold.

20. The recordable non-transitory storage medium of claim 17 , further comprising stores instructions stored thereon that when executed by the processor cause the processor to: retrieve, from the shared portion of the buffer, a stored data packet that was received on the first ingress port of the network device; decrement the first ingress port shared counter; determine whether the first ingress port shared counter is less than a first ingress port transmit on threshold; and send a pause off message to a sender of data packets to the first ingress port.

Assignments (6)
CORRECTIVE ASSIGNMENT TO CORRECT THE PROPERTY NUMBERS PREVIOUSLY RECORDED AT REEL: 47630 FRAME: 344. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Mar 21, 2019
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
Reel/Frame 048883/0267 →
CORRECTIVE ASSIGNMENT TO CORRECT THE EFFECTIVE DATE OF MERGER TO 9/5/2018 PREVIOUSLY RECORDED AT REEL: 047196 FRAME: 0687. ASSIGNOR(S) HEREBY CONFIRMS THE MERGER. Recorded Oct 29, 2018
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
Reel/Frame 047630/0344 →
MERGER Recorded Oct 4, 2018
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
Reel/Frame 047196/0687 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS Recorded Feb 3, 2017
From: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
To: BROADCOM CORPORATION
Reel/Frame 041712/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 1, 2017
From: BROADCOM CORPORATION
To: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
Reel/Frame 041706/0001 →
PATENT SECURITY AGREEMENT Recorded Feb 11, 2016
From: BROADCOM CORPORATION
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 037806/0001 →