Data transmission method based on bus technology, and related apparatus
By aggregating network interface cards (NICs) to uniformly manage message sequence numbers and feedback information, the problem of buffer release after aggregation of multiple physical NICs is solved, and reliable data transmission between network devices is achieved.
Patent Information
- Authority / Receiving Office
- WO · WO
- Patent Type
- Applications
- Current Assignee / Owner
- HUAWEI CLOUD COMPUTING TECHNOLOGIES CO LTD
- Filing Date
- 2024-09-11
- Publication Date
- 2026-05-15
AI Technical Summary
After multiple physical network cards are aggregated into a logical network card through a bus switch, the sending path and receiving path are inconsistent, which leads to the problem that the buffer occupied in the network card cannot be released, affecting the reliability of data transmission.
By aggregating network interface cards (NICs) to uniformly manage message sequence numbers and feedback information, reliable data transmission between network devices is ensured, and the NIC is configured to release its cache upon receiving feedback information.
It effectively ensures that the data cached in the physical network card is released, avoids cache overflow, and realizes reliable data transmission between network devices.
Smart Images

Figure CN2024118275_15052026_PF_FP_ABST
Abstract
Description
A data transmission method and related apparatus based on bus technology
[0001] This application claims priority to Chinese Patent Application No. 202410178075.2, filed on February 8, 2024, entitled "A Message Forwarding Method and Apparatus Based on Bus Switching Technology", and Chinese Patent Application No. 202410543777.6, filed on April 30, 2024, entitled "A Data Transmission Method and Related Apparatus Based on Bus Technology", the entire contents of which are incorporated herein by reference. Technical Field
[0002] This application relates to the field of computer technology, and in particular to a data transmission method and related apparatus based on bus technology. Background Technology
[0003] With the development of public cloud services, the demand for increased network bandwidth is growing. Traditional network interface cards (NICs) must be bound to the host, with the NIC mapped to the host's memory address space for access. When multiple NICs exist, the application layer needs to specify which NIC should be used as the traffic exit point. With the development of peer-to-peer (Peer2Peer) access buses such as CXL and NVLink, the aggregation of multiple NIC devices has become a common scenario. However, when multiple physical NICs are aggregated into a logical NIC via a bus switch, the aggregated logical NIC has only one IP address. When data needs to be sent and received through the aggregated logical NIC, there will be corresponding sending and receiving paths. When the sending and receiving paths are on different physical links, the data transmission paths of the logical NIC will be inconsistent, which will prevent physical NICs with cached data from releasing their cache.
[0004] Therefore, how to solve the problem of the inability to release the cache occupied in the network card due to the inconsistency between the sending path and the receiving path is a hot topic of research for those skilled in the art.
[0005] Summary of the Invention
[0006] This application provides a data transmission method and related apparatus based on bus technology, which can effectively ensure the release of data cached in the physical network card and ensure reliable data transmission between network devices.
[0007] In a first aspect, embodiments of this application provide a data transmission method based on bus technology, applied to a converged network interface card (NIC). The converged NIC operates on a first computing device, which includes a first NIC, a second NIC, and a processor. The method includes: receiving an original packet sent by the processor; configuring the first NIC to send a first packet to the second computing device based on the original packet, wherein the first packet includes a first sequence number indicating that the first packet was sent by the first NIC; obtaining first feedback information indicating that the second computing device successfully received the first packet; and configuring the first NIC to release the buffer of the first packet based on the first feedback information and the first sequence number.
[0008] In this application, on the one hand, compared to existing technologies that require a first computing device to split the packet before transmission and for upper-layer applications to be aware of the number of physical layer network cards (NICs), this application aggregates multiple physical NICs into an aggregated NIC. Subsequent external operations are handled by the application layer and the aggregated NIC, eliminating the need for the application layer to split the packet and for upper-layer applications to be aware of the number of physical layer NICs, thereby reducing network protocol stack overhead. Furthermore, existing technologies present the maximum bandwidth of the device to upper-layer applications as the maximum capability of the NIC / IO Die. However, by aggregating multiple physical NICs into an aggregated NIC, this application can achieve a maximum bandwidth exceeding the bandwidth limit of a single physical NIC.
[0009] On the other hand, in this application, the sequence number of the message and the feedback information from the second computing device are both synchronized to the aggregated network card and managed and configured uniformly by the aggregated network card. After the aggregated network card confirms the network card corresponding to the message being sent, it notifies the network card that sent the corresponding message to release the message cache. This can ensure reliable data transmission between network devices and effectively ensure that the data cached in the physical network card is released, avoiding the situation where a network card that needs to release the message cache cannot release it, resulting in a cache overflow.
[0010] In one possible implementation of the first aspect, obtaining the first feedback information includes: sending first indication information to the first network interface card (NIC) or the second NIC, wherein the first indication information is used to instruct the first NIC or the second NIC to send the first feedback information to the aggregated NIC. Receiving the first feedback information forwarded from the first NIC or the second NIC.
[0011] In the above embodiments, the first feedback information obtained by the aggregation network card may be forwarded by the first network card or the second network card according to the first instruction information of the aggregation network card.
[0012] In another possible implementation of the first aspect, configuring the first network interface card (NIC) to release the buffer of the first packet based on the first feedback information and the first serial number includes: sending first reference information to the first NIC based on the first feedback information and the first serial number, wherein the first reference information is information generated based on the first feedback information and the first serial number, and the first reference information is used to release the buffer of the first packet.
[0013] In another possible implementation of the first aspect, the first reference information is the first feedback information.
[0014] In the above implementation, the first network interface card releases the packet buffer based on the first feedback information.
[0015] In another possible implementation of the first aspect, the first reference information is a second indication information, which is used to indicate the release of the first message in the buffer.
[0016] In the above implementation, the first network interface card (NIC) releases the packet buffer according to the instruction information of the aggregation NIC, and the first feedback information is still processed on the aggregation NIC.
[0017] In another possible implementation of the first aspect, the method further includes: obtaining second feedback information, wherein the second feedback information is used to indicate that the second computing device has successfully received the second message, the second message including a second sequence number, the second sequence number being used to indicate that the second message was sent by the second network interface card (NIC). Based on the second feedback information and the second sequence number, sending second reference information to the second NIC, wherein the second reference information is information generated based on the second feedback information and the second sequence number, the second reference information being used to release the buffer of the second message.
[0018] In the above embodiment, after the second computing device successfully receives the second message, it can send second feedback information to the aggregated network interface card (NIC). When the first NIC receives the second feedback information from the second computing device, it reports the second feedback information to the aggregated NIC for further processing. For example, based on the second feedback information and the second sequence number included in the second message, it confirms the NIC corresponding to the second message. After determining that the NIC sending the second message is the second NIC, it sends second reference information to the second NIC. The second reference information is used to instruct the second NIC to release the buffer of the second message. This application, through the unified management of messages and feedback information by the aggregated NIC, can efficiently determine the corresponding NIC that sent the message, effectively ensuring that the data buffered in the physical NIC is released.
[0019] In another possible implementation of the first aspect, the method further includes: obtaining third feedback information, wherein the third feedback information is used to indicate that the second computing device has not successfully received a third message, the third message including the third sequence number, the third sequence number being used to indicate that the third message was sent by the first network interface card (NIC). Based on the third feedback information and the third sequence number, sending third reference information to the first NIC, wherein the third reference information is determined based on the third feedback information, and the third feedback information is used to request the first NIC to retransmit the third message.
[0020] In the above implementation, when the second computing device fails to receive the message, it needs to retransmit the message to ensure reliable data transmission between network devices.
[0021] Optionally, this application is not limited to feedback information being message arrival acknowledgment (ACK) or message non-arrival acknowledgment (NACK). Other network information, such as explicit congestion notification (ECN) and congestion notification packet (CNP), can also be synchronized and operated using the same processing method described above.
[0022] In another possible implementation of the first aspect, configuring the first network interface card (NIC) to send a first message to the second computing device based on the original message includes: sending the original message to the first NIC, wherein the original message does not include the first serial number, and the first message is generated by the first NIC based on the original message and the first serial number.
[0023] In the above implementation, the message sequence number is generated by the first network interface card.
[0024] In another possible implementation of the first aspect, configuring the first network interface card (NIC) to send a first message to the second computing device based on the original message includes: adding a first sequence number to the original message to obtain the first message; and sending the first message to the first NIC to cause the first NIC to send the first message to the second computing device.
[0025] In the above implementation, the aggregation network interface card (NIC) generates the sequence number of the packet and sends the obtained first packet to the first NIC.
[0026] Secondly, embodiments of this application provide a data transmission method based on bus technology, applied to a first network interface card (NIC) in a first computing device. The first computing device includes the first NIC, a second NIC, and a processor. The aggregated NIC runs on the first computing device. The method includes: receiving configuration information sent by the aggregated NIC, wherein the configuration information includes an original packet or a first packet, the configuration information being used to instruct the first NIC to send the first packet to a second computing device, wherein the first packet includes a first sequence number, the first sequence number being used to indicate that the first packet was sent by the first NIC; sending the first packet to the second computing device according to the configuration information; receiving first feedback information forwarded by the second NIC, wherein the first feedback information is used to indicate that the second computing device successfully received the first packet; and releasing the buffer of the first packet according to the first feedback information and the first sequence number.
[0027] In this application, the first feedback information from the second computing device is synchronized among all network interface cards (NICs) within the group. For example, after receiving the first feedback information forwarded from the second NIC, the first NIC checks whether the packet associated with the first feedback information was sent by its own NIC. If it was sent by its own NIC, the packet's buffer is directly released. If it was not sent by its own NIC, the first feedback information is forwarded to other NICs. This application effectively ensures the release of data buffered within physical NICs and guarantees reliable data transmission between network devices through packet synchronization among multiple NICs.
[0028] In one possible implementation of the second aspect, the method further includes: receiving second feedback information sent by the second computing device, wherein the second feedback information is used to indicate that the second computing device has successfully received the second message, the second message including a second sequence number, the second sequence number being used to indicate that the second message was sent by the second network interface card (NIC). If the first NIC determines that the second message was not sent by the first NIC, the second feedback information is forwarded to the second NIC or the aggregated NIC, wherein the second feedback information is used to release the buffer of the second message.
[0029] In the above embodiments, a scenario is provided where, after receiving second feedback information from a second computing device, the first network interface card (NIC) confirms that the packet associated with the second feedback information is not a packet sent by the NIC itself. In this case, the second feedback information is forwarded to the second NIC. This application effectively ensures the release of data cached within the physical NIC and guarantees reliable data transmission between network devices through packet synchronization among multiple NICs.
[0030] In another possible implementation of the second aspect, the method further includes: sending a third message to the second computing device according to the configuration information, wherein the third message includes a third sequence number, the third sequence number indicating that the third message was sent by the first network interface card (NIC); receiving third feedback information forwarded by the second NIC, wherein the third feedback information indicates that the second computing device has not successfully received the third message, and the third feedback information requests the first NIC to retransmit the third message; and retransmitting the third message to the second computing device.
[0031] In the above implementation, when the second computing device fails to receive the message, it needs to retransmit the message to ensure reliable data transmission between network devices.
[0032] In another possible implementation of the second aspect, the configuration information includes the first message, and sending the first message to the second computing device according to the configuration information includes: sending the first message to the second computing device.
[0033] In another possible implementation of the second aspect, the configuration information includes the original message, and sending the first message to the second computing device according to the configuration information includes: adding the first sequence number to the original message to obtain the first message; and sending the first message to the second computing device.
[0034] In a third aspect, embodiments of this application provide a data transmission device based on bus technology. The data transmission device includes a communication unit and a processing unit, wherein: the communication unit is configured to receive an original message sent by the processor; the processing unit is configured to configure a first network interface card (NIC) according to the original message so that the NIC sends a first message to a second computing device, wherein the first message includes a first sequence number, which indicates that the first message was sent by the first NIC; the processing unit is further configured to obtain first feedback information, which indicates that the second computing device has successfully received the first message; and the processing unit is further configured to configure the first NIC according to the first feedback information and the first sequence number so that the NIC releases the buffer of the first message.
[0035] In one possible implementation of the third aspect, regarding the acquisition of the first feedback information, the processing unit is specifically configured to: send first indication information to the first network interface card (NIC) or the second NIC, wherein the first indication information is used to instruct the first NIC or the second NIC to send the first feedback information to the aggregated NIC; and receive the first feedback information forwarded from the first NIC or the second NIC.
[0036] In another possible implementation of the third aspect, in the aspect of configuring the first network interface card (NIC) to release the buffer of the first packet based on the first feedback information and the first serial number, the processing unit is specifically configured to: send first reference information to the first NIC based on the first feedback information and the first serial number, wherein the first reference information is information generated based on the first feedback information and the first serial number, and the first reference information is used to release the buffer of the first packet.
[0037] In another possible implementation of the third aspect, the first reference information is the first feedback information.
[0038] In another possible implementation of the third aspect, the first reference information is a second indication information, wherein the second indication information is used to indicate the release of the first message in the buffer.
[0039] In another possible implementation of the third aspect, the processing unit is further configured to acquire second feedback information, wherein the second feedback information is used to indicate that the second computing device has successfully received the second message, the second message including a second sequence number, the second sequence number being used to indicate that the second message was sent by the second network interface card (NIC). The communication unit is further configured to send second reference information to the second NIC based on the second feedback information and the second sequence number, wherein the second reference information is information generated based on the second feedback information and the second sequence number, and the second reference information is used to release the buffer of the second message.
[0040] In another possible implementation of the third aspect, the processing unit is further configured to acquire third feedback information, wherein the third feedback information is used to indicate that the second computing device has not successfully received the third message, the third message including the third sequence number, the third sequence number being used to indicate that the third message was sent by the first network interface card (NIC). The communication unit is further configured to send third reference information to the first NIC based on the third feedback information and the third sequence number, wherein the third reference information is determined based on the third feedback information, and the third feedback information is used to request the first NIC to retransmit the third message.
[0041] In another possible implementation of the third aspect, in the part of configuring the first network interface card (NIC) to send a first message to the second computing device based on the original message, the processing unit is specifically configured to: send the original message to the first NIC, wherein the original message does not include the first sequence number, and the first message is generated by the first NIC based on the original message and the first sequence number.
[0042] In another possible implementation of the third aspect, in the step of configuring the first network interface card (NIC) to send a first message to the second computing device based on the original message, the processing unit is specifically configured to: add a first sequence number to the original message to obtain the first message; and send the first message to the first NIC to send the first message to the second computing device.
[0043] Fourthly, embodiments of this application provide a data transmission device based on bus technology. The data transmission device includes a communication unit and a processing unit, wherein: the communication unit is configured to receive configuration information sent by a network interface card (NIC), wherein the configuration information includes an original message or a first message, and the configuration information is used to instruct the first NIC to send the first message to a second computing device, wherein the first message includes a first sequence number, and the first sequence number is used to indicate that the first message was sent by the first NIC. The communication unit is further configured to send the first message to the second computing device according to the configuration information. The communication unit is further configured to receive first feedback information forwarded by the second NIC, wherein the first feedback information is used to indicate that the second computing device successfully received the first message. The processing unit is configured to release the buffer of the first message according to the first feedback information and the first sequence number.
[0044] In one possible implementation of the fourth aspect, the communication unit is further configured to receive second feedback information sent by the second computing device, wherein the second feedback information is used to indicate that the second computing device has successfully received the second message, the second message including a second sequence number, the second sequence number being used to indicate that the second message was sent by the second network interface card (NIC). The communication unit is further configured to forward the second feedback information to the second NIC or the aggregated NIC if the first NIC determines that the second message was not sent by the first NIC, wherein the second feedback information is used to release the buffer of the second message.
[0045] In another possible implementation of the fourth aspect, the communication unit is further configured to send a third message to the second computing device according to the configuration information, wherein the third message includes a third sequence number, the third sequence number indicating that the third message was sent by the first network interface card (NIC). The communication unit is further configured to receive third feedback information forwarded by the second NIC or the aggregated NIC, wherein the third feedback information indicates that the second computing device has not successfully received the third message, and the third feedback information requests the first NIC to retransmit the third message. The communication unit is further configured to retransmit the third message to the second computing device.
[0046] In another possible implementation of the fourth aspect, the configuration information includes the first message, and in the aspect of sending the first message to the second computing device according to the configuration information, the communication unit is specifically used to: send the first message to the second computing device.
[0047] In another possible implementation of the fourth aspect, the configuration information includes the original message. In the step of sending the first message to the second computing device according to the configuration information, the communication unit is specifically configured to: add the first sequence number to the original message to obtain the first message; and send the first message to the second computing device.
[0048] Fifthly, embodiments of this application provide a computing device, the computing device including a first network interface card (NIC), a second NIC, and a processor, wherein: the first NIC is a first NIC that implements the method described in any one of the first to second aspects, the second NIC is a second NIC that implements the method described in any one of the first to second aspects, and the processor is a processor that implements the method described in any one of the first to second aspects.
[0049] Sixthly, embodiments of this application provide a data transmission system based on bus technology, the data transmission system including the computing device described in the fifth aspect above.
[0050] In a seventh aspect, embodiments of this application provide a computer-readable storage medium for storing instructions or computer programs; when the instructions or computer programs are executed, they implement the method described in any of the first to second aspects or any possible implementation thereof.
[0051] Eighthly, this application provides a computer program product including computer instructions that, when executed on at least one processor, can implement the methods described in any of the first to fifth aspects or any possible implementations thereof. The computer program product can be a software installation package, which can be downloaded and executed on a computing device when the aforementioned methods are required.
[0052] The beneficial effects of the technical solutions provided in aspects three to eight of this application can be referred to the beneficial effects of the technical solutions in aspects one and two, and will not be repeated here. Attached Figure Description
[0053] Figure 1 is a schematic diagram of the architecture of a data transmission system based on bus technology provided in an embodiment of this application;
[0054] Figure 2 is a schematic diagram of the architecture of a first computing device provided in an embodiment of this application;
[0055] Figure 3 is a schematic diagram of a typical bus network for forwarding traffic across servers, provided in an embodiment of this application.
[0056] Figure 4 is a flowchart illustrating the data transmission method based on bus technology provided in an embodiment of this application.
[0057] Figure 5 is a schematic diagram of a first network card configured with an aggregated network card according to an embodiment of this application so that the first network card releases the buffer of the first packet;
[0058] Figure 6 is a flowchart illustrating another data transmission method based on bus technology provided in an embodiment of this application.
[0059] Figure 7 is a schematic diagram of another aggregation network card configuration provided in an embodiment of this application to enable the first network card to release the buffer of the first packet;
[0060] Figure 8 is a schematic diagram of a data transmission device 80 based on bus technology provided in an embodiment of this application;
[0061] Figure 9 is a schematic diagram of another data transmission device 90 based on bus technology provided in an embodiment of this application;
[0062] Figure 10 is a schematic diagram of the structure of another data transmission device 100 based on bus technology provided in an embodiment of this application;
[0063] Figure 11 is a schematic diagram of the structure of a data transmission device cluster 110 provided in an embodiment of this application. Detailed Implementation
[0064] To facilitate understanding, the relevant terms that may be involved in the embodiments of this application will be introduced below.
[0065] 1. Physical network card
[0066] A physical network interface card (NIC), also known as a network interface card or network card, is responsible for the electrical connection between a computer and the network medium, the transmission of bit data streams, and network address verification. Its main technical parameters are bandwidth speed, bus type, and electrical interface type.
[0067] 2.SR-IOV
[0068] The two new function types in SR-IOV are: physical function (PF) and virtual function (VF).
[0069] PF is a PCI function used to support SR-IOV functionality. PF is a full-featured PCIe function that can be discovered, managed, and processed like any other PCIe device. PF has full configuration resources that can be used to configure or control PCIe devices.
[0070] A PF can be extended to create several VFs. A VF can also be called a converged network interface or a virtual network interface. A VF is a virtual "network interface" or a virtual instance created by a physical network interface that supports SRIOV. It appears as an independent network interface. Each VF has its own dedicated PCI configuration area and may share the same physical resources with other VFs, that is, share the same physical network port.
[0071] When SR-IOV is enabled, the physical network card will interact with the virtual machine, thus skipping the intermediate virtualization stack and achieving performance close to that of a pure physical environment. This is the greatest value of SR-IOV, as it differs from the previous situation where virtual machines transmitted traffic through emulation devices and virtualization layers.
[0072] 3. Message sequence number
[0073] The packet sequence number (PCN) is used to identify each segment, allowing the destination host to confirm that it has received the data in the specified segment. When the source host sends a single message using multiple segments, the sequence number allows the destination host to arrange the segments in order, even if the messages arrive at the destination host in different sequences.
[0074] For segments containing data, the initial sequence number is the number of the first data byte in the segment, and subsequent data bytes are numbered sequentially. If the source host sends another segment using the same connection, the sequence number of this segment is equal to the sum of the sequence number of the previous segment and the number of data bytes in the previous segment. For example, assuming the source host sends three segments, each containing 100 bytes of data, and the sequence number of the first segment is 1000, then the sequence number of the second segment is 1100 (1000 + 100), and the sequence number of the third segment is 1200 (1100 + 100). If the sequence number increases to its maximum value, it will be reset to 0.
[0075] 4. Message arrival confirmation
[0076] The destination host returns an acknowledgment (ACK) number to inform the source host that one or more segments have been received. This field is valid if the ACK control bit is set to 1. The acknowledgment number is equal to the sequence number of the last segment received in sequence plus 1, which is also the sequence number the destination host expects to receive next. After receiving the acknowledgment number, the computer considers that it has received all data with acknowledgments less than that number.
[0077] For example, the sequence number is equal to the sum of the sequence number of the previous segment and the number of data bytes in the previous segment. For instance, suppose the source host sends three segments, each containing 100 bytes of data, and the sequence number of the first segment is 1000. Upon receiving the first segment, the destination host returns a header containing an acknowledgment number of 1100. Upon receiving the second segment (with sequence number 1100), the destination host returns an acknowledgment number of 1200. Upon receiving the third segment, the destination host returns an acknowledgment number of 1300.
[0078] The destination host may not necessarily return an acknowledgment number after receiving every segment. In the example above, the destination host might wait until all three segments have been received before returning a segment with an acknowledgment number of 1300, indicating that all 1200 bytes of data have been received. However, if the destination host waits too long before sending back the acknowledgment number, the source host will assume that the data has not reached the destination host and will automatically retransmit it.
[0079] In the example above, if the destination host receives the first segment with segment number 1000 and the last segment with segment number 1200, it can return acknowledgment number 1100. However, before returning acknowledgment number 1300, it should wait for the intermediate segment with segment number 1100.
[0080] The system architecture used in the embodiments of this application is described below. It should be noted that the system architecture and business scenarios described in this application are for the purpose of more clearly illustrating the technical solutions of this application, and do not constitute a limitation on the technical solutions provided in this application. As those skilled in the art will know, with the evolution of system architecture and the emergence of new business scenarios, the technical solutions provided in this application are also applicable to similar technical problems.
[0081] Please refer to Figure 1, which is a schematic diagram of the architecture of a data transmission system based on bus technology provided in an embodiment of this application. As shown in Figure 1, the data transmission system includes a first computing device 110, a second computing device 120, and a network device 130. Figure 1 uses server A as the first computing device 110 and server B as the second computing device 120 as an example. Server A supports receiving and / or sending data. Server B also supports receiving and / or sending data. Server A can act as a sending device, sending data to server B through network device 130. Correspondingly, server B can act as a receiving device, receiving data from server A through network device 130; or, server B can act as a sending device, sending data to server A through network device 130, and correspondingly, server A can act as a receiving device, receiving data from server B through network device 130. For ease of understanding, Figure 1 illustrates the example of server A sending data to server B through network device 130. In addition, there are one or more intermediate devices (such as the switch shown in Figure 1) between server A and server B.
[0082] In one possible design, as shown in Figure 1, server A has a first network interface card (NIC) (e.g., represented as physical NIC 1), a second NIC (e.g., represented as physical NIC 2), and a processor (e.g., represented as processor 1). As shown in Figure 2, the first and second NICs in the first computing device 110 are aggregated into a single NIC. This aggregated NIC runs on the first computing device 110; in other words, it can run on at least one independent device within the first computing device 110. For example, the aggregated NIC can run on the first NIC, or on a device within the first NIC, such as a chip or integrated circuit. Similarly, the aggregated NIC can run on the second NIC, or on a device within the second NIC, such as a chip or integrated circuit. Furthermore, the aggregated NIC can run simultaneously on both the first and second NICs, or on a device within the aggregated device, such as a chip or integrated circuit. Figure 2 illustrates an example where the first network interface card (NIC) is NIC 211, the second NIC is NIC 212, and the processor is processor 213. The aggregated NIC, through configuration of NIC 211 or NIC 212, enables data transmission and reception, as well as the release of packet buffers. Exemplarily, this may include the following steps: the aggregated NIC receives the original packet sent by processor 213; then, based on the original packet, the aggregated NIC configures NIC 211 to send packet 1 to the second computing device 120, where packet 1 includes a sequence number 001, indicating that packet 1 was sent by NIC 211. The aggregated NIC then acquires first feedback information, indicating that the second computing device 120 has successfully received packet 1. Finally, based on the first feedback information and sequence number 001, the aggregated NIC configures NIC 211 to release the buffer of packet 1.
[0083] In another possible design, still as shown in Figure 1, the first computing device 110 has a first network interface card (NIC), a second NIC, and a processor installed (or deployed). The first NIC and the second NIC in the first computing device 110 are aggregated into a unified NIC, which runs on the first computing device 110. Figure 2 uses NIC 211 as the first NIC, NIC 212 as the second NIC, and processor 213 as the processor as an example. NIC 211 or NIC 212 handles data transmission and reception and releases the packet buffer. Exemplarily, this may include the following steps: NIC 211 receives configuration information sent by the unified NIC, where the configuration information includes the original packet or packet 1. The configuration information instructs NIC 211 to send packet 1 to the second computing device 120, where packet 1 includes a sequence number 001, which indicates that packet 1 is sent by NIC 211. NIC 211 then sends packet 1 to the second computing device 120 according to the configuration information. Network interface card 211 then receives the first feedback information forwarded by network interface card 212, wherein the first feedback information is used to indicate that the second computing device 120 has successfully received message 1. Finally, network interface card 211 releases the buffer of message 1 according to the first feedback information and serial number 001.
[0084] Optionally, network interface cards 211 and 212, and processor 213 can communicate with each other via a bus (not shown in Figures 1 and 2). This bus can be, for example, a bus based on the high-speed serial computer expansion bus standard (Peripheral Component Interconnect Express, PCIe), or a compute express link (CXL) bus, a serial communication interface (SCI) bus, or an I2C (Inter-Integrated Circuit) bus, but the embodiments of this application are not limited to these.
[0085] Before introducing the scheme of this application, the following points should be noted.
[0086] (1) In this application, “instruction” may include direct instruction, indirect instruction, explicit instruction, and implicit instruction. When describing a certain instruction information for the purpose of instructing A, it can be understood that the instruction information carries A, directly instructs A, or indirectly instructs A.
[0087] In this application, the information indicated by the instruction information is called the information to be instructed. In specific implementations, there are many ways to indicate the information to be instructed, such as, but not limited to, directly indicating the information to be instructed, such as the information to be instructed itself or its index. It can also indirectly indicate the information to be instructed by indicating other information, where there is a relationship between the other information and the information to be instructed. It can also indicate only a part of the information to be instructed, while the other parts are known or pre-agreed upon. For example, the instruction of specific information can be achieved by using a pre-agreed (e.g., protocol-defined) arrangement of various pieces of information, thereby reducing instruction overhead to some extent. Furthermore, the information to be instructed can be sent as a whole or divided into multiple sub-information pieces, and the sending period and / or timing of these sub-information pieces can be the same or different.
[0088] (2) In this application, "send" and "receive" indicate the direction of signal transmission. For example, "send information to XX" can be understood as the destination of the information being XX, which may include direct transmission via the air interface or indirect transmission via the air interface by other units or modules. "Receive information from YY" can be understood as the source of the information being YY, which may include direct reception from YY via the air interface or indirect reception from YY via the air interface by other units or modules. "Send" can also be understood as the "output" of the chip interface, and "receive" can also be understood as the "input" of the chip interface. In other words, sending and receiving can occur between devices, such as between network devices and terminal devices, or within a device, such as between components, modules, chips, software modules, or hardware modules within the device via a bus, wiring, or interface.
[0089] The embodiments of this application will now be described in detail with reference to the accompanying drawings.
[0090] Please refer to Figure 3. Figure 3 is a schematic diagram of a typical bus network cross-server traffic forwarding provided by an embodiment of this application. As shown in Figure 3, the specific process can be divided into the following steps:
[0091] Step 1: The sending end sends the message to the sending queue of the first network card.
[0092] Step 2: The first network card sends a message to the destination through the link.
[0093] Step 3: The fourth network card sends the first feedback information to the first network card.
[0094] The first feedback information is used to indicate that the destination has successfully received the message.
[0095] Step 4: The first network card releases its local packet cache based on the first feedback information.
[0096] In existing solutions, if the access bandwidth of two servers exceeds the capacity of a single network interface card (NIC), two NICs are configured on the server and registered on the host. The upper-layer application specifies which network port the traffic exits from, and the maximum network bandwidth capacity of a single flow is the capacity of a single NIC. With the development of peer-to-peer (Peer2Peer) access buses such as CXL and NVLink, the aggregation of multiple NIC devices has become a common scenario. However, when multiple physical NICs are aggregated into a logical NIC via a bus switch, the aggregated logical NIC has only one IP address. When data needs to be sent and received through the aggregated logical NIC, there will be paths for sending packets and receiving the first feedback information. Referring to Figure 2, when the paths for sending packets and receiving the first feedback information are on different physical links, the data transmission paths of the logical NIC are inconsistent, which will prevent physical NICs with cached data from releasing their cache. The specific process described above can be divided into the following steps:
[0097] Step 11: Multiple physical network cards in the first computing device are aggregated into one aggregated network card.
[0098] Step 21: The first network card in the first computing device sends a message to the fourth network card in the second computing device through the link.
[0099] Step 31: The second computing device sends the first feedback information to the first computing device.
[0100] The first feedback information is used to indicate that the second computing device has successfully received the message. The first feedback information is forwarded to the second network card after passing through the switch, which means that the sending path and receiving path of the message are inconsistent.
[0101] Step 41: The second network card does not have a corresponding packet cache, which needs to be released.
[0102] Step 51: The packet buffer of the first network card cannot be released, resulting in a buffer overflow.
[0103] In view of this, embodiments of this application provide a data transmission method and related apparatus that can effectively ensure the release of data cached in the physical network card and ensure reliable data transmission between network devices.
[0104] For ease of description, specific examples in the embodiments of this application may be given using the first network card and the second network card, or the aggregated network card, the first network card and the second network card as examples, but these should not be construed as limiting the embodiments of this application.
[0105] The embodiments of this application will now be described in detail with reference to the accompanying drawings.
[0106] Please refer to Figure 4, which is a flowchart illustrating a data transmission method based on bus technology according to an embodiment of this application. This data transmission method can also be called a message forwarding method based on bus switching technology. It should be understood that the names of methods, devices, and information in this application are merely examples, and their names can be arbitrarily replaced in specific implementations. This data transmission method is described from the perspective of the interaction between the processor, the aggregated network interface card (NIC), and the first NIC. Optionally, this data transmission method can be applied to the aforementioned data transmission system, such as the data transmission system shown in Figures 1 and 2.
[0107] The data transmission method includes one or more steps S401 to S404. It should be understood that, for ease of description, the method is described in the order of steps S401 to S404, but this is not intended to limit the execution to this specific order. This application embodiment does not limit the order of execution, the execution time, or the number of executions of the above one or more steps; other steps may be interspersed between or before these steps as needed. Specifically, steps S401 to S404 are as follows:
[0108] Step S401: The processor sends the raw packet to the aggregated network card.
[0109] Accordingly, the converged network interface card receives the raw packets sent by the processor.
[0110] The aggregated network interface card (NIC) is formed by combining the first NIC and the second NIC. The aggregated NIC runs on the first computing device. The first computing device includes the first NIC, the second NIC, and a processor. The first computing device is a device with communication and computing capabilities. For example, the first computing device can be the cloud or a server. This application does not limit it in this way.
[0111] The first network interface card (NIC) and the second NIC are also devices with communication and computing capabilities. The first NIC or the second NIC is an exemplary name used to distinguish a particular NIC. For example, the first NIC or the second NIC can be physical NIC 1, physical NIC 2, physical NIC 3, or other NICs.
[0112] Step S402: The aggregation network card configures the first network card according to the original message so that the first network card sends the first message to the second computing device.
[0113] The second computing device is a device with communication and computing capabilities. Exemplarily, the second computing device can be a cloud platform or a server; this application does not limit this. The first message includes a first serial number, which indicates that the first message was sent by the first network interface card (NIC). The first serial number is an exemplary name used to distinguish a specific serial number. Exemplarily, the first serial number can be serial number 1, serial number 2, serial number 3, or other self-named serial numbers. The first message is an exemplary name used to distinguish a specific message. Exemplarily, the first message can be message 1, message 2, message 3, or other messages.
[0114] Optionally, the first sequence number is used to indicate that the first message was sent by the first network interface card (NIC), indicating that a mapping relationship is formed between the first sequence number, the first message, and the first NIC, so that the first NIC can find the first message it sent. For example, taking message 1 as the first message, message 1 carries a sequence number of 001, and the NIC that sent message 1 is physical NIC 1.
[0115] Optionally, the following describes two possible implementations of an aggregated network interface card (NIC) configured to send a first packet to a second computing device based on the original packet:
[0116] In the first implementation method, the first message is generated by adding a first sequence number to the original message using the first network card.
[0117] For example, the aggregated network interface card (NIC) sends a raw message to the first NIC, which then generates a first message based on the raw message and sends the first message to the second computing device. After receiving the raw message from the aggregated NIC, the first NIC adds a first sequence number to the raw message to obtain the first message, and actively sends the first message to the second computing device (i.e., without the aggregated NIC's instruction trigger).
[0118] In the second implementation method, the first message is generated by adding a first sequence number to the original message using the aggregation network card.
[0119] For example, the aggregation network interface card (NIC) generates a first message based on the original message and sends the first message to the first NIC, so that the first NIC can send the first message to the second computing device.
[0120] Step S403: The aggregated network card obtains the first feedback information.
[0121] The first feedback information is an exemplary name used to distinguish a particular feedback information. For example, the first feedback information is a message arrival acknowledgment (ACK), used to indicate that the second computing device has successfully received the first message. For example, the first feedback information is the information sent by the second computing device to the aggregated network interface card (NIC) after successfully receiving message 1. The first feedback information is randomly delivered to either physical NIC 1 or physical NIC 2.
[0122] Optionally, the first feedback information is used to indicate that the second computing device has successfully received the first message. This means that the first feedback information may be sent by the first network card or the second network card to the aggregated network card according to the instruction from the aggregated network card, or it may be actively reported by the first network card or the second network card to the aggregated network card (i.e., without the instruction from the aggregated network card).
[0123] Further optionally, the first feedback information is the information sent by the second computing device to the aggregation network card after successfully receiving multiple messages, wherein the multiple messages each include multiple sequence numbers, such as the first sequence number carried by the first message, the second sequence number carried by the second message, and the third sequence number carried by the third message.
[0124] For example, in the message sending queue list shown in Table 1, message 1 includes sequence number 001, and the network card corresponding to sending message 1 is physical network card 1; message 2 includes sequence number 002, and the network card corresponding to sending message 2 is physical network card 2; message 3 includes sequence number 003, and the network card corresponding to sending message 3 is physical network card 1.
[0125] Table 1
[0126] Optionally, two possible implementation methods for the aggregation network interface card to obtain the first feedback information are described below:
[0127] In the first implementation method, the aggregation network card instructs the first network card or the second network card to forward the first feedback information to the aggregation network card, that is, the aggregation network card needs to issue an instruction.
[0128] In the second implementation method, the first network card or the second network card actively reports the first feedback information to the aggregation network card, without the aggregation network card issuing instructions.
[0129] Step S404: The aggregated network card configures the first network card according to the first feedback information and the first serial number so that the first network card releases the buffer of the first packet.
[0130] Optionally, the configuration may be that the aggregated network card sends an instruction to the first network card based on the first feedback information and the first serial number, instructing the first network card to release the buffer of the first packet; or the aggregated network card may directly send the first feedback information and the first serial number to the first network card, and the first network card releases the buffer of the first packet based on the first feedback information and the first serial number (i.e., the operation is not triggered by the instruction of the aggregated network card); or other reasonable meanings. This application does not limit the definition of the configuration.
[0131] Alternatively, the aggregation network card sends first reference information to the first network card based on the first feedback information and the first serial number.
[0132] The first reference information is an exemplary name used to distinguish a certain reference information. The first reference information can be information generated by the aggregation network card based on the first feedback information and the first serial number. The first reference information is used to release the buffer of the first packet.
[0133] Optionally, two possible scenarios for the first reference information are illustrated below:
[0134] In scenario one, the first reference information is the first feedback information. In other words, the first network interface card (NIC) directly releases the packet buffer based on the first feedback information.
[0135] For example, referring to Table 1, the first message is message 1, the first sequence number is sequence number 001, and the network card corresponding to sending message 1 is physical network card 1. When the first feedback information is the information sent to the aggregation network card after the second computing device successfully receives message 1, the aggregation network card forwards the first feedback information and the sequence number 001 corresponding to message 1 to physical network card 1. Physical network card 1 confirms whether message 1 is a message sent by this network card. If so, it indicates that reliable data transmission has been achieved, and physical network card 1 can directly release the buffer of message 1.
[0136] In scenario two, the first reference information is the first indication information, which is used to indicate the release of the first buffered packet. In other words, the first network interface card (NIC) releases the packet buffer according to the indication information of the aggregation NIC, and the first feedback information is still processed on the aggregation NIC.
[0137] For example, referring to Table 1, the first message is message 1, the first sequence number is sequence number 001, and the network card corresponding to sending message 1 is physical network card 1. When the first feedback information is the information sent by the second computing device to the aggregated network card after successfully receiving message 1, in order to avoid inconsistent sending and receiving paths of message 1 and to successfully release the cache of message 1 in the network card, the aggregated network card sends the first feedback information and the sequence number 001 corresponding to message 1 to physical network card 1 after confirmation. Physical network card 1 directly releases the cached message 1 of its network card according to the first feedback information and the sequence number 001 corresponding to message 1, thereby optimizing resource utilization and reducing database load.
[0138] As one possible implementation, the network interface card (NIC) acquires third-party feedback information.
[0139] The third feedback information is an exemplary name used to distinguish a particular feedback information. For example, the third feedback information is a message arrival confirmation message, used to indicate that the second computing device has successfully received the third message. For example, the third feedback information is the information sent by the second computing device to the aggregation network card after successfully receiving message 2. The third feedback information randomly arrives at either physical network card 1 or physical network card 2.
[0140] The third message includes a third sequence number, which indicates that the third message was sent by the second network card.
[0141] Optionally, the third feedback information is used to indicate that the second computing device has successfully received the third message. This indicates that the third feedback information can be sent by the first network card or the second network card to the aggregation network card according to the instruction from the aggregation network card, or it can be actively reported by the first network card or the second network card to the aggregation network card (i.e., without the need for an instruction from the aggregation network card). Specifically, as follows:
[0142] In one implementation method, the aggregated network card sends a second instruction message to the first network card or the second network card, and the aggregated network card receives a third feedback message forwarded from the first network card or the second network card.
[0143] The fourth instruction information is used to instruct the first network card or the second network card to send the third feedback information to the aggregation network card.
[0144] In the second implementation method, the aggregated network card receives third feedback information forwarded by the first or second network card (reported proactively by the first or second network card, without the need for the aggregated network card to trigger an instruction).
[0145] Alternatively, the aggregation network card may send third reference information to the second network card based on the third feedback information and the third serial number.
[0146] The third reference information is an exemplary name used to distinguish a certain reference information. The third reference information can be information generated by the aggregation network card based on the third feedback information and the third serial number. The third reference information is used to release the buffer of the third packet.
[0147] Optionally, two possible scenarios for third reference information are illustrated below:
[0148] In scenario one, the third reference information is the third feedback information. In other words, the second network interface card (NIC) directly releases the packet buffer based on the third feedback information.
[0149] For example, referring to Table 1, the third message is message 2, the third sequence number is sequence number 002, and the network card corresponding to sending message 2 is physical network card 2. When the third feedback information is the information sent to the aggregation network card after the second computing device successfully receives message 2, the aggregation network card forwards the third feedback information and the sequence number 002 corresponding to message 2 to physical network card 2. Physical network card 2 confirms whether message 2 is a message sent by its own network card. If so, it indicates that reliable data transmission has been achieved, and physical network card 2 can directly release the buffer of message 2.
[0150] In scenario two, the third reference information is the third indication information, which is used to indicate the release of the buffered third message. In other words, the second network interface card (NIC) directly releases the message buffer based on the indication information of the aggregation NIC, and the third feedback information is still processed on the aggregation NIC. For example, referring to Table 1, the third message is message 2, the third sequence number is sequence number 002, and the NIC that sent message 2 is physical NIC 2. When the third feedback information is the information sent by the second computing device to the aggregation NIC after successfully receiving message 2, in order to avoid inconsistencies in the sending and receiving paths of message 2 and to successfully release the buffer of message 2 on the NIC, the aggregation NIC sends the third feedback information and the sequence number 002 corresponding to message 2 to physical NIC 2 after confirmation. Physical NIC 2 directly releases the buffered message 2 of its own NIC based on the third feedback information and the sequence number 002 corresponding to message 2, thereby optimizing resource utilization and reducing database load.
[0151] Optionally, other network information, such as negative acknowledgement (NACK), explicit congestion notification (ECN), and congestion notification packet (CNP), can also be synchronized and operated using the same processing method described above.
[0152] It should be noted that during data transmission between devices, after the sending end sends data, the data is forwarded to the receiving end by a switch. However, this process may fail due to network instability or other reasons, causing the receiving end to fail to receive the message. Therefore, the sending end can only release its local buffer after confirming receipt of the message. If the message is not confirmed, the data needs to be retransmitted to ensure the validity of data transmission during communication. For example, when the second computing device fails to receive the message, it needs to retransmit the message to ensure reliable data transmission between network devices.
[0153] As one possible implementation, the network interface card (NIC) acquires the second feedback information.
[0154] The second feedback information is an exemplary name used to distinguish a particular feedback message. For example, the second feedback information is a message not received acknowledgment, indicating that the second computing device has not successfully received the second message. For example, the second feedback information is the information sent to the aggregation network interface card (NIC) after the second computing device has not successfully received message 3. The second feedback information is randomly delivered to either physical NIC 1 or physical NIC 2.
[0155] The second message includes a second sequence number, which indicates that the second message was sent by the first network interface card.
[0156] Optionally, the second feedback information is used to indicate that the second computing device has not successfully received the second message. This indicates that the second feedback information may be sent by the first network card or the second network card to the aggregation network card according to the instruction from the aggregation network card, or it may be actively reported by the first network card or the second network card to the aggregation network card (i.e., without the instruction from the aggregation network card). Specifically, as follows:
[0157] In one implementation method, the aggregated network card sends a fourth instruction message to the first network card or the second network card, and the aggregated network card receives a second feedback message forwarded from the first network card or the second network card.
[0158] The fourth instruction information is used to instruct the first network card or the second network card to send the second feedback information to the aggregation network card.
[0159] In the second implementation method, the aggregated network card receives second feedback information forwarded from the first network card or the second network card (reported proactively by the first network card or the second network card, without the need for the aggregated network card to trigger an instruction).
[0160] Alternatively, the aggregation network interface card (NIC) sends second reference information to the first NIC based on the second feedback information and the second serial number.
[0161] The second reference information is an exemplary name used to distinguish a certain reference information. The second reference information can be information generated by the aggregation network card based on the second feedback information and the second serial number. The second reference information is used to request the first network card to retransmit the second message.
[0162] Alternatively, two possible scenarios for the second reference information are provided below as examples, as follows:
[0163] In scenario one, the reference information is the second feedback information. In other words, the first network card directly resends the second message to the second computing device based on the second feedback information.
[0164] For example, referring to Table 1, the second message is message 3, the second sequence number is sequence number 003, and the network card corresponding to sending message 3 is physical network card 1. When the second feedback information is the information sent to the aggregation network card after the second computing device failed to receive message 3, the aggregation network card forwards the second feedback information and the sequence number 003 corresponding to message 3 to physical network card 1. Physical network card 1 confirms whether message 3 is a message sent by its own network card. If so, it resends message 3 to the second computing device until the aggregation network card receives feedback information sent to the aggregation network card after the second computing device successfully receives message 3.
[0165] In scenario two, the second reference information is the fifth instruction information, which instructs the first network interface card (NIC) to retransmit the second message. In other words, the first NIC retransmits the second message to the second computing device based on the instruction information from the aggregation NIC, and the second feedback information is still processed on the aggregation NIC.
[0166] For example, referring to Table 1, the second message is message 3, the second sequence number is sequence number 003, and the network card corresponding to sending message 3 is physical network card 1. When the second feedback information is the information sent to the aggregation network card after the second computing device fails to receive message 3, the aggregation network card sends the second feedback information and the sequence number 003 corresponding to message 3 to physical network card 1. Physical network card 1 directly resends message 3 to the second computing device according to the second feedback information and the sequence number 003 corresponding to message 3, until the second computing device successfully receives message 3 and sends feedback information to the aggregation network card.
[0167] In this application, on the one hand, compared to existing technologies that require a first computing device to split the packet before transmission and for upper-layer applications to be aware of the number of physical layer network cards (NICs), this application aggregates multiple physical NICs into an aggregated NIC. Subsequent external operations are handled by the application layer and the aggregated NIC, eliminating the need for the application layer to split the packet and for upper-layer applications to be aware of the number of physical layer NICs, thereby reducing network protocol stack overhead. Furthermore, existing technologies present the maximum bandwidth of the device to upper-layer applications as the maximum capability of the NIC / IO Die. However, by aggregating multiple physical NICs into an aggregated NIC, this application can achieve a maximum bandwidth exceeding the bandwidth limit of a single physical NIC.
[0168] On the other hand, in this application, the sequence number of the message and the feedback information from the second computing device are both synchronized to the aggregated network card and managed and configured uniformly by the aggregated network card. After the aggregated network card confirms the network card corresponding to the message being sent, it notifies the network card that sent the corresponding message to release the message cache. This can ensure reliable data transmission between network devices and effectively ensure that the data cached in the physical network card is released, avoiding the situation where a network card that needs to release the message cache cannot release it, resulting in a cache overflow.
[0169] The embodiment shown in Figure 4 provides a detailed explanation of the interaction principle between the processor, the aggregated network card, and the first network card. To facilitate understanding, Figure 5 illustrates a specific case where the aggregated network card and the first network card release the buffer of the first packet.
[0170] Please refer to Figure 5. Figure 5 is a schematic diagram of configuring a first network interface card (NIC) to release the buffer of a first packet, according to an embodiment of this application. As shown in Figure 5, the specific steps of Case 1 are as follows:
[0171] Step 11: Multiple physical network cards are aggregated into one aggregated network card.
[0172] Step 12: Processor 1 sends the raw message to the aggregated network card through bus switch 1.
[0173] Step 13: The aggregated network card configures the first network card according to the original message so that the first network card can send the first message to the second computing device.
[0174] Step 14: The aggregated network card configures the first network card according to the first feedback information and the first serial number so that the first network card releases the buffer of the first packet.
[0175] Please refer to Figure 6, which is a flowchart illustrating another data transmission method based on bus technology provided in this application embodiment. This data transmission method can also be called a message forwarding method based on bus switching technology. It should be understood that the names of methods, devices, and information in this application are merely examples, and their names can be arbitrarily replaced in specific implementations. This data transmission method is described from the perspective of the interaction between the aggregated network interface card (NIC), the first NIC, the second computing device, and the second NIC. Optionally, this data transmission method can be applied to the aforementioned data transmission system, such as the data transmission system shown in Figures 1 and 2.
[0176] The data transmission method includes one or more steps S601 to S605. It should be understood that, for ease of description, the method is described in the order of steps S601 to S605, and is not intended to limit the execution to this specific order. This application embodiment does not limit the order of execution, the execution time, or the number of executions of the above one or more steps; other steps may be interspersed as needed between or before these steps. Specifically, steps S601 to S605 are as follows:
[0177] Step S601: The aggregated network card sends the original message to the first network card.
[0178] Accordingly, the first network interface card (NIC) receives the raw packets sent by the aggregation NIC.
[0179] The aggregated network interface card (NIC) is formed by combining the first NIC and the second NIC. The aggregated NIC runs on the first computing device. The first computing device includes the first NIC, the second NIC, and a processor. The first computing device is a device with communication and computing capabilities. For example, the first computing device can be the cloud or a server. This application does not limit it in this way.
[0180] The first network interface card (NIC) and the second NIC are also devices with communication and computing capabilities. The first NIC or the second NIC is an exemplary name used to distinguish a particular NIC. For example, the first NIC or the second NIC can be physical NIC 1, physical NIC 2, physical NIC 3, or other NICs.
[0181] Step S602: The first network card generates the first packet based on the original packet.
[0182] The first message includes a first sequence number, which indicates that the first message was sent by the first network interface card.
[0183] For example, the aggregated network interface card (NIC) sends a raw message to the first NIC, which then generates a first message based on the raw message and sends the first message to the second computing device. After receiving the raw message from the aggregated NIC, the first NIC adds a first sequence number to the raw message to obtain the first message, and actively sends the first message to the second computing device (i.e., without the aggregated NIC's instruction trigger).
[0184] Optionally, the first sequence number is used to indicate that the first message was sent by the first network interface card (NIC), indicating that a mapping relationship is formed between the sequence number, the message, and the NIC, so that the NIC can find the message it sent. For example, taking the first message as message 1, message 1 carries a sequence number of 001, and the NIC that sent message 1 is physical NIC 1.
[0185] Step S603: The first network card sends a first message to the second computing device.
[0186] Accordingly, the second computing device receives the first message from the first network card.
[0187] The second computing device is a device with communication and computing capabilities. For example, the second computing device may be a cloud or a server, but this application does not limit it in this way.
[0188] Step S604: The second network card forwards the first feedback information to the first network card.
[0189] Accordingly, the first network card receives the first feedback information forwarded by the second network card.
[0190] The first feedback information is used to indicate that the second computing device has successfully received the first message.
[0191] It should be noted that detailed explanations of the specific terms in step S604 above can be found in the embodiment shown in Figure 5, and will not be repeated here.
[0192] For example, referring to Table 1, the first message is message 1, the first sequence number is sequence number 001, and the network card corresponding to sending message 1 is physical network card 1. When the first feedback information is the information sent by the second computing device to the aggregation network card after successfully receiving message 1, and the first feedback information randomly arrives at physical network card 2 in the first computing device, physical network card 2 confirms based on the first feedback information and sequence number 001 that message 1 is not a message sent by this network card, and then forwards the first feedback information to physical network card 1. Accordingly, physical network card 1 receives the first feedback information forwarded by physical network card 2.
[0193] Step S605: The first network card releases the buffer of the first packet based on the first feedback information and the first sequence number.
[0194] For example, referring to Table 1, after physical network card 1 receives the first feedback information forwarded by physical network card 2, physical network card 1 confirms that message 1 is a message sent by this network card according to the first feedback information and serial number 001, indicating that reliable data transmission between devices has been successfully achieved. Then, it directly releases message 1 cached by this network card, thereby optimizing resource utilization and reducing database load.
[0195] In one possible implementation, the first network card receives second feedback information sent by the second computing device.
[0196] The second feedback information is an exemplary name used to distinguish a particular feedback information. For example, the second feedback information is a message arrival confirmation message, used to indicate that the second computing device has successfully received the second message. For example, referring to Table 1, the second feedback information is the information sent by the second computing device to the aggregation network interface card (NIC) after successfully receiving message 2. The second feedback information arrives randomly on either physical NIC 1 or physical NIC 2.
[0197] The second message includes a second sequence number, which indicates that the second message was sent by the second network interface card (NIC). For example, message 2 includes sequence number 002, and the NIC corresponding to sending message 2 is physical NIC 2.
[0198] Optionally, if the first network interface card (NIC) determines that the second packet was not sent by the first NIC, it forwards the second feedback information to the second NIC, wherein the second feedback information is used to release the buffer of the second packet. For example, after receiving the second feedback information sent by the second computing device, physical NIC 1 confirms, based on the second feedback information and serial number 002, that packet 2 was not sent by this NIC, indicating that the send / receive path of packet 2 is inconsistent. To successfully release the buffer of packet 2 in the NIC, physical NIC 1 can forward the second feedback information to physical NIC 2.
[0199] In one possible implementation, the first network interface card (NIC) generates a third message based on the original message, sends the third message to the second computing device, then receives the third feedback information forwarded by the second NIC, and finally resends the third message to the second computing device.
[0200] The third message includes a third sequence number, which indicates that the third message was sent by the first network interface card (NIC). For example, referring to Table 1, message 3 includes sequence number 003, and the NIC corresponding to sending message 3 is physical NIC 1.
[0201] The third feedback information is used to indicate that the second computing device has not successfully received the third message, and the third feedback information is used to request the first network card to retransmit the third message.
[0202] For example, continuing with Table 1, when the third feedback information is the information sent to the aggregation network card by the second computing device after it failed to receive message 3, the second feedback information randomly arrives at physical network card 2. If physical network card 2 confirms, based on the third feedback information and serial number 003, that message 3 was not sent by this network card, it indicates that the send and receive paths of message 3 are inconsistent. In order to successfully release the buffer of message 3 in the network card, it forwards the third feedback information to physical network card 1. Correspondingly, after receiving the third feedback information, physical network card 1 confirms, based on the third feedback information and serial number 003, that message 3 was sent by this network card, and then directly resends message 3 to the second computing device until the second computing device successfully receives message 3, indicating that reliable data transmission between devices has been successfully achieved.
[0203] The embodiment shown in Figure 6 provides a detailed explanation of the interaction principle between the processor, the aggregated network card, and the first network card. To facilitate understanding, Figure 7 illustrates a specific case where the aggregated network card and the first network card release the buffer of the first packet.
[0204] Please refer to Figure 7. Figure 7 is a schematic diagram of another aggregation network card configuration provided in this application embodiment to enable the first network card to release the buffer of the first packet. As shown in Figure 7, the specific steps of Case 2 are as follows:
[0205] Step 21: Multiple physical network cards are aggregated into one aggregated network card.
[0206] Step 22: Processor 1 sends the raw message to the aggregated network card through bus switch 1.
[0207] Step 23: The aggregation network card sends the original message to the first network card.
[0208] Step 24: The first network card generates the first packet based on the original packet.
[0209] Step 25: The first network card sends the first message to the second computing device.
[0210] Step 26: The second network card forwards the first feedback information to the first network card.
[0211] Optionally, after receiving the first feedback information from the fourth network card, the second network card forwards the first feedback information to the first network card.
[0212] Step 27: The first network card releases the cache of the first packet based on the first feedback information and the first serial number.
[0213] The methods of the embodiments of this application have been described in detail above. The apparatus of the embodiments of this application is provided below.
[0214] It should be understood that the division of units in the apparatus provided in the embodiments of this application is only a logical functional division. In actual implementation, they can be fully or partially integrated into a single physical entity, or they can be physically separated. Furthermore, the units in the apparatus can be implemented by a processor calling software. For example, the apparatus includes a processor connected to a memory containing instructions. The processor calls the instructions stored in the memory to implement any of the above methods or to implement the functions of each unit of the apparatus. The processor is, for example, a general-purpose processor, such as a central processing unit (CPU) or a microprocessor, and the memory is either internal or external to the apparatus.
[0215] Alternatively, the units in the device can be implemented as hardware circuits. The functionality of some or all of the units can be achieved through the design of these hardware circuits, which can be understood as one or more processors. For example, in one implementation, the hardware circuit is an application-specific integrated circuit (ASIC). The functionality of some or all of the above units is achieved through the design of the logical relationships between the components within the circuit. In another implementation, the hardware circuit can be implemented using a programmable logic device (PLD). Taking a field-programmable gate array (FPGA) as an example, it can include a large number of logic gates. The connection relationships between the logic gates are configured through a configuration file, thereby achieving the functionality of some or all of the above units.
[0216] In the embodiments of this application, each unit in the device may be one or more processors (or processing circuits) configured to implement the above methods, such as: CPU, graphics processing unit (GPU), neural network processing unit (NPU), tensor processing unit (TPU), deep learning processing unit (DPU), microprocessor unit (MPU), digital signal processor (DSP), ASIC, FPGA, or a combination of at least two of these processor forms.
[0217] Furthermore, the units in the above devices can be integrated in whole or in part, or they can be implemented independently. In one implementation, these units are integrated together as a system-on-a-chip (SOC). The SOC may include at least one processor for implementing any of the above methods or for implementing the functions of the units in the device. The at least one processor can be of different types, such as including a CPU and an FPGA, or including a CPU and an AI processor, or including a CPU and a GPU, etc. Several possible devices are listed below.
[0218] Please refer to Figure 8, which is a schematic diagram of a data transmission device 80 based on bus technology provided in an embodiment of this application. Optionally, the data transmission device 80 can be a standalone device (such as a network interface card). Alternatively, the data transmission device 80 can also be a component within a standalone device, such as a chip or integrated circuit. The data transmission device 80 is used to implement the aforementioned data transmission method, such as the data transmission method shown in Figure 4 or Figure 6.
[0219] In one possible design, the data transmission device 80 includes a communication unit 801 and a processing unit 802. The communication unit 801 is used for sending and receiving messages, and the processing unit 802 is used for processing messages. The communication unit 801 and the processing unit 802 are used for collaborative processing. This data transmission device 80 is used to implement the aforementioned message forwarding method based on bus switching technology, such as the data transmission method shown in FIG4 or FIG6. Exemplarily, the data transmission device 80 is used, for example, to execute a method performed by an aggregated network interface card (NIC).
[0220] In one possible implementation, the communication unit 801 is configured to receive an original message sent by the processor. The processing unit 802 is configured to configure the first network interface card (NIC) according to the original message, such that the NIC sends a first message to the second computing device, wherein the first message includes a first sequence number indicating that the first message was sent by the first NIC. The processing unit 802 is further configured to obtain first feedback information, wherein the first feedback information indicates that the second computing device has successfully received the first message. The processing unit 802 is further configured to configure the first NIC according to the first feedback information and the first sequence number, such that the NIC releases the buffer of the first message.
[0221] In another possible implementation, in configuring the first network interface card (NIC) to release the buffer of the first packet based on the first feedback information and the first serial number, the processing unit 802 is specifically configured to: send first reference information to the first NIC based on the first feedback information and the first serial number, wherein the first reference information is used to release the buffer of the first packet.
[0222] In yet another possible implementation, the first reference information is the first feedback information.
[0223] In another possible implementation, the first reference information is a first indication information, wherein the first indication information is used to indicate the release of the first message in the buffer.
[0224] In another possible implementation, the processing unit 802 is further configured to acquire second feedback information, wherein the second feedback information indicates that the second computing device has not successfully received the second message, the second message including the second sequence number, the second sequence number indicating that the second message was sent by the first network interface card (NIC). The communication unit 801 is further configured to send second reference information to the first NIC based on the second feedback information and the second sequence number, wherein the second reference information is determined based on the second feedback information, and the second feedback information instructs the first NIC to retransmit the second message.
[0225] In another possible implementation, regarding the step of configuring the first network interface card (NIC) according to the original message to enable the NIC to send a first message to the second computing device, the processing unit 802 is specifically configured to: send the original message to the first NIC, so that the first NIC generates the first message based on the original message and sends the first message to the second computing device. In yet another possible implementation, regarding the step of configuring the first NIC according to the original message to enable the NIC to send a first message to the second computing device, the processing unit 802 is specifically configured to: generate the first message based on the original message; and send the first message to the first NIC, so that the first NIC sends the first message to the second computing device.
[0226] The embodiments of this application and the method embodiments shown above are based on the same concept and have the same technical effects. For the specific principles, please refer to the description of the embodiments shown above, which will not be repeated here.
[0227] Please refer to Figure 9, which is a schematic diagram of another data transmission device 90 based on bus technology provided in an embodiment of this application. Optionally, the data transmission device 90 can be a standalone device (such as a first network interface card). Alternatively, the data transmission device 90 can also be a component within a standalone device, such as a chip or integrated circuit. The data transmission device 90 is used to implement the aforementioned data transmission method, such as the data transmission method shown in Figure 4 or Figure 6.
[0228] In one possible design, the data transmission device 90 includes a communication unit 901 and a processing unit 902. The communication unit 901 is used for sending and receiving messages, and the processing unit 902 is used for processing messages. The communication unit 901 and the processing unit 902 are used for collaborative processing. This data transmission device 90 is used to implement the aforementioned data transmission method, such as the data transmission method shown in FIG4 or FIG6. Exemplarily, the data transmission device 90 is used, for example, to execute a method executed by a first network interface card (NIC).
[0229] In one possible implementation, the communication unit 901 is configured to receive the original packet sent by the aggregation network interface card (NIC). The processing unit 902 is configured to generate a first packet based on the original packet, wherein the first packet includes a first sequence number, which indicates that the first packet was sent by the first NIC. The communication unit 901 is further configured to send the first packet to a second computing device. The communication unit 901 is also configured to receive first feedback information forwarded by the second NIC, wherein the first feedback information indicates that the second computing device has successfully received the first packet. The processing unit 902 is further configured to release the buffer of the first packet based on the first feedback information and the first sequence number.
[0230] In another possible implementation, the communication unit 901 is further configured to receive second feedback information sent by the second computing device, wherein the second feedback information is used to indicate that the second computing device has successfully received the second message, the second message including a second sequence number, the second sequence number being used to indicate that the second message was sent by the second network card. The communication unit 901 is further configured to forward the second feedback information to the second network card if the first network card determines that the second message was not sent by the first network card, wherein the second feedback information is used to release the buffer of the second message.
[0231] In another possible implementation, the processing unit 902 is further configured to generate a third message based on the original message, wherein the third message includes a third sequence number, which indicates that the third message was sent by the first network interface card (NIC). The communication unit 901 is further configured to send the third message to the second computing device, wherein the third message includes a third sequence number, which indicates that the third message was sent by the first NIC. The communication unit 901 is further configured to receive third feedback information forwarded by the second NIC, wherein the third feedback information indicates that the second computing device has not successfully received the third message, and the third feedback information requests the first NIC to retransmit the third message; the communication unit 901 is also configured to retransmit the third message to the second computing device.
[0232] The embodiments of this application and the method embodiments shown above are based on the same concept and have the same technical effects. For the specific principles, please refer to the description of the embodiments shown above, which will not be repeated here.
[0233] Please refer to Figure 10, which is a schematic diagram of another data transmission device 100 based on bus technology provided in this application embodiment. The data transmission device 100 can be a standalone device, such as a network interface card (NIC) or a first NIC, or it can be a component included in a standalone device, such as a chip, software module, or integrated circuit. The data transmission device 100 may include at least one processor 1001 and a communication interface 1002. Optionally, it may also include at least one memory 1003. Further optionally, it may also include a connection line 1004, wherein the processor 1001, the communication interface 1002, and / or the memory 1003 are connected via the connection line 1004, and / or communicate with each other via the connection line 1004 to transmit control signals and / or data signals.
[0234] in:
[0235] Processor 1001 is a module that performs arithmetic and / or logical operations, and may specifically include one or more of the following modules: filter, modem, power amplifier, low noise amplifier (LNA), baseband processor, radio frequency processor, radio frequency circuit, central processing unit (CPU), application processor (AP), microcontroller unit (MCU), electronic control unit (ECU), graphics processing unit (GPU), microprocessor unit (MPU), application specific integrated circuit (ASIC), image signal processor (ISP), digital signal processor (DSP), field programmable gate array (FPGA), complex programmable logic device (CPLD), or coprocessor, etc.
[0236] The communication interface 1002 can be used to provide information input or output to at least one processor, or to receive signals sent externally and / or send signals to externally.
[0237] For example, communication interface 1002 may include interface circuitry.
[0238] For example, the communication interface 1002 may include a wired link interface such as an Ethernet cable, or a wireless link interface (Wi-Fi, Bluetooth, general wireless transmission, vehicle short-range communication technology and other short-range wireless communication technologies, etc.).
[0239] Optionally, the communication interface 1002 may also include a radio frequency transmitter, an antenna, etc. When the communication interface 1002 includes an antenna, the number of antennas can be one or more.
[0240] As one possible design, if the data transmission device 100 is a standalone device, the communication interface 1002 may include a receiver and a transmitter. The receiver and transmitter may be the same component or different components. When the receiver and transmitter are the same component, this component may be referred to as a transceiver.
[0241] As another possible design, if the data transmission device 100 is a chip or circuit, the communication interface 1002 may include an input interface and an output interface. The input interface and the output interface may be the same interface or they may be different interfaces.
[0242] Alternatively, the functions of the communication interface 1002 can be implemented by a transceiver circuit or a dedicated transceiver chip.
[0243] The memory 1003 provides storage space, in which data such as the operating system and computer programs can be stored. The memory 1003 can be one or a combination of several of the following: random access memory (RAM), read-only memory (ROM), erasable programmable read-only memory (EPROM), or compact disc read-only memory (CD-ROM).
[0244] The functions and operations of each module or unit in the data transmission device 100 listed above are merely illustrative examples.
[0245] Each functional unit in the data transmission device 100 can be used to implement the aforementioned communication method, such as the data transmission method shown in FIG4 or FIG6, for example, a method for executing the aggregated network card or the first network card.
[0246] Optionally, the processor 1001 may be a processor specifically designed to execute the aforementioned methods (for ease of distinction, referred to as a dedicated processor), or a processor that executes the aforementioned methods by calling a computer program (for ease of distinction, referred to as a dedicated processor). Optionally, at least one processor may include both dedicated processors and general-purpose processors.
[0247] Optionally, if the data transmission device 100 includes at least one memory 1003, and the processor 1001 implements the aforementioned communication method by calling a computer program, the computer program may be stored in the memory 1003.
[0248] The embodiments of this application and the method embodiments shown above are based on the same concept and have the same technical effects. For the specific principles, please refer to the description of the embodiments shown above, which will not be repeated here.
[0249] This application embodiment also provides a data transmission device cluster, as shown in FIG11. The data transmission device cluster 110 includes at least one data transmission device (e.g., including a first network card 1101 and a second network card 1102). The at least one data transmission device includes a processor and a memory. The memory is used to store computer instructions, which are loaded and executed by the processor to enable the at least one data transmission device to implement the aforementioned data transmission method, such as the bus-based data transmission method shown in FIG4 or FIG6.
[0250] This application also provides a computer-readable storage medium storing instructions that, when executed on at least one processor (or communication device), implement the aforementioned data transmission method, such as the bus-based data transmission method shown in FIG4 or FIG6.
[0251] This application also provides a computer program product, which includes computer instructions for implementing the aforementioned data transmission method, such as the bus-based data transmission method shown in FIG4 or FIG6.
[0252] It should be noted that, in the embodiments of this application, the words "exemplarily" or "for example" are used to indicate examples, illustrations, or explanations. Any embodiment or design scheme described as "exemplarily" or "for example" in this application should not be construed as being more preferred or advantageous than other embodiments or design schemes. Specifically, the use of the words "exemplarily" or "for example" is intended to present the relevant concepts in a specific manner.
[0253] In the embodiments of this application, "at least one" refers to one or more items, and "more than one" refers to two or more items. "At least one of the following" or similar expressions refer to any combination of these items, including any combination of a single item or a plurality of items.
[0254] For example, at least one of a, b, or c can be represented as: a, b, c, (a and b), (a and c), (b and c), or (a and b and c), where a, b, and c can be single or multiple. "AND / OR" describes the relationship between related objects, indicating that three relationships can exist. For example, A and / or B can represent: A alone, A and B simultaneously, or B alone, where A and B can be singular or plural. The character " / " generally indicates that the preceding and following related objects have an "OR" relationship.
[0255] Furthermore, unless otherwise stated, the use of ordinal numbers such as "first" and "second" in the embodiments of this application is for distinguishing multiple objects and is not for limiting the order, sequence, priority, or importance of multiple objects. Similarly, terms like "first node" and "second node" are merely for convenience in describing new parameters in different implementations and do not indicate differences in their execution operations, importance, structure, etc.
[0256] In the above embodiments, the term "when..." can be interpreted, depending on the context, as meaning "if...", "before...", "determined...", or "detected...". The above descriptions are merely optional embodiments of this application and are not intended to limit this application. Any modifications, equivalent substitutions, improvements, etc., made within the concept and principles of this application should be included within the protection scope of this application.
[0257] Those skilled in the art will understand that all or part of the steps of the above embodiments can be implemented by hardware or by a program instructing related hardware. The program can be stored in a computer-readable storage medium, such as a read-only memory, a disk, or an optical disk.
Claims
1. A data transmission method based on bus technology, characterized in that, The method, applied to a converged network interface card (NIC), wherein the NIC operates on a first computing device, the first computing device comprising a first NIC, a second NIC, and a processor, includes: Receive the original message sent by the processor; According to the original message, the first network card is configured to send a first message to the second computing device, wherein the first message includes a first sequence number, which is used to indicate that the first message is sent by the first network card; Obtain first feedback information, wherein the first feedback information is used to indicate that the second computing device has successfully received the first message; Based on the first feedback information and the first serial number, configure the first network interface card (NIC) to release the buffer of the first packet.
2. The method according to claim 1, characterized in that, The step of configuring the first network interface card (NIC) to release the buffer of the first packet based on the first feedback information and the first sequence number includes: Based on the first feedback information and the first sequence number, first reference information is sent to the first network interface card, wherein the first reference information is used to release the buffer of the first packet.
3. The method according to claim 1 or 2, characterized in that, The first reference information is the first feedback information.
4. The method according to claim 1 or 2, characterized in that, The first reference information is a first indication information, wherein the first indication information is used to indicate the release of the first message in the buffer.
5. The method according to any one of claims 1-4, characterized in that, The method further includes: Obtain second feedback information, wherein the second feedback information is used to indicate that the second computing device has not successfully received the second message, the second message includes the second sequence number, and the second sequence number is used to indicate that the second message was sent by the first network card; Based on the second feedback information and the second serial number, a second reference information is sent to the first network card, the second reference information being used to instruct the first network card to retransmit the second message.
6. The method according to any one of claims 1-5, characterized in that, The step of configuring the first network interface card (NIC) to send the first message to the second computing device based on the original message includes: The original message is sent to the first network interface card (NIC) so that the first NIC generates the first message based on the original message and sends the first message to the second computing device.
7. The method according to any one of claims 1-5, characterized in that, The step of configuring the first network interface card (NIC) to send the first message to the second computing device based on the original message includes: The first message is generated based on the original message; The first message is sent to the first network card, so that the first network card sends the first message to the second computing device.
8. A data transmission method based on bus technology, characterized in that, Applied to a first computing device, the first computing device including a first network interface card (NIC), a second NIC, and a processor, wherein the aggregated NIC runs on the first computing device, the method includes: The processor sends the original message to the aggregated network card; The aggregated network interface card (NIC) configures the first NIC according to the original message so that the first NIC sends a first message to the second computing device, wherein the first message includes a first sequence number, which is used to indicate that the first message is sent by the first NIC. The aggregation network card acquires first feedback information, wherein the first feedback information is used to indicate that the second computing device has successfully received the first message; The aggregated network interface card (NIC) configures the first NIC according to the first feedback information and the first serial number so that the first NIC releases the buffer of the first packet.
9. A data transmission method based on bus technology, characterized in that, A first network interface card (NIC) is applied in a first computing device, the first computing device including the first NIC, a second NIC, and a processor, the aggregated NIC running on the first computing device, the method comprising: Receive the original packets sent by the aggregated network interface card; A first message is generated based on the original message, wherein the first message includes a first sequence number, which is used to indicate that the first message is sent by the first network interface card; Send the first message to the second computing device; The second network interface card (NIC) forwards first feedback information, wherein the first feedback information is used to indicate that the second computing device has successfully received the first message; Based on the first feedback information and the first sequence number, release the cache of the first message.
10. The method according to claim 9, characterized in that, The method further includes: The second feedback information sent by the second computing device is received, wherein the second feedback information is used to indicate that the second computing device has successfully received the second message, the second message includes a second sequence number, and the second sequence number is used to indicate that the second message was sent by the second network card; If the first network interface card (NIC) determines that the second packet was not sent by the first NIC, it forwards the second feedback information to the second NIC, wherein the second feedback information is used to release the buffer of the second packet.
11. The method according to claim 9 or 10, characterized in that, The method further includes: A third message is generated based on the original message, wherein the third message includes a third sequence number, which is used to indicate that the third message is sent by the first network interface card; Send the third message to the second computing device; Receive third feedback information forwarded by the second network card, wherein the third feedback information is used to indicate that the second computing device has not successfully received the third message, and the third feedback information is used to request the first network card to retransmit the third message; The third message is resent to the second computing device.
12. A data transmission method based on bus technology, characterized in that, Applied to a first computing device, the first computing device including a first network interface card (NIC), a second NIC, and a processor, wherein the aggregated NIC runs on the first computing device, the method includes: The aggregated network card sends the processor's original message to the first network card; The first network interface card (NIC) generates a first message based on the original message, wherein the first message includes a first sequence number, which is used to indicate that the first message is sent by the first NIC. The first network interface card sends the first message to the second computing device; The first network interface card receives the first feedback information forwarded by the second network interface card, wherein the first feedback information is used to indicate that the second computing device has successfully received the first message; The first network interface card releases the cache of the first packet based on the first feedback information and the first sequence number.
13. A data transmission device based on bus technology, characterized in that, The data transmission device includes a communication unit and a processing unit, wherein: The communication unit is used to receive raw messages sent by the processor; The processing unit is configured to configure the first network interface card (NIC) according to the original message so that the first NIC sends a first message to the second computing device, wherein the first message includes a first sequence number, and the first sequence number is used to indicate that the first message is sent by the first NIC. The processing unit is further configured to acquire first feedback information, wherein the first feedback information is used to indicate that the second computing device has successfully received the first message; The processing unit is further configured to configure the first network interface card (NIC) according to the first feedback information and the first serial number so that the first NIC releases the buffer of the first packet.
14. The apparatus according to claim 13, characterized in that, In configuring the first network interface card (NIC) according to the first feedback information and the first serial number to release the buffer of the first packet, the processing unit is specifically used for: Based on the first feedback information and the first sequence number, first reference information is sent to the first network interface card, wherein the first reference information is used to release the buffer of the first packet.
15. The apparatus according to claim 13 or 14, characterized in that, The first reference information is the first feedback information.
16. The apparatus according to claim 13 or 14, characterized in that, The first reference information is a first indication information, wherein the first indication information is used to indicate the release of the first message in the buffer.
17. The apparatus according to any one of claims 13-16, characterized in that, The processing unit is further configured to obtain second feedback information, wherein the second feedback information is configured to indicate that the second computing device has not successfully received the second message, the second message includes a second sequence number, and the second sequence number is configured to indicate that the second message was sent by the first network card; The communication unit is further configured to send second reference information to the first network card based on the second feedback information and the second sequence number, wherein the second reference information is used to instruct the first network card to retransmit the second message.
18. The apparatus according to any one of claims 13-17, characterized in that, In configuring the first network interface card (NIC) to send the first NIC to the second computing device based on the original message, the processing unit is specifically configured to: The original message is sent to the first network interface card (NIC) so that the first NIC generates the first message based on the original message and sends the first message to the second computing device.
19. The apparatus according to any one of claims 13-17, characterized in that, In configuring the first network interface card (NIC) to send the first NIC to the second computing device based on the original message, the processing unit is specifically configured to: The first message is generated based on the original message; The first message is sent to the first network card, so that the first network card sends the first message to the second computing device.
20. A data transmission device based on bus technology, characterized in that, The data transmission device includes a communication unit and a processing unit, wherein: The communication unit is used to receive raw messages sent by the aggregation network card; The processing unit is configured to generate a first message based on the original message, wherein the first message includes a first sequence number, and the first sequence number is used to indicate that the first message is sent by a first network interface card; The communication unit is also used to send the first message to the second computing device; The communication unit is further configured to receive first feedback information forwarded by the second network card, wherein the first feedback information is used to indicate that the second computing device has successfully received the first message; The processing unit is further configured to release the cache of the first message based on the first feedback information and the first sequence number.
21. The apparatus according to claim 20, characterized in that, The communication unit is further configured to receive second feedback information sent by the second computing device, wherein the second feedback information is configured to indicate that the second computing device has successfully received the second message, the second message including a second sequence number, the second sequence number being configured to indicate that the second message was sent by the second network card; The communication unit is further configured to forward the second feedback information to the second network card when the first network card determines that the second message was not sent by the first network card, wherein the second feedback information is used to release the buffer of the second message.
22. The apparatus according to claim 20 or 21, characterized in that, The processing unit is further configured to generate a third message based on the original message, wherein the third message includes a third sequence number, and the third sequence number is used to indicate that the third message is sent by the first network interface card; The communication unit is also used to send the third message to the second computing device; The communication unit is further configured to receive third feedback information forwarded by the second network card, wherein the third feedback information is configured to indicate that the second computing device has not successfully received the third message, and the third feedback information is configured to request the first network card to retransmit the third message; The communication unit is also used to resend the third message to the second computing device.
23. A data transmission device cluster, characterized in that, The data transmission device cluster includes at least one data transmission device, the at least one data transmission device including a processor and a memory; the memory is used to store computer instructions, which are loaded and executed by the processor to enable the at least one data transmission device to implement the method as described in any one of claims 1-12.
24. A computer-readable storage medium, characterized in that, The computer-readable storage medium is used to store a computer program, the computer program including instructions for performing the method as described in any one of claims 1-12.
25. A computer program product, characterized in that, include: Instructions or computer programs; When the instructions or the computer program are executed, the method described in any one of claims 1-12 is implemented.