IP Library Granted Patent US 12,445,381
Granted Patent B2
US 12,445,381 · App. 17/870,578 · Granted Oct 14, 2025

Storage aware congestion management

Inventors: Harsha Bharadwaj (Bangalore, IN); Ramesh Sivakolundu (Saratoga, CA)
Assignee: Cisco Technology, Inc.
H04L47/193G06F3/0613G06F3/0659G06F3/067H04L47/263
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 12,445,381
App. No.
17/870,578
Granted
Oct 14, 2025
Kind
B2
Abstract

A method of congestion mitigation may include determining whether a host is sending a read command or a write command to an NVMe controller, and in response to a determination that the host is sending the read command, transmitting the read command via a first transmission control protocol (TCP) connection between the host and the NVMe controller. The method may further include in response to a determination that the host is sending the write command, transmitting the write command via a second TCP connection between the host and the NVMe controller.

Claims (75)

1. A method of congestion mitigation, comprising:

determining whether a host is sending a read command or a write command to a non-volatile memory express (NVMe) controller;

in response to a determination that the host is sending the read command, transmitting the read command via a first transmission control protocol (TCP) connection between the host and the NVMe controller; and

in response to a determination that the host is sending the write command, transmitting the write command via a second TCP connection between the host and the NVMe controller.

2. The method of claim 1 , further comprising:

receiving an internet protocol (IP) header at the host in response to the write command;

determining if an IP header includes a congestion encountered (CE) bit within an explicit congestion notification (ECN), the CE bit indicating congestion in a transmit (Tx) direction from the host; and

throttling write inputs/outputs (I/Os) over the second TCP connection.

3. The method of claim 2 , further comprising

at a TCP layer of a network stack of the host, contracting a write TCP connection window size; and

continuing to send additional read commands at a first pre-instructed rate.

4. The method of claim 3 , further comprising:

determining if the congestion in a Tx direction from the host has subsided; and

in response to a determination that the congestion in the Tx direction from the host has subsided, restoring the write TCP connection window size to a pre-contracted state, processing additional write commands at a second pre-instructed rate, or combinations thereof.

5. The method of claim 1 , further comprising:

receiving an IP header at the host in response to the read command;

determining if the IP header includes a CE bit within an ECN, the CE bit indicating congestion in a receive (Rx) direction towards the host; and

throttling read I/Os over the first TCP connection.

6. The method of claim 5 , further comprising

at a TCP layer of a network stack of the host, sending instructions to the NVMe controller to contract a read TCP connection window size; and

continuing to send additional write commands at a first pre-instructed rate.

7. The method of claim 6 , further comprising:

determining if the congestion in the Rx direction toward the host has subsided; and

in response to a determination that the congestion in the Rx direction toward the host has subsided, restoring the read TCP connection window size to a pre-contracted state, processing additional read commands at a second pre-instructed rate, or combinations thereof.

8. A non-transitory computer-readable medium storing instructions that, when executed, causes a processor to perform operations, comprising:

determining whether a host is sending a read command or a write command to a non-volatile memory express (NVMe) controller;

in response to a determination that the host is sending the read command, transmitting the read command via a first transmission control protocol (TCP) connection between the host and the NVMe controller; and

in response to a determination that the host is sending the write command, transmitting the write command via a second TCP connection between the host and the NVMe controller.

9. The non-transitory computer-readable medium of claim 8 , the operations further comprising:

receiving an internet protocol (IP) header at the host in response to the write command;

determining if an IP header includes a congestion encountered (CE) bit within an explicit congestion notification (ECN), the CE bit indicating congestion in a transmit (Tx) direction from the host; and

throttling write inputs/outputs (I/Os) over the second TCP connection.

10. The non-transitory computer-readable medium of claim 9 , the operations further comprising:

at a TCP layer of a network stack of the host, contracting a write TCP connection window size; and

continuing to send additional read commands at a first pre-instructed rate.

11. The non-transitory computer-readable medium of claim 10 , the operations further comprising:

determining if the congestion in the Tx direction from the host has subsided; and

in response to a determination that the congestion in the Tx direction from the host has subsided, restoring the write TCP connection window size to a pre-contracted state, processing additional write commands at a second pre-instructed rate, or combinations thereof.

12. The non-transitory computer-readable medium of claim 8 , the operations further comprising:

receiving an IP header at the host in response to the read command;

determining if the IP header includes a CE bit within an ECN, the CE bit indicating congestion in a receive (Rx) direction towards the host; and

throttling read I/Os over the first TCP connection.

13. The non-transitory computer-readable medium of claim 12 , the operations further comprising:

at a TCP layer of a network stack of the host, sending instructions to the NVMe controller to contract a read TCP connection window size; and

continuing to send additional write commands at a first pre-instructed rate.

14. The non-transitory computer-readable medium of claim 13 , the operations further comprising:

determining if the congestion in the Rx direction toward the host has subsided; and

in response to a determination that the congestion in the Rx direction toward the host has subsided, restoring the read TCP connection window size to a pre-contracted state, processing additional read commands at a second pre-instructed rate, or combinations thereof.

15. A system comprising:

a processor; and

a non-transitory computer-readable media storing instructions that, when executed by the processor, causes the processor to perform operations comprising:

determining whether a host is sending a read command or a write command to a non-volatile memory express (NVMe) controller;

in response to a determination that the host is sending the read command, transmitting the read command via a first transmission control protocol (TCP) connection between the host and the NVMe controller;

in response to a determination that the host is sending the write command, transmitting the write command via a second TCP connection between the host and the NVMe controller;

receiving a first internet protocol (IP) header at the host in response to the write command;

determining if the first IP header includes a first congestion encountered (CE) bit within a first explicit congestion notification (ECN), the first CE bit indicating congestion in a transmit (Tx) direction from the host;

throttling write inputs/outputs (I/Os) over the second TCP connection;

receiving a second IP header at the host in response to the read command;

determining if the second IP header includes a second CE bit within a second ECN, the second CE bit indicating congestion in a receive (Rx) direction towards the host; and

throttling read I/Os over the first TCP connection.

16. The system of claim 15 , the operations further comprising:

at a TCP layer of a network stack of the host, contracting a write TCP connection window size;

continuing to send additional read commands at a first pre-instructed rate;

determining if the congestion in the Tx direction from the host has subsided; and

in response to a determination that the congestion in the Tx direction from the host has subsided, restoring the write TCP connection window size to a pre-contracted state, processing additional write commands at a second pre-instructed rate, or combinations thereof.

17. The system of claim 15 , the operations further comprising:

at a TCP layer of a network stack of the host, sending instructions to the NVMe controller to contract a read TCP connection window size;

continuing to send additional write commands at a first pre-instructed rate;

determining if the congestion in the Rx direction toward the host has subsided; and

in response to a determination that the congestion in the Rx direction toward the host has subsided, restoring the read TCP connection window size to a pre-contracted state, processing additional read commands at a second pre-instructed rate, or combinations thereof.

18. The system of claim 15 , wherein the read command and the write command are transmitted from the host to the NVMe controller via a fabric.

19. The system of claim 15 , further comprising:

a plurality of write queues, the plurality of write queues partitioning the write command from a number of additional write commands; and

a plurality of read queues, the plurality of read queues partitioning the read command from a number of additional read commands.

20. The system of claim 15 , the operations further comprising, at a block layer of a network stack, enqueuing the read command and the write command into separate QMaps.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 21, 2022
From: BHARADWAJ, HARSHA; SIVAKOLUNDU, RAMESH
To: CISCO TECHNOLOGY, INC.
Reel/Frame 060584/0702 →
Continuity (1)
Related Publication 20240031295A1 · Jan 25, 2024
References Cited (20)
US 10972370B1 · Peschka · 2021 [cited by applicant]
US 20050188109A1 · Shiga et al. · 2005 [cited by applicant]
US 20150378932A1 · Souri · 2015 [cited by examiner]
US 20170364266A1 · Xu · 2017 [cited by examiner]
US 20180095915A1 · Prabhakar et al. · 2018 [cited by applicant]
US 20190101880A1 · Guim Bernat · 2019 [cited by examiner]
US 20190386924A1 · Srinivasan et al. · 2019 [cited by applicant]
US 20200036624A1 · Michael et al. · 2020 [cited by applicant]
US 20200084150A1 · Burstein et al. · 2020 [cited by applicant]
US 20200326879A1 · Zhang et al. · 2020 [cited by applicant]
US 20200358701A1 · Su · 2020 [cited by applicant]
US 20210211347A1 · Vasseur et al. · 2021 [cited by applicant]
US 20210352138A1 · Kodavanty et al. · 2021 [cited by applicant]
US 20210365209A1 · L'Ecuyer et al. · 2021 [cited by applicant]
US 20220052905A1 · Vasseur et al. · 2022 [cited by applicant]
CN 110262754B · 2019 [cited by applicant]
Gu W., et al., “Alleviating Performance Interference Through Intra-Queue I/O Isolation for NVMe-over-Fabrics”, IFIP International Federation for Information Processing 2022, Dec. 1, 2022, Retrieved from https://link.spr… [cited by applicant]
PCT Search Report and Written Opinion mailed Oct. 19, 2023 for PCT application No. PCT/US23/28074, 12 pages. [cited by applicant]
International Preliminary Report on Patentability for International Application No. PCT/US2023/028074, Dated Jan. 30, 2025, 10 pages. [cited by applicant]
Sagi Grimberg, Bringing NVMe/TCP Up to Speed, downloaded on Jul. 21, 2022 from https://nvmexpress.org/wp-content/uploads/Bringing-NVMe-over-TCP-Up-To-Speed.pdf, 20 pages. [cited by applicant]