Data retransmission method, device and system

By retransmission based on data slices at the physical layer, the retransmission delay and buffer space occupation caused by errors in device interconnection are solved, and more efficient and reliable data transmission is achieved.

CN119628798APending Publication Date: 2025-03-14HUAWEI TECH CO LTD
View PDF 0 Cites 4 Cited by

Patent Information

Application Number
CN202311187754.8
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Filing Date
2023-09-13
Publication Date
2025-03-14

AI Technical Summary

Technical Problem

When the device is interconnected, the code error frequency increases due to channel interference, and the prior art is difficult to effectively reduce the transmission delay and buffer space occupation of retransmission requests.

Method used

Using a method of retransmission based on data slices at the physical layer, the data slice includes a code block carried by at least one FEC codeword, and a lower retransmission delay and a smaller buffer space are achieved by dividing the data into multiple data slices and assigning a sequence number to each data slice.

Benefits of technology

It reduces the transmission delay of retransmission requests, reduces the space usage of buffers, and improves the efficiency and reliability of data transmission.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119628798A_ABST
    Figure CN119628798A_ABST
Patent Text Reader

Abstract

The embodiment of the invention provides a data retransmission method, device and system. According to the embodiment of the invention, retransmission is carried out on a physical layer based on a data slice, the data slice comprises a code block carried by at least one FEC code word, and a corresponding serial number is allocated to each data slice in data. A sending device can store sent data slices and corresponding serial numbers in a buffer area while sending data. And after receiving the data, the receiving equipment distributes a corresponding serial number for each data slice according to the same way as the sending equipment. And furthermore, the receiving equipment sends a retransmission request carrying the serial number corresponding to the data slice after finding the uncorrectable error, and the sending equipment extracts the corresponding data slice from the buffer area according to the retransmission request and starts retransmission. It can be seen that the number of code blocks borne by the data slices is small, and compared with message-based retransmission, retransmission based on the data slices is more beneficial to reducing the transmission delay of retransmission and reducing the space of a buffer area.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The embodiments of the present application relate to the field of communications, and in particular, to a data retransmission method, device, and system. Background Art

[0002] When devices are interconnected, channel interference causes a high probability of bit errors during transmission. As the transmission bandwidth increases and the rate increases, the probability of bit errors increases. Although current devices have added forward error correction (FEC) technology, it cannot correct all bit errors, and the receiving device may occasionally have packet errors or packet loss.

[0003] In order to ensure lossless transmission of the link when devices are interconnected, it is necessary to support notifying the sending device to retransmit when an error packet or packet loss occurs on the receiving device, so that all messages sent by the sending device can be correctly received by the receiving device. Currently, under the Ethernet protocol, retransmission is performed at the granularity of the message, and retransmission-related messages can only be sent at the message boundary. Since the maximum length of a message is 9600 bytes, if the message sent by the sending device is large, it will cause a large delay in retransmission-related messages, and the buffer space used by the sending device to store retransmitted messages will also be greatly increased. Summary of the invention

[0004] The embodiments of the present application provide a data retransmission method, device and system, which are beneficial to reducing the transmission delay of the retransmission request and reducing the space of the buffer.

[0005] In the first aspect, an embodiment of the present application provides a data retransmission method, which is applied to a first device on the data receiving side. Specifically, the first device receives data sent by the second device, wherein the data can be divided into data slices, and the data slices include at least one code block carried by a forward error correction (FEC) codeword, and each data slice corresponds to a sequence number. Afterwards, the first device verifies the received data, and if an uncorrectable error occurs in the data, the first device sends a data retransmission request to the second device. The data retransmission request includes a target sequence number to request the second device to send retransmitted data to the first device according to the target sequence number.

[0006] In this implementation, retransmission is performed based on data slices at the physical layer. The data slices include code blocks carried by at least one FEC codeword. The number of code blocks carried by the data slices is relatively small. Retransmission based on data slices is more conducive to reducing the transmission delay of retransmission and reducing the space of the buffer compared to retransmission based on messages. In addition, the data retransmission method provided in the embodiment of the present application is implemented at the physical layer, which is closer to the physical port for data transmission. Compared with the method of implementing retransmission at the data link layer, it is also more conducive to reducing transmission delay.

[0007] In some possible implementations, an alignment marker (AM) is periodically inserted into the data, wherein the period of inserting the AM may also be referred to as an AM window. Each AM window includes N data slices, and the data slice located at the actual position of each AM window includes the AM, where N is an integer greater than or equal to 1. In other words, retransmission based on the data slices allows the period of the AM to remain stable.

[0008] In some possible implementations, the method further includes: the first device identifies the AM in the data, and assigns corresponding serial numbers to the data slices in the AM window starting from the AM. In the AM window, the serial numbers corresponding to the data slices are incremented in sequence starting from the data slices including the AM. It can be seen that the first device assigns the data slices in the AM window by identifying the AM in the data, so that the serial numbers assigned to the data slices by the first device and the second device remain the same, so that the second device does not need to send the serial number corresponding to each data slice to the first device, and the implementation method is simpler.

[0009] In some possible implementations, the length of each data slice is the same, so as to facilitate the standardization of the data slices.

[0010] In some possible implementations, the number of code blocks in a data retransmission request is an integer multiple of the number of code blocks in a data slice, that is, the retransmission request is sent with data slices as the granularity, so that the first device does not need to split the data slices when sending data, thereby ensuring the atomicity of the data slices.

[0011] In some possible implementations, the retransmitted data includes a target data slice corresponding to the target sequence and a data slice subsequent to the target data slice, thereby ensuring the integrity of the retransmitted data.

[0012] In some possible implementations, if an uncorrectable error occurs in the data, the method further includes: the first device discards the target data slice corresponding to the target sequence number and the data slice after the target data slice, thereby preparing for receiving retransmitted data.

[0013] In some possible implementations, after the first device sends a data retransmission request to the second device, the method further includes: the first device receives a data retransmission response sent by the second device, and the data retransmission response is used to indicate that the retransmission data starts to be sent. Then, the first device starts to receive the retransmission data sent by the second device. That is, the first device starts to receive the retransmission data after sending the retransmission request and receiving the retransmission response, further improving the data retransmission process.

[0014] In some possible implementations, the number of code blocks in a data retransmission response is an integer multiple of the number of code blocks in a data slice, that is, the retransmission response is sent with data slices as the granularity, so that the second device does not need to split the data slices when sending data, thereby ensuring the atomicity of the data slices.

[0015] In some possible implementations, after the first device receives the data retransmission response, the method further includes: the first device determines whether the number of correctly verified code blocks in the data retransmission response is greater than a threshold. If so, the first device determines that a correct data retransmission response has been received. It can be seen that for the data retransmission response, even if some uncorrectable errors are found at this time, the data retransmission response must be identified, which increases the possibility of identifying the data retransmission response.

[0016] In some possible implementations, if an uncorrectable error occurs in the data, the first device sends a data retransmission request to the second device, including: if an uncorrectable error occurs in the data, the first device sends a data retransmission request to the second device at the time of the next data slice to be sent. That is, the data slice and the data retransmission request are sent continuously, which is conducive to ensuring the stability of the AM cycle.

[0017] In some possible implementations, the size of the code block is 66 bits or 257 bits, that is, the scheduling of retransmission is implemented on the basis of 64b / 66b encoding or 256b / 257b encoding, which improves the practicality of the present solution.

[0018] In some possible implementations, the data slice includes 80 code blocks of 66 bits or 20 code blocks of 257 bits, that is, the data slice includes code blocks that can be carried by one FEC codeword.

[0019] In a second aspect, an embodiment of the present application provides a data retransmission method, which is applied to a first device on the data sending side. Specifically, the first device obtains data, wherein the data includes data slices, the data slices include code blocks carried by at least one FEC codeword, and each data slice corresponds to a sequence number. When the first device sends data to the second device, it stores each data slice and the corresponding sequence number in a buffer. Afterwards, the first device receives a data retransmission request containing a target sequence number, and sends retransmitted data to the second device according to the target sequence number.

[0020] In this implementation, retransmission is performed based on data slices at the physical layer. The data slices include code blocks carried by at least one FEC codeword. The number of code blocks carried by the data slices is relatively small. Retransmission based on data slices is more conducive to reducing the transmission delay of retransmission and reducing the space of the buffer compared to retransmission based on messages. In addition, the data retransmission method provided in the embodiment of the present application is implemented at the physical layer, which is closer to the physical port for data transmission. Compared with the method of implementing retransmission at the data link layer, it is also more conducive to reducing transmission delay.

[0021] In some possible implementations, each AM window in the data includes N data slices, the data slice located at the starting position of each AM window includes AM, and N is an integer greater than or equal to 1.

[0022] In some possible implementations, the method further includes: the first device assigning corresponding serial numbers to data slices in the AM window starting from the AM in the data, wherein in the AM window, the serial numbers corresponding to the data slices are incremented in sequence starting from the data slice including the AM.

[0023] In some possible implementations, the length of each data slice is the same.

[0024] In some possible implementations, the number of code blocks in the data retransmission request is an integer multiple of the number of code blocks in the data slice.

[0025] In some possible implementations, the retransmitted data includes a target data slice corresponding to the target sequence number in the buffer and a data slice after the target data slice.

[0026] In some possible implementations, after the first device receives the data retransmission request, before the first device sends the retransmission data to the second device according to the target sequence number, the method further includes: the first device sends a data retransmission response to the second device at the time of the next data slice to be sent, and the retransmission response is used to indicate that the retransmission data starts to be sent. In other words, the data slice and the data retransmission response are sent continuously, which is conducive to ensuring the stability of the AM cycle.

[0027] In some possible implementations, the number of code blocks in the data retransmission response is an integer multiple of the number of code blocks in the data slice.

[0028] In some possible implementations, after the first device receives the data retransmission request, the method further includes: the first device determines whether the number of correctly verified code blocks in the data retransmission request is greater than a threshold. If so, the first device determines that a correct data retransmission request has been received. It can be seen that for the data retransmission request, even if some uncorrectable errors are found at this time, the data retransmission request must be identified, which enhances the possibility of identifying the data retransmission request.

[0029] In some possible implementations, after the first device receives the data retransmission request, the method further includes: the first device determines the next data slice to be sent after receiving the data retransmission request. Then, the first device updates the target sequence number corresponding to the target data slice in the buffer to the sequence number corresponding to the next data slice to be sent, and updates the sequence number corresponding to each data slice after the target data slice in the buffer according to the sequence number corresponding to the next data slice to be sent. In other words, after reading the retransmitted data from the buffer, it is necessary to update the sequence number corresponding to the subsequent data slices in the retransmitted data according to the sequence number of the data slice that is actually to be sent. Therefore, during the data retransmission process, it can be ensured that the number of data slices to be sent recorded in an AM window remains unchanged, so that the next AM can be sent immediately after the current AM window ends.

[0030] In some possible implementations, the method also includes: in the process of the first device sending retransmitted data, if AM needs to be sent at the current moment, the first device sends an invalid data slice including AM and an invalid code block, so that the subsequently retransmitted data slices are complete, thereby ensuring the atomicity of the retransmitted data slices.

[0031] In some possible implementations, the method further includes: if the retransmission data corresponding to the data retransmission request includes a data slice carrying an AM, the first device replaces the AM in the data slice with an invalid code block and then sends it to the second device. In other words, the second device has received and identified the AM, and the data to be sent by the first device has not yet reached the position of the next AM. In order to avoid disrupting the AM window, the first device replaces the AM in the retransmitted data slice with an invalid code block before sending it.

[0032] In some possible implementations, the size of the code block is 66 bits or 257 bits.

[0033] In some possible implementations, the data slice includes 80 code blocks of 66 bits or 20 code blocks of 257 bits, that is, the data slice includes code blocks that can be carried by one FEC codeword.

[0034] In a third aspect, an embodiment of the present application provides a chip, which includes a processor and a memory, the memory and the processor are interconnected via lines, instructions are stored in the memory, and the processor is used to execute the method described in any implementation method of the first aspect and the second aspect.

[0035] In a fourth aspect, an embodiment of the present application provides a communication device, which includes: a receiving unit, a processing unit and a sending unit. The receiving unit is used to: receive data, the data includes data slices, the data slices include code blocks carried by at least one FEC codeword, and each data slice corresponds to a sequence number. The processing unit is used to: verify the data. The sending unit is used to: if an uncorrectable error occurs in the data, send a data retransmission request to the opposite communication device, the data retransmission request includes a target sequence number, and the data retransmission request is used to request the opposite communication device to send retransmission data to the communication device according to the target sequence number.

[0036] In some possible implementations, each AM window in the data includes N data slices, the data slice located at the starting position of each AM window includes AM, and N is an integer greater than or equal to 1.

[0037] In some possible implementations, the processing unit is specifically used to: identify AM in the data, and assign corresponding serial numbers to data slices within the AM window starting from AM, wherein, within the AM window, the serial numbers corresponding to the data slices starting from the data slice including AM are incremented sequentially.

[0038] In some possible implementations, the length of each data slice is the same.

[0039] In some possible implementations, the number of code blocks in the data retransmission request is an integer multiple of the number of code blocks in the data slice.

[0040] In some possible implementations, the retransmitted data includes a target data slice corresponding to the target sequence number and a data slice subsequent to the target data slice.

[0041] In some possible implementations, if an uncorrectable error occurs in the data, the processing unit is further configured to: discard the target data slice corresponding to the target sequence number and the data slice after the target data slice.

[0042] In some possible implementations, after the sending unit sends the data retransmission request to the opposite communication device, the receiving unit is further used to: receive a data retransmission response, where the data retransmission response is used to indicate the start of sending the retransmitted data; and receive the retransmitted data.

[0043] In some possible implementations, the number of code blocks in the data retransmission response is an integer multiple of the number of code blocks in the data slice.

[0044] In some possible implementations, after the receiving unit receives the data retransmission response, the processing unit is further used to: determine whether the number of code blocks verified correctly in the data retransmission response is greater than a threshold; if so, determine that a correct data retransmission response has been received.

[0045] In some possible implementations, if an uncorrectable error occurs in the data, the sending unit is specifically configured to: send a data retransmission request to the opposite communication device at the time of the next data slice to be sent.

[0046] In some possible implementations, the size of the code block is 66 bits or 257 bits.

[0047] In some possible implementations, a data slice includes 80 code blocks of 66 bits in size, or a data slice includes 20 code blocks of 257 bits in size.

[0048] In a fifth aspect, an embodiment of the present application provides a communication device, which includes: a receiving unit, a processing unit and a sending unit. The processing unit is used to: obtain data, the data includes data slices, the data slices include code blocks carried by at least one FEC codeword, and each data slice corresponds to a sequence number. The sending unit is used to: send data to the opposite communication device. The processing unit is used to: store each data slice and the corresponding sequence number in a buffer. The receiving unit is used to: receive a data retransmission request, the data retransmission request includes a target sequence number. The sending unit is used to: send retransmission data to the opposite communication device according to the target sequence number.

[0049] In some possible implementations, each AM window in the data includes N data slices, the data slice located at the starting position of each AM window includes AM, and N is an integer greater than or equal to 1.

[0050] In some possible implementations, the processing unit is further used to: assign corresponding serial numbers to data slices within the AM window starting from the AM in the data, wherein, within the AM window, the serial numbers corresponding to the data slices starting from the data slice including the AM are incremented sequentially.

[0051] In some possible implementations, the length of each data slice is the same.

[0052] In some possible implementations, the number of code blocks in the data retransmission request is an integer multiple of the number of code blocks in the data slice.

[0053] In some possible implementations, the retransmitted data includes a target data slice corresponding to the target sequence number in the buffer and a data slice after the target data slice.

[0054] In some possible implementations, after the receiving unit receives the data retransmission request, before the sending unit sends the retransmission data to the opposite communication device according to the target sequence number, the sending unit is also used to: send a data retransmission response to the second device at the moment of the next data slice to be sent, and the retransmission response is used to indicate the start of sending the retransmission data.

[0055] In some possible implementations, the number of code blocks in the data retransmission response is an integer multiple of the number of code blocks in the data slice.

[0056] In some possible implementations, after the receiving unit receives the data retransmission request, the processing unit is further used to: determine whether the number of correctly verified code blocks in the data retransmission request is greater than a threshold; if so, determine that a correct data retransmission request has been received.

[0057] In some possible implementations, after the receiving unit receives the data retransmission request, the processing unit is further configured to: determine the next data slice to be sent after receiving the data retransmission request, update the target sequence number corresponding to the target data slice in the buffer to the sequence number corresponding to the next data slice to be sent, and update the sequence number corresponding to each data slice after the target data slice in the buffer according to the sequence number corresponding to the next data slice to be sent.

[0058] In some possible implementations, the sending unit is further configured to: during the process of sending the retransmission data, if AM needs to be sent at the current moment, send an invalid data slice including the AM and an invalid code block.

[0059] In some possible implementations, the sending unit is further configured to: if the retransmission data corresponding to the data retransmission request includes a data slice carrying an AM, replace the AM in the data slice with an invalid code block and then send the data slice to the second device.

[0060] In some possible implementations, the size of the code block is 66 bits or 257 bits.

[0061] In some possible implementations, a data slice includes 80 code blocks of 66 bits in size, or a data slice includes 20 code blocks of 257 bits in size.

[0062] In a sixth aspect, an embodiment of the present application provides a communication system, which includes a communication device as described in any implementation of the fourth aspect and a communication device as described in any implementation of the fifth aspect.

[0063] In the seventh aspect, an embodiment of the present application provides a computer-readable storage medium, on which a computer program is stored. When the computer program is executed by a computer, the method described in any one of the embodiments of the first aspect and the second aspect is implemented.

[0064] It can be seen from the above technical solutions that the embodiments of the present application have the following advantages:

[0065] In the embodiment of the present application, data is divided into multiple data slices at the physical layer, wherein the data slice includes a code block carried by at least one FEC code word. For example, if the FEC code word can carry 80 66-bit code blocks, a data slice can include 80, 160 or more 66-bit code blocks. In addition, each data slice in the data is assigned a corresponding sequence number. The sending device stores the sent data slice and the corresponding sequence number in the buffer while sending the data. After receiving the data, the receiving device will also assign a corresponding sequence number to each data slice in the same way as the sending device. Furthermore, after the uncorrectable error is found, the receiving device sends a retransmission request carrying the corresponding sequence number of the data slice, and the sending device extracts the corresponding data slice from the buffer according to the retransmission request to start retransmission. It can be seen that the embodiment of the present application is retransmitted based on data slices at the physical layer, and the data slices include code blocks carried by at least one FEC code word. The number of code blocks carried by the data slices is small, and retransmission based on data slices is more conducive to reducing the transmission delay of retransmission and reducing the space of the buffer compared to retransmission based on messages. Furthermore, the data retransmission method provided in the embodiment of the present application is implemented at the physical layer, which is closer to the physical port of data transmission. Compared with the method of implementing retransmission at the data link layer, it is also more conducive to reducing transmission delay. BRIEF DESCRIPTION OF THE DRAWINGS

[0066] Figure 1 It is a network diagram based on Ethernet connection;

[0067] Figure 2 is a schematic structural diagram of a communication device;

[0068] Figure 3 is a schematic flow chart of a method for Ethernet data transmission;

[0069] Figure 4 A schematic diagram of a data retransmission method in an embodiment of the present application;

[0070] Figure 5 A schematic diagram of assigning serial numbers to data slices in an embodiment of the present application;

[0071] Figure 6 A schematic diagram of a format of a retransmission request and a retransmission response in an embodiment of the present application;

[0072] Figure 7 This is a schematic diagram of the first application scenario of data retransmission in an embodiment of the present application;

[0073] Figure 8 This is a schematic diagram of a second application scenario of data retransmission in an embodiment of the present application;

[0074] Fig. 9This is a schematic diagram of a third application scenario of data retransmission in an embodiment of the present application;

[0075] Fig.10 A schematic diagram of the structure of a communication device in an embodiment of the present application;

[0076] Fig.11 This is another structural schematic diagram of a communication device in an embodiment of the present application;

[0077] Fig.12 It is a structural diagram of a communication system in an embodiment of the present application. DETAILED DESCRIPTION

[0078] The embodiments of the present application provide a data retransmission method, device and system. The embodiments of the present application perform retransmission based on data slicing at the physical layer. The data slice includes a code block carried by at least one FEC frame. The number of code blocks carried by the data slice is small, which is beneficial to reducing the transmission delay of the retransmission request and reducing the buffer space.

[0079] Figure 1 It is a network diagram based on Ethernet connection. Figure 1 As shown, communication device 10 performs data transmission with communication device 20 and communication device 30 based on Ethernet, and communication device 40 performs data transmission with communication device 20 and communication device 30 based on Ethernet. Two communication devices performing data transmission based on Ethernet can be connected by means of cables or optical fibers. It should be understood that Figure 1 The communication device in the communication device may be a network device, and the network device may be a router or a switch, etc.

[0080] Figure 2 It is a schematic structural diagram of a communication device. Figure 2 As shown, taking the communication device 10 as an example, the communication device 10 is based on Ethernet data transmission. The communication device 10 includes a main control switching unit and an interface unit. The main control switching unit includes a network processor (NP) or a switching chip. The interface unit is used for the communication device 10 to exchange information with other devices. The interface unit includes an Ethernet interface. The process of Ethernet interface for data transmission can be referred to Figure 3 The Ethernet interface can be used to perform all or part of the functions of the medium access control (MAC) layer and the physical (PHY) layer. The data transmission method performed by the Ethernet interface can be implemented by a chip or a field programmable gate array (FPGA).

[0081] Figure 3The invention is a schematic flow chart of a method for Ethernet data transmission. Figure 3 The relevant processing process of the physical layer is mainly described. The following is an example of a first device sending data to a second device. The process of the second device sending data to the first device is similar. For the first device, after an Ethernet packet enters the medium access control (MAC) layer, the packet is checked and encoded according to a certain medium independent interface (MII) requirement, and sent to the physical coding sublayer (PCS) through various MII interfaces such as the gigabit MII (GMII) interface. The PCS sublayer receives the GMII information sent by the GMII interface and performs bit code block encoding and rate matching. GMII is generally used between the MAC layer and the physical layer of an Ethernet device. In some embodiments, the GMII interface exists in an integrated circuit. The PCS sublayer encodes according to the 64b / 66b rule to form a serial stream, wherein the code block obtained after encoding according to 64b / 66b includes 66 bits, which can be called a 66b code block. Afterwards, the PCS sublayer further encodes the 66b code block into a 257b code block stream according to the 256b / 257b encoding rule. After the 257b code block is scrambled, an alignment marker (AM) is inserted, where the AM includes several 257b code blocks. After inserting the AM, the 257b code block stream is forward error correction (FEC) encoded and the check bits are added. Then, through distribution and interleaving, it is distributed to multiple physical coding sublayer lanes (PCSL) according to symbols (one symbol is 10 bits), and the inserted AM will be distributed on each PCSL. The symbols on the PCSL can be sent to the second device through the physical medium access sublayer (PMA) and the physical medium dependent (PMD).

[0082] The second device receives the symbols sent by the first device through PMD and PMA, uses the AM on each PCSL to lock the channel, and reorders each PCS channel to obtain a symbol stream, and then performs FEC decoding on the symbol stream to form a serial code block stream and remove the AM in the serial code block stream. Then, the serial code block stream after removing the AM is descrambled and reversely transcoded to obtain a 66b serial code block stream, and the 66b serial code block stream is decoded and rate matched and sent to the MAC layer, and the data is transmitted to the data link layer through the MAC layer.

[0083] It should be noted that for ease of understanding, Figure 3 This is just a brief description of the processing flow of the Ethernet interface. In specific applications, other processing processes can be added or some of the above processing processes can be reduced. The above method is applicable to 200G and 400G Ethernet interfaces. For 40G and 100G Ethernet interfaces, the FEC encoding, FEC decoding and 257b transcoding processes may not be included.

[0084] It should be understood that a bit is a bit in a binary digit, a unit of measurement for information, and the smallest unit of information. 257b code block streams, 66b code block streams, and symbol streams distributed to logical channels can all be understood as bit streams. AM may include several code blocks. For example, for a 200G Ethernet interface, AM is 4 257b code blocks, and 4 257b code blocks consist of 8 120-bit and 65-bit padding fields and 3-bit status fields (4*257=120*8+65+3). For another example, for a 400G Ethernet interface, AM is 8 257b code blocks, and 8 257b code blocks consist of 16 120-bit and 133-bit padding fields and 3-bit status fields (8*257=120*16+133+3). For another example, for a 100G Ethernet interface, AM is 5 257b code blocks, and the 5 257b code blocks are composed of 20 64-bit fields and a 5-bit padding field (5*257=20*64+5).

[0085] It should also be understood that FEC encoding and decoding is used to correct bit errors during transmission using encoding and decoding technology. For example, FEC encoding can be Reed-Solomon (RS) encoding, etc. The purpose of RS encoding is to further improve the accuracy of the bit stream during transmission, and the erroneous bits can be corrected according to the inserted check bits during RS decoding. For RS encoding, it can be considered that some check bits are inserted at intervals of a certain bit without changing the original code block stream. For RS decoding, it can be considered that the erroneous bits in the transmission process are calculated and restored according to the check bits inserted at intervals of a certain bit during RS encoding without changing the original code block stream. After the check is completed, these check bits are removed. For the FEC encoding and decoding method, in some possible scenarios, 200G and 400G Ethernet interfaces adopt the RS (544, 514) solution, and 100G Ethernet interfaces can adopt the RS (544, 514) or RS (528, 514) solution.

[0086] It should be noted that, as an example, Figure 3 As shown, the embodiment of the present application adds a retransmission control module at the GMII interface to realize the data retransmission function of the Ethernet protocol. Specifically, the sending side of the first device will back up the sent 66b code block to a buffer while sending the 66b code block, wherein the buffer can be set on a chip integrating the MAC layer and the PHY layer. If the receiving side of the second device finds that the received data has an uncorrectable error, the sending side of the second device will send a retransmission request to the first device, and the retransmission control module of the first device reads the corresponding data from the buffer according to the retransmission request for retransmission. As another example, the embodiment of the present application can also add a retransmission control module at any position before the PCS layer performs FEC encoding to realize the data retransmission function of the Ethernet protocol. For example, the first device will back up the sent 257b code block to the buffer while sending the 227b code block, and read the corresponding data from the buffer for retransmission after receiving the retransmission request. The data retransmission method provided by the embodiment of the present application is described in detail below.

[0087] Figure 4 Schematic diagram of a data retransmission method in an embodiment of the present application. Figure 4 The first device and the second device in the method both include a transmitting end and a receiving end, and the first device and the second device may be network devices, or optical modules on network devices. The following takes the example of the first device sending data to the second device as an example for description.

[0088] 101. A first device acquires data and assigns serial numbers to data slices in the data.

[0089] In one possible scenario, an embodiment of the present application divides data slices based on a 66b code block stream, that is, a data slice includes several 66b code blocks. Among them, a data slice can also be referred to as a slice, and an embodiment of the present application uses a data slice as a basic unit of data retransmission. It should be understood that, considering that the second device uses FEC codewords (FEC codewords) as units for verification, the payload area (payload) of the FEC codeword includes several 66b code blocks, and the FEC codeword can also be referred to as an FEC frame. If it is found that a certain FEC codeword has a check error and it cannot be determined which specific 66b code block has a check error, then the basic unit of retransmission by the first device should include at least one 66b code block that can be carried by a FEC frame. If Figure 3 As shown, since the embodiment of the present application adds a retransmission control module at the GMII interface to implement the data retransmission function of the Ethernet protocol, the embodiment of the present application defines data slices by a number of 66b code blocks, not by FEC code words. However, it is necessary to first determine the number of 66b code blocks that can be carried by an FEC code word, and then the data slice can be defined as a 66b code block carried by at least one FEC code word.

[0090] Taking RS (544,514) as an example, the payload area of ​​an FEC codeword includes 5140 bits, 5140 bits include 20 257b code blocks, each 257b code block is transcoded by 4 66b code blocks, that is, an FEC codeword includes 80 66b code blocks. Therefore, a data slice can include 80, 160 or 240 66b code blocks.

[0091] Figure 5 Schematic diagram of assigning serial numbers to data slices in an embodiment of the present application. Figure 5As shown, AM is periodically inserted into a 66b code block stream, wherein the period of inserting AM can also be referred to as an AM window. For example, the period between the starting position of AM0 and the starting position of AM1 is an AM window. In one possible scenario, each AM window includes N data slices, each data slice has the same length, and N is an integer greater than or equal to 1. In each AM window, the data slice at the starting position includes AM, and sequence numbers are assigned to the data slices in the AM window in sequence starting from the data slice including AM. For example, the data slice including AM corresponds to sequence number 0, and the sequence numbers corresponding to the subsequent data slices are 1, 2, ..., N-1 in sequence. For another example, the sequence number of the data slice can also be incremented in other ways starting from 0, which is not limited here. It should be understood that the data slices in each AM window are assigned sequence numbers in a similar manner. In another possible scenario, if the data slice is large, such as a data slice including a 66b code block carried by multiple FEC code words, it is also possible that multiple AM ​​windows include one data slice.

[0092] It should be noted that before the PCS layer actually performs operations such as 64b / 66b encoding, 256b / 257b transcoding, AM insertion, and FEC encoding, the MAC layer already knows in advance how the PCS performs these operations. For example, the MAC layer knows how to insert AM into the code block stream and how many 66b or 257b code blocks can be carried by the FEC codeword after FEC encoding. Based on this, the MAC layer can inform the retransmission control module of this information so that the retransmission control module can realize the division of data slices and the allocation of sequence numbers before the PCS performs operations such as AM insertion and FEC encoding.

[0093] In another possible scenario, the embodiment of the present application may also add a retransmission control module before the PCS layer performs FEC encoding. For example, the embodiment of the present application may also divide the data slices based on the 257b code block stream, that is, a data slice includes several 257b code blocks. Then, first determine the number of 257b code blocks that can be carried by an FEC code word, and then the data slice can be defined as a 257b code block that includes at least one FEC code word. The retransmission control module can also assign a sequence number to each data slice based on the AM after the AM insertion is completed. The specific method is the same as Figure 5 Similar to the introduction.

[0094] 102. The first device sends data to the second device.

[0095] It should be noted that the first device will synchronously back up the sent data to the buffer while sending the data. Specifically, each time a data slice is sent, the data slice and the corresponding sequence number will be stored in the buffer. It should be understood that the size of the buffer is related to the transmission delay between the first device and the second device. After the buffer is full, it can be stored in a loop, and the newly sent data slices will overwrite the data slices already stored in the buffer. Therefore, the buffer must have enough space to ensure that the first device can read the corresponding data slice from the buffer for retransmission when it receives a retransmission request. The size of the buffer can be flexibly configured according to actual needs, and is not specifically limited here.

[0096] 103. The second device receives the data and assigns serial numbers to data slices in the data.

[0097] In this embodiment, after receiving the data stream, the second device identifies the AM in the data stream through AM lock, and assigns a sequence number to each received data slice in a similar manner as the first device. In this way, the first device only needs to send data to the second device, and does not need to send the sequence number corresponding to the data slice to the second device. It should be understood that Figure 3 As shown, the second device needs to assign a sequence number to each received data slice according to the AM in the data stream after AM locking and before AM removal.

[0098] In one possible scenario, the first device and the second device will first negotiate capabilities before starting to transmit data. During the negotiation process, it can be determined whether the other party has retransmission capabilities, and the method of dividing data slices and the method of assigning serial numbers to data slices can be negotiated on the basis that both parties have retransmission capabilities. In another possible scenario, if the first device and the second device are both determined to have retransmission capabilities, the method of dividing data slices and the method of assigning serial numbers to data slices can also be pre-configured for both parties.

[0099] 104. The second device verifies the data.

[0100] The second device performs FEC check on the received data. If the check is correct or there is an error but the error can be corrected, the data is received normally and transmitted to the MAC of the receiving end of the second device. If an uncorrectable error occurs, the transmitting end of the second device sends a retransmission request to the first device. Furthermore, the second device can also discard all the current and subsequent received data slices.

[0101] 105. The second device sends a retransmission request to the first device.

[0102] If the second device finds through verification that an uncorrectable error occurs in the target data slice, the second device sends a retransmission request to the first device, and the retransmission request carries the target sequence number corresponding to the target data slice. The retransmission request contains a certain number of code blocks. Specifically, the transmitting end of the second device is also sending data, and the transmitting end of the second device sends a retransmission request to the second device at the boundary of the next data slice to be sent, that is, the retransmission request is sent at the moment when the next data slice is originally to be sent. The retransmission request does not need to be stored in the buffer of the second device. It should be understood that the number of code blocks in the retransmission request is an integer multiple of the number of code blocks in the data slice, that is, the retransmission request is also sent with data slices as the granularity, so that the second device can still send data and backup data to the first device with data slices as the granularity after sending the retransmission request, thereby ensuring the atomicity of the data slices. That is to say, since in the embodiment of the present application, both data backup and data retransmission are performed at the granularity of data slices, and on this basis, the retransmission request is required to be sent at the granularity of data slices, there is no need to split the data slice to be sent and splice it with the retransmission request into the size of a data slice for sending, which ensures that indivisible data slices are used for sending and backup, that is, the atomicity of the data slices is guaranteed.

[0103] It should be noted that the first device will detect the received retransmission request by fuzzy matching. That is, the first device determines whether the number of correctly verified code blocks in the retransmission request is greater than the threshold value. If so, it is considered that a correct retransmission request has been received. Even if some uncorrectable errors are found at this time, the retransmission request must be identified. For example, if the retransmission request contains 80 code blocks, any 20 of which are pre-defined code blocks of the retransmission request, the received data is considered to be a retransmission request.

[0104] In one possible scenario, the second device sends a retransmission request to the first device, but the first device cannot receive the retransmission request due to a link break or other reasons. Then, if the first device finds the link break, the first device will suspend scheduling service data and wait for the link break to be restored within the set protection time before executing subsequent processes.

[0105] 106. The first device sends a retransmission response to the second device.

[0106] After receiving the retransmission request, the first device suspends scheduling service data at the boundary of the next data slice to be sent, that is, starts sending a retransmission response at the moment when the next data slice is originally to be sent. Among them, the retransmission response is used to indicate the start of sending the retransmission data, and the retransmission response does not need to be stored in the buffer. It should be understood that the retransmission response is similar to the retransmission request and is sent with data slices as the granularity, that is, the number of code blocks in the retransmission response is an integer multiple of the number of code blocks in the data slice. After sending the retransmission response, the first device can still send and back up with data slices as the granularity, and will not split the data slices, thereby ensuring the atomicity of the data slices.

[0107] It should be noted that the second device will use fuzzy matching to detect the received retransmission response. That is to say, the second device determines whether the number of code blocks that have been verified correctly in the retransmission response is greater than the threshold. If so, it is considered that a correct retransmission response has been received, and the retransmission response must be identified even if some uncorrectable errors are found at this time. If the retransmission response contains 80 code blocks, any 20 code blocks of which are pre-defined retransmission response code blocks, then the received data is considered to be a retransmission response. In other words, the second device has discovered an uncorrectable error through verification, but if it can be found that the uncorrectable error comes from the retransmission response, there is no need to initiate a retransmission request in this case. After the second device detects the retransmission response, it can start to receive data normally, specifically starting to receive data at the boundary of the next data slice to be received.

[0108] It should be noted that the retransmission type identifiers carried by the retransmission request and the retransmission response are different, so that the first device can identify the retransmission request according to the retransmission type identifier in the received message, and the second device can identify the retransmission response according to the retransmission type identifier in the received message. A possible definition format of the retransmission request and the retransmission response is provided below.

[0109] Figure 6 Schematic diagram of a format of a retransmission request and a retransmission response in an embodiment of the present application. Figure 6 As shown in (a) of FIG. 1 , the format of the retransmission request and the retransmission response are defined with reference to the format of the 66b code block. The retransmission request or the retransmission response may include several Figure 6 The 66-bit format shown in (a) above ensures that the number of 66b code blocks included in the retransmission request or retransmission response is an integer multiple of the number of 66b code blocks included in the data slice. Figure 6 As can be seen from (a) in FIG. 1 , the synchronization header is 10, indicating that the code block is a control type code block rather than a data code block, that is, the code block type defined by byte 0 is 0×4B. It should be understood that byte 2 is defined as the retransmission type, such as Figure 6As shown in (b) of FIG. 1 , the retransmission type of the retransmission request can be 0×55, and the retransmission type of the retransmission response can be 0×AA. It should also be understood that the value 1 (value 1) defined in byte 5 and the value 2 (value 2) defined in byte 6 are used to carry the sequence number of the target data slice for the retransmission request, but are not used for the retransmission response. In addition, an invalid code block is also defined here, which is used to replace the data or AM in the data slice in some scenarios. Figure 6 As can be seen from (b) in FIG. 1 , the operation administration and maintenance (OAM) type of the retransmission request and the retransmission response is 0×55, and the OAM type of the invalid code block is 0×AA.

[0110] 107. The first device sends retransmission data to the second device.

[0111] After receiving the retransmission request, the first device reads the corresponding data from the buffer according to the target sequence number for retransmission, wherein the retransmitted data includes the target data slice corresponding to the target sequence number and the data slice after the target data slice. After all the data slices that need to be retransmitted in the buffer are sent, the first device can restart scheduling normal business data. If the second device detects an uncorrectable error later, it can repeat the above retransmission process.

[0112] It should be noted that in the process of data retransmission, it is still necessary to ensure that the number of data slices to be sent recorded in an AM window remains unchanged, so that the next AM can be sent immediately after the current AM window ends. Therefore, after reading the retransmitted data from the buffer, it is necessary to update the sequence numbers corresponding to all data slices in the retransmitted data according to the sequence number of the data slice that is actually to be sent. For example, the first device first determines the next data slice to be sent after receiving the retransmission request, and then updates the target sequence number corresponding to the target data slice in the buffer to the sequence number corresponding to the next data slice to be sent, and updates the sequence number corresponding to each data slice after the target data slice in the buffer according to the sequence number corresponding to the next data slice to be sent. This is introduced below in conjunction with a specific application scenario.

[0113] Figure 7 Schematic diagram of the first application scenario of data retransmission in the embodiment of the present application. Figure 7As shown, the first device sends data slice 0, data slice 1, ... to the second device in sequence. The second device finds that an uncorrectable error occurs in data slice 1 through verification, and then sends a retransmission request to the first device, and discards data slice 1 and other data slices received thereafter. When the first device receives the retransmission request, the next data slice to be sent is data slice 7. Assuming that the retransmission response is the same length as the data slice, the first device sends a retransmission response to the second device at the position where data slice 7 should have been sent. Furthermore, the first device starts to send retransmitted data at the position where data slice 8 should have been sent, wherein the retransmitted data starts from data slice 1 in the buffer. Therefore, the first device updates the sequence number of data slice 1 in the buffer to the sequence number of data slice 8 and sends it, updates the sequence number of data slice 2 in the buffer to the sequence number of data slice 9 and sends it, and so on.

[0114] It should be noted that in some possible scenarios, it is possible that AM needs to be sent during the retransmission process, or that uncorrectable errors may occur in data slices including AM. There will be targeted processing methods for these possible situations, which are introduced below.

[0115] Figure 8 Schematic diagram of the second application scenario of data retransmission in the embodiment of the present application. Figure 8 As shown, the first device sends data slice 0, data slice 1, ... to the second device in sequence. The second device finds that an uncorrectable error occurs in data slice 0 through verification, and then sends a retransmission request to the first device, and discards data slice 0 and other data slices received thereafter. When the first device receives the retransmission request, the next data slice to be sent is data slice 6. Assuming that the retransmission response is the same length as the data slice, the first device sends a retransmission response to the second device at the position where data slice 6 should have been sent. Furthermore, the first device starts to send retransmission data at the position where data slice 7 should have been sent, wherein the retransmission data starts from data slice 0 in the buffer. Since data slice 0 is a data slice including AM, the second device has received and identified AM, and the data to be sent by the first device has not yet reached the position of the next AM. In order to avoid the AM window from being disrupted, the first device replaces the AM in the retransmitted data slice 0 with an invalid code block before sending it. For example, if the first 16 66b code blocks of the 80 66b code blocks of data slice 0 are AM, then the first 16 66b code blocks are replaced with invalid code blocks. It should be understood that in actual applications, the first device can also replace the AM in the data slice 0 with an invalid code block and store it in the buffer when backing up, so that the updated data slice 0 can be directly read from the buffer when retransmitting. It should also be understood that since AM is identified by fuzzy matching, AM can still be identified even if an uncorrectable error occurs in AM, and AM is only used to delimit AM that does not need to be retransmitted.

[0116] Fig. 9 FIG. 1 is a schematic diagram of a third application scenario of data retransmission in an embodiment of the present application. Fig. 9 As shown, the first device sends data slice 0, data slice 1, ... to the second device in sequence. The second device finds through verification that an uncorrectable error occurs in the target data slice, and then sends a retransmission request to the first device, and discards the target data slice and other data slices received later. After receiving the retransmission request, the first device sends a retransmission response and starts sending retransmitted data. Assuming that an AM window includes 1024 data slices, if the retransmission process reaches the position where AM needs to be sent, the first device needs to generate an invalid data slice including AM and an invalid code block and send it to the second device. The invalid data slice is the same size as the normal data slice, so that the subsequently retransmitted data slices are complete, ensuring the atomicity of the retransmitted data slices. Fig. 9 For example, the data slice 1016 in the buffer needs to be updated with a sequence number of 1023 and sent, and then the AM of the next AM window needs to be sent when the current AM window ends. The first device generates an invalid data slice and sends it to the second device, and the invalid data slice does not need to be stored in the buffer. In addition, since an invalid data slice is inserted into the retransmitted data, the sequence number of the subsequent retransmitted data slice needs to be increased by 1 on the original basis. For example, the data slice 1017 in the buffer was originally updated to sequence number 0, but it needs to be updated to sequence number 1 when it is actually sent, and the other data slices that are subsequently retransmitted are similar.

[0117] From the above introduction, it can be seen that the embodiment of the present application divides the data into multiple data slices at the physical layer, wherein the data slice includes a code block carried by at least one FEC code word. For example, if the FEC code word can carry 80 66-bit code blocks, a data slice can include 80, 160 or more 66-bit code blocks. In addition, each data slice in the data is assigned a corresponding sequence number. The sending device will store the sent data slice and the corresponding sequence number in the buffer while sending the data. After receiving the data, the receiving device will perform AM locking and assign a corresponding sequence number to each data slice in the same way as the sending device before AM removal. Furthermore, after the uncorrectable error is found, the receiving device sends a retransmission request carrying the corresponding sequence number of the data slice, and the sending device extracts the corresponding data slice from the buffer according to the retransmission request to start retransmission. It can be seen that the embodiment of the present application is retransmitted based on data slices at the physical layer, and the data slices include code blocks carried by at least one FEC code word. The number of code blocks carried by the data slices is small, and retransmission based on data slices is more conducive to reducing the transmission delay of retransmission and reducing the space of the buffer compared to retransmission based on messages. Furthermore, the data retransmission method provided in the embodiment of the present application is implemented at the physical layer, which is closer to the physical port of data transmission. Compared with the method of implementing retransmission at the data link layer, it is also more conducive to reducing transmission delay.

[0118] The possible structures of the first device and the second device are introduced below. For the convenience of explanation, the communication device is used as an example. The structures of the first device and the second device are similar, and both can adopt the structure of the communication device introduced below.

[0119] Fig.10 FIG. 1 is a schematic diagram of a structure of a communication device in an embodiment of the present application. Fig.10As shown, the communication device includes: a processing unit 201, a sending unit 202 and a receiving unit 203. Taking the communication device as the first device as an example, the processing unit 201 is used to perform the above step 101, the sending unit 202 is used to perform the above step 102, step 106 and step 107, and the receiving unit 203 is used to perform the above step 105. Taking the communication device as the second device as an example, the processing unit 201 is used to perform the above step 103 and step 104, the sending unit 202 is used to perform the above step 105, and the receiving unit 203 is used to perform the above step 102, step 106 and step 107. It should be understood that the communication device provided in the embodiment of the present application can also be implemented in other ways. For example, the unit division in the above device is only a logical function division, and there may be other division methods in actual implementation, for example, multiple units or components can be combined or integrated into another system. In addition, each functional unit in each embodiment of the present application can be integrated in a processing unit, or it can be each independent physical unit, or it can be two or more functional units integrated in a processing unit. The above integrated unit can be implemented in the form of hardware or in the form of software functional unit.

[0120] Fig.11 FIG. 2 is another structural diagram of a communication device in an embodiment of the present application. Fig.11 As shown, the communication device includes a processor 301 and a transceiver 302. The processor 301 and the transceiver 302 are connected to each other via a line. Specifically, the transceiver 302 is used to perform signal transmission and reception operations, and the processor 301 is used to perform other operations except signal transmission and reception. In a possible implementation, the processor 301 may include the above Fig. 9 The processing unit 201 and the transceiver 302 shown include the above Fig.10 The sending unit 202 and the receiving unit 203 are shown. Optionally, the communication device may further include a memory 303, wherein the memory 303 is used to store program instructions and data. The transceiver 302 may be an optical module.

[0121] The embodiment of the present application also provides a chip. The chip integrates a circuit and one or more interfaces for implementing the functions of the above-mentioned processor 301. When the chip integrates a memory, the chip can complete the method steps of any one or more embodiments in the above-mentioned embodiments. When the chip does not integrate a memory, it can be connected to an external memory through an interface. The chip implements the actions performed by the sending end device or the receiving end device in the above-mentioned embodiment according to the program code stored in the external memory.

[0122] Fig.12 FIG. 1 is a schematic diagram of the structure of a communication system in an embodiment of the present application. Fig.12As shown, the communication system includes a communication device 401 and a communication device 402, and the communication device 401 performs data communication with the communication device 402. As an example, the communication device 401 is the above Figure 4 The first device in the embodiment shown, the communication device 402 is the above Figure 4 The second device in the embodiment shown. Wherein, the communication device 401 can be used Fig.10 or Fig.11 The communication device structure introduced, the communication device 402 page can be used Fig.10 or Fig.11 The communication device structure introduced.

[0123] Finally, it should be noted that the above is only a specific implementation of the present application, but the protection scope of the present application is not limited thereto. Any person skilled in the art who is familiar with the present technical field can easily think of changes or substitutions within the technical scope disclosed in the present application, which should be included in the protection scope of the present application. Therefore, the protection scope of the present application should be based on the protection scope of the claims.

Claims

1. A data retransmission method, characterized in that: include: The first device receives data, the data including data slices, the data slices including code blocks carried by at least one forward error correction FEC codeword, and each of the data slices corresponds to a sequence number; The first device verifies the data; If an uncorrectable error occurs in the data, the first device sends a data retransmission request to the second device, the data retransmission request includes a target sequence number, and the data retransmission request is used to request the second device to send retransmitted data to the first device according to the target sequence number.

2. The method according to claim 1, characterized in that Each alignment mark AM window in the data includes N data slices, and the data slice located at the starting position of each AM window includes AM, and N is an integer greater than or equal to 1.

3. The method according to claim 2, characterized in that The method further comprises: The first device identifies the AM in the data, and assigns corresponding serial numbers to data slices within the AM window starting from the AM, wherein, within the AM window, serial numbers corresponding to data slices starting from the data slice including the AM are incremented sequentially.

4. The method according to any one of claims 1 to 3, characterized in that The length of each of the data slices is the same.

5. The method according to any one of claims 1 to 4, characterized in that The number of code blocks in the data retransmission request is an integer multiple of the number of code blocks in the data slice.

6. The method according to any one of claims 1 to 5, characterized in that The retransmitted data includes a target data slice corresponding to the target sequence number and a data slice subsequent to the target data slice.

7. The method according to any one of claims 1 to 6, characterized in that If an uncorrectable error occurs in the data, the method further includes: The first device discards the target data slice corresponding to the target sequence number and the data slice after the target data slice.

8. The method according to any one of claims 1 to 7, characterized in that After the first device sends a data retransmission request to the second device, the method further includes: The first device receives a data retransmission response, where the data retransmission response is used to indicate that the retransmission data starts to be sent; The first device receives the retransmitted data.

9. The method according to claim 8, characterized in that The number of code blocks in the data retransmission response is an integer multiple of the number of code blocks in the data slice.

10. The method according to claim 8 or 9, characterized in that: After the first device receives the data retransmission response, the method further includes: The first device determines whether the number of correctly verified code blocks in the data retransmission response is greater than a threshold; If so, the first device determines that a correct data retransmission response has been received.

11. The method according to any one of claims 1 to 10, characterized in that If an uncorrectable error occurs in the data, the first device sending a data retransmission request to the second device includes: If an uncorrectable error occurs in the data, the first device sends the data retransmission request to the second device at the time of the next data slice to be sent.

12. The method according to any one of claims 1 to 11, characterized in that The size of the code block is 66 bits or 257 bits.

13. The method according to claim 12, characterized in that The data slice includes 80 code blocks with a size of 66 bits, or the data slice includes 20 code blocks with a size of 257 bits.

14. A data retransmission method, characterized in that: include: The first device acquires data, the data including data slices, the data slices including code blocks carried by at least one forward error correction FEC codeword, and each of the data slices corresponds to a sequence number; The first device sends the data to the second device, and stores each of the data slices and the corresponding sequence number in a buffer; The first device receives a data retransmission request, the data retransmission request including a target sequence number; The first device sends retransmission data to the second device according to the target sequence number.

15. The method according to claim 14, characterized in that Each alignment mark AM window in the data includes N data slices, and the data slice located at the starting position of each AM window includes AM, and N is an integer greater than or equal to 1.

16. The method according to claim 15, characterized in that The method further comprises: The first device assigns corresponding serial numbers to data slices within the AM window starting from the AM in the data, wherein, within the AM window, serial numbers corresponding to data slices starting from the data slice including the AM are incremented in sequence.

17. The method according to any one of claims 14 to 16, characterized in that The length of each of the data slices is the same.

18. The method according to any one of claims 14 to 17, characterized in that The number of code blocks in the data retransmission request is an integer multiple of the number of code blocks in the data slice.

19. The method according to any one of claims 14 to 18, characterized in that The retransmitted data includes a target data slice corresponding to the target sequence number in the buffer and a data slice subsequent to the target data slice.

20. The method according to any one of claims 14 to 19, characterized in that After the first device receives the data retransmission request and before the first device sends the retransmission data to the second device according to the target sequence number, the method further includes: The first device sends a data retransmission response to the second device at the time of the next data slice to be sent, and the retransmission response is used to indicate the start of sending the retransmitted data.

21. The method according to claim 20, characterized in that The number of code blocks in the data retransmission response is an integer multiple of the number of code blocks in the data slice.

22. The method according to any one of claims 14 to 21, characterized in that After the first device receives the data retransmission request, the method further includes: The first device determines whether the number of correctly verified code blocks in the data retransmission request is greater than a threshold; If so, the first device determines that a correct data retransmission request has been received.

23. The method according to any one of claims 14 to 22, characterized in that After the first device receives the data retransmission request, the method further includes: The first device determines the next data slice to be sent after receiving the data retransmission request; The first device updates the target sequence number corresponding to the target data slice in the buffer to the sequence number corresponding to the next data slice to be sent, and updates the sequence number corresponding to each data slice after the target data slice in the buffer according to the sequence number corresponding to the next data slice to be sent.

24. The method according to any one of claims 14 to 23, characterized in that The method further comprises: During the process of the first device sending the retransmitted data, if AM needs to be sent at the current moment, the first device sends an invalid data slice including the AM and an invalid code block.

25. The method according to any one of claims 14 to 24, characterized in that The method further comprises: If the retransmission data corresponding to the data retransmission request includes a data slice carrying an AM, the first device replaces the AM in the data slice with an invalid code block and sends the data to the second device.

26. The method according to any one of claims 14 to 25, characterized in that The size of the code block is 66 bits or 257 bits.

27. The method according to claim 26, characterized in that The data slice includes 80 code blocks with a size of 66 bits, or the data slice includes 20 code blocks with a size of 257 bits.

28. A chip, characterized in that: The chip includes a processor and a memory, wherein the memory and the processor are connected to each other via a line, instructions are stored in the memory, and the processor is used to execute the method according to any one of claims 1 to 27.

29. A communication device, characterized in that: include: Receiving unit, processing unit and sending unit; The receiving unit is used to: receive data, the data including data slices, the data slices including code blocks carried by at least one forward error correction FEC codeword, and each of the data slices corresponds to a sequence number; The processing unit is used to: verify the data; The sending unit is used to: if an uncorrectable error occurs in the data, send a data retransmission request to the opposite communication device, the data retransmission request includes a target sequence number, and the data retransmission request is used to request the opposite communication device to send retransmission data to the communication device according to the target sequence number.

30. The communication device according to claim 29, characterized in that Each alignment mark AM window in the data includes N data slices, and the data slice located at the starting position of each AM window includes AM, and N is an integer greater than or equal to 1.

31. The communication device according to claim 30, characterized in that: The processing unit is specifically used for: Identify the AM in the data, and assign corresponding serial numbers to the data slices in the AM window starting from the AM, wherein, in the AM window, the serial numbers corresponding to the data slices starting from the data slice including the AM are incremented sequentially.

32. The communication device according to any one of claims 29 to 31, characterized in that: The length of each of the data slices is the same.

33. The communication device according to any one of claims 29 to 32, characterized in that: The number of code blocks in the data retransmission request is an integer multiple of the number of code blocks in the data slice.

34. The communication device according to any one of claims 29 to 33, characterized in that: The retransmitted data includes a target data slice corresponding to the target sequence number and a data slice subsequent to the target data slice.

35. The communication device according to any one of claims 29 to 34, characterized in that: If an uncorrectable error occurs in the data, the processing unit is further configured to: The target data slice corresponding to the target sequence number and the data slices after the target data slice are discarded.

36. The communication device according to any one of claims 29 to 35, characterized in that: After the sending unit sends the data retransmission request to the opposite communication device, the receiving unit is further used for: receiving a data retransmission response, wherein the data retransmission response is used to indicate that the retransmission data starts to be sent; The retransmitted data is received.

37. The communication device according to claim 36, characterized in that: The number of code blocks in the data retransmission response is an integer multiple of the number of code blocks in the data slice.

38. The communication device according to claim 36 or 37, characterized in that: After the receiving unit receives the data retransmission response, the processing unit is further configured to: Determine whether the number of code blocks verified correctly in the data retransmission response is greater than a threshold; If so, it is determined that a correct data retransmission response has been received.

39. The communication device according to any one of claims 29 to 38, characterized in that: If an uncorrectable error occurs in the data, the sending unit is specifically configured to: Send the data retransmission request to the opposite communication device at the moment of the next data slice to be sent.

40. The communication device according to any one of claims 29 to 39, characterized in that: The size of the code block is 66 bits or 257 bits.

41. The communication device according to claim 40, characterized in that The data slice includes 80 code blocks with a size of 66 bits, or the data slice includes 20 code blocks with a size of 257 bits.

42. A communication device, characterized in that: include: Receiving unit, processing unit and sending unit; The processing unit is used to: acquire data, the data including data slices, the data slices including code blocks carried by at least one forward error correction FEC codeword, and each of the data slices corresponds to a sequence number; The sending unit is used to: send the data to the opposite communication device; The processing unit is used to: store each of the data slices and the corresponding sequence number into a buffer; The receiving unit is used to: receive a data retransmission request, wherein the data retransmission request includes a target sequence number; The sending unit is used to send retransmission data to the opposite communication device according to the target sequence number.

43. The communication device according to claim 42, characterized in that Each alignment mark AM window in the data includes N data slices, and the data slice located at the starting position of each AM window includes AM, and N is an integer greater than or equal to 1.

44. The communication device according to claim 43, characterized in that The processing unit is also used for: Corresponding serial numbers are assigned to data slices within the AM window starting from the AM in the data, wherein within the AM window, serial numbers corresponding to data slices are incremented in sequence starting from the data slice including the AM.

45. The communication device according to any one of claims 42 to 44, characterized in that: The length of each of the data slices is the same.

46. ​​The communication device according to any one of claims 42 to 45, characterized in that: The number of code blocks in the data retransmission request is an integer multiple of the number of code blocks in the data slice.

47. The communication device according to any one of claims 42 to 46, characterized in that: The retransmitted data includes a target data slice corresponding to the target sequence number in the buffer and a data slice subsequent to the target data slice.

48. The communication device according to any one of claims 42 to 47, characterized in that: After the receiving unit receives the data retransmission request, before the sending unit sends the retransmission data to the opposite communication device according to the target sequence number, the sending unit is further configured to: A data retransmission response is sent to the second device at the time of the next data slice to be sent, and the retransmission response is used to indicate the start of sending the retransmitted data.

49. The communication device according to claim 48, characterized in that The number of code blocks in the data retransmission response is an integer multiple of the number of code blocks in the data slice.

50. The communication device according to any one of claims 42 to 49, characterized in that: After the receiving unit receives the data retransmission request, the processing unit is further configured to: Determine whether the number of code blocks verified correctly in the data retransmission request is greater than a threshold; If so, it is determined that a correct data retransmission request has been received.

51. The communication device according to any one of claims 42 to 50, characterized in that: After the receiving unit receives the data retransmission request, the processing unit is further configured to: Determine a next data slice to be sent after receiving the data retransmission request; The target sequence number corresponding to the target data slice in the buffer is updated to the sequence number corresponding to the next data slice to be sent, and the sequence number corresponding to each data slice after the target data slice in the buffer is updated according to the sequence number corresponding to the next data slice to be sent.

52. The communication device according to any one of claims 42 to 51, characterized in that: The sending unit is also used for: In the process of sending the retransmitted data, if AM needs to be sent at the current moment, an invalid data slice including the AM and an invalid code block is sent.

53. The communication device according to any one of claims 42 to 52, characterized in that: The sending unit is also used for: If the retransmission data corresponding to the data retransmission request includes a data slice carrying an AM, the AM in the data slice is replaced with an invalid code block and then sent to the second device.

54. The communication device according to any one of claims 42 to 53, characterized in that: The size of the code block is 66 bits or 257 bits.

55. The communication device according to claim 54, characterized in that The data slice includes 80 code blocks with a size of 66 bits, or the data slice includes 20 code blocks with a size of 257 bits.

56. A communication system, characterized in that: It comprises: a communication device as claimed in any one of claims 29 to 41 and a communication device as claimed in any one of claims 42 to 55.

57. A computer-readable storage medium, characterized in that The computer-readable storage medium stores a computer program, and when the computer program is executed by a computer, the method according to any one of claims 1 to 27 is implemented.

Citation Information

Cited By

  • Data processing device suitable for PCIe (Peripheral Component Interconnect Express) link and communication system with same

    CN120336230A

  • Data processing device suitable for a PCIe link and communication system having the same

    CN120336230B

  • Data retransmission method, apparatus, and system

    EP4765704A1

  • Data retransmission method, apparatus, and system

    WO2025055797A1