Method, apparatus and system for data retransmission
By dividing data packets into fixed-length segments and detecting and retransmitting erroneous segments, the latency and overhead issues caused by giant frame retransmission in high-speed Ethernet are resolved, achieving more efficient data transmission.
Patent Information
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- HUAWEI TECH CO LTD
- Filing Date
- 2021-12-10
- Publication Date
- 2026-05-19
AI Technical Summary
Existing technologies cannot effectively solve the latency and data transmission overhead problems caused by giant frame retransmission in high-speed Ethernet.
By dividing data packets into fixed-length segments, erroneous segments are detected and retransmitted instead of the entire data packet, thus avoiding additional header and tail overhead.
It reduces retransmission latency, saves data transmission overhead, and ensures the accuracy and efficiency of data transmission.
Smart Images

Figure CN116260553B_ABST
Abstract
Description
Technical Field
[0001] This application relates to the field of network communication, and more specifically, to a data retransmission method, apparatus, and system. Background Technology
[0002] When high-speed Ethernet interfaces reach critical error performance levels, packet loss per day or hour becomes inevitable. Traditional Ethernet lacks a link retransmission mechanism. In the event of packet loss, it relies either on end-to-end retransmission via Remote Direct Memory Access (RDMA) or Transmission Control Protocol (TCP), or on a link-level enhanced reconciliation sublayer (RS) scheme. However, of these two schemes, the former's end-to-end retransmission introduces significant latency, while the latter implies greater area, power consumption, and static latency.
[0003] Therefore, to solve the Ethernet packet loss problem, traditional Ethernet can be enhanced by adding link-level retransmissions to achieve packet recovery. Furthermore, high-speed Ethernet uses Reed-Solomon forward error correction (RS-FEC) to map Ethernet frames into multiple FEC codes, thereby correcting errors that occur during transmission. When an FEC codeword cannot correct the error, the reverse-coded block is mapped to an E-block (error block). However, because Ethernet supports giant frames (e.g., 9600 bytes), when only the last bit of a frame is incorrect, traditional frame-based retransmission mechanisms still need to retransmit the entire frame, resulting in significant sequence number delays. For example, for a 1Gbps port, the sequence number delay for a 9600-byte frame is 76.8µs.
[0004] To address the latency issues caused by retransmission of jumbo frames, the 802.11 standard divides a jumbo frame into multiple smaller frames. Specifically, through fragmentation, a long frame is divided into several smaller frames. Each smaller frame's header includes the sequence number of its parent frame and the sequence number of the smaller frame itself, while the tail includes a cyclic redundancy check (CRC). Because each smaller frame is short, errors are less likely to occur. If an error occurs during data transmission and retransmission is required, only the erroneous smaller frame needs to be retransmitted, rather than the entire original frame. However, this method requires additional overhead in the header and / or tail of each smaller frame.
[0005] Therefore, how to solve the latency problem caused by frame-based link-level retransmission while saving the overhead required for data transmission is an urgent problem to be solved. Summary of the Invention
[0006] This application provides a method, apparatus, and system for data retransmission, which can reduce the latency caused by frame-based link-level retransmission and save the overhead required for data transmission.
[0007] Firstly, a data retransmission method is provided, which can be applied to networks between two or more devices based on processor and I / O device interconnection interfaces (PCIe) or Ethernet connections. This method can be executed by the receiving network element.
[0008] The method may include: during or after receiving a first data packet, detecting whether there is an error in the received portion of the first data packet in units of segments, wherein the length of the segment is less than or equal to a first length; determining that the error exists in a first segment of the first data packet; and sending a first retransmission request, wherein the first retransmission request is used to request the retransmission of the first segment of the first data packet and the remaining portion of the first data packet after the first segment.
[0009] Specifically, the first data packet can be an Ethernet data packet, or it can be other data packets. In some possible implementations, the first data packet can also be a TLP message, or it can be a flit.
[0010] It should be understood that the aforementioned first data packet includes a preamble and a frame check sequence (FCS).
[0011] In some possible implementations, the preamble of the first data packet carries sequence information indicating the transmission order of the first data packet; or, the preamble of the first data packet carries sequence information of the first segment of the first data packet. In some possible implementations, the sequence information of the first segment of the first data packet is determined by the sending network element based on the sum of segments contained in data packets already transmitted before the first data packet was transmitted during the current data transmission process.
[0012] It should be noted that the first segment mentioned above is a segment of the received portion of the first data packet, meaning that the first segment does not include additional header and trailer overhead.
[0013] Furthermore, the detected segment is determined based on a first length agreed upon with the sending network element, and the receiving network element sequentially determines which segment of the first data packet contains an error, using the first length as the unit.
[0014] In some possible implementations, the above error can be represented by an E-code block (or error control word).
[0015] In some possible implementations, after receiving the first retransmission request, the sending network element determines to start retransmission from the erroneous part of the first data packet based on the sequence information of the first segment, rather than retransmitting the entire first data packet.
[0016] It should be understood that after receiving the first segment of the first data packet and the remaining part after the first segment of the first data packet, the received first data packet segment is still checked according to the agreed first length. If an error is still detected, the first retransmission request is sent again until a complete and correct data packet is received.
[0017] In this application's technical solution, an error is checked in a segment of the received data packet of length 1 by using a pre-agreed first length, without adding extra header or checksum overhead to the segment. When an erroneous data packet is received, a retransmission is requested starting from the erroneous segment, avoiding retransmission of the entire data packet and reducing retransmission latency. Furthermore, since no additional overhead is introduced, data transmission overhead is saved.
[0018] In conjunction with the first aspect, in some implementations of the first aspect, the method further includes: detecting whether the error exists in the idle code block on a segment-by-segment basis; after determining that the error exists in the idle code block, sending the first retransmission request, which is used to request the retransmission of the data packets after the idle code block.
[0019] It should be understood that the idle code block is the code block between two data packets. In some possible implementations, when an error is detected in the segment containing the idle code block, the sending network element is still requested to retransmit the data packets after the idle code block to improve data transmission efficiency and reduce retransmission latency.
[0020] In conjunction with the first aspect, in some implementations of the first aspect, the method further includes: detecting, on a segment-by-segment basis, whether the received portion of the first data packet contains an E-code block.
[0021] It should be understood that when the FEC error marking function is enabled, if an FEC codeword cannot be corrected, the reverse-encoded code block will be mapped to an E code block. When an E code block is detected, it means that the data in that code block is corrupted and a retransmission request is needed.
[0022] In conjunction with the first aspect, in some implementations of the first aspect, the method further includes: after determining that the first segment of the first data packet contains the error, discarding the first segment of the first data packet and the remaining portion of the first data packet after the first segment.
[0023] In conjunction with the first aspect, in some implementations of the first aspect, the first retransmission request carries the sequence information of the first segment.
[0024] In some possible implementations, the sequence information of the first segment is determined by the receiving network element based on the sequence information of the first segment of the first data packet carried in the preamble.
[0025] In some possible implementations, the first retransmission request carries the sequence information of the first segment and the sequence information of the first data packet. The sequence information of the first segment can be the number of segments in the first data packet that did not have errors detected before the first segment.
[0026] In conjunction with the first aspect, in some implementations of the first aspect, the sequence information of the first segment represents the number of segments that were detected without errors before the first segment.
[0027] In some possible implementations, the first length is agreed to be N bytes. The first segment in the first data packet is the first segment of length N bytes in the first data packet, and its segment number can be recorded as "0". After the receiving network element confirms that there are no errors in the first segment, the count is recorded as "1". For each subsequent segment of length N bytes detected, the count increases by 1. That is, after detecting the nth segment and confirming that there are no errors in the nth segment, the count is recorded as "n", and the segment number of the nth segment is "n-1". If an error is detected in the (n+1)th segment, the previously recorded count "n" is carried in the sequence information of the first segment to request the sending network element to retransmit data starting from the (n+1)th segment.
[0028] In conjunction with the first aspect, in some implementations of the first aspect, the method further includes: determining the sequence information of the first data packet based on the preamble of the first data packet; or, determining the sequence information of the first segment based on the preamble of the first data packet.
[0029] In conjunction with the first aspect, in some implementations of the first aspect, the method further includes: verifying the first data packet; when the verification of the first data packet fails, sending a second retransmission request; the second retransmission request carries the sequence information of the first data packet and the sequence information of the second segment; the second retransmission request is used to request retransmission of the first data packet; wherein the sequence information of the second segment is a specific value or the sequence information of the second segment is empty.
[0030] In some possible implementations, the first data packet is verified via FCS.
[0031] In some possible implementations, no errors are detected when checking one or more segments of the first data packet. However, if the FCS check of the first data packet fails, it indicates that the transmission of the first data packet has failed, and the first data packet still needs to be retransmitted.
[0032] In some possible implementations, the sequence information of the first data packet can also be empty.
[0033] In some possible implementations, the aforementioned second segment can be the first segment in the first data packet, and the aforementioned specific value can be the segment sequence number of the first segment in the first data packet. Further, the segment sequence number of the first segment can be the sequence number of the segment in the first data packet, for example, "0"; or it can be the segment sequence number carried in the preamble of the first data packet.
[0034] In some possible implementations, the sending network element can determine that the first data packet is erroneous based on the second retransmission request and retransmit the first data packet.
[0035] In the technical solution of this application, when no errors are detected in one or more segments of the first data packet, but the FCS check of the data packet fails, a request is made to retransmit the data packet and its subsequent data packets to ensure the accuracy of data transmission.
[0036] In conjunction with the first aspect, in some implementations of the first aspect, the method further includes: the first length being a length agreed upon with the sending network element that sends the first data packet; or, the first length being a pre-configured length.
[0037] Secondly, a data retransmission method is provided, which can be executed by a sending network element. Specifically, the method includes: receiving a first retransmission request, the first retransmission request carrying sequence information of a first segment of a first data packet in which an error occurred, the first segment being a segment in the first data packet with a length less than or equal to a first length, wherein the first length is a length agreed upon with the receiving network element receiving the first data packet; or, the first length is a pre-configured length; and transmitting the first segment and the remaining portion of the first data packet after the first segment according to the first retransmission request.
[0038] In this technical solution, the sending network element determines the erroneous data packet and its error location based on the sequence information of the first segment of the first data packet in the first retransmission request, and initiates a retransmission from that error location. This avoids retransmitting the entire data packet and reduces retransmission latency. Furthermore, since no additional overhead is introduced, the overhead required for data transmission can be saved.
[0039] In conjunction with the second aspect, in some implementations of the second aspect, the method further includes: before sending the first segment and the remaining portion of the first data packet after the first segment according to the first retransmission request, determining the first segment of the first data packet that needs to be retransmitted based on the sequence information of the first segment.
[0040] In some possible implementations, the first retransmission request carries the sequence information of the first data packet, and the sending network element determines the storage location of the first data packet in the retransmission buffer based on the sequence information of the first data packet.
[0041] In some possible implementations, the sending network element determines the position of the first segment in the first data packet based on the sequence information of the first segment and the first length agreed upon with the receiving network element.
[0042] In conjunction with the second aspect, in some implementations of the second aspect, the method further includes: before receiving the first retransmission request, determining the sequence information of the second segment based on the first length, the second segment being the first segment of the first data packet; and carrying the sequence information of the second segment in the preamble of the first data packet.
[0043] In conjunction with the second aspect, in some implementations of the second aspect, the method further includes: receiving a second retransmission request, the second retransmission request carrying sequence information of the first data packet and sequence information of a second segment, wherein the sequence information of the second segment is a specific value or the sequence information of the second segment is empty; and sending the first data packet according to the second retransmission request.
[0044] In the technical solution of this application, when no errors are detected in one or more segments of the first data packet, but the FCS check of the data packet fails, the sending network element retransmits the data packet and its subsequent data packets to ensure the accuracy of data transmission.
[0045] Thirdly, a data retransmission apparatus is provided, comprising: a processing unit configured to detect, during or after receiving a first data packet, whether an error exists in a received portion of the first data packet in segments, wherein the length of the segment is less than or equal to a first length; the processing unit is further configured to determine that the error exists in a first segment of the first data packet; and a transceiver unit configured to send a first retransmission request, the first retransmission request being used to request retransmission of the first segment of the first data packet and the remaining portion of the first data packet after the first segment.
[0046] In conjunction with the third aspect, in some implementations of the third aspect, the processing unit is further configured to detect whether the error exists in the idle code block on a segment-by-segment basis; the transceiver unit is configured to send the first retransmission request after the processing unit determines that the error exists in the idle code block, the first retransmission request being used to request the retransmission of the data packets following the idle code block.
[0047] In conjunction with the third aspect, in some implementations of the third aspect, the processing unit is further configured to: detect, on a segment-by-segment basis, whether the received portion of the first data packet contains an E-code block.
[0048] In conjunction with the third aspect, in some implementations of the third aspect, the processing unit is further configured to: after determining that the error exists in the first segment of the first data packet, discard the first segment of the first data packet and the remaining portion of the first data packet after the first segment.
[0049] In conjunction with the third aspect, in some implementations of the third aspect, the first retransmission request carries the sequence information of the first segment.
[0050] In conjunction with the third aspect, in some implementations of the third aspect, the sequence information of the first segment represents the number of segments that were detected without errors before the first segment.
[0051] In conjunction with the third aspect, in some implementations of the third aspect, the processing unit is further configured to: determine the sequence information of the first data packet based on the preamble of the first data packet before sending the first retransmission request; or, determine the sequence information of the first segment based on the preamble of the first data packet.
[0052] In conjunction with the third aspect, in some implementations of the third aspect, the processing unit is further configured to: verify the first data packet; the transceiver unit is further configured to: when the verification of the first data packet fails, send a second retransmission request, the second retransmission request carrying the sequence information of the first data packet and the sequence information of the second segment, the second retransmission request being used to request the retransmission of the first data packet, wherein the sequence information of the second segment is a specific value or the sequence information of the second segment is empty.
[0053] In conjunction with the third aspect, in some implementations of the third aspect, the first length is a length agreed upon with the sending network element that sends the first data packet; or, the first length is a pre-configured length.
[0054] Fourthly, a data retransmission apparatus is provided, comprising: a transceiver unit configured to receive a first retransmission request, the first retransmission request carrying sequence information of a first segment of a first data packet in which an error has occurred, the first segment being a segment in the first data packet with a length less than or equal to a first length, wherein the first length is a length agreed upon with a receiving network element receiving the first data packet; or, the first length is a pre-configured length; the transceiver unit is further configured to transmit the first segment and the remaining portion of the first data packet after the first segment according to the first retransmission request.
[0055] In conjunction with the fourth aspect, in some implementations of the fourth aspect, the apparatus further includes a processing unit configured to: determine the storage location of the first data packet based on the sequence information of the first data packet before sending the first segment and the remainder of the first data packet according to the first retransmission request; and determine the position of the first segment in the first data packet based on the sequence information of the first segment.
[0056] In conjunction with the fourth aspect, in some implementations of the fourth aspect, the processing unit is further configured to: determine the sequence information of the second segment based on the first length before receiving the first retransmission request, the second segment being the first segment of the first data packet; and carry the sequence information of the second segment in the preamble of the first data packet.
[0057] In conjunction with the fourth aspect, in some implementations of the fourth aspect, the transceiver unit is further configured to: receive a second retransmission request, the second retransmission request carrying sequence information of the first data packet and sequence information of a second segment, wherein the sequence information of the second segment is a specific value or the sequence information of the second segment is empty; and send the first data packet according to the second retransmission request.
[0058] Fifthly, a data retransmission system is provided, the system including the data retransmission apparatus as described in the third aspect or any possible implementation of the third aspect, and the data retransmission apparatus as described in the fourth aspect or any possible implementation of the fourth aspect.
[0059] In a sixth aspect, a computer program product is provided, comprising: computer program code, which, when run on a computer, causes the computer to perform any of the possible methods described in the first to second aspects.
[0060] A seventh aspect provides a computer-readable medium storing program code that, when executed on a computer, causes the computer to perform the methods of the first and second aspects described above. Such computer-readable storage includes, but is not limited to, one or more of the following: read-only memory (ROM), programmable ROM (PROM), erasable PROM (EPROM), flash memory, electrically EPROM (EEPROM), and hard drive.
[0061] Eighthly, a chip is provided, comprising a processor and a data interface, wherein the processor reads instructions stored in a memory through the data interface to execute the method of the first aspect or any possible implementation thereof. In specific implementation, the chip may be implemented as a central processing unit (CPU), a microcontroller unit (MCU), a microprocessor (MPU), a digital signal processor (DSP), a system-on-chip (SoC), an application-specific integrated circuit (ASIC), a field-programmable gate array (FPGA), or a programmable logic device (PLD). Attached Figure Description
[0062] Figure 1 This is a schematic diagram illustrating an application scenario of a data retransmission method provided in this application;
[0063] Figure 2 This is a schematic diagram illustrating an application scenario of a data retransmission device provided in this application;
[0064] Figure 3 This is a schematic diagram of the protocol stack architecture of a data retransmission method provided in this application;
[0065] Figure 4 This is a schematic diagram of the control code block used in a data retransmission method provided in this application;
[0066] Figure 5 This is a schematic diagram of a data retransmission method provided in this application;
[0067] Figure 6 This is a schematic flowchart of a data retransmission method provided in this application;
[0068] Figure 7 This is a schematic flowchart of a data retransmission method provided in this application;
[0069] Figure 8 This is a schematic flowchart illustrating yet another data retransmission method provided in this application;
[0070] Figure 9 This is a schematic flowchart illustrating yet another data retransmission method provided in this application;
[0071] Figure 10 This is a schematic flowchart illustrating another data retransmission method provided in this application;
[0072] Figure 11 This is a schematic flowchart illustrating another data retransmission method provided in this application;
[0073] Figure 12 This is a schematic diagram of a data retransmission device provided in this application;
[0074] Figure 13 This is a schematic diagram of a data retransmission device provided in this application. Detailed Implementation
[0075] To facilitate understanding of the embodiments of this application, the relevant concepts involved in the embodiments of this application will be briefly introduced first:
[0076] 1. 64B / 66B Block: 64B / 66B encoding encodes 8 data bytes or control characters into a block. 64B / 66B encoding marks data bytes as D0–D7; control words other than / O / , / S / , and / T / as C0–C7; control words used for ordered sets as O0 or O4; control words used for starting control sets as S0 or S4; and control words used for ending control sets as T0–T7. The IEEE 802.3 specification defines the 64B / 66B encoding pattern, which includes a 2-bit synchronization header and 8 bytes (64 bits) of data block encoding, serving as the physical layer (PHY) transmission encoding format for 10 Gigabit, 40G / 100G / 200G / 400G Ethernet. Table 1 shows the encoding diagrams of several control code blocks in 64B / 66B encoding, namely S code block, T7 code block, I code block (idle code block), low power code block (LI code block) and D code block.
[0077] Table 1. Schematic diagram of 66-bit encoding of several control code blocks
[0078]
[0079] Layers 2 and 3 (L3 / Layer 3): Internet Protocol (IP) / Multi-protocol Label Switching (MPLS) layer. This refers to data transmission passing through L1, L2 and the network protocol of this layer, but not being sent to higher-level logical functional units for processing.
[0080] 3. Layer 2 (L2): Media Access Control (MAC) layer, which means that data transmission passes through L1 and the network protocol of this layer, but is not sent up to L3 and higher-level logical functional units for processing.
[0081] 4. Layer 1 (L1): PHY layer, refers to the network protocol that transmits data only through this layer and does not send it to L2 or higher-level logical functional units for processing.
[0082] 5. Reconciliation Sublayer (RS): A functional unit defined by the IEEE 802.3 standard, located between the physical coding sublayer (PCS) within the MAC layer and PHY layer. It is responsible for negotiating link failures and converting data streams between the MAC layer and the PCS sublayer.
[0083] 6. PHY Link / Physical Link: The link connecting two physical ports.
[0084] 7. Linecard: A card that carries a group of physical ports with the same speed, function, and type. Most of the functions of the physical ports under the linecard are provided by the linecard chip on the linecard.
[0085] 8. Reed-Solomon forward error correction (RS-FEC): An Ethernet frame is eventually mapped to one or more FEC codewords (CWs). When the error marking function of FEC is enabled, if an FEC codeword cannot correct the error, the reverse-encoded code block will be mapped to an E code block (error control word).
[0086] 9. Link-level retransmission mechanism based on processor and I / O device interconnection interface (PCIe): The PCIe link protocol stack architecture includes the transaction layer, data link layer, and physical layer. Generally, processor or I / O communication information is encapsulated in one or more transaction layer packets (TLPs) and sent. Control information used for flow control and reliability is sent through data link layer packets (DLLPs). To ensure the accuracy of data packets, PCIe employs link-level retransmission technology. The main feature of link-level retransmission technology is the design of a DLLP with an ACK / NAK mechanism. An ACK DLLP is used to confirm that a TLP has been successfully received, while a NAK DLLP indicates that an error occurred during TLP transmission. Specifically, the sender makes a backup of each TLP in the replay buffer until it receives an ACK DLLP from the receiver, confirming that the TLP has been successfully received, before deleting the backup. If the receiver detects an error in the TLP, it will send a NAK DLLP to the sender. The sender will then retrieve the data from the Replay Buffer and retransmit the TLP. PCIe TLPs have a Sequence field in the header and a CRC checksum at the end. Normally, for each TLP sent and received, the Sequence count accumulates until it reaches its maximum value, then resets to zero. The receiver determines whether a TLP has been erroneous or lost by checking the sequence continuity or the correctness of the CRC.
[0087] 10. Ethernet Frame: The Ethernet frame format, from header to trailer, is as follows: 6 octets for the destination address, 6 octets for the source address, 2 octets for the length / type, 46–1500 octets, 46–1504 octets, or 46–1982 octets for MAC client data and program-related data, and 4 octets for the frame check sequence (FCS). The FCS field stores the CRC-32 calculation result and is used to protect the entire Ethernet frame.
[0088] The technical solutions in the embodiments of this application will now be described with reference to the accompanying drawings.
[0089] Combination Figure 1This application describes the application scenarios of the embodiments of this application. These embodiments can be applied to networks supporting Ethernet connections between two or more devices. For example... Figure 1 As shown in (a), the network includes a head node A and a tail node B, and there may be one or more links between node A and node B; or, as ... tail node B and a tail node B. Figure 1 As shown in (b) above, the methods and apparatus of this application embodiments can be applied between adjacent nodes (AB, BC) or end-to-end (AC). It should be understood that... Figure 1 The illustrations shown are merely examples. The embodiments of this application can be applied to larger-scale networks, which may include multiple nodes. The methods and apparatus of the embodiments of this application can be applied between adjacent nodes and between end-to-end connections. The embodiments of this application are not limited in this respect. It should be understood that... Figure 1 A, B, and C shown can be either the transmitting network element or the receiving network element.
[0090] Furthermore, this application can be applied to device products that support Ethernet connectivity. For example... Figure 2 As shown, the device 100 provided in this application embodiment can be applied to a computer. Specifically, it can be applied to the interface processing unit of a central processing unit (CPU), solid-state disk (SSD), or graphics processing unit (GPU); or it can be applied to the interface processing unit of a box-type or chassis-type Ethernet switch, Ethernet card router, or other devices; or it can be applied to the interface processing unit of other processors. This application embodiment does not limit this application.
[0091] Figure 3 The diagram illustrates a protocol stack architecture for the data retransmission method, apparatus, and system application provided in this application. The Ethernet PHY layer includes a PCS layer, a forward error correction (FEC) layer, a physical medium attachment (PMA) sublayer, a physical medium dependent (PMD) sublayer, and an auto-negotiation (AN) layer. The receiving FEC layer decodes the received signal, identifies and corrects errors generated during transmission. When the FEC layer cannot correct an error code, it marks the converted code block as an E-code block. It should be understood that... Figure 3 This is for illustrative purposes only, and the architecture used in the embodiments of this application is not limited thereto.
[0092] As mentioned above, early wireless transmissions were susceptible to interference or noise, making them unsuitable for transmitting long data frames. The longer the data frame, the greater the probability of errors. Therefore, to address the latency issues caused by retransmission of large frames, a long frame or message is typically divided into multiple "fragments." Since each "fragment" is relatively short, errors are less likely to occur. Specifically, these "fragments" include: small frames, link transfer packets (LTP), and flits. The following is a detailed description of these different types of fragmentation:
[0093] In one implementation, Layer 2 divides a giant frame into multiple smaller frames. Each smaller frame includes a portion of the data from the entire frame. Additionally, each smaller frame has an extra MAC HDR header (including frame sequence number and fragment sequence number) and an extra CRC header. If an error occurs during data transmission and retransmission is required, only the erroneous smaller frame needs to be retransmitted, instead of the entire original frame.
[0094] In another implementation, the Layer 2 to Layer 1.5 interface fragments packets with a maximum length of 10368 bits into 128-byte LTPs. Each LTP consists of 16 65-bit fragments, with an additional 14-bit CRC appended to the end of the LTP. The CRC is used to determine if each LTP is erroneous, and retransmission is performed at the LTP level, rather than the entire Ethernet frame.
[0095] In another implementation, the TLP message is fragmented into 68-byte fragments, and a 2-byte CRC is added to the end of each fragment. The retransmission granularity is one fragment, instead of the upper-layer TLP message.
[0096] As can be seen, in the above-mentioned implementation methods, although the entire frame structure is not retransmitted during link retransmission, additional overhead is introduced after fragmentation. In view of this, the embodiments of this application provide a method, apparatus and system for data retransmission, which can solve the latency problem caused by giant frame retransmission, and at the same time avoid the additional overhead caused by frame fragmentation.
[0097] In some possible implementations of the embodiments of this application, taking the deployment of a 100G Ethernet link between network elements A and Z as an example, the MAC / PCS is based on 64B / 66B encoding and decoding, and the automatic repeat request (ARQ) / response message is based on the 64B / 66B control code block of the IEEE 802.3 standard, with a type of 0x4B and a reserved value of 00, such as 0x7. Figure 4(a) and (b) in the figure show two types of 0x4B control code blocks used in the embodiments of this application. Figure 4 In type (a) shown in the diagram, D0, D1, D2, D5, D6 and D7 are used to carry ARQ request / response messages. Figure 4 In the type shown in (b), only three bytes, D1 to D3, are available. Figure 4 The definitions of each field in the O code block are shown in Table 2.
[0098] Table 2. Definitions of each field in the O code block
[0099]
[0100] It should be noted that in some possible implementations, for example, when an error occurs between two data packets, the sequence number carried by the PktSeqID field of [11:0] can also be the sequence number of the data packet preceding the data packet containing the segment that needs to be retransmitted. In some possible implementations, the segment sequence number carried by the SliceID field of [9:0] can also be the segment sequence number of the segment preceding the segment that needs to be retransmitted; this application embodiment does not specifically limit this. It should also be noted that the receiving network element and the sending network element need to pre-agree on which information the above fields carry.
[0101] It should be understood that after Ethernet frames are encoded using 64B / 66B, they form a sequence containing a header block S, a data block D, and a tail block T. The S block includes two types: S0 and S4, and the T block includes eight types from T0 to T7. In this embodiment, the S block is S0. According to IEEE 802.3, bytes D1 to D6 of the S0 block have a value of 10101010 in binary, and D7 has a value of 10101011. This implementation uses bytes D3 and D4 of the S0 block to carry the sequence number of the Ethernet message. When the message is sent, the sequence number is generated during 64B / 66B encoding of the PCS and carried by bytes D3 and D4 of S0, used to identify the order in which Ethernet messages (or frames) are sent. The receiving end can extract this sequence number from bytes D3 and D4 of S0. Furthermore, an additional byte, such as D5, can be allocated to carry CRC-8, protecting the entire 16 bits of the sequence number.
[0102] Figure 5This application illustrates a data retransmission method provided by an embodiment of the present application. Ethernet data packets are divided into virtual slices of fixed length (fixed size). Each virtual slice is a segment of fixed length within the Ethernet data packet; to distinguish it from the aforementioned "fragment," it will be referred to as a "segment" below. It should be understood that this segment is virtually configured for convenient detection and retransmission requests, and each segment does not add any header (sequence number) or trailer (checksum) overhead. Specifically, this application embodiment involves a receiving (Tx) end network element and a transmitting (Rx) end network element in the data link. The Tx end network element and the Rx end network element agree on the segment length N. In some possible implementations, the Tx end network element and the Rx end network element can agree on the segment length N through static configuration or negotiation, etc. This application embodiment does not limit this. Specifically, as shown... Figure 5 As shown, 1) when the length M of a data packet is less than or equal to N, the data packet corresponds to one segment; 2) when the length M of a data packet is greater than or equal to N, the data packet corresponds to multiple segments: ① when M%N = 0, the data packet corresponds to M / N segments; ② when M%N! = 0, the data packet corresponds to ceil(M / N) segments, where the length of the last segment is M%N.
[0103] Figure 6 This illustration shows a schematic flowchart of a data retransmission method provided in an embodiment of this application. This method can be applied to… Figure 1 The scenario shown can also be applied to Figure 2 In the aforementioned apparatus 100. In some possible implementations, the method may also be in Figure 3 The protocol stack architecture shown is used in this application, but this embodiment does not limit it. The following will combine... Figures 6 to 9 The method 600 is described in detail below. Specifically, the method 600 includes the following procedures.
[0104] S601, the sending network element sends the first data packet.
[0105] For example, the first data packet can be an Ethernet frame or other data frames. In some possible implementations, the first data packet can also be a TLP message or a flit, which is not limited in this embodiment.
[0106] In some possible implementations, the MAC / PCS of the sending network element receives a first message from the network layer, carries the sequence number of the first message in the preamble of the first data packet, and sends the first data packet to the receiving network element; simultaneously, the PCS layer of the sending network element stores the first data packet... Figure 7 The replay buffer shown.
[0107] In some possible implementations, the sending network element carries the segment sequence number of the first segment of the first data packet in the preamble and sends the first data packet to the receiving network element.
[0108] Specifically, the sending network element determines the segment number of the first segment of the first data packet according to the agreed segment length N. In some possible implementations, the first data packet is the first data packet sent by the sending network element to the receiving network element, then the segment number of the first segment carried in the preamble is "0"; in some possible implementations, the first data packet is the nth data packet sent by the sending network element to the receiving network element, and the first n-1 data packets have a total of X segments, then the segment number of the first segment carried in the preamble of the first data packet is "X".
[0109] It should be understood that the first data packet is tailed with FCS.
[0110] It should be noted that because high-speed Ethernet can provide bidirectional broadband communication and allows for flexible bandwidth upgrades based on user needs, the sending and receiving network elements need to enable RS-FEC error marking functionality to address Ethernet packet loss issues.
[0111] In some possible implementations, before the sending network element sends the first data packet to the receiving network element, the FEC layer encodes the first data packet based on RS-FEC so that the receiving network element can verify the first data packet.
[0112] S602, the FEC layer of the receiving network element decodes the first data packet and marks the code block converted from the uncorrectable error codeword generated during the transmission process as an E code block.
[0113] When the receiving network element receives the first data packet, if an RS-FEC codeword cannot be corrected, the entire codeword conversion block is marked as an E code block, specifically as follows: Figure 8 As shown.
[0114] S603, the MAC layer of the receiving network element checks whether there is an E code block in one or more segments of the first data packet according to the agreed length N.
[0115] It should be understood that this one or more segments are... Figure 5 The multiple virtual fragments shown in the diagram are essentially segments of the first data packet, with a length less than or equal to the agreed length N.
[0116] For example, combined Figure 9 This is explained using a segment length of 256 bytes agreed upon by the sending and receiving network elements. For example... Figure 9As shown, the sending network element sends data packet 0 (768B), which can be divided into 3 segments according to the agreed segment length; then it sends data packet 1 (768B), also divided into 3 segments. It should be understood that data packet 0 represents a sequence number of 0, indicating that this is the first data packet sent. Further, the receiving network element verifies the received data packets as follows:
[0117] In some possible implementations, the receiving network element determines the sequence number of the first data packet based on the preamble of the first data packet. Further, during or after the receiving network element receives the first data packet, the MAC layer checks for E-code blocks in 256-byte segments. It should be noted that during the detection, segments without errors are counted; the segment number of the first segment in each data packet is recorded as 0, the segment number of the second segment as 1, and so on. It should be understood that when the nth segment of the nth data packet is detected, the segment number recorded by the receiving network element is n-1. When an E-code block is detected in a segment, the receiving network element sends an ARQ request to the sending network element, i.e., executes S604.
[0118] In some possible implementations, the receiving network element determines the segment number of the first segment of the first data packet based on the preamble of the first data packet. Further, the receiving network element checks for the presence of an E-code block in each 256-byte segment. Simultaneously, it counts the segments that have been checked without errors. It should be noted that the starting number for this counting is the segment number of the first segment of the first data packet carried in the preamble. For example, if the segment number of the first segment of the first data packet carried in the preamble is X, then when the nth segment of the first data packet is detected, the segment number recorded by the receiving network element is X+n-1. When an E-code block is detected in a segment, the receiving network element sends an ARQ request to the sending network element, i.e., executes S604.
[0119] S604: When an E code block is detected in the first segment, the receiving network element sends an ARQ request.
[0120] Specifically, when the first segment contains an E code block, it indicates that the segment, its subsequent segments, and the data packets need to be retransmitted. It should be noted that the ARQ request carries first information, which indicates the position of the first segment within one or more first data packets sent by the sending network element.
[0121] In some possible implementations, the error might occur in the D-code block of the data packet, i.e., a certain D-code block is an E-code block, such as... Figure 9As shown in (a), an error occurred in the third D block of the second data packet, meaning an error occurred in the second segment of the second data packet; or, the error may have occurred in the T block of the data packet, meaning the T block is an E block, as shown in (a). Figure 9 As shown in (b), an error occurred in the T-block of the second data packet, meaning an error occurred in the third segment of the second data packet; or, the error may have occurred in the S-block of the data packet, meaning the S-block is an E-block, as shown in (b). Figure 9 As shown in (c), an error occurred in the S-block of the second data packet, meaning an error occurred in the first segment of the second data packet; or, the error may have occurred in the I-block between the two data packets, i.e., the I-block is an E-block, as shown in (c). Figure 9 As shown in (d), an error occurred in the I code block between the first and second data packets, which can be considered as an error in the first segment of the second data packet.
[0122] In some possible implementations, the ARQ request can be sent based on an O code. In this case, the information carried by each field of the O code corresponding to the aforementioned error can be as shown in Table 3 or Table 4. For example, the first piece of information can be represented as...<PktSeqID:n,sliceID:m> This indicates that the segment that needs to be retransmitted is the (m+1)th segment in the nth data packet, as shown in Table 3.
[0123] Table 3 Figure 9 An illustration of the information carried by each field of the O code corresponding to each error.
[0124]
[0125] In some possible implementations, this first information can be represented as<PktSeqID:n,sliceID:m> The instruction indicates that the segment that needs to be retransmitted is the (m+2)th segment of the nth data packet, or the instruction indicates that the segment that needs to be retransmitted is the first segment of the (n+1)th data packet, as shown in Table 4.
[0126] Table 4 Figure 9 Another illustration of the information carried by each field of the O code corresponding to each error.
[0127]
[0128] In some possible implementations, this first information can be represented as <sliceid:m>This indicates the position of the segment that needs to be retransmitted within all the data packets sent this time.
[0129] It should be understood that the form of the first information is merely illustrative, and the first information may also be other information that can indicate the sequence information of the data packet containing the erroneous segment and the segment number.
[0130] It should be noted that when the receiving network element detects an E code block in the first segment, it discards the first segment and all subsequent data packets or messages until it receives an ARQ response.
[0131] S605, the sending network element determines the position of the first data packet that needs to be retransmitted in the replay buffer and the position of the first segment in the first data packet according to the ARQ request.
[0132] Based on the first information in the ARQ request, the sending network element determines the position of the first data packet that needs to be retransmitted in the replay buffer and the position of the first segment in the first data packet.
[0133] In some possible implementations, the sending network element determines the position of the first data packet in the replay buffer based on the sequence number in the first information, and determines the position of the first segment in the first data packet based on the segment sequence number in the first information.
[0134] In some possible implementations, the sending network element determines the erroneous data packet and the position of the erroneous segment within the erroneous data packet based on the segment sequence number.
[0135] S606, the sending network element sends an ARQ response.
[0136] It should be noted that the ARQ response can be sent based on the O code. More specifically, corresponding to the ARQ request in Table 3 or Table 4, the field [3:1] in the ARQ response is 3'b010, and the other fields remain unchanged.
[0137] S607, the sending network element sends the first segment of the first data packet and its subsequent segments.
[0138] Specifically, the sending network element will replay the first segment in the buffer and the subsequent segments in the first data packet, and retransmit the subsequent data packets once, as detailed below. Figure 9 As shown.
[0139] It should be noted that the ARQ request / response messages in the embodiments of this application can be adopted. Figure 4 The control code block shown may be any other control code block that can carry the sequence number of the first data packet with error and the segment number of the first segment with error. This application does not limit this.
[0140] It should be understood that the first data packet in the embodiments of this application can be any data packet in the data transmission process, and the first segment can be any segment in the first data packet.
[0141] This application provides a data retransmission method that, by using a pre-defined segment size, verifies whether a segment of a data packet contains an E-code block to determine if the segment is erroneous, without adding any header or verification overhead to the segment. When an erroneous data packet is received, a retransmission is requested starting from the erroneous segment, avoiding the need to retransmit the entire data packet and reducing retransmission latency.
[0142] In some possible implementations, when the receiving network element detects the received first data packet according to the agreed segment length N, it finds that no E-code block is detected in the last segment of the first data packet. However, if the FCS check of the first data packet fails, it indicates that an error occurred during transmission, and an ARQ request still needs to be initiated for the first data packet. In this case, the sequence number carried in the first information of the ARQ request can be the sequence number of the first data packet, and the segment number can be the segment number of the first segment of the first data packet, which is 0. For example... Figure 9 As shown in (b), the FCS check failed for the first data packet, so the first information can be...<PktSeqID:0,sliceID:0> It should be understood that the retransmitted data at this point includes the first data packet and all subsequent data packets. In some possible implementations, the sequence number in the first information carried in the ARQ request can be the sequence number of the first data packet, and the segment number can be empty. In some possible implementations, the sequence number in the first information carried in the ARQ request can be empty, and the segment number can be the segment number of the first segment of the first data packet carried in the preamble of the first data packet.
[0143] In some possible implementations, when the information carried by the preamble of the first data packet is the segment number of the first segment of the first data packet, the receiving network element can still determine the sequence number of the first data packet by counting the preamble.
[0144] It should be understood that after the receiving network element receives a retransmitted segment or data packet, it still checks and verifies the received retransmitted segment or data packet according to the agreed segment length N. If there are still errors, it repeats S604-S607 until all correct data packets are received.
[0145] This application provides a data retransmission method that determines whether a data packet segment is erroneous by verifying whether an E-code block appears in that segment. When no E-code block is detected in a received data packet, but the FCS check of that data packet fails, the data packet and subsequent data packets are retransmitted to ensure the accuracy of data transmission.
[0146] Figure 10 This illustration shows a schematic flowchart of a data retransmission method 1000 provided in an embodiment of this application. The method 1000 can be applied to... Figure 1 The scenario shown can also be applied to Figure 2 In the aforementioned apparatus 100. In some possible implementations, the method may also be in Figure 3 The protocol stack architecture shown is used in this application, but this embodiment does not limit it. Specifically, the method 1000 can be executed by the receiving network element, and the method 1000 includes:
[0147] S1010: During or after receiving the first data packet, check whether there are errors in the received portion of the first data packet in units of segments, where the length of the segment is less than or equal to the first length.
[0148] For example, the first data packet can be the first data packet in method 600, or it can be other data packets, and this application embodiment does not limit it.
[0149] In some possible implementations, the aforementioned error can be the E-code block (or error control word) in the above embodiments. The method flow for determining the existence of error verification can be referred to the description in the above embodiments, and will not be repeated here.
[0150] In some possible implementations, the first length mentioned above can be the length N agreed upon by the transmitting network element and the receiving network element in method 600, or it can be a pre-configured length.
[0151] S1020, It is determined that there is an error in the first segment of the first data packet.
[0152] For example, the first segment can be the first segment in method 600.
[0153] S1030, Send a first retransmission request. The first retransmission request is used to request the retransmission of the first segment of the first data packet and the remaining part after the first segment of the first data packet.
[0154] For example, the first retransmission request can be an ARQ request in method 600.
[0155] Furthermore, after receiving the first retransmission request, the sending network element determines the first data packet that needs to be retransmitted and the retransmission start position of the first data packet based on the first retransmission request.
[0156] This application embodiment divides data packets into several virtual segments of a predetermined or pre-configured length. The receiving end then checks the received data packets segment by segment. When an error control word is detected in a segment, a retransmission request is sent, requesting the sending end to retransmit the erroneous segment and the remaining part after that segment, without having to retransmit the entire data packet. This reduces the latency caused by packet-based link-level retransmissions. Furthermore, this application embodiment does not add extra overhead to the header or tail of the segments, thus saving data transmission overhead.
[0157] Figure 11 This illustration shows a schematic flowchart of a data retransmission method 1100 provided in an embodiment of this application. The method 1100 can be applied to... Figure 1 The scenario shown can also be applied to Figure 2 In the aforementioned apparatus 100. In some possible implementations, the method may also be in Figure 3 The protocol stack architecture shown is used in this application, but this embodiment does not limit it. Specifically, the method 1100 can be executed by the sending network element, and the method 1100 includes:
[0158] S1110, Receive a first retransmission request. The first retransmission request carries sequence information of the first segment of the first data packet that has an error. The first segment is a segment in the first data packet whose length is less than or equal to a first length. The first length is the length agreed upon with the receiving network element that receives the first data packet; or, the first length is a pre-configured length.
[0159] For example, the first retransmission request can be an ARQ request in method 600; the first data packet can be a first data packet in method 600; the first segment can be a first segment in method 600; the sequence information of the first segment can include the segment number of the first segment in the above embodiment; the agreed length can be the length N agreed upon by the sending network element and the receiving network element in method 600.
[0160] S1120, send the first segment and the remaining part after the first segment in the first data packet according to the first retransmission request.
[0161] It should be understood that the method flow for sending the first segment and the remaining part of the first data packet after the first segment according to the first retransmission request can refer to the above embodiments, and this application does not limit it.
[0162] This application embodiment divides data packets into several virtual segments of a predetermined or pre-configured length. The sending end determines the segments that need to be retransmitted and their subsequent segments based on the retransmission request sent by the receiving end, without having to retransmit the entire data packet, thus reducing the latency caused by packet-based link-level retransmission. Furthermore, this application embodiment does not add extra overhead to the header or tail of the segments, thereby saving data transmission overhead.
[0163] The above text combines Figures 1 to 11 The methods provided in the embodiments of this application are described in detail below. Figures 12 to 13 The apparatus provided in the embodiments of this application is described in detail. It should be understood that the description of the apparatus embodiments corresponds to the description of the method embodiments. Therefore, for content not described in detail, please refer to the method embodiments above. For the sake of brevity, it will not be repeated here.
[0164] Figure 12 This is a schematic block diagram of a data retransmission apparatus provided in an embodiment of this application. The apparatus 1200 includes a transceiver unit 1210 and a processing unit 1220. The transceiver unit 1210 can implement corresponding communication functions, and the processing unit 1220 is used for data processing.
[0165] Optionally, the device 1200 may further include a storage unit, which can be used to store instructions and / or data, and the processing unit 1220 can read the instructions and / or data in the storage unit to enable the device to implement the aforementioned method embodiments.
[0166] The device 1200 may include tools for performing Figure 6 or Figures 10 to 11 The unit of the method in the above. Furthermore, each unit in the device 1200 and the other operations and / or functions described above are respectively for implementing... Figure 6 or Figures 10 to 11 The corresponding flow of the method implementation in the example.
[0167] Among them, when the device 1200 is used to perform Figure 10 When performing method 1000, the transceiver unit 1210 can be used to execute S1030 in method 1000, and the processing unit 1220 can be used to execute S1010 and S1020 in method 1000.
[0168] Specifically, the device 1200 includes: a processing unit 1220, configured to detect, in segments, whether an error exists in the received portion of the first data packet during or after receiving the first data packet, wherein the length of the segment is less than or equal to a first length; the processing unit 1220 is further configured to determine that the error exists in a first segment of the first data packet; and a transceiver unit 1210, configured to send a first retransmission request, the first retransmission request being used to request the retransmission of the first segment of the first data packet and the remaining portion of the first data packet after the first segment.
[0169] In some possible implementations, the processing unit 1220 is also configured to: detect, on a segment-by-segment basis, whether the received portion of the first data packet contains an E-code block.
[0170] In some possible implementations, the processing unit 1220 is further configured to: after determining that the error exists in the first segment of the first data packet, discard the first segment of the first data packet and the remaining portion of the first data packet after the first segment.
[0171] In some possible implementations, the first retransmission request carries sequence information for the first segment.
[0172] In some possible implementations, the sequence information of the first segment represents the number of segments that were detected without errors before the first segment.
[0173] In some possible implementations, the processing unit 1220 is further configured to: determine the sequence information of the first data packet based on the preamble of the first data packet before sending the first retransmission request; or, determine the sequence information of the first segment based on the preamble of the first data packet.
[0174] In some possible implementations, the processing unit 1220 is further configured to: verify the first data packet; the transceiver unit 1210 is further configured to: when the verification of the first data packet fails, send a second retransmission request, the second retransmission request carrying the sequence information of the first data packet and the sequence information of the second segment, the second retransmission request being used to request the retransmission of the first data packet, wherein the sequence information of the second segment is a specific value or the sequence information of the second segment is empty.
[0175] In some possible implementations, the first length is a length agreed upon with the sending network element that sends the first data packet; or, the first length is a pre-configured length.
[0176] The device 1200 can also be used to perform Figure 11 Method 1100, when the device 1200 is used to perform Figure 11 When method 1100 is used, transceiver unit 1210 can be used to execute S1110 and S1120 in method 1100.
[0177] Specifically, the device includes: a transceiver unit 1210, configured to receive a first retransmission request, the first retransmission request carrying sequence information of a first segment of a first data packet in which an error occurred, the first segment being a segment in the first data packet whose length is less than or equal to a first length, wherein the first length is a length agreed upon with the receiving network element receiving the first data packet; or, the first length is a pre-configured length; the transceiver unit 1210 is further configured to send the first segment and the remaining portion of the first data packet after the first segment according to the first retransmission request.
[0178] In some possible implementations, the processing unit 1220 is further configured to: determine the first segment of the first data packet based on the sequence information of the first segment before sending the first segment and the remainder of the first data packet according to the first retransmission request.
[0179] In some possible implementations, the processing unit 1220 is further configured to: determine the sequence information of a second segment based on the first length before receiving the first retransmission request, the second segment being the first segment of the first data packet; and carry the sequence information of the second segment in the preamble of the first data packet.
[0180] In some possible implementations, the transceiver unit 1210 is further configured to: receive a second retransmission request, the second retransmission request carrying sequence information of the first data packet and sequence information of a second segment, wherein the sequence information of the second segment is a specific value or the sequence information of the second segment is empty; and send the first data packet according to the second retransmission request.
[0181] Figure 12 The processing unit 1220 can be implemented by at least one processor or processor-related circuitry, the transceiver unit 1210 can be implemented by a transceiver or transceiver-related circuitry, and the storage unit can be implemented by at least one memory.
[0182] Figure 13 This is a schematic block diagram of a data retransmission apparatus according to an embodiment of this application. Figure 13 The data retransmission device 1300 shown may include a processor 1310, a transceiver 1320, and a memory 1330. The processor 1310, transceiver 1320, and memory 1330 are connected via internal interconnection paths. The memory 1330 stores instructions, and the processor 1310 executes the instructions stored in the memory 1330 to receive / send certain parameters via the transceiver 1330. Optionally, the memory 1330 may be coupled to the processor 1310 via an interface or integrated with the processor 1310.
[0183] It should be noted that the transceiver 1320 mentioned above may include, but is not limited to, transceiver devices such as input / output interfaces, to realize communication between the communication device 1300 and other devices or communication networks.
[0184] In implementation, each step of the above method can be completed by the integrated logic circuitry of the hardware in the processor 1310 or by instructions in software form. The method disclosed in the embodiments of this application can be directly implemented by the hardware processor, or by a combination of hardware and software modules in the processor. The software modules can 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 1330, and the processor 1310 reads the information in memory 1330 and, in conjunction with its hardware, completes the steps of the above method. To avoid repetition, detailed descriptions are not provided here.
[0185] It should also be understood that, in embodiments of this application, the memory may include read-only memory and random access memory, and provides instructions and data to the processor. A portion of the processor may also include non-volatile random access memory. For example, the processor may also store device type information.
[0186] This application also provides a computer-readable storage medium storing program code that, when executed on a computer, causes the computer to perform the above-described... Figure 6 or Figures 10 to 11 Any of the methods mentioned above.
[0187] This application also provides a chip, including: at least one processor and a memory, wherein the at least one processor is coupled to the memory and is used to read and execute instructions in the memory to perform the above-mentioned... Figure 6 or Figures 10 to 11 Any of the methods mentioned above.
[0188] This application will present various aspects, embodiments, or features relating to systems comprising multiple devices, components, modules, etc. It should be understood and appreciated that individual systems may include additional devices, components, modules, etc., and / or may not include all devices, components, modules, etc. discussed in conjunction with the accompanying drawings. Furthermore, combinations of these approaches are also possible.
[0189] Furthermore, in the embodiments of this application, the words "exemplary," "for example," etc., are used to indicate that they are examples, illustrations, or descriptions. Any embodiment or design scheme described as "exemplary" in this application should not be construed as being more preferred or advantageous than other embodiments or design schemes. Specifically, the use of the term "exemplary" is intended to present the concept in a concrete manner.
[0190] In the embodiments of this application, "corresponding" and "corresponding" can sometimes be used interchangeably. It should be noted that when the distinction is not emphasized, their intended meanings are consistent.
[0191] The network architecture and business scenarios described in the embodiments of this application are for the purpose of more clearly illustrating the technical solutions of the embodiments of this application, and do not constitute a limitation on the technical solutions provided in the embodiments of this application. As those skilled in the art will know, with the evolution of network architecture and the emergence of new business scenarios, the technical solutions provided in the embodiments of this application are also applicable to similar technical problems.
[0192] References to "one embodiment" or "some embodiments" as used in this specification mean that one or more embodiments of this application include a specific feature, structure, or characteristic described in connection with that embodiment. Therefore, the phrases "in one embodiment," "in some embodiments," "in other embodiments," "in still other embodiments," etc., appearing in different parts of this specification do not necessarily refer to the same embodiment, but rather mean "one or more, but not all, embodiments," unless otherwise specifically emphasized. The terms "comprising," "including," "having," and variations thereof mean "including but not limited to," unless otherwise specifically emphasized.
[0193] In this application, "at least one" means one or more, and "more than one" means two or more. "And / or" describes the relationship between related objects, indicating that three relationships can exist. For example, A and / or B can mean: A alone, A and B simultaneously, and B alone, where A and B can be singular or plural. The character " / " generally indicates that the preceding and following related objects are in an "or" relationship. "At least one of the following" or similar expressions refer to any combination of these items, including any combination of single or plural items. For example, at least one of a, b, or c can mean: a, b, c, ab, ac, bc, or abc, where a, b, and c can be single or multiple.
[0194] 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.
[0195] Those skilled in the art will 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.
[0196] 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.
[0197] 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.
[0198] 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.
[0199] 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.
[0200] 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.< / sliceid:m>
Claims
1. A method for data retransmission, characterized in that, include: During or after receiving the first data packet, the received portion of the first data packet is checked for error code blocks in units of segments, wherein the length of the segment is less than or equal to the first length. It was determined that an error code block existed in the first segment of the first data packet; Send a first retransmission request, which is used to request the retransmission of the first segment of the first data packet and the remaining part of the first data packet after the first segment.
2. The method according to claim 1, characterized in that, The method further includes: Detect whether there are errors in the idle code block by the aforementioned segment; After determining that the error exists in the idle code block, a first retransmission request is sent, which is used to request the retransmission of the data packets after the idle code block.
3. The method according to claim 1, characterized in that, After determining that an erroneous code block exists in the first segment of the first data packet, the method further includes: Discard the first segment of the first data packet and the remaining portion of the first data packet after the first segment.
4. The method according to any one of claims 1 to 3, characterized in that, The first retransmission request carries the sequence information of the first segment.
5. The method according to claim 4, characterized in that, The sequence information of the first segment indicates the number of segments before the first segment that have no erroneous code blocks detected.
6. The method according to any one of claims 1 to 3, characterized in that, Before sending the first retransmission request, the method further includes: The sequence information of the first data packet is determined based on the preamble of the first data packet; or The sequence information of the first segment is determined based on the preamble of the first data packet.
7. The method according to any one of claims 1 to 3, characterized in that, The method further includes: The first data packet is verified. If the verification of the first data packet fails, a second retransmission request is sent. The second retransmission request carries the sequence information of the first data packet and the sequence information of the second segment. The second retransmission request is used to request the retransmission of the first data packet. The sequence information of the second segment is a specific value or the sequence information of the second segment is empty.
8. The method according to any one of claims 1 to 3, characterized in that, The first length is the length agreed upon with the sending network element that sends the first data packet; or, the first length is a pre-configured length.
9. A method for data retransmission, characterized in that, include: A first retransmission request is received, the first retransmission request carrying sequence information of the first segment of the first data packet in which the error code block occurs, the first segment being a segment in the first data packet whose length is less than or equal to a first length, wherein the first length is the length agreed upon with the receiving network element that receives the first data packet; or, the first length is a pre-configured length. The first segment and the remaining portion of the first data packet after the first segment are sent according to the first retransmission request.
10. The method according to claim 9, characterized in that, Before sending the first segment and the remaining portion of the first data packet after the first segment according to the first retransmission request, the method further includes: The first segment of the first data packet to be transmitted is determined based on the sequence information of the first segment.
11. The method according to claim 9 or 10, characterized in that, Before receiving the first retransmission request, the method further includes: The sequence information of the second segment is determined based on the first length, and the second segment is the first segment of the first data packet; The sequence information of the second segment is carried in the preamble of the first data packet.
12. The method according to claim 9 or 10, characterized in that, The method further includes: Receive a second retransmission request, the second retransmission request carrying the sequence information of the first data packet and the sequence information of the second segment, the sequence information of the second segment being a specific value or the sequence information of the second segment being empty; The first data packet is sent according to the second retransmission request.
13. A data retransmission apparatus, characterized in that, include: The processing unit is configured to detect, in the process of receiving the first data packet or after receiving the first data packet, whether there is an error code block in the received portion of the first data packet in units of segments, wherein the length of the segment is less than or equal to a first length. The processing unit is also configured to determine that the error code block exists in the first segment of the first data packet; The transceiver unit is used to send a first retransmission request, which requests the retransmission of the first segment of the first data packet and the remaining portion of the first data packet after the first segment.
14. The apparatus according to claim 13, characterized in that, The processing unit is also used for: Detect whether there are errors in the idle code block by the aforementioned segment; The transceiver unit is configured to send a first retransmission request after the processing unit determines that the idle code block contains the error. The first retransmission request is used to request the retransmission of the data packet after the idle code block.
15. The apparatus according to claim 13, characterized in that, After determining that the first segment in the first data packet contains the error code block, the processing unit is further configured to: Discard the first segment of the first data packet and the remaining portion of the first data packet after the first segment.
16. The apparatus according to any one of claims 13 to 15, characterized in that, The first retransmission request carries the sequence information of the first segment.
17. The apparatus according to claim 16, characterized in that, The sequence information of the first segment indicates the number of segments before the first segment that have no erroneous code blocks detected.
18. The apparatus according to any one of claims 13 to 15, characterized in that, Before sending the first retransmission request, the processing unit is further configured to: The sequence information of the first data packet is determined based on the preamble of the first data packet; or The sequence information of the first segment is determined based on the preamble of the first data packet.
19. The apparatus according to any one of claims 13 to 15, characterized in that, The processing unit is also used for: The transceiver unit is further configured to: verify the first data packet; When the first data packet fails to be verified, a second retransmission request is sent. The second retransmission request carries the sequence information of the first data packet and the sequence information of the second segment. The second retransmission request is used to request the retransmission of the first data packet. The sequence information of the second segment is a specific value or the sequence information of the second segment is empty.
20. The apparatus according to any one of claims 13 to 15, characterized in that, The first length is the length agreed upon with the sending network element that sends the first data packet; or, the first length is a pre-configured length.
21. A data retransmission apparatus, characterized in that, include: The transceiver unit is configured to receive a first retransmission request, the first retransmission request carrying sequence information of a first segment of a first data packet containing an error code block, the first segment being a segment in the first data packet whose length is less than or equal to a first length, wherein the first length is a length agreed upon with the receiving network element receiving the first data packet; or, the first length is a pre-configured length. The transceiver unit is further configured to send the first segment and the remaining portion of the first data packet after the first segment according to the first retransmission request.
22. The apparatus according to claim 21, characterized in that, It also includes a processing unit for: Before sending the first segment and the remaining portion of the first data packet after the first segment according to the first retransmission request, the first segment of the first data packet that needs to be retransmitted is determined according to the sequence information of the first segment.
23. The apparatus according to claim 21 or 22, characterized in that, The processing unit is also used for: Before receiving the first retransmission request, the sequence information of the second segment is determined according to the first length, wherein the second segment is the first segment of the first data packet; The sequence information of the second segment is carried in the preamble of the first data packet.
24. The apparatus according to claim 21 or 22, characterized in that, The transceiver unit is also used for: Receive a second retransmission request, the second retransmission request carrying the sequence information of the first data packet and the sequence information of the second segment, the sequence information of the second segment being a specific value or the sequence information of the second segment being empty; The first data packet is sent according to the second retransmission request.
25. A data retransmission apparatus, characterized in that, include: A transceiver is used to receive and send messages; Memory, used to store computer programs; A processor for executing a computer program stored in the memory to cause the apparatus to perform the method as described in any one of claims 1 to 12; the processor is coupled to the memory.
26. A data retransmission system, characterized in that, Includes the apparatus as claimed in any one of claims 13 to 20, and the apparatus as claimed in any one of claims 21 to 24.
27. A computer-readable storage medium, characterized in that, It stores a computer program thereon, which, when executed by a computer, enables the implementation of the method as described in any one of claims 1 to 12.