IP Library › Granted Patent US 10,834,010
Granted Patent B2
US 10,834,010 · App. 16/172,659 · Granted Nov 10, 2020

Mitigating priority flow control deadlock in stretch topologies

Inventors: Saravanan Sampathkumar (San Jose, CA); Ajay K. Modi (San Jose, CA); Umamaheswararao Karyampudi (Fremont, CA); Vikas V. Patel (Livermore, CA); Gautam Venkataramanan (Dublin, CA)
Assignee: Cisco Technology, Inc.
H04L47/6205H04L47/2433H04L47/6215H04L47/6275H04L49/3018H04L49/9036
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 10,834,010
App. No.
16/172,659
Granted
Nov 10, 2020
Kind
B2
Abstract

Embodiments provide for mitigating priority flow control deadlock in stretch topologies by initializing a plurality of queues in a buffer of a leaf switch at a local cluster of a site having a plurality of clusters, wherein each queue of the plurality of queues corresponds to a respective one cluster of the plurality of clusters; receiving a pause command for no-drop traffic on the leaf switch, the pause command including an internal Class-of-Service (iCoS) identifier associated with a particular cluster of the plurality of cluster and a corresponding queue in the plurality of queues; and in response to determining, based on the iCoS identifier, that the pause command was received from a remote spine switch associated with a different cluster than the local cluster: forwarding the pause command to a local spine switch in the local cluster; and implementing the pause command on the corresponding queue in the buffer.

Claims (57)

1. A method, comprising:

initializing a plurality of queues in a buffer of a leaf switch at a local cluster of a site in a network fabric including a plurality of clusters, wherein each queue of the plurality of queues corresponds to a respective one cluster of the plurality of clusters;

receiving a pause command for no-drop traffic on the leaf switch, the pause command including an internal Class-of-Service (iCoS) identifier associated with a particular cluster of the plurality of clusters and a corresponding queue in the plurality of queues; and

in response to determining, based on the iCoS identifier, that the pause command was received from a remote spine switch associated with a different cluster than the local cluster:

forwarding the pause command to a local spine switch in the local cluster; and

implementing the pause command on the corresponding queue in the buffer.

2. The method of claim 1 , further comprising:

receiving a second pause command for no-drop traffic on the leaf switch, the second pause command including a second iCoS identifier associated with a given cluster of the plurality of clusters and a second corresponding queue in the plurality of queues; and

in response to determining, based on the second iCoS identifier, that the second pause command was received from a local spine switch associated with the local cluster: implementing the second pause command on the second corresponding queue in the buffer.

3. The method of claim 1 , wherein implementing the pause command further comprises:

caching and not transmitting data flows in the corresponding queue in the buffer for a predetermined quantum of time; and

continuing transmitting other data flows in other queues initialized in the buffer.

4. The method of claim 1 , wherein implementing the pause command further comprises:

replacing the iCoS identifier with a Class-of-Service (CoS) identifier; and

transmitting the pause command to an external device in communication with the leaf switch, including the CoS identifier.

5. The method of claim 1 , wherein the leaf switch, in response to receiving a data flow from an external device, replaces a Class-of-Service (CoS) identifier with a iCoS identifier associated with the local cluster and places the data flow into the corresponding queue in the buffer.

6. The method of claim 1 , wherein the pause command is generated by the local spine switch in response to detecting a congestion event affecting data flows held in the corresponding queue on a second leaf switch at the local cluster and is transmitted to other leaf switches in the local cluster.

7. The method of claim 1 , wherein the pause command is received by the local spine switch from an edge leaf switch in the local cluster in communication with a second spine switch in the different cluster and is transmitted to other leaf switches in the local cluster.

8. A non-transitory computer readable storage device including instructions that, where executed by a processor, enable the processor to perform an operation, the operation, comprising:

initializing a plurality of queues in a buffer of a leaf switch at a local cluster of a site in a network fabric including a plurality of clusters, wherein each queue of the plurality of queues corresponds to a respective one cluster of the plurality of clusters;

receiving a pause command for no-drop traffic on the leaf switch, the pause command including an internal Class-of-Service (iCoS) identifier associated with a particular cluster of the plurality of clusters and a corresponding queue in the plurality of queues; and

in response to determining that the iCoS identifier is associated with a different cluster than the local cluster:

forwarding the pause command to a local spine switch in the local cluster; and

implementing the pause command on the corresponding queue in the buffer.

9. The non-transitory computer readable storage device of claim 8 , wherein the operation further comprises:

receiving a second pause command for no-drop traffic on the leaf switch, the second pause command including a second iCoS identifier associated with a given cluster of the plurality of clusters and a second corresponding queue in the plurality of queues; and

in response to determining, based on the second iCoS identifier, that the second pause command was received from a local spine switch associated with the local cluster, implementing the second pause command on the second corresponding queue in the buffer.

10. The non-transitory computer readable storage device of claim 8 , wherein implementing the pause command further comprises:

caching and not transmitting data flows in the corresponding queue in the buffer for a predetermined quantum of time; and

continuing transmitting other data flows in other queues initialized in the buffer.

11. The non-transitory computer readable storage device of claim 8 , wherein implementing the pause command further comprises:

replacing the iCoS identifier with a Class-of-Service (CoS) identifier; and

transmitting the pause command to an external device in communication with the local switch, including the CoS identifier.

12. The non-transitory computer readable storage device of claim 8 , wherein the leaf switch, in response to receiving a data flow from an external device, replaces a Class-of-Service (CoS) identifier with a particular iCoS associated with the local cluster and places the data flow into the corresponding queue in the buffer.

13. The non-transitory computer readable storage device of claim 8 , wherein the pause command is generated by the local spine switch in response to detecting a congestion event affecting data flows held in the corresponding queue on a second leaf switch at the local cluster and is transmitted to other leaf switches in the local cluster.

14. The non-transitory computer readable storage device of claim 8 , wherein the pause command is received by the local spine switch from an edge leaf switch in the local cluster in communication with a second spine node in the different cluster and is transmitted to other leaf switches in the local cluster.

15. A network switch, comprising:

a processor; and

a memory, including a buffer and instructions that when executed by the processor enable the network switch to:

initialize a plurality of queues in the buffer, wherein each queue of the plurality of queues corresponds to a respective one cluster of a plurality of clusters in a site of a network fabric in which the network switch is deployed;

receive a pause command for no-drop traffic, the pause command including an internal Class-of-Service (iCoS) identifier associated with a particular cluster of the plurality of clusters and a corresponding queue in the plurality of queues;

in response to determining that the iCoS identifier is associated with a local cluster to which the network switch is deployed:

implementing the pause command on the corresponding queue in the buffer; and

in response to determining that the iCoS identifier is associated with a different cluster than the local cluster:

forwarding the pause command to a local spine switch in the local cluster; and

implementing the pause command on the corresponding queue in the buffer.

16. The network switch of claim 15 , wherein to implement the pause command, the network switch is further enabled to:

cache and not transmit data flows in the corresponding queue in the buffer for a predetermined quantum of time; and

continue to transmit other data flows cached in other queues initialized in the buffer.

17. The network switch of claim 15 , wherein to implement the pause command, the network switch is further enabled to:

replace the iCoS identifier with a Class-of-Service (CoS) identifier; and

transmit the pause command to an external device in communication with the network switch, including the CoS identifier.

18. The network switch of claim 15 , wherein, in response to receiving a data flow from an external device, the network switch is further enabled to:

replace a Class-of-Service (CoS) identifier with a iCoS associated with the local cluster; and

place the data flow into the corresponding queue in the buffer.

19. The network switch of claim 15 , wherein the pause command is generated by the local spine switch in response to detecting a congestion event affecting data flows held in the corresponding queue on a second leaf switch at the local cluster and is transmitted to other leaf switches in the local cluster.

20. The network switch of claim 15 , wherein the pause command is received by the local spine switch from an edge switch in the local cluster in communication with a second spine switch in the different cluster and is transmitted to other leaf switches in the local cluster.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 26, 2018
From: SAMPATHKUMAR, SARAVANAN; MODI, AJAY K.; KARYAMPUDI, UMAMAHESWARARAO; PATEL, VIKAS V.; VENKATARAMANAN, GAUTAM
To: CISCO TECHNOLOGY, INC.
Reel/Frame 047331/0714 →
Continuity (1)
Related Publication 20200136985A1 · Apr 30, 2020