WO2024027367A1 - 编码、解码方法及其装置 - Google Patents

编码、解码方法及其装置 Download PDF

Info

Publication number
WO2024027367A1
WO2024027367A1 PCT/CN2023/102401 CN2023102401W WO2024027367A1 WO 2024027367 A1 WO2024027367 A1 WO 2024027367A1 CN 2023102401 W CN2023102401 W CN 2023102401W WO 2024027367 A1 WO2024027367 A1 WO 2024027367A1
Authority
WO
WIPO (PCT)
Prior art keywords
data block
data
information
network device
encoding
Prior art date
Application number
PCT/CN2023/102401
Other languages
English (en)
French (fr)
Inventor
郑若滨
Original Assignee
华为技术有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 华为技术有限公司 filed Critical 华为技术有限公司
Publication of WO2024027367A1 publication Critical patent/WO2024027367A1/zh

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/18Automatic repetition systems, e.g. Van Duuren systems
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/04Protocols for data compression, e.g. ROHC

Definitions

  • the embodiments of the present application relate to the field of communication technology, and in particular, to an encoding and decoding method and a device thereof.
  • this application provides an encoding and decoding method and a device.
  • the number of retransmitted encoded data blocks is less than the number of data blocks lost by at least one receiving end, which can improve the throughput and data transmission efficiency of physical medium shared communication to meet the requirements of terminal IoT for real-time communication and reliability requirements.
  • this application provides an encoding method that is applied to a first network device that communicates with at least one second network device through a shared medium.
  • the method includes: encoding a first data block to generate at least one second data block; wherein the number of second data blocks is less than the number of first data blocks; wherein the first data block is The third data block among the at least two third data blocks that has not been correctly received by the at least one second network device; wherein the at least two third data blocks are the first network device transmitting data to the at least one Data sent by the second network device; sending the at least one second data block to the at least one second network device.
  • the total data amount of the second data block after encoding is smaller than the total data amount of the first data block before encoding.
  • the data blocks that are not correctly received by at least one second network device may include missing data blocks and/or the second network device receives damaged data blocks instead of correct data blocks.
  • the first network device is also called the sending end, and the second network device is also called the receiving end.
  • Shared media may include but are not limited to: PLC, wireless communication technology, single-pair Ethernet, etc.
  • the encoding method for the first data block may be compression encoding.
  • the two data blocks lost by the receiving end are both 16 bits.
  • two 16-bit data blocks can be compressed and encoded.
  • the encoded data blocks are still 16 bits.
  • This encoding process can be regarded as a bit compression process. In this way, the amount of retransmitted data is 16 bits, which can be greatly reduced compared to the amount of data retransmitted in the prior art.
  • the sending end of the present application can encode at least one data block lost by the receiving end, so that the number of second data blocks obtained after encoding is smaller than the number of first data blocks before encoding. quantity.
  • the encoded data block is then sent to at least one receiving end.
  • this method can reduce the data amount of the retransmitted data block, so that the data transmission amount is smaller.
  • encoding the first data block to generate at least one second data block includes encoding the first data block according to the first encoding information to generate at least one second data block.
  • the first encoding information includes first information and second information respectively corresponding to each of the second data blocks; wherein the first information is used to indicate the number of the second data blocks; the The second information is used to indicate the first data block based on which the second data block is generated for encoding.
  • the receiving end may feed back to the sending end information (eg, ACK) indicating whether the third data block is correctly received by the receiving end.
  • the sending end may generate the first encoding information when receiving the ACK from at least one receiving end.
  • the second information corresponding to the second data block is used to indicate which first data block encoding the second data block is generated based on.
  • lost data block 1 and lost data block 2 are encoded to obtain a second data block, then the second information corresponding to the second data block here may be the respective block number information of data block 1 and data block 2.
  • the implementation of the first encoding information may be a matrix or other forms of encoding data, which is not limited by this application.
  • the sending end may send at least two third data blocks to at least one receiving end through the shared medium, where each third data block may also be referred to as an original data block.
  • the first encoding information may be used to encode at least one original data block lost by the receiving end to generate at least one encoded data block (for example, a second data block), where the first encoding information may include: In addition to the information indicating the number of second data blocks, information of original data blocks based on which each second data block is generated when encoding is also included. The number of second data blocks encoded in this manner may be smaller than the number of first data blocks, thereby reducing the amount of data retransmission.
  • the encoding method further includes: generating the first encoding information based on first feedback information from at least one of the second network devices; wherein the first feedback information is corresponding Feedback information from the second network device to the at least two third data blocks, where the first feedback information is used to indicate that the at least two third data blocks have not been correctly received by the corresponding second network device. to the target data blocks; wherein, among the number of target data blocks respectively corresponding to at least one of the first feedback information, the number with the largest value is the number indicated by the first information; wherein, the third The first data block indicated by the two pieces of information includes the target data block corresponding to the different first feedback information.
  • the first feedback information here may be ACK information of at least two original data blocks sent by the receiving end to the sending end.
  • the ACK information may indicate which original data block among the at least two original data blocks was not correctly received by the corresponding receiving end.
  • the sending end sends 5 data blocks from a0 to a4 to two receiving ends through the shared medium.
  • the receiving end 1 lost the data block a2, and the receiving end 2 lost the data block a1 and the data block a3.
  • the position corresponding to the incorrectly received original data block is set to 1, and the position corresponding to the correctly received original data block is set to 0.
  • the ACK1 of the receiving end 1 can be 00100; the ACK2 of the receiving end 2 can be 01010.
  • the target data block not correctly received by the receiving end 1 indicated by ACK1 is data block a2, and the target data block not correctly received by the receiving end 2 indicated by ACK2 includes data block a1 and data block a3.
  • the sending end can combine the received ACK1 and ACK2 to generate the first encoding information.
  • the maximum value of the number of corresponding target data blocks in ACK1 and ACK2 is the number "2" corresponding to ACK2 (here ACK2 corresponds to two target data blocks), and the sending end can use the number "2" as the first encoding information The number of second data blocks indicated by the first information in . In this way, the sending end can combine the first encoding information to generate two second data blocks.
  • the sending end also needs to combine ACK1 and ACK2 to determine which data blocks the receiving end has lost and encode them to generate two second data blocks respectively.
  • the sending end may combine ACK1 and ACK2 to determine the original data blocks lost by different receiving ends, so as to generate the block number information of the original data blocks as the first data indicated by the second information in the first encoding information. piece.
  • the sending end can combine ACK1 and ACK2 to determine two data blocks lost by different receiving ends, such as data block a2 and data block a1 respectively, and use the respective block numbers of data block a1 and data block a2 as the first encoding Second information corresponding to a second data block in the information
  • the block number of data block a3 can also be directly used as the second information corresponding to another second data block, so that the two encoded second data blocks are respectively: for data block a1 and The data block a2 is encoded to obtain a second data block, and the data block a3 is used as another encoded second data block.
  • the sending end can combine the packet loss situation and the number of packet losses of the original data block by at least one receiving end to generate the first encoding information for encoding, so as to use the first encoding information to encode the at least one receiving end.
  • the missing original data blocks are encoded. Because during encoding, any second data block generated by encoding can be a data block lost by a single receiving end, or it can be a data block lost by at least two receiving ends.
  • the receiving end encodes the encoded data blocks of the lost data blocks respectively. In this way, the encoded data block can be decoded by each of the at least one receiving end.
  • the first encoded information includes a first matrix, the number of rows of the first matrix is m and the number of columns is n, or the number of rows is n and the number of columns is m, where m is the number of the third data block, m ⁇ 2, n is the number of the second data block, m>n ⁇ 1; m row elements or m column elements in the first matrix Respectively used to indicate whether each third data block is correctly received by the at least one second network device, wherein elements in different rows or different columns correspond to different third data blocks; n columns in the first matrix Elements or n rows of elements are used to indicate information about whether different third data blocks are correctly received by different second network devices.
  • n and n are positive integers.
  • n is the number indicated by the first information, which can be understood as the number of data blocks lost by the receiving end that has lost the most packets among at least one receiving end.
  • the sending end sends 5 original data blocks to at least one receiving end, respectively a0 to a4, then the first matrix may include 5 rows, each row represents information about whether an original data block is correctly received by at least one receiving end (for example, The element "1" indicates that it was not received correctly, and the element "0" indicates that it was received correctly). Different rows correspond to different original data blocks.
  • the first matrix may include two columns, and column 1 may correspond to the above-mentioned 5 original data blocks. Then the element of a certain row in column 1 is "1" to represent the original data block corresponding to that row. If it is not received correctly by one receiving end, the element of another row in column 1 is "1", which means that the original data block corresponding to that row is not received correctly by another receiving end.
  • a column in the first matrix may be an example of second information corresponding to a second data block. Then each column element in the first matrix can be used to represent information about whether different receiving ends correctly receive different original data blocks, and each column corresponds to a second data block generated after encoding.
  • the size of the first matrix has nothing to do with the number of second network devices in the shared medium, but is the same as the number m of original data blocks sent by the sending end, optionally with at least one second network device in the shared medium.
  • the size of the first matrix has nothing to do with the number of second network devices in the shared medium, but is the same as the number m of original data blocks sent by the sending end, optionally with at least one second network device in the shared medium.
  • the size of the first matrix has nothing to do with the number of second network devices in the shared medium, but is the same as the number m of original data blocks sent by the sending end, optionally with at least one second network device in the shared medium.
  • the packet loss of the original data block is related to the packet loss of the original data block.
  • packet loss of original data blocks by at least one second network device and the information of each original data block based on when encoding the lost original data blocks can be stored in the form of a matrix. Then during encoding, the matrix can be combined to encode the lost data blocks, which is beneficial to improving the encoding efficiency; and the size of the first matrix has nothing to do with the number of second network devices, and the second network device in the communication loop of the shared medium The larger the number, the more reliable data transmission can be achieved in scenarios with a large number of STAs.
  • the first feedback information is used to update the generated first coding information; the at least one second data block is based on the updated first coding information, A data block generated by encoding the first data block.
  • the first coded information Taking the first matrix as the first coded information as an example, the elements in the first matrix can be updated, where the initialized first matrix is a 0 matrix, and the order can be m); each time the first matrix is updated, send The sending end can encode the first data block according to the updated first matrix to generate the at least one second data block; then the sending end can detect that the received first feedback information satisfies the predetermined Assuming a condition, the at least one second data block generated by the latest encoding is sent to the at least one second network device.
  • the sending end every time the sending end receives the first feedback information (such as ACK) from a receiving end, it can trigger an update of the elements in the first matrix, and update the received elements based on the updated first matrix.
  • the lost data block is encoded; compared with the case where it is detected that the received first feedback information meets the preset conditions, the first matrix is then updated based on the last update.
  • Encoding the first data block can significantly reduce the computing delay, thereby improving data transmission efficiency; when the reception window for the ACK of the original data block expires or the sender has received ACKs from all receivers in the communication loop of the shared medium, Then the sending end can be triggered to send at least one encoded second data block to each receiving end, so that each receiving end can use the at least one second data block to decode the lost original data block to achieve data reliability. sexual transmission.
  • encoding the first data block to generate at least one second data block includes: encoding at least two first data blocks that are not correctly received by different second network devices. Encoding generates at least one second data block.
  • each second data block may be generated by encoding a first data block corresponding to a different second network device.
  • the sending end when the sending end encodes and generates each second data block, it can encode the data blocks lost by different second network devices (preferably different lost data blocks). In this way, it can be advantageous for the second network device to encode the second data blocks. for accurate decoding.
  • encoding the first data block to generate at least one second data block includes: encoding the first data block in a finite domain to generate at least one second data block.
  • This implementation method can encode the first data block in a limited domain, which can reduce coding complexity and improve coding efficiency.
  • encoding the first data block in a finite field to generate at least one second data block includes: performing a bitwise XOR operation on different first data blocks to generate at least one Second data block.
  • This implementation method can implement the encoding of the lost original data blocks through a simple XOR operation, thereby reducing the encoding complexity, improving the encoding efficiency, and reducing the resource occupation during encoding.
  • the method further includes: sending a message related to each of the first data blocks to the at least one second network device.
  • the two data blocks respectively correspond to the second information.
  • the second information may be implemented as at least one row or at least one column of the above-mentioned first matrix.
  • the first matrix is a matrix with m rows and n columns
  • the second information corresponding to a second data block may be the first matrix.
  • a column of a matrix Such that the number of columns of the first matrix determines the number of second data blocks.
  • the second information can also be implemented in other implementation forms, and this application does not limit this.
  • the sending end can not only send the encoded data blocks to each receiving end, but also send information (the second information here) used to characterize which original data blocks each encoded data block is encoded from. ) is sent to each receiving end, which not only facilitates the receiving end to use the second information to decode the encoded data block and improves decoding efficiency, but also facilitates the receiving end to use the second information to perform corresponding processing while decoding. Logical judgment to prevent the receiving end from missing the sending window of the response information for the retransmitted data block.
  • the second information is a target row or a target column of the first matrix (wherein, in a scenario where the first matrix has m rows and n columns, each row represents that a data block is at least whether a second network device correctly receives information, the second information here may be a target column), wherein the target row or the target column is the row or column that includes the target element in the first matrix, and the The target element is used to indicate that at least one of the second network devices has not correctly received the third data block.
  • the target element may be element "1" or "element 0".
  • the binary first matrix is used to encode the lost original data block, which can reduce the encoding complexity and improve the encoding efficiency.
  • this application provides a decoding method that is applied to a second network device.
  • the second network device communicates with the first network device through a shared medium.
  • the method includes: receiving at least one second data block from the first network device; receiving second information corresponding to each second data block from the first network device; wherein any one of the The second information corresponding to the second data block is used to indicate the first data block and at least one fourth data block based on which the second data block is generated for encoding; wherein the fourth data block is at least The third data block correctly received by the second network device among the two third data blocks; the first data block is not correctly received by the second network device among the at least two third data blocks.
  • the third data block according to the at least one fourth data block indicated by the second information, decode the at least one second data block to obtain the first data block; wherein the at least two third data blocks
  • the data block is data sent by the first network device to at least one second network device through the shared medium.
  • the first data block here is an original data block lost by the second network device alone.
  • the first data block can be used to represent the original data block lost by at least one second network device.
  • the first data block in each embodiment of the decoding method of the present application is a second network device here in which multiple original data There is no correctly received original data block among the data blocks, rather than a set of correctly received original data blocks among multiple original data blocks for each second network device in each embodiment of the above encoding method.
  • the receiving end can decode the encoded data blocks based on the received original data blocks and the second information corresponding to each second data block, where the second information can be used to indicate to the sending end An original data block that is lost by at least one second network device upon which the encoding generates a corresponding second data block.
  • the original data blocks based on which the second data block is encoded may include original data blocks lost by the second network device, and also include original data blocks not lost by the second network device.
  • the receiving end can use the unlost original data block to decode the second data block based on the second information to obtain the lost original data block, which helps ensure accurate decoding of the second network device and realizes the original Reliable transmission of data blocks helps improve data transmission efficiency and throughput of physical media shared communication, and can easily meet the real-time and reliability requirements of terminal IoT for communication.
  • decoding the at least one second data block according to the at least one fourth data block indicated by the second information to obtain the first data block includes:
  • the at least one second data block is decoded on a finite field to obtain the first data block.
  • This implementation method can decode each second data block in a limited domain, which can reduce decoding complexity and improve decoding efficiency.
  • the method further includes: based on the first feedback information and the second information, when it is detected that the at least one second data block can be used for decoding to generate the first data block. , sending second feedback information to the first network device; wherein the first feedback information is the feedback information of the second network device to the at least two third data blocks, and the first feedback information is expressed in To indicate that the second network device did not receive the third data block correctly.
  • the second feedback information is feedback information from the second network device to the at least one second data block.
  • the second feedback information is used to indicate that the second network device has correctly received the first data block.
  • the receiving end can use the second information to decode the encoded data block, thereby improving the decoding efficiency. It can also help the receiving end to use the second encoded information to make corresponding logical judgments while decoding. This is to prevent the receiving end from missing the sending window of the response information for the retransmitted data block (for example, to avoid missing the retransmitted ACK sending window due to long decoding delay), resulting in the problem that the retransmitted ACK information is delayed or cannot be sent. , which is conducive to shortening the delay in receiving responses.
  • Feeding back information to the first network device includes: performing a bitwise AND operation on the first feedback information and the second encoded information to obtain an operation result; based on the operation result, after detecting the at least one first
  • the second data block can be used to send second feedback information to the first network device when decoding and generating the first data block.
  • This embodiment can use the first feedback information and the second encoding information to logically determine whether at least one second data block can be used to decode and generate the original data block lost by the receiving end through a bitwise AND operation, thereby determining the
  • the receiving end can perform parallel operations on sending the second feedback information and decoding the second data block, which can significantly reduce the transmission delay and thereby improve Communication real-time and reliability.
  • decoding the at least one second data block according to the at least one fourth data block indicated by the second information to obtain the first data block includes: according to the The at least one fourth data block indicated by the second information is decoded in parallel to obtain at least one first data block.
  • each data block when the receiving end receives at least one second data block, each data block can be decoded in parallel, which can improve decoding efficiency.
  • the present application provides an encoding device, applied to a first network device that communicates with at least one second network device through a shared medium, and the encoding device is used for:
  • the first data block is encoded to generate at least one second data block; wherein the number of the second data blocks is less than the number of the first data blocks; wherein the first data block is in at least two second data blocks.
  • the encoding device is specifically configured to: encode the first data block according to the first encoding information to generate at least one second data block; the first encoding information includes first information and second information respectively corresponding to each second data block; wherein the first information is used to indicate the number of the second data blocks; the second information is used to indicate the encoding used to generate the The first data block on which the second data block is based.
  • the first encoding information includes a first matrix
  • the encoding device is further configured to: generate the first encoding based on first feedback information from at least one of the second network devices. information; wherein the first feedback information is the feedback information of the corresponding second network device to the at least two third data blocks, and the first feedback information is used to indicate that in the at least two third data blocks , target data blocks that have not been correctly received by the corresponding second network device; wherein, among the number of target data blocks respectively corresponding to at least one of the first feedback information, the number with the largest value is the The number indicated by the first information; wherein the first data block indicated by the second information includes the target data block corresponding to different first feedback information.
  • the first encoded information includes a first matrix, the number of rows of the first matrix is m and the number of columns is n, or the number of rows is n and the number of columns is m, where m is the number of the third data block, m ⁇ 2, n is the number of the second data block, m>n ⁇ 1; m row elements or m column elements in the first matrix Respectively used to indicate whether each third data block is correctly received by the at least one second network device, wherein elements in different rows or different columns correspond to different third data blocks; n columns in the first matrix Elements or n rows of elements are used to indicate information about whether different third data blocks are correctly received by different second network devices.
  • the first feedback information is used to update the generated first coding information; the at least one second data block is based on the updated first coding information, A data block generated by encoding the first data block.
  • the encoding device is specifically configured to: encode at least two first data blocks that are not correctly received by different second network devices, and generate at least one second data block.
  • the encoding device is specifically configured to: encode the first data block in a finite domain and generate at least one second data block.
  • the encoding device is specifically configured to perform a bitwise XOR operation on different first data blocks to generate at least one second data block.
  • the encoding device is further configured to: send the second information respectively corresponding to each of the second data blocks to the at least one second network device.
  • this application provides a decoding device applied to a second network device, wherein the second network device communicates with the first network device through a shared medium, and the decoding device is used to: Receive from the first network device to One less second data block; receiving second information corresponding to each second data block from the first network device; wherein, the second information corresponding to any one of the second data blocks is expressed by Indicates the first data block and at least one fourth data block based on which the second data block is encoded; wherein the fourth data block is the second network device in at least two third data blocks.
  • the third data block received correctly; the first data block is the third data block that the second network device did not receive correctly among the at least two third data blocks; according to the second information indication
  • the at least one fourth data block, the at least one second data block is decoded, and the first data block is obtained; wherein the at least two third data blocks are the first network device through the shared Data sent by the medium to at least one second network device.
  • the decoding device is specifically configured to: decode the at least one second data block in a limited domain according to the at least one fourth data block indicated by the second information, and obtain the Describe the first data block.
  • the decoding device is further configured to: based on the first feedback information and the second information, detect that the at least one second data block can be used to decode and generate the first data. block, sending second feedback information to the first network device; wherein the first feedback information is the feedback information of the second network device to the at least two third data blocks, and the first feedback information The information is used to indicate that the second network device has not correctly received the third data block; the second feedback information is the feedback information of the second network device to the at least one second data block, and the second The feedback information is used to indicate that the second network device has correctly received the first data block.
  • the decoding device is specifically configured to: perform a bitwise AND operation on the first feedback information and the second encoded information to obtain an operation result; based on the operation result, when the detected
  • the at least one second data block can be used to send second feedback information to the first network device when decoding and generating the first data block.
  • the decoding device is specifically configured to: perform parallel decoding on the at least one second data block according to the at least one fourth data block indicated by the second information to obtain at least one of said first data blocks.
  • the present application provides an encoding device.
  • the encoding device includes one or more interface circuits and one or more processors; the interface circuit is used to receive signals from a memory and send the signals to the processor, where the signals include computer instructions stored in the memory ;
  • the processor executes the computer instructions, the processor can implement the encoding method in any of the above implementations.
  • this application provides a decoding device.
  • the encoding device includes one or more interface circuits and one or more processors; the interface circuit is used to receive signals from a memory and send the signals to the processor, where the signals include computer instructions stored in the memory ; When the processor executes the computer instructions, the processor can implement the decoding method in any of the above implementations.
  • the effect of the decoding device in this embodiment is similar to the effect of the decoding method in each of the above embodiments, and will not be described again here.
  • the present application provides a computer-readable storage medium.
  • the computer-readable storage medium stores a computer program.
  • the computer program When the computer program is run on a computer or processor, it causes the computer or processor to execute the encoding method in any of the above embodiments.
  • the present application provides a computer-readable storage medium.
  • computer readable storage media A computer program, when the computer program is run on a computer or processor, causes the computer or processor to execute the decoding method in any of the above embodiments.
  • the present application provides a computer program product.
  • the computer program product includes a software program.
  • the software program is executed by a computer or processor, the encoding method in any of the above embodiments is executed.
  • the present application provides a computer program product.
  • the computer program product includes a software program.
  • the software program is executed by a computer or processor, the decoding method in any of the above embodiments is executed.
  • Figure 1 is a schematic diagram of nodes in a PLC control loop in an exemplary smart home scenario
  • Figure 2a is a block diagram illustrating a system of the present application
  • Figure 2b is an exemplary workflow diagram of the system
  • Figure 3a is a schematic diagram of exemplary data transmission
  • Figure 3b is a schematic diagram of exemplary data transmission
  • Figure 4a is a schematic diagram of an exemplary data structure
  • Figure 4b is a schematic diagram of an exemplary data structure
  • Figure 5a is a schematic diagram of an exemplary encoding process
  • Figure 5b is a schematic diagram of an exemplary encoding process
  • Figure 6a is a schematic diagram of exemplary data retransmission
  • Figure 6b is a schematic diagram of exemplary data retransmission
  • Figure 7a is a schematic diagram of an exemplary logical judgment
  • Figure 7b is a schematic diagram of an exemplary logical judgment
  • Figure 8a is a timing diagram of an exemplary multicast transmission
  • Figure 8b is a timing diagram of an exemplary unicast transmission
  • Figure 9 is a schematic structural diagram of a device provided by an embodiment of the present application.
  • Figure 10 is a schematic structural diagram of a chip provided by an embodiment of the present application.
  • a and/or B can mean: A exists alone, A and B exist simultaneously, and they exist alone. B these three situations.
  • first and second in the description and claims of the embodiments of this application are used to distinguish different objects, rather than to describe a specific order of objects.
  • first target object, the second target object, etc. are used to distinguish different target objects, rather than to describe a specific order of the target objects.
  • multiple processing units refer to two or more processing units; multiple systems refer to two or more systems.
  • IoT terminals can be divided into fixed terminals and mobile terminals according to application scenarios.
  • Fixed terminals are used in fixed access scenarios and generally have reliable external power supply. Fixed terminals can be used to detect information from various fixed equipment, instruments or environments.
  • the Internet of Things between fixed terminals has high requirements for the real-time and reliability of network connections.
  • the Internet of Things usually uses physical media sharing technology (also called shared media), such as wireless communication technology, or Power Line Communication (PLC, Power Line Communication) technology, or Single Pair Ethernet (SPE) for interconnection.
  • PLC Power Line Communication
  • SPE Single Pair Ethernet
  • the above-mentioned physical medium sharing technology is not affected by terrain and landforms during communication, has low construction and operation and maintenance costs, does not require wiring, and has a short construction period.
  • PLC can be widely used in the Internet of Things and home networks. PLC can load modulated high-frequency signals onto existing power lines for information transmission, so there is no need to re-set up communication networks. As long as there are wires, each Internet of Things terminal can Communication, wide coverage.
  • STAs a large number of terminals (Stations, STAs) are connected to the communication loop of the physical medium sharing technology.
  • the physical medium sharing technology is a wireless communication technology
  • a wireless access point Wireless Access Point, AP
  • wireless access point Devices or wireless gateways can access more STAs.
  • the physical media sharing technology is PLC technology
  • more STAs can be accessed in the power line loop.
  • the physical media sharing technology can also be single-pair Ethernet network, then more STAs can be connected in the single-pair Ethernet.
  • the application layer bandwidth of the physical media sharing technology is narrow, for example, only tens of Kbps, which makes the data transmission efficiency in the physical media sharing technology low. And it is difficult to meet the requirements of terminal IoT for real-time communication and reliability.
  • this application provides an encoding method, a decoding method, a sending end (also called a source end) and a receiving end.
  • Shared physical media used in the Internet of Things such as wireless communication networks, PLC networks, single-pair Ethernet, etc.
  • the sending end can be used to generate and send multiple original data blocks, as well as encode the original data blocks lost by each receiving end and retransmit the encoded data blocks to each receiving end;
  • the receiving end can be used to encode the encoded data Blocks are decoded to obtain the original data blocks lost by this receiving end.
  • the sending end provided by this application can be used to send messages, and the receiving end provided by this application can be used to receive messages.
  • the same electronic device can be used as a sender or a receiver respectively, and this application does not limit this.
  • the device types in the wireless communication loop may include but are not limited to: wireless base stations, wireless access points, wireless gateways, wireless terminals (also Called STA), etc.
  • the wireless air interface technology used by the wireless gateway may include but is not limited to Zigbee, Bluetooth, etc. This application does not limit the specific wireless communication protocols used by each device in wireless communication technology in the field of the Internet of Things.
  • the sending end may be a wireless base station, or a wireless access point, or a wireless gateway; the receiving end may be a wireless terminal.
  • the sending end may be a wireless terminal
  • the receiving end may be a wireless base station, or a wireless access point, or a wireless gateway.
  • the device when any device is sending data, the device can be used as the sending end of this application, and when any device is receiving data, the device can be used as the receiving end of this application.
  • the examples are not intended to limit the application.
  • the device types in the PLC loop may include but are not limited to: PLC gateways, wired terminals (also called STA), etc.
  • the wired terminal can be any IoT device connected to a power line.
  • FIG. 1 is a schematic diagram of nodes in a PLC control loop in a smart home scenario.
  • the nodes in the PLC link may include but are not limited to: gateways and nodes connected to the PLC bus where the gateway is located (such as the above-mentioned wired terminal).
  • a PLC link may include hundreds of nodes, and some nodes are shown here as an example.
  • the nodes connected on the bus may include: at least one switch (such as switch 1, switch 2 and switch 3), at least one sensor (such as sensor 1 to sensor n), at least one lamp (such as lamp 1 to lamp m ), at least one curtain motor, to One less socket etc.
  • the gateway can send messages to each node connected to the PLC bus.
  • the gateway can also receive messages sent by each node, and different nodes can communicate through the gateway.
  • the sending end can be a PLC gateway; the receiving end can be a wired terminal.
  • the sending end may be a wired terminal and the receiving end may be a PLC gateway.
  • the device when any device is sending data, the device can be used as the sending end of this application.
  • the device When any device is receiving data, the device can be used as the receiving end of this application.
  • the above example It is not intended to limit this application.
  • Figure 2a is a block diagram of a system exemplarily shown in this application.
  • the system may include a transmitter and at least one receiver.
  • the sending end may include an encoding module and a packet loss recording module; the receiving end may include a decoding module and a packet loss feedback module.
  • An exemplary encoding module may be used to generate and send multiple raw data chunks
  • Decoding module which can be used to receive the original data block sent by the sending end
  • the packet loss feedback module can be used to feed back to the sending end the original data blocks that were not correctly received or lost by the receiving end based on the data blocks received by the decoding module;
  • the packet loss recording module can be used to update the first matrix based on the incorrectly received or lost original data blocks fed back by each receiving end to record the packet loss information of each receiving end;
  • the encoding module can also be used to encode the data packets lost by each receiving end based on the information recorded by the packet loss recording module, and send the encoded data packets and the matrix information in the updated first matrix to each receiving end, so as to Implement retransmission of lost data packets at each receiving end.
  • the decoding module can also be used to receive the encoded data packets and corresponding matrix information sent by the sending end, and use the matrix information to decode the encoded data packets to obtain the original data packets lost by the receiving end.
  • the packet loss feedback module can also be used to operate on the feedback information generated when receiving multiple original data blocks based on the corresponding matrix information of the received first matrix to determine whether the encoded data packet can be used to decode the current block. Lost data packets at the receiving end, and feedback information on whether the retransmitted lost data packets are accurate.
  • FIG. 2a is a schematic diagram of the system framework structure. It should be understood that the system shown in Figure 2a is only an example. The system of the present application, as well as the sending end and the receiving end, may include more or fewer modules than shown in the figure, and two or more modules may be combined. modules, or can have different module configurations. The various modules shown in Figure 2a may be implemented in hardware, software, or a combination of hardware and software including one or more signal processing and/or application specific integrated circuits.
  • a communication loop that shares a physical medium includes n+1 terminals, and one terminal 1 serves as a sender to send a message to at least one terminal 2, since the communication loop is a communication loop that shares a physical medium, So that the message can not only be received by the at least one terminal 2, but among the n+1 terminals, every terminal except the terminal 1 (here all terminals 2) can receive the message as a receiving end. message.
  • every terminal except the terminal 1 here all terminals 2
  • all n terminals in the communication loop except the sender serve as receivers to receive the data sent by the sender.
  • Figure 2b including n receiving ends.
  • the shared medium communication loop includes 6 STAs, namely STA0 to STA5.
  • STA0 as the sender, aims to send message 1 to STA1.
  • the destination address of the message is the address used to indicate STA1.
  • STA2 to STA5 in the communication loop can all receive the message 1.
  • STA2 to STA5 that do not care about the message 1 can discard the message 1.
  • the process may include the following steps:
  • the sending end sends multiple original data packets to n receiving ends.
  • n is greater than or equal to 2.
  • the sending end may send multiple original data packets through multicast/broadcast transmission, or may send multiple data packets through unicast transmission, which is not limited by this application.
  • this application does not limit the order in which multiple original data packets are received by n receiving ends.
  • the sending end and the n receiving ends may agree on the value of m in advance, where m is the number of multiple original data packets sent by the sending end.
  • the m original data packets can be divided into m original data blocks for one message, and the splicing results of multiple messages can also be divided into m original data blocks.
  • the data sizes of m original data blocks are the same.
  • the data sizes of the m original data blocks may also be different, and this application does not limit this.
  • the sending end can add zeros to the high bits of the original data blocks with shorter data lengths when executing S105 shown in Figure 2b below. Encoding of missing data blocks.
  • this application Whether the sending end of this application sends messages in unicast, multicast or broadcast mode, it sends m original data blocks at once or continuously to realize data transmission.
  • the sending end sends 5 original data blocks ⁇ a0, a1, a2,...,a4 ⁇ to the control loop of the shared medium in a multicast or broadcast transmission mode. All STAs in except the sender, here are 5 STAs, STA1 to STA5 respectively. However, due to the small bandwidth of each node in the control loop of the shared medium and the harsh channel environment, data blocks may be lost when the STA receives data.
  • STA1 only receives data block a0, data block a3 and data block a4, while data block a1 and data block a2 are not received correctly or are lost.
  • STA2 only receives data block a1, data block a2 and data block a3, while data block a0 and data block a4 are not received correctly or are lost.
  • the packet loss situation of STA3 and STA4 is similar to the packet loss situation of STA2, which will not be described again here.
  • STA5 only receives data block a0, data block a1, data block a2 and data block a4, while data block a3 is not received correctly or is lost.
  • the sending end sends five original data blocks a0, a1, a2, a3, and a4 in unicast mode.
  • the sending end sends data block a0 to STA1 in unicast transmission mode.
  • the destination address of data block a0 is the address of STA1.
  • the original data block required by STA1 is data block a0.
  • the control loop of the shared medium such as the control loop of wireless communication or the control loop of PLC
  • Each STA can receive data block a0.
  • data block a0 is not the original data block that STAs other than STA1 need (or care about).
  • the sending end sends data block a1 to STA2 in unicast transmission mode; the sending end sends data block a2 to STA3 in unicast transmission mode; the sending end sends data block a3 to STA4 in unicast transmission mode; the sending end Send data block a4 to STA5 in unicast transmission.
  • the original data blocks required by STA1 to STA5 are respectively data block a0, data block a1, data block a2, data block a3, and data block a4.
  • all five STAs can receive all five original data blocks sent by unicast.
  • the sending end sends 5 original data blocks ⁇ a0, a1, a2,...,a4 ⁇ in a unicast transmission mode to other nodes in the control loop of the shared medium except the sending end. Except for all STAs, here are 5 STAs, namely STA1 to STA5. However, due to the small bandwidth of each node in the control loop of the shared medium and the harsh channel environment, data blocks may be lost when the STA receives data.
  • STA1 only receives data block a1, data block a3 and data block a4, while data block a2 and data block a0 required by STA1 are not received correctly or are lost.
  • STA1 can retain the received but unnecessary data block a1, data block a3 and data block a4.
  • STA2 only receives data block a0, data block a2, data block a3, and data block a4, but the data block a1 required by STA2 is not received correctly or is lost.
  • STA2 can retain the received but unnecessary data block a0, data block a2, and data Block a3 and data block a4.
  • the packet loss situation of STA3 and STA4 is similar to the packet loss situation of STA2.
  • the data block a2 and data block a3 required by STA3 and STA4 have been received.
  • STA3 can discard the received data block a0, data block a3, and data block a4, while retaining the required data block a2; similarly, optionally, STA4 can discard the received data block a0 , data block a2, data block a4, and retain the required data block a3.
  • STA5 only received data block a0, data block a2 and data block a3, while data block a1 and data block a4 required by STA5 were not received correctly or lost.
  • STA5 can retain the received but unnecessary data block a0, data block a2 and data block a3.
  • each original data block can carry the sequence number information of the data block.
  • the sender and the receiver have agreed on the value of m corresponding to the data sent by the sender, which is 5 here. In this way, each receiving end in the shared media loop can determine the data blocks that the receiving end did not receive correctly or that were lost based on the sequence numbers of the received data blocks.
  • the sending end may cache the multiple original data packets to select the data packets lost by the receiving end from the multiple original data packets for encoding.
  • the receiving end sends first feedback information indicating the incorrectly received first data packet to the sending end.
  • receiving end 1 to receiving end n may respectively send respective first feedback information.
  • the PLC gateway pre-sets and agrees on a data receiving window and a data sending window for each STA, such as each data receiving window and each data sending window of STA2 shown in Figure 8a (such as ACK sending window) to realize the data feedback of each STA to the sending end in time periods. For example, when the STA misses the data sending window of the STA, it is unable to provide data feedback to the sending end.
  • the first feedback information sent by a receiving end is used to indicate packet loss of the plurality of original data blocks or incorrectly received data packet information.
  • the first feedback information may be an acknowledgment character (ACK, Acknowledge character).
  • ACK acknowledgment character
  • Acknowledge character the form of the first feedback information may be in other forms, and this application does not limit this.
  • the receiving end can use one bit to indicate the reception status of each original data block. For example, 1 indicates that the original data block was not received correctly or lost, and 0 indicates that the original data block has been received correctly. data block. It can be understood that this application does not limit the feedback response mechanism of each receiving end, and can also be implemented in other ways, as long as the first feedback information can enable the sending end to determine, for example, which data blocks among the above-mentioned five original data blocks are in The corresponding STA is not received correctly or is lost.
  • the sending end sends five original data blocks ⁇ a0, a1, a2,...,a4 in a multicast/broadcast manner (taking multicast as an example) ⁇ .
  • STA1 lost data block a1 and data block a2
  • the first feedback information sent by STA1 to the sender here multicast ACK1 is specifically "01100" to represent data block a1 and data block a2 was not received correctly by STA1, data block a0, data block a3 and data block a4 were correctly received by STA1; similarly, the multicast ACK2 of STA2 received by the sending end is "10001", and the multicast ACK2 of STA3 received by the sending end
  • the multicast ACK3 of STA4 received by the sender is "10001"
  • the multicast ACK4 of STA4 received by the sender is "10001”
  • the multicast ACK5 of STA5 received by the sender is
  • the sending end sends 5 original data blocks ⁇ a0, a1, a2,...,a4 ⁇ to each of the 5 STAs in a unicast manner.
  • a STA For the 5 original data blocks sent by the sender in unicast mode, STA1 lost data block a0 and data block a2, then STA1 sent 5 original data blocks ⁇ a0, a1, a2,...,a4 ⁇ (such as the 5 unicast ACK1 shown in Figure 4b), the contents of the 5 ACK1 are respectively: "1" corresponding to the data block a0, "1" corresponding to the data block a1 0" corresponds to "1" in data block a2, corresponds to "0" in data block a3, and corresponds to "0” in data block a4. It means that data block a0 and data block a2 were not received correctly by STA1, and data block a1, data block a3 and data block a4 were correctly received by
  • the sender receives 5 unicast ACK2s from STA2 for 5 original data blocks ⁇ a0, a1, a2,...,a4 ⁇ , and the contents of the 5 unicast ACK2s are "0", “ 1", “0", “0”, “0”; the sender received 5 unicast ACK3s from STA3 for 5 original data blocks ⁇ a0, a1, a2,...,a4 ⁇ , 5
  • the content of unicast ACK3 is "0", “1", "0", "0", "0” in sequence; the content received by the sender from STA43 is in sequence for 5 original data blocks ⁇ a0, a1, a2,...
  • the first feedback information sent by a receiving end can be used to indicate that the receiving end has not received correctly or lost the original data block.
  • the sending end sends 5 original data blocks ⁇ a0, a1, a2,...,a4 ⁇ to each of the 5 STAs in a unicast manner
  • 5 When each STA among the STAs replies its own ACK to the sending end, it may also send an ACK for the entire five original data blocks ⁇ a0, a1, a2,..., a4 ⁇ to the sending end.
  • STA1 can determine the lost original data block based on the block number of the received original data block, and then sends a unicast ACK1 to the sending end, with the specific content being "10100" to indicate that data block a0 and data block a2 are correctly received.
  • the specific content of a unicast ACK2 sent by STA2 to the sending end is "01000”
  • the specific content of a unicast ACK3 sent by STA3 to the sending end is "01000”
  • the specific content of a unicast ACK4 sent by STA4 to the sending end is "01001”.
  • the sending end and the receiving end have agreed in advance on the value of the number m of original data blocks, and the number m may be a system parameter.
  • Each of the m original data blocks sent by the sender each time can have an identification field, and the receiving end can determine the original data block that has not been received correctly or is lost based on the identification field of the received original data block. Notify the sender.
  • the sending end updates the first matrix according to the received first feedback information.
  • the first matrix is a matrix with m rows.
  • the maximum value of the number of columns of the first matrix is m.
  • the first matrix is a square matrix of order m.
  • each row in the first matrix can be used to represent the reception status of each of the m original data blocks at the receiving end.
  • the elements of the k-th row of the first matrix may be used to represent the reception status of the corresponding original data block ak.
  • element 1 represents that the original data block ak has not been received correctly or lost
  • element 0 represents that the original data block ak has been received correctly
  • element 0 may also be used to indicate that the original data block ak has been received correctly
  • element 1 may be used to indicate that the original data block ak has not been received correctly or is lost. This application does not limit this.
  • the size of the first matrix has nothing to do with the number of receiving terminals (such as wired terminals or wireless terminals).
  • the size of the first matrix is directly related to the number of blocks of original data sent by the sending end, and related to the loss of the original data blocks by the receiving end.
  • the sending end can initialize an m-order square matrix with all zero elements (i.e., an m-order zero-square matrix), such as the matrix P1 shown in Figure 5a(1) (here is a 5th-order zero-square matrix). matrix), or the matrix P2 shown in Figure 5b(1) (here is a fifth-order zero square matrix).
  • an m-order zero-square matrix such as the matrix P1 shown in Figure 5a(1) (here is a 5th-order zero-square matrix). matrix
  • the matrix P2 shown in Figure 5b(1) here is a fifth-order zero square matrix.
  • each time the sending end receives an ACKi from an STAi for the 5 original data blocks, it updates the first matrix according to the received ACKi in a preset manner, where, i 1,2,3...5.
  • the sending end receives an ACKi, and the sending end searches for the first incorrect bit in the ACKi (such as "1"); then, the sending end can determine the corresponding bit according to the order of the bits in the ACKi.
  • Data block number k after that, the sending end sets the k-th row and q1 column element in the first matrix P (the initial state is all zeros) to 1 according to the data block number k, to indicate that the error corresponding to the data block number k is incorrectly received.
  • Original data block ak Among them, q1 is a positive integer.
  • q1 can be any value from 1 to m. In other embodiments, for example, q1 is the maximum value m (here is 5), or q1 is an intermediate value (such as 3), etc. This application is There is no restriction on this.
  • S12 The sending end continues to search for the next incorrect bit (such as "1") in the above ACKi to determine the corresponding data block number j; then, the sending end adds the jth bit in the first matrix P according to the data block number j.
  • the sending end performs S12 in a loop until the last bit indicating incorrectness in the same ACKi is found, and then the update of the first matrix P based on the ACKi is completed.
  • the sending end performs S12 in a loop, for the same ACKi, every time the sending end detects a bit 1, it can change the row corresponding to the corresponding data block number in the first matrix P.
  • the element of the next column qi is set to 1, where the value of qi is different from the value of each previous q (such as q1, q2, etc.).
  • the sending end sets the elements of the corresponding columns in the first matrix to 1 in a uniform manner of missing one column at a time.
  • ACK1 is "11111”
  • the sending end can sequentially set the elements in the first row and first column of the fifth-order zero matrix to 1 (here q1 is 1), and set the elements in the second row and second column to 1.
  • Set the element to 1 set the element in the third row and third column to 1, set the element in the fourth row and fourth column to 1, set the element in the fifth row and fifth column to 1, so that the first element initialized based on ACK1
  • the updated first matrix P can be expressed as:
  • the columns to which the selected element set to 1 in the first matrix P belongs are the 2nd column, the 3rd column, the 4th column, the 5th column, and the 1st column in sequence. List.
  • the sending end follows the order from high bit to low bit or from low bit to high bit. After the sending end detects an element 1 in the ACK, the sending end adds the elements in the first matrix P When the corresponding elements of the corresponding columns are set to 1, a corresponding number of columns may also be missed in an uneven manner to set the corresponding elements of the corresponding columns in the first matrix to 1. However, if you miss a column, you need to make sure that the selected column has not been selected before.
  • the sending end sets the element 1 in the first row and column 1 of the first matrix P. is 1; when the second "1" is detected in ACK1, the sender misses two columns and sets the element in the third column of the second row in the first matrix P to 1; when the third "1" is detected in ACK1 1", the sending end misses one column backward from the 3rd column, and sets the element in the 4th column of the third row in the first matrix P to 1; when the fourth "1" is detected in ACK1, the sending end starts from The 4th column misses one column backward, and the element of the fourth row and the 5th column in the first matrix P is set to 1; when the fifth "1" is detected in ACK1, the sender misses two columns backward from the 5th column. column, set the element in column 2 of the fifth row in the first matrix P to 1.
  • the number of missed columns here is in order: 2 columns, 1 column, 1 column, 1 column, 2 columns. They are the elements of the corresponding rows in the 1st, 3rd, 4th, 5th and 2nd columns of the first matrix P respectively.
  • the sending end every time the sending end detects a bit "1" in the same ACK, it selects a column in the first matrix P and sets the element of a certain row corresponding to the selected column to 1. , there is no restriction on the selection order among the columns in the first matrix P.
  • the above example is to miss one column at a time.
  • the sender can also miss a corresponding number of columns unevenly to select each column.
  • the sender each time an STAi is received for the ACKi of the 5 original data blocks, the sender follows the same strategy of selecting columns in the first matrix P, based on the received data. ACKi updates the first matrix.
  • the default method of this application is not limited to the examples of each of the above embodiments.
  • the sending end each time based on the received ACKi, to update the first matrix, the default The method needs to be the same.
  • the sending end receives ACK1 from STA1
  • the selection order of the columns to which the elements that need to be set to 1 belong is 1st, 2nd, 3rd, 4th, and 5th in the first matrix P; then the sending end receives
  • the selection order of the columns to which the elements that need to be set to 1 belong is also sequentially 1st, 2nd, 3rd, 4th, 5th;..., the sender receives STA5's ACK5
  • the selection order of the columns to which the elements selected to be set to 1 belong is also 1st, 2nd, 3rd, 4th, and 5th in the first matrix P.
  • the initialized first matrix P1 is exemplarily shown.
  • the multicast ACK1 is "01100", then when the first matrix is updated according to the multicast ACK1, the sending end
  • the element in the first column in the second row of the first matrix P1 corresponding to the data block a1 can be set to 1; then, the sender can set the element in the first matrix P1 in the second column in the third row of the data block a2 to 1.
  • the sending end receives the ACK2 of STA2 as shown in Figure 4a, and similarly updates the first matrix P1 from Figure 5a(2) to the first matrix P1 as shown in Figure 5a(3).
  • the transmitting end receives ACK3 of STA3 (here "10001"), and the transmitting end can continue to update the first matrix P1 shown in Figure 5a(3).
  • ACK3 of STA3 here "10001”
  • the sending end needs to convert the first matrix P1 shown in Figure 5a(3) into the first row of the corresponding data block a0.
  • the element in the first column is set to 1, but as shown in Figure 5a(3), the element in the first row and first column of the first matrix P1 has been set to 1, so the first element of the first matrix P1 will no longer be set here.
  • the elements in the first column of the row are updated; then, based on the second bit "1" detected in ACK3, the sending end needs to update the corresponding data in the first matrix P1 shown in Figure 5a(3)
  • the element in the second column of the fifth row of block a4 is set to 1, but as shown in Figure 5a(3), the element of the fifth row and second column of the first matrix P1 has been set to 1, so the first element will no longer be set here.
  • the elements in the fifth row and second column of matrix P1 are updated.
  • the sending end receives the ACK5 of STA5 (as shown in Figure 4a, here "00010"), and the sending end can continue to update the first matrix P1 shown in Figure 5a(3).
  • the transmitting end may update the first matrix from Figure 5a(3) to the first matrix P1 shown in Figure 5a(4).
  • the initialized first matrix P2 is shown as an example.
  • the contents of the five unicast ACK1s are "1", “0", “1", and "0" in order. ”, “0”, then when updating the first matrix according to 5 unicast ACK1, the sender can set the element in the first column of the first row of the corresponding data block a0 in the first matrix P2 to 1; then , the sending end can set the element in the second column in the third row of the corresponding data block a2 in the first matrix P2 to 1 to update the first matrix P2 from Figure 5b(1) to the one shown in Figure 5b(2) The first matrix P2.
  • the sending end receives 5 unicast ACK2s of STA2 as shown in Figure 4b.
  • the first matrix P2 can be updated from Figure 5b(2) to the first matrix P2 as shown in Figure 5b(3).
  • the principle is the same as updating the first matrix P2 based on unicast ACK1, which will not be described again here.
  • the sending end receives 5 unicast ACK3 corresponding to STA3 in Figure 3b and 5 unicast ACK4 corresponding to STA4. Since ACK3, ACK4 and ACK2 here are the same, the sending end does not need to base on the 5 unicast ACK3 , 5 unicast ACK4s continue to update the first matrix P2 shown in Figure 5b(3).
  • the sending end receives 5 unicast ACK5s from STA5 (as shown in Figure 4b, here "01001"), and the sending end can continue to update the first matrix P2 shown in Figure 5b(3).
  • the transmitting end may update the first matrix from Figure 5b(3) to the first matrix P2 shown in Figure 5b(4).
  • the sending end updates the first matrix P based on the received ACK of the same STA
  • the ACK based on each update can be at least one single ACK of any STA.
  • the first matrix P is updated once with all (here 5) unicast ACKs of the same STA as in the above example.
  • S105 The sending end encodes the first data packet according to the updated first matrix and generates a second data packet.
  • S105 every time the sending end receives an ACK from an STA to update the first matrix, that is, every time S103 is executed, S105 needs to be executed.
  • the sending end performs the first pair of ACKi based on STAi
  • the matrix P1 is updated, so that after the first matrix P1 is updated, the sending end can send each original data block (such as the lost first data) corresponding to the y-th column including the element "1" in the updated first matrix P1 packet) is performed bitwise XOR to obtain the encoded data packet (such as the above-mentioned second data packet) ⁇ y.
  • y 1,2,3....m.
  • the sender receives ACK3 and ACK4, it does not need to update the first matrix P1, so it does not need to update the encoded data packet ⁇ y;
  • the above "+" represents XOR operation.
  • the principle of this process is similar to the corresponding process of the sending end sending 5 original data blocks in a multicast or broadcast manner, and will not be described in detail here.
  • the first matrix P2 does not need to be updated, so the encoded data packet ⁇ y does not need to be updated;
  • the sending end receives ACK5, so that the first matrix P2 is updated from Figure 5b(2) to Figure 5b
  • the above "+" represents XOR operation.
  • the sending end updates the first matrix P in the above embodiments
  • the first to fifth rows in the first matrix represent the data blocks a0 to a4 respectively as an example for explanation.
  • the sending end can also use the 1st to 5th columns in the first matrix to represent the data block a0 to the data block a4 respectively, and then update based on an ACK each time.
  • the first matrix When the first matrix is the first matrix, it can be traversed in "column” units to update the elements in each column in the first matrix P; similarly, when the sender encodes the lost data block to obtain the encoded data block , then the original data block corresponding to the element "1" position in each row of the last updated first matrix P can be encoded to obtain at least one encoded data block.
  • the specific implementation method will not be described here. The principle is similar to the introduction above.
  • the sending end may detect whether the received first feedback information satisfies the preset condition.
  • the process goes to S103.
  • the sending end detects that the receiving window of the first feedback information for the plurality of original data packets in S101 (for example, the receiving window of the ACK of the above-mentioned 5 original data blocks) has not ended, and, At the above n receiving ends (for example Among the above STA1 to STA5), there is also the first feedback information of at least one receiving end (such as STA) that the sending end has not received (here is the ACK for the 5 original data packets in S101), then the sending end can determine that it has If the received first feedback information does not meet the preset condition, the process goes to S103 to continue executing S103 and S105 on the newly received first feedback information.
  • the receiving window of the first feedback information for the plurality of original data packets in S101 for example, the receiving window of the ACK of the above-mentioned 5 original data blocks
  • the sending end can determine that it has If the received first feedback information does not meet the preset condition, the process goes to S103 to continue executing S103 and S105 on the newly
  • the sending end can perform S103 when the receiving window of the first feedback information has not ended and the sending end has not received the first feedback information of the plurality of original data packets from n receiving ends (all receiving ends). In this way, even if the receiving window of the first feedback information ends when the sending end performs S103 or S105 again, the first feedback information received by the sending end this time is still valid and can be used to compensate for the lost first feedback information.
  • the data packet is encoded to generate a second data packet.
  • the receiving window in which the sending end detects the first feedback information (such as the receiving window of the ACKs of the above-mentioned five original data blocks) has ended, or the sending end has received the above-mentioned n receiving ends ( For example, for the n first feedback information (here, 5 ACKs for the 5 original data packets in S101) of the above-mentioned STA1 to STA5), the sending end can determine that the received first feedback information satisfies the preset conditions, so that Trigger S107.
  • the n first feedback information here, 5 ACKs for the 5 original data packets in S101
  • the sending end can trigger the execution of S103 and S105 on the received ACK every time it receives an ACK from a STA, so that in the first matrix Update the information used to represent the STA's lost data blocks, and encode the lost data blocks.
  • S103 and S105 will no longer be executed, and go to Execute S107 so that the sending end can send the encoded second data packet and the matrix information of the updated first matrix to each STA, so as to facilitate the receiving end to detect the lost original data block (for example, each receiving end has not The first packet received correctly) is repaired.
  • this application does not limit the order in which each receiving end performs S201, so that the sending end can receive the first feedback information multiple times before S107, then the time when each receiving end triggers S201 can be after S101 and S107 any time before. This causes the sending end to trigger the execution of S103 and S105 every time it receives the first feedback information from at least one receiving end after executing S101.
  • the sending end detects that the received first feedback information satisfies the preset conditions, for example, the receiving window of the first feedback information has ended, or the receiving window of the first feedback information has not ended, but the sending end is in
  • the first feedback information from all (here n) receiving ends in the communication loop of the shared medium has been received, thus triggering the execution of S107.
  • the sending end sends the second data packet and the updated matrix information in the first matrix to n receiving ends.
  • the sending end can use broadcast, multicast or unicast to send the second data packet and The updated matrix information in the first matrix is sent to each of the n receiving ends.
  • the way in which the second data packet and the corresponding matrix information are sent to the receiving end in S107 can also be unicast. Simply because it is a shared medium communication, n The receiving end can receive the second data packet and the updated matrix information in the first matrix.
  • the sending end can convert ⁇ 1 (specifically a1+a0+a3) and ⁇ 2 (specifically a2+a4) shown in Figure 5a(4) )) as the encoded data block (an example of the second data packet), and the matrix information of the column including the element "1" in the first matrix P1 shown in Figure 5a(4) (here the corresponding one shown in Figure 6a
  • the 1st column of matrix P1 corresponding to ⁇ 1 and the 2nd column of matrix P1 corresponding to ⁇ 2) are sent to STA1 to STA5 through multicast or broadcast transmission.
  • the elements in the first to fifth rows in the first and second columns of the matrix P1 in Figure 6a correspond to the data block a0 to the data block a4 respectively.
  • the sender In order to ensure the reliability of data packet transmission, according to the block loss assumption in Figure 3a, in the existing technology, the sender needs to retransmit all data blocks that are lost or not received correctly from STA1 to STA5. Here, retransmission is required ⁇ a0 ,a1,a2,...,a4 ⁇ 5 data blocks in total. According to the block loss assumption in Figure 3a, according to the method of this application, the sender only needs to retransmit ⁇ 1, ⁇ 2 shown in Figure 5a(4), a total of 2 data blocks and the corresponding matrix information (the amount of data is compared to one The data chunks are much smaller).
  • the sending end can use ⁇ 1 (specifically a1+a0) and ⁇ 2 (specifically a2+a4) shown in Figure 5b(4)) As an encoded data block (an example of the second data packet), and the first matrix shown in Figure 5b(4)
  • the matrix information of the column in P2 including the element "1" (shown in Figure 6b here is the first column of the matrix P2 corresponding to ⁇ 1 and the second column of the matrix P2 corresponding to ⁇ 2), is sent through unicast transmission. to STA1 to STA5.
  • it can also be sent to STA1 to STA5 through multicast or broadcast.
  • the transmission method of the coded data block retransmitted in this application is not limited.
  • the elements in the first to fifth rows in the first and second columns of the matrix P2 in Figure 6b correspond to the data block a0 to the data block a4 respectively.
  • the sender In order to ensure the reliability of data packet transmission, according to the block loss assumption in Figure 3b, in the existing technology, the sender needs to retransmit all data blocks that are lost or not received correctly from STA1 to STA5. Here, retransmission is required ⁇ a0 ,a1,a2,a4 ⁇ total 4 data blocks. According to the block loss assumption in Figure 3b, according to the method of this application, the sender only needs to retransmit ⁇ 1, ⁇ 2 shown in Figure 5b(4), a total of 2 data blocks and the corresponding matrix information (the amount of data is compared to one The data chunks are much smaller).
  • the sending end can determine and send a series of lost data blocks across STAs (the complete set of first data packets corresponding to STA1 to STA5) based on the updated first matrix, and calculate the lost data blocks in the finite field. Encoding is performed to obtain an encoded data block (such as the above-mentioned second data packet) to achieve retransmission of the data block lost by the STA.
  • the transmitting end can also send each column including the element "1" in the last updated first matrix P together with the encoded data block to the five STAs to facilitate each receiving end. Each column is used to decode the encoded data block to obtain the original data block lost by each STA. Then using the encoding scheme of the present application can significantly reduce the information amount of retransmitted data in physical medium sharing communication.
  • the sender when encoding the data blocks lost across STAs to obtain the encoded data blocks, the sender performs an XOR operation on the lost data blocks that need to be retransmitted to obtain the encoded data blocks.
  • Data block this method is a linear operation, which can reduce the complexity of encoding and decoding, reduce the occupation of computing resources, and can be used to improve the retransmission efficiency of lost data blocks.
  • the method of encoding data blocks lost across STAs in this application is not limited to the XOR operation exemplified above, and can also be other existing arbitrary operation encoding methods, such as non-linear coding methods.
  • the sending end of this application encodes and retransmits the lost data blocks that need to be retransmitted, which can significantly improve the throughput and data transmission efficiency of physical medium shared communication.
  • the receiving end can not only perform the following S204 to decode the respective lost data blocks, but also perform S202 to decode the corresponding matrix information of the first matrix P according to the received one, and after receiving the original
  • the first feedback information (such as ACK1 to ACK5) generated during the data packet operation (such as bitwise AND operation) is performed to perform a codable logical judgment on the received second data packet to determine the received second data packet. Whether it can be used to decode and recover the first data packet lost at the receiving end.
  • the receiving end When the receiving end determines through logical judgment that the second data packet can be used to decode and recover the first data packet lost by the receiving end, it can trigger the sending of the second feedback information described in S203 in Figure 2b to the sending end, so as to Feedback to the sending end the correct reception of the retransmitted first data packet (or the second data packet and corresponding matrix information of the first matrix) (for example, retransmission of ACK information).
  • This can avoid the duration of the decoding operation in S204 causing the receiving end to miss the window period for sending feedback information on the second data packet to the sending end.
  • S202 The receiving end determines that the second data packet can be used to obtain the corresponding first data packet according to the matrix information and the corresponding first feedback information, and then executes S203.
  • each receiving end performs S202
  • the principles are similar.
  • STA2 takes STA2 as an example for explanation.
  • the operations of other STAs refer to the operating principles of STA2, which will not be described again here.
  • STA2 can convert the matrix P1
  • the first column is ANDed with the ACK2 sent by STA2 in S201, and the operation result 1:10000 can be obtained.
  • the 5 bits from high to low of the operation result 1 correspond to data block a0 to data block a4 respectively, then STA2 According to the operation result 1, it can be determined that the received ⁇ 1 corresponding to the first column of the matrix P1 as shown in Figure 6a can be used to decode the data block a0.
  • STA2 can also perform a bitwise AND operation on the second column of matrix P1 and the ACK2 sent by STA2 in S201, and the operation result 2: 00001 can be obtained, where the operation result 2 is from The five bits from high to low respectively correspond to data block a0 to data block a4. Then STA2 can determine according to the operation result 2 that the received ⁇ 2 corresponding to the second column of matrix P1 as shown in Figure 6a can be used to decode the data. Block a4.
  • the data blocks lost by STA2 are data block a0 and data block a4, then STA2 can determine that the received ⁇ 1 and ⁇ 2 can be used to decode the lost data blocks.
  • STA2 can convert matrix P2
  • the 1st column is ANDed bitwise with the ACK2 sent by STA2 in S201, and the operation result 1:01000 can be obtained.
  • the 5 bits from high to low of the operation result 1 correspond to data block a0 to data block a4 respectively, then STA2 can determine according to the operation result 1 that the received ⁇ 1 corresponding to the first column of the matrix P2 as shown in Figure 6b can be used to decode the data block a1.
  • STA2 can also perform a bitwise AND operation on the second column of matrix P2 and the ACK2 sent by STA2 in S201, and the operation result 2: 00000 can be obtained, where the operation result 2 is from The five bits from high to low respectively correspond to data block a0 to data block a4. Then STA2 can determine according to the operation result 2 that the received ⁇ 2 corresponding to the second column of matrix P2 as shown in Figure 6b does not need to be used for STA2 Missing data blocks are decoded.
  • the only data block lost by STA2 is data block a1, then STA2 can determine that the received ⁇ 1 and ⁇ 2 can be used to decode the lost data block.
  • the receiving end sends second feedback information indicating that the first data packet has been correctly received to the sending end.
  • each receiving end can Send respective second feedback information to the sending end.
  • the implementation principle of the second feedback information here is similar to the implementation principle of the above-mentioned first feedback information.
  • the second feedback information may be an acknowledgment character (ACK, Acknowledge character).
  • ACK acknowledgment character
  • Acknowledge character the form of the second feedback information may be in other forms, which is not limited by this application.
  • STA1 to STA5 all execute the above S202 to make logical judgments. , and determine that the respective received encoded data blocks can be used to decode and repair the respective lost original data blocks, so that respective retransmission ACKs can be sent to the sending end within the respective retransmission ACK sending windows.
  • STA1 may send a retransmission ACK1 "00" to indicate that data block a1 and data block a2 have been received correctly.
  • STA2 to STA4 can send their own retransmission ACKs in the same way.
  • the retransmission ACK2 to retransmission ACK4 are also "00", and the retransmission ACK5 of STA5 is "0".
  • STA1 to STA5 all perform the above S202 to make logical judgments, and It is determined that the respective received encoded data blocks can be used to decode and repair the respective lost original data blocks, so that respective retransmission ACKs can be sent to the sending end within the respective retransmission ACK sending windows.
  • the implementation principle of the retransmission ACK sent by STA1 to STA6 may be the same as or similar to the principle of the above multicast or broadcast embodiment.
  • the retransmission ACKs sent by STA1 to STA6 may include information indicating whether the original data blocks required by the corresponding STA have been received correctly, without including the original data blocks indicating that the STA has lost but does not need them. Whether the information was received correctly.
  • STA1 only cares about data block a0, then STA1 can send a retransmission ACK1, the content of which is "0" to indicate that data block a0 has been received correctly.
  • STA2 can send a retransmission ACK2, whose content is "0" to indicate that data block a1 has been received correctly.
  • STA5 can send a retransmission ACK5 whose content is "0" to indicate that data block a4 has been received correctly.
  • STA3 and STA4 have respectively sent 5 original data blocks (data block a0 to data block a4) in unicast mode at the transmitting end, they have received the data block a2 and data that they are concerned about (or need).
  • Block a3 then after the sending end sends the second data packet and corresponding matrix information to STA1 to STA5, STA3 and STA4 do not need to reply to the sending end with a retransmission ACK, as shown in Figure 6b, and STA3 and STA4 do not need to receive
  • the second data packets received (such as ⁇ 1 and ⁇ 2) are decoded.
  • S204 The receiving end decodes the second data packet according to the matrix information and the correctly received third data packet, and obtains the corresponding first data packet.
  • the receiving end 1 to the receiving end n can decode the second data packet according to the matrix information and the correctly received third data packet, and obtain the respective lost and required first data packets.
  • the third data packet here is an original data packet that each receiving end has correctly received among the multiple original data packets after the sending end performs S101 to send multiple original data packets.
  • the three third data packets that STA2 has correctly received include data block a1, data block a2 and data block a3.
  • the four third data packets that STA2 has correctly received include data block a0, data block a2, data block a3 and data block a4.
  • STA2 can decode the encoding results ( ⁇ 1, ⁇ 2) based on the received data blocks (data block a1, data block a2, data block a3) and the 1st and 2nd columns of the first matrix P (such as finite field operations), thereby generating the missing data blocks (here, data block a0, data block a4).
  • STA2 may determine that the ⁇ 1 received by STA2 is the encoding result of data block a0, data block a1 and data block a3 based on the position of the element "1" included in the first column of the received first matrix P1 ( Here is the result of the XOR operation); similarly, STA2 can determine that the received ⁇ 2 is the encoding result of data block a2 and data block a4 (here is the result of the XOR operation).
  • the data blocks lost by STA2 are data block a0 and data block a4. Therefore, STA2 can use ⁇ 1 including data block a0, and data block a1 that STA2 has received among the three data blocks corresponding to ⁇ 1. and data block a3 to decode the lost data block a0.
  • STA2 can decode the data block a0 through Equation 1; similarly, it can decode the data block a4 through Equation 2, thereby achieving parallel decoding of multiple data blocks and improving decoding efficiency.
  • Equation 1 and Equation 2 represent the XOR operation.
  • STA1 to STA5 can decode and obtain their respective lost original data blocks according to the principle of the decoding method taking STA2 as an example.
  • STA1 can decode and obtain data blocks a1 and Data block a2;
  • STA2 can decode to obtain data block a0 and data block a4;
  • STA3 can decode to obtain data block a0 and data block a4;
  • STA4 can decode to obtain data block a0 and data block a4;
  • STA5 can decode to obtain data block a3.
  • the principle in which each receiving end decodes and obtains the lost original data blocks is the same as the multicast/broadcast method.
  • STA2 may be based on some or all of the received data blocks (data block a0, data block a2, data block a3, The data block a4) and the 1st and 2nd columns of the first matrix P are used to decode the encoding results ( ⁇ 1, ⁇ 2) (such as finite field operations), thereby generating the missing data block (here, the data block a1).
  • STA2 may determine that the ⁇ 1 received by STA2 is the encoding result of data block a0 and data block a1 based on the position of the element "1" included in the first column of the received first matrix P2 (here is XOR The result of the operation); similarly, STA2 can determine that the received ⁇ 2 is the encoding result of the data block a2 and the data block a4 (here, it is the result of the XOR operation).
  • the data block lost by STA2 is data block a1, and it only cares about (that is, only needs to obtain) data block a1. Therefore, STA2 can use the received two data blocks corresponding to ⁇ 1 including data block a1. Data block a0, to decode the lost data block a1.
  • STA2 can decode the data block a1 through Equation 3.
  • Equation 3 represents the XOR operation.
  • each STA only needs one data block, so the data blocks lost by the STA (such as STA1 and STA5) include not only the data blocks they are concerned about, but also other data blocks that are not When the data blocks are concerned, in a possible embodiment, each STA can decode all the lost data blocks, and then retain the decoded data blocks of concern, and decode the decoded data blocks that are not concerned. Data blocks are discarded. Or, in another possible implementation, each STA can only use the encoded data blocks that can decode the lost data blocks that it is concerned about to perform decoding and repair of the lost data blocks, without the need to perform decoding and repair of the lost data that it does not care about. Decode in blocks to reduce decoding overhead.
  • STA1 can use Equation 4 and Equation 5 to decode data block a0 and data block a2 respectively, And discard the data block a2; or STA1 can only use Equation 4 to decode the data block a0.
  • STA1 to STA5 can decode only the original data blocks that they are concerned about and have lost according to the above example.
  • STA1 can decode to obtain data block a0;
  • STA2 can decode to obtain data block a1;
  • STA3 and STA4 do not need to decode since they have not lost the data blocks they are concerned about;
  • STA5 can decode to obtain data block a4.
  • the sending end can also transmit the y-th column of the last updated first matrix P to STAi (here are all receiving ends), so that STA i A bitwise AND operation can be performed based on the y-th column of the first matrix P and the ACKi information to make a decoding logic judgment, so that when it is determined through the decoding logic judgment that the encoded data block can be used to decode the original data block lost by STAi, STAi does not need to wait for the
  • the decoding result of the encoded data block can then send a reception response to the sending end to indicate that the retransmitted original data block has been received.
  • the decoding process can significantly reduce the transmission delay, improve the data transmission efficiency of the shared physical medium, and thereby improve the real-time performance of communication. and reliability.
  • FIG. 8a is an exemplary timing diagram of the sending end and the receiving end (herein, STA2 is taken as an example).
  • the sending end sends 5 original data blocks (data block a0 to data block a4) to STA1 to STA5 in a multicast manner within the data sending window 1.
  • STA2 received the data block a1 to a3 sent by the sending end within the data receiving window 1, but because the bandwidth of the transmission system of the shared medium is small, the data block was not received. a0 and data block a4, causing the two data blocks to be lost. Then, STA2 sends ACK2 (specifically "10001") to the sending end within ACK sending window 1 to indicate that STA2 has lost data block a0 and data block a4.
  • ACK2 specifically "10001"
  • the sending end may receive response data for the above-mentioned five original data blocks sent by STA1 to STA5 respectively within the ACK receiving window 1, here respectively ACK1 to ACK5.
  • the sending end may update the first matrix and encode the determined lost data block according to the updated first matrix, thereby After the ACK reception window 1 ends, ⁇ 1 and ⁇ 2 and matrix P1 shown in Figure 5a(4) are obtained.
  • the sending end can retransmit the data blocks lost by each STA in the data transmission window 2, which may specifically include ⁇ 1 and ⁇ 2 as shown in Figure 5a(4) and the corresponding matrix information of matrix P1, in a multicast manner to All receivers (here STA1 to STA5).
  • STA2 may receive ⁇ 1 and ⁇ 2 sent by the transmitting end and the corresponding matrix information of matrix P1 within the data receiving window 2.
  • STA2 can perform the decoding logic judgment (such as the decoding logic judgment process shown in Figure 7a) and the decoding process in parallel, so that after the decoding logic judgment determines that ⁇ 1 and ⁇ 2 can be used to decode the lost data block a0 and the data block
  • retransmission ACK2 (shown here as ACK2') is sent within the ACK sending window 2 as shown in Figure 8a, where ACK2' is "00" to indicate that STA2 has received the retransmitted data block a0 and data block a4.
  • the decoding process is: STA2 can use the corresponding matrix information of matrix P1 and the correctly received original data block (here, data block a1 to data block a3) to decode ⁇ 1 and ⁇ 2 to obtain Lost data block a0 and data block a4.
  • the decoding time for STA2 to decode the encoded data blocks ⁇ 1 and ⁇ 2 is longer than the time for decoding logic judgment.
  • the corresponding time length of the "decoding delay" shown in Figure 8a is Decoding duration.
  • the ACK sending window 2 of the retransmission ACK2 is shorter.
  • the judgment process is to process the process of sending the retransmission ACK2 in parallel with the process of decoding the encoded data block to avoid the problem of being unable to send the retransmission ACK2 due to missing the sending window of the retransmission ACK2.
  • the decoding process can significantly reduce the transmission delay and improve the data transmission efficiency of the shared physical medium, thus improving the real-time communication performance and reliability.
  • the sending end can receive the respective retransmission ACKi' sent by STA1 to STA5 within the ACK receiving window 2 (the corresponding ACK2' to ACK4' of STA2 to STA4 are shown here) to determine whether each STA Whether the retransmitted missing data blocks have been received correctly.
  • FIG. 8b is an exemplary timing diagram of the transmitting end and the receiving end (herein, STA2 is taken as an example).
  • the sender sends the data block a0 in the data sending window 1 in unicast mode with STA1 as the destination address. Due to the shared medium, STA2 to STA5 can all support receiving the data block a0. Then if As shown in Figure 4b, STA1 to STA5 can respectively send ACK1 to ACK5 for data block a0. As shown in Figure 8b, the sending end can receive ACK1 to ACK5 for data block a0 within the unicast ACK receiving window 1;
  • the sender can send the data block a1 in unicast mode with STA2 as the destination address in data sending window 2.
  • STA1 to STA5 can support receiving the data block a1, so as shown in the figure
  • STA1 to STA5 can respectively send ACK1 to ACK5 for data block a1.
  • the sending end can receive ACK1 to ACK5 for data block a1 within the unicast ACK receiving window 2;
  • the process of the sending end sending the data block a2 to the data block a4 in unicast mode is similar to the process of taking the data block a0 and the data block a1 as an example here, and will not be described again here.
  • the sending end may update the first matrix once and based on the updated first matrix,
  • the determined lost data blocks are encoded, so that after each ACK reception window for unicast data at the sender ends, ⁇ 1 and ⁇ 2 and matrix P2 shown in Figure 5b(4) are obtained.
  • the sending end can retransmit the data blocks lost by each STA in the data transmission window 3, which may specifically include ⁇ 1 and ⁇ 2 as shown in Figure 5b(4) and the corresponding matrix information of matrix P2, in a multicast manner to All receivers (here STA1 to STA5).
  • STA2 may receive ⁇ 1 and ⁇ 2 sent by the transmitting end and the corresponding matrix information of matrix P2 within the data receiving window 2.
  • STA2 can perform the decoding logic judgment (such as the decoding logic judgment process shown in Figure 7b) and the decoding process in parallel, so that when it is determined through the decoding logic judgment that ⁇ 1 can be used to decode the lost data block a1, as shown in Figure Retransmission ACK2 (shown here as ACK2') is sent within the ACK sending window 2 shown in 8b, where ACK2' is "0" to indicate that STA2 has received the retransmitted data block a1.
  • the decoding logic judgment such as the decoding logic judgment process shown in Figure 7b
  • ACK2' is sent within the ACK sending window 2 shown in 8b, where ACK2' is "0" to indicate that STA2 has received the retransmitted data block a1.
  • the decoding process is: STA2 can use the corresponding matrix information of matrix P2 and the correctly received original data block (here, data block a0) to decode ⁇ 1 to obtain the lost data block a1.
  • the decoding time for STA2 to decode the encoded data block ⁇ 1 is longer than the time for decoding logic judgment.
  • the time corresponding to the "decoding delay" shown in Figure 8b is the decoding time.
  • the ACK sending window for retransmission ACK2 is shorter.
  • the embodiment of the present application can be used to process the process of sending retransmission ACK2 in parallel with the process of decoding the encoded data block to avoid the problem of being unable to send retransmission ACK2 due to missing the sending window of retransmission ACK2. .
  • the decoding process can significantly reduce the transmission delay and improve the data transmission efficiency of the shared physical medium, thus improving the real-time and reliability of communication.
  • the sending end can receive the respective retransmission ACKi' sent by STA1 to STA5 within the ACK receiving window (the corresponding ACK1' to ACK5' of STA1 to STA5 are shown here) to determine whether each STA The retransmitted missing data block was received correctly.
  • the above encoding method and decoding method in the embodiment of the present application can improve the throughput and data transmission efficiency of physical medium sharing communication, so as to Meet the requirements of terminal IoT for real-time communication and reliability.
  • the present application provides an encoding device, applied to a first network device that communicates with at least one second network device through a shared medium, and the encoding device is used for:
  • the first data block is encoded to generate at least one second data block; wherein the first data block is the third data that is not correctly received by the at least one second network device in the at least two third data blocks. block; wherein the at least two third data blocks are data sent by the first network device to the at least one second network device; sending the at least one second data to the at least one second network device piece.
  • the encoding device is specifically configured to: encode the first data block according to first encoding information to generate at least one second data block; wherein the first encoding information is used to Indicate whether each second network device in the at least one second network device correctly receives each third data block.
  • the first encoding information includes a first matrix
  • the encoding device is further configured to: obtain the first matrix based on the first feedback information from at least one of the second network devices, wherein , the number of rows and/or columns of the first matrix is m, where m is the number of the third data blocks, m ⁇ 2; wherein the first feedback information is the corresponding second network device's Feedback information of the at least two third data blocks, the first feedback information is used to indicate that the corresponding second network device has not correctly received the third data block; the elements in the first matrix are used to indicate that the Whether the at least one second network device correctly receives each of the third data blocks.
  • the encoding device is specifically configured to: each time a piece of first feedback information from the second network device is received, based on the piece of first feedback information, determine whether to The elements in a matrix are updated to obtain the updated first matrix; each time the first matrix is updated, the first data block is encoded according to the updated first matrix to generate the the at least one second data block; detecting that the received first feedback information satisfies the preset condition, then sending the at least one second data block generated by the latest encoding to the at least one second network device.
  • the encoding device is specifically configured to: encode the first data block in a finite domain and generate at least one second data block.
  • the encoding device is specifically configured to perform a bitwise XOR operation on different first data blocks to generate at least one second data block.
  • the encoding device is further configured to: send second encoding information corresponding to each second data block to the at least one second network device; wherein any one of the second The second encoding information corresponding to the data block is used to indicate the first data block based on which the second data block is generated by encoding.
  • the second encoded information is at least one target row or at least one target column of the first matrix, wherein the target row or the target column is in the first matrix A row or column including a target element used to indicate that at least one of the second network devices has not correctly received the third data block.
  • this application provides a decoding device applied to a second network device, wherein the second network device communicates with the first network device through a shared medium, and the decoding device is used to: Receive at least one second data block from the first network device; decode the at least one second data block according to the fourth data block to obtain the first data block; wherein the fourth data block is The first data block is a third data block that the second network device has correctly received among at least two third data blocks; the first data block is a third data block that the second network device has not correctly received among the at least two third data blocks. to the third data block; wherein the at least two third data blocks are data sent by the first network device to at least one second network device through the shared medium.
  • the decoding device is specifically configured to decode the at least one second data block in a finite domain according to the fourth data block to obtain the first data block.
  • the decoding device is further configured to: receive second encoding information corresponding to each second data block from the first network device; wherein any one of the second data blocks The second encoding information corresponding to the data block is used to indicate the first data block and the fourth data block based on which the second data block is generated by encoding.
  • the decoding device is specifically configured to: according to the second encoding information and the fourth data block, Decode the at least one second data block to obtain the first data block.
  • the decoding device is further configured to: based on the first feedback information and the second encoding information, detect that the at least one second data block can be used for decoding to generate the first data block, sending second feedback information to the first network device; wherein the first feedback information is the feedback information of the second network device to the at least two third data blocks, and the first The feedback information is used to indicate that the second network device has not correctly received the third data block.
  • the second feedback information is feedback information from the second network device to the at least one second data block.
  • the second feedback information is used to indicate that the second network device has correctly received the first data block.
  • the decoding device is specifically configured to: perform a bitwise AND operation on the first feedback information and the second encoded information to obtain an operation result; based on the operation result, when the detected
  • the at least one second data block can be used to send second feedback information to the first network device when decoding and generating the first data block.
  • the decoding device is specifically configured to perform parallel decoding on the at least one second data block according to the fourth data block to obtain at least one first data block.
  • the second encoded information is at least one target row or at least one target column of the first matrix, wherein the target row or the target column includes a target in the first matrix.
  • the row or column of elements, the target element is used to indicate that at least one of the second network devices has not correctly received the third data block;
  • the first matrix is the first network device based on the data from at least one of the Corresponding to the first feedback information of the second network device, the obtained matrix, wherein the number of rows and/or columns of the first matrix is m, where m is the number of the third data blocks, m ⁇ 2; wherein the elements in the first matrix are used to indicate whether the at least one second network device correctly receives each third data block.
  • Figure 9 is a schematic structural diagram of a device provided by an embodiment of the present application.
  • the device 500 may include: a processor 501, a transceiver 505, and optionally a memory 502.
  • the device 500 may be an encoding device or a decoding device.
  • the transceiver 505 may be called a transceiver unit, a transceiver, a transceiver circuit, etc., and is used to implement transceiver functions.
  • the transceiver 505 may include a receiver and a transmitter.
  • the receiver may be called a receiver or a receiving circuit, etc., used to implement the receiving function;
  • the transmitter may be called a transmitter, a transmitting circuit, etc., used to implement the transmitting function.
  • Computer program or software code or instructions 504 may be stored in the memory 502, which may also be referred to as firmware.
  • the processor 501 can control the MAC layer and the PHY layer by running the computer program or software code or instructions 503 therein, or by calling the computer program or software code or instructions 504 stored in the memory 502 to implement various embodiments of the present application.
  • the processor 501 may be a central processing unit (CPU), and the memory 502 may be a read-only memory (ROM) or a random access memory (RAM).
  • the processor 501 and transceiver 505 described in this application can be implemented in integrated circuits (ICs), analog ICs, radio frequency integrated circuits RFICs, mixed signal ICs, application specific integrated circuits (ASICs), printed circuits on printed circuit board (PCB), electronic equipment, etc.
  • ICs integrated circuits
  • analog ICs analog ICs
  • radio frequency integrated circuits RFICs radio frequency integrated circuits
  • mixed signal ICs mixed signal ICs
  • ASICs application specific integrated circuits
  • PCB printed circuits on printed circuit board
  • electronic equipment etc.
  • the above-mentioned device 500 may also include an antenna 506.
  • Each module included in the device 500 is only an example and is not limited by this application.
  • the device may be a stand-alone device or may be part of a larger device.
  • the implementation form of the device may be:
  • An independent integrated circuit IC, or chip, or chip system or subsystem (2) A collection of one or more ICs.
  • the IC collection may also include storage for storing data and instructions. Components; (3) Modules that can be embedded in other equipment; (4) Vehicle-mounted equipment, etc.; (5) Others, etc.
  • the encoding device or the decoding device is implemented in the form of a chip or a chip system
  • the chip shown in Figure 10 includes a processor 601 and an interface 602.
  • the number of processors 601 can be one or more,
  • the number of interfaces 602 may be multiple.
  • the chip or chip system may include memory 603 .
  • embodiments of the present application also provide a computer-readable storage medium.
  • the computer-readable storage medium stores a computer program.
  • the computer program includes at least one section of code.
  • the at least one section of code can be executed by a computer to control the computer. used to implement the above method embodiments.
  • embodiments of the present application also provide a computer program, which when executed, is used to implement the above method embodiments.
  • the program may be stored in whole or in part on a storage medium packaged with the processor, or in part or in whole on a memory that is not packaged with the processor.
  • embodiments of the present application also provide a chip including a processor.
  • the processor may implement the above method embodiments.
  • the steps of the methods or algorithms described in connection with the disclosure of the embodiments of this application can be implemented in hardware or by a processor executing software instructions.
  • Software instructions can be composed of corresponding software modules.
  • Software modules can be stored in random access memory (Random Access Memory, RAM), flash memory, read only memory (Read Only Memory, ROM), erasable programmable read only memory ( Erasable Programmable ROM (EPROM), electrically erasable programmable read-only memory (Electrically EPROM, EEPROM), register, hard disk, removable hard disk, compact disc (CD-ROM) or any other form of storage media well known in the art.
  • An exemplary storage medium is coupled to the processor such that the processor can read information from the storage medium and write information to the storage medium.
  • the storage medium can also be an integral part of the processor.
  • the processor and storage media may be located in an ASIC.
  • Computer-readable media includes computer storage media and communication media including any medium that facilitates transfer of a computer program from one place to another.
  • Storage media can be any available media that can be accessed by a general purpose or special purpose computer.

Abstract

本申请实施例提供了一种编码、解码方法及其装置,涉及通信领域,该方法可对接收端丢失的数据块进行压缩编码,以使编码后的数据块的数据量小于编码前的数据块的数据量,从而提升物理介质共享通信的吞吐量和数据传输效率,以满足终端物联对于通信实时性、可靠性的要求。

Description

编码、解码方法及其装置
本申请要求于2022年08月04日提交中国国家知识产权局、申请号为202210935568.7、申请名称为“编码、解码方法及其装置”的中国专利申请的优先权,其全部内容通过引用结合在本申请中。
技术领域
本申请实施例涉及通信技术领域,尤其涉及一种编码、解码方法及其装置。
背景技术
目前,物理介质共享技术的通信回路中接入的终端(Station,STA)数量较多,而物理介质共享技术的应用层带宽较窄,例如仅有几十Kbps,使得物理介质共享技术中的数据传输效率较低,且难以满足终端物联对于通信实时性、可靠性的要求。
发明内容
为了解决上述技术问题,本申请提供一种编码、解码方法及其装置。在该方法中,重传的编码后数据块的数量小于至少一个接收端丢失的数据块的数量,可提升物理介质共享通信的吞吐量和数据传输效率,以满足终端物联对于通信实时性、可靠性的要求。
在一种可能的实施方式中,本申请提供一种编码方法,应用于第一网络设备,所述第一网络设备与至少一个第二网络设备通过共享介质进行通信。该方法包括:对第一数据块进行编码,生成至少一个第二数据块;其中,所述第二数据块的数量小于所述第一数据块的数量;其中,所述第一数据块为在至少两个第三数据块中未被所述至少一个第二网络设备正确接收到的第三数据块;其中,所述至少两个第三数据块为所述第一网络设备向所述至少一个第二网络设备发送的数据;向所述至少一个第二网络设备发送所述至少一个第二数据块。
示例性的,编码后的第二数据块的总数据量,小于编码前的第一数据块的总数据量。
示例性的,未被至少一个第二网络设备正确接收到的数据块可包括丢失的数据块和/或第二网络设备接收到的是损坏的数据块而非正确的数据块。
示例性的,第一网络设备又称发送端,第二网络设备又称接收端。
共享介质可包括但不限于:PLC、无线通信技术、单对线以太网等。
示例性的,对第一数据块的编码方式可以是压缩编码,例如接收端丢失的两个数据块均为16位,在现有技术中,需要对两个数据块重传,则重传数据量为16*2=32位。而本实施方式可对两个16位的数据块进行压缩编码,编码后的数据块还是16位,该编码过程可以看做是比特位的压缩过程。这样,重传数据量为16位,相比于现有技术中的数据重传量能够大比例缩小。
在共享介质的通信回路中接入的终端(可以是第二网络设备的示例)数量较多,而物理介质共享技术的应用层带宽较窄,信道环境较差,使得丢包情况较为常见。为了提升数据传输的可靠性和传输效率,本申请的发送端可对至少一个接收端丢失的数据块进行编码,使得编码后得到的第二数据块的数量,小于编码前的第一数据块的数量。再将编码后的数据块发送至至少一个接收端,相比于将至少一个接收端丢失的全部数据块进行重传,该方法可降低重传数据块的数据量,以使数据传输量更小,利于提升数据传输效率和物理介质共享通信的吞吐量,易满足终端物联对于通信实时性、可靠性的要求。
在一种可能的实施方式中,所述对第一数据块进行编码,生成至少一个第二数据块,包括:根据第一编码信息对所述第一数据块进行编码,生成至少一个第二数据块;所述第一编码信息包括第一信息和与每个所述第二数据块分别对应的第二信息;其中,所述第一信息用于指示所述第二数据块的数量;所述第二信息用于指示用于编码生成所述第二数据块所基于的第一数据块。
示例性的,发送端在向接收端发送第三数据块后,接收端可向发送端反馈用于指示该第三数据块是否被接收端正确接收的信息(例如ACK)。示例性的,发送端可在接收到来自至少一个接收端的该ACK时,来生成该第一编码信息。
示例性的,与第二数据块对应的第二信息用于指示该第二数据块是基于哪些第一数据块编码而生成的信息。例如丢失的数据块1和丢失的数据块2编码得到一个第二数据块,那么这里的与该第二数据块对应的第二信息可以是数据块1和数据块2各自的块号信息。
示例性的,第一编码信息的实现方式可以是矩阵,或者其他形式的编码数据,本申请对此不做限制。
示例性的,发送端可通过共享介质向至少一个接收端,发送至少两个第三数据块,其中,每个第三数据块还可称为原始数据块。
本实施方式可利用第一编码信息,来对至少一个接收端丢失的原始数据块进行编码,以生成至少一个编码后的数据块(例如第二数据块),其中,第一编码信息可包括用于指示第二数据块的数量的信息,还可包括在编码生成每个第二数据块时所基于的原始数据块的信息。以此方式编码得到的第二数据块的数量可小于第一数据块的数量,从而降低数据重传量。
在一种可能的实施方式中,所述编码方法还包括:基于来自至少一个所述第二网络设备的第一反馈信息,生成所述第一编码信息;其中,所述第一反馈信息为相应第二网络设备对所述至少两个第三数据块的反馈信息,所述第一反馈信息用于指示在所述至少两个第三数据块中,未被所述相应第二网络设备正确接收到的目标数据块;其中,在至少一个所述第一反馈信息所分别对应的所述目标数据块的数量中,取值最大的数量为所述第一信息指示的数量;其中,所述第二信息所指示的第一数据块包括与不同所述第一反馈信息对应的所述目标数据块。
示例性的,这里的第一反馈信息可为接收端对发送端发送的至少两个原始数据块的ACK信息。该ACK信息可指示相应接收端对至少两个原始数据块中的哪个原始数据块没有正确接收到。例如发送端通过共享介质发送a0至a4的5个数据块至两个接收端。其中,接收端1丢失了数据块a2,接收端2丢失了数据块a1和数据块a3。例如在ACK中,未正确接收的原始数据块对应的位置置为1,正确接收的原始数据块对应的位置置为0,则接收端1的ACK1可为00100;接收端2的ACK2可为01010。这里,ACK1所指示的接收端1未正确接收到的目标数据块为数据块a2,ACK2所指示的接收端2未正确接收到的目标数据块包括数据块a1和数据块a3。
那么发送端可结合接收到的ACK1和ACK2来生成第一编码信息。
示例性的,ACK1和ACK2中对应的目标数据块的数量的最大值为ACK2对应的数量“2”(这里ACK2对应两个目标数据块),发送端可将数量“2”作为第一编码信息中第一信息所指示的第二数据块的数量。这样,发送端可结合第一编码信息来生成2个第二数据块。
另一方面,发送端还需要结合ACK1和ACK2来确定接收端丢失的哪些数据块进行编码,来分别生成两个第二数据块。
示例性的,发送端可结合ACK1和ACK2来确定由不同接收端丢失的原始数据块,以将该原始数据块的块号信息,生成为第一编码信息中第二信息所指示的第一数据块。
举例来说,发送端可结合ACK1和ACK2,确定不同接收端丢失的两个数据块,例如分别为数据块a2和数据块a1,将数据块a1和数据块a2各自的块号作为第一编码信息中一个第二数据块对应的第二信息
对于剩余的一个数据块a3,也可以直接将数据块a3的块号作为另一个第二数据块对应的第二信息,以使编码后的两个第二数据块分别为:对数据块a1和数据块a2编码得到的一个第二数据块,以及将数据块a3作为另一个编码后的第二数据块。
在本实施方式中,发送端可结合至少一个接收端对原始数据块的丢包情况和丢包数量,来生成用于编码的第一编码信息,从而利用第一编码信息来对至少一个接收端丢失的原始数据块进行编码。由于在编码时,编码生成的任意一个第二数据块可以是单个接收端丢失的数据块,也可以是至少两个接 收端分别丢失的数据块的编码后的数据块。这样,编码后的数据块能够被至少一个接收端中的每个接收端所解码。
在一种可能的实施方式中,所述第一编码信息包括第一矩阵,所述第一矩阵的行数为m且列数为n,或者,所述行数为n且所述列数为m,其中,m为所述第三数据块的数量,m≥2,n为所述第二数据块的数量,m>n≥1;所述第一矩阵中的m行元素或m列元素分别用于指示各个所述第三数据块是否被所述至少一个第二网络设备正确接收,其中,不同行或不同列的元素对应不同的第三数据块;所述第一矩阵中的n列元素或n行元素用于指示不同所述第三数据块被不同所述第二网络设备是否正确接收的信息。
示例性的,m,n为正整数。
示例性的,m为发送端向至少一个接收端所发送的第三数据块的总数量。n为第一信息所指示的数量,可理解为至少一个接收端中丢包最多的接收端所丢失的数据块的数量。
以第一矩阵的行数为m,列数为n为例进行说明。
例如发送端向至少一个接收端发送了5个原始数据块,分别为a0至a4,则第一矩阵可包括5行,每行表示一个原始数据块被至少一个接收端是否正确接收的信息(例如元素“1”表示未被正确接收,元素“0”表示被正确接收),不同行对应不同的原始数据块。
继续以上述ACK1和ACK2举例,例如该第一矩阵可包括两列,列1可对应上述5个原始数据块,那么列1内某行的元素为“1”可表示该行对应的原始数据块未被一个接收端正确接收,列1内另一个行的元素为“1”可表示该行对应的原始数据块未被另一个接收端正确接收。示例性的,第一矩阵中的一列可为与一个第二数据块对应的一个第二信息的示例。那么第一矩阵中的每一列元素可用于表示不同接收端对不同的原始数据块是否正确接收的信息,并且每一列对应编码后生成的一个第二数据块。
示例性的,该第一矩阵的大小与共享介质中的第二网络设备的数量无关,而与发送端发送的原始数据块的数量m相同,可选地与共享介质中至少一个第二网络设备对原始数据块的丢包情况相关。
本实施方式可对至少一个第二网络设备对原始数据块的丢包情况,以及对丢失的原始数据块的进行编码时所基于的各个原始数据块的信息,以矩阵的形式来存储。那么在编码时,可结合矩阵来对丢失的数据块进行编码,利于提升编码效率;并且,该第一矩阵的大小与第二网络设备的数量无关,而共享介质的通信回路中第二网络设备的数量较多,从而可以在较多STA的场景下,实现数据的可靠性传输。
在一种可能的实施方式中,所述第一反馈信息,用于对已生成的所述第一编码信息进行更新;所述至少一个第二数据块,为基于更新后的第一编码信息,对所述第一数据块进行编码而生成的数据块。
示例性的,发送端可每接收到一个所述第二网络设备的一个第一反馈信息,则基于所述一个第一反馈信息,确定是否对第一编码信息进行更新,以获取更新后的所述第一编码信息。以第一矩阵为第一编码信息为例,可对第一矩阵内的元素进行更新,其中初始化的第一矩阵为0矩阵,阶数可为m);每更新一次所述第一矩阵,发送端可根据更新后的所述第一矩阵对所述第一数据块进行编码,生成所述至少一个第二数据块;那么发送端可在检测到已接收到的所述第一反馈信息满足预设条件,则向所述至少一个第二网络设备发送最近一次编码生成的所述至少一个第二数据块。
本实施方式中,发送端每接收到来自一个接收端的第一反馈信息(例如ACK),就可以触发一次对第一矩阵内的元素的更新,以及基于更新后的第一矩阵来对已接收到的ACK对应的接收端,所丢失的数据块进行编码;相比于在检测到已接收到的所述第一反馈信息满足预设条件的情况下,再基于最后一次更新的第一矩阵来对第一数据块进行编码,可以显著降低运算时延,从而提升数据传输效率;待对原始数据块的ACK的接收窗口过期或者发送端已接收到共享介质的通信回路中的全部接收端的ACK时,则可触发发送端向每个接收端发送编码后的至少一个第二数据块,使得每个接收端可利用该至少一个第二数据块来对丢失的原始数据块进行解码,以实现数据的可靠性传输。
在一种可能的实施方式中,所述对第一数据块进行编码,生成至少一个第二数据块,包括:对由不同所述第二网络设备未正确接收的至少两个第一数据块进行编码,生成至少一个第二数据块。
示例性的,每个所述第二数据块可由与不同所述第二网络设备对应的第一数据块编码生成。
这样,发送端在编码生成每个第二数据块时,可对不同第二网络设备丢失的数据块(优选丢失的不同数据块)进行编码,这样,可利于第二网络设备对第二数据块进行准确解码。
在一种可能的实施方式中,所述对第一数据块进行编码,生成至少一个第二数据块,包括:对第一数据块在有限域上进行编码,生成至少一个第二数据块。
本实施方式可对第一数据块在有限域上进行编码,可降低编码复杂度,提升编码效率。
在一种可能的实施方式中,所述对第一数据块在有限域上进行编码,生成至少一个第二数据块,包括:对不同的第一数据块进行按位异或运算,生成至少一个第二数据块。
本实施方式可以简单的异或运算,来实现丢失的原始数据块的编码,从而降低编码复杂度,提升编码效率,减少编码时的资源占用。
在一种可能的实施方式中,所述对第一数据块进行编码,生成至少一个第二数据块之后,所述方法还包括:向所述至少一个第二网络设备发送与每个所述第二数据块分别对应的所述第二信息。
示例性的,第二信息的实现方式可以是上述第一矩阵的至少一行,或至少一列,例如第一矩阵为m行n列的矩阵,则一个第二数据块对应的第二信息可以是第一矩阵的一列。使得第一矩阵的列数可决定第二数据块的数量。当然,第二信息的实现方式也可以是其他的实现形式,本申请对此不做限制。
本实施方式中,发送端不仅可将编码后的数据块发送至每个接收端,还可将用于表征每个编码后的数据块由哪些原始数据块进行编码的信息(这里的第二信息)发送至每个接收端,不仅可便于接收端利用该第二信息来对编码后的数据块进行解码,提升解码效率,而且还可利于接收端在解码的同时,利用该第二信息进行相应的逻辑判断,以避免接收端错过对重传数据块的应答信息的发送窗口。
在一种可能的实施方式中,所述第二信息为所述第一矩阵的目标行或目标列(其中,在第一矩阵为m行n列的场景下,每行表示一个数据块被至少一个第二网络设备是否正确接收的信息,则这里第二信息可以是目标列),其中,所述目标行或所述目标列为所述第一矩阵中包括目标元素的行或列,所述目标元素用于指示至少一个所述第二网络设备对所述第三数据块未正确接收。
示例性的,目标元素可为元素“1”,或者“元素0”。
本实施方式,利用二元的第一矩阵来对丢失的原始数据块进行编码,可降低编码复杂度,提升编码效率。
在一种可能的实施方式中,本申请提供一种解码方法,应用于第二网络设备,所述第二网络设备与所述第一网络设备通过共享介质进行通信。该方法包括:接收来自所述第一网络设备的至少一个第二数据块;接收来自所述第一网络设备的与每个所述第二数据块对应的第二信息;其中,任意一个所述第二数据块对应的所述第二信息,用于指示用于编码生成该第二数据块所基于的第一数据块以及至少一个第四数据块;其中,所述第四数据块为在至少两个第三数据块中所述第二网络设备正确接收到的第三数据块;所述第一数据块为在所述至少两个第三数据块中所述第二网络设备未正确接收到的第三数据块;根据所述第二信息指示的所述至少一个第四数据块,对所述至少一个第二数据块进行解码,获取第一数据块;其中,所述至少两个第三数据块为所述第一网络设备通过所述共享介质向至少一个第二网络设备发送的数据。
示例性的,这里的第一数据块为这里的第二网络设备单独丢失的原始数据块,在上述编码方法的各实施方式中,第一数据块可用于表示至少一个第二网络设备所丢失的原始数据块的集合。
例如,本申请的解码方法的各实施方式中的第一数据块为这里的一个第二网络设备在多个原始数 据块中没有正确接收到的原始数据块,而非上述编码方法的各实施方式中各个第二网络设备,在多个原始数据块中没有正确接收到的原始数据块的集合。
本实施方式与上述编码方法的实施方式中的相同名称的技术特征表示相同或类似的意义,这里不再一一赘述。
本实施方式中,接收端可基于已接收到的原始数据块和与每个第二数据块对应的第二信息,来对编码后的数据块进行解码,其中,第二信息可用于指示发送端在编码生成相应第二数据块时所基于的至少一个第二网络设备所丢失的原始数据块。就这里的一个第二网络设备而言,编码第二数据块所基于的原始数据块可包括第二网络设备所丢失的原始数据块,还包括第二网络设备未丢失的原始数据块。这样,接收端可基于该第二信息,来利用未丢失的原始数据块,来对第二数据块进行解码,以获取丢失的原始数据块,利于确保第二网络设备的准确解码,实现了原始数据块的可靠性传输,利于提升数据传输效率和物理介质共享通信的吞吐量,易满足终端物联对于通信实时性、可靠性的要求。
在一种可能的实施方式中,所述根据所述第二信息指示的所述至少一个第四数据块,对所述至少一个第二数据块进行解码,获取第一数据块,包括:
根据所述第二信息指示的所述至少一个第四数据块,在有限域上对所述至少一个第二数据块进行解码,获取所述第一数据块。
本实施方式可对各个第二数据块在有限域上进行解码,可降低解码复杂度,提升解码效率。
在一种可能的实施方式中,所述方法还包括:根据第一反馈信息和所述第二信息,在检测到所述至少一个第二数据块能够用于解码生成所述第一数据块时,发送第二反馈信息至所述第一网络设备;其中,所述第一反馈信息为所述第二网络设备对所述至少两个第三数据块的反馈信息,所述第一反馈信息用于指示所述第二网络设备未正确接收到的第三数据块。
可选地,所述第二反馈信息为所述第二网络设备对所述至少一个第二数据块的反馈信息。
可选地,所述第二反馈信息用于指示所述第二网络设备已正确接收到所述第一数据块。
本实施方式中,接收端可利用该第二信息来对编码后的数据块进行解码,提升解码效率,而且还可利于接收端在解码的同时,利用该第二编码信息进行相应的逻辑判断,以避免接收端错过对重传数据块的应答信息的发送窗口(例如避免了由于解码时延较长而错过了重传ACK发送窗口),而导致重传ACK信息被推迟发送或无法发送的问题,有利于缩短接收应答的时延。
在一种可能的实施方式中,所述根据第一反馈信息和所述第二编码信息,在检测到所述至少一个第二数据块能够用于解码生成所述第一数据块时,发送第二反馈信息至所述第一网络设备,包括:对所述第一反馈信息和所述第二编码信息按位与操作,获取操作结果;基于所述操作结果,在检测到所述至少一个第二数据块能够用于解码生成所述第一数据块时,发送第二反馈信息至所述第一网络设备。
本实施方式可利用第一反馈信息和第二编码信息,通过按位与操作,来逻辑判断至少一个第二数据块是否能够用于解码生成接收端所丢失的原始数据块,从而在确定所述至少一个第二数据块能够用于解码生成所述第一数据块时,接收端可将第二反馈信息的发送,与第二数据块的解码进行并行操作,可以显著降低传输时延,从而提升通信实时性与可靠性。
在一种可能的实施方式中,所述根据所述第二信息指示的所述至少一个第四数据块,对所述至少一个第二数据块进行解码,获取第一数据块,包括:根据所述第二信息指示的所述至少一个第四数据块,对所述至少一个第二数据块进行并行解码,以获取至少一个所述第一数据块。
本实施方式中,在接收端接收到至少一个第二数据块时,可对每个数据块进行并行解码,可提升解码效率。
关于解码方法的各实施方式中对于第二信息的生成方式以及第二信息的可实现方式,具体可按照编码方法的相应实施方式的介绍,技术方案和技术效果类似,这里不再一一赘述。
在一种可能的实施方式中,本申请提供一种编码装置,应用于第一网络设备,所述第一网络设备与至少一个第二网络设备通过共享介质进行通信,所述编码装置用于:对第一数据块进行编码,生成至少一个第二数据块;其中,所述第二数据块的数量小于所述第一数据块的数量;其中,所述第一数据块为在至少两个第三数据块中未被所述至少一个第二网络设备正确接收到的第三数据块;其中,所述至少两个第三数据块为所述第一网络设备向所述至少一个第二网络设备发送的数据;向所述至少一个第二网络设备发送所述至少一个第二数据块。
在一种可能的实施方式中,所述编码装置具体用于:根据第一编码信息对所述第一数据块进行编码,生成至少一个第二数据块;所述第一编码信息包括第一信息和与每个所述第二数据块分别对应的第二信息;其中,所述第一信息用于指示所述第二数据块的数量;所述第二信息用于指示用于编码生成所述第二数据块所基于的第一数据块。
在一种可能的实施方式中,所述第一编码信息包括第一矩阵,所述编码装置还用于:基于来自至少一个所述第二网络设备的第一反馈信息,生成所述第一编码信息;其中,所述第一反馈信息为相应第二网络设备对所述至少两个第三数据块的反馈信息,所述第一反馈信息用于指示在所述至少两个第三数据块中,未被所述相应第二网络设备正确接收到的目标数据块;其中,在至少一个所述第一反馈信息所分别对应的所述目标数据块的数量中,取值最大的数量为所述第一信息指示的数量;其中,所述第二信息所指示的第一数据块包括与不同所述第一反馈信息对应的所述目标数据块。
在一种可能的实施方式中,所述第一编码信息包括第一矩阵,所述第一矩阵的行数为m且列数为n,或者,所述行数为n且所述列数为m,其中,m为所述第三数据块的数量,m≥2,n为所述第二数据块的数量,m>n≥1;所述第一矩阵中的m行元素或m列元素分别用于指示各个所述第三数据块是否被所述至少一个第二网络设备正确接收,其中,不同行或不同列的元素对应不同的第三数据块;所述第一矩阵中的n列元素或n行元素用于指示不同所述第三数据块被不同所述第二网络设备是否正确接收的信息。
在一种可能的实施方式中,所述第一反馈信息,用于对已生成的所述第一编码信息进行更新;所述至少一个第二数据块,为基于更新后的第一编码信息,对所述第一数据块进行编码而生成的数据块。
在一种可能的实施方式中,所述编码装置具体用于:对由不同所述第二网络设备未正确接收的至少两个第一数据块进行编码,生成至少一个第二数据块。
在一种可能的实施方式中,所述编码装置具体用于:对第一数据块在有限域上进行编码,生成至少一个第二数据块。
在一种可能的实施方式中,所述编码装置具体用于:对不同的第一数据块进行按位异或运算,生成至少一个第二数据块。
在一种可能的实施方式中,所述编码装置还用于:向所述至少一个第二网络设备发送与每个所述第二数据块分别对应的所述第二信息。
上述各实施方式的编码装置的效果,与上述各实施方式的编码方法的效果类似,这里不再赘述。
在一种可能的实施方式中,本申请提供一种解码装置,应用于第二网络设备,其中,所述第二网络设备与第一网络设备通过共享介质进行通信,所述解码装置用于:接收来自所述第一网络设备的至 少一个第二数据块;接收来自所述第一网络设备的与每个所述第二数据块对应的第二信息;其中,任意一个所述第二数据块对应的所述第二信息,用于指示用于编码生成该第二数据块所基于的第一数据块以及至少一个第四数据块;其中,所述第四数据块为在至少两个第三数据块中所述第二网络设备正确接收到的第三数据块;所述第一数据块为在所述至少两个第三数据块中所述第二网络设备未正确接收到的第三数据块;根据所述第二信息指示的所述至少一个第四数据块,对所述至少一个第二数据块进行解码,获取第一数据块;其中,所述至少两个第三数据块为所述第一网络设备通过所述共享介质向至少一个第二网络设备发送的数据。
在一种可能的实施方式中,解码装置具体用于:根据所述第二信息指示的所述至少一个第四数据块,在有限域上对所述至少一个第二数据块进行解码,获取所述第一数据块。
在一种可能的实施方式中,所述解码装置还用于:根据第一反馈信息和所述第二信息,在检测到所述至少一个第二数据块能够用于解码生成所述第一数据块时,发送第二反馈信息至所述第一网络设备;其中,所述第一反馈信息为所述第二网络设备对所述至少两个第三数据块的反馈信息,所述第一反馈信息用于指示所述第二网络设备未正确接收到的第三数据块;所述第二反馈信息为所述第二网络设备对所述至少一个第二数据块的反馈信息,所述第二反馈信息用于指示所述第二网络设备已正确接收到所述第一数据块。
在一种可能的实施方式中,所述解码装置具体用于:对所述第一反馈信息和所述第二编码信息按位与操作,获取操作结果;基于所述操作结果,在检测到所述至少一个第二数据块能够用于解码生成所述第一数据块时,发送第二反馈信息至所述第一网络设备。
在一种可能的实施方式中,所述解码装置具体用于:根据所述第二信息指示的所述至少一个第四数据块,对所述至少一个第二数据块进行并行解码,以获取至少一个所述第一数据块。
上述各实施方式的解码装置的效果,与上述各实施方式的解码方法的效果类似,这里不再赘述。
在一种可能的实施方式中,本申请提供一种编码装置。该编码装置包括一个或多个接口电路和一个或多个处理器;所述接口电路用于从存储器接收信号,并向所述处理器发送所述信号,所述信号包括存储器中存储的计算机指令;当所述处理器执行所述计算机指令时,所述处理器可实现上述任意一种实施方式中的编码方法。
本实施方式的编码装置的效果,与上述各实施方式的编码方法的效果类似,这里不再赘述。
在一种可能的实施方式中,本申请提供一种解码装置。该编码装置包括一个或多个接口电路和一个或多个处理器;所述接口电路用于从存储器接收信号,并向所述处理器发送所述信号,所述信号包括存储器中存储的计算机指令;当所述处理器执行所述计算机指令时,所述处理器可实现上述任意一种实施方式中的解码方法。
本实施方式的解码装置的效果,与上述各实施方式的解码方法的效果类似,这里不再赘述。
在一种可能的实施方式中,本申请提供一种计算机可读存储介质。计算机可读存储介质存储有计算机程序,当计算机程序运行在计算机或处理器上时,使得计算机或处理器执行上述任意一种实施方式中的编码方法。
本实施方式的计算机可读存储介质的效果,与上述各实施方式的编码方法的效果类似,这里不再赘述。
在一种可能的实施方式中,本申请提供一种计算机可读存储介质。计算机可读存储介质存储有计 算机程序,当计算机程序运行在计算机或处理器上时,使得计算机或处理器执行上述任意一种实施方式中的解码方法。
本实施方式的计算机可读存储介质的效果,与上述各实施方式的解码方法的效果类似,这里不再赘述。
在一种可能的实施方式中,本申请提供一种计算机程序产品。计算机程序产品包含软件程序,当软件程序被计算机或处理器执行时,使得上述任意一个实施方式中的编码方法被执行。
本实施方式的计算机程序产品的效果,与上述各实施方式的编码方法的效果类似,这里不再赘述。
在一种可能的实施方式中,本申请提供一种计算机程序产品。计算机程序产品包含软件程序,当软件程序被计算机或处理器执行时,使得上述任意一个实施方式中的解码方法被执行。
本实施方式的计算机程序产品的效果,与上述各实施方式的解码方法的效果类似,这里不再赘述。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为示例性示出的智能家居场景下PLC控制回路中的节点示意图;
图2a为示例性示出的一种本申请的系统的框图;
图2b为示例性示出的该系统的工作流程图;
图3a为示例性示出的数据传输的示意图;
图3b为示例性示出的数据传输的示意图;
图4a为示例性示出的数据结构示意图;
图4b为示例性示出的数据结构示意图;
图5a为示例性示出的编码过程的示意图;
图5b为示例性示出的编码过程的示意图;
图6a为示例性示出的数据重传的示意图;
图6b为示例性示出的数据重传的示意图;
图7a为示例性示出的逻辑判断的示意图;
图7b为示例性示出的逻辑判断的示意图;
图8a为示例性示出的组播传输的时序示意图;
图8b为示例性示出的单播传输的时序示意图;
图9为本申请实施例提供的一种装置的结构示意图;
图10为本申请实施例提供的一种芯片的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。
本申请实施例的说明书和权利要求书中的术语“第一”和“第二”等是用于区别不同的对象,而不是用于描述对象的特定顺序。例如,第一目标对象和第二目标对象等是用于区别不同的目标对象,而不是用于描述目标对象的特定顺序。
在本申请实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更 优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
在本申请实施例的描述中,除非另有说明,“多个”的含义是指两个或两个以上。例如,多个处理单元是指两个或两个以上的处理单元;多个系统是指两个或两个以上的系统。
随着物联网的发展,越来越多的终端可互联,物联网终端的应用场景可影响物联网终端的联网方式。物联网终端按照应用场景可分为固定终端和移动终端两类,其中,固定终端应用在固定接入场合,一般具有可靠的外部供电。固定终端可用于检测各种固定设备、仪器或环境的信息,固定终端之间的物联对于网络连接的实时性、可靠性有较高要求。
物联网通常使用物理介质共享技术(也称共享介质),如无线通信技术,或电力线通信(PLC,Power Line Communication)技术,或单对线以太网(SPE)进行互联。上述物理介质共享技术在通信时不受地形、地貌影响,且建设和运维成本低,无需布线,施工期短。其中,PLC可广泛应用于物联网以及家庭网络,PLC可将已调制的高频信号加载于已有的电力线进行信息传输,从而不需要重新架设通信网络,只要存在电线,各物联网终端就能通信,覆盖范围广。
目前,物理介质共享技术的通信回路中接入的终端(Station,STA)数量较多,例如物理介质共享技术为无线通信技术,那么无线访问接入点((WirelessAccessPoint,AP)、或无线接入设备、或无线网关均可接入较多的STA。再如,物理介质共享技术为PLC技术,那么电力线回路中可接入较多的STA。又如物理介质共享技术还可为单对线以太网,那么单对线以太网中可接入的较多的STA。而物理介质共享技术的应用层带宽较窄,例如仅有几十Kbps,使得物理介质共享技术中的数据传输效率较低,且难以满足终端物联对于通信实时性、可靠性的要求。
为此,本申请提供了一种编码方法、一种解码方法,以及一种发送端(还可称为源端)和一种接收端。应用于物联网的共享物理介质(例如无线通信网络、PLC网络、单对线以太网等)。其中,发送端可用于生成并发送多个原始数据块,以及对各接收端丢失的原始数据块进行编码并将编码后的数据块重传给各个接收端;接收端可用于对编码后的数据块进行解码,以获取本接收端丢失的原始数据块。这样,在物理介质共享技术的通信回路(例如无线通信回路或电力线回路或单对线以太网回路等)中接入的终端数量较多情况下,可实现丢包的重传和丢包的恢复,且重传的编码后的数据块相比于现有技术中重传全部丢失的数据块的数据量较小,从而显著提升物理介质共享通信的吞吐量和数据传输效率,以及降低传输时延,从而提升通信实时性与可靠性。
示例性的,本申请所提供的发送端可用于发送报文,本申请所提供的接收端可用于接收报文。
在不同应用场景下,同一电子设备可分别作为发送端或接收端,本申请对此不做限制。
示例性的,在物联网领域下,在物理介质共享技术为无线通信技术时,无线通信回路中的设备类型可包括但不限于:无线基站、无线访问接入点、无线网关、无线终端(也称STA)等。
示例性的,无线网关使用的无线空口技术可包括但不限于Zigbee、蓝牙等。本申请对于在物联网领域下,无线通信技术中的各设备所使用的具体无线通信协议不做限制。
在一个示例中,发送端可为无线基站,或,无线访问接入点,或,无线网关;接收端为无线终端。
在另一个示例中,发送端可为无线终端,接收端可为无线基站,或,无线访问接入点,或,无线网关。
需要说明的是,在无线通信回路中,任意设备在发送数据时,则该设备均可作为本申请的发送端,任意设备在接收数据时,则该设备均可作为本申请的接收端,上述示例并不用于限制本申请。
示例性的,在物联网领域下,在物理介质共享技术为PLC技术时,PLC回路中的设备类型可包括但不限于:PLC网关、有线终端(也称STA)等。
示例性的,该有线终端可为接电力线的任意物联网设备。
示例性的,图1为示例性示出的智能家居场景下PLC控制回路中的节点示意图。
如图1所示,PLC链路中的节点可包括但不限于:网关、与网关所在的PLC总线连接的节点(例如上述有线终端)。在智能家居场景下,PLC链路中可包括上百个节点,这里示例性的示出了部分节点。示例性的,连接在总线上的节点可包括:至少一个开关(例如开关1、开关2和开关3)、至少一个传感器(例如传感器1至传感器n)、至少一个灯(例如灯1至灯m)、至少一个窗帘电机、至 少一个插座等。网关可发送报文至与PLC总线连接的各个节点。网关还可接收所述各个节点发送的报文,不同节点可通过网关进行通信。
在一个示例中,发送端可为PLC网关;接收端为有线终端。
在另一个示例中,发送端可为有线终端,接收端可为PLC网关。
需要说明的是,在PLC回路中,任意设备在发送数据时,则该设备均可作为本申请的发送端,任意设备在接收数据时,则该设备均可作为本申请的接收端,上述示例并不用于限制本申请。
图2a为本申请示例性示出的一种系统的框图。该系统可包括发送端和至少一个接收端。
该发送端可包括编码模块和丢包记录模块;该接收端可包括解码模块和丢包反馈模块。
示例性的,编码模块,可用于生成并发送多个原始数据块;
解码模块,可用于接收发送端发送的原始数据块;
丢包反馈模块,可用于根据解码模块接收到的数据块,向发送端反馈本接收端未正确接收或丢失的原始数据块;
丢包记录模块,可用于根据各接收端反馈的未正确接收或丢失的原始数据块,对第一矩阵进行更新,以记录各接收端的丢包信息;
编码模块,还可用于基于丢包记录模块记录的信息,来对各接收端丢失的数据包进行编码,并发送编码数据包和更新后的第一矩阵中的矩阵信息至每个接收端,以实现对各接收端的丢失数据包的重传。
解码模块,还可用于接收发送端发送的编码数据包及相应矩阵信息,并利用该矩阵信息对编码数据包进行解码,以获取本接收端丢失的原始数据包。
可选地,丢包反馈模块,还可用于基于接收到的第一矩阵的相应矩阵信息,来与接收多个原始数据块时生成的反馈信息进行操作,以确定编码数据包是否可用于解码本接收端丢失的数据包,以及反馈重传的丢失数据包是否准确的信息。
需要说明的是,图2a为示例性示出的系统框架结构示意图。应该理解的是,图2a所示系统仅是一个范例,本申请的系统,以及发送端、接收端可以包括比图中所示的更多的或者更少的模块,可以组合两个或多个的模块,或者可以具有不同的模块配置。图2a中所示出的各种模块可以在包括一个或多个信号处理和/或专用集成电路在内的硬件、软件、或硬件和软件的组合中实现。
示例性的,下面结合图2b来对发送端和接收端的工作流程进行阐述。
示例性的,例如共享物理介质的通信回路中包括n+1个终端,那么一个终端1作为发送端来发送报文至至少一个终端2时,由于该通信回路为共享的物理介质的通信回路,使得该报文不仅可由该至少一个终端2接收到,而是在n+1个终端中,除该终端1之外的每个终端(这里为全部的终端2)均可作为接收端接收到该报文。那么在共享介质的场景下进行数据通信时,该通信回路中的一个终端作为发送端时,该通信回路中除该发送端之外的n个终端均作为接收端,来接收发送端发送的数据,如图2b所示,这里包括n个接收端。
示例性的,共享介质通信回路包括6个STA,分别为STA0至STA5。例如STA0作为发送端旨在发送报文1至STA1,这样,该报文的目的地址为用于指示STA1的地址。但是由于该报文在共享介质内传输,使得该通信回路中的STA2至STA5均可接收到该报文1,但是,不关心该报文1的STA2至STA5可丢弃该报文1。
如图2b所示,该过程可包括如下步骤:
S101,发送端发送多个原始数据包至n个接收端。
例如,n大于等于2。
示例性的,发送端可通过组播/广播的传输方式,来发送多个原始数据包,也可以通过单播的传输方式,来发送多个数据包,本申请对此不做限制。
此外,本申请对于n个接收端对多个原始数据包的接收顺序不做限制。
示例性的,发送端和n个接收端可预先约定m的取值,m为发送端发送的多个原始数据包的数量。
示例性的,m个原始数据包可为一个报文划分为的m个原始数据块,还可对多个报文的拼接结果划分为的m个原始数据块。
示例性的,m个原始数据块的数据大小相同。
可选地,m个原始数据块的数据大小也可不一一相同,本申请对此不做限制。
可选地,在m个原始数据块的数据大小并不完全相同时,发送端在执行下述图2b所示的S105时,可对数据长度较短的原始数据块的高位补零,来实现对丢失的数据块的编码。
本申请的发送端不论是单播、组播还是广播的方式发送报文,均一次性或连续的发送m个原始数据块,以实现数据发送。
示例性的,以n为5,m为5为例,分别结合组播/广播传输数据的实施方式,和单播传输数据的实施方式,来对本申请进行描述。示例性的,如图3a、图3b所示,发送端的发送数据包括5个长度为k(如k=8)bits的原始数据块{a0,a1,a2,…,a4}。
在一种可能的实施方式中,如图3a所示,发送端将5个原始数据块{a0,a1,a2,…,a4}以组播或广播的传输方式,发送至共享介质的控制回路中的除该发送端之外的全部STA,这里为5个STA,分别STA1至STA5。但是,由于共享介质的控制回路中各节点的带宽较小,信道环境较为恶劣,STA在接收数据时,会存在数据块的丢失。
示例性的,如图3a所示,STA1仅接收到数据块a0、数据块a3和数据块a4,而数据块a1和数据块a2则没有正确接收到或者丢失。
示例性的,如图3a所示,STA2仅接收到数据块a1、数据块a2和数据块a3,而数据块a0和数据块a4则没有正确接收到或者丢失。
示例性的,如图3a所示,STA3、STA4的丢包情况与STA2的丢包情况类似,这里不再赘述。
示例性的,如图3a所示,STA5仅接收到数据块a0、数据块a1、数据块a2和数据块a4,而数据块a3则没有正确接收到或者丢失。
在另一种可能的实施方式中,如图3b所示,发送端以单播方式分别发送5个原始数据块a0、a1、a2、a3、a4。
示例性的,发送端以单播传输方式将数据块a0发送至STA1。例如,数据块a0的目的地址为STA1的地址,如图3b所示STA1需要的原始数据块为数据块a0。这样,当发送端以单播方式发送某个数据块至某个STA时,由于该数据块在共享介质中传输,使得共享介质的控制回路(例如无线通信的控制回路或者PLC的控制回路)中的每个STA均可接收到数据块a0。但是,数据块a0并不是除STA1之外的STA所需要(或者说关心)的原始数据块。
同理,发送端以单播传输方式将数据块a1发送至STA2;发送端以单播传输方式将数据块a2发送至STA3;发送端以单播传输方式将数据块a3发送至STA4;发送端以单播传输方式将数据块a4发送至STA5。如图3b所示,STA1至STA5各自需要的原始数据块分别为数据块a0、数据块a1、数据块a2、数据块a3、数据块a4。但是5个STA因共享介质的原因,均可接收到全部的单播发送的5个原始数据块。
示例性的,如图3b所示,发送端将5个原始数据块{a0,a1,a2,…,a4}分别以单播的传输方式,发送至共享介质的控制回路中的除该发送端之外的全部STA,这里为5个STA,分别STA1至STA5。但是,由于共享介质的控制回路中各节点的带宽较小,信道环境较为恶劣,STA在接收数据时,会存在数据块的丢失。
示例性的,如图3b所示,STA1仅接收到数据块a1、数据块a3和数据块a4,而数据块a2和STA1所需要的数据块a0则没有正确接收到或者丢失。为了便于STA1来使用本申请的解码方法进行解码,来获取需要的数据块a0,则STA1可保留已接收到的、但是并不需要的数据块a1、数据块a3和数据块a4。
示例性的,如图3b所示,STA2仅接收到数据块a0、数据块a2、数据块a3、数据块a4,而STA2所需要的数据块a1则没有正确接收到或者丢失。为了便于STA2来使用本申请的解码方法进行解码,来获取需要的数据块a1,则STA2可保留已接收到的、但是并不需要的数据块a0、数据块a2、数据 块a3和数据块a4。
示例性的,如图3b所示,STA3、STA4的丢包情况与STA2的丢包情况类似,但是,STA3和STA4各自所需要的数据块a2、数据块a3已接收到。那么可选地,STA3可丢弃已接收到的数据块a0、数据块a3、数据块a4,而保留所需要的数据块a2;同理,可选地,STA4可丢弃已接收到的数据块a0、数据块a2、数据块a4,而保留所需要的数据块a3。
示例性的,如图3b所示,STA5仅接收到数据块a0、数据块a2和数据块a3,而数据块a1和STA5所需要的数据块a4则没有正确接收到或者丢失,则为了便于STA5来使用本申请的解码方法进行解码,来获取需要的数据块a4,则STA5可保留已接收到的、但是并不需要的数据块a0、数据块a2和数据块a3。
可以理解的是,发送端在以单播的方式分别发送5个原始数据块,或者以组播或广播的方式发送5个原始数据块时,各个原始数据块可携带数据块的序列号信息,而发送端与接收端已约定发送端所发送的数据对应的m的取值,这里为5。这样,共享介质回路中的每个接收端都可以基于已接收到的数据块的序列号确定本接收端没有正确接收到或丢失的数据块。
可选地,在S101之后,发送端可缓存该多个原始数据包,以用于从多个原始数据包中选取接收端丢失的数据包来进行编码。
S201,接收端发送用于指示未正确接收的第一数据包的第一反馈信息至发送端。
示例性的,接收端1至接收端n可分别发送各自的第一反馈信息。
示例性的,在物联网的共享介质通信回路中,由于节点数量较多,例如STA数量较多,为了实现发送端与接收端的数据通信。示例性的,PLC的通信回路中,PLC网关为每个STA预先设置并约定了数据接收窗口、数据发送窗口,例如图8a所示的STA2的各数据接收窗口和各数据发送窗口(例如ACK发送窗口),以实现各STA的数据向发送端分时段反馈。示例性的,STA在错过本STA的数据发送窗口时,则无法向发送端进行数据反馈。
可以理解的是,部分接收端因错过第一反馈信息的发送窗口,而未发送第一反馈信息至发送端的场景,可不影响本申请的方案的实现及解决上述技术问题。
示例性的,一个接收端发送的第一反馈信息用于指示对上述多个原始数据块的丢包或者说未正确接收的数据包信息。
在TCP/IP协议中,该第一反馈信息可以是确认字符(ACK,Acknowledge character)。在其他协议下,该第一反馈信息的形式可以是其他形式,本申请对此不做限制。
示例性的,在ACK中,接收端可对每个原始数据块的接收情况以一个比特位来表示,例如,以1表示未正确接收或丢失该原始数据块、0表示已正确接收到该原始数据块。可以理解的是,本申请对于各接收端的反馈应答的机制不做限制,还可通过其他方式来实现,只要该第一反馈信息可使发送端确定例如上述5个原始数据块中哪些数据块在相应的STA中没有正确接收或丢失即可。
在一种可能的实施方式中,结合图3a,参照图4a,发送端以组播/广播(以组播为例)的方式发送了5个原始数据块{a0,a1,a2,…,a4}。针对该组播的5个原始数据块,STA1丢失了数据块a1和数据块a2,则STA1向发送端发送的第一反馈信息,这里为组播ACK1具体为“01100”,以表示数据块a1和数据块a2未被STA1正确接收,数据块a0、数据块a3和数据块a4被STA1正确接收;同理,发送端接收到的STA2的组播ACK2为“10001”,发送端接收到的STA3的组播ACK3为“10001”,发送端接收到的STA4的组播ACK4为“10001”,发送端接收到的STA5的组播ACK5为“00010”。
在一种可能的实施方式中,结合图3b,参照图4b,发送端以单播的方式分别发送了5个原始数据块{a0,a1,a2,…,a4}至5个STA中的每个STA。针对发送端以单播方式分别发送的5个原始数据块,STA1丢失了数据块a0和数据块a2,则STA1以单播方式向发送端发送了分别针对5个原始数据块{a0,a1,a2,…,a4}的5个第一反馈信息(例如图4b所示的5个单播ACK1),5个ACK1的内容分别为:对应数据块a0的“1”,对应数据块a1的“0”,对应数据块a2的“1”,对应数据块a3的“0”,对应数据块a4的“0”。以表示数据块a0和数据块a2未被STA1正确接收,数据块a1、数据块a3和数据块a4被STA1正确接收。
同理,发送端接收到来自的STA2的依次针对5个原始数据块{a0,a1,a2,…,a4}的5个单播ACK2,5个单播ACK2的内容依次为“0”、“1”、“0”、“0”、“0”;发送端接收到的来自STA3的依次针对5个原始数据块{a0,a1,a2,…,a4}的5个单播ACK3,5个单播ACK3的内容依次为“0”、“1”、“0”、“0”、“0”;发送端接收到的来自STA43的依次针对5个原始数据块{a0,a1,a2,…,a4}的5个单播ACK4,5个单播ACK4的内容依次为“0”、“1”、“0”、“0”、“0”;发送端接收到的来自STA5的依次针对5个原始数据块{a0,a1,a2,…,a4}的5个单播ACK5,5个单播ACK5的内容依次为“0”、“1”、“0”、“0”、“1”。
可以理解的是,本申请对于第一反馈信息的应答策略不做限制,一个接收端发送的第一反馈信息可用于指示该接收端未正确接收或丢失的原始数据块。
在一种可能的实施方式中,在发送端以单播的方式分别发送了5个原始数据块{a0,a1,a2,…,a4}至5个STA中的每个STA的场景下,5个STA中的每个STA在向发送端回复各自的ACK时,也可以向发送端发送针对该5个原始数据块{a0,a1,a2,…,a4}整体的一个ACK。例如STA1在根据接收到的原始数据块的块号,可确定丢失的原始数据块,从而向发送端发送一个单播ACK1,具体内容为“10100”,以表示数据块a0、数据块a2被正确接收,而数据块a1、数据块a3、数据块a4没有正确接收或丢失。同理,STA2向发送端发送的一个单播ACK2的具体内容为“01000”,STA3向发送端发送的一个单播ACK3的具体内容为“01000”,STA4向发送端发送的一个单播ACK4的具体内容为“01000”,STA5向发送端发送的一个单播ACK5的具体内容为“01001”。
示例性的,发送端和接收端已预先约定原始数据块的数量m的取值,该数量m可以为系统参数。而发送端每次发送的m个原始数据块中的每个数据块可具有标识域,接收端可根据已接收到的原始数据块的标识域,来确定未正确接收或丢失的原始数据块,以通知至发送端。
S103,发送端根据已接收到的第一反馈信息对第一矩阵进行更新。
示例性的,第一矩阵为行数为m的矩阵。
可选地,第一矩阵的列数的最大值为m。可选地,第一矩阵为阶数为m的方阵。
示例性的,第一矩阵中的各行可用于表示m个原始数据块中各原始数据块在接收端的接收情况。示例性的,第一矩阵的第k行的元素可用于表示对应原始数据块ak的接收情况。
例如,在第一矩阵中,元素1表示未正确接收或丢失原始数据块ak,元素0表示已正确接收原始数据块ak,其中,k=1,2,3,…,m,m大于等于2。在其他实施例中,也可以以元素0表示已正确接收原始数据块ak,以元素1表示未正确接收或丢失原始数据块ak,本申请对此不做限制。
示例性的,该第一矩阵的大小与接收端(例如有线终端或无线终端)的数量无关。
示例性的,该第一矩阵的大小与发送端发送的原始数据的块数直接相关,以及与接收端对原始数据块的丢失情况相关。
可选地,发送端可在执行S101之前,初始化元素为全零的m阶方阵(即m阶零方阵),例如如图5a(1)所示的矩阵P1(这里为5阶零方阵),或图5b(1)所示的矩阵P2(这里为5阶零方阵)。
示例性的,发送端对于发送的5个原始数据块,每接收到一个STAi对该5个原始数据块的ACKi,就按照预设方式,根据接收到的ACKi对第一矩阵进行更新,其中,i=1,2,3…5。
示例性的,发送端对于发送的5个原始数据块,每接收到一个STAi对该5个原始数据块的ACKi,就按照预设方式,根据接收到的ACKi对第一矩阵进行更新的具体方法可包括如下S11和S12:
S11:发送端接收一个ACKi,发送端搜索ACKi中第1个表示不正确的比特位(如“1”);然后,发送端可根据该比特位在该ACKi中的排列次序,来确定相应的数据块号k;之后,发送端根据数据块号k将第一矩阵P(初始状态为全零)中的第k行第q1列元素置为1,以表示不正确接收数据块号k对应的原始数据块ak。其中,q1为正整数,这里以q1=1为例进行说明。
可以理解的是,q1可以是1至m中的任意一个数值,在其他实施例中,例如q1为最大值m(这里为5),或者,q1为中间值(例如3)等,本申请对此不做限制。
S12:发送端继续搜索上述ACKi中下一个表示不正确的比特位(如“1”),以确定相应的数据块号j;然后,发送端根据数据块号j将第一矩阵P中第j行第q2列元素置为1(这里q2=q1+1)以表示不正确接收数据块号j对应的原始数据块aj,其中q1不等于q2;
然后,发送端循环执行S12,直至搜索到上述同一ACKi中最后一个表示不正确的比特位,则完成基于ACKi对第一矩阵P的更新。需要说明的是,在本实施例中,发送端在循环执行S12时,对于同一ACKi,发送端每检测到一个比特位1,就可将第一矩阵P中相应数据块号对应的行中的下一个列qi的元素置为1,其中,qi的取值不同于之前的各q(例如q1、q2等)的取值。
在上述实施例中,对于同一ACK,发送端以均匀的每次错过一列的方式,将第一矩阵中的相应列的元素置为1。例如ACK1为“11111”,则上述实施例中,发送端可依次将5阶零矩阵中的第一行第一列的元素置为1(这里q1为1),将第二行第二列的元素置为1,将第三行第三列的元素置为1,将第四行第四列的元素置为1,将第五行第五列的元素置为1,使得基于ACK1对初始化的第一矩阵P(5阶零方阵)进行更新后,这里更新后的第一矩阵P可表示为:
这样,在本实施方式中,发送端对第一矩阵P更新时,在该第一矩阵P中所选取的置为1的元素所属的列依次为第1列、第2列、第3列、第4列、第5列,这里p1=1。在其他实施例中,若p1=2,则在该第一矩阵P中所选取的置为1的元素所属的列依次为第2列、第3列、第4列、第5列、第1列。
在其他实施例中,对于同一个ACK,发送端按照从高位到低位或从低位到高位的次序,发送端在该ACK中每检测到一个元素1后,发送端在将第一矩阵P中的相应列的对应元素置为1时,也可以以不均匀的方式来错过相应数量的列,以将第一矩阵中的相应列的对应元素置为1。但是,在错过相应的列时,需要确保所选取的列在之前未选取过。
在一种可能的实施方式中,例如对于同一ACK1(例如“11111”),检测到第一个“1”时,发送端将第一矩阵P中的第一行的第1列的元素1置为1;在ACK1中检测到第二个“1”时,发送端错过两列,将第一矩阵P中第二行的第3列的元素置为1;在ACK1中检测到第三个“1”时,发送端从第3列向后错过一列,将第一矩阵P中第三行的第4列的元素置为1;在ACK1中检测到第四个“1”时,发送端从第4列向后错过一列,将第一矩阵P中第四行的第5列的元素置为1;在ACK1中检测到第五个“1”时,发送端从第5列向后错过两列,将第一矩阵P中第五行的第2列的元素置为1。
这样,发送端每次填充元素1时,可不均匀的错过相应数量的列进行元素1的填充,这里错过的列数依次为:2列、1列、1列、1列、2列,填充的分别是第一矩阵P的第1列、第3列、第4列、第5列、第2列的相应行的元素。
可以理解的是,本申请对于发送端在同一ACK中每检测到一个比特位“1”,以在第一矩阵P中选取一个列,并将选取的列对应的某行的元素置为1时,对于第一矩阵P中各列之间的选取顺序不做限制。例如第一矩阵P包括5列,可按照第1、2、3、4、5列的顺序来依次选取各列,也可以按照第5、4、3、2、1列的顺序(这里q1=5)来依次选取各列的。
上述举例是每次错过一个列,发送端也可以不均匀的错过相应数量的列来选取各列。例如第一矩阵P包括5列,可按照第1、3、4、5、2列的顺序来依次选取各列,也可以按照第2、4、3、5、1列的顺序(这里q1=2)来依次选取各列。
在本申请中,只要针对该同一ACK,在第一矩阵P中每次选取的列和之前所选取的列不同即可。即在同一ACK最多包括5个1的情况下,发送端所选取的最多5列均为第一矩阵P中的不同列。关于其他举例,这里不再赘述,原理类似。
可以理解的是,发送端对于发送的5个原始数据块,每接收到一个STAi对该5个原始数据块的ACKi,均按照在第一矩阵P中选取列的同一策略,来根据接收到的ACKi对第一矩阵进行更新。换言之,本申请的预设方式并不限于上述各个实施方式的举例,但是,针对单播或组播或广播发送的一组内的5个原始数据块,发送端每次根据接收到的ACKi,来对第一矩阵进行更新时,所采用的预设 方式需相同。
例如发送端在接收到STA1的ACK1时,在第一矩阵P中选取的需要置为1的元素所属的列的选取顺序依次为第1、2、3、4、5;那么发送端在接收到STA2的ACK2时,在第一矩阵P中选取的需要置为1的元素所属的列的选取顺序同样依次为第1、2、3、4、5;……,发送端在接收到STA5的ACK5时,在第一矩阵P中选取的需要置为1的元素所属的列的选取顺序同样依次为第1、2、3、4、5。
需要说明的是,如果在依据一个ACK来对第一矩阵P进行更新时,检测到所选取的待更新的元素已经被更新为1,说明该元素的更新是通过之前接收到的ACK而触发的更新,则这里可以不再对该元素继续进行更新。
示例性的,结合图3a、图4a、图5a,来描述发送端在以组播(或广播)的传输方式来发送5个原始数据块至STA1至STA5后,发送端在依次接收到STA1至STA5的组播ACK1至组播ACK5时,基于每次接收到的ACK对第一矩阵P1的更新过程。
如图5a(1)所示,示例性示出了初始化的第一矩阵P1,如图4a所示,组播ACK1为“01100”,则按照组播ACK1对第一矩阵进行更新时,发送端可将第一矩阵P1中,对应数据块a1的第二行内第1列的元素置为1;然后,发送端可将第一矩阵P1中,对应数据块a2的第三行内第2列的元素置为1,以将第一矩阵P1从图5a(1)更新为图5a(2)所示的第一矩阵P1。
然后,发送端接收到如图4a所示的STA2的ACK2,同理可将第一矩阵P1从图5a(2)更新为图5a(3)所示的第一矩阵P1。
接着,发送端接收到STA3的ACK3(这里为“10001”),发送端可对图5a(3)所示的第一矩阵P1继续更新。示例性的,结合ACK3,发送端依据在ACK3中检测到的第一个比特位“1”,需要将图5a(3)所示的第一矩阵P1中,对应数据块a0的第一行内第1列的元素置为1,但是如图5a(3)所示,第一矩阵P1内第一行第一列的元素已经置为1,则这里将不再对第一矩阵P1的第一行第一列的位置内的元素进行更新;然后,发送端依据在ACK3中检测到的第二个比特位“1”,需要将图5a(3)所示的第一矩阵P1中,对应数据块a4的第五行内第2列的元素置为1,但是如图5a(3)所示,第一矩阵P1内第五行第二列的元素已经置为1,则这里将不再对第一矩阵P1的第五行第二列的位置内的元素进行更新。
同理,发送端在接收到对应于图3a的STA4的ACK4时,同理不需要对图5a(3)所示的第一矩阵P1继续更新,具体原理与基于组播ACK1来对第一矩阵P1进行更新同理,这里不再赘述。
最后,发送端接收到STA5的ACK5(如图4a所示,这里为“00010”),发送端可对图5a(3)所示的第一矩阵P1继续更新。这里,发送端可将第一矩阵从图5a(3)更新为图5a(4)所示的第一矩阵P1。
示例性的,结合图3b、图4b、图5b,来描述发送端在以单播的传输方式来分别发送5个原始数据块至STA1至STA5后,发送端在(例如依次)接收到STA1至STA5的5个单播ACK1至5个单播ACK5时,基于每次接收到的同一个STA的ACK对第一矩阵P2的更新过程。
如图5b(1)所示,示例性示出了初始化的第一矩阵P2,如图4b所示,5个单播ACK1的内容依次为“1”、“0”、“1”、“0”、“0”,则按照5个单播ACK1对第一矩阵进行更新时,发送端可将第一矩阵P2中,对应数据块a0的第一行内第1列的元素置为1;然后,发送端可将第一矩阵P2中,对应数据块a2的第三行内第2列的元素置为1,以将第一矩阵P2从图5b(1)更新为图5b(2)所示的第一矩阵P2。
然后,发送端接收到如图4b所示的STA2的5个单播ACK2,同理可将第一矩阵P2从图5b(2)更新为图5b(3)所示的第一矩阵P2,具体原理与基于单播ACK1来对第一矩阵P2进行更新同理这里不再赘述。
接着,发送端接收到对应于图3b的STA3的5个单播ACK3、对应于STA4的5个单播ACK4,由于这里的ACK3、ACK4与ACK2相同,则发送端不需要基于5个单播ACK3、5个单播ACK4对图5b(3)所示的第一矩阵P2继续更新。
最后,发送端接收到STA5的5个单播ACK5(如图4b所示,这里为“01001”),发送端可对图5b(3)所示的第一矩阵P2继续更新。这里,发送端可将第一矩阵从图5b(3)更新为图5b(4)所示的第一矩阵P2。
需要说明的是,在单播模式下,发送端在根据接收到的同一个STA的ACK,来对第一矩阵P进行更新时,每次更新所基于的ACK可以是任意一个STA的至少一个单播ACK(例如STA1的对应于数据块a0的单播ACK),不限于上文举例的以同一STA的全部(这里为5个)单播ACK,来对第一矩阵P进行一次更新。
S105,发送端根据更新后的第一矩阵,对所述第一数据包进行编码,生成第二数据包。
示例性的,发送端每接收到一个STA的ACK来对第一矩阵更新之后,即每执行一次S103之后,就需要执行一次S105。
示例性的,结合图3a、图4a、图5a所示的关于发送端以组播/广播的方式传输5个原始数据块至STA1至STA5的实施方式,发送端在基于STAi的ACKi对第一矩阵P1进行更新,以使得第一矩阵P1更新后,发送端可将本次更新后的第一矩阵P1中包括元素“1”的第y列对应的各原始数据块(例如丢失的第一数据包)进行按位异或,以获取编码数据包(例如上述第二数据包)∑y。例如y=1,2,3….m。
结合图3a、图4a、图5a所示的关于发送端以组播/广播的方式传输5个原始数据块至STA1至STA5的实施方式,如上文所述,发送端接收到ACK1后,使得第一矩阵P1从图5a(1)更新为图5a(2)所示的第一矩阵P1,然后,发送端可计算∑1=a1,∑2=a2。然后,发送端接收到ACK2,使得第一矩阵P1从图5a(2)更新为图5a(3)所示的第一矩阵P1,那么发送端可计算∑1=a1+a0,∑2=a2+a4;发送端在接收到ACK3、ACK4时不需要对第一矩阵P1进行更新,则不需要对编码数据包∑y进行更新;最后,发送端接收到ACK5,使得第一矩阵P1从图5a(2)更新为图5a(3)所示的第一矩阵P1,然后,发送端可计算∑1=a1+a0+a3,∑2=a2+a4。其中,上述“+”表示异或操作。
示例性的,结合图3b、图4b、图5b所示的关于发送端以单播的方式分别传输5个原始数据块至STA1至STA5的实施方式,发送端在基于STAi的ACKi对第一矩阵P2进行更新,以使得第一矩阵P2更新后,发送端可将本次更新后的第一矩阵P2中包括元素“1”的第y列对应的各原始数据块(例如丢失的第一数据包)进行按位异或,以获取编码数据包(例如上述第二数据包)∑y。例如y=1,2,3….m。该过程的原理,与发送端以组播或广播的方式发送5个原始数据块的对应过程的原理类似,这里不再一一赘述。
示例性的,结合图3b、图4b、图5b所示的关于发送端以单播的方式分别传输5个原始数据块至STA1至STA5的实施方式,发送端在接收到ACK2后,使得第一矩阵P2从图5b(1)更新为图5b(2)所示的第一矩阵P2,然后,发送端可计算∑1=a1。然后,发送端接收到ACK2,使得第一矩阵P2从图5b(2)更新为图5b(3)所示的第一矩阵P2,那么发送端可计算∑1=a1+a0;发送端在接收到ACK3、ACK4时不需要对第一矩阵P2进行更新,则不需要对编码数据包∑y进行更新;最后,发送端接收到ACK5,使得第一矩阵P2从图5b(2)更新为图5b(3)所示的第一矩阵P2,然后,发送端可计算∑1=a1+a0,∑2=a2+a4。其中,上述“+”表示异或操作。
需要说明的是,上述各实施例中发送端在对第一矩阵P进行更新时,以第一矩阵中的第1至5行分别表示数据块a0至数据块a4为例进行说明。在其他实施例中,发送端在对第一矩阵P进行更新时,也可以以第一矩阵中的第1至5列分别表示数据块a0至数据块a4,那么在每次基于一个ACK来更新第一矩阵时,则可以“列”为单位进行遍历,来更新第一矩阵P中的各列内的元素;同理,发送端在对丢失的数据块进行编码来得到编码后的数据块时,则可对最后一次更新后的第一矩阵P中的各行内的元素“1”位置对应的原始数据块进行编码,以得到至少一个编码后的数据块,具体实现方式这里不再赘述,实现原理与上文的介绍类似。
可选地,在S105之后,S106,发送端可检测已接收到的第一反馈信息是否满足预设条件。
在一种可能的实施方式中,发送端检测到已接收到的第一反馈信息不满足预设条件,则转至S103。
示例性的,在S105之后,发送端在检测到针对S101中的上述多个原始数据包的第一反馈信息的接收窗口(例如上述5个原始数据块的ACK的接收窗口)没有结束,且,在上述n个接收端(例如 上述STA1至STA5)中,还存在发送端没有接收到的至少一个接收端(例如STA)的第一反馈信息(这里为针对S101中的5个原始数据包的ACK),则发送端可确定已接收到的第一反馈信息不满足预设条件,从而转至S103,以继续对新接收到的第一反馈信息来执行S103及S105。
这样,可在第一反馈信息的接收窗口未结束,且发送端未接收到n个接收端(全部接收端)对该多个原始数据包的第一反馈信息的情况下,发送端执行S103。这样,即便发送端再次执行S103或S105的过程中,该第一反馈信息的接收窗口结束,但是,发送端本次接收到的第一反馈信息仍旧是有效的,从而用于对丢失的第一数据包进行编码,以生成第二数据包。
在另一种可能的实施方式中,发送端检测到已接收到的第一反馈信息满足预设条件,则转至S107。
示例性的,在S105之后,发送端在检测到第一反馈信息的接收窗口(例如上述5个原始数据块的ACK的接收窗口)已经结束,或者,发送端已接收到上述n个接收端(例如上述STA1至STA5)的n个第一反馈信息(这里为针对S101中的5个原始数据包的5个ACK),则发送端可确定已接收到的第一反馈信息满足预设条件,从而触发S107。
示例性的,发送端可在对上述5个原始数据块的ACK接收窗口内,每接收到一个STA的ACK,就对接收到的ACK,来触发S103和S105的执行,以在第一矩阵中更新用于表示STA丢失的数据块的信息,以及对丢失的数据块进行编码。直至该ACK接收窗口结束,或者,发送端已基于全部的5个STA(STA1至STA5)的ACK均进行了第一矩阵更新和丢失数据块的编码,则不再执行S103和S105,而转至执行S107,使得发送端可将编码后得到的第二数据包及更新后的第一矩阵的矩阵信息发送至每个STA,以利于接收端对丢失的原始数据块(例如S201中各接收端未正确接收的第一数据包)进行修复。
可以理解的是,本申请对各接收端执行S201的顺序不做限制,使得发送端可在S107之前多次接收到第一反馈信息,那么各个接收端触发S201的时间,可在S101之后以及S107之前的任意时刻。使得发送端在执行S101之后,每接收到至少一个接收端的第一反馈信息后,就触发S103及S105的执行。直至在S105之后,发送端检测到已接收到的第一反馈信息满足预设条件,例如第一反馈信息的接收窗口已经结束,或者,该第一反馈信息的接收窗口没有结束,但发送端在最近一次执行S103时,已接收到该共享介质的通信回路中的全部(这里为n个)接收端的第一反馈信息),从而触发执行S107。
S107,发送端发送所述第二数据包以及更新后的第一矩阵中的矩阵信息至n个接收端。
示例性的,考虑到n个接收端中每个接收端都需要对各自丢失的第一数据包进行数据修复,发送端可通过广播或组播或单播的方式,来将第二数据包以及更新后的第一矩阵中的矩阵信息,发送至n个接收端中的每个接收端。
当然,在n个接收端中存在未丢包的接收端时,S107中第二数据包及相应的矩阵信息发送至接收端的方式也可以采用单播的方式,单因为是共享介质通信,n个接收端都可收到第二数据包及更新后的第一矩阵中的矩阵信息。
示例性的,结合图3a、图4a、图5a,参照图6a,发送端可将图5a(4)所示的∑1(具体为a1+a0+a3)和∑2(具体为a2+a4))作为编码数据块(第二数据包的一种示例),以及图5a(4)所示的第一矩阵P1中包括元素“1”的列的矩阵信息(这里为图6a所示的对应∑1的矩阵P1的第1列和对应∑2的矩阵P1的第2列),通过组播或广播的传输方式发送至STA1至STA5。
其中,图6a中的矩阵P1的第1列和第2列中第一行至第五行的元素分别对应于数据块a0至数据块a4。
为了保证数据包传输的可靠性,按图3a的丢块假设,在现有技术中,发送端需要将STA1至STA5丢失或没有正确接收到的所有数据块全部重传,这里需要重传{a0,a1,a2,…,a4}共5个数据块。按图3a的丢块假设,按照本申请的方法,发送端仅需要重传图5a(4)所示的∑1、∑2,共2个数据块以及相应的矩阵信息(数据量相比一个数据块小很多)。
示例性的,结合图3b、图4b、图5b,参照图6b,发送端可将图5b(4)所示的∑1(具体为a1+a0)和∑2(具体为a2+a4))作为编码数据块(第二数据包的一种示例),以及图5b(4)所示的第一矩阵 P2中包括元素“1”的列的矩阵信息(这里图6b所示的为对应∑1的矩阵P2的第1列和对应∑2的矩阵P2的第2列),通过单播的传输方式发送至STA1至STA5。当然,也可以通过组播或广播的方式发送至STA1至STA5,本申请重传的编码数据块的传输方式不做限制。
其中,图6b中的矩阵P2的第1列和第2列中第一行至第五行的元素分别对应于数据块a0至数据块a4。
为了保证数据包传输的可靠性,按图3b的丢块假设,在现有技术中,发送端需要将STA1至STA5丢失或没有正确接收到的所有数据块全部重传,这里需要重传{a0,a1,a2,a4}共4个数据块。按图3b的丢块假设,按照本申请的方法,发送端仅需要重传图5b(4)所示的∑1、∑2,共2个数据块以及相应的矩阵信息(数据量相比一个数据块小很多)。
本实施例中,发送端可根据更新后的第一矩阵,确定和发送一系列跨STA的丢失数据块(STA1至STA5对应的第一数据包的全集),并对丢失数据块在有限域上进行编码,以得到编码数据块(例如上述第二数据包),以实现对STA丢失的数据块的重传。此外,为了便于接收端解码丢失的数据块,发送端还可将最后更新后的第一矩阵P中包括元素“1”的各列和编码数据块一起发送至5个STA,以便于各个接收端利用各列来对编码数据块进行解码,以获取各个STA丢失的原始数据块。那么采用本申请的编码方案,可以显著降低物理介质共享通信的重传数据的信息量。
可以理解的是,上述示例中,在对跨STA丢失的数据块进行编码,以得到编码后的数据块时,发送端通过对需要重传的丢失数据块进行异或运算,以得到编码后的数据块,该方法为线性运算,可降低编解码复杂度,减少计算资源的占用,可利用提升丢失的数据块的重传效率。但是,本申请对于跨STA丢失的数据块进行编码的方式并不限于上述举例的异或运算,还可以是其他的已有的任意运算编码方式,例如非线性编码方式等。
本申请的发送端对需要重传的丢失数据块进行编码再重传,可以显著提升物理介质共享通信的吞吐量和数据传输效率。
可选地,在S107之后,接收端不仅可执行下述S204,以对各自丢失的数据块进行解码,还可执行S202,以根据接收到的第一矩阵P的相应矩阵信息,以及在接收原始数据包时所产生的第一反馈信息(例如ACK1至ACK5)进行操作(例如按位与运算),以对接收到的第二数据包进行可编码的逻辑判断,判断接收到的第二数据包是否可用于本接收端丢失的第一数据包的解码恢复。其中,接收端在经过逻辑判断,确定第二数据包可用于对本接收端丢失的第一数据包进行解码恢复时,则可以触发向发送端发送图2b中S203所述的第二反馈信息,以向发送端反馈对重传的第一数据包(或者,对第二数据包以及第一矩阵的相应矩阵信息)的正确接收情况(例如重传ACK信息)。这样可以避免S204的解码操作的时长而导致接收端错过向发送端发送对第二数据包的反馈信息的窗口期。
S202,接收端根据所述矩阵信息和相应第一反馈信息,确定所述第二数据包可用于获取相应第一数据包,则执行S203。
示例性的,各个接收端在执行S202时,原理类似,下面以STA2为例进行说明,其他STA的操作参照STA2的操作原理,这里不再赘述。
示例性的,在发送端以组播或广播方式传输原始数据块至接收端的场景下,结合图3a、图4a、图5a、图6a,请参照图7a(1),STA2可将矩阵P1的第1列与STA2在S201中发送的ACK2按位进行与操作,可得到操作结果1:10000,其中,操作结果1从高到低的5位分别对应于数据块a0至数据块a4,则STA2根据操作结果1可以确定接收到的如图6a所示的对应于矩阵P1的第1列的∑1可用于解码得到数据块a0。
同理,如图7a(2)所示,STA2还可将矩阵P1的第2列与STA2在S201中发送的ACK2按位进行与操作,可得到操作结果2:00001,其中,操作结果2从高到低的5位分别对应于数据块a0至数据块a4,则STA2根据操作结果2可以确定接收到的如图6a所示的对应于矩阵P1的第2列的∑2可用于解码得到数据块a4。
参照图3a,STA2丢失的数据块即为数据块a0和数据块a4,则STA2可确定接收到的∑1和∑2可用于解码已丢失的数据块。
同理,示例性的,在发送端以单播方式传输原始数据块至接收端的场景下,结合图3b、图4b、图5b、图6b,请参照图7b(1),STA2可将矩阵P2的第1列与STA2在S201中发送的ACK2按位进行与操作,可得到操作结果1:01000,其中,操作结果1从高到低的5位分别对应于数据块a0至数据块a4,则STA2根据操作结果1可以确定接收到的如图6b所示的对应于矩阵P2的第1列的∑1可用于解码得到数据块a1。
同理,如图7b(2)所示,STA2还可将矩阵P2的第2列与STA2在S201中发送的ACK2按位进行与操作,可得到操作结果2:00000,其中,操作结果2从高到低的5位分别对应于数据块a0至数据块a4,则STA2根据操作结果2可以确定接收到的如图6b所示的对应于矩阵P2的第2列的∑2无需用于对STA2丢失的数据块进行解码。
参照图3b,STA2丢失的数据块只有数据块a1,则STA2可确定接收到的∑1和∑2可用于解码已丢失的数据块。
S203,接收端发送用于指示已正确接收的第一数据包的第二反馈信息至发送端。
示例性的,接收端1至接收端n在确定第二数据包以及更新后的第一矩阵的相应矩阵信息,可用于正确解码各接收端已丢失的第一数据包时,则各接收端可发送各自的第二反馈信息至发送端。
这里的第二反馈信息的实现原理与上述第一反馈信息的实现原理类似。
示例性的,在TCP/IP协议中,该第二反馈信息可以是确认字符(ACK,Acknowledge character)。在其他协议下,该第二反馈信息的形式可以是其他形式,本申请对此不做限制。
示例性的,在发送端以组播或广播方式传输原始数据块至接收端的场景下,结合图3a、图4a、图5a、图7a,参照图6a,STA1至STA5均执行上述S202进行逻辑判断,并确定各自接收到的编码数据块可用于对各自丢失的原始数据块进行解码修复,从而可在各自的重传ACK的发送窗口内,发送各自的重传ACK至发送端。参照图6a,STA1可发送重传ACK1“00”以表示数据块a1和数据块a2已正确接收到。同理,参照图6a,STA2至STA4同理可发送各自的重传ACK,重传ACK2至重传ACK4同样为“00”,STA5的重传ACK5为“0”。
示例性的,在发送端以单播方式传输原始数据块至接收端的场景下,结合图3b、图4b、图5b、图7b,参照图6b,STA1至STA5均执行上述S202进行逻辑判断,并确定各自接收到的编码数据块可用于对各自丢失的原始数据块进行解码修复,从而可在各自的重传ACK的发送窗口内,发送各自的重传ACK至发送端。
在单播传输的场景下,STA1至STA6发送的重传ACK的实现原理可与上述组播或广播的实施例的原理相同或类似。
或者,单播传输的场景下,STA1至STA6发送的重传ACK可包括用于指示相应STA所需要的原始数据块是否正确接收的信息,而无需包括指示STA丢失但是并不需要的原始数据块是否正确接收的信息。示例性的,在参照图6b,STA1仅关心数据块a0,则STA1可发送重传ACK1,其内容为“0”以表示数据块a0已正确接收到。同理,参照图6b,STA2可发送重传ACK2,其内容为“0”,以表示数据块a1已正确接收到。同理,参照图6b,STA5可发送重传ACK5,其内容为“0”,以表示数据块a4已正确接收到。参照图3b,STA3、STA4已经在发送端以单播方式分别发送5个原始数据块(数据块a0至数据块a4)时,已接收到各自所关心(或者说需要)的数据块a2、数据块a3,那么在发送端向STA1至STA5发送了第二数据包及相应矩阵信息后,则STA3和STA4可无需向发送端回复重传ACK,如图6b所示,STA3和STA4也无需对接收到的第二数据包(例如∑1和∑2)进行解码。
S204,接收端根据所述矩阵信息和已正确接收到的第三数据包,对所述第二数据包解码,获取相应的第一数据包。
示例性的,接收端1至接收端n可根据所述矩阵信息和已正确接收到的第三数据包,对所述第二数据包解码,获取各自丢失及所需的第一数据包。
示例性的,这里的第三数据包为发送端在执行S101以发送多个原始数据包后,各个接收端在多个原始数据包中已正确接收的原始数据包。例如在图3a的场景中,以STA2为例,STA2已正确接收的3个第三数据包包括数据块a1、数据块a2以及数据块a3。同理,在图3b的场景中,以STA2为例, STA2已正确接收的4个第三数据包包括数据块a0、、数据块a2、数据块a3以及数据块a4。
继续以STA2为例,来对STA2基于第三数据包来对第二数据包解码,以获取所需的第一数据包的过程进行描述。
在一种可能的实施方式中,在发送端以组播或广播方式传输原始数据块至n个接收端的场景下,结合图3a、图4a、图5a、图7a,参照图6a,示例性的,STA2可基于已接收到的数据块(数据块a1、数据块a2、数据块a3)和第一矩阵P的第1列和第2列,来对编码结果(∑1、∑2)进行解码(例如有限域的运算),从而生成丢失的数据块(这里为数据块a0、数据块a4)。
示例性的,STA2可基于接收到的第一矩阵P1的第1列内包括元素“1”的位置,确定STA2接收到的∑1为数据块a0、数据块a1以及数据块a3的编码结果(这里为异或运算的结果);同理,STA2可确定接收到的∑2为数据块a2以及数据块a4的编码结果(这里为异或运算的结果)。
示例性的,STA2丢失的数据块为数据块a0和数据块a4,因此,STA2可利用包括数据块a0的∑1,以及STA2在∑1对应的三个数据块中已接收到的数据块a1和数据块a3,来解码得到丢失的数据块a0。
示例性的,STA2可通过方程1,来解码得到数据块a0;同理,可通过方程2,来解码得到数据块a4,从而可实现对多个数据块的并行解码,提升解码效率。
方程1:a0=∑1+a1+a3;方程2:a4=∑2+a2。
其中,方程1和方程2中的“+”表示异或运算。通过在有限域上解方程1和方程2,从而可得到STA2丢失的数据块a0和数据块a4。
示例性的,以方程1为例,在得到方程1时,STA2可依据成立的∑1=a0+a1+a3,将数据块a1和数据块a3左移,但是,有限域上无减法,从而得到上述方程1。
这样,如图6a所示,STA1至STA5就可分别按照上述以STA2举例的解码方式的原理,来解码获取到各自丢失的原始数据块,如图6a所示,STA1可解码得到数据块a1和数据块a2;STA2可解码得到数据块a0和数据块a4;STA3可解码得到数据块a0和数据块a4;STA4可解码得到数据块a0和数据块a4;STA5可解码得到数据块a3。
在一种可能的实施方式中,在发送端以单播方式传输原始数据块至接收端的场景下,各个接收端解码得到丢失的原始数据块的原理与组播\广播的方式同理。
示例性的,结合图3b、图4b、图5b、图7b,参照图6b,示例性的,STA2可基于已接收到的部分或全部数据块(数据块a0、数据块a2、数据块a3、数据块a4)和第一矩阵P的第1列和第2列,来对编码结果(∑1、∑2)进行解码(例如有限域的运算),从而生成丢失的数据块(这里为数据块a1)。
示例性的,STA2可基于接收到的第一矩阵P2的第1列内包括元素“1”的位置,确定STA2接收到的∑1为数据块a0、数据块a1的编码结果(这里为异或运算的结果);同理,STA2可确定接收到的∑2为数据块a2以及数据块a4的编码结果(这里为异或运算的结果)。
示例性的,STA2丢失的数据块为数据块a1、且仅关心(即仅需要获取)数据块a1,因此,STA2可利用包括数据块a1的∑1对应的2个数据块中已接收到的数据块a0,来解码得到丢失的数据块a1。
示例性的,STA2可通过方程3,来解码得到数据块a1。
方程3:a1=a0+∑1
其中,方程3中的“+”表示异或运算。通过在有限域上解方程3,从而可得到STA2丢失的数据块a1。
另外,参照图3b,在单播传输场景下,各个STA所需要的仅为一个数据块,那么在STA(如STA1和STA5)丢失的数据块不仅包括其所关心的数据块,还包括其他不关心的数据块时,则在一种可能的实施例方式中,各STA可对丢失的全部数据块均进行解码,然后,将解码得到的关心的数据块保留,而将解码得到的不关心的数据块丢弃。或者,在另一种可能的实施方式中,各STA可仅利用可解码其所关心的丢失的数据块的编码数据块,来进行丢失数据块的解码修复,而无需对不关心的丢失的数据块进行解码,以降低解码开销。
以图3b所示的STA1为例,STA1可利用方程4和方程5,来分别解码得到数据块a0,数据块a2, 并丢弃数据块a2;或者STA1可仅利用方程4,来解码得到数据块a0。
方程4:a0=∑1+a1;方程5:a2=∑2+a4。
这样,如图6b所示,STA1至STA5可按照上述举例的方式,来仅解码得到各自所关心并且丢失的原始数据块。如图6b所示,STA1可解码得到数据块a0;STA2可解码得到数据块a1;STA3和STA4未丢失各自所关心的数据块,则无需解码;STA5可解码得到数据块a4。
在本实施例中,发送端在重传编码数据块{∑y}的同时,还可将最后更新的第一矩阵P的第y列也传输给STAi(这里为所有接收端),使STA i可以根据第一矩阵P的第y列和ACKi信息进行按位与操作,以进行解码逻辑判断,从而在经解码逻辑判断确定编码数据块可用于解码STAi丢失的原始数据块时,STAi无需等待对编码数据块的解码结果,就可向发送端发送接收应答,以表示接收到重传的原始数据块。使得STAi可以将接收应答和编码数据块的解码并行处理,不必等待解码完成才进行接收应答(即STA i在重传ACKi的发送窗口内发送重传ACKi信息),有利于缩短接收应答的时延,避免了由于解码时延较长而错过了重传ACK的发送窗口,而导致重传ACK信息被推迟发送或无法发送的问题。本实施例,通过对发送对重传数据块的接收应答和对重传数据块的解码并行处理,使得解码过程可以显著降低传输时延,提升共享物理介质的数据传输效率,从而提升通信实时性与可靠性。
示例性的,在发送端以组播或广播方式传输原始数据块至接收端的场景下,结合图3a、图4a、图5a、图6a、图7a,参照图8a,以原始数据块以组播方式传输为例,图8a为示例性示出的发送端以及接收端(这里以STA2为例进行说明)的时序图。
请参照图8a,发送端在数据发送窗口1内,以组播方式发送5个原始数据块(数据块a0至数据块a4)至STA1至STA5。
继续参照图8a,以STA2为例,STA2在数据接收窗口1内接收到发送端发送的数据块a1至数据块a3,而因为该共享介质的传输系统中带宽较小,而未接收到数据块a0和数据块a4,使得该两个数据块丢失。然后,STA2在ACK发送窗口1内向发送端发送ACK2(具体为“10001”),以表示STA2丢失了数据块a0和数据块a4。
继续参照图8a,发送端可在ACK接收窗口1内接收STA1至STA5各自发送的针对上述5个原始数据块的应答数据,这里分别为ACK1至ACK5。
示例性的,发送端可在每次接收到上述STA1至STA5的一个ACK时,就进行一次第一矩阵的更新以及根据更新后的第一矩阵,来对已确定的丢失数据块进行编码,从而在ACK接收窗口1结束后,获取到图5a(4)所示的∑1和∑2以及矩阵P1。
然后,发送端可在数据发送窗口2内将各STA丢失的数据块,具体可包括图5a(4)所示的∑1和∑2以及矩阵P1的相应矩阵信息,以组播方式重传至全部接收端(这里为STA1至STA5)。
示例性的,继续参照图8a,STA2可在数据接收窗口2内接收到发送端发送的∑1和∑2以及矩阵P1的相应矩阵信息。
然后,STA2可并行的进行解码逻辑判断(例如图7a所示的解码逻辑判断过程)和解码过程,从而在经解码逻辑判断确定∑1和∑2可用于解码已丢失的数据块a0和数据块a4时,来在如图8a所示的ACK发送窗口2内发送重传ACK2(这里以ACK2’示出),其中,ACK2’为“00”,以表示STA2已接收到重传的数据块a0和数据块a4。
示例性的,解码过程为:STA2可利用矩阵P1的相应矩阵信息和已正确接收到的原始数据块(这里为数据块a1至数据块a3),来对∑1和∑2进行解码,以获取丢失的数据块a0和数据块a4。
如图8a所示,STA2在对编码后的数据块∑1和∑2进行解码的解码时长相比于解码逻辑判断的时间较长,例如图8a所示的“解码时延”对应的时长为解码时长。而重传ACK2的ACK发送窗口2时长较短,为了避免解码完成后再发送重传ACK2,而导致错过用于发送重传ACK2的ACK发送窗口2的问题,本申请实施例可利用上述解码逻辑判断过程,来将发送重传ACK2的过程与对编码后的数据块进行解码的过程进行并行处理,以避免因错过重传ACK的发送窗口而造成无法发送重传ACK2的问题。使得解码过程可以显著降低传输时延,提升共享物理介质的数据传输效率,从而提升通信实时 性与可靠性。
如图8a所示,发送端可在ACK接收窗口2内来接收STA1至STA5发送的各自的重传ACKi’(这里示出了STA2至STA4分别对应的ACK2’至ACK4’),以确定各个STA是否已正确接收到重传的丢失数据块。
示例性的,在发送端以单播方式传输原始数据块至接收端的场景下,结合图3b、图4b、图5b、图6b、图7b,参照图8b,以原始数据块以单播方式传输为例,图8b为示例性示出的发送端以及接收端(这里以STA2为例进行说明)的时序图。
请参照图8b,发送端在数据发送窗口1内,以单播方式以STA1为目的地址,发送该数据块a0,因共享介质,使得STA2至STA5均可支持收到该数据块a0,那么如图4b所示,STA1至STA5分别可发送针对数据块a0的ACK1至ACK5,如图8b所示,发送端在单播ACK接收窗口1内可接收到针对数据块a0的ACK1至ACK5;
同理,发送端可在数据发送窗口2内,以单播方式以STA2为目的地址,发送该数据块a1,因共享介质,使得STA1至STA5均可支持收到该数据块a1,那么如图4b所示,STA1至STA5分别可发送针对数据块a1的ACK1至ACK5,如图8b所示,发送端在单播ACK接收窗口2内可接收到针对数据块a1的ACK1至ACK5;
其中,如图8b所示,发送端在数据发送窗口2内以单播方式发送数据块a1后,STA2在数据接收窗口1内未接收到该数据块a1,使得数据块a1丢失,那么STA2针对该数据块a1所响应的ACK2的内容为“1”,以表示数据块a1丢失。
对于发送端以单播方式发送数据块a2至数据块a4的过程,与这里以数据块a0和数据块a1举例的过程类似,这里不再赘述。
示例性的,发送端可在每次接收到上述STA1至STA5中任意一个STA的针对该5个原始数据块的ACK时,就进行一次第一矩阵的更新以及根据更新后的第一矩阵,来对已确定的丢失数据块进行编码,从而在发送端的针对单播数据的各ACK接收窗口结束后,获取到图5b(4)所示的∑1和∑2以及矩阵P2。
然后,发送端可在数据发送窗口3内将各STA丢失的数据块,具体可包括图5b(4)所示的∑1和∑2以及矩阵P2的相应矩阵信息,以组播方式重传至全部接收端(这里为STA1至STA5)。
示例性的,继续参照图8b,STA2可在数据接收窗口2内接收到发送端发送的∑1和∑2以及矩阵P2的相应矩阵信息。
然后,STA2可并行的进行解码逻辑判断(例如图7b所示的解码逻辑判断过程)和解码过程,从而在经解码逻辑判断确定∑1可用于解码已丢失的数据块a1时,来在如图8b所示的ACK发送窗口2内发送重传ACK2(这里以ACK2’示出),其中,ACK2’为“0”,以表示STA2已接收到重传的数据块a1。
示例性的,解码过程为:STA2可利用矩阵P2的相应矩阵信息和已正确接收到的原始数据块(这里为数据块a0),来对∑1进行解码,以获取丢失的数据块a1。
如图8b所示,STA2在对编码后的数据块∑1进行解码的解码时长相比于解码逻辑判断的时间较长,例如图8b所示的“解码时延”对应的时长为解码时长。而重传ACK2的ACK发送窗口时长较短,为了避免解码完成后再发送重传ACK2(以ACK2’示出),而导致错过用于发送重传ACK2的ACK发送窗口的问题,本申请实施例可利用上述解码逻辑判断过程,来将发送重传ACK2的过程与对编码后的数据块进行解码的过程进行并行处理,以避免因错过重传ACK的发送窗口而造成无法发送重传ACK2的问题。使得解码过程可以显著降低传输时延,提升共享物理介质的数据传输效率,从而提升通信实时性与可靠性。
如图8b所示,发送端可在ACK接收窗口内来接收STA1至STA5发送的各自的重传ACKi’(这里示出了STA1至STA5分别对应的ACK1’至ACK5’),以确定各个STA是否已正确接收到重传的丢失数据块。
本申请实施例的上述编码方法和解码方法可提升物理介质共享通信的吞吐量和数据传输效率,以 满足终端物联对于通信实时性、可靠性的要求。
在一种可能的实施方式中,本申请提供一种编码装置,应用于第一网络设备,所述第一网络设备与至少一个第二网络设备通过共享介质进行通信,所述编码装置用于:对第一数据块进行编码,生成至少一个第二数据块;其中,所述第一数据块为在至少两个第三数据块中所述至少一个第二网络设备未正确接收到的第三数据块;其中,所述至少两个第三数据块为所述第一网络设备向所述至少一个第二网络设备发送的数据;向所述至少一个第二网络设备发送所述至少一个第二数据块。
在一种可能的实施方式中,所述编码装置具体用于:根据第一编码信息对所述第一数据块进行编码,生成至少一个第二数据块;其中,所述第一编码信息用于指示所述至少一个第二网络设备中每个所述第二网络设备对每个所述第三数据块是否正确接收。
在一种可能的实施方式中,所述第一编码信息包括第一矩阵,所述编码装置还用于:基于来自至少一个所述第二网络设备的第一反馈信息,获取第一矩阵,其中,所述第一矩阵的行数和/或列数为m,其中,m为所述第三数据块的数量,m≥2;其中,所述第一反馈信息为相应第二网络设备对所述至少两个第三数据块的反馈信息,所述第一反馈信息用于指示所述相应第二网络设备未正确接收到的第三数据块;所述第一矩阵中的元素用于指示所述至少一个第二网络设备对每个所述第三数据块是否正确接收。
在一种可能的实施方式中,所述编码装置具体用于:每接收到一个所述第二网络设备的一个第一反馈信息,则基于所述一个第一反馈信息,确定是否对所述第一矩阵内的元素进行更新,以获取更新后的所述第一矩阵;每更新一次所述第一矩阵,则根据更新后的所述第一矩阵对所述第一数据块进行编码,生成所述至少一个第二数据块;检测到已接收到的所述第一反馈信息满足预设条件,则向所述至少一个第二网络设备发送最近一次编码生成的所述至少一个第二数据块。
在一种可能的实施方式中,所述编码装置具体用于:对第一数据块在有限域上进行编码,生成至少一个第二数据块。
在一种可能的实施方式中,所述编码装置具体用于:对不同的第一数据块进行按位异或运算,生成至少一个第二数据块。
在一种可能的实施方式中,所述编码装置还用于:向所述至少一个第二网络设备发送每个所述第二数据块对应的第二编码信息;其中,任意一个所述第二数据块对应的所述第二编码信息,用于指示用于编码生成该第二数据块所基于的第一数据块。
在一种可能的实施方式中,所述第二编码信息为所述第一矩阵的至少一个目标行或至少一个目标列,其中,所述目标行或所述目标列为所述第一矩阵中包括目标元素的行或列,所述目标元素用于指示至少一个所述第二网络设备对所述第三数据块未正确接收。
上述各实施方式的编码装置的效果,与上述各实施方式的编码方法的效果类似,这里不再赘述。
在一种可能的实施方式中,本申请提供一种解码装置,应用于第二网络设备,其中,所述第二网络设备与第一网络设备通过共享介质进行通信,所述解码装置用于:接收来自所述第一网络设备的至少一个第二数据块;根据第四数据块,对所述至少一个第二数据块进行解码,获取第一数据块;其中,所述第四数据块为在至少两个第三数据块中所述第二网络设备正确接收到的第三数据块;所述第一数据块为在所述至少两个第三数据块中所述第二网络设备未正确接收到的第三数据块;其中,所述至少两个第三数据块为所述第一网络设备通过所述共享介质向至少一个第二网络设备发送的数据。
在一种可能的实施方式中,解码装置具体用于:根据所述第四数据块,在有限域上对所述至少一个第二数据块进行解码,获取所述第一数据块。
在一种可能的实施方式中,所述解码装置还用于:接收来自所述第一网络设备的与每个所述第二数据块对应的第二编码信息;其中,任意一个所述第二数据块对应的所述第二编码信息,用于指示用于编码生成该第二数据块所基于的第一数据块以及所述第四数据块。
在一种可能的实施方式中,所述解码装置具体用于:根据所述第二编码信息和所述第四数据块, 对所述至少一个第二数据块进行解码,获取所述第一数据块。
在一种可能的实施方式中,所述解码装置还用于:根据第一反馈信息和所述第二编码信息,在检测到所述至少一个第二数据块能够用于解码生成所述第一数据块时,发送第二反馈信息至所述第一网络设备;其中,所述第一反馈信息为所述第二网络设备对所述至少两个第三数据块的反馈信息,所述第一反馈信息用于指示所述第二网络设备未正确接收到的第三数据块。
可选地,所述第二反馈信息为所述第二网络设备对所述至少一个第二数据块的反馈信息。
可选地,所述第二反馈信息用于指示所述第二网络设备已正确接收到所述第一数据块。
在一种可能的实施方式中,所述解码装置具体用于:对所述第一反馈信息和所述第二编码信息按位与操作,获取操作结果;基于所述操作结果,在检测到所述至少一个第二数据块能够用于解码生成所述第一数据块时,发送第二反馈信息至所述第一网络设备。
在一种可能的实施方式中,所述解码装置具体用于:根据第四数据块,对所述至少一个第二数据块进行并行解码,以获取至少一个所述第一数据块。
在一种可能的实施方式中,所述第二编码信息为第一矩阵的至少一个目标行或至少一个目标列,其中,所述目标行或所述目标列为所述第一矩阵中包括目标元素的行或列,所述目标元素用于指示至少一个所述第二网络设备对所述第三数据块未正确接收;所述第一矩阵为所述第一网络设备基于来自至少一个所述第二网络设备的相应所述第一反馈信息,所获取的矩阵,其中,所述第一矩阵的行数和/或列数为m,其中,m为所述第三数据块的数量,m≥2;其中,所述第一矩阵中的元素用于指示所述至少一个第二网络设备对每个所述第三数据块是否正确接收。
上述各实施方式的解码装置的效果,与上述各实施方式的解码方法的效果类似,这里不再赘述。
下面介绍本申请实施例提供的一种装置。如图9所示:
图9为本申请实施例提供的一种装置的结构示意图。如图9所示,该装置500可包括:处理器501、收发器505,可选的还包括存储器502。
示例性的,该装置500可以为编码装置,或解码装置。
所述收发器505可以称为收发单元、收发机、或收发电路等,用于实现收发功能。收发器505可以包括接收器和发送器,接收器可以称为接收机或接收电路等,用于实现接收功能;发送器可以称为发送机或发送电路等,用于实现发送功能。
存储器502中可存储计算机程序或软件代码或指令504,该计算机程序或软件代码或指令504还可称为固件。处理器501可通过运行其中的计算机程序或软件代码或指令503,或通过调用存储器502中存储的计算机程序或软件代码或指令504,对MAC层和PHY层进行控制,以实现本申请各实施例提供的编码方法或解码方法。其中,处理器501可以为中央处理器(central processing unit,CPU),存储器502例如可以为只读存储器(read-only memory,ROM),或为随机存取存储器(random access memory,RAM)。
本申请中描述的处理器501和收发器505可实现在集成电路(integrated circuit,IC)、模拟IC、射频集成电路RFIC、混合信号IC、专用集成电路(application specific integrated circuit,ASIC)、印刷电路板(printed circuit board,PCB)、电子设备等上。
上述装置500还可以包括天线506,该装置500所包括的各模块仅为示例说明,本申请不对此进行限制。
如前所述,以上实施例描述中的装置的结构可以不受图9的限制。该装置可以是独立的设备或者可以是较大设备的一部分。例如所述装置的实现形式可以是:
(1)独立的集成电路IC,或芯片,或,芯片系统或子系统;(2)具有一个或多个IC的集合,可选的,该IC集合也可以包括用于存储数据,指令的存储部件;(3)可嵌入在其他设备内的模块;(4)车载设备等等;(5)其他等等。
对于编码装置或解码装置的实现形式是芯片或芯片系统的情况,可参见图10所示的芯片的结构示意图。图10所示的芯片包括处理器601和接口602。其中,处理器601的数量可以是一个或多个, 接口602的数量可以是多个。可选的,该芯片或芯片系统可以包括存储器603。
其中,上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。
基于相同的技术构思,本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序包含至少一段代码,该至少一段代码可由计算机执行,以控制计算机用以实现上述方法实施例。
基于相同的技术构思,本申请实施例还提供一种计算机程序,当该计算机程序被执行时,用以实现上述方法实施例。
所述程序可以全部或者部分存储在与处理器封装在一起的存储介质上,也可以部分或者全部存储在不与处理器封装在一起的存储器上。
基于相同的技术构思,本申请实施例还提供一种芯片,包括处理器。处理器可实现上述方法实施例。
结合本申请实施例公开内容所描述的方法或者算法的步骤可以硬件的方式来实现,也可以是由处理器执行软件指令的方式来实现。软件指令可以由相应的软件模块组成,软件模块可以被存放于随机存取存储器(Random Access Memory,RAM)、闪存、只读存储器(Read Only Memory,ROM)、可擦除可编程只读存储器(Erasable Programmable ROM,EPROM)、电可擦可编程只读存储器(Electrically EPROM,EEPROM)、寄存器、硬盘、移动硬盘、只读光盘(CD-ROM)或者本领域熟知的任何其它形式的存储介质中。一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于ASIC中。
本领域技术人员应该可以意识到,在上述一个或多个示例中,本申请实施例所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。计算机可读介质包括计算机存储介质和通信介质,其中通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。存储介质可以是通用或专用计算机能够存取的任何可用介质。
上面结合附图对本申请的实施例进行了描述,但是本申请并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本申请的启示下,在不脱离本申请宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本申请的保护之内。

Claims (32)

  1. 一种编码方法,其特征在于,应用于第一网络设备,所述第一网络设备与至少一个第二网络设备通过共享介质进行通信,所述方法包括:
    对第一数据块进行编码,生成至少一个第二数据块;
    其中,所述第二数据块的数量小于所述第一数据块的数量;
    其中,所述第一数据块为在至少两个第三数据块中未被所述至少一个第二网络设备正确接收到的第三数据块;
    其中,所述至少两个第三数据块为所述第一网络设备向所述至少一个第二网络设备发送的数据;
    向所述至少一个第二网络设备发送所述至少一个第二数据块。
  2. 根据权利要求1所述的方法,其特征在于,所述对第一数据块进行编码,生成至少一个第二数据块,包括:
    根据第一编码信息对所述第一数据块进行编码,生成至少一个第二数据块;
    所述第一编码信息包括第一信息和与每个所述第二数据块分别对应的第二信息;
    其中,所述第一信息用于指示所述第二数据块的数量;
    所述第二信息用于指示用于编码生成所述第二数据块所基于的第一数据块。
  3. 根据权利要求2所述的方法,其特征在于,所述方法还包括:
    基于来自至少一个所述第二网络设备的第一反馈信息,生成所述第一编码信息;
    其中,所述第一反馈信息为相应第二网络设备对所述至少两个第三数据块的反馈信息,所述第一反馈信息用于指示在所述至少两个第三数据块中,未被所述相应第二网络设备正确接收到的目标数据块;
    其中,在至少一个所述第一反馈信息所分别对应的所述目标数据块的数量中,取值最大的数量为所述第一信息指示的数量;
    其中,所述第二信息所指示的第一数据块包括与不同所述第一反馈信息对应的所述目标数据块。
  4. 根据权利要求2或3所述的方法,其特征在于,所述第一编码信息包括第一矩阵,所述第一矩阵的行数为m且列数为n,或者,所述行数为n且所述列数为m,其中,m为所述第三数据块的数量,m≥2,n为所述第二数据块的数量,m>n≥1;
    所述第一矩阵中的m行元素或m列元素分别用于指示各个所述第三数据块是否被所述至少一个第二网络设备正确接收,其中,不同行或不同列的元素对应不同的第三数据块;
    所述第一矩阵中的n列元素或n行元素用于指示不同所述第三数据块被不同所述第二网络设备是否正确接收的信息。
  5. 根据权利要求3或4所述的方法,其特征在于,
    所述第一反馈信息,用于对已生成的所述第一编码信息进行更新;
    所述至少一个第二数据块,为基于更新后的第一编码信息,对所述第一数据块进行编码而生成的数据块。
  6. 根据权利要求1至5中任意一项所述的方法,其特征在于,所述对第一数据块进行编码,生成至少一个第二数据块,包括:
    对由不同所述第二网络设备未正确接收的至少两个第一数据块进行编码,生成至少一个第二数据块。
  7. 根据权利要求1至6中任意一项所述的方法,其特征在于,所述对第一数据块进行编码,生成至少一个第二数据块,包括:
    对第一数据块在有限域上进行编码,生成至少一个第二数据块。
  8. 根据权利要求7所述的方法,其特征在于,所述对第一数据块在有限域上进行编码,生成至少一个第二数据块,包括:
    对不同的第一数据块进行按位异或运算,生成至少一个第二数据块。
  9. 根据权利要求2至8中任意一项所述的方法,其特征在于,所述对第一数据块进行编码,生成至少一个第二数据块之后,所述方法还包括:
    向所述至少一个第二网络设备发送与每个所述第二数据块分别对应的所述第二信息。
  10. 一种解码方法,其特征在于,应用于第二网络设备,其中,所述第二网络设备与第一网络设备通过共享介质进行通信,所述方法包括:
    接收来自所述第一网络设备的至少一个第二数据块;
    接收来自所述第一网络设备的与每个所述第二数据块对应的第二信息;
    其中,任意一个所述第二数据块对应的所述第二信息,用于指示用于编码生成该第二数据块所基于的第一数据块以及至少一个第四数据块;
    其中,所述第四数据块为在至少两个第三数据块中所述第二网络设备正确接收到的第三数据块;
    所述第一数据块为在所述至少两个第三数据块中所述第二网络设备未正确接收到的第三数据块;
    根据所述第二信息指示的所述至少一个第四数据块,对所述至少一个第二数据块进行解码,获取第一数据块;
    其中,所述至少两个第三数据块为所述第一网络设备通过所述共享介质向至少一个第二网络设备发送的数据。
  11. 根据权利要求10所述的方法,其特征在于,所述根据所述第二信息指示的所述至少一个第四数据块,对所述至少一个第二数据块进行解码,获取第一数据块,包括:
    根据所述第二信息指示的所述至少一个第四数据块,在有限域上对所述至少一个第二数据块进行解码,获取所述第一数据块。
  12. 根据权利要求10或11所述的方法,其特征在于,所述方法还包括:
    根据第一反馈信息和所述第二信息,在检测到所述至少一个第二数据块能够用于解码生成所述第一数据块时,发送第二反馈信息至所述第一网络设备;
    其中,所述第一反馈信息为所述第二网络设备对所述至少两个第三数据块的反馈信息,所述第一反馈信息用于指示所述第二网络设备未正确接收到的第三数据块;
    所述第二反馈信息为所述第二网络设备对所述至少一个第二数据块的反馈信息,所述第二反馈信息用于指示所述第二网络设备已正确接收到所述第一数据块。
  13. 根据权利要求12所述的方法,其特征在于,所述根据第一反馈信息和所述第二编码信息,在检测到所述至少一个第二数据块能够用于解码生成所述第一数据块时,发送第二反馈信息至所述第一网络设备,包括:
    对所述第一反馈信息和所述第二编码信息按位与操作,获取操作结果;
    基于所述操作结果,在检测到所述至少一个第二数据块能够用于解码生成所述第一数据块时,发送第二反馈信息至所述第一网络设备。
  14. 根据权利要求10至13中任意一项所述的方法,其特征在于,所述根据所述第二信息指示的所述至少一个第四数据块,对所述至少一个第二数据块进行解码,获取第一数据块,包括:
    根据所述第二信息指示的所述至少一个第四数据块,对所述至少一个第二数据块进行并行解码,以获取至少一个所述第一数据块。
  15. 一种编码装置,其特征在于,应用于第一网络设备,所述第一网络设备与至少一个第二网络设备通过共享介质进行通信,所述编码装置用于:
    对第一数据块进行编码,生成至少一个第二数据块;
    其中,所述第二数据块的数量小于所述第一数据块的数量;
    其中,所述第一数据块为在至少两个第三数据块中未被所述至少一个第二网络设备正确接收到的第三数据块;
    其中,所述至少两个第三数据块为所述第一网络设备向所述至少一个第二网络设备发送的数据;
    向所述至少一个第二网络设备发送所述至少一个第二数据块。
  16. 根据权利要求15所述的编码装置,其特征在于,
    所述编码装置具体用于:根据第一编码信息对所述第一数据块进行编码,生成至少一个第二数据块;
    所述第一编码信息包括第一信息和与每个所述第二数据块分别对应的第二信息;
    其中,所述第一信息用于指示所述第二数据块的数量;
    所述第二信息用于指示用于编码生成所述第二数据块所基于的第一数据块。
  17. 根据权利要求16所述的编码装置,其特征在于,所述编码装置还用于:
    基于来自至少一个所述第二网络设备的第一反馈信息,生成所述第一编码信息;
    其中,所述第一反馈信息为相应第二网络设备对所述至少两个第三数据块的反馈信息,所述第一反馈信息用于指示在所述至少两个第三数据块中,未被所述相应第二网络设备正确接收到的目标数据块;
    其中,在至少一个所述第一反馈信息所分别对应的所述目标数据块的数量中,取值最大的数量为所述第一信息指示的数量;
    其中,所述第二信息所指示的第一数据块包括与不同所述第一反馈信息对应的所述目标数据块。
  18. 根据权利要求16或17所述的编码装置,其特征在于,所述第一编码信息包括第一矩阵,所述第一矩阵的行数为m且列数为n,或者,所述行数为n且所述列数为m,其中,m为所述第三数据块的数量,m≥2,n为所述第二数据块的数量,m>n≥1;
    所述第一矩阵中的m行元素或m列元素分别用于指示各个所述第三数据块是否被所述至少一个第二网络设备正确接收,其中,不同行或不同列的元素对应不同的第三数据块;
    所述第一矩阵中的n列元素或n行元素用于指示不同所述第三数据块被不同所述第二网络设备是否正确接收的信息。
  19. 根据权利要求17或18所述的编码装置,其特征在于,
    所述第一反馈信息,用于对已生成的所述第一编码信息进行更新;
    所述至少一个第二数据块,为基于更新后的第一编码信息,对所述第一数据块进行编码而生成的数据块。
  20. 根据权利要求15至19中任意一项所述的编码装置,其特征在于,所述编码装置具体用于:
    对由不同所述第二网络设备未正确接收的至少两个第一数据块进行编码,生成至少一个第二数据 块。
  21. 根据权利要求15至20中任意一项所述的编码装置,其特征在于,所述编码装置具体用于:
    对第一数据块在有限域上进行编码,生成至少一个第二数据块。
  22. 根据权利要求21所述的编码装置,其特征在于,所述编码装置具体用于:
    对不同的第一数据块进行按位异或运算,生成至少一个第二数据块。
  23. 根据权利要求16至22中任意一项所述的编码装置,其特征在于,所述编码装置还用于:
    向所述至少一个第二网络设备发送与每个所述第二数据块分别对应的所述第二信息。
  24. 一种解码装置,其特征在于,应用于第二网络设备,其中,所述第二网络设备与第一网络设备通过共享介质进行通信,所述解码装置用于:
    接收来自所述第一网络设备的至少一个第二数据块;
    接收来自所述第一网络设备的与每个所述第二数据块对应的第二信息;
    其中,任意一个所述第二数据块对应的所述第二信息,用于指示用于编码生成该第二数据块所基于的第一数据块以及至少一个第四数据块;
    其中,所述第四数据块为在至少两个第三数据块中所述第二网络设备正确接收到的第三数据块;
    所述第一数据块为在所述至少两个第三数据块中所述第二网络设备未正确接收到的第三数据块;
    根据所述第二信息指示的所述至少一个第四数据块,对所述至少一个第二数据块进行解码,获取第一数据块;
    其中,所述至少两个第三数据块为所述第一网络设备通过所述共享介质向至少一个第二网络设备发送的数据。
  25. 根据权利要求24所述的解码装置,其特征在于,所述解码装置具体用于:
    根据所述第二信息指示的所述至少一个第四数据块,在有限域上对所述至少一个第二数据块进行解码,获取所述第一数据块。
  26. 根据权利要求24或25所述的解码装置,其特征在于,所述解码装置还用于:
    根据第一反馈信息和所述第二信息,在检测到所述至少一个第二数据块能够用于解码生成所述第一数据块时,发送第二反馈信息至所述第一网络设备;
    其中,所述第一反馈信息为所述第二网络设备对所述至少两个第三数据块的反馈信息,所述第一反馈信息用于指示所述第二网络设备未正确接收到的第三数据块;
    所述第二反馈信息为所述第二网络设备对所述至少一个第二数据块的反馈信息,所述第二反馈信息用于指示所述第二网络设备已正确接收到所述第一数据块。
  27. 根据权利要求26所述的解码装置,其特征在于,所述解码装置具体用于:
    对所述第一反馈信息和所述第二编码信息按位与操作,获取操作结果;
    基于所述操作结果,在检测到所述至少一个第二数据块能够用于解码生成所述第一数据块时,发送第二反馈信息至所述第一网络设备。
  28. 根据权利要求24至27中任意一项所述的解码装置,其特征在于,所述解码装置具体用于:
    根据所述第二信息指示的所述至少一个第四数据块,对所述至少一个第二数据块进行并行解码,以获取至少一个所述第一数据块。
  29. 一种计算机可读存储介质,其特征在于,包括计算机程序,当所述计算机程序运行在计算机或处理器上时,使得所述计算机或所述处理器执行如权利要求1至9中任意一项所述的方法,或如权利要求10至14中任意一项所述的方法。
  30. 一种编码装置,其特征在于,包括一个或多个接口电路和一个或多个处理器;所述接口电路用于从存储器接收信号,并向所述处理器发送所述信号,所述信号包括存储器中存储的计算机指令;当所述处理器执行所述计算机指令时,所述处理器用于执行如权利要求1至9中任意一项所述的方法。
  31. 一种解码装置,其特征在于,包括一个或多个接口电路和一个或多个处理器;所述接口电路用于从存储器接收信号,并向所述处理器发送所述信号,所述信号包括存储器中存储的计算机指令;当所述处理器执行所述计算机指令时,所述处理器用于执行如权利要求10至14中任意一项所述的方法。
  32. 一种计算机程序产品,其特征在于,所述计算机程序产品包括软件程序,当所述软件程序被计算机或处理器执行时,使得权利要求1至9任一项所述的方法的步骤被执行,或使得权利要求10至14任一项所述的方法的步骤被执行。
PCT/CN2023/102401 2022-08-04 2023-06-26 编码、解码方法及其装置 WO2024027367A1 (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN202210935568.7A CN117596306A (zh) 2022-08-04 2022-08-04 编码、解码方法及其装置
CN202210935568.7 2022-08-04

Publications (1)

Publication Number Publication Date
WO2024027367A1 true WO2024027367A1 (zh) 2024-02-08

Family

ID=89848452

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2023/102401 WO2024027367A1 (zh) 2022-08-04 2023-06-26 编码、解码方法及其装置

Country Status (2)

Country Link
CN (1) CN117596306A (zh)
WO (1) WO2024027367A1 (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102075311A (zh) * 2010-12-27 2011-05-25 中国人民解放军理工大学 一种基于网络编码的无线协同广播/组播方法
CN102638331A (zh) * 2012-03-16 2012-08-15 北京邮电大学 基于随机线性网络编码的无线可靠广播方法
CN102984753A (zh) * 2011-09-05 2013-03-20 普天信息技术研究院有限公司 一种提高无线通信数据传输效率的方法
US20200067634A1 (en) * 2017-11-06 2020-02-27 Code On Network Coding, Llc System and technique for generating, transmitting and receiving network coded (nc) quick udp internet connections (quic) packets
CN113949491A (zh) * 2020-07-17 2022-01-18 大唐移动通信设备有限公司 一种harq-ack信息的传输方法和装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102075311A (zh) * 2010-12-27 2011-05-25 中国人民解放军理工大学 一种基于网络编码的无线协同广播/组播方法
CN102984753A (zh) * 2011-09-05 2013-03-20 普天信息技术研究院有限公司 一种提高无线通信数据传输效率的方法
CN102638331A (zh) * 2012-03-16 2012-08-15 北京邮电大学 基于随机线性网络编码的无线可靠广播方法
US20200067634A1 (en) * 2017-11-06 2020-02-27 Code On Network Coding, Llc System and technique for generating, transmitting and receiving network coded (nc) quick udp internet connections (quic) packets
CN113949491A (zh) * 2020-07-17 2022-01-18 大唐移动通信设备有限公司 一种harq-ack信息的传输方法和装置

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
"Master's Thesis", 1 May 2011, ANHUI UNIVERSITY, CN, article LI, YU: "Research on the Key Technologies of Cellular Controlled D2D Communication System", pages: 1 - 63, XP009552545 *
FUJITSU: "Discussion on HARQ-ACK feedback for DL CBG based (re)transmission", 3GPP DRAFT; R1-1717720 CBG HARQ ACK FINAL, 3RD GENERATION PARTNERSHIP PROJECT (3GPP), MOBILE COMPETENCE CENTRE ; 650, ROUTE DES LUCIOLES ; F-06921 SOPHIA-ANTIPOLIS CEDEX ; FRANCE, vol. RAN WG1, no. Prague, Czech Republic; 20171009 - 20171013, 8 October 2017 (2017-10-08), Mobile Competence Centre ; 650, route des Lucioles ; F-06921 Sophia-Antipolis Cedex ; France , XP051340905 *
T. TRAN ; T. NGUYEN ; B. BOSE ; V. GOPAL: "A hybrid network coding technique for single-hop wireless networks", IEEE JOURNAL ON SELECTED AREAS IN COMMUNICATIONS, IEEE SERVICE CENTER, PISCATAWAY., US, vol. 27, no. 5, 1 June 2009 (2009-06-01), US , pages 685 - 698, XP011262304, ISSN: 0733-8716 *

Also Published As

Publication number Publication date
CN117596306A (zh) 2024-02-23

Similar Documents

Publication Publication Date Title
US10469999B2 (en) Establishment of reliable multicast/broadcast in a wireless network
US7788424B2 (en) Method of transmitting data from a transmitting device
JP4834072B2 (ja) ワイヤレスパケットネットワークのためのブロック肯定応答プロトコル
US7487424B2 (en) Bitmap manager, method of allocating a bitmap memory, method of generating an acknowledgement between network entities, and network entity implementing the same
US8040836B2 (en) Local network coding for wireless networks
JP5876025B2 (ja) レガシーwlan受信機との並列通信のためのシステムおよび方法
US8832515B2 (en) Block acknowledgement mechanism including sequence number acknowledgement and retry bit
CN100359839C (zh) 在自动重复请求协议中使反馈响应最小的方法
US20060048034A1 (en) Method and apparatus for transmitting block ACK frame
JP2008228357A (ja) 並列チャネルエンコーダパケット伝送システム中でサブパケットを送信する方法および受信する方法
JP2011501483A (ja) 周辺機器のためのミリ波通信
US9081905B2 (en) Low latency interconnect bus protocol
WO2020143635A1 (zh) 数据的重传方法、装置、存储介质及电子装置
CN107209713B (zh) 按需文件修复的方法和系统
WO2022083371A1 (zh) 一种数据传输方法和装置
WO2024027367A1 (zh) 编码、解码方法及其装置
JP7210867B2 (ja) 確認パケット伝送方法および通信デバイス
TWI486030B (zh) 無線通訊系統查詢資料傳輸狀況的方法及其相關裝置
CN114337942B (zh) 一种报文重传方法、装置及电子设备
CN111385069A (zh) 数据传输方法及计算机设备
WO2022094974A1 (zh) 数据传输方法、装置、计算机设备及存储介质
CN114598651A (zh) 数据传输方法以及装置
WO2020182942A1 (en) Method of enabling harq, network entity and computer program
CN115174500B (zh) 一种基于pisa的用于网内聚合传输的发送节点和交换机
JP7318033B2 (ja) 無線通信装置および無線通信方法

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 23849077

Country of ref document: EP

Kind code of ref document: A1