Patent Description:
Priority-based flow control (priority-based flow control, PFC) is a flow control mechanism for enhancing a conventional Ethernet flow control mechanism, avoiding a packet loss, and increasing a network throughput. A PFC flow control mechanism can effectively reduce a network packet loss rate, but may cause problems such as PFC congestion spreading, a PFC deadlock, a PFC storm, and a PFC transmission distance limitation, thereby reducing network transmission reliability.

A remote direct memory access (remote direct memory access, RDMA) protocol is a protocol by using which data is directly transmitted from a system to a memory of another system by using a network without intervention of an operating system. In the RDMA protocol, to-be-transmitted data is encapsulated into one or more RDMA packets, and the one or more RDMA packets are sent from a transmit end to a receive end. The receive end buffers the received RDMA packet into a buffer. When the receive end successfully receives all RDMA packets of the to-be-transmitted data, the receive end writes buffered data in the buffer into a memory of the receive end.

According to the RDMA protocol, a Go-Back-N retransmission mechanism is used to retransmit a lost packet. The Go-Back-N retransmission mechanism is a retransmission mechanism in which network transmission efficiency is greatly decreased even though a packet loss rate is very low. Therefore, the RDMA protocol is very sensitive to the packet loss rate. The RDMA protocol is generated to resolve a problem of a delay of data transmission between server sides during network communications. Because there is almost no packet loss during the data transmission between the server sides during the network communications, and the packet loss rate during the data transmission is very low, the RDMA protocol is used to effectively resolve the problem of the delay of the transmission between the server sides during the network communications.

The RDMA protocol can run on a plurality of data link layer protocols such as the Ethernet. With development of the RDMA protocol, the RDMA protocol is gradually applied to the Ethernet. In this case, the problem that the RDMA protocol is sensitive to the packet loss rate gradually emerges. When the RDMA protocol is applied to the Ethernet for data transmission, a network device in the Ethernet needs to enable the PFC flow control mechanism, to reduce impact of the network packet loss on the network transmission efficiency. However, with the PFC flow control mechanism is enabled, the network transmission reliability is reduced accordingly.

<CIT> discloses a method for communication, which includes receiving at a receiving node over a network from a sending node a succession of data packets belonging to a sequence of transactions, including at least one or more first packets belonging to a first transaction and one or more second packets belonging to a second transaction executed by the sending node after the first transaction, wherein at least one of the second packets is received at the receiving node before at least one of the first packets. At the receiving node, upon receipt of the data packets, data are written from the data packets in the succession to respective locations in a buffer. Execution of the second transaction at the receiving node is delayed until all of the first packets have been received and the first transaction has been executed at the receiving node.

<CIT> discloses one or more remote nodes with direct access to persistent random access memory (PRAM). In an embodiment, registration information is generated for a remote direct access enabled network interface controller (RNIC). The registration information associates an access key with a target region in PRAM. The access key is sent to a remote node of the one or more nodes. The RNIC may subsequently receive a remote direct memory access (RDMA) message from the remote node that includes the access key. In response to the RDMA message, the RNIC performs a direct memory access within the target region of PRAM.

XP <NUM> discloses MELO, and efficient selective retransmission mechanism for hardware-based transport, which consumes only a constant small memory regardless of the number of concurrent connections.

The object of the present invention is to provide a data transmission method and a first device, to reduce impact of a network packet loss on network transmission efficiency and improve network transmission reliability. This object is solved by a data transmission method of claim <NUM> and a first device according to claim <NUM>. Further advantageous embodiments and improvements of the present invention are listed in the dependent claims. Aspects which contribute to the understanding of the invention are listed hereinafter. However, it should be noted that the invention is defined by the attached claims and any examples and embodiments not covered by these claims are also understood as aspects contributing to the understanding of the invention.

According to a first aspect, this disclosure provides a data transmission method, including:.

With reference to the first aspect of this disclosure, in a first possible implementation of the first aspect of this application, after the receiving, by the first device, B RDMA packets from A RDMA packets sequentially sent by the second device according to a PSN sequence of the A RDMA packets, the method further includes:
determining, by the first device, a reception status of each bit in a bitmap table of the first device based on a reception situation of the A RDMA packets, where the reception status is a reception success state or a reception failure state, and the PSN of each of the A RDMA packets is corresponding to one bit in the bitmap table of the first device.

With reference to the first aspect of this disclosure or the first possible implementation of the first aspect of this disclosure, in a second possible implementation of the second aspect of this application, after the receiving, by the first device, B RDMA packets from A RDMA packets sequentially sent by the second device according to a PSN sequence of the A RDMA packets, the method further includes:.

With reference to the second possible implementation of the first aspect of this disclosure, in a third possible implementation of the first aspect of this application, the retransmission PSN is indicated by using an ACK extended transport header field in a negative acknowledgment packet defined in the RDMA protocol.

According to a second aspect, this disclosure provides a network device configured to perform the data transmission method according to the first aspect.

This application provides a data transmission method and a first device, to reduce impact of a network packet loss on network transmission efficiency and improve network transmission reliability. The following clearly and completely describes the technical solutions in this application with reference to the accompanying drawings in this application. Apparently, the described embodiments are merely some embodiments rather than all of the embodiments in this application.

In this specification, claims, and accompanying drawings of this application, the terms "first", "second", "third", "fourth", and the like (if existent) are intended to distinguish between similar objects but do not necessarily indicate a specific order or sequence. It should be understood that data used in such a way is interchangeable in proper a circumstance so that the embodiments described herein can be implemented in other orders than the order illustrated or described herein. In addition, the terms "include", "have", and any other variants mean to cover non-exclusive inclusion, for example, a process, method, system, product, or device that includes a list of steps or units is not necessarily limited to those expressly listed steps or units, but may include other steps or units that are not expressly listed or inherent to such a process, method, product, or device.

The data transmission method in the embodiments of this application is mainly applicable to an RDMA transmission application scenario, and is particularly applicable to some network transmission scenarios in which a packet loss rate is comparatively high and a network transmission scenario in which network transmission reliability is reduced because a PFC flow control mechanism is enabled, such as a scenario in which an RDMA protocol is converged into the conventional Ethernet for data transmission. According to the data transmission method in the embodiments of this application, a data transmission problem in the foregoing application scenario can be effectively resolved, thereby increasing network transmission efficiency and improving network transmission reliability.

When an application program initiates an RDMA read/write request, a system does not perform a data replication action. This reduces times of context switching between kernel space and user space during network communications processing. In a condition that no kernel memory is required to participate, an RDMA request is sent to a local network adapter from an application program running in user space, and then is transmitted to a remote adapter by using a network. An operating system does not need to participate in RDMA transmission, so that system load is not increased. <FIG> is a system framework diagram of a data transmission method according to an embodiment of this application. The figure shows a transmission scenario of RDMA transmission: A first application program reads data from a memory to generate an RDMA packet, and sends, to a local network adapter, the RDMA packet after being buffered, and then transmits the RDMA packet to a remote network adapter by using a network. The remote network adapter buffers the received RDMA packet, and a second application program reads data from a buffer and writes the data into a memory. Similarly, a process in which the first application program reads the data in the memory of the second application program is similar to the foregoing description of the write process. In addition, the network adapter includes a host channel adapter (host channel adapter, HCA).

To facilitate understanding of the data transmission method in the embodiments of this application, the following describes the data transmission method in the embodiments of this application in detail from two aspects: data write and data read. Details are as follows.

<FIG> is a schematic diagram of an embodiment of a data transmission method according to a non-claimed embodiment of this application.

As shown in <FIG>, an embodiment of a data transmission method according to an embodiment of this application includes the following steps.

A first device encapsulates first target data into N RDMA packets according to an RDMA protocol, to obtain N RDMA packets.

The first target data is data that needs to be written by the first device into a memory of a second device, each of the N RDMA packets has a corresponding packet sequence number (packet sequence number, PSN), and N is a positive integer greater than or equal to <NUM>. Each of the N RDMA packets carries a first data write address corresponding to the packet data. Therefore, the device may directly obtain, from each RDMA packet, the first data write address corresponding to the packet data.

The first data write address is a type of addresses, and specific values of the addresses are different. Data write addresses corresponding to different values are substantially corresponding to different storage space. Each RDMA packet carries a value of the first data write address, to indicate different first data write addresses. Similarly, a second data address described in the following is similar to the first data address described herein. Details are not described in the following.

The memory may be memory space of an application program in the second device, and the first target data may be data stored in memory space of an application program in the first device.

The N RDMA packets may be specifically an RDMA write packet, and the RDMA write packet includes the following three types: an RDMA write first packet, an RDMA write middle packet, and an RDMA write last packet. An RDMA extended transport header (RDMA extended transport header, RETH) is a field in an RDMA packet format, and the field carries a destination address of the packet data. A base transport header (base transport header, BTH) is a field in the RDMA packet format, and includes a PSN. In an existing remote direct memory access write (RDMA write) packet, a remote direct memory access write first packet (RDMA write First) has both a BTH field and a RETH field. Therefore, the RDMA write first packet includes a PSN and a first data write address. However, a remote direct memory access write middle packet (RDMA write Middle) and a remote direct memory access write last packet (RDMA write Last) each have only a BTH field. Based on the foregoing packet format, in the data transmission method in this application, the RETH field is added to the RDMA write middle packet and the RDMA write last packet (as shown by gray parts in <FIG>), so that each of the N RDMA packets carries the first data write address. <FIG> are a schematic diagram of an extended structure of a remote direct memory access write packet according to an embodiment of this application. <FIG> shows a frame structure of a non-extended RDMA packet. <FIG> shows a frame structure of an extended RDMA packet, and gray parts in <FIG> show newly added RDMA extended transport headers. Further, <FIG> is a schematic diagram of an embodiment of an RDMA extended transport header according to an embodiment of this application. <NUM> bits are used as an example in <FIG>. It should be noted that a frame structure of another part of the packet in <FIG> is similar to a packet structure in the existing RDMA protocol.

Each of the three types of RDMA write packets, namely, the RDMA write first packet, RDMA write middle packet, and RDMA write last packet in this application carries the RETH field, and therefore, when receiving any one of the N RDMA packets, a receiving device may directly obtain the first data write address corresponding to the packet data, so that the packet data can be directly written into memory space of the application program without being buffered in a buffer.

A maximum transmission unit (maximum transmission unit, MTU) is a maximum data packet size that can be transmitted in each RDMA transmission in the RDMA protocol, and a quantity N of the RDMA packets may be determined based on a data volume and an MTU of the first target data.

The first device sequentially sends the N RDMA packets to the second device according to a PSN sequence of the N RDMA packets.

For example, five RDMA packets are obtained based on step <NUM>. A first RDMA packet is an RDMA write first packet, and a PSN of the first RDMA packet is equal to <NUM>. A fifth packet is an RDMA write last packet, and a PSN of the fifth packet is equal to <NUM>. Remaining three packets are RDMA write middle packets, and PSNs of the remaining three packets are respectively <NUM>, <NUM>, and <NUM>. The first device sequentially sends the five RDMA packets to the second device according to a PSN sequence.

The second device determines a reception status of each bit in a bitmap table based on a reception situation of the N RDMA packets.

For each RDMA transmission, a one-to-one mapping relationship is established between the N RDMA packets and the bitmap table by using PSNs, and one PSN is corresponding to one bit. The reception status includes a reception success state or a reception failure state. For example, if a bit is <NUM>, it indicates that a packet fails to be received; and if a bit is <NUM>, it indicates that a packet is successfully received.

The second device may specifically determine the reception status of each bit in the bitmap table based on the PSN obtained from the BTH field in the RDMA write packet.

When one or more RDMA packets fail to be received, the second device generates a first retransmission indication packet.

When one or more RDMA packets in the N packets fail to be received, the second device determines a PSN corresponding to a bit whose reception status is a reception failure state in the bitmap table as a first retransmission PSN. Then, the second device generates the first retransmission indication packet based on the first retransmission PSN, where the first retransmission indication packet is a selective indication packet, used to instruct the first device to transmit only one or more packets that are not successfully received. For example, if a packet whose PSN is equal to <NUM> and a packet whose PSN is equal to <NUM> fail to be received, the first retransmission indication packet is used to instruct the first device to transmit only two packets whose PSNs are respectively equal to <NUM> and <NUM>, and there is no need to perform transmission starting from the packet whose PSN is equal to <NUM> to all subsequent packets.

In the RDMA protocol, a negative acknowledgment (negative acknowledgment, NACK) packet is used to instruct a transmit end to retransmit all packets starting from a specific lost packet. The transmit end cannot retransmit only the lost packet. Therefore, in the data transmission method in this application, a selective retransmission indication packet is newly defined by reusing an original NACK packet format: the NACK packet in the RDMA protocol includes an ACK extended transport header (acknowledgment extended transport header, AETH) field, and a definition (as shown in <FIG>) of the selective retransmission indication packet is newly added to the AETH field, so that the NACK packet may instruct the first device to retransmit only an RDMA packet that fails to be received.

<FIG> is a schematic diagram of a frame structure of an ACK extended transport header according to an embodiment of this application. As shown in <FIG>, the ACK extended transport header has <NUM> bits in total, where a <NUM>th bit to a <NUM>th bit indicate an acknowledgment indication field, a range of the acknowledgment indication (syndrome) field indicates information corresponding to an acknowledgment (ACK) or a negative acknowledgment (NACK), a <NUM>th bit to a <NUM>th bit indicate a message sequence number field, and the message sequence number (message sequence number, MSN) field indicates a sequence number corresponding to a message that has been transmitted in an acknowledgment response. Further, as described above, in this embodiment of this application, the selective retransmission indication is newly added to the ACK extended transport header (AETH) field. Specifically, <FIG> is a schematic diagram of an embodiment of a syndrome field in an ACK extended transport header according to an embodiment of this application. Compared with an existing syndrome field, gray parts in <FIG> indicates a newly added selective retransmission indication, in other words, bits (a <NUM>th bit to a <NUM>th bit) are in a (<NUM><NUM><NUM>) state. Optionally, the selective retransmission indication may specifically indicate a quantity of retransmission packets and a sequence number of a start retransmission packet. In addition to the foregoing (<NUM><NUM><NUM>) state that is a newly added indication state, four other states (<NUM>, <NUM>, <NUM>, <NUM>) are existing states. Details are not described in this application.

The second device sends the first retransmission indication packet to the first device.

The second device sends the first retransmission indication packet to the first device, where the first retransmission indication packet carries the first retransmission PSN, and the first retransmission PSN is a PSN of an RDMA packet that fails to be received by the second device.

The first device determines a first retransmission packet based on the first retransmission indication packet.

First, the first device parses the first retransmission indication packet sent by the second device, to obtain the first retransmission PSN. Then, the first device determines, based on the first retransmission PSN, an RDMA packet that needs to be retransmitted in the N RDMA packets, to obtain the first retransmission packet.

The first device sends the first retransmission packet to the second device.

The first device sends the first retransmission packet to the second device, where the first retransmission packet includes only the RDMA packet that fails to be received by the second device.

In this embodiment, each RDMA packet carries a first data write address. After receiving the RDMA packet, the receive end can directly obtain the first data write address corresponding to the packet data, so that the receive end can store the packet data of each packet without buffering the packet data. This saves buffer space, and a lost packet does not affect learning of a data write address of a successfully received packet by the receive end, so that RDMA data transmission is insensitive to a network packet loss rate, thereby increasing network transmission efficiency and a network throughput.

In a retransmission process, the receive end may instruct the transmit end to retransmit only lost data, so that the transmit end does not transmit another successfully received packet when retransmitting a lost packet. This can save a network transmission resource and increase network transmission efficiency.

<FIG> is a schematic diagram of another embodiment of a data transmission method according to an embodiment of this application.

As shown in <FIG>, another embodiment of a data transmission method according to an embodiment of this application includes the following steps.

A first device sends a data read request to a second device.

The data read request is generated by the first device according to an RDMA protocol, and the data read request includes a data read address and a second data write address. The data read address is a destination address of second target data that is stored in the second device and that needs to be read by the first device, and the second data write address is a destination address used to store the second target data after the first device reads the second target data in the second device.

The data read request may be specifically an RDMA read request in the RDMA protocol. Currently, a RETH field in the RDMA read request in the RDMA protocol includes the data read address, but does not include the second data write address. In this application, an RDMA read request packet format is redesigned (as shown in <FIG>), and a RETH <NUM> field of a second RDMA extended transport header (the RETH <NUM> is used for a read operation, a format may be referred to that of the RETH, and the number <NUM> is used to differ from the RETH) is added to the RDMA read request packet, where the RETH <NUM> field carries information about the second data write address (for example, the RETH <NUM> field carries the information about the second data write address by using a virtual address field in <FIG>).

<FIG> is a schematic diagram of a frame structure of an RDMA read request and a frame structure of an RDMA read response packet according to an embodiment of this application. As shown in gray parts in <FIG>, a RETH <NUM> field is added to both the RDMA read request and the RDMA read response packet. A RETH field is a field used to indicate a memory address in the RDMA protocol. In other words, a RETH <NUM> field is newly added to indicate the second data write address. The second data write address is a type of addresses, and specific values of the addresses may be different. A description of the RETH <NUM> field in <FIG> is similar to the description in <FIG>. For a related description, refer to the description in <FIG>. Optionally, the RDMA read response packet may be specifically an RDMA read respond packet. The RDMA read respond packet may be classified into three types based on a packet location: an RDMA read respond first packet, an RDMA read respond middle packet, and an RDMA read respond last packet.

The second device reads the second target data from a memory based on the data read request packet, and encapsulates the second target data into A RDMA packets, to obtain the A RDMA packets.

First, the second device reads the second target data from storage space corresponding to the data read address in the data read request packet. Then, the second device encapsulates the second target data into the A RDMA packets, so that each of the A RDMA packets includes the second data write address corresponding to packet data. Each of the A RDMA packets includes a PSN, and A is a positive integer greater than or equal to <NUM>.

The A RDMA packets specifically include three types of packets: an RDMA read respond first packet, an RDMA read respond middle packet, and an RDMA read respond last packet. However, the foregoing three packets in the current RDMA do not include the second data write address corresponding to the packet data. Therefore, the foregoing three types of packets are redesigned in this application, a RETH <NUM> field is added to each of the three types of packets: the RDMA read respond first packet, the RDMA read respond middle packet, and the RDMA read respond last packet, so that the newly added RETH field carries the second data write address corresponding to the packet data. The RDMA read respond packet redesigned in this application is shown in <FIG>.

Other related descriptions of step <NUM> are similar to the descriptions in step <NUM>.

The second device sequentially sends the A RDMA packets to the first device according to a PSN sequence of the A RDMA packets.

For example, five RDMA packets are obtained based on step <NUM>. A first RDMA packet is an RDMA read respond first packet, and a PSN of the first RDMA packet is equal to <NUM>. A fifth packet is an RDMA read respond last packet, and a PSN of the fifth packet is equal to <NUM>. Remaining three packets are RDMA read respond middle packets, and PSNs of the remaining three packets are respectively <NUM>, <NUM>, and <NUM>. The second device sequentially sends the five RDMA packets to the first device according to a PSN sequence.

The first device determines a reception status of each bit in a bitmap table based on a reception situation of the A RDMA packets.

Step <NUM> is similar to the foregoing step <NUM>, and details are not described herein. A difference lies in that the bitmap table is maintained by the first device end.

When one or more RDMA packets fail to be received, the first device generates a second retransmission indication packet.

When one or more RDMA packets in the A packets fail to be received, the first device determines a PSN corresponding to a bit whose reception status is a reception failure state in the bitmap table as a second retransmission PSN. Then, the first device generates the second retransmission indication packet based on the second retransmission PSN, where the second retransmission indication packet is a selective indication packet, used to instruct the second device to transmit only one or more packets that are not successfully received. For example, if a packet whose PSN is equal to <NUM> and a packet whose PSN is equal to <NUM> fail to be received, the second retransmission indication packet is used to instruct the second device to transmit only two packets whose PSNs are respectively equal to <NUM> and <NUM>, and there is no need to perform transmission starting from the packet whose PSN is equal to <NUM> to all subsequent packets.

A definition and a related description about a selective retransmission indication packet in this step are similar to the description in the foregoing step <NUM>.

The first device sends the second retransmission indication packet to the second device.

The first device sends the second retransmission indication packet to the second device, where the second retransmission indication packet carries the second retransmission PSN, and the second retransmission PSN is a PSN of an RDMA packet that fails to be received by the first device.

The second device determines a second retransmission packet based on the second retransmission indication packet.

First, the second device parses the second retransmission indication packet sent by the first device, to obtain the second retransmission PSN. Then, the second device determines, based on the second retransmission PSN, an RDMA packet that needs to be retransmitted in the A RDMA packets, to obtain the second retransmission packet.

The second device sends the second retransmission packet to the first device.

The second device sends the second retransmission packet to the first device, where the second retransmission packet includes only the RDMA packet that fails to be received by the first device.

In this embodiment, beneficial effects corresponding to the data read method are similar to beneficial effects of the data write method.

<FIG> shows an embodiment of a first device <NUM> according to a non-claimed embodiment of this application. The first device <NUM> includes:.

In an example, as shown in <FIG>, a first device <NUM> further includes:.

In an example, any one of a second RDMA packet to an Nth RDMA packet that are corresponding to the N RDMA packets carries an RDMA extended transport header, and the RDMA extended transport header is used to indicate the first data write address.

<FIG> shows an embodiment of a first device <NUM> according to an embodiment of this application. The first device <NUM> includes:.

In an example, as shown in <FIG>, a network device <NUM> further includes:
a determining module <NUM>, configured to determine a reception status of each bit in a bitmap table of the first device based on a reception situation of the A RDMA packets, where the reception status is a reception success state or a reception failure state, and the PSN of each of the A RDMA packets is corresponding to one bit in the bitmap table of the first device.

In another example, the determining module <NUM> is further configured to:.

In an example, the retransmission PSN is indicated by using an ACK extended transport header field in a negative acknowledgment packet defined in the RDMA protocol.

In an example, the data read request carries a second RDMA extended transport header field, and the second RDMA extended transport header field is used to indicate the second data write address.

For other related descriptions and beneficial effects in this embodiment, refer to the descriptions of the first device in the embodiments corresponding to <FIG> and <FIG>.

<FIG> is a schematic diagram of a hardware structure of a first device according to a non-claimed embodiment of this application. The first device includes: a receiver <NUM>, a transmitter <NUM>, a processor <NUM>, a memory <NUM>, and a bus <NUM>.

The memory <NUM> may include a read-only memory and a random access memory, and provide an instruction and data to the processor <NUM>. A part of the memory <NUM> may further include a non-volatile random access memory (non-volatile random access memory, NVRAM).

The memory <NUM> stores the following elements: an executable module or a data structure, a subset thereof, or an extended set thereof.

Operation instructions include various operation instructions and used to implement various operations.

Operating systems include various system programs and used to implement various basic services and process a hardware-based task.

The processor <NUM> in this embodiment of this application may be configured to perform operations corresponding to the first device in the embodiment corresponding to <FIG>, and the operations may include the following operations: encapsulating first target data into N RDMA packets according to a remote direct memory access RDMA protocol, where the first target data is data that needs to be written by the first device into a second device for storage, any one of the N RDMA packets carries a packet sequence number PSN, and N is a positive integer greater than or equal to <NUM>;
sequentially sending the N RDMA packets to the second device according to a PSN sequence of the N RDMA packets, where each of the N RDMA packets carries a first data write address, and the first data write address is an address for writing data in each of the N RDMA packets into the second device, so that the second device directly obtains the first data write address in each RDMA packet from the RDMA packet, and writes the target data into storage space corresponding to the first data write address.

The processor <NUM> is further configured to perform other related operations in the embodiment corresponding to <FIG>. For a detailed description, refer to the description in the embodiment corresponding to <FIG>.

In addition, the processor <NUM> may be configured to perform operations corresponding to the first device in the embodiment corresponding to <FIG>, and the operations may include the following operations: sending a data read request to a second device, where the data read request is generated according to a remote direct memory access RDMA protocol, and carries a data read address and a second data write address, the data read address is a destination address of second target data stored in the second device, the second data write address is a destination address that is reserved in the first device and that is used to store the second target data read from the second device, and the second target data is data that needs to be read by the first device from the second device;.

The processor <NUM> controls an operation of the first device, and the processor <NUM> may also be referred to as a central processing unit (central processing unit, CPU). The memory <NUM> may include a read-only memory and a random access memory, and provide an instruction and data to the processor <NUM>. A part of the memory <NUM> may further include an NVRAM. In specific application, components of the first device are coupled together by using a bus system <NUM>, where the bus system <NUM> may further include a power bus, a control bus, a state signal bus, and the like in addition to a data bus. However, for clarity of description, various buses are marked as the bus system <NUM> in the figure.

The methods disclosed in the foregoing embodiments of this application may be applied to the processor <NUM>, or may be implemented by the processor <NUM>. The processor <NUM> may be an integrated circuit chip and has a signal processing capability. In an implementation process, the steps in the foregoing methods may be accomplished by using a hardware integrated logic circuit in the processor <NUM>, or by using instructions in a form of software. The processor <NUM> may be a general-purpose processor, a digital signal processor (digital signal processing, DSP), an application-specific integrated circuit (application specific integrated circuit, ASIC), a field programmable gate array (field-programmable gate array, FPGA) or another programmable logic device, a discrete gate or a transistor logic device, or a discrete hardware component. The processor may implement or perform the methods, the steps, and the logical block diagrams that are disclosed in the embodiments of this application. The general-purpose processor may be a microprocessor, or the processor may be any conventional processor, or the like. The steps of the methods disclosed with reference to the embodiments of this application may be directly executed and accomplished by a hardware decoding processor, or executed and accomplished by using a combination of hardware and a software module in a decoding processor. The software module may be located in a mature storage medium in the art, such as a random access memory, a flash memory, a read-only memory, a programmable read-only memory, an electrically erasable programmable memory, a register, or the like. The storage medium is located in the memory <NUM>, and the processor <NUM> reads information in the memory <NUM> and accomplishes the steps of the foregoing methods in combination with the hardware of the processor <NUM>.

For a related description of <FIG>, refer to related descriptions and effects of the methods in <FIG> and <FIG> for understanding.

A non-claimed embodiment of this application further provides a computer storage medium, configured to store a computer software instruction used by the foregoing first device. When the computer software instruction is run on a computer, the computer is enabled to perform the data transmission methods performed by the first device in the embodiments in <FIG> and <FIG>. The storage medium may be specifically the foregoing memory <NUM>.

A non-claimed embodiment of this application further provides a computer program product including an instruction. When the computer program product is run on a computer, the computer is enabled to perform the data transmission method performed by the first device.

A non-claimed embodiment of this application further provides a network interface processing circuit. The network interface processing circuit includes a processing circuit and a communications interface circuit. The communications interface circuit is configured to perform a data sending and receiving operation, and the processing circuit is configured to perform the data transmission methods in <FIG> and <FIG>. Optionally, the processing circuit may be specifically an application-specific integrated circuit (ASIC), or may be a field programmable gate array (FPGA) or another programmable logic device, a discrete gate or a transistor logic device, or a discrete hardware component.

A non-claimed embodiment of this application further provides a network adapter. The network adapter includes a network interface chip, a memory, and a host interface circuit. The memory is configured to store a computer operation instruction, the host interface circuit is configured to connect a host and the network adapter, and the network interface chip is configured to perform the data transmission methods in <FIG> and <FIG> by invoking the computer operation instruction. Optionally, the memory may be a buffer.

A non-claimed embodiment of this application further provides a network device. The network device includes a network adapter, a host, and a memory. The network adapter may be the network adapter in the foregoing embodiment, the memory is configured to store a computer operation instruction, the network adapter is configured to receive or send data, and the host is configured to perform the data transmission methods in <FIG> and <FIG> by invoking the computer operation instruction. Optionally, the network device may be specifically a server.

It may be clearly understood by persons skilled in the art that for convenient and brief description, for a detailed working process of the described system, apparatus, and unit, refer to a corresponding process in the foregoing method embodiments.

For example, the described apparatus embodiments are merely examples. For example, division into the units is merely logical function division and may be other division in actual implementation. The indirect couplings or communication connections between the apparatuses or units may be implemented in electrical, mechanical, or another form.

The units described as separate parts may or may not be physically separate, and components displayed as units may or may not be physical units. To be specific, the components may be located in one position, or may be distributed on a plurality of network units. Some or all of the units may be selected based on actual requirements to achieve the objectives of the solutions in the embodiments.

When the integrated unit is implemented in the form of a software functional unit and sold or used as an independent product, the integrated unit may be stored in a computer-readable storage medium. Based on such an understanding, the technical solutions of this application essentially, or the part contributing to the prior art, or all or some of the technical solutions may be implemented in a form of a software product. The computer software product is stored in a storage medium and includes several instructions for instructing a computer device (which may be a personal computer, a server, a network device, or the like) to perform all or some of the steps of the methods described in the embodiments of this application. The storage medium includes any medium that can store program code, for example, a USB flash drive, a removable hard disk, a read-only memory (read-only memory, ROM), a random access memory (random access memory, RAM), a magnetic disk, or an optical disc.

Claim 1:
A data transmission method, comprising:
sending (<NUM>), by a first device, a data read request to a second device, wherein the data read request is generated according to a remote direct memory access, RDMA, protocol, and carries a data read address and a second data write address, the data read address is a destination address of second target data stored in the second device, the second data write address is a destination address that is reserved in the first device and that is used to store the second target data read from the second device, the second target data is data that needs to be read by the first device from the second device, the data read request is an RDMA read request, and the RDMA read request comprises two RDMA extended transport header, RETH, fields separately carrying the data read address and the second data write address;
receiving (<NUM>), by the first device, B RDMA packets from A RDMA packets sequentially sent by the second device according to a packet sequence number, PSN, sequence of the A RDMA packets, wherein the A RDMA packets are obtained by the second device by encapsulating the second target data read from the data read address, each of the A RDMA packets carries a PSN, A is a positive integer greater than or equal to <NUM>, each of the A RDMA packets comprises the second data write address corresponding to data of the packet, the A RDMA packets comprises three types of packets: an RDMA read respond first packet, an RDMA read respond middle packet and an RDMA read respond last packet, and the three types of packets comprise RETH field carrying the second data write address;
directly obtaining, by the first device, the second data write address of each RDMA packet from each of the successfully received B RDMA packets, wherein B is a positive integer less than or equal to A; and
writing, by the first device, data of each of the B RDMA packets into storage space of the second data write address corresponding to the RDMA packet.