Method of encoding and decoding data packets for protected transmission, data transmitter and data receiver
By employing chained finite forward error correction (NF FEC) technology in wireless networks, the reliability problem of transmitting small data transactions in mobile networks using traditional methods is solved, achieving efficient data transmission under burst error rate environments, and is suitable for web search and payment transactions in mobile environments.
Patent Information
- Application Number
- CN202280089329.2
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Filing Date
- 2022-04-07
- Publication Date
- 2025-11-07
- Estimated Expiration
- 2042-04-07
AI Technical Summary
Existing wireless network transmission methods cannot effectively improve data transmission reliability when faced with characteristics such as varying round-trip times, a large number of spurious packet losses, and connection migration. In particular, when transmitting small data transactions in mobile networks, traditional FEC codes and ARQ systems have limitations, resulting in low network traffic efficiency and increased energy consumption.
Chained Finite Forward Error Correction (NF FEC) code is used to divide data packets into data fragments of equal size and create a transmission packet output sequence. XOR operation and graph theory algorithm are used to reconstruct data packets at the receiving end, thereby improving transmission reliability.
It improves the reliability of packet-switched network transmission under burst error rate environments, and is particularly suitable for small data transactions in mobile environments, such as web search and payment transactions. It also optimizes small packet transmission performance and reduces energy consumption.
Smart Images

Figure CN118575433B_ABST
Abstract
Description
TECHNICAL FIELD
[0001] The present application relates generally to the field of mobile networks, and more specifically, to a method of encoding data packets for protected transmission, a method of decoding data packets from protected transmission, and corresponding data transmitter and data receiver. BACKGROUND
[0002] Currently, the number of mobile users is increasing, and when all mobile users use mobile services around the world, network traffic (or large-scale network activity) is generated. Generally, an important part of network traffic is the relatively small data packets exchanged between a client and a server during a short session (e.g., a user authentication session). Traditionally, network protocols are mainly used to optimize network traffic for traditional scenarios, such as working in a wired network with stable round-trip time (RTT), few packet loss, and no packet sequence rearrangement. However, such network protocols are not efficient and cannot be used in wireless networks with varying RTT, a large number of false packet loss, connection migration, and similar inherent characteristics.
[0003] Currently, wireless networks are based on wireless communication standards, which involve forward erasure correction (FEC) codes to improve the probability of transmitting data. However, traditional FEC codes are not suitable for small data transactions on the one hand, and automatic repeat request (ARQ) systems cannot solve this problem because packet loss in any state will asymptotically affect the transmission time of feedback-based systems. In addition, due to a large number of mobile users, the energy consumption and additional cost of redundant data of traditional wireless networks are also increasing, which means that the generated FEC codes should be limited but scalable. The Gilbert-Elliot model for packet loss shows that in a particular scenario, if the network falls into a poor state and starts to lose packets, the network is very likely to continue in this state and continue to lose packets. However, there is a technical problem of how to improve the reliability of transmitting data through a wireless network (e.g., transmitting excess data transactions through a mobile network).
[0004] Therefore, according to the above discussion, there is a need to overcome the above-mentioned disadvantages related to traditional methods of transmitting data through a wireless network. SUMMARY
[0005] The present invention provides a method of encoding data packets for protected transmission, a method of decoding data packets from protected transmission, and corresponding data transmitter and corresponding data receiver. The present invention provides a solution to the existing problem of how to improve the reliability of transmitting data over wireless networks, for example, transmitting excess data transactions over mobile networks. The object of the present invention is to provide a solution that at least partially overcomes the problems encountered in the prior art and to provide an improved method of encoding data packets for protected transmission, an improved method of decoding data packets from protected transmission, and corresponding data transmitter and data receiver. The present invention also provides a chained and finite forward error correction (NF FEC) code and application for data transactions over mobile networks.
[0006] One or more objects of the present invention are achieved by the solution provided in the appended independent claims. Advantageous implementations of the invention are further defined in the dependent claims.
[0007] In one aspect, the present invention provides a method of encoding data packets for protected transmission. The method comprises, at a transmitting end, dividing data packets to be protected into m data shards Y m of equal size. The method further comprises creating a first transmission packet X1 of a transmission packet output sequence to include the first data shard Y1 and an index thereof, wherein the first transmission packet is labeled as having a degree of 1 to serve as an entry point for decoding the output sequence. The method further comprises creating a plurality of transmission packets immediately after the first transmission packet in the output sequence, wherein each transmission packet of the plurality of transmission packets is labeled as having a degree of 2 and includes a result of an XOR operation between a pair of different data shards Y m and an index of the data shards of the pair, the plurality of transmission packets including all pairs of different data shards Y m . The method further comprises creating a final transmission packet from remaining data shards Y2,..., Y m immediately after the plurality of transmission packets in the output sequence, wherein each transmission packet in the final transmission packet is labeled as having a degree of 1 to serve as an entry point for the decoding and includes one data shard and an index of the data shard. The method further comprises swapping the first transmission packet X1 of the output sequence with the second transmission packet X2 of the output sequence.
[0008] The described method is used to develop lightweight, systematic chained and finite-forward error correction (NF FEC) codes. These NF FEC codes improve the reliability of data transmission over packet-switched networks with burst error rates, are optimal for relatively small data transactions, and are suitable for mobile environments, such as web search and payment transactions. Compared to traditional methods, this method also facilitates the generation of optimal distributed redundancy for relatively small data volumes and improves the overall performance of small packet transmission.
[0009] In another aspect, the present invention provides a method for decoding data packets from a protected transmission. The method includes: at a receiving end, receiving a protected transmission, the protected transmission comprising k transmission packets X of a transmission packet output sequence. i Where i is from 1 to k, and the k transmission packets X i Encoding is performed using the method described in any one of claims 1 to 4 to protect data packets, wherein the number of received transmission packets k is equal to or greater than the number of data fragments m. The method further includes: encoding from each received transmission packet X... i Obtain the index of the data fragment used to create the transmission packet, as parameters x and y, wherein if the received transmission packet X i If it is an entry point, then its parameters x and y are equal. The method further includes: constructing a graph G(Y,X), where vertex Y corresponds to the data segment Y to be decoded. m Edge X includes the received transmission packet X. i As the effective load, each edge X i Associated with vertex Y x Or vertex Y x Y y The Y x Y y This includes creating the transmission packet X based on the acquired parameters x and y. i The method further includes: partitioning the data according to an incrementing index i, sequentially partitioning each edge X of the graph G(Y,X). i Perform the following processing: If the edge X i The vertex Y associated with its x parameter x Decoded and the edge X i The vertex Y associated with its y parameter y If X is decoded, the current edge processing terminates, and processing continues to the next edge. Furthermore, if X... i If the entry point is the vertex Y, where the x-parameter equals the y-parameter, then the vertex Y is decoded. x If the vertex Y x Decoded, and the vertex Y yIf not decoded, then the vertex Y will be... y Decoded as equal to (X) i XOR Y x Furthermore, if the vertex Y y Decoded, and the vertex Y x If not decoded, then the vertex Y will be... x Decoded as equal to (X) i XOR Y y If the vertex Y x Not decoded, and the vertex Y y If not decoded, a new edge is added to the graph, the new edge having the payload X. i The index i is equal to the quantity k plus one, and the parameters x and y are the same as the current edge, so that the new edge is associated with the vertex Y. x and Y y Furthermore, if all vertices of the graph are decoded, the data packet encoded in the protected transmission is reconstructed. Decoding vertex Y includes marking vertex Y as decoded and checking each edge X associated with vertex Y. Additionally, if the vertex Y associated with edge X... x If the vertex Y is decoded, then the decoding process terminates; x If not decoded, then vertex Y... x Decoding equals (X XOR Y).
[0010] The method described is used to develop lightweight, systematic chained and finite-forward error correction (NF FEC) codes, which improve the reliability of data transmission over packet-switched networks with burst error rates. NF FEC codes are optimal for relatively small data transactions and are suitable for mobile environments, such as web search and payment transactions.
[0011] In yet another aspect, the present application provides a data sender, the data sender comprising: a communication interface for communicating with a receiving end over one or more communication channels; a sender processor for selecting a data packet to be protected from a data packet queue. The sender processor is further configured to: encode the selected data packet to obtain a transmission packet output sequence; send the selected data packet in original format together with the transmission packet output sequence as a protected transmission to the receiving end; set a retransmission timer for a predefined time period. The sender processor is further configured to: in response to receiving an acknowledgement message from the receiving end acknowledging receipt of the selected data packet in the protected transmission within the predefined time period, release the retransmission timer, exclude the selected data packet from the queue, and return the selection to select a next data packet if the queue is not empty. The sender processor is further configured to: in response to triggering the retransmission timer, return the encoding of the selected data packet.
[0012] The disclosed data sender implements all advantages and technical features of the inventive method.
[0013] In yet another aspect, the present application provides a data sender, the data sender comprising: a communication interface for communicating with a receiving end over one or more communication channels; a sender processor for selecting a data packet to be protected from a data packet queue. The sender processor is further configured to: encode the selected data packet to obtain a transmission packet output sequence; send the selected data packet in original format together with the transmission packet output sequence as a protected transmission to the receiving end; set a retransmission timer for a predefined time period. The sender processor is further configured to: in response to receiving an acknowledgement message from the receiving end acknowledging receipt of the selected data packet in the protected transmission within the predefined time period, release the retransmission timer, exclude the selected data packet from the queue, and return the selection to select a next data packet if the queue is not empty. The sender processor is further configured to: in response to triggering the retransmission timer, return the encoding of the selected data packet.
[0014] The disclosed data sender implements all advantages and technical features of the inventive method.
[0015] It is to be understood that all the above embodiments can be combined together.
[0016] It has to be noted that all devices, elements, circuitry, units and means described in the present application can be implemented by software or hardware elements or any type of combination thereof. All steps which are performed by the various entities described in the present application as well as the functionalities described to be performed by the various entities are intended to be means for performing the respective steps and functionalities and the respective entities are meant to embody such means. Although the specific functionalities performed by the various entities are described in the present application, the person skilled in the art will understand that these functionalities are only examples and that different or additional functionalities may be performed by the various entities. Furthermore, the person skilled in the art will understand that the various entities can be implemented in software or hardware elements or any type of combination thereof. It is further understood that the features of the present application are susceptible to various modifications and alternative forms without departing from the scope of the present application as recited in the appended claims.
[0017] Additional aspects, advantages, features and objects of the present application will become apparent to those skilled in the art from the detailed description of illustrative implementations thereof, which is to be taken in conjunction with the appended claims and drawings. BRIEF DESCRIPTION OF DRAWINGS
[0018] The above summary, as well as the following detailed description of illustrative embodiments, is better understood when read in conjunction with the appended drawings. For the purpose of illustrating the application, exemplary constructions of the present application are shown in the drawings. However, the present application is not limited to the specific methods and tools disclosed herein. In addition, one skilled in the art will understand that the drawings are not drawn to scale. Wherever possible, the same reference numbers will be used throughout the drawings to refer to the same or like elements.
[0019] Embodiments of the present application will now be described, by way of example only, with reference to the accompanying drawings in which:
[0020] Figure 1 is a flowchart of a method of encoding a data packet for protected transmission provided by an embodiment of the present application;
[0021] Figure 2 is a flowchart of a method of decoding a data packet from a protected transmission provided by an embodiment of the present application;
[0022] Figure 3 is a block diagram of a data transmitter provided by an embodiment of the present application;
[0023] Figure 4 is a block diagram of a data receiver provided by an embodiment of the present application;
[0024] Figure 5A is a flowchart of a chained and finite (NF) encoding and decoding process for sending protected data between erasure channels provided by an embodiment of the present application;
[0025] Figure 5B is a graphical representation of a graph representation decoding provided by an embodiment of the present application;
[0026] Figure 6A 、 Figure 6B and Figure 6C collectively depict a flowchart of encoding an NF code by a data transmitter according to an embodiment of the present invention;
[0027] Figure 7A and Figure 7B collectively depict a flowchart of decoding an NF code by a data receiver according to an embodiment of the present invention;
[0028] Figure 8 is a depiction of communication between a data transmitter and a data receiver according to an embodiment of the present invention;
[0029] Figure 9A is a depiction of communication of redundant data between a transmitter and a receiver according to an embodiment of the present invention;
[0030] Figure 9B is a depiction of a quick UDP internet connections (QUIC) packet according to an embodiment of the present invention.
[0031] In the drawings, underlined numerals are used to designate items in the figures by the numerals being underlined or adjacent to the items. Un-underlined numerals are associated with items identified by the lines that associate the un-underlined numerals with the items. When a numeral is un-underlined and has an associated arrow, the un-underlined numeral is used to identify the general item to which the arrow is pointing. DETAILED DESCRIPTION
[0032] The following detailed description illustrates embodiments of the invention and methods through which these embodiments can be implemented. While some modes for carrying out the invention have been disclosed, those skilled in the art will recognize that other embodiments for carrying out or practicing the invention can exist.
[0033] Figure 1 is a flowchart of a method of encoding a data packet for protected transmission according to an embodiment of the present invention. Referring to Figure 1 , a method 100 of encoding a data packet for protected transmission is shown. The method 100 includes steps 102 through 110.
[0034] A method 100 of encoding a data packet for protected transmission is provided. The method 100 is used to improve the reliability of transmitting data over packet switched networks with burst error rates, is optimal for relatively small data transactions, and is suitable for mobile environments.
[0035] At step 102, the method 100 comprises, at the sending end, dividing a data packet to be protected into m data slices Y of equal size m . First, at the sending end, a data packet is selected, for example S j . In one example, the data packet is also referred to as a given original data packet to be protected. Thereafter, the data packet is divided into m data slices Y of equal size m . For example, the number m is the number of divisions, as further illustrated in Figure 5A According to one embodiment, the method 100 further comprises, prior to dividing the data packet into data slices, padding the data packet to be protected with zeros. In one implementation, the data packet to be protected is padded with zeros, as needed, prior to dividing said data packet into data slices. In one example, padding data is added to the data packet to be protected.
[0036] At step 104, the method 100 comprises, at the sending end, creating a first transmission packet X1 of a transmission packet output sequence to include a first data slice Y1 and an index thereof, and the first transmission packet X1 is marked as having a degree of 1 to serve as an entry point for a decoding output sequence. First, a packet sequence X k is formed as an entry point. Thereafter, the first transmission packet X1 is created and marked as having a degree of 1 to serve as an entry point for decoding the transmission packet output sequence. The first transmission packet X1 includes a first data slice Y1 and an index thereof. In one example, the method 100 comprises placing a data slice Y0 and a 0th transmission packet X0 to the sequence X k as an entry point and marking the packet as degree 1, which can be used in a decoding algorithm. In one implementation, the packet X0 is equal to S j .
[0037] At step 106, the method 100 comprises, at the sending end, creating a plurality of transmission packets in the output sequence immediately after the first transmission packet X1, and each of the plurality of transmission packets is marked as having a degree of 2 and includes a result of an XOR operation between a pair of different data slices Y m and an index of the data slices in said pair, the plurality of transmission packets including all pairs of different data slices Y m . In other words, the method 100 comprises creating a plurality of transmission packets for different data slices Y m , for example the plurality of transmission packets includes all pairs of different data slices Y m . Furthermore, the plurality of transmission packets is created in the output sequence immediately after the first transmission packet X1. For example, the method 100 comprises creating a transmission packet X2, a transmission packet X3, a transmission packet X4, up to a transmission packet X 10 , which are created in the output sequence immediately after the first transmission packet X1, as further illustrated in Figure 5Aeach of the plurality of transmission packets is labeled with a degree of two (i.e., the constant value 2), and each of the plurality of transmission packets includes a pair of different data shards Y m and an index of the data shards in the pair. In one example, the method 100 includes selecting as the distance z between the recombination shards zero, and incrementing each loop step until z is less than m - 1, and performing a final transmission packet X k = Yi ^ Yj + z, i≠ j. In another example, the transmission packet X2 includes the first data shard Y1, and the transmission packet X3 includes Y2 ^ Y3.
[0038] At step 108, the method 100 includes, at the sending end, placing the remaining data shards Y2,..., Y m in the output sequence immediately after the plurality of transmission packets. In addition, each of the final transmission packets is labeled with a degree of one as an entry point for decoding, and includes one data shard and an index of the data shard. For example, the method 100 includes placing the remaining data shards Y2,..., Y m into the final transmission packet sequence X k that is formed. In addition, the remaining data shards Y2,..., Y m are placed as entry points, e.g., each of the final transmission packets is labeled with a degree of one as an entry point for decoding, as further shown and described in Figure 5A .
[0039] At step 110, the method 100 includes, at the sending end, swapping the first transmission packet X1 of the output sequence with the second transmission packet X2 of the output sequence. In one example, the 0th transmission packet X0 of the output sequence is also swapped with the first transmission packet X1 of the output sequence. In addition, the first transmission packet X1 of the output sequence is swapped with the second transmission packet X2 of the output sequence.
[0040] According to one embodiment, the method 100 further includes transmitting the transmission packet output sequence as a protected transmission to a receiving end. In other words, the method 100 includes transmitting the transmission packet output sequence, e.g., X0,..., X k , as a protected transmission from the sending end to the receiving end. In such an embodiment, the method 100 further includes transmitting the transmission packet output sequence as a protected transmission includes transmitting the data packets in the original format as part of the protected transmission along with the transmission packet output sequence.
[0041] The method 100 is for developing a lightweight systematic chained and finite forward error correction (NF FEC) code that improves the reliability of transmitting data over packet-switched networks with burst error rates, is optimal for relatively small data transactions, and is suitable for mobile environments, such as for web searches, payment transactions. The method 100 is based on fountain codes, also supported by the mathematical form of fountain codes. Moreover, by modifying and optimizing these codes for our case, the method 100 inherits most of the features of fountain codes and, in comparison with traditional methods, also makes some improvements taking into account the specific problems and challenges of small packet optimization, resulting in an overall performance improvement for small packet transmissions, thus enhancing fountain codes.
[0042] Steps 102 to 110 are merely illustrative, and other alternatives can be provided where one or more steps are added, one or more steps are deleted, or one or more steps are provided in a different sequence without departing from the scope of the claims herein.
[0043] Figure 2 is a flowchart of a method of decoding a data packet from a protected transmission, provided by an embodiment of the present invention. Referring to Figure 2 , a method 200 of decoding a data packet from a protected transmission is shown. The method 200 includes steps 202 to 208.
[0044] A method 200 of decoding a data packet from a protected transmission is provided. The method 200 improves the reliability of transmitting data over packet-switched networks with burst error rates, is optimal for relatively small data transactions, and is suitable for mobile environments.
[0045] At step 202, the method 200 includes receiving, at a receiving end, a protected transmission including k transmission packets X i , where i is 1 to k, of an output sequence of transmission packets to protect a data packet. Moreover, the number k of received transmission packets is equal to or greater than the number m of data shards. First, the method 100 includes encoding, at a sending end, an output sequence of transmission packets to protect a data packet. Thereafter, the method 200 includes receiving, at a receiving end, a protected transmission including k transmission packets X i , where i is 1 to k, of an output sequence of transmission packets to protect a data packet. Moreover, the number k of received transmission packets is equal to or greater than the number m of data shards. First, the method 100 includes encoding, at a sending end, an output sequence of transmission packets to protect a data packet. Thereafter, the method 200 includes receiving, at a receiving end, a protected transmission including k transmission packets X i , where i is 1 to k.
[0046] At step 204, the method 200 includes obtaining, from each received transmission packet, indices of data shards that create the transmission packet X i , as parameters x and y. Moreover, if the received transmission packet Xi is an entry point, its parameters x and y are equal. At the receiving end, each packet X i includes an index of the data slice that created the transmission packet, as parameters x and y. Furthermore, if the transmission packet X i is an entry point, its parameters x and y are equal, for example if for this entry point x is equal to 1, then y is also equal to 1, as Figure 5A further illustrated. In one implementation, for a given set of k transmission packets X i all transmission packets belong to a data packet (e.g. a message S j ), said set including any number of entry points in any order, and the number k of transmission packets being equal or greater than the number m of data slices.
[0047] At step 206, the method 200 comprises building a graph G(Y, X), where vertices Y correspond to data slices Y m to be decoded, and edges X include the received transmission packets X i as payloads, so that each edge X i is associated to a vertex Y x or a vertex Y x , Y y , Y x , Y y includes data slices of the transmission packet X i created according to the obtained parameters x and y. First, the graph G(Y, X) is built, vertices Y of the graph G(Y, X) corresponding to data slices Y m to be decoded. Furthermore, transmission packets correspond to edges E = X k.x,k.y of the graph G(Y, X), as Figure 5B further illustrated and described.
[0048] At step 208, the method 200 comprises processing each edge X i of the graph G(Y, X) in turn, according to an increasing index i. In other words, for each edge X i of the graph G(Y, X), the increasing index i is processed in turn. Step 208 is further decomposed into steps 208A to 208F, and the processing is performed in turn. At step 208A, the method 200 comprises processing if the vertex Y i to which the edge X x is associated according to the x parameter is decoded and the vertex Y i to which the edge X y is associated according to the y parameter is decoded, then the current edge processing is terminated and the next edge processing is continued. In other words, if x is decoded and y is decoded, then continue. Furthermore, at step 208B, the method 200 comprises checking if X iis the entry point, i.e. the x parameter is equal to the y parameter, then the vertex Y is decoded x In other words, if the x parameter of the entry point is equal to the y parameter, the method 200 comprises decoding the vertex Y of the graph G(Y,X) x Moreover, at step 208C, the method 200 comprises checking if the vertex Y x is decoded, and the vertex Y y is not decoded, then decoding the vertex Y y as equal to (X i XOR Y x ). For example, if x is decoded and y is not decoded, the method 200 comprises decoding the vertex Y of the graph G(Y,X) y , for example Afterwards, at step 208D, the method 200 comprises checking if the vertex Y y is decoded, and the vertex Y x is not decoded, then decoding the vertex Y x as equal to (X i XOR Y y ). For example, if y is decoded and x is not decoded, the method 200 comprises decoding the vertex Y of the graph G(Y,X) x , for example Moreover, at step 208E, the method 200 comprises checking if the vertex Y x is not decoded, and the vertex Y y is not decoded, then adding a new edge to the graph G(Y,X) having a payload X i , an index i equal to the number k plus one, the parameters x and y being the same as the current edge, so that the new edge is associated to the vertices Y x and Y y . For example, if x is not decoded and y is not decoded, the method 200 comprises adding a new edge to the graph G(Y,X) having a payload X i , for example adding the edge The method 200 also comprises an index i equal to the number k plus one, the parameters x and y being the same as the current edge, so that the new edge is associated to the vertices Y x and Y y , for example placing the not decoded packets G(X,Y) = X k and G(Y,X) = X k . Finally, at step 208F, the method 200 comprises checking if all the vertices of the graph are decoded, then reconstructing the packets encoded in the protected transmission. In other words, if all the nodes in the graph G(Y,X) are decoded, the method 200 comprises reconstructing the protected packets and injecting the protected packets into the network stack.
[0049] Further, the decoding of vertex Y comprises marking vertex Y as decoded and checking each edge X associated to vertex Y. Further, if vertex Y associated to edge X is decoded, the decoding is terminated, if vertex Y is not decoded, vertex Y is decoded equal to (X XOR Y). In other words, the decoding of vertex Y comprises marking vertex Y of graph G(Y, X) as decoded, for example G(y) is marked as decoded. Further, for each edge X associated to vertex Y, x if vertex Y of graph G(Y, X) associated to edge X is decoded, x the method 200 comprises terminating the decoding. Further, if vertex Y is not decoded, vertex Y is decoded equal to x (X XOR Y). In other words, the decoding of vertex Y comprises marking vertex Y of graph G(Y, X) as decoded, for example G(y) is marked as decoded. Further, for each edge X associated to vertex Y, if vertex Y of graph G(Y, X) associated to edge X is decoded, x the method 200 comprises terminating the decoding. Further, if vertex Y is not decoded, vertex Y is decoded equal to x (X XOR Y). In other words, the decoding of vertex Y comprises marking vertex Y of graph G(Y, X) as decoded, for example G(y) is marked as decoded. Further, for each edge X associated to vertex Y, x (X XOR Y). In other words, the decoding of vertex Y comprises marking vertex Y of graph G(Y, X) as decoded, for example G(y) is marked as decoded. Further, for each edge X associated to vertex Y, According to one embodiment, if the data packet in the original format is sent in a protected transmission and successfully received at the receiving end, the method 200 comprises terminating the processing of the received transmission packet.
[0050] The method 200 is used to develop a lightweight systematic chained and finite forward error correction (NF FEC) code that improves the reliability of transmitting data over packet switched networks with burst error rates, is optimal for relatively small data transactions, and is suitable for mobile environments, for example for web searches, payment transactions.
[0051] Steps 202 to 208 and 208A to 208F are merely illustrative, and other alternatives can be provided where one or more steps are added, one or more steps are deleted, or one or more steps are provided in an order different from that described herein without departing from the scope of the claims herein.
[0052] Figure 3 is a block diagram of a data transmitter according to one embodiment of the present invention. Referring to Figure 3 , a block diagram 300 is shown, describing a data transmitter 302, a communication interface 304, a transmitter processor 306, a memory 308, one or more communication channels 310, and a receiving end 312.
[0053] The data transmitter 302 can include suitable logic, circuitry, interfaces, and / or code to transmit the sequence of transport packets to the receiving end 312 over one or more communication channels 310. Examples of the data transmitter 302 can include, but are not limited to, a transmitter, a sender, a transceiver, an encoder, and the like. The communication interface 304 includes hardware or software to communicate with the receiving end 312 over one or more communication channels 310. Examples of the communication interface 304 can include, but are not limited to, a computer port, a network socket, a network interface controller (NIC), and any other network interface device.
[0054] The transmitter processor 306 can include suitable logic, circuitry, interfaces, and / or code to select the data packets to be protected from the data packet queue. Examples of the implementation of the transmitter processor 306 can include, but are not limited to, a central data processing device, a microprocessor, a microcontroller, a complex instruction set computing (CISC) processor, an application-specific integrated circuit (ASIC) processor, a reduced instruction set (RISC) processor, a very long instruction word (VLIW) processor, a state machine, and other processors or control circuitry.
[0055] The memory 308 can include suitable logic, circuitry, and / or interfaces to hold the sequence of transport packets. Examples of the implementation of the memory 308 can include, but are not limited to, an electrically erasable programmable read-only memory (EEPROM), a dynamic random-access memory (DRAM), a random access memory (RAM), a read-only memory (ROM), a hard disk drive (HDD), a flash memory, a secured digital (SD) card, a solid-state drive (SSD), and / or a CPU cache memory.
[0056] Each of the one or more communication channels 310 corresponds to a channel used as an intermediary between the data sender 302 and the receiving end 312. The receiving end 312 can include suitable logic, circuitry, interfaces, and / or code for receiving the sequence of transmission packets output over the one or more communication channels 310. Examples of the receiving end 312 can include, but are not limited to, a receiver, a decoder, a transceiver, and the like.
[0057] The data sender 302 is provided with a communication interface 304 for communicating with the receiving end 312 over the one or more communication channels 310. The data sender 302 further includes a sender processor 306 for selecting data packets to be protected from a queue of data packets and encoding the selected data packets to obtain a sequence of transmission packets in accordance with the method 100. First, the sender processor 306 is configured to receive a queue of data packets. Thereafter, the sender processor 306 is configured to select data packets to be protected from the queue of data packets and encode the selected data packets to obtain a sequence of transmission packets. For example, the sender processor 306 divides the data packets to be protected into m equal-sized data shards Y m and creates a first transmission packet X1 of the sequence of transmission packets to include the first data shard Y1 and an index thereof. Further, the first transmission packet is tagged with a degree of 1 as an entry point for decoding the output sequence. The sender processor 306 further creates a plurality of transmission packets in the output sequence immediately after the first transmission packet. Further, each of the plurality of transmission packets is tagged with a degree of 2 and includes a result of an XOR operation between a pair of different data shards Y m and an index of the data shards of the pair. The plurality of transmission packets includes all pairs of different data shards Y m Thereafter, the sender processor 306 creates a final transmission packet from the remaining data shards Y2,..., Y m in the output sequence immediately after the plurality of transmission packets. Further, each of the final transmission packets is tagged with a degree of 1 as an entry point for decoding and includes one data shard and an index of the data shard, and swaps the first transmission packet X1 of the output sequence with a second transmission packet X2 of the output sequence. In one example, the sender processor 306 is configured to store the output sequence in a memory 308.
[0058] The sender processor 306 further sends the selected data packets in the original format along with the sequence of transmission packets as a protected transmission to the receiving end 312 and sets a retransmission timer for a predefined time period. For example, the sender processor 306 sends the selected data packets in the original format along with the sequence of transmission packets as a protected transmission to the receiving end 312 using the communication interface 304 over the one or more communication channels 310. Thereafter, the receiving end 312 is configured to receive the protected transmission through another communication interface.
[0059] The transmitter processor 306 is further configured to release the retransmission timer in response to receiving an acknowledgement message from the receiver 312 acknowledging receipt of the selected data packet in the protected transmission within the predefined time period, exclude the selected data packet from the queue, and return the selection to select the next data packet if the queue is not empty. Alternatively, the transmitter processor 306 is configured to return the encoding of the selected data packet in response to triggering the retransmission timer. In other words, if the protected transmission further comprises the data packet in the original format, the receiver 312 is configured to transmit an acknowledgement message to the data transmitter 302 through the one or more communication channels 310. The acknowledgement message is configured to acknowledge receipt of the selected data packet in the protected transmission within the predefined time period. Thereafter, the transmitter processor 306 of the data transmitter 302 is configured to exclude the selected data packet from the queue and return the selection to select the next data packet if the queue is not empty or return the encoding of the selected data packet in response to triggering the retransmission timer. The data transmitter 302 is advantageous in improving reliability of transmitting data through a packet-switched network having burst error rates, is optimal for relatively small data transactions, and is suitable for mobile environments.
[0060] Figure 4 is a block diagram of a data receiver provided by an embodiment of the present application. Referring to Figure 4 , a block diagram 400 is shown depicting a data receiver 402, a communication interface 404, a receiver processor 406, a memory 408, a transmitting end 410, and the one or more communication channels 310.
[0061] The data receiver 402 can include suitable logic, circuitry, interfaces, and / or code for receiving the sequence of transmitted packets through the one or more communication channels 310. Examples of the data receiver 402 can include, but are not limited to, a receiver, a decoder, a transceiver, and the like.
[0062] The communication interface 404 includes hardware or software for communicating with the transmitting end 410 through the one or more communication channels 310. Examples of the communication interface 404 can include, but are not limited to, a computer port, a network socket, a network interface controller (NIC), and any other network interface device.
[0063] The receiver processor 406 can include suitable logic, circuitry, interfaces and / or code for receiving the data packets to be protected from the data packet queue. Examples of implementation of the receiver processor 406 can include, but are not limited to, a central data processing device, a microprocessor, a microcontroller, a complex instruction set computing (CISC) processor, an application-specific integrated circuit (ASIC) processor, a reduced instruction set (RISC) processor, a very long instruction word (VLIW) processor, a state machine, and other processors or control circuitry.
[0064] The memory 408 can include suitable logic, circuitry, and / or interfaces for holding the transmission packet output sequence. Examples of implementation of the memory 408 can include, but are not limited to, an electrically erasable programmable read-only memory (EEPROM), a dynamic random-access memory (DRAM), a random access memory (RAM), a read-only memory (ROM), a hard disk drive (HDD), a flash memory, a secured digital (SD) card, a solid-state drive (SSD), and / or a CPU cache memory.
[0065] Each of the one or more communication channels 310 corresponds to a channel that is used as an intermediary between the data receiver 402 and the sending end 410. The sending end 410 can include suitable logic, circuitry, interfaces and / or code for sending the transmission packet output sequence to the data receiver 402 over the one or more communication channels 310. Examples of the sending end 410 can include, but are not limited to, a transmitter, a sender, a transceiver, an encoder, and the like.
[0066] The data receiver 402 is provided with the communication interface 404 for communicating with the sending end 410 over the one or more communication channels 310. The data receiver 402 further includes the receiver processor 406 for receiving the protected transmission from the sending end 410 using the communication interface 404, the protected transmission including a plurality of transmission packets, the plurality of transmission packets being protected by Figure 1Method 100 encodes the data packets to protect them. Furthermore, if the protected transmission also includes data packets in their original format, the receiver processor 406 sends an acknowledgment message to the sender 410 to confirm receipt of the data packets and terminate the processing of the protected transmission. In one implementation, the communication interface 404 is used by the receiver processor 406 to send acknowledgment messages via one or more communication channels 310. Additionally, if the protected transmission does not include data packets in their original format, the receiver processor 406 decodes the data packets from the received transmission packets using method 200 to reconstruct the data packets, injects the reconstructed data packets into the network stack, and sends an acknowledgment message to the sender 410 to confirm receipt of the data packets.
[0067] In one implementation, the receiver processor 406 is configured to receive a protected transmission, the protected transmission comprising k transmission packets X of a transmission packet output sequence. i Where i is from 1 to k, and the k transmission packets X i pass Figure 1 Method 100 encoding is used to protect data packets. The number of received transmission packets k is equal to or greater than the number of data fragments m. Receiver processor 406 is also used to process each received transmission packet X... i The index of the data fragment used to create the transport packet is obtained from the data fragment, and used as parameters x and y. If the received transport packet X... i If it is an entry point, then its parameters x and y are equal. The receiver processor 406 is also used to construct a graph G(Y,X), where vertex Y corresponds to the data fragment Y to be decoded. m Edge X includes the received transmission packet X. i As the effective load, each edge X i Associated with vertex Y x Or vertex Y x Y y The Y x Y y This includes creating a transport packet X based on the obtained parameters x and y. i The data is then fragmented. Afterwards, the receiver processor 406 is further used to sequentially fragment each edge X of graph G(Y,X) according to the incrementing index i. i Perform the following processing: If edge X i The vertex Y associated with its x parameter x Decoded and edge X i The vertex Y associated with its y parameter y If X is decoded, the current edge processing terminates, and processing continues to the next edge. Furthermore, if X... i If the entry point is the vertex Y, where the x-parameter equals the y-parameter, then the vertex Y is decoded. x If the vertex Y x Decoded, and the vertex Yy If not decoded, then the vertex Y will be... y Decoded as equal to (X) i XOR Y x Furthermore, if vertex Y... y Decoded and vertex Y x If not decoded, then vertex Y... x Decoded as equal to (X) i XOR Y y If vertex Y x Undecoded and vertex Y y If not decoded, add a new edge to the graph, the new edge having a payload X. i The index i is equal to the quantity k plus one, and the parameters x and y are the same as the current edge, so that the new edge is associated with vertex Y. x and Y y Furthermore, if all vertices of the graph are decoded, the data packets encoded in the protected transmission are reconstructed. Additionally, decoding vertex Y involves marking vertex Y as decoded and checking each edge X associated with vertex Y, and if edge X is associated with vertex Y... x If it is decoded, then decoding terminates; however, if vertex Y... x If not decoded, then vertex Y... x Decoded as (X XOR Y). Data receiver 402 provides lightweight, systematic chained and finite forward error correction (NF FEC) codes, which are beneficial for improving the reliability of data transmission over packet-switched networks with burst error rates. They are optimal for relatively small data transactions and suitable for mobile environments.
[0068] Figure 5A This is a flowchart of a chained and finite (NF) encoding and decoding process for transmitting protected data between deleted channels, provided by an embodiment of the present invention. Figure 5A Combination Figure 3 and Figure 4 The elements are described. (See reference.) Figure 5A The flowchart 500A shown describes the chained and finite (NF) encoding and decoding process for transmitting protected data between deleted channels (e.g., via one or more communication channels 310).
[0069] refer to Figure 5A This illustrates a practical implementation of the chained and finite (NF) encoding and decoding process. It also shows the data packet to be protected (e.g., S...). j) are divided into m equal-sized data shards Y m When m equals 4, the original data is also sent, and the first 7 transmission packets are lost during the transaction. In one implementation, the protected data packets Sj are divided into multiple equal-sized data shards Y m , such as Y1, Y2, Y3, and Y4, as shown in Figure 5A In one implementation, the data sender 302 is configured to send the original data packets S j as X0 in advance. Thereafter, the data sender 302 performs a recombination algorithm that combines the data shards Y m by XoR operations to produce a finite number of transmission packets X1.. k and a uniformly distributed sequence to overcome burst error events using the least optimal additional data packets.
[0070] In one implementation, the data sender 302 is configured to perform NF encoding that includes a systematic, uniformly distributed XoR product and a systematic, uniformly distributed entry point. The data sender 302 also creates a first transmission packet X1 of the transmission packet output sequence to include a first data shard Y1 and an index thereof, and the first transmission packet X1 is labeled as having a degree of 1 as an entry point for the decoding output sequence. Thereafter, the data sender 302 creates a plurality of transmission packets in the output sequence immediately after the first transmission packet. Further, each of the plurality of transmission packets is labeled as having a degree of 2 and includes a result of an XOR operation between a pair of different data shards Y m and an index of the data shards in the pair, the plurality of transmission packets including all pairs of different data shards Y m . Thereafter, the data sender 302 creates a final transmission packet from the remaining data shards Y2,..., Y m in the output sequence immediately after the plurality of transmission packets, and then swaps the first transmission packet X1 of the output sequence with the second transmission packet X2 of the output sequence, as shown in Figure 5A .
[0071] Further, the properties of the NF encoding recovery (or decoding) that occurs at the data receiver 402 include different key points, as shown in Figure 5A Also shown are different numerical combinations for the plurality of transmission packets. Further, in Figure 5AThe different decoding points are also marked, as well as a small burst of lost packets from multiple transmission packets. In one example, the data receiver 402 divides the size of the data packet according to a number m, for example, uses the number m to determine how many parts the original data packet is divided into. In one example, the data transmitter 302 can lose any m single random transmission packets and successfully recover the original message. Moreover, if the first transmission packet X1 (i.e., the original data packet) is not lost, the time to process the request on the data receiver 402 will be equal to the time to process the sent pure data packet. In one example, the data receiver 402 sends additional data packets, for example, k = m*(m - 1) / 2 + m. Moreover, according to the number k, k - m + 1 subsequent data packets are lost, and the original data is successfully recovered. In one example, for two subsequent data packets, if m = 2, then k = 3. In another example, for four data packets, if m = 3, then k = 6. In yet another example, for seven data packets, if m = 4, then k = 10. In another example, for eight data packets, if m = 5, then k = 12. Moreover, the encoding complexity is determined by the formula (e.g., O(d*(log2(m) + 1))), where d is the data length, and m is the division size. Moreover, the decoding complexity is determined by the formula O(m + k), where m is the division size, and k is the number of received data packets.
[0072] Figure 5B is a graphical representation of a decoding graph representation provided by an embodiment of the invention. Figure 5B In conjunction Figure 3 with Figure 4 the elements described. Referring to Figure 5B , a graphical representation 500B of a decoding graph representation is shown. The graphical representation 500B includes a first node 502, a second node 504, a third node 506, and a fourth node 508.
[0073] In one implementation, a graphical representation 500B corresponding to a graph G(Y, X) is constructed, where the vertices Y correspond to data shards Y m to be decoded i The edges X include the received transmission packets X i as payloads, such that each edge X x is associated to a vertex Y x or a vertex Y y , Y x , Y y includes a data shard created from the obtained parameters x and y to create a transmission packet X i In one example, the transmission packets correspond to edges E = X k.x,k.y of the graph G(Y, X), for example, edges of each node, as Figure 5BAs shown in the figure, 500B corresponds to the condition of having four data fragments. Furthermore, since NF codes generate a finite sequence of transmission packets, the optimal number of fragments Y needs to be selected by estimating the reliability of the network channel. m In one implementation, the receiver processor 406 of the data receiver 402 is used to decode all nodes of the graphical representation 500B, such as decoding the first node 502, the second node 504, the third node 506, and the fourth node 508. Furthermore, if all nodes of the graphical representation 500B (e.g., graphical G(Y,X)) have been decoded, the data receiver 402 is used to reconstruct the protected data packet and inject it into the network stack.
[0074] Figure 6A , Figure 6B and Figure 6C A flowchart of an embodiment of the present invention, in which an NF code is encoded by a data transmitter, is described together. Figure 6A , Figure 6B and Figure 6C Combination Figures 3 to 5B The elements are described. (See reference.) Figure 6A , Figure 6B and Figure 6C Flowcharts 600A, 600B, and 600C are shown, illustrating a series of operations from 602 to 642. In one implementation, ( Figure 3 The data transmitter 302 is used to execute flowcharts 600A, 600B and 600C.
[0075] refer to Figure 6A This illustrates that in operation 602, the data transmitter 302 initiates an encoding algorithm based on chained and finite forward error correction (NF FEC) codes. Furthermore, in operation 604, the data transmitter 302 receives data packets, such as "S". j ", and further divide the received data packets "S j ", and divide the received data packets into "S" j Subsequently, during operation 606, the received data packet "S" j "A subset of data that has been divided into data shards of the same size, such as "Y" m In one implementation, data fragmentation includes zero-padding if necessary. Furthermore, in operation 608, the value of the number of received data packets "k" is set to zero, and in operation 610, the data transmitter 302 uses data "S"... j "Package Transfer Packet" X k". Further, at operation 612, the data transmitter 302 sets the number of data packets "k" by increasing the value of k by 1 (e.g., k = k + 1). For example, if the value of k is 0, the value of k is increased by 1. Thereafter, at operation 614, the data transmitter 302 adds the data fragment Yo as an entry point to the head of the sequence, e.g., X k = Yo, X k .x = 0, X k .y = 0, X k .id = j, k = k + 1.
[0076] Referring to Figure 6B , it is shown that at operation 616, the value of k representing the number of data packets is increased, and at operation 618, the values of the transmission packet "i" and the next transmission packet "z" of the first transmission packet are set to 0 and 1, respectively. Further, at operation 620, the data transmitter 302 sets X k = XoR(Y i , Y i+z ) and records the XoR parameters and the message index at X k .x = i, X k .y = i + z, X k .id = j. Thereafter, at operation 622, the value of k is increased, and the value of i + = 1, and at operation 624, the data transmitter 302 checks whether the value of i + z (i.e., the value of the transmission packet and the value of the next transmission packet of the first transmission packet) is less than m (i.e., the number of divisions). If the value is less than the value of m, the data transmitter 302 performs operation 620, otherwise, the data transmitter 302 performs operation 626. Further, at operation 626, the data transmitter 302 checks the value of z, and if the value of z is less than m - 1, the data transmitter 302 performs operation 628, where the value of i is set to 0 and the value of z is increased by 1, and further performs operation 620. However, if the value of z is not less than m - 1, the data transmitter 302 performs operation 630.
[0077] Referring to Figure 6C , it is shown that at operation 630, the data transmitter 302 adds the data fragment "e" and sets the value of e to 1. Thereafter, at operation 632, the data transmitter 302 sets X k = Y e , and records at X k , X k .x = e, X k .y = e, X k.The entry point index and message index when.id = j, and further increment the values of k and e by 1, as shown in operation 634. Again, the data transmitter 302 checks if the value of e is less than the value of m, then the data transmitter 302 performs operation 632, otherwise, it performs operation 638, where the transport packet X1 is exchanged with the transport packet X2, and the value of k is decremented. Finally, in operation 640, the data transmitter 302 transmits the transport packet X 0..k .In addition, in operation 642, the data transmitter 302 completes NF encoding.
[0078] Figure 7A and Figure 7B together describe a flowchart for decoding an NF code by a data receiver provided by an embodiment of the present invention. Figure 7A and Figure 7B are described in combination with Figures 3 to 6C the elements of. Referring to Figure 7A and Figure 7B , flowcharts 700A and 700B including a series of operations from 702 to 746 are shown. ( Figure 4 ) The data receiver 402 is used to execute flowcharts 700A and 700B.
[0079] Referring to Figure 7A , it is shown that in operation 702, the data receiver 402 starts decoding the NF code. In addition, in operation 704, the data receiver 402 checks if the number of data packets "k" is less than the number of partitions "m". If the number of data packets is less than the number of partitions (i.e., k < m), then the data receiver 402 returns an error according to operation 706. However, if the number of data packets "k" is not less than the number of partitions "m", then the data receiver 402 performs operation 708. In operation 708, the data receiver 402 also checks if multiple transport packets (e.g., X0) exist. If the data receiver 402 exists, then the data receiver 402 returns "ok" through operation 710, and if multiple transport packets do not exist, then the data receiver 402 performs operation 712. In operation 712, the data receiver 402 creates SS with values from 0 to m - 1 and fills the set with the number of data shards decoded from the set Xs. Thereafter, in operation 714, the data receiver 402 checks the numbers from 0 to m - 1, and if the set SS does not include any numbers, it returns an error through operation 716, otherwise, the data receiver 402 performs operation 718 to check the entry point. If no entry point is found, the data receiver 402 returns an error, otherwise, the data receiver 402 constructs a graph, such as G(Y,X), according to operation 720.
[0080] Referring to Figure 7B , it is shown that the vertices of the graph (e.g., "Y") represent the data shard Y mand edges of the graph (e.g. "X") represent transmission packets X k Furthermore, by implementing operation 722 all data shards Y m are decoded k At operation 722, the data receiver 402 checks each transmission packet X k and performs operations accordingly. Thereafter, operation 724 is performed to decode the next data shard. At operation 724, the data receiver 402 checks whether the set SS of X k .x is decoded and the set SS of X k .y is decoded. If the set SS of X k .x is decoded and the set SS of X k .y is not decoded, the data receiver 402 performs operation 726 and then returns again to operation 722. Furthermore, if neither the set SS of X k .x nor the set SS of X k .y is decoded, the data receiver 402 performs operation 728.
[0081] At operation 728, the data receiver 402 checks whether X k is an entry point. If X k is an entry point, the data receiver 402 decodes the data shard (X k .x), e.g. by operation 730, and if X k is not an entry point, operation 732 is performed and the data receiver 402 checks whether SS(Xk,x) is decoded and SS(Xk,y) is not decoded. Thereafter, at operation 734, the data receiver 402 decodes the data shard included in the set SS(Xk.x) or XThe set SS(Xk,x),Xk) includes data fragments (i.e., (XoR(SS(Xk.x),Xk))). Data receiver 402 further checks whether set SS(Xk,x) is decoded while set SS(Xk,y) is not decoded, or whether set SS(Xk,x) is not decoded and set SS(Xk,y) is not decoded, or whether set SS(Xk,x) is decoded and set SS(Xk,y) is decoded. Furthermore, at operation 736, data receiver 402 checks whether set SS(Xk,y) is decoded while set (Xk.x) is not decoded. Then, in this case, data receiver 402 performs operation 738. In operation 738, data receiver 402 decodes the data fragments included in set SS(Xk.y) or the data fragments included in Xk (i.e., (XoR(SS(Xk.y),Xk))). Furthermore, if set SS(Xk,y) and set (Xk.x) are not decoded, and set SS(Xk,y) is not decoded while set (Xk.x) is decoded, then data receiver 402 executes operation 740. In operation 740, data receiver 402 further checks whether both set SS(Xk.x) and set SS(Xk,y) are not decoded. Subsequently, if both set SS(Xk.x) and set SS(Xk,y) are not decoded, data receiver 402 adds an edge "G" (Xk.x.Xk.y) with payload Xk by executing operation 742. Finally, the data receiver moves on to the next data packet (i.e., operation 726) and then executes operation 722 again until all data fragments are decoded. Subsequently, finally, data receiver 402 reconstructs the original data by executing operation 744 and returns the data packet, followed by operation 746 to complete the decoding.
[0082] Figure 8 This is a diagram illustrating the communication between a data transmitter and a data receiver according to an embodiment of the present invention. Figure 8 Combination Figures 3 to 7B The elements are described. (See reference.) Figure 8 The diagram illustrates the communication between the data transmitter 302 and the data receiver 402.
[0083] In one implementation, the data transmitter 302 includes a transmitter processor 306 for transmitting protected data packets S to the data receiver 402. j 802. Data receiver 402 first receives data from NF encoder 804, which is used to encode protected data packets S. j 802. Furthermore, the NF encoder 804 is also used according to... Figure 1 Method 100 Encoding Protected Data Packets S j 802 obtains the output sequence of the transport packet, such as transport packet X. i 806, Transmission Packet Xi 806 to send protected data packets S j 802 to the data receiver 402. In one example, the NF encoder 804 encodes the data packets using a chained and finite forward error correction (NF FEC) code. As a result, the data sender 302 sends the protected data packets S j 802 as a protected transmission along with a sequence of transmission packets to the data receiver 402. In one example, the data sender 302 is configured to perform the algorithm in Figure 8 algorithm transmitter.
[0084] Further, the sending data packet queue 808 is also connected at the output end to a receiving data packet queue 810 to receive a protected transmission from the data sender 302, the protected transmission including a plurality of transmission packets encoded by the method 100 to protect the data packets. Thereafter, the data receiver 402 is configured to decode the data packets from the received transmission packets by the method 200 using an NF decoder 812 to reconstruct the data packets. In one example, the NF decoder 812 decodes the data packets from the received transmission packets using a chained and finite forward error correction (NF FEC) code. Thereafter, the data receiver 402 is configured to inject the reconstructed data packets to a network stack and send an acknowledgement message to the data sender 302 by an acknowledgement (ACK) generator 814 to acknowledge the receipt of the data packets. In one implementation, if the protected transmission also includes the data packets in the original format, the acknowledgement generator 814 is configured to send the acknowledgement message to the data sender 302 to acknowledge the receipt of the data packets and terminate the processing of the protected transmission. In one example, the data receiver 402 is configured to perform the algorithm in Figure 8 algorithm receiver.
[0085] Figure 9A is a diagram of a communication of a redundant data transmission between a transmitter and a receiver provided by one embodiment of the present invention. Figure 9A elements of Figures 3 to 8 are described in conjunction with. Referring to Figure 9A , a diagram 900A is shown that depicts a quick UDP internet connections (QUIC) transmitter 902, a QUIC receiver 904, an application 906, and a server 908.
[0086] In one implementation, the core component hidra_nf intercepting the data flow in / out of the network is able to access the data before and after encryption. The component consumes an encrypted QUIC packet ready to be sent. Furthermore, if the packet has a STREAM_FRAME supported by the application 906 and any FEC_SCHEME_XX policy, the hidra_nf builds the QUIC packet with the FEC_FRAME inside the QUIC packet and delivers the packet to the QUIC receiver 904. In one example, the application 906 is used to run the QUIC session 910. Furthermore, the QUICPacketCreator::SerializePacket 912 is used to create the packets and serialize each packet. After that, each packet is received by the forward erasure coding unit 914 that is used to determine if the stream data frame is available and also activates the FEC encoding policy. The forward erasure coding unit 914 further builds the forward erasure code block and sends the code block right after the original data block. After that, the output of the forward erasure coding unit 914 is received by the QUICConnection::OnSerializedPacket 916 that is used to initialize the QUIC connection 918. Furthermore, the QUIC connection 918 also receives multiple streams, such as stream 1, stream 2, and stream N. After that, the output of the QUIC connection 918 is encrypted by the encryption block 920 and then the packets are sent to the QUIC receiver 904 by the sendmsgs() block. On the QUIC receiver 904 side, the QuicFramer processes the packet detects that it has a FEC_FRAME and processes the frame payload. Once the original packet is recovered, the original packet is processed in the normal way as shown in Figure 9A In other words, the QUIC receiver 904 is used to obtain the multiple streams using the decryption block 922, the QUICFramer::ProcessFecFrame 924, the forward erasure decoding unit 926, the QUICConnection::OnFecProtectedPayload 928, and the QUIC connection 930.
[0087] Figure 9B is a diagram of a quick UDP internet connections (QUIC) packet provided by an embodiment of the present invention. Figure 9B The elements are described in conjunction with Figures 3 to 8 . Reference is made to Figure 9BFig. 900B, showing a diagram 900B depicting a quick UDP internet connections (QUIC) packet 932 with FEC_FRAME and payload. The QUIC packet 932 includes an internet protocol (IP) header 934, a user datagram protocol (UDP) header 936, a QUIC header 938, and a QUIC payload 940. In one implementation, the QUIC protocol is extended by defining a new frame data type, e.g., FrameType = 0x88 (1B) - identifies the FEC frame itself in the QUIC IETF protocol implementation, 0x20 in the Google QUIC implementation; and FEC Frame version (1B) - FEC frame version. In addition, FEC Scheme (1 byte) - FEC scheme version (max 7), Xorl (1 byte) - number of first XoR parameter, Xor2 (1 byte) - number of second XoR parameter. In addition, FEC Payload ID - (IETF / QUIC format variable length integer, value can be in the range 0..(2^62) - 1), this field provides data about the FEC group identification, currently equal to the protected packet number, the FEC payload length of the QUIC payload 940 is the rest of the payload length.
[0088] Modifications can be made to the embodiments of the application described above without departing from the scope of the application as defined in the appended claims. Where, in the foregoing, embodiments of the application have been described in reference to particular examples, other alternatives can be used as per the spirit of the application. Statements of the application have been presented in terms of particular embodiments, which are provided for purposes of illustration, and not for purposes of limitation. The present application is not limited to these particular embodiments, which can include and incorporate various elements and aspects. The words “including” and “having” and the like form the antecedents of the terms comprising and including, respectively, and the conjugations thereof. The term “consisting essentially of’ is defined to mean including the elements listed, and any additional elements that do not materially affect the basic and novel characteristics of the compositions or methods. The term “consisting of’ is defined to mean including the elements listed and excluding any additional elements. The terms “comprising”, “comprise”, “comprises” and the like are used herein to mean including the elements or steps associated therewith that are listed, but not excluding any additional elements or steps. The terms “a”, “an” and “the” and the like convey the understanding that there is at least one of the referenced features. The term “about” means plus or minus 10% of the value of the number that the term is modifying. The word “example” is used herein to mean serving as an example, instance, or illustration. Any implementation described as an “example” is not necessarily to be construed as preferred or advantageous over other implementations. The word “or” is used herein to mean inclusive, and not exclusive, unless explicitly indicated to the contrary. The word “and” is used herein to mean both “and” and “or” unless explicitly indicated to the contrary. The word “not” is used herein to mean “not” and also “and / or” unless explicitly indicated to the contrary. The word “includes” is used herein to mean “includes” but not “consisting only of.”
Claims
1. A method (100) of encoding a data packet for protected transmission, characterized in that, The method (100) comprises, at a sending end (410), dividing the data packet to be protected into m data slices Y of equal size m ; creating a first transmission packet X1 of a transmission packet output sequence to include a first data slice Y1 and an index thereof, wherein the first transmission packet X1 is marked as having a degree of 1 to serve as an entry point for decoding the output sequence; creating a plurality of transmission packets immediately after the first transmission packet X1 in the output sequence, wherein each transmission packet of the plurality of transmission packets is labeled as having a degree of two and includes a pair of different data shards Y m between the XOR operation of the pair and an index of the data shard of the pair, the plurality of transmission packets including all pairs of different data shards Y m immediately after the plurality of transmission packets in the output sequence from the remaining data slices Y2,..., Y m creating final transmission packets, wherein each transmission packet in the final transmission packets is marked as having a degree of 1 as an entry point of the decoding, and includes one data slice and an index of the data slice; exchanging the first transmission packet X1 of the output sequence with a second transmission packet X2 of the output sequence.
2. The method (100) according to claim 1, characterized in that Further comprising: padding the data packet to be protected with zeros before said dividing the data packet into the data slices.
3. The method (100) according to claim 1 or 2, characterized in that Further comprising: sending the transmission packet output sequence as a protected transmission to a receiving end (312).
4. The method (100) according to claim 3, characterized in that The sending the transmission packet output sequence as the protected transmission comprises sending the data packet in original format as part of the protected transmission together with the transmission packet output sequence.
5. A method (200) of decoding a data packet from a protected transmission, characterized by, The method (200) comprises, at a receiving end (312), receiving a protected transmission, the protected transmission comprising k transmission packets X of a transmission packet output sequence i wherein i is 1 to k, the k transmission packets X i encoding by the method (100) of any one of claims 1 to 4 to protect the data packets, wherein the number k of received transmission packets is equal to or greater than the number m of data slices; from each received transport package X i the indices of the data shards that created the transport package are obtained as parameters x and y, wherein, if the received transport package X i is an entry point, its parameters x and y are equal; A graph G(Y,X) is constructed, where vertices Y correspond to data slices Y to be decoded m , edges X comprise the received transmission packets X i as payloads, such that each edge X i is associated to a vertex Y x or a vertex Y x , Y y , said Y x , Y y comprises data slices created from said acquired parameters x and y of said transmission packet X i ; Each edge X of the graph G(Y,X) is processed in turn according to an increasing index i, i = 1, 2, 3,..., n, as follows: i is processed as follows: If the edge X i according to the vertex Y x is decoded and the edge X i according to the vertex Y y is decoded, then terminate the current edge processing and continue to the next edge processing; If X i is an entry point, i.e. the x parameter is equal to the y parameter, then decode the vertex Y x ; If the vertex Y x is decoded, and the vertex Y y is not decoded, then the vertex Y y is decoded to equal (X i XORY x ). If the vertex Y y is decoded, and the vertex Y x is not decoded, then the vertex Y x is decoded to equal (X i XORY y ). if the vertex Y x is not decoded, and the vertex Y y is not decoded, then add a new edge to the graph, the new edge having the payload X i , the index i equal to the number k plus one, and the parameters x and y the same as the current edge, to associate the new edge to the vertices Y x and Y y ; reconstructing the data packet encoded in the protected transmission if all vertices of the graph are decoded; wherein the decoding of a vertex Y comprises: marking the vertex Y as decoded and checking each edge X associated to the vertex Y: If the vertex Y associated to the edge X is decoded x the decoding is terminated. If the vertex Y x is not decoded, then the vertex Y x is decoded as equal to (X XOR Y).
6. The method (200) of claim 5, wherein, if the data packet in original format is sent in the protected transmission and successfully received at the receiving end (312), the method (200) comprises terminating the processing of the received transmission packets.
7. A data transmitter (302), characterized by Comprising: a communication interface (304) for communicating with a receiving end (312) over one or more communication channels (310), a sender processor (306) for: selecting a data packet to be protected from a queue of data packets; encoding the selected data packet according to the method (100) of claim 1 or 2 to obtain a transmission packet output sequence; sending the selected data packet in original format as a protected transmission to a receiving end (312) together with the transmission packet output sequence; setting a retransmission timer to a predefined time period; in response to receiving an acknowledgement message from the receiving end (312) acknowledging the receipt of the selected data packet in the protected transmission within the predefined time period, releasing the retransmission timer, excluding the selected data packet from the queue, and returning the selection to select a next data packet if the queue is not empty; or in response to triggering the retransmission timer, returning the encoding of the selected data packet.
8. A data receiver (402), characterized by Comprising: a communication interface (404) for communicating with a sending end (410) over one or more communication channels (310), a receiver processor (406) for: receiving a protected transmission from the sending end (410) using the communication interface, the protected transmission comprising a plurality of transmission packets encoded by the method (100) of claim 1 or 2 to protect a data packet; if the protected transmission further comprises the data packet in original format, sending an acknowledgement message to the sending end (410) to acknowledge the receipt of the data packet and terminate the processing of the protected transmission; Otherwise, decoding the data packet from the received transport packet by the method (200) of claim 5 to reconstruct the data packet, injecting the reconstructed data packet to a network stack, and sending the acknowledgement message to the sending end (410) to acknowledge the receipt of the data packet.
Citation Information
Patent Citations
Adaptive packet loss recovery method based on error correction code, computing device and storage medium
CN110855400A
Systems and methods for error resilience in video communication systems
US20080165864A1