WO2020210779A2 - Segments de données codés pour services qualitatifs de réseau - Google Patents

Segments de données codés pour services qualitatifs de réseau Download PDF

Info

Publication number
WO2020210779A2
WO2020210779A2 PCT/US2020/027872 US2020027872W WO2020210779A2 WO 2020210779 A2 WO2020210779 A2 WO 2020210779A2 US 2020027872 W US2020027872 W US 2020027872W WO 2020210779 A2 WO2020210779 A2 WO 2020210779A2
Authority
WO
WIPO (PCT)
Prior art keywords
coded
chunks
data chunks
coded data
packets
Prior art date
Application number
PCT/US2020/027872
Other languages
English (en)
Other versions
WO2020210779A3 (fr
Inventor
Lijun Dong
Cedric Westphal
Kiran MAKHIJANI
Hamed YOUSEFI
Renwei Li
Original Assignee
Futurewei Technologies, Inc.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Futurewei Technologies, Inc. filed Critical Futurewei Technologies, Inc.
Publication of WO2020210779A2 publication Critical patent/WO2020210779A2/fr
Publication of WO2020210779A3 publication Critical patent/WO2020210779A3/fr

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/34Flow control; Congestion control ensuring sequence integrity, e.g. using sequence numbers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/08Arrangements for detecting or preventing errors in the information received by repeating transmission, e.g. Verdan system
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/18Automatic repetition systems, e.g. Van Duuren systems
    • H04L1/1829Arrangements specially adapted for the receiver end
    • H04L1/1835Buffer management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/18Automatic repetition systems, e.g. Van Duuren systems
    • H04L1/1829Arrangements specially adapted for the receiver end
    • H04L1/1835Buffer management
    • H04L1/1845Combining techniques, e.g. code combining
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L2001/0092Error control systems characterised by the topology of the transmission link
    • H04L2001/0097Relays

Definitions

  • This disclosure generally relates to data transmission in a network.
  • Network transport control methods are responsible for reliable and in-order delivery of data from a sender to a receiver through various network nodes. Using current control methods, any error due to link congestion or intermittent packet loss in the network can trigger re-transmission of data packets. This results in unpredictable delays as well as an increase in the network load, wasting network resources and capacity.
  • a packet is the fundamental unit upon which different actions such as classification, forwarding, or discarding are performed by the network nodes.
  • Different schemes have been proposed to improve the efficiency of data transmissions and increase predictability, some of which are based on mechanisms for efficient and faster re transmissions, while others utilize redundant transmissions.
  • One general aspect includes a method of controlling data flows in a network at an intermediate data node.
  • the method comprises: receiving one or more data packets including a header and a payload, the payload including a plurality of coded data chunks, the header in each of the one or more packets indicating a number of coded data chunks originally carried in each of the one or more packets, each coded data chunk being a sub-set of the payload, the coded data chunks being coded in a random linear coding, the coded data chunks being coded in a first coding group of an original number of un-coded data chunks.
  • the method of controlling data also includes determining that the one or more packets includes less than all of the number of coded data chunks originally carried.
  • the method of controlling data also includes determining a number of coded chunks needed by a receiver to allow the receiver to reconstruct the original number of un-coded data chunks.
  • the method of controlling data also includes providing one or more coded data chunks based on the first coding group, using one or more stored coded data chunks based on the first coding group, to a receiver to allow the receiver to reconstruct the original number of un-coded data chunks.
  • Other embodiments of this aspect include corresponding computer systems, apparatus, and computer programs recorded on one or more computer storage devices, each configured to perform the actions of the methods.
  • Implementations may include one or more of the following features.
  • the method may further include a method including the aforementioned steps and features where the method includes: using the stored data chunks to construct one or more additional coded data chunks based on the first coding group and the stored coded data chunks, and the providing includes providing the additional coded data chunks to the receiver.
  • the method may further include a method including the aforementioned steps and features, including the aforementioned steps and features where the method includes providing one or more stored coded data chunks to the receiver.
  • the method may further include a method including the aforementioned steps and features where the method of any further including storing one or more previously received data chunks to obtain the one or more stored coded data chunks, and constructing additional coded chunks with the one or more stored coded chunks.
  • the method may further include a method including the aforementioned steps and features including removing one or more of the coded data chunks in the payload based on determining an adverse network condition which impedes data flows in the network.
  • the method may further include a method including the aforementioned steps and features where removing one or more of the coded data chunks includes removing a last one of the coded data chunks in the payload.
  • the method may further include a method including the aforementioned steps and features where the method further includes receiving one or more packets containing coded data chunks coded in the network coding group, and one or more packets containing coded data chunks coded in a later network coding group.
  • the method may further include a method including the aforementioned steps and features including removing one or more of the coded data chunks in the payload, where removing one or more of the coded data chunks includes removing one or more coded data chunks coded in the later network coding group before removing any the coded data chunks coded in the first coding group.
  • the method may further include a method including the aforementioned steps and features and further including: receiving a notification from a receiver device indicating that an insufficient number of coded chunks has been received to reconstruct the original number of un-coded data chunks.
  • the method may further include a method including the aforementioned steps and features, and may also include providing one or more coded data chunks based on the first coding group, using the stored coded data chunks, to the receiver in response to receiving the notification.
  • the method may further include a method including the aforementioned steps and features where the notification includes an acknowledgement packet including at least a coefficients field including coefficients of one or more coded data chunks in the payload, said coefficients allowing determining whether a stored coded data chunk at an intermediate node may be used to re-reconstruct additional coded data chunks that would help the receiver to reconstruct the original number of un-coded data chunks.
  • the method may further include a method including the aforementioned steps and features and further including: transmitting a notification to a sender indicating that less than all of the number of coded data chunks originally carried and coded in the first coding group has been received and specifying a number of coded data chunks coded in the first coding group required for reconstructing the original number of un-coded data chunks at a receiver.
  • One general aspect includes a network receiver apparatus, including: a non- transitory memory storage including instructions; and one or more processors in communication with the memory, where the one or more processors execute the instructions to: receive one or more data packets including a header and a payload, the payload including a plurality of coded data chunks, the header in each of the one or more packets indicating a number of coded data chunks originally carried in each of the one or more packets, each coded data chunk being a sub-set of the payload, the coded data chunks being coded in a random linear coding, the coded data chunks being coded in a first coding group of an original number of un-coded data chunk; determine that the one or more packets includes less than all of the number of coded data chunks originally carried; determine whether the original number of un coded chunks can be decoded from the less than all of the coded data chunks originally carried; and reconstruct the original number of un-coded data chunks based on at least the plurality
  • Implementations may include one or more of the following features.
  • the network node apparatus may include a network node apparatus having any of the foregoing features where the one more processors execute instructions to: determine whether the original number of un-coded chunks can be decoded from the less than all of the coded data chunks originally carried and one or more previously stored coded data chunks.
  • the network node apparatus may include a network node apparatus having any of the foregoing features where the one more processors execute instructions to: further including determining that the original number of un-coded chunks cannot be decoded from the less than all of the coded data chunks originally carried and any previously stored chunks; and in response transmitting a request for additional coded data chunks from a sender.
  • the network node apparatus may include a network node apparatus having any of the foregoing features where the one more processors execute instructions to: where the request includes an acknowledgement packet including at least a coefficients field including coefficients of the plurality of coded data chunks in the payload, said coefficients allowing determining whether a stored coded data chunk at an intermediate node may be used to reconstruct additional coded chunks that would help the network receiver to reconstruct the original number of un-coded data chunks.
  • the network node apparatus may include a network node apparatus having any of the foregoing features where the one more processors execute instructions to: in response to the request, receive, in one or more data packets including coded data chunks from a different coding group, at least one coded data chunk based the un-coded data chunks in the first coding group determine whether the original number of un-coded chunks can be decoded from the less than all of the coded data chunks originally carried and one or more previously stored coded data chunks.
  • the network node apparatus may include a network node apparatus having any of the foregoing features where the one more processors execute instructions to determine that the original number of un-coded chunks cannot be decoded from the less than all of the coded data chunks originally carried and any previously stored chunks; and in response transmitting a request for additional coded data chunks from a sender.
  • the network node apparatus may include a network node apparatus having any of the foregoing features where the one more processors execute instructions to: where the request includes an acknowledgement packet including at least a coefficients field including coefficients of the plurality of coded data chunks in the payload, said coefficients allowing determining whether a stored coded data chunk at an intermediate node may be used to reconstruct additional coded chunks that would help the network receiver to reconstruct the original number of un-coded data chunks.
  • the network node apparatus may include a network node apparatus having any of the foregoing features where the one more processors execute instructions to: in response to the request, receive, in one or more data packets including coded data chunks from a different coding group, at least one coded data chunk based the un-coded data chunks in the first coding group.
  • One general aspect includes a non-transitory computer-readable medium storing computer instructions for controlling data in a network, that when executed by one or more processors, cause the one or more processors to perform the steps of: accessing data output by an application in application data packets, each application data packet including a data payload; dividing the data payload of each of the application data packets into application data chunks, each application data chunk being a sub-set of the payload; coding the application data chunks in a first coding group in a linear coding to provide a number of coded data chunks representing a number of application data chunks, the number of coded data chunks being at least enough to decode the coded data chunks into the application data chunks; creating a plurality of coded chunk data packets to carry the coded data chunks, each coded data packet including a header and a payload, the payload including at least some of the coded data chunks, the header in each of the packets indicating a quantity of coded data chunks originally carried in
  • the non-transitory computer-readable medium may have any of the foregoing features and further include instructions which cause the one or more processors to perform the steps ofselecting the quantity of coded data chunks for each coded data chunk packet such that the number of coded data chunks needed to decode the coded data chunks into the application data chunks is less than the coded data chunks transmitted in a series of data chunk packets, and transmitting the series of data chunk packets.
  • the non-transitory computer-readable medium may have any of the foregoing features and further include instructions which cause the one or more processors to perform the steps of receiving a notification that the number of coded data chunks needed to decode the coded data chunks into the application data chunks has not been received, including a request for a number of additional coded data chunks required for decoding.
  • the non-transitory computer-readable medium may have any of the foregoing features and further include instructions which cause the one or more processors to perform the steps of transmitting to the receiver at least the additional number of coded chunks based on the application data chunks.
  • the non-transitory computer-readable medium may have any of the foregoing features and further include instructions which cause the one or more processors to perform the steps of: transmitting all of the coded chunk data packets without waiting for a notification that the coded chunk data packets has been received at the receiver.
  • the non-transitory computer-readable medium may have any of the foregoing features and further include instructions which cause the one or more processors to perform the steps of: receiving a notification that an insufficient number of the coded data chunks has been received at a receiver to allow decoding of the coded data chunks into the application data chunks at a receiver, including a request for a number of additional coded data chunks required for decoding.
  • the non-transitory computer-readable medium may have any of the foregoing features and further include instructions which cause the one or more processors to perform the steps of transmitting one or more data packets including coded chunks derived from a different group of application data chunks, the one or more packets including coded chunks derived from the different group including a different capacity than those of the packets including coded chunks from the first network coding group.
  • the non-transitory computer-readable medium may have any of the foregoing features and further include instructions which cause the one or more processors to perform the steps of: receiving a notification that a quantity of the coded data chunks were received by a receiver, the quantity receive by the receiver being less than the quantity of coded data chunks carried by the packets by a first ratio.
  • One general aspect includes a non-transitory computer-readable medium storing computer instructions for controlling data in a network, that when executed by one or more processors, cause the one or more processors to perform the steps of: receiving one or more data packets including a header and a payload, the payload including a plurality of coded data chunks, the header in each of the one or more packets indicating a number of coded data chunks originally carried in each of the one or more packets, each coded data chunk being a sub-set of the payload, the coded data chunks being coded in a random linear coding, the coded data chunks being coded in a first coding group of an original number of un-coded data chunks; determining that the one or more packets includes less than all of the number of coded data chunks originally carried; determining a number of coded chunks needed by a receiver to allow the receiver to reconstruct the original number of un-coded data chunks; providing one or more coded data chunks based on the first
  • One general aspect includes a method performed at a network receiver apparatus, including: receiving one or more data packets including a header and a payload, the payload including a plurality of coded data chunks, the header in each of the one or more packets indicating a number of coded data chunks originally carried in each of the one or more packets, each coded data chunk being a sub-set of the payload, the coded data chunks being coded in a random linear coding, the coded data chunks being coded in a first coding group of an original number of un-coded data chunks; determining that the one or more packets includes less than all of the number of coded data chunks originally carried; determining whether the original number of un-coded chunks can be decoded from the less than all of the coded data chunks originally carried; and reconstructing the original number of un-coded data chunks based on at least the plurality of coded data chunks.
  • Other embodiments of this aspect include corresponding computer systems, apparatus, and computer programs recorded on
  • One general aspect includes a non-transitory computer-readable medium storing computer instructions for controlling data in a network, that when executed by one or more processors, cause the one or more processors to perform the steps of: receiving one or more data packets including a header and a payload, the payload including a plurality of coded data chunks, the header in each of the one or more packets indicating a number of coded data chunks originally carried in each of the one or more packets, each coded data chunk being a sub-set of the payload, the coded data chunks being coded in a random linear coding, the coded data chunks being coded in a first coding group of an original number of un-coded data chunks; determining that the one or more packets includes less than all of the number of coded data chunks originally carried; determining whether the original number of un-coded chunks can be decoded from the less than all of the coded data chunks originally carried; and reconstructing the original number of un-coded data chunks
  • One general aspect includes a method performed at a network sender, including: accessing data output by an application in application data packets, each application data packet including a data payload.
  • the method also includes dividing the data payload of each of the application data packets into application data chunks, each application data chunk being a sub set of the payload.
  • the method also includes coding the application data chunks in a first coding group in a linear coding to provide a number of coded data chunks representing a number of application data chunks, the number of coded data chunks being at least enough to decode the coded data chunks into the application data chunks.
  • the method also includes creating a plurality of coded chunk data packets to carry the coded data chunks, each coded data packet including a header and a payload, the payload including at least some of the coded data chunks, the header in each of the packets indicating a quantity of coded data chunks originally carried in each of the packets.
  • the method also includes transmitting the coded chunk data packets to a receiver.
  • Another aspect includes a network apparatus, including: a non-transitory memory storage including instructions; and one or more processors in communication with the memory, where the one or more processors execute the instructions to access data output by an application in application data packets, each application data packet including a data payload; divide the data payload of each of the application data packets into application data chunks, each application data chunk being a sub-set of the payload; code the application data chunks in a first coding group in a linear coding to provide a number of coded data chunks representing a number of application data chunks, the number of coded data chunks being at least enough to decode the coded data chunks into the application data chunks; create a plurality of coded chunk data packets to carry the coded data chunks, each coded data packet including a header and a payload, the payload including at least some of the coded data chunks, the header in each of the packets indicating a quantity of coded data chunks originally carried in each of the packets; and transmit
  • FIG. 1 illustrates an embodiment of a network environment suitable for use with the present technology.
  • FIG. 2 illustrates an embodiment of a network node comprising a router.
  • FIG. 3 illustrates a linear network coding of data chunks in a data payload of a packet.
  • FIG. 4 illustrates a linear network coding of data chunks in a network coding group of a data flow.
  • FIG. 5 is a flow chart illustrating a method performed at a network enabled sender device.
  • FIG. 6 is a depiction of application data coded into coded data chunks and assigned to two packets.
  • FIG. 7 is a depiction of a New IP packet structure suitable for use with the present technology.
  • FIG. 8 is a depiction of a BPP packet structure suitable for use with the present technology.
  • FIG. 9 is a depiction of coded data chunks flowing through multiple network nodes where multiple coded chunks are dropped during transport.
  • FIG. 10 is a flowchart of a method which is performed on a network enabled receiver device.
  • FIG. 11 is a diagram illustrating prioritization of earlier flow coded data chunks in a later flow packet.
  • FIG. 12 is a diagram illustrating the use of coded data chunks in multiple packets as each packet moves through a network.
  • FIG. 13 is a flowchart illustrating a method performed on any intermediate network node.
  • FIG. 14 is a flowchart illustrating a method performed each device in a network in accordance with the technology.
  • FIG. 15 illustrates a schematic diagram of a general-purpose network component or computer system
  • the present disclosure will now be described with reference to the figures, which in general relate to managing network traffic in order to improve network throughput and reliability and reduce latency.
  • the technology includes a data transmission framework which comprises application, transport, and network components, which improves the data flow through the network when adverse network conditions are encountered.
  • Random network coding is used to encode data chunks at the chunk level in a data transmission framework to allow reconstruction of packets dropped because of network transmissions or due to qualitative services operations.
  • Linear network coding may be applied to application data chunks, and the coded chunks organized in one or more packet payloads.
  • the coding may be applied to a group of chunks across packets within a flow, and across data flows.
  • receiver devices and intermediate forwarding network nodes can reconstruct coded chunks if coded chunks are dropped in the network.
  • Coded chunks can be re-created at the receiver node (and/or intermediate node which can forward the re-created coded chunks to a receiver) to allow reconstruction of original data from a sender.
  • the technology includes methods and apparatuses to provide qualitative services in a network system.
  • network transmissions in the form of data packets have a data payload broken into smaller logical units with each smaller logical unit of the payload called a“chunk”.
  • Qualitative services may be applied at the data chunk level.
  • the network transmissions may originate with an application transmitting the data.
  • Coded chunks may be dropped by a transport layer mechanism which manages congestion or to address other adverse network conditions.
  • One form of qualitative service comprises a“packet wash” qualitative service, which reduces the size of a packet by dropping coded chunks from the data payload while retaining as much information as possible.
  • FIG. 1 illustrates an embodiment of a network system 50 suitable for use with the present technology.
  • FIG. 1 illustrates a plurality of network enabled devices including, by way of example only, a mobile device 110, a computer 112 and a server 108.
  • the devices are coupled via network data paths 100 and through several network nodes 106-1, 106-2 and 106- 3.
  • Each node may be a router, switch or other network component which is operable to route network traffic in any number of transport control methods.
  • Each network enabled device 108, 110, 112 may include one or more applications 114, which generate network data which may be communicated to other network enabled devices The applications 114 may be executed by a processor utilizing volatile and non volatile memory to generate and forward the data, as well as communicate with the network interface 122 and qualitative services (QS) engine 125.
  • Each network enabled device 108, 110, 112 may include one or more network interfaces 122 allowing the device to communicate via the network data paths 100.
  • Each network interface 122 may include a QS engine 125 which may include code adapted to receive data described herein from the applications 114 on each device and perform certain aspects of the technology described herein.
  • Each network enabled device may further include an encoder/decoder 180 and a coded chunk cache 190.
  • the cache 195 may be a dedicated hardware memory component or a reserved portion of system memory.
  • the encoder/decoder may be utilized to perform the chunk coding and decoding operations described herein, while the chunk cache may store coded chunks received from other network enabled devices or network nodes for use in reconstructing other coded chunks.
  • Each network enabled device 108, 110, 112 is configured to operate and/or communicate in the system 50 as a data sender or a data receiver.
  • network enabled device 108 is configured to transmit and/or receive data to/from any of the other network devices 108, 110, 112.
  • the data paths 100 may be wireless signals or wired signals and thus the network system 50 of FIG. 1 may comprise a wired or a wireless network.
  • the environment may include additional or alternative networks including private and public data-packet networks, and corporate intranets.
  • Each network enabled device 108, 110, 112 represents any suitable end user device and may include such devices (or may be referred to) as a user equipment/device, wireless transmit/receive unit, mobile station, fixed or mobile subscriber unit, pager, cellular telephone, personal digital assistant (PDA), smartphone, laptop, computer, touchpad, tablet, wireless sensor, wearable devices consumer electronics device, a target device, device-to-device (D2D) machine type user equipment or user equipment capable of machine-to-machine (M2M) communication, and USB dongles.
  • PDA personal digital assistant
  • D2D device-to-device
  • M2M machine-to-machine
  • Each network node 106-1 through 106-3 may likewise include a network interface 124 (or multiple network interfaces) and a QS routing engine 155 allowing the node to perform certain aspects of the technology.
  • Each node 106-1 through 106-3 may further include an encoder/decoder 185 and a coded chunk cache 195.
  • the encoder/decoder 185 may be utilized to perform the chunk coding and decoding operations described herein, while the chunk cache 195 may store coded chunks received from other network enabled devices or network nodes for use in reconstructing other coded chunks.
  • the nodes 106-1 to 106-3 may comprise access points which may use technology such as defined by IEEE 802.11h or 802.1 lax to provide wireless network access to one or more devices
  • the term“access point” or“AP” is generally used in this document to refer to an apparatus that provides wireless communication to user equipment through a suitable wireless network, which may include a cellular network, and it will be understood that an AP may be implemented by a base station of a cellular network, and the AP may implement the functions of any network node described herein.
  • the nodes can similarly provide wired or wireless access network access through other networking technologies other than 802.11.
  • FIG. 1 illustrates one example of a communication system
  • the communication system 100 could include any number of user equipment, access points, networks, or other components in any suitable configuration.
  • FIG. 2 illustrates an embodiment of a network node which may implement a router.
  • the node e.g., a router
  • the node 200 may be, for example, a node 106 or any other node or router as described above in communication system 100.
  • the node 200 may comprise a plurality of input/output ports 210/230 and/or receivers (Rx) 212 and transmitters (Tx) 232 for receiving and transmitting data from other nodes, a processor 220 to process data and determine which node to send the data to and a memory.
  • the node 200 may also generate and distribute data in the form of data packets in the communication system.
  • the processor 220 is not so limited and may comprise multiple processors.
  • the processor 220 may be implemented as one or more central processing unit (CPU) chips, cores (e.g., a multi-core processor), field-programmable gate arrays (FPGAs), application specific integrated circuits (ASICs), and/or digital signal processors (DSPs), and/or may be part of one or more ASICs. Moreover, the processor 220 may be implemented using hardware, software, or both.
  • the memory 222 may be configured to store routing tables, forwarding tables, or other tables or information disclosed herein. Although illustrated as a single memory, memory 222 may be implemented as a combination of read only memory (ROM), random access memory (RAM), or secondary storage (e.g., one or more disk drives or tape drives used for non-volatile storage of data). In one embodiment, memory 222 stores code that enables the processor 220 to implement the QS routing engine 155, and encoder/decoder 185. Memory 22 may include reserved space to implement the coded chunk cache 195.
  • the QS routing engine 155 is in the form of code which is operable to instruct the processor 220 to perform those tasks attributed to the QS routing engine 155.
  • a portion of memory 222 is dedicated to cache 195.
  • the encoder/decoder 185 may also be in the form of code which is operable to instruct the processor 220 to perform those tasks attributed to the QS routing engine encoder/decoder 185.
  • the technology described above may also be implemented on any general-purpose network component, such as a computer or network component with sufficient processing power, memory resources, and network throughput capability to handle the necessary workload placed upon it.
  • the present technology breaks down the packet into smaller logical units with each unit (called a“chunk”) being encoded with a random linear coding into a series of such chunks that can be transmitted in separate encoded packets, allowing the reconstruction of the original packet at various network mid and endpoints.
  • Each of the QS engines 125 and QS routing engines 155 in a system 50 can manipulate and modify data packets transmitted in the system at the chunk level by removing chunks of data from the data payload of each packet as needed to address adverse network conditions.
  • Each network enabled device’s applications e.g. applications 114) create packetized network flows.
  • the network nodes 106, and in particular the QS routing engines 155, perform qualitative service packet manipulation in the network environment 50.
  • Packet wash is a packet scrubbing operation that reduces the size of a packet while retaining as much information as possible. It operates by dropping coded chunks from the data payload to address the adverse network condition.
  • Each node 106 selectively drops parts of the packet payload to reduce packet size and alleviate congestion while forwarding the remainder of the packet to its destination.
  • Each network node 106 makes decisions to drop chunk(s) based on the current situation, such as congestion level, the priority carried in the packet, etc.
  • the coded chunks in the packet payload may have no explicit relative significance to each other.
  • the chunks have a relationship with each other in that they are coded from the chunks of a network coding group.
  • a packet wash technique need not determine which coded chunks should be dropped (if it is necessary to drop some but not all chunks); all coded chunks are treated equally, since any coded chunk can be used to re-create additional coded chunks at an intermediate node.
  • a node can optionally drop one or more last chunks in a sequence of chunks within a packet if one or more chunks should be dropped.
  • FIG. 3 illustrates the general concept of linear network coding as applied to application chunks (such as those illustrated in FIG.3) in a payload.
  • the payload in a packet which is originated from the sender, is divided into h number of chunks with the same size.
  • the sender After random linear network coding is applied to the original data chunks of the packet payload as shown in FIG. Error! Reference source not found.3, the sender will include as many as“h” coded chunks in each packet payload. Where there are a larger than“h” number of coded chunks, multiple packets may be used, with the one or multiple packets defining one or more flows. Where there are less than h coded chunks, one packet may be used. However, as discussed herein, more chunks than the original data chunks can be included in a payload (of one or more packets) to provide a degree of freedom in decoding the original data. However, the use of more coded chunks than original data chunks is not required.
  • a degree of freedom may be defined as the number of coded chunks that are needed to decode the original data which was used to code the coded chunks.
  • a degree of freedom is k if and only if it needs k independent coded packets to decode the original data.
  • Fig. 4 illustrates the use of random linear network coding on the chunks within a group 400 of packets.
  • a network coding group 400 may be defined as a group of chunks that are involved in one linear network coding operation.
  • this comprises a group 400 of 12 application data chunks (i.e.“original payload chunks”) spread across three payload packets.
  • Each original, application data chunk is coded in an operation which results in a corresponding number of coded data chunks in this example, yielding coded data chunks 1 - 12.
  • coded data chunks are coded and assigned to packets transmitted in a data flow to provide a redundancy of coded packets for later decoding operation. No matter how many coded chunks arrive at the receiver, they can be useful to recover the original packet data.
  • coded chunks 1 - 12 are illustrated as having similar shaded components as those which are shown in the original data chunks in the group 400.
  • coded data chunks are illustrated without shading, as a continued representation of additional shaded elements representing coded portions of original data is difficult to view.
  • Random linear network coding may be applied to a flexible number of chunks from consecutive packets in the same flow. This provides more opportunity for recoding of chunks in the network. There is then a higher possibility that the chunks in the remainder of the packet payload are linearly independent to the chunks cached in the intermediate routers, given that they belong to the same network coding group.
  • FIG. 5 illustrates a general method performed by a network enabled device acting as a sender.
  • a coder/decoder 180 on a sender network enabled device acquires application data from an application which seeks to transmit data via the network 50.
  • the data will be linearly network coded at the chunk level to create at least the number of coded data chunks as application data chunks, and optionally, more coded data chunks.
  • the quality services engine 125 can assign the coded chunks to one or more packets based on the techniques described herein.
  • the coded chunks will be transmitted through the network system 50 to a receiver on the network.
  • a redundancy of coded data chunks is created from the original application data chunks.
  • a sender application can add a ratio of redundancy in the packet payloads.
  • FIG. 6B there are 5 chunks in a group 610.
  • six coded chunks 1-6 are provided. The six coded chunks are added into the two packets' payload with 20 percent of redundancy, also referred to as a degree of freedom herein.
  • Coded chunks 1 - 3 are assigned to packet 620 while coded chunks 4-6 are assigned to packet 630. If any intermediate forwarding node drops any one coded chunk from the packets, the receiver may still be able decode all of the original packets with enough degrees of freedom so that re-transmission is avoided.
  • the receiver can request additional coded chunks.
  • the receiver can acknowledge the number of degrees of freedom it has received, and the sender can keep generating packets with new combinations until k degrees of freedom have been received to decode the original data. The sender does not need to know which chunks are lost along the way.
  • each chunk is a coded chunk including coded data that is linearly independent from the other chunks
  • a sender only needs to send more (linearly independent) coded chunks of coded packets from the same network coding group, in a number equal to the missing degrees of freedom, to achieve a full rank and allow a receiver (or intermediate node) to be able to execute a decoding or reconstruction operation.
  • FIG. 7 illustrates one form of IP packet 700 which may be used to implement the present technology.
  • New IP Termed“New Internet Protocol”
  • the packet is part of an Internet framework that brings several capabilities in the present technology.
  • New IP creates a block of information about the IP packet.
  • a New IP packet 700 as shown in Error! Reference source not found. 7 carries a Contract block between a header and a data payload. Information is carried and processed along each network node hop from the sender to the receiver. The network and network nodes, if enabled, fulfill the contract specified in the packet, assuming the contract has been agreed between the packet sender/receiver and the network.
  • the Contract in the New IP packet carries the contract clause of a qualitative service to be performed.
  • a qualitative service to be performed may comprise a packet wash, which alters a packet to address a specific adverse network condition by, for example, dropping one or more coded chunks from a packet until the adverse condition clears.
  • Intermediate network nodes (106) can take the action defined under the condition that the network congestion happens.
  • the Contract includes a contract clause(s) 710 including associated metadata.
  • a contract clause 710 describes how the routers treat the packet as it traverses the network based on the predefined triggering defined in the Event and Condition fields, and Action specifies what actions are to be can be taken if the event and condition are satisfied.
  • an event may comprise network congestion identified by a condition such as a full egress queue in an intermediate network node to which an action (a packet wash, for example) may be applied.
  • The“Metadata” field contains data about the packet, e.g. accounting information, customized statistics about the flow on intermediate hops, the contextual information about the user, the application, etc.
  • the Metadata field may include the following to describe the information about the packet payload:
  • a Network Coding Group field is used to identify the original data chunks to which the linear network coding operation was applied.
  • the Network Coding Group relates to the original data content and the sender.
  • the sender may partition the original data content into multiple network coding groups, each group containing multiple chunks with equal size.
  • one or more coded chunks (but less than the number of chunks in the original data content) from the same network coding group may be forwarded. If there is a cached copy of a coded chunk at intermediate node that belongs to the same Network Coding Group, and it is independent to the chunks in the packet, and the packet has space, then the cached chunk can be added to the packet to increase the degree of freedom.
  • the Network Coding Group field can indicate which chunks are part of which coding groups.
  • the Indication of linear-network-coded chunks indicates whether the payload contains linear-network-coded chunks or not.
  • the coded chunk size gives the information on how large the chunk size is. When partial packet dropping happens, the network nodes are able to find the boundary of each coded chunk in the payload using the chunk size.
  • a Coefficients field provide the coefficients with which the original data chunks are linearly combined to form coded chunks contained in the current payload.
  • the Current rank indicates the current rank of the remaining coded chunks in the payload. Each time when a linearly independent chunk is dropped from the packet, the current rank is reduced by 1.
  • the Full rank indicates the full rank of the coded chunks in the payload when they are inserted by the sender.
  • FIG. 8 illustrates an alternative form of IP packet which may be used to implement aspects of the present technology.
  • the IP packet 800 of FIG. 8 uses a format referred to as Big Packet Protocol (BPP).
  • BPP is a programmable data plane technology compatible with IP networks.
  • BPP one may attach meta-information or directives using BPP blocks into packets. This meta-information provides guidance to intermediate routers about processing those packets.
  • the BPP block shown in FIG. 8, allows per-packet behavior for functionality such as in-band per-packet signaling facilities, per-flow path selections, and network-level operator decisions.
  • BPP is useful for implementing qualitative services and in particular the packet washing technology described herein.
  • a qualitative packet can be represented by a BPP contract consisting of packet wash directive which will have significance-factors as its meta data. By doing so, network nodes remain unaware of the user-payload, and wash packets only as prescribed by the application(s) 114.
  • the BPP blocks include metadata comprising: an indication of linear network coded chunks: for example, indicating that the coded chunks are equal with no difference in significance; the coded chunk size, used for the router to find the chunk delineator when packet wash needs to happen and a current rank, used to indicate how many chunks are left in the payload.
  • FIG. 9 conceptually illustrates coded chunk packet flow via two intermediate hops on intermediate nodes 106-1 and 106-2.
  • each intermediate network node 106-1 106-2 can manipulate dropped coded chunks (based on network traffic or actively proceed with a packet wash operation if network congestion happens that requires packet dropping).
  • the packet eventually arrives at the receiver, one of the three scenarios may exist:
  • the packet coded chunk payload is intact, the receiver is able to acknowledge the arrival of the packet and wait for the next packet in the flow. (Although in some embodiments, acknowledgement of the arrival of a packet is not needed.)
  • Receiver device 108 may simply cache the coded chunks and request two more coded chucks belonging to the same network coding group. (As explained below, each of network nodes 106-1 and 106-2 may likewise cache those coded chunks which they receive.) Receiver network enabled device 110 may send an acknowledgement to the sender network enabled device 108, but this acknowledgement differs from a TCP ACK as discussed below.
  • FIG. 10. illustrates a method performed on a receiver network enabled device when packets of coded chunks of data arrive. At 1028, a determination is made as to whether all coded data chunks in a packet have been received. If so, application data can be reconstructed at 1040 using the coded data chunks.
  • the acknowledgement (ACK) at 1038 may be sent when: (1) a receiver or intermediate node determines there is at least one missing degree of freedom to decode the current network coding group; or (2) a sufficient degree of freedom is received by the receiver and the receiver is acknowledging complete receipt of a group of coded packets and now expects the sender to send a next group if any additional data still needs to be sent).
  • the Metadata of the ACK packet may include a request for the number of missing degrees of freedom (“rank short”) to decode the whole chunks in the current group in case (1), or the next network coding group in case (2).
  • the sender network enabled device can deduce the chunk loss ratio in the network during the transmission and correspondingly set the redundancy ratio of coded chunks to be the same as the chunk loss ratio for the future packets. If a current packet times out, it indicates that the entire packet was dropped during the transmission— the number of received chunks is set to 0 — resulting in a loss ratio of 1.
  • the redundancy ratio is dynamically adjusted from the information contained in the acknowledgement and calculated as the following equation:
  • BPP Metadata of an acknowledgement packet includes the network coding group, coefficients and the rank short field.
  • f the current rank is smaller than the full rank, the packet cannot be decoded.
  • the remainder of the coded packet payload, network coding group, coefficients, current rank and full rank can be stored in the receiver’s cache, and an acknowledgement packet with information included in the BPP Metadata block is returned to the sender.
  • the Metadata block of an acknowledgement packet generated by the receiver includes a:
  • Network coding group field which is set to be the same as the received packet
  • Coefficients field which includes the coefficients of the chunks in the received packet payload, and can be used to determine whether a cached chunk in an intermediate router could increase the degree of freedom or not;
  • the router When the acknowledgement packet reaches an intermediate router, the router tries to find cached coded chunks that belong to the same network coding group. Any cached coded chunks that have the same network coding group are checked to determine if they are linearly independent to the received chunks at the receiver, and if they are then a number of them sufficient to reach full rank (or come closer to full rank) can be sent to the receiver immediately.
  • the rank short field is reduced by 1 at each time a cached chunk is sent to the receiver, and the corresponding coefficients of those chunks are added to the coefficient field in the Metadata block of the acknowledgement packet. If the rank short can be reduced to 0, then the acknowledgement is modified to request the sender to send the next packet in the flow, and the entire Metadata block is removed.
  • FIG. 11 illustrates an implicit prioritization of coded packets forwarded from a sender network enabled device in response to an ACK from a receiver, where a coded packet from a first network coding group is included in a packet containing coded packets from a second network coding group. Illustrated in FIG. 11 is a second flow packet containing coded packets 1, G, 2’ and 3’. Packet 1 is a coded packet created based on application data from a first network coding group, while packets G, 2’ and 3’ are coded based on application data from a second network coding group.
  • the sender first includes the coded chunks from the network coding group with lower (i.e. first) order, with the number of chunks matching the degree of freedom that a receiver device may be short of to allow decoding for that first coding group. If the payload still has space to include coded chunks from the next (i.e. second) network coding group, those coded chunks are included in the second flow packet in order. The chunks from the lower order group are given higher priority than those of the second network coding group, since the receiver should be able to decode the lower order group first. Hence, when the packet wash is applied in the network system 50, lower priority chunks (in this case those of the second network coding group) would be dropped first.
  • lower priority chunks in this case those of the second network coding group
  • FIG. 12 graphically illustrates the forwarding, caching and reconstructing of coded data blocks which may occur at intermediate nodes 106.
  • application data to be transmitted is segmented into a group 1100 of k chunks.
  • k 5 as the data 1100 is grouped into 5 data chunks in a network coding group.
  • These k chunks are then network-coded at 1150 together into k ' > k new chunks wherein k’ in this example is 6.
  • payloads 1120, 1130 are created by inserting h network-coded chunks into the payload of a packet (where h is the largest number of chunks that fits in a packet).
  • h is the largest number of chunks that fits in a packet.
  • h is equal to 3 and hence only 3 chunks are provided in each packet.
  • Packet 1 includes one non-coded data chunk and two coded data chunks.
  • Packet 2 includes three coded data chunks. If k ⁇ h, then the whole group of k chunks fits within one packet. At the receiver, k chunks (or degrees of freedom) are needed to decode the original data.
  • the New IP header carries the coefficients for the linear combination of each network-coded chunk
  • the sender network enabled device can add a ratio of redundancy in the packet payloads. As shown in FIG. 12, there are 5 chunks in the group, but six coded chunks are added into the two packets' payload with 20 percent of redundancy. If any intermediate forwarding node drops any one chunk from the packets, the receiver can still decode the original packets with enough degree of freedom and re-transmission is avoided. The receiver can acknowledge the number of degrees of freedoms it has received, and the sender can keep generating packets with new combinations until k degrees of freedom have been received to decode the original data. The sender does not need to know which chunks are lost along the way. It only needs to send more (linearly independent) chunks of newly coded packets, in a number equal to the missing degrees of freedom.
  • node 106-1 initially drops one coded data chunk (coded data chunk 6 at 1130’.
  • Packets 1120 and 1130’ (having one less chunk than packet 1130) are forwarded to network node 106-2.
  • Node 106-2 may likewise perform a qualitative services operation and drop 1 of the coded chunks from packet 1120, resulting in packet 1120’.
  • Node 106 - 2 may cache the coded data chunks 1 through 3 from data packet 1120 upon receipt, thereby allowing node 106 - 2 to construct new coded data chunks 1135 (3’, 4’, 5”) which can be forwarded to the receiver network enabled device 108 which thereby allows re-creation of the original application data 1100 at device 108.
  • each node 106-1 and 106-2 can recreate and retransmit coded data chunks if a sufficient degree of freedom in the received coded chunks and any cached coded chunks exists and those cached chunks are linearly independent of the chunks already received by the receiver.
  • a receiver does not need to wait for a request to reach a sender device to obtain enough coded chunks from a data flow in which coded chunks have been dropped to obtain enough information to reconstruct the original application chunks 1100.
  • FIG. 13 is a flowchart illustrating a process which may be performed at any of network nodes 106-1, 106-2, 106- 3 by the QS routing engine 155 to perform the process illustrated in FIG. 12 where network nodes cache and recreate coded chunks.
  • one or more packets including, for example, a header and coded data chunks is received at a network node. Typically, more than one packet will be received at each node and buffered in an input buffer.
  • all or some of the coded received chunks in each packet can optionally be cached.
  • an initial determination is made as to whether there is an issue with the network based on the condition and issue specified in the header.
  • application of a packet wash to a data stream is conditioned upon an (adverse) issue or condition existing in the network. If there is no issue with the network at 1315 (i.e. if the condition is not satisfied), a determination is made at 1340 on whether a full packet has been received, i.e. that all coded chunks have been received in the packet. If so, then optionally at 1345, an acknowledgment of the packet may be returned to the sender, and at 1350 the packet is passed on to its next routing hop. Alternatively, no acknowledgment that the packet was received need be provided, and in yet another alternative, such an acknowledgment need only be sent when the packet is not received, if, for example, the packet was lost or otherwise dropped during transmission.
  • Step 1320 determines whether the packet is a qualitative service enabled packet. If not, then at 1322, the packet is processed in accordance with another packet transport protocol used in the network since no information is available in the packet to perform any qualitative service. If there is an issue with the network at 1315, and the packet is a QS packet 1320, then at 1325 a determination may be made as to whether to drop at least one (and possibly several) coded chunks available in the packet. Step 1325 comprises an analysis of the type of adverse issue affecting the network, and a calculation of how much data needs to be removed from each packet to alleviate the issue successfully.
  • this calculation may consider multiple packets at the network node, including packets which may be present in an input queue of a network node. Each packet having removed coded data chunks is then forwarded to the next network node hop at 1360. In optional embodiments, an acknowledgement as noted at 1345 may be provided at 1360, 1368 and 1375. [0086] The method of FIG. 13 is repeated at any network node having a QS routing engine 125. As such, at the next hop for a packet which has had chunks removed, the received packet at such hop will carry less information than the original payload from the sender. Ultimately, the packet will reach its destination receiver.
  • FIG. 14 is an illustration of methods performed at each hop between a sender 112 and a receiver 108.
  • the network enabled sender device 112 acquires application data and at 1404 codes the data into coded data chunks described herein.
  • the network enabled sender device 112 configures one or more data packets with the coded data chunks based on the capacity of each of the packets.
  • packets including the coded data chunks are forwarded to the network enabled receiving device 108 via one or more intermediate network nodes.
  • Fig. 14 only one network node 106 - 1 is illustrated, although more nodes could be used.
  • Network node 106 - 1, at 1412, makes a determination as to whether all coded data chunks in the data packet have arrived.
  • the data can be forwarded at 1424
  • a packet wash (or other qualitative services) process may be performed at 1414 (which can optionally lead to a modified packet being forwarded at 1424 as discussed above).
  • the data chunks can also be cached at 1426. The determination of whether to cache coded data chunks is independently determined by each intermediate node 106 based on available storage. If all coded data has not arrived at 1412, then at 1416 if there are missing coded data chunks, a determination is made as to whether or not re-creation of additional coded data chunks is possible, using previously cached chunks.
  • a packet wash process (generally described above) may be performed at 1414.
  • the wash process may result in the dropping of one or more coded data chunks. If there are missing coded data chunks at 1412, a determination is made as to whether not recreation is possible at 1416. Adding reconstructed coded data chunks at the intermediate node, if possible, provides the advantage that a receiver need not request such additional coded chunks from the sender in order to reconstruct the original data. Optionally, no determination of missing coded chunks is made and the packet with an existing number of coded chunks can be forwarded as at step 1424.
  • a request may be generated at 1422 (the acknowledgment request discussed herein) which is returned to the network enabled sender 112 and any received coded data chunks (less any chunks dropped by a packet wash) are then forwarded to the receiver at 1424.
  • a packet re-transmission may not be needed since the receiver has the capability or intelligence to comprehend what is left in the packet after removal of certain chunks from the payload by the intermediate network nodes and recover as much information as is enough for the receiver.
  • the receiver can acknowledge the acceptance of the packet, while it may also indicate to the sender that it was partially dropped in the network.
  • the receiver can even verify the interpreted information with its sender.
  • Network resource usage can be tremendously reduced and better prioritized for the delivery of other packets.
  • the latency of packet delivery can be significantly reduced due to the absence of re-transmissions, and smaller packet size after partial payload drops.
  • information contained in the original packet can be recovered by the receiving node, using algorithms or methods which are agreed and known in advance by the forwarding network nodes and the receiver.
  • the algorithms and methods can also be carried along with the packet, such that it can be detected and executed by the intermediate network nodes, and revealed to the receiver, which can carry out the reverse operation to recover some or all the information contained in the packet.
  • network coding and in particular random linear network coding, is applied to groups of chunks of the same flow.
  • Each group of coded chunks is identified by a group identifier.
  • Network coding is a networking technique in which the data is coded, transmitted, and then decoded in order to increase the resiliency of the network.
  • Network coding has been widely used at the packet level, where multiple packets are coded and transported between the same source and destination. In case of congestion, an entire packet is dropped, which means the receiver would lose one degree of freedom to decode the whole coded packets, and the packet delivery would take a longer time.
  • the benefit of applying random linear network coding to the chunks of the packet payload lies in fact that the sender can add some ratio of redundancy in the packet payloads, as shown in FIG. 6B. There are five chunks in the group, six coded chunks are added into two packets’ payloads with 20% of redundancy. If any intermediate forwarding node drops any one chunk from the two packets, the receiver can still decode the original packets. When the packet eventually reaches the receiver, any chunks that are retained in the packet can be cached by the receiver and are useful for future decoding of the original payload after enough degrees of freedom are received. When network congestion happens, the intermediate router does not need to decide which chunk to drop, it can randomly select as many chunks as needed until the outgoing buffer permits to contain the packet. There is no need for priority in this context and not need to track which specific chunk has been lost.
  • a coded chunk may be dropped by one forwarding node due to an error or bad network condition.
  • another forwarding node may re-code the existing chunks to generate coded chunks with a new degree of freedom and add them into the packet payload if the payload has space.
  • the forwarding nodes can create new coded chunks using previously cached, dropped chunks, and add the new coded chunks into the packet if the payload space permits, and usually this could happen after the in-network packet wash occurred in the previous hops. This feature is possible in random linear network coding owing to the portability of the coding coefficients and the random nature of code selection. Consequently, even with chunk loss in the network, the receiver can still obtain enough degree of freedom to decode the original packet.
  • FIG. 15 illustrates a schematic diagram of a general-purpose network component or computer system.
  • the general-purpose network component or computer system 1500 includes a processor 1502 (which may be referred to as a central processor unit or CPU) that is in communication with memory devices including secondary storage 1504, and memory, such as ROM 1506 and RAM 1508, input/output (I/O) devices 1510, and a network 1512, such as the Internet or any other well-known type of network, that may include network connectively devices, such as a network interface.
  • a processor 1502 may be implemented as one or more CPU chips, cores (e.g., a multi-core processor), FPGAs, ASICs, and/or DSPs, and/or may be part of one or more ASICs.
  • the processor 1502 may be configured to implement any of the schemes described herein.
  • the processor 1502 may be implemented using hardware, software, or both.
  • the secondary storage 1504 is typically comprised of one or more disk drives or tape drives and is used for non-volatile storage of data and as an over-flow data storage device if the RAM 1508 is not large enough to hold all working data.
  • the secondary storage 1504 may be used to store programs that are loaded into the RAM 1508 when such programs are selected for execution.
  • the ROM 1506 is used to store instructions and perhaps data that are read during program execution.
  • the ROM 1506 is a non-volatile memory device that typically has a small memory capacity relative to the larger memory capacity of the secondary storage 1504.
  • the RAM 1508 is used to store volatile data and perhaps to store instructions. Access to both the ROM 1506 and the RAM 1508 is typically faster than to the secondary storage 1504.
  • At least one of the secondary storage 1504 or RAM 1508 may be configured to store routing tables, forwarding tables, or other tables or information disclosed herein.
  • the technology comprises means (106, 108, 110, 112) for receiving one or more data packets having a header and a payload, the payload including a plurality of coded data chunks, the header indicating a number of coded data chunks carried in each of the one or more packets, each coded data chunk being a sub-set of the payload, the coded data chunks being coded in a random linear coding, the coded data chunks being coded based an original number of un-coded data chunks.
  • the technology includes means (125, 155) for determining that the one or more packets includes less than all of the indicated number of received coded chunks.
  • the technology further includes means (180, 185) for determining whether the original number of un-coded chunks can be decoded from the less than all of the indicated number of received coded chunks and one or more stored coded data chunks; and means (180, 185) reconstructing additional coded data chunks based less than all of the plurality of received coded chunks received and the one or more stored coded chunks.
  • the technology may further include means for reconstructing the original number of un-coded data chunks based on the received coded data chunks and the reconstructed additional coded data chunks.
  • the software or firmware used can be stored on one or more processor readable storage devices to program one or more of the blocks of FIG. 2 to perform the functions described herein.
  • the processor readable storage devices can include computer readable media such as volatile and non-volatile media, removable and non removable media.
  • computer readable media may comprise computer readable storage media and communication media.
  • Computer readable storage media may be implemented in any method or technology for storage of information such as computer readable instructions, data structures, program modules or other data.
  • Examples of computer readable storage media include RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical disk storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information, and which can be accessed by the components described above.
  • a computer readable medium or media does (do) not include propagated, modulated or transitory signals.
  • Communication media typically embodies computer readable instructions, data structures, program modules or other data in a propagated, modulated or transitory data signal such as a carrier wave or other transport mechanism and includes any information delivery media.
  • modulated data signal means a signal that has one or more of its characteristics set or changed in such a manner as to code information in the signal.
  • communication media includes wired media such as a wired network or direct-wired connection, and wireless media such as RF and other wireless media. Combinations of any of the above are also included within the scope of computer readable media.
  • some or all of the software or firmware can be replaced by dedicated hardware logic components.
  • illustrative types of hardware logic components include Field-programmable Gate Arrays (FPGAs), Application-specific Integrated Circuits (ASICs), Application-specific Standard Products (ASSPs), System-on-a-chip systems (SOCs), Complex Programmable Logic Devices (CPLDs), special purpose computers, etc.
  • FPGAs Field-programmable Gate Arrays
  • ASICs Application-specific Integrated Circuits
  • ASSPs Application-specific Standard Products
  • SOCs System-on-a-chip systems
  • CPLDs Complex Programmable Logic Devices
  • special purpose computers etc.
  • software stored on a storage device
  • the one or more processors can be in communication with one or more computer readable media/ storage devices, peripherals and/or communication interfaces.
  • each process associated with the disclosed technology may be performed continuously and by one or more computing devices. Each step in a process may be performed by the same or different computing devices as those used in other steps, and each step need not necessarily be performed by a single computing device.

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

L'invention concerne un procédé et un appareil permettant de commander des flux de données dans un réseau. Le procédé et l'appareil reçoivent un ou plusieurs paquets de données ayant un en-tête et une charge utile, l'en-tête définissant une pluralité de segments de données codés dans la charge utile. Les segments codés sont codés selon un codage linéaire aléatoire avec le ou les paquets en provenance d'un expéditeur délivrant des paquets de données d'application comprenant des segments de données d'application. Le procédé et l'appareil déterminent si tous les segments codés d'origine sont reçus. Pour tout paquet de données comportant un nombre inférieur au nombre de segments codés d'origine, le procédé et l'appareil accèdent à des segments codés mémorisés pour déterminer si le nombre de segments codés d'origine peut être décodé à l'aide des segments codés mémorisés. Le procédé et l'appareil décodent le nombre inférieur au nombre de segments codés d'origine et le nombre de segments mémorisés pour récupérer ces segments codés qui manquent.
PCT/US2020/027872 2019-04-12 2020-04-12 Segments de données codés pour services qualitatifs de réseau WO2020210779A2 (fr)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US201962833129P 2019-04-12 2019-04-12
US201962833014P 2019-04-12 2019-04-12
US62/833,129 2019-04-12
US62/833,014 2019-04-12
US201962834730P 2019-04-16 2019-04-16
US62/834,730 2019-04-16

Publications (2)

Publication Number Publication Date
WO2020210779A2 true WO2020210779A2 (fr) 2020-10-15
WO2020210779A3 WO2020210779A3 (fr) 2020-11-19

Family

ID=70482869

Family Applications (2)

Application Number Title Priority Date Filing Date
PCT/US2020/027872 WO2020210779A2 (fr) 2019-04-12 2020-04-12 Segments de données codés pour services qualitatifs de réseau
PCT/US2020/027876 WO2020210780A1 (fr) 2019-04-12 2020-04-13 Services qualitatifs de réseau basés sur des segments

Family Applications After (1)

Application Number Title Priority Date Filing Date
PCT/US2020/027876 WO2020210780A1 (fr) 2019-04-12 2020-04-13 Services qualitatifs de réseau basés sur des segments

Country Status (1)

Country Link
WO (2) WO2020210779A2 (fr)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022206649A1 (fr) * 2021-04-02 2022-10-06 维沃移动通信有限公司 Procédé et appareil de régulation d'encombrement, et dispositif de communication
WO2023072077A1 (fr) * 2021-10-29 2023-05-04 华为技术有限公司 Procédé de communication et appareil associé
CN116708175A (zh) * 2023-08-01 2023-09-05 深圳市联合信息技术有限公司 一种远程信息系统运维优化调度方法

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021247071A1 (fr) * 2020-05-30 2021-12-09 Futurewei Technologies, Inc. Contrats de réseaux dans des paquets de communication
WO2023163802A1 (fr) * 2022-02-25 2023-08-31 Futurewei Technologies, Inc. Abandon de paquet rtf sensible au contenu multimédia

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1345499A (zh) * 1999-03-23 2002-04-17 艾利森电话股份有限公司 在ip网络中丢弃业务以优化语音信号的质量
US8693501B2 (en) * 2010-11-23 2014-04-08 The Chinese University Of Hong Kong Subset coding for communication systems
US9002921B2 (en) * 2011-12-09 2015-04-07 Futurewei Technologies, Inc. Method for network coding packets in content-centric networking based networks

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022206649A1 (fr) * 2021-04-02 2022-10-06 维沃移动通信有限公司 Procédé et appareil de régulation d'encombrement, et dispositif de communication
WO2023072077A1 (fr) * 2021-10-29 2023-05-04 华为技术有限公司 Procédé de communication et appareil associé
CN116708175A (zh) * 2023-08-01 2023-09-05 深圳市联合信息技术有限公司 一种远程信息系统运维优化调度方法
CN116708175B (zh) * 2023-08-01 2023-10-20 深圳市联合信息技术有限公司 一种远程信息系统运维优化调度方法

Also Published As

Publication number Publication date
WO2020210779A3 (fr) 2020-11-19
WO2020210780A1 (fr) 2020-10-15

Similar Documents

Publication Publication Date Title
WO2020210779A2 (fr) Segments de données codés pour services qualitatifs de réseau
US10009259B2 (en) Multi-path data transfer using network coding
CN111133704B (zh) 用于基于代码块组的第五代(5g)或其它下一代系统的自适应两级下行链路控制信道结构
JP6284549B2 (ja) マルチパスストリーミングのためのfecベースの信頼性のある転送制御プロトコル
JP7327730B2 (ja) パケット処理方法および装置
EP3342073A1 (fr) Émission de données à codage réseau linéaire aléatoire
US9883420B2 (en) Random linear network encoded data transmission from user equipment
WO2022143902A1 (fr) Procédé de transmission de paquets de données et dispositif associé
Dong et al. In-packet network coding for effective packet wash and packet enrichment
WO2020163124A1 (fr) Codage réseau intra-paquet
JP6487562B2 (ja) オンデマンドファイル修復のための方法及びシステム
US20230353284A1 (en) Qualitative Communication Using Adaptive Network Coding with a Sliding Window
US20230163875A1 (en) Method and apparatus for packet wash in networks
US20150139227A1 (en) Communication method and apparatus
Phung et al. Enhancing rest http with random linear network coding in dynamic edge computing environments
Gupta et al. Fast interest recovery in content centric networking under lossy environment
US9059847B2 (en) Reliable multicast broadcast in wireless networks
Enenche et al. Network coding as enabler for achieving URLLC under TCP and UDP environments: A survey
US11363125B2 (en) Systems and methods for increasing reliability for media data distribution
CN111865884B (zh) 一种报文处理方法、装置及设备
Yin et al. On the design of timeout-based recoders for batched network codes in the MU-MIMO regime
Bouras et al. Al-fec application on ngmn-edge computing integrated systems
JP7483867B2 (ja) パケット処理方法及び装置、及びコンピュータ記憶媒体
CN116032421A (zh) 以太网链路控制装置和存储介质
CN117459460A (zh) 处理网络拥塞的方法、装置、设备、网络系统和存储介质

Legal Events

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

Ref document number: 20723696

Country of ref document: EP

Kind code of ref document: A2

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 20723696

Country of ref document: EP

Kind code of ref document: A2