IP Library › Granted Patent US 11,558,298
Granted Patent B2
US 11,558,298 · App. 17/170,501 · Granted Jan 17, 2023

Congestion avoidance in a network switch device

Inventor: Zvi Shmilovici Leib (Tel Aviv, IL)
Assignee: Marvell Israel (M.I.S.L) Ltd.
H04L47/12H04L43/16H04L47/11H04L47/24H04L47/26H04L49/25H04L49/30H04L49/9084H04L47/30
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 11,558,298
App. No.
17/170,501
Granted
Jan 17, 2023
Kind
B2
Abstract

Packets received by a network switch device from upstream network devices, coupled to respective ones of a plurality of ports of the network switch device, are temporarily stored in an internal memory of the network switch device. In response to detecting congestion in the internal memory of the network switch device, a flow control engine triggers, during respective timeslots of a timing schedule and while the flow control engine continues to monitor congestion in the internal memory of the network switch device, transmission of respective flow control messages via different subsets of ports, among the plurality of ports, to control flow of packets from different subsets of upstream network device, among the plurality of upstream network devices, to the network switch device so that flow control is distributed over time among upstream network devices of the plurality of upstream network devices.

Claims (57)

1. A method for controlling congestion at a network switch device, the method comprising:

receiving packets at the network switch device from respective upstream network devices of a plurality of upstream network devices, the respective upstream network devices coupled to the network switch device via respective ones of a plurality of ports of the network switch device;

temporarily storing at least some of the received packets in an internal memory of the network switch device;

detecting, with a flow control engine of the network switch device, congestion in the internal memory of the network switch device; and

in response to detecting congestion in the internal memory of the network device, triggering, during respective timeslots of a timing schedule and while the flow control engine continues to monitor congestion in the internal memory of the network switch device, transmission of respective flow control messages via different subsets of ports, among the plurality of ports, to control flow of packets from different subsets of upstream network devices, among the plurality of upstream network devices, to the network switch device so that flow control is distributed over time among upstream network devices of the plurality of upstream network devices.

2. The method of claim 1 , wherein

detecting congestion in the internal memory comprises detecting a first congestion state in the internal memory, and

triggering transmission of flow control messages includes, in response to detecting the first congestion state in the internal memory, triggering transmission of a first flow control message via a first subset of ports among the plurality of ports without triggering transmission of the first flow control message via any port not included in the first subset of ports,

subsequently to detecting the first congestion state in the internal memory, detecting a second congestion state in the internal memory of the network switch device, and

in response to detecting the second congestion state in the internal memory, triggering transmission of a second flow control message via a second subset of ports without triggering transmission of the second flow control message via any port not included in the second subset of ports.

3. The method of claim 2 , wherein

temporarily storing at least some of the received packets in the internal memory of the network switch device includes temporarily storing, in a shared buffer disposed in the internal memory, packets received via at least the first subset of ports and the second subset of ports, and

detecting the first congestion state and the second congestion state in the internal memory comprises detecting the congestion state based on monitoring a fill level of the shared buffer disposed in the internal memory.

4. The method of claim 3 , wherein

detecting the first congestion state comprises detecting the first congestion state if the fill level of the shared buffer meets a first congestion criteria, and

detecting the second congestion state comprises detecting the second congestion state if the fill level of the shared buffer meets a second congestion criteria different from the first congestion criteria.

5. The method of claim 4 , wherein

detecting the first congestion state if the fill level of the shared buffer meets the first congestion criteria comprises detecting the first congestion state if the fill level of the shared buffer exceeds a first threshold value, and

detecting the second congestion state if the fill level of the shared buffer meets the second congestion criteria comprises detecting the second congestion state if the fill level of the shared buffer exceeds a second threshold value different from the first threshold value.

6. The method of claim 5 , further comprising, prior to detecting the first congestion state and detecting the second congestion state, generating, using a random number generator, the first threshold value and the second threshold value.

7. The method of claim 6 , wherein

generating the first threshold value comprises multiplying an average flow control response time by a first random number generated by the random number generator, wherein the average flow control response time is determined based on respective flow control response times of respective upstream network devices of the plurality of upstream network devices coupled to the network switch device, and

generating the second threshold value comprises multiplying the average flow control response time by a second random number generated by the random number generator.

8. The method of claim 3 , wherein

detecting the first congestion state comprises detecting the first congestion state if a first fill level of the shared buffer exceeds a predetermined threshold during a first timeslot, and

detecting the second congestion state comprises detecting the second congestion state if a second fill level of the shared buffer exceeds the predetermined threshold during a second timeslot different from the first timeslot.

9. The method of claim 3 , wherein detecting the first congestion state and the second congestion state comprises probabilistically determining the first congestion state and the second congesting state, wherein probability of determining the first congestion state and the second congestion state increases with increasing fill level of the shared buffer.

10. The method of claim 1 , wherein triggering transmission of respective flow control messages via different subsets of ports comprises triggering transmission of respective priority flow control (PFC) messages via the different subsets of ports to cause the different subsets of upstream network devices to temporarily suspend transmission of packets of a particular priority to the network switch device for a specified period of time.

11. A network switch device, comprising:

a plurality of ports for coupling via respective network links to respective upstream network devices of a plurality of upstream network devices;

an internal memory configured to temporarily store at least some packets received via respective ports of the plurality of ports; and

a flow control engine configured to

detect congestion in the internal memory, and

in response to detecting congestion in the internal memory, trigger, during respective timeslots of a timing schedule and while the flow control engine continues to monitor congestion in the internal memory of the network switch device, transmission of respective flow control messages via different subsets of ports, among the plurality of ports, to control flow of packets from different subsets of upstream network devices, among the plurality of upstream network devices, to the network switch device so that flow control is distributed over time among upstream network devices of the plurality of upstream network devices.

12. The network switch device of claim 11 , wherein the flow control engine is configured to:

detect a first congestion state in the internal memory,

in response to detecting the first congestion state in the internal memory, trigger transmission of a first flow control message via a first subset of ports among the plurality of ports without triggering transmission of the first flow control message via any port not included in the first subset of ports,

subsequently to detecting the first congestion state in the internal memory, detect a second congestion state in the internal memory of the network switch device, and

in response to detecting the second congestion state in the internal memory, trigger transmission of a second flow control message via a second subset of ports without triggering transmission of the second flow control message via any port not included in the second subset of ports.

13. The network switch device of claim 12 , wherein

the internal memory is configured to temporarily store, in a shared buffer, packets received via at least the first subset of ports and the second subset of ports, and

the flow control engine is configured to detect the first congestion state and the second congestion state in the internal memory based on monitoring a fill level of the shared buffer disposed in the internal memory.

14. The network switch device of claim 13 , wherein the flow control engine is configured to:

detect the first congestion state if the fill level of the shared buffer meets a first congestion criteria, and

detect the second congestion state if the fill level of the shared buffer meets a second congestion criteria different from the first congestion criteria.

15. The network switch device of claim 14 , wherein the flow control engine is configured to:

detect the first congestion state if the fill level of the shared buffer exceeds a first threshold value, and

detect the second congestion state if the fill level of the shared buffer exceeds a second threshold value different from the first threshold value.

16. The network switch device of claim 15 , wherein the flow control engine is further configured to, prior to detecting the first congestion state and detecting the second congestion state, generate, using a random number generator, the first threshold value and the second threshold value.

17. The network switch device of claim 16 , wherein the flow control engine is configured to:

generate the first threshold value at least by multiplying an average flow control response time by a first random number generated by the random number generator, wherein the average flow control response time is determined based on respective flow control response times of respective upstream network devices of the plurality of upstream network devices coupled to the network switch device, and

generate the second threshold value at least by multiplying the average flow control response time by a second random number generated by the random number generator.

18. The network switch device of claim 14 , wherein the flow control engine is configured to:

detect the first congestion state if a first fill level of the shared buffer exceeds a predetermined threshold during a first timeslot, and

detect the second congestion state if a second fill level of the shared buffer exceeds the predetermined threshold during a second timeslot different from the first timeslot.

19. The network switch device of claim 13 , wherein the flow control engine is configured to detect the first congestion state and the second congestion state at least by probabilistically determining the first congestion state and the second congesting state, wherein probability of determining the first congestion state and the second congestion state increases with increasing fill level of the shared buffer.

20. The network switch device of claim 11 , wherein the flow control engine is configured to trigger transmission of respective flow control messages via different subsets of ports at least by triggering transmission of respective priority flow control (PFC) messages via the different subsets of ports to cause the different subsets of upstream network devices to temporarily suspend transmission of packets of a particular priority to the network switch device for a specified period of time.

Continuity (3)
Continuation 16045488 · Jul 25, 2018
Provisional Application 62544401 · Aug 11, 2017
Related Publication 20210168075A1 · Jun 3, 2021
Cited By (2)
US 12,382,334 US 12,750,320