Method and apparatus for transmitting a packet
By introducing HCRC and sequence number update mechanisms into the message, the problems of out-of-order retransmission relying on subsequent messages and timeout retransmission wasting bandwidth are solved, realizing a low-latency message retransmission scheme, avoiding network bandwidth waste and reducing retransmission latency.
Patent Information
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- HUAWEI TECH CO LTD
- Filing Date
- 2021-12-15
- Publication Date
- 2026-07-03
AI Technical Summary
Existing out-of-order retransmission technology relies on subsequent packets to trigger, and timeout retransmission increases network latency, while sending extra packets wastes network bandwidth, failing to effectively solve the problem of bit error and packet loss.
By introducing a header cyclic redundancy check (HCRC) and sequence number update mechanism into the message, the network device updates the HCRC and sequence number when it detects a CRC error and sends the updated message. The destination device confirms the lost message based on the sequence number and triggers retransmission, thus avoiding reliance on subsequent messages.
It achieves a reduction in packet retransmission latency while avoiding network bandwidth waste, similar to out-of-order retransmission, without relying on subsequent packets to trigger it, thus reducing the latency increase of timeout retransmission.
Smart Images

Figure CN116266929B_ABST
Abstract
Description
Technical Field
[0001] This application relates to the field of communications, and more specifically, to a method and apparatus for message transmission. Background Technology
[0002] With the explosive growth in data center scale and bandwidth demands, the impact of network packet loss is becoming increasingly significant. Network packet loss can be categorized into three main types: congestion packet loss, error packet loss, and other packet loss. Congestion packet loss is strongly correlated with traffic patterns and bandwidth utilization; for example, transmission from a high-bandwidth link to a low-bandwidth link, or multiple ports competing for a single port, can all cause congestion packet loss. Error packet loss is not correlated with traffic patterns and bandwidth utilization; its main causes are connector contamination, fiber optic cable damage, and transceiver or laser attenuation. This type of packet loss is unavoidable and is gradually becoming the primary cause of packet loss in data centers. Other packet loss is mainly caused by system hardware and software defects, incorrect parameter configurations, and system power outages.
[0003] Remote direct memory access over converged Ethernet (RoCE) is a network protocol that allows remote direct memory access (RDMA) to be used on Ethernet. It relies on link-layer flow control mechanisms to avoid congestion and packet loss, achieving good performance. Therefore, this technology is widely used in data center networks. However, as data center port speeds and network hop counts increase, the probability of packet loss due to bit errors also increases, directly limiting the performance of RoCE networks.
[0004] Currently, out-of-order retransmission and timeout retransmission techniques have been proposed to address the problem of packet loss and bit errors. However, existing out-of-order retransmission techniques rely on the presence of subsequent packets to trigger; without subsequent packets, the out-of-order retransmission mechanism cannot be triggered. Although timeout retransmission does not depend on subsequent packets, the timeout retransmission time is much longer than the out-of-order retransmission time. Therefore, once a timeout retransmission is sent, network transmission latency will increase dramatically.
[0005] Furthermore, to address potential packet loss due to errors, an additional identical packet can be sent via both the source and destination RDMA network cards. While this approach avoids the surge in network latency caused by timeout retransmissions, it wastes network bandwidth because an extra packet needs to be sent each time. Summary of the Invention
[0006] This application provides a method and apparatus for message transmission that can reduce message retransmission latency while avoiding network bandwidth waste.
[0007] Firstly, a method for transmitting a message is provided, which can be executed by a network device or a chip or chip system on the network device side. The method includes: receiving a first message from a first device, the first message including a first cyclic redundancy check (CRC), a first header cyclic redundancy check (HCRC), and a first sequence number; when a first CRC error is detected, determining whether the first HCRC is correct; if the first HCRC is determined to be correct, updating the first sequence number to a second sequence number, the second sequence number being greater than the first sequence number; and sending an updated first message to a second device, the updated first message including the second sequence number.
[0008] Based on the above scheme, when the first CRC in the first packet received by the network device is correct, the network device determines whether the first HCRC in the first packet is correct. If the first HCRC is correct, the network device updates the first sequence number in the first packet to the second sequence number and sends the updated first packet to the second device. The updated first packet includes the second sequence number, which is greater than the first sequence number. When the second device / destination device receives the updated first packet and finds that the packet with the first sequence number / preceding packet has not been received, it will discard the updated first packet (the packet with the second sequence number) and subsequent packets, and send a NACK packet to the first device / source device. The NACK packet includes the first sequence number. The first device then retransmits the first packet to the second device based on the received NACK packet. The retransmission time in this application embodiment is equivalent to the out-of-order retransmission time in the prior art, but it does not depend on the triggering of subsequent packets. Compared with timeout retransmission technology and extra transmission, the packet retransmission scheme proposed in this application embodiment can reduce the latency of packet retransmission while avoiding network bandwidth waste.
[0009] In conjunction with the first aspect, in some implementations of the first aspect, determining whether the first HCRC is correct when the first CRC error is detected includes: when the first CRC error is detected, determining whether the first message includes the first HCRC; if it is determined that the first message includes the first HCRC, then determining whether the first HCRC is correct.
[0010] In conjunction with the first aspect, in some implementations of the first aspect, the first message further includes a first ICRC; the step of updating the first sequence number to a second sequence number if the first HCRC is determined to be correct includes: if the first HCRC is determined to be correct, updating the first sequence number to a second sequence number, updating the first CRC to a second CRC, updating the first HCRC to a second HCRC, and updating the first ICRC to a second ICRC; the updated first message further includes the second CRC, the second HCRC, and the second ICRC.
[0011] In conjunction with the first aspect, in some implementations of the first aspect, the method further includes: when the first CRC is detected to be correct, updating the first HCRC to a second HCRC, updating the first CRC to a second CRC, and updating the first ICRC to a second ICRC; sending the updated first message to the second device, wherein the updated first message includes the second CRC, the second HCRC, the second ICRC, and the first sequence number.
[0012] In conjunction with the first aspect, in some implementations of the first aspect, the method further includes: when the first CRC error is detected, if the first HCRC error is determined, then the first message is discarded.
[0013] Secondly, a method for transmitting a message is provided, which can be executed by a network device or a chip or chip system on the network device side. The method includes: receiving a first message from a first device, the first message including a first cyclic redundancy check (CRC); when the first CRC is detected to be correct, updating a reserved field in the first message with a first header cyclic redundancy check (HCRC), the first HCRC being used to verify the header information of the first message; and sending an updated first message to a second device, the updated first message including the first HCRC.
[0014] Based on the above scheme, the network device receives a first packet from the first device. The first packet includes a first CRC and a first sequence number. When the first CRC is detected to be correct, the network device updates the reserved field in the first packet to a first HCRC and the first CRC to a second CRC, and sends the updated first packet to the second device. The updated first packet includes the first HCRC and the second CRC. When the second device detects a second CRC error, the second device can determine whether the first HCRC is correct. If the first HCRC is determined to be correct, the second device updates the first sequence number to the second sequence number, causing the destination device to send a NACK packet to the source device. The NACK packet includes the first sequence number, thereby triggering the source device to retransmit the first packet based on the received NACK packet. The retransmission time of this embodiment is equivalent to the out-of-order retransmission time in the prior art, but it does not depend on the triggering of subsequent packets. Compared with timeout retransmission technology and extra transmission, the retransmission scheme proposed in this embodiment can reduce the latency of packet retransmission while avoiding network bandwidth waste.
[0015] In conjunction with the second aspect, in some implementations of the second aspect, the step of updating the reserved field in the first message to the first header cyclic redundancy check code (HCRC) when the first CRC is detected to be correct includes: when the first CRC is detected to be correct, determining whether the first message includes the first HCRC; if it is determined that the first message does not include the first HCRC, then updating the reserved field in the first message to the first HCRC.
[0016] In conjunction with the second aspect, in some implementations of the second aspect, the first message further includes a first ICRC and a first sequence number; the step of updating the reserved field in the first message to a first header cyclic redundancy check code (HCRC) when the first CRC is detected to be correct includes: updating the reserved field in the first message to the first HCRC, updating the first CRC to a second CRC, and updating the first ICRC to a second ICRC when the first CRC is detected to be correct; the updated first message further includes the second CRC, the second ICRC, and the first sequence number.
[0017] In conjunction with the second aspect, in some implementations of the second aspect, the method further includes: discarding the first message when the first CRC error is detected.
[0018] Thirdly, a communication device is provided, which can be applied to the network device described in the first aspect. The device includes: a receiving module for receiving a first message from a first device, the first message including a first cyclic redundancy check (CRC), a first header cyclic redundancy check (HCRC), and a first sequence number; a processing module for determining whether the first HCRC is correct when a first CRC error is detected; the processing module is further configured to update the first sequence number to a second sequence number if the first HCRC is determined to be correct, the second sequence number being greater than the first sequence number; and a sending module for sending the updated first message to a second device, the updated first message including the second sequence number.
[0019] In conjunction with the third aspect, in some implementations of the third aspect, the processing module is specifically used to: when the first CRC error is detected, determine whether the first message includes the first HCRC; if it is determined that the first message includes the first HCRC, then determine whether the first HCRC is correct.
[0020] In conjunction with the third aspect, in some implementations of the third aspect, the first message further includes a first ICRC; the processing module is specifically used to: if it is determined that the first HCRC is correct, update the first sequence number to the second sequence number, update the first CRC to the second CRC, update the first HCRC to the second HCRC, and update the first ICRC to the second ICRC; the updated first message further includes the second CRC, the second HCRC, and the second ICRC.
[0021] In conjunction with the third aspect, in some implementations of the third aspect, the processing module is further configured to: when the first CRC is detected to be correct, update the first HCRC to the second HCRC, update the first CRC to the second CRC, and update the first ICRC to the second ICRC; send the updated first message to the second device, wherein the updated first message includes the second CRC, the second HCRC, the second ICRC, and the first sequence number.
[0022] In conjunction with the third aspect, in some implementations of the third aspect, the processing module is further configured to, when the first CRC error is detected, discard the first message if the first HCRC error is determined to be an error.
[0023] Fourthly, a communication device is provided, which can be applied to the network device described in the second aspect. The device includes: a receiving module for receiving a first message from a first device, the first message including a first cyclic redundancy check (CRC); a processing module for updating a reserved field in the first message to a first header cyclic redundancy check (HCRC) when the first CRC is detected to be correct, the first HCRC being used to verify the header information of the first message; and a sending module for sending the updated first message to a second device, the updated first message including the first HCRC.
[0024] In conjunction with the fourth aspect, in some implementations of the fourth aspect, the processing module is specifically used to: when the first CRC is detected to be correct, determine whether the first message includes the first HCRC; if it is determined that the first message does not include the first HCRC, then update the reserved field in the first message to the first HCRC.
[0025] In conjunction with the fourth aspect, in some implementations of the fourth aspect, the first message further includes a first ICRC and a first sequence number; the processing module is specifically used to update the reserved field in the first message to the first HCRC, update the first CRC to the second CRC, and update the first ICRC to the second ICRC when the first CRC is detected to be correct; the updated first message further includes the second CRC, the second ICRC, and the first sequence number.
[0026] In conjunction with the fourth aspect, in some implementations of the fourth aspect, the processing module is further configured to discard the first message when the first CRC error is detected.
[0027] Fifthly, a communication device is provided, including a processor and a transceiver, the transceiver being configured to receive computer code or instructions and transmit them to the processor, the processor executing the computer code or instructions to implement the method in any possible implementation of any of the above aspects.
[0028] In a sixth aspect, a communication device is provided, including a processor and a transceiver, the transceiver being configured to receive computer code or instructions and transmit them to the processor, the processor executing the computer code or instructions to implement the method in any one of the possible implementations of any two of the above aspects.
[0029] In a seventh aspect, a communication device is provided, comprising: an input / output interface and a logic circuit, wherein the input / output interface is used to acquire input information and / or output information; and the logic circuit is used to execute a method in any possible implementation of any of the above aspects, processing the input information and / or generating output information.
[0030] Eighthly, a computer-readable storage medium is provided having a computer program stored thereon, which, when executed by a communication device, causes the communication device to implement the method in any possible implementation of any of the preceding aspects.
[0031] Ninth aspect, a computer program product comprising instructions, which, when executed by a computer, cause a communication device to implement the method in any possible implementation of any of the preceding aspects.
[0032] The retransmission time of this application embodiment is equivalent to the out-of-order retransmission time in the prior art, but it does not depend on the triggering of subsequent packets. Compared with timeout retransmission technology and extra transmission, the retransmission scheme proposed in this application embodiment can reduce the latency of packet retransmission while avoiding network bandwidth waste. Attached Figure Description
[0033] Figure 1 This is a schematic diagram of the system architecture applicable to the embodiments of this application;
[0034] Figure 2 This is a schematic interactive flowchart illustrating out-of-order retransmission;
[0035] Figure 3 This is a schematic interactive flowchart illustrating another type of out-of-order retransmission;
[0036] Figure 4 This is a schematic interactive flowchart illustrating a timeout retransmission.
[0037] Figure 5 This is another schematic interactive flowchart for timeout retransmission;
[0038] Figure 6 It is an illustrative interactive flowchart that is sent as an additional message;
[0039] Figure 7 This is another additional schematic flowchart of the interaction process;
[0040] Figure 8 This is a schematic diagram of a message format;
[0041] Figure 9 This is a schematic diagram of a message format proposed in an embodiment of this application;
[0042] Figure 10This is a schematic flowchart illustrating a message transmission method proposed in an embodiment of this application.
[0043] Figure 11 This is an example of message transmission according to an embodiment of this application;
[0044] Figure 12 This is a schematic flowchart illustrating another message transmission method proposed in the embodiments of this application;
[0045] Figure 13 This is another example of message transmission according to an embodiment of this application;
[0046] Figure 14 This is a schematic block diagram of a communication device according to an embodiment of this application;
[0047] Figure 15 This is a schematic block diagram of another communication device according to an embodiment of this application;
[0048] Figure 16 This is a schematic block diagram of a communication device according to an embodiment of this application. Detailed Implementation
[0049] The technical solutions in this application will now be described with reference to the accompanying drawings.
[0050] The embodiments of this application can be applied to various communication systems, such as wireless local area network (WLAN), narrowband Internet of Things (NB-IoT), global system for mobile communications (GSM), enhanced data rate for GSM evolution (EDGE), wideband code division multiple access (WCDMA), code division multiple access 2000 (CDMA2000), time division-synchronization code division multiple access (TD-SCDMA), long term evolution (LTE), satellite communication, 5th generation (5G) systems, or new communication systems that will emerge in the future.
[0051] The communication system applicable to this application includes one or more transmitting ends and one or more receiving ends. Signal transmission between the transmitting end and the receiving end can be via radio waves, or via transmission media such as visible light, laser, infrared, and optical fiber.
[0052] For example, one of the sending end and the receiving end can be a terminal device, and the other can be a network device. For example, both the sending end and the receiving end can be terminal devices.
[0053] The terminal devices involved in this application embodiment may include various handheld devices, vehicle-mounted devices, wearable devices, computing devices, or other processing devices connected to a wireless modem with wireless communication capabilities. The terminal may be a mobile station (MS), subscriber unit, user equipment (UE), cellular phone, smartphone, wireless data card, personal digital assistant (PDA) computer, tablet computer, wireless modem, handset, laptop computer, machine-type communication (MTC) terminal, etc. Among them, user equipment includes vehicle user equipment.
[0054] For example, network devices can be evolved Node B (eNB), radio network controller (RNC), Node B (NB), base station controller (BSC), base transceiver station (BTS), home evolved Node B (or home Node B (HNB), baseband unit (BBU), access point (AP), wireless relay node, wireless backhaul node, transmission point (TP), or transmission and reception point (TRP) in a wireless fidelity (WIFI) system. They can also be gNB or transmission point (e.g., TRP or TP) in new radio (NR), one or more antenna panels of a base station in NR, or network nodes constituting a gNB or transmission point, such as a building baseband unit (BBU) or distributed unit. The network equipment can be any type of unit (DU), or it can be in-vehicle equipment, wearable devices, network equipment in 5G networks, or network equipment in future PLMN networks, etc., without limitation.
[0055] Network equipment comes in a wide variety of forms. For example, in product implementation, the BBU can be integrated with a radio frequency unit (RFU) within the same device, which is connected to the antenna array via cables (e.g., but not limited to feeders). Alternatively, the BBU can be separate from the RFU, connected via fiber optic cable, and communicate using, for example, but not limited to, the Common Public Radio Interface (CPRI) protocol. In this case, the RFU is typically called a remote radio unit (RRU), which is connected to the antenna array via cables. Furthermore, the RRU can also be integrated with the antenna array; for example, this structure is used in currently available active antenna units (AAUs).
[0056] Furthermore, the BBU can be further decomposed into multiple parts. For example, based on the real-time nature of the services processed, the BBU can be further subdivided into centralized units (CUs) and distributed units (DUs). CUs are responsible for handling non-real-time protocols and services, while DUs are responsible for handling physical layer protocols and real-time services. Moreover, some physical layer functions can be separated from the BBU or DU and integrated into the AAU.
[0057] like Figure 1 The diagram illustrates the system architecture applicable to embodiments of this application. The source device transmits messages to the destination device through at least one intermediate device. The source and destination devices can be terminal devices or other devices. The intermediate device is a network device, such as a switch or router; the source device can be a source RDMA network interface card (Src RDMA network interface card, Src RNIC), and the destination device can be a destination RDMA network interface card (DstRDMA network interface card, Dst RNIC).
[0058] The embodiments of this application can be applied to the scenario of active-active data centers in the same city in the financial sector, where the data centers are 50 to 100 kilometers apart, and the transaction system has the requirement for synchronous / asynchronous data transmission, which requires long-distance, low-latency transmission.
[0059] A message is a unit of data exchanged and transmitted in a network; it is a block of data that a station sends at one time. A message contains complete data information to be sent, and its length varies greatly, being unlimited and variable.
[0060] With the explosive growth in data center scale and bandwidth demands, the impact of network packet loss is becoming increasingly significant. Network packet loss can be categorized into three main types:
[0061] (1) Congestion packet loss: This type of packet loss is strongly correlated with traffic patterns and bandwidth utilization. For example, transmission from a high-bandwidth link to a low-bandwidth link or multiple ports competing for a single port can cause congestion packet loss. This type of packet loss can be avoided through link-layer priority flow control (PFC) mechanisms.
[0062] (2) Packet loss with bit errors. This type of packet loss is unrelated to traffic models and bandwidth utilization. The main causes are connector contamination, fiber damage, and attenuation of transceivers or lasers. This type of packet loss is unavoidable and is gradually becoming the main cause of packet loss in data centers. For example, when the critical bit error rate (BER) is equal to 1e-15, a 100Gbps link will experience one packet loss on average every 3 hours. In addition, the bit error rate of the entire system increases approximately linearly with the increase of network hop count.
[0063] (3) Other packet loss, which is mainly caused by system software and hardware defects (bugs), parameter configuration errors, and system power outages.
[0064] RoCE is a network protocol that allows the use of RDMA over Ethernet. It relies on link-layer flow control mechanisms to avoid congestion and packet loss, achieving good performance. Therefore, this technology is widely used in data center networks. However, as data center port speeds and network hop counts increase, the probability of packet loss due to bit errors becomes increasingly higher, directly limiting the performance of RoCE networks.
[0065] like Figure 2 The diagram illustrates a schematic interactive flowchart for out-of-order retransmission. The source RDMA network card sends four RoCE packets to the destination RDMA network card, with packet sequence numbers (PSNs) ranging from 0 to 3. After receiving packets with PSN 0 and PSN 1, the destination RDMA network card sends acknowledgment (ACK) packets 0 and ACK 1 to the source RDMA network card, respectively. Due to a bit error during transmission, the switch discards the packet with PSN 2, while subsequent normal packets are forwarded. Upon receiving the packet with PSN 3, the destination RDMA network card discovers that the preceding packet with PSN 2 was not received. It then discards the received PSN 3 and its subsequent packets, and simultaneously sends a negative acknowledgement (NACK) packet 2 to the source RDMA network card, where sequence number 2 indicates that the destination RDMA network card did not receive the packet with PSN 2. After receiving a NACK 2 message, the source RDMA network card will retransmit PSN 2 and subsequent messages. This technology is called Go-Back-N retransmission technology, which means retransmitting from the lost message onwards. It should be understood that the source RDMA network card can also be called the sending-side network card or the sending end; the destination RDMA network card can also be called the receiving-side network card or the receiving end.
[0066] like Figure 3The diagram illustrates another out-of-order retransmission process. The source RDMA network card sends four RoCE packets to the destination RDMA network card, with PSNs ranging from 0 to 3. Due to a bit error during transmission, the switch discards the packet with PSN 2, while subsequent normal packets are forwarded. Upon receiving the packet with PSN 3, the destination RDMA network card discovers that the preceding packet with PSN 2 was missing. It then discards all received packets and sends a NACK 0 packet back to the source RDMA network card. Upon receiving the NACK 0 packet, the source RDMA network card retransmits the packet with PSN 0 and all subsequent packets. This technique is called Go-Back-0 retransmission, meaning that after a packet loss, it retransmits from the very beginning.
[0067] Because the destination RDMA network card detects out-of-order packets and immediately replies with a NACK packet, this retransmission technique can be called out-of-order retransmission. If we ignore the transmission intervals of PSN 2 and PSN 3 and the additional processing overhead of the sending / receiving network cards, the entire out-of-order retransmission time is approximately one round-trip time (RTT). Although the out-of-order retransmission time is approximately only one RTT, this technique relies on the presence of subsequent packets to trigger; without subsequent packets, the out-of-order retransmission mechanism cannot be triggered.
[0068] like Figure 4 The diagram illustrates a schematic interactive flowchart for timeout retransmission. The source RDMA network card sends three RoCE packets to the destination RDMA network card, with PSNs ranging from 0 to 2. The packet with PSN 2 is dropped by the switch due to a bit error during transmission. Because the packet loss occurs in the last packet, the source RDMA network card cannot detect whether the destination RDMA network card has received the corresponding packet for an extended period, triggering the source RDMA network card to retransmit the corresponding packet. This retransmission technique is called timeout retransmission.
[0069] like Figure 5 The diagram illustrates another interactive flowchart for timeout retransmission. The source RDMA network card sends three RoCE packets to the destination RDMA network card, with PSNs ranging from 0 to 2. After receiving the packet with PSN 2, the destination RDMA network card sends an ACK 2 packet to the source RDMA network card. Due to a bit error during transmission, the switch discards the ACK 2 packet upon receiving it. If the source RDMA network card cannot detect whether the destination RDMA network card has received the corresponding packet for an extended period, it will trigger the source RDMA network card to retransmit the corresponding packet.
[0070] If the timeout retransmission time is set too short, the increased end-to-end transmission time caused by network congestion will frequently trigger timeout retransmissions, resulting in wasted network bandwidth. Therefore, the timeout retransmission time is generally longer than the out-of-order retransmission time.
[0071] Although timeout retransmission does not depend on subsequent packets, the network transmission latency will increase sharply once a timeout retransmission is sent because the timeout retransmission time is much longer than the out-of-order retransmission time.
[0072] like Figure 6 and Figure 7 The diagram illustrates the interactive flow of the additional transmission. To address potential packet loss due to errors, an additional identical packet can be sent via the source / destination RDMA network interface card. While this approach avoids the surge in network latency caused by timeout retransmissions, it wastes network bandwidth because an extra packet is sent each time.
[0073] Packet loss and bit errors are increasingly common in networks, significantly reducing system throughput and increasing transmission latency. Traditional solutions for packet loss and bit errors include out-of-order retransmission and timeout retransmission. Out-of-order retransmission greatly reduces retransmission time compared to timeout retransmission, but it requires subsequent packets to be triggered. While timeout retransmission does not depend on subsequent packets, it causes a surge in transmission latency. Furthermore, extra packet transmission mechanisms, although able to address the increased latency caused by retransmissions and independent of subsequent packets, waste network bandwidth by sending these extra packets.
[0074] Therefore, this application proposes a message transmission method that can reduce message retransmission latency while avoiding network bandwidth waste.
[0075] To facilitate understanding of the embodiments of this application, a brief introduction to the message format is provided.
[0076] like Figure 8 The diagram illustrates a message format. The message includes multiple fields, including an extended transport header (ETH field), an Internet Protocol (IP) field, a User Datagram Protocol (UDP) field, a base transport header (BTH) field, a payload field, an invariant cyclic redundancy check (ICRC) field, and a cyclic redundancy check (CRC) field.
[0077] like Figure 9 The diagram illustrates a message format proposed in an embodiment of this application. The message includes multiple fields, including an ETH field, an IP field, a UDP field, a BTH field, an extended transport header field, a negative payload field, an ICRC field, a CRC field, and a header cyclic redundancy check (HCRC) field. Figure 9 The message format shown is to Figure 8 In the message format shown, the reserved field of the BTH field is replaced with HCRC. HCRC can be the standard CRC8. HCRC is mainly used to verify the correctness of the ETH, IP, UDP, and BTH fields during transmission. The BTH field includes the PSN, and BTH falls within the scope of HCRC verification.
[0078] like Figure 10 The diagram illustrates a schematic flow chart of a message transmission method 1000 according to an embodiment of this application. In this embodiment, the network device (intermediate device) can be a switch; the first device can be a source device / source RDMA network card, for example, the first device can be a terminal device; the second device can be a destination device / destination RDMA network card, for example, the second device can be a terminal device.
[0079] 1010, the first device sends a first message to the network device, and the network device receives the first message from the first device. The first message includes a first CRC, a first header cyclic redundancy check (HCRC), and a first sequence number. The first message can be a RoCE message.
[0080] Specifically, the first message includes a first CRC, a first HCRC, a first ICRC, and a first sequence number. The first CRC is used to verify all fields of the first message; the first HCRC and first ICRC are used to verify some fields of the first message. For example, the first HCRC is used to verify the header information of the first message, which includes the ETH field, IP field, UDP field, and BTH field. In this embodiment, the first HCRC is used to verify the header information of the first message, which includes the ETH field, IP field, UDP field, and BTH field. This first HCRC can also be called other cyclic redundancy check codes, and this application does not specifically limit it to this.
[0081] 1020, the network device detects the first CRC in the first packet, and when a CRC error is detected in the first packet, it determines whether the first HCRC in the first packet is correct.
[0082] Specifically, when a network device detects a CRC error in the first packet, it determines whether the first packet includes a first HCRC, that is, whether the format of the first packet includes an HCRC. If the first packet includes a first HCRC, it determines whether the first HCRC is correct.
[0083] 1030. If the network device determines that the first HCRC in the first message is correct, it updates the first sequence number to a second sequence number, where the second sequence number is greater than the first sequence number. For example, the second sequence number can be generated by adding one to the first sequence number in the first message; alternatively, the second sequence number can be generated by adding any positive integer to the first sequence number in the first message. This application does not impose specific limitations on this.
[0084] Specifically, if the network device determines that the first HCRC in the first message is correct, it updates the first sequence number to the second sequence number, the first CRC to the second CRC, the first HCRC to the second HCRC, and the first ICRC to the second ICRC.
[0085] 1040, the network device sends an updated first message to the second device, the updated first message including a second sequence number. Specifically, the updated first message includes a second sequence number, a second CRC, a second HCRC, and a second ICRC.
[0086] Correspondingly, the second device receives the updated first message from the network device. If the second device is not the destination device, it sends the updated first message to the next network device or the destination device. If the second device is the destination device, and it finds that the message / preceding message with the first sequence number has not been received, it discards the message with the second sequence number (the updated first message) and subsequent messages, and sends a NACK message to the first device / source device. The NACK message includes the first sequence number. The first device then retransmits the first message to the second device based on the received NACK message.
[0087] Optionally, when the network device determines that there is a CRC error in the first message, if it also determines that the first HCRC in the first message is incorrect, it indicates that the first message has a bit error during transmission, causing the network device to receive an erroneous message, and the network device discards the first message. When the network device determines that there is a CRC error in the first message, and the first message does not contain a first HCRC, the network device also discards the first message.
[0088] Optionally, when the network device detects that the CRC in the first packet is correct, the network device updates the first HCRC to the second HCRC, the first CRC to the second CRC, and the first ICRC to the second ICRC. The updated first packet sent by the network device to the second device includes the second CRC, the second HCRC, the second ICRC, and the first sequence number. That is, when the network device detects that the CRC in the first packet is correct, it indicates that no bit errors occurred during the transmission of the first packet, and there is no need to update the sequence number of the first packet.
[0089] In the technical solution provided in this application embodiment, when the first CRC in the first packet received by the network device is correct, the network device determines whether the first HCRC in the first packet is correct. If the first HCRC is correct, the network device updates the first sequence number in the first packet to the second sequence number and sends the updated first packet to the second device. The updated first packet includes the second sequence number, which is greater than the first sequence number. When the second device / destination device receives the updated first packet and finds that the packet / preceding packet with the first sequence number has not been received, it will discard the updated first packet (the packet with the sequence number equal to the second sequence number) and subsequent packets, and send a NACK packet to the first device / source device. The NACK packet includes the first sequence number. The first device then retransmits the first packet to the second device based on the received NACK packet. The retransmission time in this application embodiment is equivalent to the out-of-order retransmission time in the prior art, but it does not depend on the triggering of subsequent packets. Compared with timeout retransmission technology and extra transmission, the packet retransmission scheme proposed in this application embodiment can reduce the latency of packet retransmission while avoiding network bandwidth waste.
[0090] Taking Src RNIC as the first device, Dst RNIC as the second device, and a switch as the network device as an example. Figure 11The diagram illustrates an example of message transmission according to an embodiment of this application. The Src RNIC sends three RoCE messages to the Dst RNIC, including PSN 0, PSN 1, and PSN 2. The PSN 2 message experiences a bit error during transmission and is the last message sent. The switch receives the PSN 2 message from the Src RNIC. Since the Dst RNIC added an HCRC to the PSN 2 message, when the switch detects a CRC error in the PSN 2 message, it determines whether the HCRC in the PSN 2 message is correct. If the switch determines that the HCRC in the PSN 2 message is correct, it updates the message sequence number from PSN 2 to PSN 3, and simultaneously updates the HCRC, CRC, and ICRC in the message. The switch then sends the updated message to the Dst RNIC. If the Dst RNIC receives an updated message from the switch, which includes PSN 3, and the Dst RNIC discovers that the PSN 2 message was not received, it will discard the received PSN 3 message and simultaneously send a NACK 2 message to the Src RNIC, where sequence number 2 indicates that the Dst RNIC did not receive the PSN 2 message. After receiving the NACK 2 message, the Src RNIC will retransmit the PSN 2 message to the Dst RNIC.
[0091] like Figure 12 The diagram illustrates a schematic flow chart of another message transmission method 1200 proposed in this application embodiment. In this application embodiment, the network device (intermediate device) can be a switch; the first device can be a source device / source RDMA network card or an intermediate device, for example, the first device can be a terminal device or a network device; the second device can be an intermediate device.
[0092] 1210, the first device sends a first message to the network device, and the network device receives the first message from the first device, which includes a first CRC.
[0093] Specifically, the first message includes a first CRC, a first ICRC, and a first sequence number. This first message can be a RoCE message. The first CRC is used to verify all fields of the first message, and the first ICRC is used to verify some fields of the first message.
[0094] 1220. The network device detects the first CRC in the first packet. When the first CRC in the first packet is correct, it updates the reserved field in the first packet to the first HCRC. This first HCRC can be used to verify the header information of the first packet, such as the sequence number of the first packet. The header information of the first packet includes the ETH field, IP field, UDP field, and BTH field.
[0095] like Figure 8 and Figure 9 As shown, the first message also includes a BTH field. For example, when the network device detects that the first CRC in the first message is correct, it updates the reserved field of the BTH field in the first message to the first HCRC.
[0096] Specifically, when the network device detects that the first CRC in the first packet is correct, it determines whether the first packet includes the first HCRC; that is, it determines whether the format of the first packet is as described above. Figure 9 The message format. If it is determined that the first message does not include the first HCRC, then the reserved field in the first message is updated to the first HCRC.
[0097] Specifically, when the network device detects that the first CRC in the first packet is correct, it updates the reserved fields in the first packet to the first HCRC, the first CRC to the second CRC, and the first ICRC to the second ICRC. It should be understood that since the network device detects that the first CRC in the first packet is correct, it means that no errors occurred during the transmission of the first packet, and there is no need to update the sequence number of the first packet.
[0098] At 12:30, the network device sends an updated first message to the second device. The updated first message includes a first HCRC. Specifically, the updated first message includes a first HCRC, a second CRC, a second ICRC, and a first sequence number.
[0099] Optionally, when a network device detects a CRC error in the first message, it indicates that a bit error occurred in the first message during transmission, and the network device discards the first message.
[0100] Optionally, the second device receives an updated first message from the network device. The updated first message includes a first HCRC, a second CRC, a second ICRC, and a first sequence number. When the second device detects a second CRC error, it can determine whether the first HCRC is correct. If the first HCRC is correct, the second device updates the first sequence number to the second sequence number, where the second sequence number is greater than the first sequence number. Subsequent message transmission proceeds as follows. Figure 10 As described in the text, it will not be repeated here.
[0101] In the technical solution provided in this application embodiment, a network device receives a first message from a first device. The first message includes a first CRC and a first sequence number. When the first CRC is detected to be correct, the network device updates the reserved field in the first message to a first HCRC and the first CRC to a second CRC, and sends the updated first message to a second device. The updated first message includes the first HCRC and the second CRC. When the second device detects a second CRC error, the second device can determine whether the first HCRC is correct. If the first HCRC is determined to be correct, the second device updates the first sequence number to the second sequence number, causing the destination device to send a NACK message to the source device. The NACK message includes the first sequence number, thereby triggering the source device to retransmit the first message based on the received NACK message. The retransmission time of this application embodiment is equivalent to the out-of-order retransmission time in the prior art, but it does not depend on the triggering of subsequent messages. Compared with timeout retransmission technology and extra transmission, the retransmission scheme proposed in this application embodiment can reduce the latency of message retransmission while avoiding network bandwidth waste.
[0102] Taking Src RNIC as the first device, switch A as the network device, and switch B as the second device as an example; Src RNIC transmits packets to Dst RNIC through switches A and B. Figure 13The diagram illustrates another example of message transmission according to an embodiment of this application. The Src RNIC sends three RoCE messages to the Dst RNIC, including PSN 0, PSN 1, and PSN 2. The PSN 2 message experiences a bit error during transmission and is the last message sent. Switch A receives the PSN 2 message from the Src RNIC. When Switch A detects that the CRC in the PSN 2 message is correct, it updates the reserved field in the PSN 2 message to HCRC. Switch A then sends the updated PSN 2 message to Switch B, and the updated PSN 2 message includes the HCRC. Switch B receives an updated PSN 2 packet from switch B. When switch B detects a CRC error in the updated PSN 2 packet, it checks if the HCRC in the updated PSN 2 packet is correct. If switch B determines that the HCRC in the updated PSN 2 packet is correct, it updates the packet's sequence number from PSN 2 to PSN 3, and simultaneously updates the HCRC, CRC, and ICRC in the packet. Switch B then sends this updated packet to Dst RNIC. Dst RNIC receives the updated packet from switch B, which includes PSN 3. Dst RNIC then realizes that the PSN 2 packet was not received and discards the received PSN 3 packet. Simultaneously, it sends a NACK2 packet to Src RNIC, where sequence number 2 indicates that Dst RNIC did not receive the PSN 2 packet. After receiving the NACK2 packet, Src RNIC retransmits the PSN 2 packet to Dst RNIC.
[0103] This application provides a communication device, such as... Figure 14 The diagram shown illustrates a schematic block diagram of a communication device 1400 according to an embodiment of this application. This device can be applied to network devices according to embodiments of this application. The communication device 1400 includes:
[0104] The receiving module 1410 is configured to receive a first message from the first device, wherein the first message includes a first cyclic redundancy check (CRC), a first header cyclic redundancy check (HCRC), and a first sequence number.
[0105] Processing module 1420 is used to determine whether the first HCRC is correct when the first CRC error is detected;
[0106] The processing module 1420 is further configured to, if it is determined that the first HCRC is correct, update the first sequence number to a second sequence number, wherein the second sequence number is greater than the first sequence number;
[0107] The sending module 1430 is used to send an updated first message to a second device, wherein the updated first message includes the second sequence number.
[0108] Optionally, the processing module 1420 is specifically used to: when the first CRC error is detected, determine whether the first message includes the first HCRC; if it is determined that the first message includes the first HCRC, then determine whether the first HCRC is correct.
[0109] Optionally, the first message further includes a first ICRC; the processing module 1420 is specifically used to: if it is determined that the first HCRC is correct, update the first sequence number to the second sequence number, update the first CRC to the second CRC, update the first HCRC to the second HCRC, and update the first ICRC to the second ICRC; the updated first message further includes the second CRC, the second HCRC, and the second ICRC.
[0110] Optionally, the processing module is further configured to: when the first CRC is detected to be correct, update the first HCRC to the second HCRC, update the first CRC to the second CRC, and update the first ICRC to the second ICRC; send the updated first message to the second device, wherein the updated first message includes the second CRC, the second HCRC, the second ICRC, and the first sequence number.
[0111] Optionally, the processing module is further configured to discard the first message if the first HCRC error is determined when the first CRC error is detected.
[0112] This application provides a communication device, such as... Figure 15 The diagram illustrates a schematic block diagram of another communication device 1500 according to an embodiment of this application. This device can be applied to network devices according to embodiments of this application. The communication device 1500 includes:
[0113] The receiving module 1510 is configured to receive a first message from the first device, wherein the first message includes a first cyclic redundancy check (CRC) code.
[0114] The processing module 1520 is used to update the reserved field in the first message to a first header cyclic redundancy check code (HCRC) when the first CRC is detected to be correct. The first HCRC is used to verify the header information of the first message.
[0115] The sending module 1530 is used to send an updated first message to a second device, wherein the updated first message includes the first HCRC.
[0116] Optionally, the processing module 1520 is specifically used to: when the first CRC is detected to be correct, determine whether the first message includes the first HCRC; if it is determined that the first message does not include the first HCRC, update the reserved field in the first message to the first HCRC.
[0117] Optionally, the first message further includes a first ICRC and a first sequence number; the processing module 1520 is specifically used to update the reserved field in the first message to the first HCRC, update the first CRC to the second CRC, and update the first ICRC to the second ICRC when the first CRC is detected to be correct; the updated first message further includes the second CRC, the second ICRC, and the first sequence number.
[0118] Optionally, the processing module 1520 is further configured to discard the first message when the first CRC error is detected.
[0119] This application provides a communication device 1600, such as... Figure 16 The diagram shown is a schematic block diagram of a communication device 1600 according to an embodiment of this application.
[0120] The communication device 1600 includes a processor 1610 and a transceiver 1620. The transceiver 1620 receives computer code or instructions and transmits them to the processor 1610. The processor 1610 executes the computer code or instructions to implement the method described in this application embodiment. This communication device may be a network device described in this application embodiment.
[0121] The aforementioned processor 1610 may be an integrated circuit chip with signal processing capabilities. In implementation, each step of the above method embodiments can be completed by integrated logic circuits in the processor's hardware or by instructions in software form. The aforementioned processor may be a general-purpose processor, a digital signal processor (DSP), an application-specific integrated circuit (ASIC), a field-programmable gate array (FPGA), or other programmable logic devices, discrete gate or transistor logic devices, or discrete hardware components. It can implement or execute the methods, steps, and logic block diagrams disclosed in the embodiments of this application. The general-purpose processor may be a microprocessor or any conventional processor. The steps of the methods disclosed in the embodiments of this application can be directly embodied in the execution of a hardware decoding processor, or executed by a combination of hardware and software modules in the decoding processor. The software modules may reside in random access memory, flash memory, read-only memory, programmable read-only memory, electrically erasable programmable memory, registers, or other mature storage media in the art. This storage medium is located in memory; the processor reads information from the memory and, in conjunction with its hardware, completes the steps of the above method.
[0122] Optionally, embodiments of this application also provide a communication device, which includes an input / output interface and a logic circuit. The input / output interface is used to acquire input information and / or output information; the logic circuit is used to execute the method in any of the above method embodiments, and to process and / or generate output information based on the input information.
[0123] This application also provides a computer-readable storage medium storing a computer program for implementing the methods in the above-described method embodiments. When the computer program is run on a computer, the computer can implement the methods in the above-described method embodiments.
[0124] This application also provides a computer program product, which includes computer program code. When the computer program code is run on a computer, the method in the above method embodiments is executed.
[0125] This application also provides a chip, including a processor connected to a memory for storing computer programs, and the processor for executing the computer programs stored in the memory, so that the chip performs the methods described in the above method embodiments.
[0126] It should be understood that in the embodiments of this application, the designations "first", "second", etc. are only for distinguishing different objects, such as different devices, and do not constitute a limitation on the scope of the embodiments of this application. The embodiments of this application are not limited thereto.
[0127] Furthermore, the term "and / or" in this application is merely a description of the relationship between related objects, indicating that three relationships can exist. For example, A and / or B can represent: A existing alone, A and B existing simultaneously, and B existing alone. Additionally, the character " / " in this document generally indicates that the preceding and following related objects have an "or" relationship. The term "at least one" in this application can represent "one" and "two or more." For example, A, B, and C can represent: A existing alone, B existing alone, C existing alone, A and B existing simultaneously, A and C existing simultaneously, C and B existing simultaneously, and A, B, and C existing simultaneously.
[0128] Those skilled in the art will recognize that the units and algorithm steps of the various examples described in conjunction with the embodiments disclosed herein can be implemented in electronic hardware, or a combination of computer software and electronic hardware. Whether these functions are implemented in hardware or software depends on the specific application and design constraints of the technical solution. Those skilled in the art can use different methods to implement the described functions for each specific application, but such implementation should not be considered beyond the scope of this application.
[0129] Those skilled in the art will clearly understand that, for the sake of convenience and brevity, the specific working processes of the systems, devices, and units described above can be referred to the corresponding processes in the foregoing method embodiments, and will not be repeated here.
[0130] In the several embodiments provided in this application, it should be understood that the disclosed systems, apparatuses, and methods can be implemented in other ways. For example, the apparatus embodiments described above are merely illustrative; for instance, the division of units is only a logical functional division, and in actual implementation, there may be other division methods. For example, multiple units or components may be combined or integrated into another system, or some features may be ignored or not executed. Furthermore, the coupling or direct coupling or communication connection shown or discussed may be through some interfaces; the indirect coupling or communication connection between apparatuses or units may be electrical, mechanical, or other forms.
[0131] The units described as separate components may or may not be physically separate. The components shown as units may or may not be physical units; that is, they may be located in one place or distributed across multiple network units. Some or all of the units can be selected to achieve the purpose of this embodiment according to actual needs.
[0132] In addition, the functional units in the various embodiments of this application can be integrated into one processing unit, or each unit can exist physically separately, or two or more units can be integrated into one unit.
[0133] If the aforementioned functions are implemented as software functional units and sold or used as independent products, they can be stored in a computer-readable storage medium. Based on this understanding, the technical solution of this application, in essence, or the part that contributes to the prior art, or a portion of the technical solution, can be embodied in the form of a software product. This computer software product is stored in a storage medium and includes several instructions to cause a computer device (which may be a personal computer, server, or network device, etc.) to execute all or part of the steps of the methods described in the various embodiments of this application. The aforementioned storage medium includes various media capable of storing program code, such as USB flash drives, portable hard drives, read-only memory (ROM), random access memory (RAM), magnetic disks, or optical disks.
[0134] The above description is merely a specific embodiment of this application, but the scope of protection of this application is not limited thereto. Any variations or substitutions that can be easily conceived by those skilled in the art within the scope of the technology disclosed in this application should be included within the scope of protection of this application. Therefore, the scope of protection of this application should be determined by the scope of the claims.
Claims
1. A method of packet transmission, characterized by, include: Receive a first message from a first device, the first message including a first cyclic redundancy check (CRC), a first header cyclic redundancy check (HCRC), and a first sequence number; When the first CRC error is detected, determine whether the first HCRC is correct; If the first HCRC is determined to be correct, the first sequence number is updated to the second sequence number, where the second sequence number is greater than the first sequence number. Send an updated first message to the second device, wherein the updated first message includes the second sequence number; The second device is used to receive the updated first message. If the second device is the destination device, the second device discards the updated first message and sends a NACK message to the first device. The NACK message includes the first sequence number. The first device is used to retransmit the first message to the second device based on the received NACK message.
2. The method according to claim 1, characterized in that, When the first CRC error is detected, determining whether the first HCRC is correct includes: When the first CRC error is detected, determine whether the first message includes the first HCRC; If it is determined that the first message includes the first HCRC, then it is determined whether the first HCRC is correct.
3. The method according to claim 1 or 2, characterized in that, The first message also includes a first ICRC; The step of updating the first sequence number to the second sequence number if the first HCRC is determined to be correct includes: updating the first sequence number to the second sequence number, updating the first CRC to the second CRC, updating the first HCRC to the second HCRC, and updating the first ICRC to the second ICRC if the first HCRC is determined to be correct. The updated first message also includes the second CRC, the second HCRC, and the second ICRC.
4. The method according to claim 3, characterized in that, The method further includes: When the first CRC is detected to be correct, the first HCRC is updated to the second HCRC, the first CRC is updated to the second CRC, and the first ICRC is updated to the second ICRC. The updated first message is sent to the second device, the updated first message including the second CRC, the second HCRC, the second ICRC and the first sequence number.
5. The method according to claim 1 or 2, characterized in that, The method further includes: If the first CRC error is detected, and the first HCRC error is determined, then the first message is discarded.
6. A method for message transmission, characterized in that, include: Receive a first message from a first device, the first message including a first cyclic redundancy check (CRC) code and a first sequence number; When the first CRC is detected to be correct, the reserved field in the first message is updated to the first header cyclic redundancy check code HCRC. The first HCRC is used to verify the header information of the first message. The first CRC is updated to the second CRC. The updated first message is sent to the second device. The updated first message includes the first HCRC, the second CRC and the first sequence number. The second device is used to update the first sequence number to a second sequence number when the second CRC is incorrect and the first HCRC is correct, wherein the second sequence number is greater than the first sequence number, and send the updated first message to the destination device, wherein the updated first message includes the second sequence number; The destination device is used to receive the updated first message, discard the updated first message, and send a NACK message to the first device, the NACK message including the first sequence number; The first device is configured to retransmit the first message based on the received NACK message.
7. The method according to claim 6, characterized in that, The step of updating the reserved field in the first message to the first header cyclic redundancy check code (HCRC) when the first CRC is detected to be correct includes: When the first CRC is detected to be correct, determine whether the first message includes the first HCRC; If it is determined that the first message does not include the first HCRC, then the reserved field in the first message is updated to the first HCRC.
8. The method according to claim 6 or 7, characterized in that, The first message also includes a first ICRC; The step of updating the reserved field in the first message to the first header cyclic redundancy check code HCRC when the first CRC is detected to be correct includes: updating the reserved field in the first message to the first HCRC and updating the first ICRC to the second ICRC when the first CRC is detected to be correct. The updated first message also includes the second ICRC.
9. The method according to claim 6 or 7, characterized in that, The method further includes: When the first CRC error is detected, the first message is discarded.
10. A communication device, characterized in that, include: The receiving module is configured to receive a first message from the first device, wherein the first message includes a first cyclic redundancy check (CRC), a first header cyclic redundancy check (HCRC), and a first sequence number. The processing module is used to determine whether the first HCRC is correct when the first CRC error is detected; The processing module is further configured to, if it is determined that the first HCRC is correct, update the first sequence number to a second sequence number, wherein the second sequence number is greater than the first sequence number; The sending module is configured to send an updated first message to a second device, wherein the updated first message includes the second sequence number; Wherein, the second device is used to receive the updated first message. If the second device is the destination device, the second device discards the updated first message and sends a NACK message to the first device. The NACK message includes the first sequence number. The first device is used to retransmit the first message to the second device based on the received NACK message.
11. The apparatus according to claim 10, characterized in that, The processing module is specifically used for: When the first CRC error is detected, determine whether the first message includes the first HCRC; If it is determined that the first message includes the first HCRC, then it is determined whether the first HCRC is correct.
12. The apparatus according to claim 10 or 11, characterized in that, The first message also includes a first ICRC; The processing module is specifically used to: if it is determined that the first HCRC is correct, update the first sequence number to the second sequence number, update the first CRC to the second CRC, update the first HCRC to the second HCRC, and update the first ICRC to the second ICRC; The updated first message also includes the second CRC, the second HCRC, and the second ICRC.
13. The apparatus according to claim 12, characterized in that, The processing module is also used for: When the first CRC is detected to be correct, the first HCRC is updated to the second HCRC, the first CRC is updated to the second CRC, and the first ICRC is updated to the second ICRC. The updated first message is sent to the second device, the updated first message including the second CRC, the second HCRC, the second ICRC and the first sequence number.
14. The apparatus according to claim 10 or 11, characterized in that, The processing module is further configured to, when the first CRC error is detected, discard the first message if the first HCRC error is determined to be an error.
15. A communication device, characterized in that, include: The receiving module is configured to receive a first message from the first device, wherein the first message includes a first cyclic redundancy check (CRC) code and a first sequence number; The processing module is used to update the reserved field in the first message to a first header cyclic redundancy check code (HCRC) when the first CRC is detected to be correct. The first HCRC is used to verify the header information of the first message, and the first CRC is updated to a second CRC. The sending module is used to send the updated first message to the second device, wherein the updated first message includes the first HCRC, the second CRC and the first sequence number; The second device is used to update the first sequence number to a second sequence number when the second CRC is incorrect and the first HCRC is correct, wherein the second sequence number is greater than the first sequence number, and send the updated first message to the destination device, wherein the updated first message includes the second sequence number; The destination device is used to receive the updated first message, discard the updated first message, and send a NACK message to the first device, the NACK message including the first sequence number; The first device is configured to retransmit the first message based on the received NACK message.
16. The apparatus according to claim 15, characterized in that, The processing module is specifically used for: When the first CRC is detected to be correct, determine whether the first message includes the first HCRC; If it is determined that the first message does not include the first HCRC, then the reserved field in the first message is updated to the first HCRC.
17. The apparatus according to claim 15 or 16, characterized in that, The first message also includes a first ICRC; The processing module is specifically used to update the reserved field in the first message to the first HCRC and the first ICRC to the second ICRC when the first CRC is detected to be correct. The updated first message also includes the second ICRC.
18. The apparatus according to claim 15 or 16, characterized in that, The processing module is also used to discard the first message when the first CRC error is detected.
19. A communication device, characterized in that, include: A processor and a transceiver, the transceiver being configured to receive computer code or instructions and transmit them to the processor, the processor executing the computer code or instructions, as described in any one of claims 1 to 5.
20. A communication device, characterized in that, include: A processor and a transceiver, the transceiver being configured to receive computer code or instructions and transmit them to the processor, the processor executing the computer code or instructions, as described in any one of claims 6 to 9.
21. A computer-readable storage medium, characterized in that, include The computer-readable medium stores a computer program; When the computer program is run on a computer, it causes the computer to perform the method according to any one of claims 1 to 9.
22. A computer program product, characterized in that, Includes a computer program that, when executed, causes the method as described in any one of claims 1 to 9 to be implemented.