IP Library Granted Patent US 9,866,484
Granted Patent B2
US 9,866,484 · App. 14/827,042 · Granted Jan 9, 2018

Network congestion management systems and methods

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 9,866,484
App. No.
14/827,042
Granted
Jan 9, 2018
Kind
B2
Abstract

Systems, methods and software useful for overcoming network congestion problems including head-of-line blocking issues and other network congestion problems. In certain aspects, flow control mechanisms implemented in a switch device or other network device manage buffer and system level resources using a scheduler to control the amount of data requested from a local SAN fabric. Switches and other network devices configured according to the present invention monitor each individual SCSI task, and are configured to apply flow control measures to each active session when buffering resources become scarce, such as when buffering data for a slower-speed WAN link or TCP/IP based interconnects of any speed.

Claims (52)

1. A switch device comprising:

at least one processor;

a control module executed on the at least one processor, the control module configured to:

receive a plurality of requests by the switch device from at least one initiator device, wherein each of the requests identify data to be returned to the at least one initiator device via the switch device in response to at least one destination device receiving each of the requests;

determine a forwarding rate for one or more of the requests based on a determined amount of computing resources for processing the identified data and an amount of the identified data to be returned to the at least one initiator device; and

delay, based on the forwarding rate, forwarding of the one or more requests to the at least one destination device.

2. The switch device of claim 1 , wherein the control module is further configured to perform a fair allocation operation that allocates the determined amount of computing resources for processing the identified data of the one or more requests.

3. The switch device of claim 2 , wherein the control module is further configured to perform the fair allocation operation by performing a round robin operation.

4. The switch device of claim 2 , wherein the computing resources include available buffer memory, and wherein the fair allocation operation allocates at least a portion of the available buffer memory for the identified data of the one or more requests.

5. The switch device of claim 2 , wherein the control module is further configured to perform the fair allocation operation 4 performing weighted fair queuing operation to allocate an available buffer memory for the one or more requests.

6. The switch device of claim 2 , wherein the control module is further configured to:

identify a first initiator device and a second initiator device of the at least one initiator device for at least some of the requests; and

perform the fair allocation operation by allocating the computing resources amongst the first initiator device and the second initiator device.

7. The switch device of claim 1 , wherein the control module is further configured to:

forward the one or more delayed requests to the at least one destination device;

buffer the identified data from the at least one destination device received in response to the forwarded delayed requests; and

forward the identified data to the at least one initiator device.

8. The switch device of claim 1 , wherein the one or more requests are read requests.

9. The switch device of claim 1 , wherein the control module is further configured to delay forwarding of the one or more requests based on one or more threshold values.

10. An apparatus comprising:

at least one processor;

a monitoring module executed on the at least one processor, the monitoring module configured to monitor a plurality of received requests from at least one initiator source, wherein each of the requests identify data to be returned to the at least one initiator source via the apparatus in response to at least one destination device receiving each of the requests; and

a control module executed on the at least one processor, the control module configured to:

determine a forwarding rate for one or more of the requests based on a determined amount of computing resources for processing the identified data and an amount of the identified data to be returned to the at least one initiator source; and

delay, based on the forwarding rate, forwarding of the one or more requests to the at least one destination device.

11. The apparatus of claim 10 , wherein the control module is further configured to perform a fair allocation operation that allocates the determined amount of computing resources for processing identified data of the one or more requests.

12. The apparatus of claim 11 , wherein the control module is further configured to perform the fair allocation operation by performing a round robin operation.

13. The apparatus of claim 11 , wherein the computing resources include available buffer memory, and wherein the fair allocation operation allocates at least some of the available buffer memory for the identified data of the one or more requests.

14. The apparatus of claim 11 , wherein the control module is further configured to:

identify a first initiator source and a second initiator source of the at least one initiator source for at least some of the requests; and

perform the fair allocation operation by allocating the computing resources amongst the first initiator source and the second initiator source.

15. The apparatus of claim 10 , wherein the control module is further configured to:

forward the one or more delayed requests to the at least one destination device;

buffer the identified data from the at least one destination device received in response to the forwarded delayed requests; and

forward the identified data to the at least one initiator source.

16. The apparatus of claim 15 , wherein the one or more requests are read requests.

17. One or more processor-readable storage media storing processor-readable instructions for causing at least one processor to execute at least the following:

receive a plurality of requests for a switch device from at least one initiator device, wherein each of the requests identify data to be returned to the at least one initiator device via the switch device in response to at least one destination device receiving each of the requests;

determine a forwarding rate for one or more of the requests based on a determined amount of computing resources for processing the identified data and an amount of the identified data to be returned to the at least one initiator device; and

delaying, based on the forwarding rate, forwarding of the one or more requests to the at least one destination device.

18. The one or more processor-readable storage media of claim 17 , wherein the instructions further cause the at least one processor to perform a fair allocation operation that allocates the determined amount of computing resources for processing the identified data of the one or more requests.

19. The one or more processor-readable storage media of claim 18 , wherein the computing resources include available buffer memory, and wherein the fair allocation operation allocates at least a portion of the available buffer memory for the identified data of the one or more requests.

20. The one or more processor-readable storage media of claim 17 , wherein delaying the forwarding of the one or more requests to the at least one destination device is further based on one or more threshold values.

21. The one or more processor-readable storage media of claim 17 , wherein the one or more requests are read requests.

22. One or more processor-readable storage media storing processor-readable instructions for causing at least one processor to execute at least the following:

receive a plurality of requests for a device from at least one initiator source, wherein each of the requests identify data to be returned to the at least one initiator source via the device in response to at least one destination device receiving each of the requests;

determine a forwarding rate for one or more of the requests based on a determined amount of computing resources for processing the identified data and an amount of the identified data to be returned to the at least one initiator source; and

delay, based on the forwarding rate, forwarding of the one or more requests to the at least one destination device.

23. The one or more processor-readable storage media of claim 22 , wherein the instructions further cause the at least one processor to perform a fair allocation operation that allocates the determined amount of computing resources for processing the identified data of the one or more requests.

24. The one or more processor-readable storage media of claim 23 , wherein the instructions further cause the at least one processor to:

identify a first initiator source and a second initiator source of the at least one initiator source for at least some of the requests; and

perform the fair allocation operation by allocating the computing resources amongst the first initiator source and the second initiator source.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 18, 2018
From: BROCADE COMMUNICATIONS SYSTEMS LLC
To: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
Reel/Frame 047270/0247 →
CHANGE OF NAME Recorded Dec 13, 2017
From: BROCADE COMMUNICATIONS SYSTEMS, INC.
To: BROCADE COMMUNICATIONS SYSTEMS LLC
Reel/Frame 044891/0536 →