Data retransmission method, apparatus, and system
By dividing the data into multiple data slices at the physical layer and identifying the alignment identifiers on the receiving side to assign a sequence number, retransmission based on data slices is realized, and the problems of transmission delay and buffer space requirements are solved, and efficient data retransmission is realized.
Patent Information
- Application Number
- PCT/CN2024/116881
- Authority / Receiving Office
- WO · WO
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2023-09-13
- Filing Date
- 2024-09-04
- Publication Date
- 2025-03-20
AI Technical Summary
When the device is interconnected, due to channel interference, the higher probability of error in the transmission process is caused by channel interference, and the prior art is difficult to effectively reduce the transmission delay and buffer space requirements of retransmission requests.
By dividing the data into a plurality of data slices at the physical layer, each data slice includes a code block carried by at least one FEC codeword, and identifying the alignment identifier (AM) in the data on the receiving side assigning a sequence number to the data slice, retransmission based on the data is realized.
It reduces the transmission delay of retransmission requests, reduces the space requirements of the buffer, and ensures the atomicity of the data slice and the stability of the AM cycle.
Smart Images

Figure CN2024116881_20032025_PF_FP_ABST
Abstract
Description
Data retransmission method, device and system
[0001] This application claims priority to the Chinese patent application filed with the State Intellectual Property Office on September 13, 2023, with application number 202311187754.8 and application name “A data retransmission method, device and system”, the entire contents of which are incorporated by reference into this application. Technical Field
[0002] 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
[0003] When devices are connected, channel interference leads to a high probability of bit errors during transmission. As transmission bandwidths increase and data rates increase, the probability of bit errors increases. Although current devices incorporate forward error correction (FEC) technology, it cannot correct all bit errors, and receiving devices may still occasionally experience packet errors or packet loss.
[0004] To ensure lossless link transmission when devices are connected, it is necessary to support notifying the sending device to retransmit packets when the receiving device encounters packet errors or packet loss, ensuring that all messages sent by the sending device are correctly received by the receiving device. Currently, Ethernet protocols retransmit messages at the packet granularity, and retransmission-related messages must be sent at packet boundaries. Because the maximum message length is 9600 bytes, large messages sent by the sending device will result in significant delays in retransmission-related messages and significantly increase the buffer space required by the sending device to store retransmitted messages.
[0005] Summary of the Invention
[0006] The embodiments of the present application provide a data retransmission method, device, and system, which are beneficial for reducing the transmission delay of retransmission requests and reducing the space of the buffer.
[0007] 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 code blocks carried by at least one 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.
[0008] In this embodiment, retransmission is performed based on data slices at the physical layer. Data slices include code blocks carried by at least one FEC codeword. Data slices carry a relatively small number of code blocks. Retransmission based on data slices is more conducive to reducing retransmission delays and buffer space than retransmission based on messages. Furthermore, the data retransmission method provided in this embodiment of the application is implemented at the physical layer, which is closer to the physical port for data transmission. This is also more conducive to reducing transmission delays than methods implementing retransmission at the data link layer.
[0009] In some possible implementations, an alignment marker (AM) is periodically inserted into the data. The period during which the AM is inserted is also referred to as an AM window. Each AM window includes N data slices, and the data slice located at the beginning of each AM window includes the AM, where N is an integer greater than or equal to 1. In other words, retransmission based on data slices allows the AM period to remain stable.
[0010] In some possible implementations, the method further includes: the first device identifying the AM in the data, and assigning corresponding sequence numbers to the data slices within the AM window, starting with the AM. Within the AM window, the sequence numbers corresponding to the data slices are incremented, starting with the data slice that includes the AM. As can be seen, by the first device identifying the AM in the data to assign the data slices within the AM window, the first and second devices consistently assign the same sequence numbers to the data slices. This eliminates the need for the second device to send the sequence number corresponding to each data slice to the first device, simplifying implementation.
[0011] In some possible implementations, the length of each data slice is the same, so as to facilitate standardized unification of the data slices.
[0012] 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.
[0013] 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.
[0014] In some possible implementations, if an uncorrectable error occurs in the data, the method further includes: the first device discarding 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.
[0015] In some possible implementations, after the first device sends a data retransmission request to the second device, the method further includes: the first device receiving a data retransmission response sent by the second device, the data retransmission response being used to indicate the start of sending the retransmitted data. Furthermore, the first device begins receiving the retransmitted data sent by the second device. In other words, the first device begins receiving the retransmitted data after sending the retransmission request and receiving the retransmission response, further improving the data retransmission process.
[0016] 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, 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.
[0017] In some possible implementations, after the first device receives the data retransmission response, the method further includes: the first device determining 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. As can be seen, even if some uncorrectable errors are found in the data retransmission response, the data retransmission response is still recognized, thereby increasing the likelihood of identifying the data retransmission response.
[0018] In some possible implementations, if an uncorrectable error occurs in the data, the first device sending a data retransmission request to the second device includes: if the uncorrectable error occurs in the data, the first device sending the data retransmission request to the second device at the time of the next data slice to be sent. In other words, the data slices and the data retransmission request are sent continuously, which helps to ensure a stable AM cycle.
[0019] In some possible implementations, the code block size is 66 bits or 257 bits, that is, the scheduling of retransmission is implemented based on 64b / 66b encoding or 256b / 257b encoding, which improves the practicality of this solution.
[0020] 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.
[0021] In a second aspect, embodiments of the present application provide a data retransmission method, which is applied to a first device on the data transmitting side. Specifically, the first device obtains data, where the data includes data slices, each data slice includes a code block carried by at least one FEC codeword, and each data slice corresponds to a sequence number. While transmitting data to a second device, the first device stores each data slice and its corresponding sequence number in a buffer. Thereafter, the first device receives a data retransmission request containing a target sequence number and sends retransmitted data to the second device based on the target sequence number.
[0022] In this embodiment, retransmission is performed based on data slices at the physical layer. Data slices include code blocks carried by at least one FEC codeword. Data slices carry a relatively small number of code blocks. Retransmission based on data slices is more conducive to reducing retransmission delays and buffer space than retransmission based on messages. Furthermore, the data retransmission method provided in this embodiment of the application is implemented at the physical layer, which is closer to the physical port for data transmission. This is also more conducive to reducing transmission delays than methods implementing retransmission at the data link layer.
[0023] 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.
[0024] In some possible implementations, the method further includes: the first device assigning corresponding sequence numbers to data slices within the AM window starting from the AM in the data, wherein within the AM window, the sequence numbers corresponding to the data slices are incremented starting from the data slice including the AM.
[0025] In some possible implementations, the length of each data slice is the same.
[0026] 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.
[0027] 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 subsequent to the target data slice.
[0028] In some possible implementations, after the first device receives the data retransmission request and before the first device sends the retransmitted data to the second device according to the target sequence number, the method further includes: the first device sending a data retransmission response to the second device at the time of the next data slice to be sent, where the retransmission response is used to indicate the start of sending the retransmitted data. In other words, the data slices and the data retransmission response are sent continuously, which helps to ensure a stable AM cycle.
[0029] In some possible implementations, the number of code blocks in the data retransmission acknowledgment is an integer multiple of the number of code blocks in the data slice.
[0030] In some possible implementations, after the first device receives the data retransmission request, the method further includes: the first device determining 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. As can be seen, even if some uncorrectable errors are found in the data retransmission request, the data retransmission request is still recognized, thereby increasing the likelihood of identifying the data retransmission request.
[0031] In some possible implementations, after the first device receives the data retransmission request, the method further includes: the first device determining the next data slice to be sent after receiving the data retransmission request. Furthermore, 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 based on the sequence number corresponding to the next data slice to be sent. In other words, after reading the retransmitted data from the buffer, the sequence numbers corresponding to subsequent data slices in the retransmitted data need to be updated based on the sequence number of the data slice actually to be sent. Therefore, during the data retransmission process, the number of data slices to be sent recorded within an AM window can be guaranteed to remain unchanged, so that the next AM can be sent immediately after the current AM window ends.
[0032] 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, ensuring the atomicity of the retransmitted data slices.
[0033] In some possible implementations, the method further includes: if the retransmitted data corresponding to the data retransmission request includes a data slice carrying an AM, the first device replacing the AM in the data slice with an invalid code block before sending the data to the second device. In other words, the second device has already received and identified the AM, and the data currently to be sent by the first device has not yet reached the position for the next AM. 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.
[0034] In some possible implementations, the size of the code block is 66 bits or 257 bits.
[0035] 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.
[0036] In a third aspect, an embodiment of the present application provides a chip comprising a processor and a memory, the memory and the processor being interconnected via lines, instructions being stored in the memory, and the processor being used to execute the method described in any one of the embodiments of the first and second aspects.
[0037] In a fourth aspect, an embodiment of the present application provides a communication device, comprising: a receiving unit, a processing unit, and a sending unit. The receiving unit is configured to receive data, wherein the data includes data slices, each data slice includes a code block carried by at least one FEC codeword, and each data slice corresponds to a sequence number. The processing unit is configured to verify the data. The sending unit is configured to send a data retransmission request to a peer communication device if an uncorrectable error occurs in the data, wherein the data retransmission request includes a target sequence number, and the data retransmission request is configured to request the peer communication device to retransmit data to the communication device based on the target sequence number.
[0038] 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.
[0039] 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.
[0040] In some possible implementations, the length of each data slice is the same.
[0041] 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.
[0042] 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.
[0043] 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 data slices subsequent to the target data slice.
[0044] In some possible implementations, after the sending unit sends the data retransmission request to the opposite communication device, the receiving unit is further configured to: receive a data retransmission response, the data retransmission response being used to indicate the start of sending the retransmitted data; and receive the retransmitted data.
[0045] In some possible implementations, the number of code blocks in the data retransmission acknowledgment is an integer multiple of the number of code blocks in the data slice.
[0046] In some possible implementations, after the receiving unit receives the data retransmission response, the processing unit is further configured to: determine whether the number of correctly verified code blocks in the data retransmission response is greater than a threshold; if so, determine that a correct data retransmission response has been received.
[0047] 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.
[0048] In some possible implementations, the size of the code block is 66 bits or 257 bits.
[0049] 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.
[0050] In a fifth aspect, an embodiment of the present application provides a communication device, comprising: a receiving unit, a processing unit, and a sending unit. The processing unit is configured to obtain 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. The sending unit is configured to send data to a peer communication device. The processing unit is configured to store each data slice and the corresponding sequence number in a buffer. The receiving unit is configured to receive a data retransmission request, wherein the data retransmission request includes a target sequence number. The sending unit is configured to send retransmitted data to the peer communication device according to the target sequence number.
[0051] 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.
[0052] 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.
[0053] In some possible implementations, the length of each data slice is the same.
[0054] 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.
[0055] 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 subsequent to the target data slice.
[0056] In some possible implementations, after the receiving unit receives the data retransmission request, before the sending unit sends the retransmitted data to the opposite communication device according to the target sequence number, the sending unit is further 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 retransmitted data.
[0057] In some possible implementations, the number of code blocks in the data retransmission acknowledgment is an integer multiple of the number of code blocks in the data slice.
[0058] In some possible implementations, after the receiving unit receives the data retransmission request, the processing unit is further configured 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.
[0059] 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 in the buffer after the target data slice based on the sequence number corresponding to the next data slice to be sent.
[0060] In some possible implementations, the sending unit is further configured to: during the process of sending the retransmitted data, if AM needs to be sent at the current moment, send an invalid data slice including the AM and an invalid code block.
[0061] 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 to the second device.
[0062] In some possible implementations, the size of the code block is 66 bits or 257 bits.
[0063] 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.
[0064] In a sixth aspect, an embodiment of the present application provides a communication system, which includes a communication device as described in any embodiment of the fourth aspect and a communication device as described in any embodiment of the fifth aspect.
[0065] 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 and second aspects is implemented.
[0066] It can be seen from the above technical solutions that the embodiments of the present application have the following advantages:
[0067] In this embodiment of the present application, data is divided into multiple data slices at the physical layer. Each data slice includes code blocks carried by at least one FEC codeword. For example, if an FEC codeword can carry 80 66-bit code blocks, a data slice can include 80, 160, or even more 66-bit code blocks. Furthermore, each data slice in the data is assigned a corresponding sequence number. When transmitting data, the transmitting device stores the transmitted data slices and their corresponding sequence numbers in a buffer. Upon receiving the data, the receiving device also assigns a corresponding sequence number to each data slice in the same manner as the transmitting device. Furthermore, upon detecting an uncorrectable error, the receiving device sends a retransmission request carrying the sequence number corresponding to the data slice. The transmitting device retrieves the corresponding data slice from the buffer based on the retransmission request and begins retransmission. As can be seen, in this embodiment of the present application, retransmission is performed at the physical layer based on data slices. Data slices include code blocks carried by at least one FEC codeword. Since a data slice carries a relatively small number of code blocks, retransmission based on data slices is more effective than retransmission based on packets in reducing transmission delay and buffer space. Moreover, 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
[0068] FIG1 is a schematic diagram of a network based on Ethernet connection;
[0069] FIG2 is a schematic structural diagram of a communication device;
[0070] FIG3 is a schematic flow chart of a method for Ethernet data transmission;
[0071] FIG4 is a schematic diagram of a flow chart of a data retransmission method according to an embodiment of the present application;
[0072] FIG5 is a schematic diagram of assigning sequence numbers to data slices in an embodiment of the present application;
[0073] FIG6 is a schematic diagram of a format of a retransmission request and a retransmission response according to an embodiment of the present application;
[0074] FIG7 is a schematic diagram of a first application scenario of data retransmission in an embodiment of the present application;
[0075] FIG8 is a schematic diagram of a second application scenario of data retransmission in an embodiment of the present application;
[0076] FIG9 is a schematic diagram of a third application scenario of data retransmission in an embodiment of the present application;
[0077] FIG10 is a schematic structural diagram of a communication device according to an embodiment of the present application;
[0078] FIG11 is another schematic structural diagram of a communication device according to an embodiment of the present application;
[0079] FIG12 is a schematic structural diagram of a communication system in an embodiment of the present application. DETAILED DESCRIPTION
[0080] An embodiment of the present application provides a data retransmission method, device and system. The embodiment of the present application performs 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 conducive to reducing the transmission delay of the retransmission request and reducing the buffer space.
[0081] Figure 1 is a schematic diagram of an Ethernet-based network. As shown in Figure 1 , communication device 10 transmits data with communication devices 20 and 30 over Ethernet, and communication device 40 transmits data with communication devices 20 and 30 over Ethernet. Two communication devices transmitting data over Ethernet can be connected via cables or optical fibers. It should be understood that the communication devices in Figure 1 may be network devices, such as routers or switches.
[0082] Figure 2 is a schematic structural diagram of a communication device. As shown in Figure 2, 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, etc. 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 data transmission of the Ethernet interface 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).
[0083] Figure 3 is a schematic flow chart of a method for Ethernet data transmission. Figure 3 primarily describes the physical layer-related processing. The following description uses the example of a first device sending data to a second device. The process for a second device sending data to a first device is similar. For the first device, after an Ethernet packet enters the media access control (MAC) layer, the packet is verified and encoded according to certain medium-independent interface (MII) requirements. The packet is then sent to the physical coding sublayer (PCS) via various MII interfaces, such as the gigabit media independent interface (GMII) interface. The PCS sublayer receives GMII information sent by the GMII interface and performs bit block encoding and rate matching. GMII is typically used between the MAC layer and the physical layer of Ethernet devices. In some embodiments, the GMII interface resides within an integrated circuit. The PCS sublayer encodes data according to the 64b / 66b rule to form a serial stream. The resulting code block after 64b / 66b encoding consists of 66 bits and is referred to as 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 parity 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 attachment sublayer (PMA) and the physical medium dependent sublayer (PMD).
[0084] The second device receives the symbols sent by the first device via the PMD and PMA, locks the channels using the AM on each PCSL, and reorders the PCS channels to generate a symbol stream. It then performs FEC decoding on the symbol stream to form a serial code block stream and removes the AM from the serial code block stream. The AM-removed serial code block stream is then descrambled and reverse-transcoded to generate a 66b serial code block stream. This 66b serial code block stream is decoded and rate-matched, then sent to the MAC layer, which then transmits the data to the data link layer.
[0085] It should be noted that for ease of understanding, Figure 3 only briefly illustrates the Ethernet interface processing flow. Applications may require additional processing steps or omit some of the aforementioned steps. The above method applies 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.
[0086] It should be understood that a bit is a position in a binary digit, a unit of measurement for information volume, and the smallest unit of information volume. 257b code block streams, 66b code block streams, and symbol streams distributed to logical channels can all be understood as bit streams. AM can 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 blocks, a 65-bit padding field, and a 3-bit status field (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 blocks, a 133-bit padding field, and a 3-bit status field (8*257=120*16+133+3). For another example, for a 100G Ethernet interface, AM is five 257b code blocks, and the five 257b code blocks are composed of twenty 64-bit fields and a 5-bit padding field (5*257=20*64+5).
[0087] It should also be understood that FEC encoding and decoding uses encoding and decoding technology to correct bit errors during transmission. 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. During RS decoding, erroneous bits can be corrected based on the inserted parity bits. For RS encoding, it can be considered that parity bits are inserted at regular intervals without changing the original code block stream. For RS decoding, it can be considered that erroneous bits during transmission are calculated and recovered based on the parity bits inserted at regular intervals during RS encoding without changing the original code block stream. After the check is completed, these parity bits are removed. Regarding FEC encoding and decoding methods, in some possible scenarios, 200G and 400G Ethernet interfaces use the RS (544, 514) scheme, and 100G Ethernet interfaces can use the RS (544, 514) or RS (528, 514) scheme.
[0088] It should be noted that, as an example, as shown in FIG3 , an embodiment of the present application adds a retransmission control module to the GMII interface to implement the data retransmission function of the Ethernet protocol. Specifically, the transmitting side of the first device will back up the sent 66b code blocks to a buffer while sending 66b code blocks, where the buffer can be set on a chip that integrates the MAC layer and the PHY layer. If the receiving side of the second device finds that the received data contains uncorrectable errors, the transmitting side of the second device will send a retransmission request to the first device. The retransmission control module of the first device reads the corresponding data from the buffer according to the retransmission request and retransmits it. 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 implement the data retransmission function of the Ethernet protocol. For example, when the first device sends 227b code blocks, it will back up the sent 257b code blocks to a buffer, and after receiving the retransmission request, read the corresponding data from the buffer and retransmit it. The data retransmission method provided by the embodiment of the present application is described in detail below.
[0089] Figure 4 is a flow chart of a data retransmission method according to an embodiment of the present application. The first and second devices in Figure 4 both include a transmitting end and a receiving end. The first and second devices can be network devices or optical modules on network devices. The following description uses the example of the first device sending data to the second device.
[0090] 101. A first device obtains data and assigns serial numbers to data slices in the data.
[0091] In one possible scenario, the 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 called a slice, and the embodiment of the present application uses a data slice as the basic unit of data retransmission. It should be understood that, considering that the second device uses 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 called an FEC frame. If it is found that a certain FEC codeword check error cannot be determined which specific 66b code block check error is, then the basic unit of retransmission of the first device should include at least one 66b code block that can be carried by an FEC frame. As shown in Figure 3, since 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, the embodiment of the present application defines data slices in terms of several 66b code blocks, not in terms of FEC codewords. However, it is necessary to first determine the number of 66b code blocks that can be carried by an FEC code word. Then, a data slice can be defined as a 66b code block including at least one FEC code word.
[0092] Taking RS (544,514) FEC encoding as an example, the payload area of an FEC codeword consists of 5140 bits. These 5140 bits consist of 20 257b blocks. Each 257b block is transcoded from four 66b blocks, meaning that an FEC codeword consists of 80 66b blocks. Therefore, a data slice can consist of 80, 160, or 240 66b blocks.
[0093] Figure 5 is a schematic diagram of assigning sequence numbers to data slices in an embodiment of the present application. As shown in Figure 5, AM is periodically inserted into a 66b code block stream. The period during which AM is inserted is also referred to as an AM window. For example, the period between the start position of AM0 and the start position of AM1 constitutes an AM window. In one possible scenario, each AM window includes N data slices, each of the same length, where N is an integer greater than or equal to 1. Within each AM window, the data slice at the starting position includes the AM. Sequence numbers are assigned to the data slices within the AM window, starting with the data slice including the AM. For example, the data slice including the AM is assigned sequence number 0, and subsequent data slices are assigned sequence numbers 1, 2, ..., N-1. For another example, the sequence numbers of data slices can also start from 0 and increment in other ways, which are not limited here. It should be understood that sequence numbers are assigned to data slices within each AM window in a similar manner. In another possible scenario, if the data slice is large, such as a data slice including 66b code blocks carrying multiple FEC codewords, multiple AM windows may also include a single data slice.
[0094] It's important to note that before the PCS layer actually performs operations like 64b / 66b encoding, 256b / 257b transcoding, AM insertion, and FEC encoding, the MAC layer already knows how the PCS will perform these operations. For example, the MAC layer knows how AM is inserted into the code block stream and how many 66b or 257b code blocks can be carried in the FEC codeword after FEC encoding. Based on this information, the MAC layer can communicate it to the retransmission control module, enabling it to divide data slices and assign sequence numbers before the PCS performs operations like AM insertion and FEC encoding.
[0095] In another possible scenario, embodiments of the present application may also add a retransmission control module before the PCS layer performs FEC encoding. For example, embodiments of the present application may also divide data slices based on a 257b code block stream, i.e., a data slice includes several 257b code blocks. To do this, first determine the number of 257b code blocks that can be carried by an FEC codeword. Then, a data slice can be defined as a 257b code block that includes at least one FEC codeword. The retransmission control module may also assign a sequence number to each data slice based on the AM after AM insertion is complete, in a manner similar to that described in FIG5 .
[0096] 102. The first device sends data to the second device.
[0097] It should be noted that when the first device sends data, it also synchronously backs up the sent data to the buffer. Specifically, each time a data slice is sent, the data slice and the corresponding sequence number are 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. Once the buffer is full, it can be stored in a circular manner, with the newly sent data slices overwriting the data slices already stored in the buffer. Therefore, the buffer must have sufficient space to ensure that when the first device receives a retransmission request, it can read the corresponding data slice from the buffer for retransmission. The size of the buffer can be flexibly configured according to actual needs and is not specifically limited here.
[0098] 103. The second device receives the data and assigns serial numbers to data slices in the data.
[0099] In this embodiment, after receiving the data stream, the second device uses AM lock to identify the AM in the data stream and assigns a sequence number to each received data slice in a manner similar to that of the first device. This allows the first device to simply send the data to the second device without needing to send the sequence numbers corresponding to the data slices. It should be understood that, as shown in Figure 3, the second device must assign a sequence number to each received data slice based on the AM in the data stream after AM lock and before AM removal.
[0100] In one possible scenario, before the first and second devices begin transmitting data, they conduct a capability negotiation. During this negotiation, they determine whether the other device has retransmission capabilities. Based on the assumption that both devices have retransmission capabilities, they then negotiate a method for dividing data slices and assigning sequence numbers to the data slices. In another possible scenario, if both the first and second devices determine that they have retransmission capabilities, they can also pre-configure the method for dividing data slices and assigning sequence numbers to the data slices for both devices.
[0101] 104. The second device verifies the data.
[0102] The second device performs an FEC check on the received data. If the check is error-free, or if an error exists but can be corrected, the data is received normally and transmitted to the MAC address of the second device's receiver. If an uncorrectable error occurs, the second device's transmitter sends a retransmission request to the first device. Furthermore, the second device may discard all currently received and subsequently received data slices.
[0103] 105. The second device sends a retransmission request to the first device.
[0104] 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, it starts sending the retransmission request 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 the data slice as the granularity, so that the second device can still send data and backup data to the first device with the data slice as the granularity after sending the retransmission request, thereby ensuring the atomicity of the data slice. That is to say, since in the embodiment of the present application, both data backup and data retransmission are performed with data slices as the granularity, and on this basis, the retransmission request is required to be sent with data slices as the granularity, 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 the data slices are sent and backed up with indivisible data slices, that is, the atomicity of the data slices is guaranteed.
[0105] It should be noted that the first device uses fuzzy matching to detect received retransmission requests. Specifically, the first device determines whether the number of correctly verified code blocks in the retransmission request exceeds a threshold. If so, the first device considers the retransmission request to be correct. Even if uncorrectable errors are detected, the retransmission request is still recognized. For example, if a retransmission request contains 80 code blocks, and any 20 of them are pre-defined code blocks for the retransmission request, the received data is considered to be a retransmission request.
[0106] In one possible scenario, the second device sends a retransmission request to the first device, but the first device does not receive the retransmission request due to a link break or other reasons. If the first device detects the link break, it will suspend scheduling service data and wait for the link to be restored within a set protection period before continuing with subsequent processes.
[0107] 106. The first device sends a retransmission response to the second device.
[0108] After receiving the retransmission request, the first device suspends scheduling service data at the boundary of the next data slice to be sent. Specifically, it begins sending a retransmission acknowledgment at the moment the next data slice was originally scheduled to be sent. The retransmission acknowledgment indicates the start of sending the retransmitted data and does not need to be stored in a buffer. It should be understood that, similar to the retransmission request, the retransmission acknowledgment is sent at the granularity of a data slice. Specifically, the number of code blocks in the retransmission acknowledgment is an integer multiple of the number of code blocks in the data slice. After sending the retransmission acknowledgment, the first device can continue to send and back up data slices at the granularity of the data slice, without segmenting the data slices, thus ensuring the atomicity of the data slices.
[0109] It should be noted that the second device will use fuzzy matching to detect the received retransmission response. That is, 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. Even if some uncorrectable errors are found at this time, the retransmission response must be identified. 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 detecting the retransmission response, the second device can start to receive data normally, specifically starting to receive data at the boundary of the next data slice to be received.
[0110] It should be noted that the retransmission type identifiers carried in the retransmission request and retransmission response are different, so that the first device can identify the retransmission request based on the retransmission type identifier in the received message, and the second device can identify the retransmission response based on the retransmission type identifier in the received message. The following provides a possible definition format for the retransmission request and retransmission response.
[0111] Figure 6 is a schematic diagram of a format of a retransmission request and a retransmission response in an embodiment of the present application. As shown in (a) in Figure 6, the format of the retransmission request and the retransmission response is defined here with reference to the format of the 66b code block. The retransmission request or retransmission response may include several 66-bit formats as shown in (a) in Figure 6 to ensure 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. As can be seen from (a) in Figure 6, 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. As shown in (b) in Figure 6, 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 (value 2) defined in byte 6 are used to carry the sequence number of the target data slice for the retransmission request, and are not used for the retransmission response. In addition, an invalid code block is also defined here, which is used to replace data or AM in a data slice in some scenarios. As can be seen from (b) in Figure 6, the operation administration and maintenance (OAM) type of the retransmission request and retransmission response is 0×55, and the OAM type of the invalid code block is 0×AA.
[0112] 107. The first device sends retransmission data to the second device.
[0113] After receiving the retransmission request, the first device reads the corresponding data from the buffer based on the target sequence number and retransmits it. The retransmitted data includes the target data slice corresponding to the target sequence number and the data slices following the target data slice. After all the data slices in the buffer that need to be retransmitted have been sent, the first device can resume scheduling normal service data. If the second device subsequently detects an uncorrectable error, it can simply repeat the retransmission process described above.
[0114] It should be noted that, during the data retransmission process, 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 serial numbers corresponding to all data slices in the retransmitted data according to the serial 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 serial number corresponding to the target data slice in the buffer to the serial number corresponding to the next data slice to be sent, and updates the serial number corresponding to each data slice after the target data slice in the buffer according to the serial number corresponding to the next data slice to be sent. The following is an introduction in conjunction with a specific application scenario.
[0115] Figure 7 is a schematic diagram of the first application scenario of data retransmission in an embodiment of the present application. As shown in Figure 7, 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 data slice 1, 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 sending retransmitted data at the position where data slice 8 should have been sent, where 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.
[0116] 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 the data slices including AM. There will be targeted processing methods for these possible situations, which are introduced below.
[0117] FIG8 is a schematic diagram of the second application scenario of data retransmission in an embodiment of the present application. As shown in FIG8 , the first device sequentially sends data slice 0, data slice 1, ... to the second device. The second device detects an uncorrectable error 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 sending retransmitted data at the position where data slice 7 should have been sent, where the retransmitted data starts from data slice 0 in the buffer. Since data slice 0 is a data slice that includes AM, the second device has already 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. To avoid disrupting the AM window, 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 of the 80 66b code blocks in data slice 0 are AM, then these 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 data slice 0 with invalid code blocks during backup and store them in a buffer. During retransmission, the updated data slice 0 can be directly read from the buffer. It should also be understood that because AM is identified using fuzzy matching, it can still be identified even if an uncorrectable error occurs in AM. Furthermore, AM is only used to delimit AM that does not need to be retransmitted.
[0118] Figure 9 is a schematic diagram of the third application scenario of data retransmission in an embodiment of the present application. As shown in Figure 9, the first device sequentially sends data slices 0, 1, and so on to the second device. If the second device detects an uncorrectable error in the target data slice through verification, it sends a retransmission request to the first device and discards the target data slice and any other data slices received subsequently. After receiving the retransmission request, the first device sends a retransmission response and begins sending the retransmitted data. Assuming an AM window includes 1024 data slices, if the retransmission process reaches a point where an AM needs to be sent, the first device needs to generate an invalid data slice consisting of an AM and an invalid code block and send it to the second device. This invalid data slice is the same size as the normal data slice, ensuring that all subsequently retransmitted data slices are complete and the atomicity of the retransmitted data slices is guaranteed. Taking Figure 9 as an example, data slice 1016 in the buffer needs to be updated with a sequence number of 1023 and sent. After the current AM window ends, the AM for the next AM window needs to be sent. The first device generates an invalid data slice and sends it to the second device; this invalid data slice does not need to be stored in the buffer. In addition, because an invalid data slice is inserted into the retransmitted data, the sequence numbers of the subsequently retransmitted data slices must be increased by 1. For example, 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. The same applies to other subsequently retransmitted data slices.
[0119] As can be seen from the above description, the embodiments of the present application divide data into multiple data slices at the physical layer, where each data slice includes code blocks carried by at least one FEC codeword. For example, if an FEC codeword can carry 80 66-bit code blocks, then a data slice can include 80, 160, or even more 66-bit code blocks. Furthermore, each data slice in the data is assigned a corresponding sequence number. While transmitting data, the transmitting device stores the transmitted data slices and their corresponding sequence numbers in a buffer. After receiving the data, the receiving device performs AM lock and, before removing the AM, assigns a corresponding sequence number to each data slice in the same manner as the transmitting device. Furthermore, upon detecting an uncorrectable error, the receiving device sends a retransmission request carrying the sequence number corresponding to the data slice. The transmitting device retrieves the corresponding data slice from the buffer in response to the retransmission request and begins retransmission. As can be seen, the embodiments of the present application perform retransmission based on data slices at the physical layer. Data slices include code blocks carried by at least one FEC codeword. Since a data slice carries a relatively small number of code blocks, retransmission based on data slices is more effective than retransmission based on packets in reducing transmission delay and buffer space. Moreover, 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.
[0120] The following introduces possible structures of the first device and the second device. For the sake of convenience, the following takes a communication device 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 described below.
[0121] Figure 10 is a schematic structural diagram of a communication device in an embodiment of the present application. As shown in Figure 10, the communication device includes: a processing unit 201, a sending unit 202 and a receiving unit 203. Taking the communication device as the above-mentioned first device as an example, the processing unit 201 is used to perform the above-mentioned step 101, the sending unit 202 is used to perform the above-mentioned steps 102, 106 and 107, and the receiving unit 203 is used to perform the above-mentioned step 105. Taking the communication device as the above-mentioned second device as an example, the processing unit 201 is used to perform the above-mentioned steps 103 and 104, the sending unit 202 is used to perform the above-mentioned step 105, and the receiving unit 203 is used to perform the above-mentioned steps 102, 106 and 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-mentioned 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, the functional units in the various embodiments of the present application may be integrated into a single processing unit, or may be separate physical units, or two or more functional units may be integrated into a single processing unit. The aforementioned integrated units may be implemented in the form of hardware or software functional units.
[0122] Figure 11 is another structural diagram of a communication device in an embodiment of the present application. As shown in Figure 11, the communication device includes a processor 301 and a transceiver 302. The processor 301 and the transceiver 302 are interconnected 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 besides signal transmission and reception. In one possible embodiment, the processor 301 may include the processing unit 201 shown in Figure 9 above, and the transceiver 302 includes the sending unit 202 and the receiving unit 203 shown in Figure 10 above. 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.
[0123] The present application also provides a chip. This chip integrates circuitry and one or more interfaces for implementing the functions of the processor 301 described above. When the chip integrates memory, it can perform the method steps of any one or more of the aforementioned embodiments. When the chip does not integrate memory, it can be connected to an external memory via an interface. The chip implements the actions performed by the transmitting device or receiving device in the aforementioned embodiments based on program code stored in the external memory.
[0124] Figure 12 is a schematic diagram of the structure of a communication system in an embodiment of the present application. As shown in Figure 12, the communication system includes a communication device 401 and a communication device 402, and the communication device 401 and the communication device 402 communicate data. As an example, the communication device 401 is the first device in the embodiment shown in Figure 4 above, and the communication device 402 is the second device in the embodiment shown in Figure 4 above. Among them, the communication device 401 can adopt the communication device structure described in Figure 10 or Figure 11, and the communication device 402 can also adopt the communication device structure described in Figure 10 or Figure 11.
[0125] Finally, it should be noted that the above description is merely a specific embodiment of the present application, but the scope of protection of the present application is not limited thereto. Any modifications or substitutions that can be easily conceived by a person skilled in the art within the technical scope disclosed in the present application should be included within the scope of protection of the present application. Therefore, the scope of protection of the present application should be based on the scope of protection 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
Patent Citations
Data retransmission method, device and system
CN119628798A
Protocol layer packet coding for transmitter / receiver buffer optimization
CN108476098A
Data retransmission method, device and system
CN116260553A
Communication method and device
CN116418452A
Device used for transmitting data packet, method, apparatus and computer readable storage medium
WO2020087477A1