The present disclosure relates generally to data processing, and, more specifically, to systems and methods for correcting corrupted network packets using linearity of a cyclic redundancy check.
A Cyclic Redundancy Check (CRC) is a short error-detecting code used to verify accidental changes to data packet payloads during data transfers. The CRC is a relatively fast and efficient error-detection method used in almost any modern communication system. Typically, the CRC is computed on the payload at the transmitter side and attached to the end of the payload. Both payload and the CRC are transmitted to the receiver side. At the receiver, the received CRC is compared to the CRC computed based on the received payload. If the received CRC equals the computed CRC, the received packet has no errors. On the other hand, if the received CRC does not match the computed CRC, the CRC fails and the received packet has errors.
For Bluetooth™ transmissions, the CRC is 3 bytes. When the CRC passes, it is of very high probability that the packet has no errors, so an acknowledgement (ACK) is sent to the transmitter and the transmitter can proceed to transmitting the next packet. When the CRC fails, it is of very high probability that the packet has errors, so a negative acknowledgement (NACK) is sent, indicating a request for retransmission. When the transmitter receives ACK, it may transmit the next packet, and when the transmitter receives NACK, it may retransmit the packet. Retransmitting packets from the transmitter to the receiver every time the CRC fails results in reduced bandwidth of the communication channel.
This summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used as an aid in determining the scope of the claimed subject matter.
Embodiments of the present disclosure are directed to correcting corrupted network packets and reducing complexity of wireless data verifications using linearity of a CRC. According to an example embodiment, a method and a system for correcting corrupted network packets using linearity of a CRC are provided. The method may commence with receiving a network packet via a communication channel. The network packet may include a payload and a CRC associated with the payload. The method may continue with calculating a reference CRC based on the received payload. The method may include determining, based on the reference CRC and the received CRC, that the network packet is corrupted.
In response to the determination that the network packet is corrupted, the method may continue with selecting a predetermined number of positions of bits in the payload of the network packet. The predetermined number positions of bits in the payload may be less than a length of the payload. In an example embodiment, the predetermined number of positions of bits may be selected based on at least one previous version of the payload transferred over the communication channel.
The method may further include precalculating a set of additional CRCs. An additional CRC of the set additional CRCs is calculated based on a sequence of a set of sequences B of bits of a length of the payload. The sequence includes a single non-zero bit at one of the predetermined number of positions. In an example embodiment, the calculation of the additional CRC of the set additional CRCs requires fewer operations than a calculation of the reference CRC. The set of additional CRCs may be obtained from a set of precalculated CRCs for sequences of bits of a length of the payload. Each of the sequences may include a single non-zero bit position.
The method may further include determining, based on the reference CRC and the set of additional CRCs, a combination of bit flips at the predetermined number of positions. The combination of bit flips corresponds to a combination of the sequences B such thus a sum of the reference CRC and CRCs of the combination of the sequences B matches the received CRC. In an example embodiment, the determination of the combination of bit flips may include iteratively performing the following operations. First, a test combination of the sequences B is selected. Second, a test sum of the reference CRC and the additional CRCs corresponding to the test combination sequences B are calculated. Third, it is determined whether the test sum matches the received CRC.
In an example embodiment, the determination of the combination of bit flips may include generating a set of linear equations. A linear equation of the set of linear equations may correspond to one of possible combinations of the sequences B. The set of linear equations may be solved to determine the combination of the sequences B. In an example embodiment, the set of linear equations may be solved by a Gaussian elimination method. The method may include modifying the payload according to the combination of bit flips at the predetermined number of positions.
In an example embodiment, after selecting the predetermined number of positions of bits in the payload of the network packet, the method may proceed with calculating a binary tree. Nodes of the binary tree may correspond to CRCs of parts of the payload and leaves of the binary tree may correspond to CRCs of payloads modified, according to possible combinations of bit flips at the predetermined positions. Upon calculation of the binary tree, the combination of the bit flips corresponding to CRC matching the received CRC is selected based on the leaves. Each of the nodes of the binary tree corresponds to a first branch and a second branch. The first branch corresponds to a first partial payload obtained by flipping a bit at one of the predetermined positions. The second branch corresponds to a second partial payload having the bit at the one of the predetermined positions unchanged.
According to another embodiment, a system for correcting corrupted network using linearity of a CRC packets can be provided. The system may include at least one processor and a memory storing processor-executable codes, wherein the processor can be configured to implement the operations of the above-mentioned method for correcting corrupted network packets.
According to yet another aspect of the disclosure, there is provided a non-transitory processor-readable medium, which stores processor-readable instructions. When the processor-readable instructions are executed by a processor, they cause the processor to implement the above-mentioned method for error correction in network packets.
Additional objects, advantages, and novel features will be set forth in part in the detailed description section of this disclosure, which follows, and in part will become apparent to those skilled in the art upon examination of this specification and the accompanying drawings or may be learned by production or operation of the example embodiments. The objects and advantages of the concepts may be realized and attained by means of the methodologies, instrumentalities, and combinations particularly pointed out in the appended claims.
Embodiments are illustrated by way of example and not limitation in the figures of the accompanying drawings, in which like references indicate similar elements.
The following detailed description includes references to the accompanying drawings, which form a part of the detailed description. The drawings show illustrations in accordance with example embodiments. These example embodiments, which are also referred to herein as “examples,” are described in enough detail to enable those skilled in the art to practice the present subject matter. The embodiments can be combined, other embodiments can be utilized, or structural, logical, and electrical changes can be made without departing from the scope of what is claimed. The following detailed description is, therefore, not to be taken in a limiting sense, and the scope is defined by the appended claims and their equivalents.
The present disclosure provides systems and methods for correcting corrupted network packets using linearity of a Cyclic Redundancy Check (CRC). An example method for correcting corrupted network packets may commence with receiving a network packet via a communication channel. The network packet may include a payload and a CRC associated with the payload. The method may allow calculating a reference CRC based on the received payload. The method may continue with determining, based on the reference CRC and the received CRC, whether the network packet is corrupted. In response to the determination, a predetermined number of positions of bits in the payload of the network packet is selected. The method may further include precalculating a set of additional CRCs. An additional CRC of the set additional CRCs may be calculated based on a sequence of a set of sequences B of bits of a length of the payload. The sequence may include a single non-zero bit at one of the predetermined number of positions. Based on the reference CRC and the set of additional CRCs, a combination of bit flips at the predetermined number of positions may be determined. The combination of bit flips may correspond to a combination of the sequences B such that a sum of the reference CRC and CRCs of the combination of the sequences B matches the received CRC. The method may continue with modifying the payload according to the combination of bit flips at the predetermined number of positions.
Referring now to the drawings,
In various embodiments, the transmitter 110 or the receiver 120 may include a computer (e.g., a laptop computer, a tablet computer, and a desktop computer), a server, a cellular phone, a smart phone, a gaming console, a multimedia system, a smart television device, wireless headphones, an infotainment system, an in-vehicle computing device, an informational kiosk, a smart home computer, a software application, a computer operating system, a modem, a router, and so forth.
The communication channel 130 may include the Internet or any other network capable of communicating data between devices. Suitable networks may include or interface with any one or more of, for instance, a local intranet, a corporate data network, a data center network, a home data network, a Personal Area Network, a Local Area Network (LAN), a Wide Area Network (WAN), a Metropolitan Area Network, a virtual private network, a storage area network, a frame relay connection, an Advanced Intelligent Network connection, a synchronous optical network connection, a digital T1, T3, E1 or E3 line, Digital Data Service connection, Digital Subscriber Line connection, an Ethernet connection, an Integrated Services Digital Network line, a dial-up port such as a V.90, V.34 or V.34bis analog modem connection, a cable modem, an Asynchronous Transfer Mode connection, or a Fiber Distributed Data Interface or Copper Distributed Data Interface connection. Furthermore, communications may also include links to any of a variety of wireless networks, including Wireless Application Protocol, General Packet Radio Service, Global System for Mobile Communication, Code Division Multiple Access or Time Division Multiple Access, cellular phone networks, Global Positioning System, cellular digital packet data, Research in Motion, Limited duplex paging network, Bluetooth™ radio, or an IEEE 802.11-based radio frequency network. The communication channel 130 can further include or interface with any one or more of a Recommended Standard 232 (RS-232) serial connection, an IEEE-1394 (FireWire) connection, a Fiber Channel connection, an IrDA (infrared) port, a Small Computer Systems Interface connection, a Universal Serial Bus (USB) connection or other wired or wireless, digital or analog interface or connection, mesh or Digi® networking.
A transmitter 110 may send, via a communication channel 130, a network packet including a binary message xϵ{0,1}n. A receiver 120 may receive a binary message yϵ{0,1}n, which is the message x corrupted by the communication channel 130. The message can be corrupted due to the noise in communication channels, which is typically the main cause of packet loss. The packet loss results in defects, such as reduced throughput of transmitted data, degraded audio quality, and so forth. Typically, communication schemes such as CRC and the ARQ are used to mitigate the packet loss.
A CRC 225 is an error detection check used to determine whether a network packet is corrupted. The CRC 225 is generated by a CRC generator 215 based on an original packet 205 and added to the original packet 205 (the payload) to form the network packet 210. The network packet 210 is transmitted from the transmitter 110 to the receiver 120 via the communication channel 130. The CRC 225 is typically of a fixed length (e.g., 3 bytes) regardless of the length of the payload. When the network packet with the CRC 225 is received, the receiver 120 computes the new CRC based on payload of the received the network packet and compares the new CRC to the appended CRC 225. If the appended CRC 225 mismatches the new CRC computed from the received payload, the network packet 210 is corrupted.
ARQ is a communication method in which if the network packet 210 is detected as corrupted, the receiver 120 requests the transmitter 110 to retransmit the network packet 210. The ARQ stops when the network packet 210 is received correctly or the maximum timeout is reached. Typically, ARQ discards previous versions of received network packets, and therefore information from previously received packets is not used.
ARQ+CRC is an approach widely used in Bluetooth™, Wi-Fi™, and 3G/4G/LTE/5G networks. However, ARQ+CRC is not efficient because even if only 1-bit in the received network packet 210 is wrong (resulting in a CRC check failure), the whole network packet 210 is retransmitted. Thus, Block Error Rate (BLER) of ARQ+CRC scheme can be lower than desired.
According to embodiments of the present disclosure, prior to requesting retransmission of the network packet 210, the receiver 120 can modify a few bits in the payload of the received network packet and test the CRC again. Given a payload of length L, and assuming that k-bits in the payload are erroneous, modifying (by flipping) all possible k-bits in the payload would require checking CRC 2{circumflex over ( )}(L choose k) times. This is computationally infeasible. Therefore, using this approach, all the 2{circumflex over ( )}(L choose k) combinations for k bit locations have to be flipped in the worst case scenario, one by one, to see which combination (out of a total of 2{circumflex over ( )}(L choose k) combinations) would make the CRC pass. This approach results in an exponential complexity and, therefore, is unscalable.
As a first step to solve this issues, soft information may be extracted to determine which bits in the payload are most unreliable (uncertain). The soft information may include expected values of bits, also referred to as soft likelihoods. A method for modifying the unreliable bits to test CRC maybe used, without drastically reducing the validity of the CRC.
In conventional ARQ schemes, when the network packet 210 is retransmitted, the previous copies of the network packet are discarded and not used. The performance of the ARQ may be improved by using a simple voting scheme. The voting scheme can use all received copies of a network packet to make a vote on each bit in the network packet and output the majority voted result. Then, the result of the voting can be used to test the CRC.
Typically, channel errors are modeled as independent and identically distributed (i.i.d.) errors. However, the errors observed in real systems are correlated to each other. The correlation of errors originated from two sources: 1) a design of a communication channel, for example Bluetooth™'s Gaussian frequency-shift keying (GFSK) modulation which can cause error correlations; and 2) burst noise and interference in electronic circuits of transmitters and receivers.
To compute the CRC on the payload of a network packet, a CRC polynomial is used. The CRC polynomial is used to process all bits in a Protocol Data Unit (PDU) in a transmitted order starting from the least significant bit. The polynomial is linear in nature and has the form of x24+x10+x9+x6+x4+x3+x+1.
In the approaches described herein, a list decoding may be used to create a list of possible correct packets rather than uniquely decoding the received noisy sequence into a single packet. Because calculating the CRC is linear in nature, the data sequence for which the CRC is calculated can be split into segments and the CRC can be calculated separately for each segment in parallel. Thus, a further step is used to detect the correct packet from the list, such as checking the CRC for all the packets in the list, one by one, to find a packet that would pass the CRC.
The CRC is a linear operation, i.e.:
CRC(A+B)=CRC(A)+CRC(B)+CRC(0),
CRC(A+B+C)=CRC(A)+CRC(B)+CRC(C).
In these equations, 0 is an all-zeros sequence of the same length as A and B. This property can be utilized to drastically reduce the time complexity. The linearity of CRC can be used in identifying corrupted network packets and reducing complexity of wireless data verifications.
In step 1, there is a sequence R, which is the output of a neural packet processor (NPP). The NPP method may combine ARQ, CRC, and soft information processing. In general, the NPP method includes the following: (1) checking the CRC of the received network packet, and, if the CRC fails, then (2) using previously received network packets to extract soft information to propose multiple alternative sequences of bits and to check the CRC again. The NPP may consist of two major parts: (1) using the soft information to generate k most uncertain locations, and propose 2{circumflex over ( )}k alternative candidates to test CRC, and (2) a data-driven method to extract soft information from received packets.
In the approach described herein, the system performs the bit flipping at k indices {b1, b2, . . . , bk} and calculates the CRC for all possible 2k combinations. Therefore, the system precalculates the following CRCs, which are a total of k+2 CRC calculations as well as k 3-byte XOR operations:
R′=CRC(R),
B1=CRC(e_b1)+CRC(0),
B2=CRC(e_b2)+CRC(0) . . . ,
Bk=CRC(e_bk)+CRC(0),
R1=R+b1=[00000010000000 . . . 0],
R2=R+b2=[00000001000000 . . . 0],
R3=R+[00000000100000 . . . 0],
R4=R+[00000011000000 . . . 0],
R5=R+[00000011100000 . . . 0],
R6=R+b6=[00000001100000 . . . 0].
Using a naive approach, CRC(R1), CRC(R2), . . . , CRC(R8) are computed. Then, it is checked whether any of these CRCs matches the CRC associated with the payload.
Then, a substep a) includes the following calculations:
CRC(R1)=CRC(R)+CRC(b1)+CRC(0),
CRC(R2)=CRC(R)+CRC(b2)+CRC(0) . . . ,
CRC(R8)=CRC(R)+CRC(b8)+CRC(0).
The substep b) includes the following calculations:
CRC(R1)=CRC(R)+CRC(b1)+CRC(0),
CRC(R2)=CRC(R)+CRC(b2)+CRC(0) . . . ,
CRC(R8)=CRC(R)+CRC(b1)+CRC(b3).
In these equations, {e_bk} is an all-zeros sequence of the same length as R and 0, except for the bit index bk, which is set to 1.
In step 2, for any bit flip combination, the CRC can be calculated as a 3-byte XOR operations:
CRC=R′+sum_{k:bk=1}Bk.
Although step 2 is still exponential, it consists of much faster and shorter operations: each sequential XOR operation for 3 bytes can be done in a single clock cycle which can be, for example, 15 ns on an ARM Cortex-M4 microcontroller at 64 Mhz, which would be a total of 2k*k*15 ns for the worst case scenario.
Equations 355 and 360 shown in
As determined based on the simulations performed for the calculations described above, in this approach the bit flip and CRC check can be run for k=7 as fast as what it would take with an approach for k=4.
In an example embodiment, the bit flip {bk} may be located over the CRC itself. In this embodiment, Bk′ may be equal to a 3-byte (i.e., 24-bit) unit vector [0 0 0 0 1 0 . . . 0] where the location of 1 is exactly the same as the uncertain bit index bk over the CRC itself. Therefore, when XORing with Bk, the CRC bit that is the most uncertain is automatically flipped.
In an example embodiment, the set of linear equations is solved by the Gaussian elimination method. In this method, the complexity of step 1 is reduced to linear with respect to k. The step 2, however, is still of exponential complexity (even though the coefficient is relatively smaller than the naive approach) which can increase the required computation time significantly for large k values.
In step 2, the purpose is to obtain a set of binary coefficients x1, . . . , xk such that:
CRC(R)+x1B1+x2B2+ . . . +xkBk=CRCIntended.
If such set of xk coefficients exists, a CRC pass is declared and the correct sequence is returned accordingly, otherwise a CRC fail is declared and the method continues with waiting for more sequences to arrive at the NPP.
Therefore, a linear equation set is solved in a binary space. The set of equations can be formulated as follows:
[B1T|B2T| . . . |BkT]x=(CRCIntended+CRC(R))T
This set consists of 24 equations (i.e., the same as the CRC size). A standard way for solving such equations is the Gaussian elimination method consisting of two basic row operations in the binary field: a) swapping any two arbitrary rows, and b) adding any arbitrary row to another arbitrary row.
By applying the two operations above sequentially in a systematic way, the linear equations above can be transformed into the following form:
[Ik×k|0k×(24−k)]Tx=[α1×k|β1×(24−k)]T.
If vector β is all 0s, then it means that the equation set has a valid answer for x, and the answer is equal to the vector α. Therefore, the valid combination of bit flips can be found and the corrected sequence can be returned. On the other hand, β≠0 means that the equation has no answer, hence there is no valid combination of bit flips that passes the CRC and, therefore, a CRC fail is declared. Thus, the operations described above can be used to reduce the complexity of the list decoding to fully linear.
The method 500 may commence in block 505 with receiving a network packet via a communication channel. The network packet may include a payload and a CRC associated with the payload. The method 500 may continue in block 510 with calculating a reference CRC based on the received payload. In block 515, the method 500 may include determining, based on the reference CRC and the received CRC, that the network packet is corrupted.
In response to the determination that the network packet is corrupted, the method 500 may continue with selecting a predetermined number of positions of bits in the payload of the network packet, as shown in block 520. The predetermined number of positions of bits in the payload may be less than the length of the payload. In an example embodiment, the predetermined number of positions of bits may be selected based on at least one previous version of the payload transferred over the communication channel.
The method 500 may further include precalculating a set of additional CRCs as shown in block 525. An additional CRC of the set of additional CRCs is calculated based on a sequence of a set of sequences B of bits of a length of the payload. The sequence includes a single non-zero bit at one of the predetermined number of positions. In an example embodiment, the calculation of the additional CRC of the set of additional CRCs requires fewer operations than a calculation of the reference CRC. The set of additional CRCs may be obtained from a set of precalculated CRCs for sequences of bits of a length of the payload. Each of the sequences may have a single non-zero bit position.
The method 500 may further include determining, based on the reference CRC and the set of additional CRCs, a combination of bit flips at the predetermined number of positions, as shown in block 530. The combination of bit flips corresponds to a combination of the sequences B such thus a sum of the reference CRC and CRCs of the combination of the sequences B matches the received CRC. In an example embodiment, the determination of the combination of bit flips may include iteratively performing the following operations. First, a test combination of the sequences B is selected. Second, a test sum of the reference CRC and the additional CRCs corresponding to the test combination sequences B are calculated. Third, it is determined whether the test sum matches the received CRC.
In an example embodiment, the determination of the combination of bit flips may include generating a set of linear equations. A linear equation of the set of linear equations may correspond to one of possible combinations of the sequences B. The set of linear equations may be solved to determine the combination of the sequences B. In an example embodiment, the set of linear equations may be solved by a Gaussian elimination method. In block 535, the method 500 may include modifying the payload according to the combination of bit flips at the predetermined number of positions.
In an example embodiment, after selecting the predetermined number of positions of bits in the payload of the network packet, the method 500 may further include calculating a binary tree. Nodes of the binary tree may correspond to CRCs of parts of the payload and leaves of the binary tree may correspond to CRCs of payloads modified according to possible combinations of bit flips at the predetermined positions. Upon calculation of the binary tree, the combination of the bit flips corresponding to CRC matching the received CRC is selected based on the leaves. Each of the nodes of the binary tree corresponds to a first branch and a second branch. The first branch corresponds to a first partial payload obtained by flipping a bit at one of the predetermined positions. The second branch corresponds to a second partial payload having the bit at the one of the predetermined positions unchanged.
The components shown in
Mass data storage 630, which can be implemented with a magnetic disk drive, solid state drive, or an optical disk drive, is a non-volatile storage device for storing data and instructions for use by processor unit 610. Mass data storage 630 stores the system software for implementing embodiments of the present disclosure for purposes of loading that software into main memory 620.
Portable storage device 640 operates in conjunction with a portable non-volatile storage medium, such as a flash drive, floppy disk, compact disk, digital video disc, or USB storage device, to input and output data and code to and from the computer system 600 of
User input devices 660 can provide a portion of a user interface. User input devices 660 may include one or more microphones, an alphanumeric keypad, such as a keyboard, for inputting alphanumeric and other information, or a pointing device, such as a mouse, a trackball, stylus, or cursor direction keys. User input devices 660 can also include a touchscreen. Additionally, the computer system 600 as shown in
Graphics display system 670 include a liquid crystal display or other suitable display device. Graphics display system 670 is configurable to receive textual and graphical information and processes the information for output to the display device.
Peripheral devices 680 may include any type of computer support device to add additional functionality to the computer system.
The components provided in the computer system 600 of
The processing for various embodiments may be implemented in software that is cloud-based. In some embodiments, the computer system 600 is implemented as a cloud-based computing environment, such as a virtual machine operating within a computing cloud. In other embodiments, the computer system 600 may itself include a cloud-based computing environment, where the functionalities of the computer system 600 are executed in a distributed fashion. Thus, the computer system 600, when configured as a computing cloud, may include pluralities of computing devices in various forms, as will be described in greater detail below.
In general, a cloud-based computing environment is a resource that typically combines the computational power of a large grouping of processors (such as within web servers) and/or that combines the storage capacity of a large grouping of computer memories or storage devices. Systems that provide cloud-based resources may be utilized exclusively by their owners or such systems may be accessible to outside users who deploy applications within the computing infrastructure to obtain the benefit of large computational or storage resources.
The cloud may be formed, for example, by a network of web servers that comprise a plurality of computing devices, such as the computer system 600, with each server (or at least a plurality thereof) providing processor and/or storage resources. These servers may manage workloads provided by multiple users (e.g., cloud resource customers or other users). Typically, each user places workload demands upon the cloud that vary in real-time, sometimes dramatically. The nature and extent of these variations typically depends on the type of business associated with the user.
Thus, systems and methods for correcting corrupted network packets using linearity of a CRC have been described. Although embodiments have been described with reference to specific example embodiments, it will be evident that various modifications and changes can be made to these example embodiments without departing from the broader spirit and scope of the present application. Accordingly, the specification and drawings are to be regarded in an illustrative rather than a restrictive sense.
The present application is a Continuation-in-Part of U.S. application Ser. No. 17/202,210, filed on Mar. 15, 2021 and titled “ERROR CORRECTION IN NETWORK PACKETS,” the subject matter of which is incorporated herein by reference for all purposes.
Number | Name | Date | Kind |
---|---|---|---|
5657325 | Lou | Aug 1997 | A |
5910182 | Dent | Jun 1999 | A |
5968197 | Doiron | Oct 1999 | A |
6418549 | Ramchandran | Jul 2002 | B1 |
6505253 | Chiu | Jan 2003 | B1 |
6523068 | Beser et al. | Feb 2003 | B1 |
7016658 | Kim et al. | Mar 2006 | B2 |
7124205 | Craft et al. | Oct 2006 | B2 |
7447234 | Colas et al. | Nov 2008 | B2 |
7664883 | Craft et al. | Feb 2010 | B2 |
7848350 | Inamdar | Dec 2010 | B1 |
7971131 | Ordentilch | Jun 2011 | B1 |
8223643 | Wolfgang | Jul 2012 | B1 |
8305963 | Breau | Nov 2012 | B1 |
8327232 | Budampati et al. | Dec 2012 | B2 |
8352830 | Landschaft et al. | Jan 2013 | B2 |
8437267 | Amir et al. | May 2013 | B2 |
8473821 | Taghavi Nasrabadi et al. | Jun 2013 | B2 |
8693406 | Ahmadi | Apr 2014 | B2 |
8990663 | Liu et al. | Mar 2015 | B2 |
10270564 | Djukic et al. | Apr 2019 | B2 |
10491569 | Powell | Nov 2019 | B1 |
10749594 | O'Shea et al. | Aug 2020 | B1 |
11088784 | Gopalan et al. | Aug 2021 | B1 |
11191049 | Chandrasekher et al. | Nov 2021 | B1 |
11368250 | Chandrasekher et al. | Jun 2022 | B1 |
11368251 | Chandrasekher et al. | Jun 2022 | B1 |
20010030954 | Hameleers | Oct 2001 | A1 |
20020026523 | Mallory et al. | Feb 2002 | A1 |
20020054608 | Wan | May 2002 | A1 |
20020122510 | Yakhnich et al. | Sep 2002 | A1 |
20030215029 | Limberg | Nov 2003 | A1 |
20040170120 | Reunamaki et al. | Sep 2004 | A1 |
20050094561 | Raaf | May 2005 | A1 |
20050208897 | Lyons | Sep 2005 | A1 |
20060021040 | Boulanger | Jan 2006 | A1 |
20060047862 | Shearer et al. | Mar 2006 | A1 |
20060268996 | Sethi et al. | Nov 2006 | A1 |
20070168197 | Vasilache | Jul 2007 | A1 |
20080002688 | Kim et al. | Jan 2008 | A1 |
20080002790 | Itoh | Jan 2008 | A1 |
20080126824 | Lee et al. | May 2008 | A1 |
20080225735 | Qiu | Sep 2008 | A1 |
20080250299 | Maillet et al. | Oct 2008 | A1 |
20090086711 | Capretta et al. | Apr 2009 | A1 |
20090119566 | Hiromitsu | May 2009 | A1 |
20090125779 | Vermeiden et al. | May 2009 | A1 |
20090276686 | Liu et al. | Nov 2009 | A1 |
20100037270 | Bennett | Feb 2010 | A1 |
20100165868 | Gersemsky | Jul 2010 | A1 |
20100192175 | Bachet | Jul 2010 | A1 |
20100202416 | Wilhelmsson et al. | Aug 2010 | A1 |
20100262885 | Cheng | Oct 2010 | A1 |
20110131461 | Schulz | Jun 2011 | A1 |
20110206019 | Zhai et al. | Aug 2011 | A1 |
20110206065 | Kim et al. | Aug 2011 | A1 |
20110216787 | Ai et al. | Sep 2011 | A1 |
20120300642 | Abel et al. | Nov 2012 | A1 |
20130018889 | Jagmohan | Jan 2013 | A1 |
20130132786 | Tanigawa et al. | May 2013 | A1 |
20130198591 | Kamuf et al. | Aug 2013 | A1 |
20130223203 | Bai | Aug 2013 | A1 |
20130250179 | Lida | Sep 2013 | A1 |
20130339036 | Baeckstroem et al. | Dec 2013 | A1 |
20140140342 | Narad | May 2014 | A1 |
20140241309 | Hilton | Aug 2014 | A1 |
20150009902 | Emmanuel | Jan 2015 | A1 |
20160006842 | Tahir | Jan 2016 | A1 |
20160062954 | Ruff | Mar 2016 | A1 |
20160254881 | Meylan | Sep 2016 | A1 |
20160261375 | Roethig | Sep 2016 | A1 |
20170006616 | Singh et al. | Jan 2017 | A1 |
20170012799 | Jiang | Jan 2017 | A1 |
20170269876 | Mukhopadhyay et al. | Sep 2017 | A1 |
20180013808 | Petry et al. | Jan 2018 | A1 |
20180048567 | Ignatchenko | Feb 2018 | A1 |
20180101957 | Talathi | Apr 2018 | A1 |
20180267850 | Froelich et al. | Sep 2018 | A1 |
20180288198 | Pope et al. | Oct 2018 | A1 |
20180314985 | O'Shea | Nov 2018 | A1 |
20180359811 | Verzun et al. | Dec 2018 | A1 |
20190028237 | Pan et al. | Jan 2019 | A1 |
20190037052 | Deshpande | Jan 2019 | A1 |
20190097680 | O'Brien | Mar 2019 | A1 |
20190097914 | Zhong et al. | Mar 2019 | A1 |
20190392266 | Zhong et al. | Dec 2019 | A1 |
20190393903 | Mandt et al. | Dec 2019 | A1 |
20200099470 | Licardie | Mar 2020 | A1 |
20200128279 | Han et al. | Apr 2020 | A1 |
20200177418 | Hoydis et al. | Jun 2020 | A1 |
20200213152 | Choquette et al. | Jul 2020 | A1 |
20200320371 | Baker | Oct 2020 | A1 |
20200383169 | Takahashi et al. | Dec 2020 | A1 |
20210014939 | Verzun et al. | Jan 2021 | A1 |
20210034846 | Ko et al. | Feb 2021 | A1 |
20210056058 | Lee et al. | Feb 2021 | A1 |
20210120440 | Reimann et al. | Apr 2021 | A1 |
20210319286 | Gunduz | Oct 2021 | A1 |
20210392033 | Haartsen | Dec 2021 | A1 |
20220045696 | Boussard | Feb 2022 | A1 |
20220114436 | Gopalan et al. | Apr 2022 | A1 |
20220209893 | Chandrasekher et al. | Jun 2022 | A1 |
20220209894 | Chandrasekher et al. | Jun 2022 | A1 |
20220209895 | Chandrasekher et al. | Jun 2022 | A1 |
20220209896 | Gopalan et al. | Jun 2022 | A1 |
20220209897 | Jiang et al. | Jun 2022 | A1 |
20220209909 | Chandrasekher et al. | Jun 2022 | A1 |
20220210250 | Chandrasekher et al. | Jun 2022 | A1 |
20220294557 | Gopalan et al. | Sep 2022 | A1 |
Number | Date | Country |
---|---|---|
106487610 | Mar 2017 | CN |
2493081 | Jan 2013 | GB |
WO2022081434 | Apr 2022 | WO |
Entry |
---|
Grcar, “How ordinary elimination became Gaussian elimination”, Historia Mathematica vol. 38, Issue 2, May 2011, pp. 163-218 (Year: 2011). |
Kim et al., “Deepcode: Feedback Codes via Deep Learning,” [online] Jul. 2, 2018 [retrieved on Apr. 17, 2020], Retrieved from the Internet: <URL:https://arxiv.org/abs/1807.00801v1>, 24 pages. |
Gopalan et al., “Systems and Methods for Artificial Intelligence Discovered Codes”, U.S. Appl. No. 17/069,794 , filed Oct. 13, 2020, Specification, Claims, Abstract, and Drawings, 43 pages. |
Goutay et al., “Deep reinforcement learning autoencoder with noisy feedback.” 2019 International Symposium on Modeling and Optimization in Mobile, Ad Hoc, and Wireless Networks (WiOPT). IEEE. Jun. 24, 2019, 6 pages. |
Yamamoto et al., “Application of Yamamoto-Itoh coding scheme to discrete memoryless broadcast channels.” 2017 IEEE International Symposium on Information Theory (ISIT). IEEE, 2017, 5 pages. |
Aoudia et al., “End-to-end learning of communications systems without a channel model.” 2018 52nd Asilomar Conference on Signals, Systems, abd Computers. IEEE, Dec. 5, 2018, 6 pages. |
Duman et al., “On optimal power allocation for turbo codes.” Proceedings of IEEE International Symposium on Information Theory. IEEE, Jun. 29-Jul. 4, 1997, 1 page. |
Arvinte et al., “Deep Log-likelihood ration quantization.” 2019 27th European Signal Processing Conference (EUSIPCO). IEEE, 2019, 5 pages. |
“International Search Report” and “Written Opinion”, Patent Cooperation Treaty Application No. PCT/US2021/054265, dated Nov. 24, 2021, 24 pages. |
“International Search Report” and “Written Opinion”, Patent Cooperation Treaty Application No. PCT/US2021/0063356, dated Jan. 14, 2022, 9 pages. |
“International Search Report” and “Written Opinion”, Patent Cooperation Treaty Application No. PCT/US2021/061902, dated Jan. 24, 2022, 11 pages. |
Henze, Martin, “A Machine-Learning Packet-Classification Tool for Processing Corrupted Packets on End Hosts”, Diploma Thesis, Chair of Communication and Distributed Systems, RWTH Aachen University, Mar. 2011, 103 pages. |
“International Search Report” and “Written Opinion”, Patent Cooperation Treaty Application No. PCT/US2021/06617, dated Mar. 11, 2022, 12 pages. |
Kötter et al., “Coding for Errors and Erasures in Random Network Coding”, IEEE Transactions on Information Theory 54.8; 3579-3591. Mar. 25, 2008; Retrieved on Feb. 19, 2022 (Feb. 19, 2022) from <https://arvix.org/pdf/cs/0703061.pdf> entire document; 30 pages. |
“International Search Report” and “Written Opinion”, Patent Cooperation Treaty Application No. PCT/US2021/064735, dated Mar. 17, 2022, 11 pages. |
“International Search Report” and “Written Opinion”, Patent Cooperation Treaty Application No. PCT/US2021/065003, dated Mar. 22, 2022, 10 pages. |
“International Search Report” and “Written Opinion”, Patent Cooperation Treaty Application No. PCT/US2021/064999, dated May 4, 2022, 14 pages. |
Number | Date | Country | |
---|---|---|---|
20220294560 A1 | Sep 2022 | US |
Number | Date | Country | |
---|---|---|---|
Parent | 17202210 | Mar 2021 | US |
Child | 17556029 | US |