IP Library Granted Patent US 10,237,376
Granted Patent B2
US 10,237,376 · App. 15/278,143 · Granted Mar 19, 2019

Hardware-based congestion control for TCP traffic

Inventors: Diego Crupnicoff (Buenos Aires, AR); Michael Kagan (Zichron Yaakov, IL); Noam Bloch (Bat Shlomo, IL); Adi Menachem (Hod Hasharon, IL); Idan Burstein (Carmiel, IL)
Assignee: MELLANOX TECHNOLOGIES, LTD.
H04L69/16H04L47/263H04L47/33H04L47/28Y02D50/10
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,237,376
App. No.
15/278,143
Granted
Mar 19, 2019
Kind
B2
Abstract

A method for congestion control includes receiving at a destination computer a packet transmitted on a given flow, in accordance with a predefined transport protocol, through a network by a transmitting network interface controller (NIC) of a source computer, and marked by an element in the network with a forward congestion notification. Upon receiving the marked packet in a receiving NIC of the destination computer, a congestion notification packet (CNP) indicating a flow to be throttled is immediately queued for transmission from the receiving NIC through the network to the source computer. Upon receiving the CNP in the transmitting NIC, transmission of further packets on at least the flow indicated by the CNP from the transmitting NIC to the network is immediately throttled, and an indication of the given flow is passed from the transmitting NIC to a protocol processing software stack running on the source computer.

Claims (36)

1. A method for congestion control, comprising:

receiving at a destination computer a packet transmitted on a given flow, in accordance with a predefined transport protocol, through a network by a transmitting network interface controller (NIC) of a source computer, and marked by an element in the network with a forward congestion notification;

upon receiving the marked packet in a receiving NIC of the destination computer, immediately queuing a congestion notification packet (CNP) indicating a flow to be throttled, for transmission from the receiving NIC through the network to the source computer;

upon receiving the CNP in the transmitting NIC, immediately throttling transmission of further packets on at least the flow indicated by the CNP from the transmitting NIC to the network, and passing an indication of the given flow from the transmitting NIC to a protocol processing software stack running on the source computer;

reducing, by the protocol processing software stack in response to the indication, a transmission rate of the packets in the given flow; and

after initially throttling the transmission and passing the indication to the protocol processing software stack, subsequently increasing the rate of the transmission by the transmitting NIC of other flows while the protocol processing software stack continues to maintain the reduced transmission rate of the packets in the given flow.

2. The method according to claim 1 , wherein the CNP is transmitted and the transmission is throttled by the receiving and transmitting NICs without waiting for processing of the marked packet or the CNP by software processes running on CPUs of the destination and source computers.

3. The method according to claim 1 , wherein the CNP contains an indication of a severity of congestion in the network, and wherein the transmitting NIC adjusts the throttling of the transmission responsively to the indication.

4. The method according to claim 1 , wherein the predefined transport protocol comprises a Transmission Control Protocol (TCP), and wherein the given flow comprises a TCP connection.

5. The method according to claim 1 , wherein the transmitting NIC, in response to the CNP, throttles the packets that are queued with the flow indicated by the CNP, without modifying a transmission rate of the packets in other queues.

6. A method for congestion control, comprising:

receiving on a given Transmission Control Protocol (TCP) connection at a destination computer a TCP packet transmitted through a network by a transmitting network interface controller (NIC) of a source computer, and marked by an element in the network with a forward congestion notification;

upon receiving the marked TCP packet in a receiving NIC of the destination computer, immediately queuing a congestion notification packet (CNP) for transmission from the receiving NIC through the network to the source computer;

upon receiving the CNP in the transmitting NIC, immediately throttling, in the NIC, transmission of further TCP packets from the transmitting NIC to the network and passing an indication of the given TCP connection from the transmitting NIC to a TCP software stack running on the source computer;

reducing, by the TCP software stack running on the source computer, a transmission rate of the packets on the given TCP connection in response to the indication; and

after initially throttling the transmission and passing the indication to the protocol processing software stack, subsequently increasing the rate of the transmission by the transmitting NIC of other flows while the TCP software stack continues to maintain the reduced transmission rate of the packets on the given TCP connection.

7. The method according to claim 6 , wherein the CNP is transmitted and the transmission is throttled by the receiving and transmitting NICs without waiting for processing of the marked TCP packet or the CNP by software processes running on CPUs of the destination and source computers.

8. The method according to claim 6 , wherein passing the indication comprises conveying a message from the NIC to the TCP software stack that emulates a TCP congestion control messaging.

9. The method according to claim 6 , wherein the TCP software stack reduces the transmission rate of the packets on the given TCP connection in response to TCP congestion control messaging received from the destination computer.

10. A computer network system, comprising multiple host computers interconnected by a packet network and configured to serve as source computers and destination computers for transmission and reception of packet flows through the network, each host computer comprising a central processing unit (CPU) and a network interface controller (NIC), which connects the host computer to the network,

wherein upon receiving in a receiving NIC of a destination computer a packet that was transmitted through the network by a transmitting NIC of a source computer on a given flow in accordance with a predefined transport protocol and that was marked by an element in the network with a forward congestion notification, the receiving NIC immediately queues a congestion notification packet (CNP) indicating a flow to be throttled, for transmission through the network to the source computer, and

wherein upon receiving the CNP in the transmitting NIC, the transmitting NIC immediately throttles transmission of further packets on at least the flow indicated by the CNP from the transmitting NIC to the network, and passes an indication of the given flow from the transmitting NIC to a protocol processing software stack running on the source computer, and

wherein the protocol processing software stack running on the source computer causes the CPU of the source computer, in response to the indication, to reduce a transmission rate of the packets in the given flow, and

wherein after initially throttling the transmission and passing the indication to the protocol processing software stack, the transmitting NIC subsequently increases the rate of the transmission of other flows while the protocol processing software stack continues to maintain the reduced transmission rate of the packets in the given flow.

11. The system according to claim 10 , wherein the CNP is transmitted and the transmission is throttled by the receiving and transmitting NICs without waiting for processing of the marked packet or the CNP by software processes running on CPUs of the destination and source computers.

12. The system according to claim 10 , wherein the CNP contains an indication of a severity of congestion in the network, and wherein the transmitting NIC adjusts the throttling of the transmission responsively to the indication.

13. The system according to claim 10 , wherein the predefined transport protocol comprises TCP, and wherein the given flow comprises a TCP connection.

14. The system according to claim 10 , wherein the transmitting NIC, in response to the CNP, throttles the packets that are queued with the flow indicated by the CNP, without modifying a transmission rate of the packets in other queues.

15. A computer network system, comprising multiple host computers interconnected by a packet network and configured to serve as source computers and destination computers for transmission and reception of packet flows through the network, each host computer comprising a central processing unit (CPU) and a network interface controller (NIC), which connects the host computer to the network,

wherein upon receiving in a receiving NIC of a destination computer a Transmission Control Protocol (TCP) packet that was transmitted through the network by a transmitting NIC of a source computer on a given TCP connection and that was marked by an element in the network with a forward congestion notification, the receiving NIC immediately transmits a congestion notification packet (CNP) through the network to the source computer, and

wherein upon receiving the CNP in the transmitting NIC, the transmitting NIC immediately throttles transmission of further TCP packets from the transmitting NIC to the network and passes an indication of the given TCP connection to a TCP software stack running on the source computer,

wherein the TCP software stack running on the source computer causes the CPU of the source computer, in response to the indication, to reduce a transmission rate of the packets on the given TCP connection, and

wherein after initially throttling the transmission and passing the indication to the protocol processing software stack, the transmitting NIC subsequently increases the rate of the transmission of other flows while the TCP software stack continues to maintain the reduced transmission rate of the packets on the given TCP connection.

16. The system according to claim 15 , wherein the CNP is transmitted and the transmission is throttled by the receiving and transmitting NICs without waiting for processing of the marked TCP packet or the CNP by software processes running on CPUs of the destination and source computers.

17. The system according to claim 16 , wherein the indication comprises a message conveyed from the NIC to the TCP software stack that emulates a TCP congestion control messaging.

18. The system according to claim 16 , wherein the TCP software stack reduces the transmission rate of the packets on the given TCP connection in response to TCP congestion control messaging received from the destination computer.

Assignments (4)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 30, 2018
From: BURSTEIN, IDAN
To: MELLANOX TECHNOLOGIES, LTD.
Reel/Frame 046497/0267 →
RELEASE OF SECURITY INTEREST IN PATENT COLLATERAL AT REEL/FRAME NO. 42962/0859 Recorded Jul 13, 2018
From: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
To: MELLANOX TECHNOLOGIES, LTD.; MELLANOX TECHNOLOGIES TLV LTD.; MELLANOX TECHNOLOGIES SILICON PHOTONICS INC.
Reel/Frame 046551/0459 →
SECURITY INTEREST Recorded Jun 23, 2017
From: MELLANOX TECHNOLOGIES, LTD.; MELLANOX TECHNOLOGIES TLV LTD.; MELLANOX TECHNOLOGIES SILICON PHOTONICS INC.
To: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 042962/0859 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 28, 2016
From: CRUPNICOFF, DIEGO; KAGAN, MICHAEL; BLOCH, NOAM; MENACHEM, ADI
To: MELLANOX TECHNOLOGIES LTD.
Reel/Frame 039873/0887 →
Continuity (2)
Provisional Application 62234046 · Sep 29, 2015
Related Publication 20170093699A1 · Mar 30, 2017
Cited By (5)
US 12,192,122 US 12,231,343 US 12,375,404 US 12,474,833 US 12,500,840