# US 11,115,474 B2 · Data transmission and network interface controller

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 11,115,474 B2
- Document ID: US11115474B2
- Status: Granted
- Kind: B2
- Application number: 17/164,678
- Filed: 2021-02-01
- Published: 2021-05-27
- Granted: 2021-09-07
- Earliest claimed: 2019-07-11
- Assignees: Advanced New Technologies Co., Ltd.
- Applicants: Advanced New Technologies Co., Ltd.
- Inventors: Changqing Li; Yinchao Zou; Peng Wu; Jincan Kong
- Web page: https://patentgrep.com/patent/US11115474B2

## CPC

- H04L 69/329: in the application layer [OSI layer 7]
- H04L 5/0055: {Physical resource allocation for ACK/NACK (for physical mapping arrangements in ARQ protocols H04L1/1861)}
- H04L 49/901: using storage descriptor, e.g. read or write pointers
- H04L 49/9094: {Arrangements for simultaneous transmit and receive, e.g. simultaneous reading/writing from/to the storage element}
- H04L 67/1091: {Interfacing with client-server systems or between P2P systems}
- H04L 69/12: Protocol engines
- G06F 15/17331: {Distributed shared memory [DSM], e.g. remote direct memory access [RDMA]}
- H04L 67/1097: for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Implementations of this disclosure provide data transmission operations and network interface controllers. An example method performed by a first RDMA network interface controller includes obtaining m data packets from a host memory of a first host; sending the m data packets to a second RDMA network interface controller of a second host; backing up the m data packets to a network interface controller memory integrated into the first RDMA network interface controller; determining that the second RDMA network interface controller does not receive n data packets of the m data packets; and in response, obtaining the n data packets from the m data packets that have been backed up to the network interface controller memory integrated into the first RDMA network interface controller, and retransmitting the n data packets to the second RDMA network interface controller.

## Claims

### Claim 1

A computer-implemented method, comprising:
obtaining, by a first RDMA network interface controller of a first host, m data packets;
sending, by the first RDMA network interface controller, the m data packets to a second RDMA network interface controller of a second host;
backing up, by the first RDMA network interface controller, the m data packets;
determining, by the first RDMA network interface controller, that the second RDMA network interface controller does not receive n data packets of the m data packets; and
in response to determining that the second RDMA network interface controller does not receive n data packets of the m data packets
(i) obtaining, by the first RDMA network interface controller, the n data packets from the m data packets that have been backed up by the first RDMA network interface controller, and
(ii) retransmitting, by the first RDMA network interface controller, the n data packets that have been obtained by the first RDMA network interface controller from the m data packets that have been backed up by the first RDMA network interface controller, to the second RDMA network interface controller.

### Claim 2 (depends on 1)

The computer-implemented method of claim 1, wherein obtaining the m data packets comprises obtaining, by the first RDMA network interface controller of the first host, m data packets from a host memory of the first host, using a peripheral component interconnect express to access data on the host memory.

### Claim 3 (depends on 2)

The computer-implemented method of claim 2, wherein the m data packets have been stored in the host memory of the first host by a top-layer application, wherein obtaining the m data packets is performed in response to receiving, by the first RDMA network interface controller, instructions describing the m data packets to be sent.

### Claim 4 (depends on 1)

The computer-implemented method of claim 1, wherein backing up the m data packets comprises backing up, by the first RDMA network interface controller, the m data packets to a network interface controller memory integrated into the first RDMA network interface controller.

### Claim 5 (depends on 4)

The computer-implemented method of claim 4, wherein the network interface controller memory integrated into the first RDMA network interface controller is a dynamic random access memory.

### Claim 6 (depends on 4)

The computer-implemented method of claim 4, further comprising:
in response to determining, by the first RDMA network interface controller, that the second RDMA network interface controller has received the m data packets, including the n data packets that have been retransmitted by the first RDMA network interface controller, deleting the m data packets from the network interface controller memory.

### Claim 7 (depends on 1)

The computer-implemented method of claim 1, wherein determining that the second RDMA network interface controller does not receive n data packets of the m data packets comprises determining that an acknowledgement (ACK) response for the n data packets has not been received from the second RDMA network interface controller within a predetermined duration.

### Claim 8 (depends on 7)

The computer-implemented method of claim 7, wherein determining that the acknowledgement (ACK) response for the n data packets has not been received from the second RDMA network interface controller within the predetermined duration comprises, for each data packet of the m data packets, starting a corresponding timer for the data packet after sending the data packet.

### Claim 9 (depends on 1)

The computer-implemented method of claim 1, wherein determining that the second RDMA network interface controller does not receive n data packets of the m data packets comprises determining that a negative acknowledgement (NACK) response for the n data packets has been received from the second RDMA network interface controller.

### Claim 10

A computer-implemented system, comprising:
one or more computers; and
one or more computer memory devices interoperably coupled with the one or more computers and having tangible, non-transitory, machine-readable media storing one or more instructions that, when executed by the one or more computers, perform one or more operations comprising:
obtaining, by a first RDMA network interface controller of a first host, m data packets;
sending, by the first RDMA network interface controller, the m data packets to a second RDMA network interface controller of a second host;
backing up, by the first RDMA network interface controller, the m data packets;
determining, by the first RDMA network interface controller, that the second RDMA network interface controller does not receive n data packets of the m data packets; and
in response to determining that the second RDMA network interface controller does not receive n data packets of the m data packets
(i) obtaining, by the first RDMA network interface controller, the n data packets from the m data packets that have been backed up by the first RDMA network interface controller, and
(ii) retransmitting, by the first RDMA network interface controller, the n data packets that have been obtained by the first RDMA network interface controller from the m data packets that have been backed up by the first RDMA network interface controller, to the second RDMA network interface controller.

### Claim 11 (depends on 10)

The computer-implemented system of claim 10, wherein obtaining the m data packets comprises obtaining, by the first RDMA network interface controller of the first host, m data packets from a host memory of the first host, using a peripheral component interconnect express to access data on the host memory.

### Claim 12 (depends on 11)

The computer-implemented system of claim 11, wherein them data packets have been stored in the host memory of the first host by a top-layer application, wherein obtaining the m data packets is performed in response to receiving, by the first RDMA network interface controller, instructions describing the m data packets to be sent.

### Claim 13 (depends on 10)

The computer-implemented system of claim 10, wherein backing up the m data packets comprises backing up, by the first RDMA network interface controller, the m data packets to a network interface controller memory integrated into the first RDMA network interface controller.

### Claim 14 (depends on 13)

The computer-implemented system of claim 13, wherein the network interface controller memory integrated into the first RDMA network interface controller is a dynamic random access memory.

### Claim 15 (depends on 13)

The computer-implemented system of claim 13, the operations further comprising:
in response to determining, by the first RDMA network interface controller, that the second RDMA network interface controller has received the m data packets, including the n data packets that have been retransmitted by the first RDMA network interface controller, deleting the m data packets from the network interface controller memory.

### Claim 16 (depends on 10)

The computer-implemented system of claim 10, wherein determining that the second RDMA network interface controller does not receive n data packets of the m data packets comprises determining that an acknowledgement (ACK) response for the n data packets has not been received from the second RDMA network interface controller within a predetermined duration.

### Claim 17 (depends on 16)

The computer-implemented system of claim 16, wherein determining that the acknowledgement (ACK) response for the n data packets has not been received from the second RDMA network interface controller within the predetermined duration comprises, for each data packet of the m data packets, starting a corresponding timer for the data packet after sending the data packet.

### Claim 18 (depends on 10)

The computer-implemented system of claim 10, wherein determining that the second RDMA network interface controller does not receive n data packets of the m data packets comprises determining that a negative acknowledgement (NACK) response for the n data packets has been received from the second RDMA network interface controller.

### Claim 19

A non-transitory, computer-readable medium storing one or more instructions executable by a computer system to perform operations comprising:
obtaining, by a first RDMA network interface controller of a first host, m data packets;
sending, by the first RDMA network interface controller, the m data packets to a second RDMA network interface controller of a second host;
backing up, by the first RDMA network interface controller, the m data packets;
determining, by the first RDMA network interface controller, that the second RDMA network interface controller does not receive n data packets of the m data packets; and
in response to determining that the second RDMA network interface controller does not receive n data packets of the m data packets
(i) obtaining, by the first RDMA network interface controller, the n data packets from the m data packets that have been backed up by the first RDMA network interface controller, and
(ii) retransmitting, by the first RDMA network interface controller, the n data packets that have been obtained by the first RDMA network interface controller from the m data packets that have been backed up by the first RDMA network interface controller, to the second RDMA network interface controller.
