US20140029630A1 - Fractional threshold encoding and aggregation - Google Patents
Fractional threshold encoding and aggregation Download PDFInfo
- Publication number
- US20140029630A1 US20140029630A1 US13/861,239 US201313861239A US2014029630A1 US 20140029630 A1 US20140029630 A1 US 20140029630A1 US 201313861239 A US201313861239 A US 201313861239A US 2014029630 A1 US2014029630 A1 US 2014029630A1
- Authority
- US
- United States
- Prior art keywords
- fractional
- packets
- packet
- fractional packets
- encoder
- Prior art date
- Legal status (The legal status 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 status listed.)
- Abandoned
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9057—Arrangements for supporting packet reassembly or resequencing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
- H04L9/085—Secret sharing or secret splitting, e.g. threshold schemes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/84—Vehicles
Definitions
- Trunking/aggregation systems typically work as follows.
- Device A wishes to send a packet of size k to Device B.
- Device A splits the packet into equal portions (e.g., four portions), and sends each of the four smaller pieces across a separate link.
- Device B receives the pieces and reassembles them to obtain the original packet.
- any of the four pieces is lost during transmission, Device B will be unable to reconstruct the original packet.
- the probability of successfully receiving enough pieces to reconstruct the original packet decreases geometrically with the number of links.
- FIG. 1 is a diagram illustrating an embodiment of an environment in which fractional encoding and decoding of packets is performed.
- FIG. 2 illustrates an example of an embodiment of a fractional encoding system.
- FIG. 3 illustrates an example of fractional threshold encoding according to one embodiment.
- FIG. 4 illustrates an example of fractional threshold decoding according to one embodiment.
- FIG. 5 illustrates an example of a process for creating fractional packets.
- FIG. 6 illustrates an example of a process for reconstructing fractional packets.
- FIG. 7 illustrates an example of a fractional split decision and link performance feedback loop.
- FIG. 8 illustrates information used in determining a fractional split.
- FIG. 9 illustrates an example of the first iteration of a process for performing a fractional split decision.
- FIG. 10 illustrates an example of the second iteration of a process for performing a fractional split decision.
- FIG. 11 illustrates an example an additional iteration of a process for performing a fractional split decision.
- FIG. 12A illustrates an example of a fractional split decision made with a target loss of 1.0%.
- FIG. 12B illustrates an example of a fractional split decision made with target loss of 0.0001%.
- the invention can be implemented in numerous ways, including as a process; an apparatus; a system; a composition of matter; a computer program product embodied on a computer readable storage medium; and/or a processor, such as a processor configured to execute instructions stored on and/or provided by a memory coupled to the processor.
- these implementations, or any other form that the invention may take, may be referred to as techniques.
- the order of the steps of disclosed processes may be altered within the scope of the invention.
- a component such as a processor or a memory described as being configured to perform a task may be implemented as a general component that is temporarily configured to perform the task at a given time or a specific component that is manufactured to perform the task.
- the term ‘processor’ refers to one or more devices, circuits, and/or processing cores configured to process data, such as computer program instructions.
- FIG. 1 is a diagram illustrating an embodiment of an environment in which fractional encoding and decoding (also referred to herein as “reconstruction”) of packets is performed.
- client 102 is a laptop computer belonging to a passenger on vehicle 108 .
- Client 104 is a personal digital assistant (PDA) belonging to another such passenger.
- Clients 102 and 104 are both connected to encoding system 106 via a wireless access point 124 . Multiple access points may be connected to the same encoding system.
- Wireless access point 124 is in turn connected to encoding system 106 via a wired (e.g., Ethernet) connection.
- Wireless access point 124 may also be physically integrated with system 106 (e.g., via an internal bus such as PCI).
- various protocols and techniques are used for connecting clients to encoding system 106 , such as Bluetooth and serial connections.
- vehicle 108 is a train. Vehicle 108 may also be a bus, an automobile, an airplane, a boat, etc., and the techniques herein adapted accordingly.
- encoding system 106 is located in a stationary place, such as a café, airport, etc. Encoding system 106 may also be portable—such that an administrator or other individual may transport encoding system 106 from one location to another. As described in more detail below, encoding system 106 can be constructed using commodity hardware such as inexpensive laptop computers and consumer-oriented wireless cards. In such cases, encoding system 106 is highly portable and can be used in virtually any location.
- encoding system 106 receives packets from clients 102 and 104 (e.g., via access point 124 ), transforms the received packets into fractional packets, and transmits the fractional packets across a plurality of available links. Examples of such links are connections made between system 106 and each of wireless carriers 110 , 112 , and 114 .
- the fractional packets are ultimately received by decoding system 118 (which is located, e.g., at a data center or a head end of a service provider), which reconstructs the client's packets from the fractional packets and routes the resulting packets to their appropriate destination (e.g., network nodes 120 and 122 ).
- decoding system 118 which uses the same techniques as used by encoding system 106 to fractionally encode the return traffic and cause it to be routed to encoding system 106 .
- Encoding system 106 decodes the fractional packets and provides the recovered information to clients 102 and 104 , respectively.
- encoding system 106 and decoding system 118 are both capable of both encoding and decoding fractional packets (and in some embodiments are identical systems), the examples described herein will reference the encoding of packets by encoding system 106 and the decoding of packets by decoding system 118 .
- encoding system 106 is configured to communicate with wireless carriers 110 , 112 , and 114 .
- Encoding system 106 includes several slots (e.g., USB, PCMCIA, ExpressCard, MiniPCI, MiniPCI Express, and/or any other appropriate peripheral interfaces) into which wireless cards corresponding to each of carriers 110 - 114 is inserted.
- encoding system 106 uses off-the-shelf components, such as consumer wireless cards that are typically sold bundled with a monthly data plan. Encoding system 106 may also use custom hardware.
- encoding system 106 supports various wireless formats.
- encoding system 106 may communicate with carrier 110 via GPRS or EDGE, communicate with carrier 112 via 3G, and communicate with carrier 114 via WiMax. If encoding system has access to other network connections, such as an Ethernet connection to network 116 or access via an 802.11 hotspot, encoding system 106 can be configured to make use of such links instead of or in addition to the links it has with carriers such as 110 - 114 .
- FIG. 2 illustrates an example of an embodiment of a fractional encoding system.
- packets are received from a client, such as client 102 or client 104 by packet service 202 .
- the packet service provides a stream of packets, each packet being composed of some variable number of bytes, to the fractional encoder 208 .
- two parameters n and m are selected, which together define the granularity and redundancy of the fractional encoding.
- the encoder generates m fractional packets of size k/n such that having any n of the m pieces allows the original packet to be reconstructed.
- the fractional packets are then sent over the available links to a decoding system (e.g., decoding system 118 ) which is able to rebuild the original packet as soon as it receives the “threshold” number of packets n.
- a decoding system e.g., decoding system 118
- the effective bandwidth of the system is n times the bandwidth of the n th fastest link, with significant redundancy added via the m-n extra packets.
- fractional packets can be created from the input packets.
- the technique used to generate fractional packets is based on Shamir's secret sharing method.
- other cryptographic secret sharing techniques may also be used, as may other techniques, such as Reed-Solomon erasure codes with forward error correction, turbo codes, parity-check codes, convolutional codes, Hamming codes, etc., and the techniques described herein adapted as appropriate.
- Link performance data 206 includes information such as the estimated capacity of each link or the loss rate of each link.
- One source of link performance data includes information provided by drivers associated with the respective links.
- a 3G PCMCIA card may have an associated driver that can report on its signal quality.
- Quality of Service requirements 204 are provided by an administrator and allow the administrator to specify desired link quality targets such as loss rate or latency. For example, if all links are lossy, or if a low packet loss rate is desired, encoding system 106 may choose to reduce n, which makes it more likely that enough data will be received to reconstruct the packet.
- different users of system 106 such as clients 102 and 104 configure their respective desired quality of service (QOS) requirements. For example, if client 102 is being used to facilitate a VOIP call, it might be preferable to reduce latency, even at the cost of a higher loss rate. Conversely, if client 104 is making use of TCP, a more stable connection is preferable. As described in more detail below, the link performance data and QOS requirements can change dynamically over time, and other inputs to encoding system 106 may also be used (or omitted) as applicable.
- QOS quality of service
- the infrastructure provided by portions of encoding system 106 is located on and/or replicated across a plurality of devices rather than the entirety of encoding system 106 being collocated on a single platform.
- a task such as receiving a packet from a client
- either a single component or a subset of components or all components of encoding system 106 may cooperate to perform the task.
- FIG. 3 illustrates an example of fractional threshold encoding according to one embodiment.
- Other fractional splits and fields can also be used, as applicable.
- Links 302 - 308 represent the links available to system 106 (e.g., as provided by wireless hardware included in system 106 in communication with carriers 110 - 114 ).
- the process begins with an input packet ( 310 ) of size k, whose bytes are b 1 , b 2 , . . . , b k . If k is not a multiple of 3, the buffer is padded with zeroes so that it is.
- each of the output fractional packets 312 - 318 is built as follows. For each output fractional packet, a unique sample point (e.g., 0-255) is chosen. In the example shown, zero is used first, and the number is incremented by one for each output packet. The first three bytes of the fractional packet are set to the packet ID, sample point, and the number of packets needed for reconstruction. This data allows decoder 118 to match up incoming fractional packets and determine when sufficient data has been received to attempt decoding.
- a unique sample point e.g., 0-255
- FIG. 4 illustrates an example of fractional threshold decoding according to one embodiment.
- the process begins by first constructing the unique Lagrange interpolation polynomials for the sample points that are used in the reconstruction. In the example shown in FIG. 4 , sample points zero, one, and three are present.
- decoder 118 can then directly multiply these basis polynomials with the sample points and add the results together to obtain the coefficients of the original polynomials P i , which correspond to the bytes in the original packet.
- the decoder then directly rebuilds the original packet by putting the coefficients into a buffer.
- FIG. 5 illustrates an example of a process for creating fractional packets.
- the process shown in FIG. 5 is performed by encoding system 106 .
- the process begins at 502 when a packet is received. For example, at 502 a packet is received from client 102 by packet service 202 .
- one or more fractional packets is constructed from the received packet. For example, at 504 , the processing shown in FIG. 3 is performed.
- the fractional packets are transmitted. For example, at 506 , one fractional packet is transmitted via each of the available links 302 - 308 .
- FIG. 6 illustrates an example of a process for reconstructing fractional packets.
- the process shown in FIG. 6 is performed by decoding system 118 .
- the process begins at 602 when fractional packets are received. For example, at 602 a fractional packet is received from link 302 and another is received from link 304 . Once a sufficient number of fractional packets has been received, at 604 , the original packet is reconstructed. For example, once a fractional packet is received from link 308 , per the example shown in FIG. 4 , the original packet can be reconstructed at 604 .
- the original packet is transmitted. For example, if the packet is intended for website 120 , at 606 the packet is transmitted to website 120 .
- FIG. 7 illustrates an example of a fractional split decision and link performance feedback loop.
- encoding system 106 is able to respond in real-time to changes in the capacities of the links.
- encoding system 106 decides how to split packets based on stateful and stateless information that it maintains for each link.
- One example of such a decision process is one that stores an estimated link capacities C 1 , C 2 , . . . C j for each of the j links.
- This stateful data is combined with stateless inputs such as a target loss factor used by a fractional split decision (FSD) algorithm which determines the number and size of the pieces to be sent on each link.
- FSD fractional split decision
- the fractional encoder maintains a best estimate of link capacities C 1 , C 2 , . . . C j corresponding to the j links.
- the receiver decoding system 118
- the receiver is responsible for examining the packets as they arrive for information to aid in refining the capacity estimates. This may be done using a variety of techniques such as inter-packet arrival timing by identifying packet trains, or simple time averaging of data arrival, etc.
- the end result of the receiver-side analysis is link capacity update information for each link U 1 , U 2 , . . . , U j as shown at 702 .
- This information is sent from decoding system 118 back to encoding system 106 , which then applies this information to update the estimated link capacities.
- FIG. 8 illustrates information used in determining a fractional split.
- the information shown illustrates a sample case in which an input packet of size 1000 is to be split over four links whose estimated capacities (e.g., as determined by the process described in conjunction with FIG. 7 ) are 2.0, 1.0, 0.5 and 0.5 Mbits/sec respectively, as shown in region 802 .
- the process begins by normalizing the link capacities with respect to the fastest link.
- the relative capacities are 1.0, 0.5, 0.25, and 0.25, as shown in region 804 .
- an estimated loss rate of 0.001 per packet has been selected, which indicates that 1 out of every 1000 packets will be dropped.
- the loss target is 0.00001, indicating that it is desired that effectively only 1 out of every 10000 packets lose enough data so as to prevent reassembly.
- the first few values of the allowed splits table are shown in region 806 .
- the first pair (1, 2) indicates that if two pieces are sent, each of them must be the full data (i.e. divided by 1) to satisfy the loss target.
- the second pair (2, 3) indicates that if three pieces are sent, each of the pieces could be half the size (i.e. divided by 2) and the loss requirement would be met.
- performing a fractional split decision includes the use of a greedy solver that incrementally adds more pieces until it finds the minimum global constraint among all the links. The process begins by assigning zero packets to every link, and then computes for each possible way to add one additional packet, the effective dimensionless time it would take for all the data to reach the other end.
- FIG. 9 illustrates an example of the first iteration of a process for performing a fractional split decision.
- the example shown beginning with an initial solution of zero packets on each link, each possible allocation of one additional packet is explored. Note that based on the selected loss criteria in this example, there is no way to satisfy the loss requirements if a single piece is sent. For purposes of illustration, however, assume that the single piece is not split at all (i.e., the fraction is 1).
- allocating the packet to the first link will result in 1 piece of 1000 bytes sent on the first link and zero on the rest. Since the first link has relative speed 1.0, this will take 1.0 relative units of time to transfer. This is computed as (bytes to send/original bytes)*(1/link capacity). For the other links, the 0 bytes sent will take 0.0 units of time to transfer, and thus the overall time required for this allocation is the maximum time required on each link, which is 1.0.
- allocating the packet to the second link results in there being 1 piece of 1000 bytes sent on the second link and zero on the rest. With a relative speed of 0.5, it will take the second link 2.0 relative units of time to transfer the pieces. As in the first case, the other links will require 0.0 units of time to transfer 0 bytes. Thus the time required for this allocation is 2.0.
- the third ( 906 ) and fourth ( 908 ) cases are similar, but with a relative speed of 0.25, each case results in a required time of 4.0. Therefore, the best greedy allocation choice is to allocate the packet to the first link so that the smallest effective time required to transfer the data is used. This solution is denoted as (1, 0, 0, 0)-1.0.
- FIG. 10 illustrates an example of the second iteration of a process for performing a fractional split decision.
- the example shown repeats the processing described in conjunction with FIG. 9 .
- the current solution is (1, 0, 0, 0) and the table of allowed splits indicates that for two pieces, each of them must be full size to meet the loss requirements.
- An exploration of the four possible allocations for the next piece is performed. They are denoted as configurations (2, 0, 0, 0), (1, 1, 0, 0), (1, 0, 1, 0), and (1, 0, 0, 1).
- first case ( 1002 ) two packets of size 1000 are assigned to the first link, so the effective time required to send the 2000 bytes over the 1.0 capacity link is 2.0.
- second case ( 1004 ) one packet of size 1000 is sent on the first link and one packet of size 1000 is sent on the second link.
- the first link's effective time is 1.0 and the second link's effective time is 2.0, so the effective time to transfer is 2.0.
- the effective time is 4.0.
- the best solution using two pieces is therefore (2, 0, 0, 0), yielding an effective time of 2.0. While this is larger than the effective time of the previous solution (1, 0, 0, 0), the previous solution (using a single piece) does not meet the loss criteria and so the new solution, denoted (2, 0, 0, 0)-2.0 is stored as the new overall best solution.
- FIG. 11 illustrates an example an additional iteration of a process for performing a fractional split decision.
- the process begins with the solution of the previous iteration (2, 0, 0, 0) and examines the solutions with one additional packet—(3, 0, 0, 0), (2, 1, 0, 0), (2, 0, 1, 0), and (2, 0, 0, 1).
- the allowed split factors table indicates that for three pieces, each of the pieces can be half the size (divided by factor of 2). Therefore, each piece now has a size of 500 bytes instead of the full 1000.
- the first case ( 1102 ) 3 ⁇ 500 byte pieces are sent on the first link, for a total of 1500 bytes being sent over a 1.0 capacity link. This results in an effective time of 1.5.
- the second case ( 1104 ) 2 ⁇ 500 byte pieces are sent on the first link of capacity 1.0, and 1 ⁇ 500 byte packet is sent on the second link of capacity 0.5.
- the required time for the first and second links is 1.0.
- the required time is 2.0.
- the best greedy solution with three pieces is (2, 1, 0, 0), which results in an effective time of 1.0. Since this time is less than the previous best overall solution of (2, 0, 0, 0)-2.0, the new solution is saved as the overall best one.
- Iteration may proceed up to an arbitrary number of pieces, and the end result is designated as the global optimal split decision that determines the split factor and number of pieces to create as well as the number of pieces to send on each link.
- FIG. 12A illustrates an example of a fractional split decision made with a target loss of 1.0%.
- FIG. 12B illustrates an example of a fractional split decision made with target loss of 0.0001%.
- FIGS. 12A and 12B illustrate how QOS parameters may affect a fractional split decision.
- the links have normalized speeds of 1.0 and 0.5.
- the estimated probability of loss of a single packet is 0.1% or 0.001. The difference between the two cases is that the first uses a target loss probability of 0.01 or 1% while the second uses a target loss probability of 0.0001%.
- the example greedy split decision is carried out as previously described. For compactness, only the first six iterations of the greedy algorithm are shown. Note that the differing value for target loss in each case affects the allowed splits, which in turn affect the maximum possible split factor used at each iteration of the algorithm.
- the fractional split decision algorithm with a target loss of 1 % results in an encoder being able to split input packets as finely as the number of packets it chooses to create, as indicated by the allowed splits table.
- the (5, 5) entry in FIG. 12A indicates that if the encoder sends five pieces, each can carry a fifth of the input packet's data and still satisfy the loss requirement.
- the (5, 3) entry in FIG. 12B indicates that if five pieces are sent, each must carry a third of the input packet's data in order to satisfy the target loss of 0.0001% used in FIG. 12B .
- FIG. 12A shows that with a target loss of 1%, the optimal split is (2, 1), with each of the pieces carrying a third of the original data. This results in each packet taking 2 ⁇ 3 of the time to be sent, increasing total capacity by 50%.
- FIG. 12B shows that with a target loss of 0.0001%, the optimal split is (4, 2), which results in each packet taking the same time to be sent as the original input packet, but meets the much stricter loss requirements.
Abstract
Fractional encoding of a packet into fractional packets and reconstruction of fractional packets into an original packet is disclosed. A packet is received. A plurality fractional packets is constructed from the received packet such that the received packet is fully reconstructable from a portion of the fractional packets. The portion is fewer than all of the fractional packets. At least one fractional packet is transmitted.
Description
- This application is a continuation of co-pending U.S. patent application Ser. No. 12/362,400 (Attorney Docket No. HOBNP004), entitled FRACTIONAL THRESHOLD ENCODING AND AGGREGATION filed Jan. 29, 2009 which claims priority to U.S. Provisional Patent Application No. 61/063,381 entitled FRACTIONAL THRESHOLD ENCODING AND AGGREGATION SYSTEM filed Feb. 1, 2008 which are incorporated herein by reference for all purposes.
- Trunking/aggregation systems typically work as follows. Device A wishes to send a packet of size k to Device B. Device A splits the packet into equal portions (e.g., four portions), and sends each of the four smaller pieces across a separate link. Device B receives the pieces and reassembles them to obtain the original packet. Unfortunately, if any of the four pieces is lost during transmission, Device B will be unable to reconstruct the original packet. And, the probability of successfully receiving enough pieces to reconstruct the original packet decreases geometrically with the number of links.
- The likelihood of unrecoverable transmissions is considerably increased in WAN environments where the links are paths across the Internet, and packet loss is much more significant. WWAN environments have even more severe loss, due to factors such as real-time changes in signal strength and interference. Yet another problem with traditional trunking/aggregation systems is that they tend to perform well only when the links are completely under control (i.e. when there is no cross traffic), and when the capacity of each link is well known and does not vary significantly over time. In WAN environments (for example), these assumptions do not hold and existing trunking techniques adapt poorly for this reason as well.
- Various embodiments of the invention are disclosed in the following detailed description and the accompanying drawings.
-
FIG. 1 is a diagram illustrating an embodiment of an environment in which fractional encoding and decoding of packets is performed. -
FIG. 2 illustrates an example of an embodiment of a fractional encoding system. -
FIG. 3 illustrates an example of fractional threshold encoding according to one embodiment. -
FIG. 4 illustrates an example of fractional threshold decoding according to one embodiment. -
FIG. 5 illustrates an example of a process for creating fractional packets. -
FIG. 6 illustrates an example of a process for reconstructing fractional packets. -
FIG. 7 illustrates an example of a fractional split decision and link performance feedback loop. -
FIG. 8 illustrates information used in determining a fractional split. -
FIG. 9 illustrates an example of the first iteration of a process for performing a fractional split decision. -
FIG. 10 illustrates an example of the second iteration of a process for performing a fractional split decision. -
FIG. 11 illustrates an example an additional iteration of a process for performing a fractional split decision. -
FIG. 12A illustrates an example of a fractional split decision made with a target loss of 1.0%. -
FIG. 12B illustrates an example of a fractional split decision made with target loss of 0.0001%. - The invention can be implemented in numerous ways, including as a process; an apparatus; a system; a composition of matter; a computer program product embodied on a computer readable storage medium; and/or a processor, such as a processor configured to execute instructions stored on and/or provided by a memory coupled to the processor. In this specification, these implementations, or any other form that the invention may take, may be referred to as techniques. In general, the order of the steps of disclosed processes may be altered within the scope of the invention. Unless stated otherwise, a component such as a processor or a memory described as being configured to perform a task may be implemented as a general component that is temporarily configured to perform the task at a given time or a specific component that is manufactured to perform the task. As used herein, the term ‘processor’ refers to one or more devices, circuits, and/or processing cores configured to process data, such as computer program instructions.
- A detailed description of one or more embodiments of the invention is provided below along with accompanying figures that illustrate the principles of the invention. The invention is described in connection with such embodiments, but the invention is not limited to any embodiment. The scope of the invention is limited only by the claims and the invention encompasses numerous alternatives, modifications and equivalents. Numerous specific details are set forth in the following description in order to provide a thorough understanding of the invention. These details are provided for the purpose of example and the invention may be practiced according to the claims without some or all of these specific details. For the purpose of clarity, technical material that is known in the technical fields related to the invention has not been described in detail so that the invention is not unnecessarily obscured.
-
FIG. 1 is a diagram illustrating an embodiment of an environment in which fractional encoding and decoding (also referred to herein as “reconstruction”) of packets is performed. In the example shown,client 102 is a laptop computer belonging to a passenger onvehicle 108.Client 104 is a personal digital assistant (PDA) belonging to another such passenger.Clients encoding system 106 via awireless access point 124. Multiple access points may be connected to the same encoding system.Wireless access point 124 is in turn connected toencoding system 106 via a wired (e.g., Ethernet) connection.Wireless access point 124 may also be physically integrated with system 106 (e.g., via an internal bus such as PCI). In various embodiments, various protocols and techniques are used for connecting clients to encodingsystem 106, such as Bluetooth and serial connections. - In the example shown,
vehicle 108 is a train.Vehicle 108 may also be a bus, an automobile, an airplane, a boat, etc., and the techniques herein adapted accordingly. In various embodiments,encoding system 106 is located in a stationary place, such as a café, airport, etc.Encoding system 106 may also be portable—such that an administrator or other individual may transportencoding system 106 from one location to another. As described in more detail below,encoding system 106 can be constructed using commodity hardware such as inexpensive laptop computers and consumer-oriented wireless cards. In such cases,encoding system 106 is highly portable and can be used in virtually any location. - Suppose a user of
client 102 wishes to connect, while riding ontrain 108, to server 122, a server having an Internet-routable address, using the ssh protocol. A user ofclient 104 likewise wishes to accesswebsite 120. As described in more detail below, encodingsystem 106 receives packets fromclients 102 and 104 (e.g., via access point 124), transforms the received packets into fractional packets, and transmits the fractional packets across a plurality of available links. Examples of such links are connections made betweensystem 106 and each ofwireless carriers - The fractional packets are ultimately received by decoding system 118 (which is located, e.g., at a data center or a head end of a service provider), which reconstructs the client's packets from the fractional packets and routes the resulting packets to their appropriate destination (e.g.,
network nodes 120 and 122). Any return traffic intended forclients 102 or 104 (e.g., fromnodes 120 and 122) is routed to decodingsystem 118 which uses the same techniques as used by encodingsystem 106 to fractionally encode the return traffic and cause it to be routed to encodingsystem 106.Encoding system 106 decodes the fractional packets and provides the recovered information toclients system 106 anddecoding system 118 are both capable of both encoding and decoding fractional packets (and in some embodiments are identical systems), the examples described herein will reference the encoding of packets byencoding system 106 and the decoding of packets bydecoding system 118. - In the example shown,
encoding system 106 is configured to communicate withwireless carriers Encoding system 106 includes several slots (e.g., USB, PCMCIA, ExpressCard, MiniPCI, MiniPCI Express, and/or any other appropriate peripheral interfaces) into which wireless cards corresponding to each of carriers 110-114 is inserted. As shown,encoding system 106 uses off-the-shelf components, such as consumer wireless cards that are typically sold bundled with a monthly data plan.Encoding system 106 may also use custom hardware. In various embodiments,encoding system 106 supports various wireless formats. For example,encoding system 106 may communicate withcarrier 110 via GPRS or EDGE, communicate withcarrier 112 via 3G, and communicate withcarrier 114 via WiMax. If encoding system has access to other network connections, such as an Ethernet connection to network 116 or access via an 802.11 hotspot,encoding system 106 can be configured to make use of such links instead of or in addition to the links it has with carriers such as 110-114. -
FIG. 2 illustrates an example of an embodiment of a fractional encoding system. In the example shown, packets are received from a client, such asclient 102 orclient 104 bypacket service 202. The packet service provides a stream of packets, each packet being composed of some variable number of bytes, to thefractional encoder 208. As described in more detail below, for each input packet, two parameters n and m are selected, which together define the granularity and redundancy of the fractional encoding. Specifically, for an input packet of size k, the encoder generates m fractional packets of size k/n such that having any n of the m pieces allows the original packet to be reconstructed. - The fractional packets are then sent over the available links to a decoding system (e.g., decoding system 118) which is able to rebuild the original packet as soon as it receives the “threshold” number of packets n. In the case where one fractional packet is sent on each available link, the effective bandwidth of the system is n times the bandwidth of the nth fastest link, with significant redundancy added via the m-n extra packets.
- Various techniques can be used to create fractional packets from the input packets. In the examples describe herein, the technique used to generate fractional packets is based on Shamir's secret sharing method. However, other cryptographic secret sharing techniques may also be used, as may other techniques, such as Reed-Solomon erasure codes with forward error correction, turbo codes, parity-check codes, convolutional codes, Hamming codes, etc., and the techniques described herein adapted as appropriate.
- In the example shown, two additional inputs to
encoding system 106 are used in determining n and m and in the assignment of the resulting fractional packets to links.Link performance data 206 includes information such as the estimated capacity of each link or the loss rate of each link. One source of link performance data includes information provided by drivers associated with the respective links. For example, a 3G PCMCIA card may have an associated driver that can report on its signal quality. Quality ofService requirements 204 are provided by an administrator and allow the administrator to specify desired link quality targets such as loss rate or latency. For example, if all links are lossy, or if a low packet loss rate is desired,encoding system 106 may choose to reduce n, which makes it more likely that enough data will be received to reconstruct the packet. In various embodiments, different users ofsystem 106, such asclients client 102 is being used to facilitate a VOIP call, it might be preferable to reduce latency, even at the cost of a higher loss rate. Conversely, ifclient 104 is making use of TCP, a more stable connection is preferable. As described in more detail below, the link performance data and QOS requirements can change dynamically over time, and other inputs toencoding system 106 may also be used (or omitted) as applicable. - In some embodiments, the infrastructure provided by portions of
encoding system 106 is located on and/or replicated across a plurality of devices rather than the entirety ofencoding system 106 being collocated on a single platform. Whenever encodingsystem 106 performs a task (such as receiving a packet from a client), either a single component or a subset of components or all components ofencoding system 106 may cooperate to perform the task. -
FIG. 3 illustrates an example of fractional threshold encoding according to one embodiment. In the example shown, the (3, 4) case (i.e., n=3, m=4) is used andGalois Field 28 is used as the computation space. Other fractional splits and fields can also be used, as applicable. Links 302-308 represent the links available to system 106 (e.g., as provided by wireless hardware included insystem 106 in communication with carriers 110-114). - The process begins with an input packet (310) of size k, whose bytes are b1, b2, . . . , bk. If k is not a multiple of 3, the buffer is padded with zeroes so that it is. For each consecutive triplet of three bytes (e.g., v1, v2, and v3), a
degree 2 polynomial Pi is constructed where the bytes are the coefficients of the polynomial Pi(x)=v1x2+v2x+v3. Since there are three bytes per polynomial, there are k/3 of these polynomials. - Next, each of the output fractional packets 312-318 is built as follows. For each output fractional packet, a unique sample point (e.g., 0-255) is chosen. In the example shown, zero is used first, and the number is incremented by one for each output packet. The first three bytes of the fractional packet are set to the packet ID, sample point, and the number of packets needed for reconstruction. This data allows
decoder 118 to match up incoming fractional packets and determine when sufficient data has been received to attempt decoding. - The rest of the bytes in the fractional packet come from evaluating each of the k/3 polynomials at the selected sample point. In the example shown, this results in four output packets each having length
-
- bytes.
-
FIG. 4 illustrates an example of fractional threshold decoding according to one embodiment. - In the example shown, assume that the fractional packet sent over
link 306 has been lost. Accordingly, only three of the four packets sent in the process shown inFIG. 3 is available for reconstruction. As each fractional packet arrives, it is stored in a buffer based on the packet ID. Once three packets corresponding to the same packet ID have been collected, it is known based on the fractional packet headers that a sufficient number of pieces have been received bydecoder 118 to begin decoding. - The process begins by first constructing the unique Lagrange interpolation polynomials for the sample points that are used in the reconstruction. In the example shown in
FIG. 4 , sample points zero, one, and three are present. - As per the Lagrange interpolation process,
decoder 118 can then directly multiply these basis polynomials with the sample points and add the results together to obtain the coefficients of the original polynomials Pi, which correspond to the bytes in the original packet. The decoder then directly rebuilds the original packet by putting the coefficients into a buffer. -
FIG. 5 illustrates an example of a process for creating fractional packets. In some embodiments the process shown inFIG. 5 is performed by encodingsystem 106. The process begins at 502 when a packet is received. For example, at 502 a packet is received fromclient 102 bypacket service 202. At 504, one or more fractional packets is constructed from the received packet. For example, at 504, the processing shown inFIG. 3 is performed. At 506, the fractional packets are transmitted. For example, at 506, one fractional packet is transmitted via each of the available links 302-308. -
FIG. 6 illustrates an example of a process for reconstructing fractional packets. In some embodiments the process shown inFIG. 6 is performed by decodingsystem 118. The process begins at 602 when fractional packets are received. For example, at 602 a fractional packet is received fromlink 302 and another is received fromlink 304. Once a sufficient number of fractional packets has been received, at 604, the original packet is reconstructed. For example, once a fractional packet is received fromlink 308, per the example shown inFIG. 4 , the original packet can be reconstructed at 604. At 606, the original packet is transmitted. For example, if the packet is intended forwebsite 120, at 606 the packet is transmitted towebsite 120. -
FIG. 7 illustrates an example of a fractional split decision and link performance feedback loop. Using the techniques described herein,encoding system 106 is able to respond in real-time to changes in the capacities of the links. In someembodiments encoding system 106 decides how to split packets based on stateful and stateless information that it maintains for each link. One example of such a decision process is one that stores an estimated link capacities C1, C2, . . . Cj for each of the j links. This stateful data is combined with stateless inputs such as a target loss factor used by a fractional split decision (FSD) algorithm which determines the number and size of the pieces to be sent on each link. - At any one time, the fractional encoder maintains a best estimate of link capacities C1, C2, . . . Cj corresponding to the j links. As fractional packets are sent from encoding
system 106 todecoding system 118, the receiver (decoding system 118) is responsible for examining the packets as they arrive for information to aid in refining the capacity estimates. This may be done using a variety of techniques such as inter-packet arrival timing by identifying packet trains, or simple time averaging of data arrival, etc. - The end result of the receiver-side analysis is link capacity update information for each link U1, U2, . . . , Uj as shown at 702. This information is sent from
decoding system 118 back toencoding system 106, which then applies this information to update the estimated link capacities. -
FIG. 8 illustrates information used in determining a fractional split. The information shown illustrates a sample case in which an input packet of size 1000 is to be split over four links whose estimated capacities (e.g., as determined by the process described in conjunction withFIG. 7 ) are 2.0, 1.0, 0.5 and 0.5 Mbits/sec respectively, as shown inregion 802. - The process begins by normalizing the link capacities with respect to the fastest link. In this case, the relative capacities are 1.0, 0.5, 0.25, and 0.25, as shown in
region 804. - In the example shown, a static estimated loss rate and loss target is used. Accordingly, an allowed splits table of (n,m) fractional splits is built that satisfies the loss criteria. Specifically, for each integer value of m pieces to send out, the value n<=m is determined such that the probability of having at least n/m packets arrive is greater than the target threshold. This value may be computed based on the cumulative binomial distribution.
- In the example shown, an estimated loss rate of 0.001 per packet has been selected, which indicates that 1 out of every 1000 packets will be dropped. The loss target is 0.00001, indicating that it is desired that effectively only 1 out of every 10000 packets lose enough data so as to prevent reassembly. The first few values of the allowed splits table are shown in
region 806. The first pair (1, 2) indicates that if two pieces are sent, each of them must be the full data (i.e. divided by 1) to satisfy the loss target. The second pair (2, 3) indicates that if three pieces are sent, each of the pieces could be half the size (i.e. divided by 2) and the loss requirement would be met. - In some embodiments performing a fractional split decision includes the use of a greedy solver that incrementally adds more pieces until it finds the minimum global constraint among all the links. The process begins by assigning zero packets to every link, and then computes for each possible way to add one additional packet, the effective dimensionless time it would take for all the data to reach the other end.
-
FIG. 9 illustrates an example of the first iteration of a process for performing a fractional split decision. In the example shown, beginning with an initial solution of zero packets on each link, each possible allocation of one additional packet is explored. Note that based on the selected loss criteria in this example, there is no way to satisfy the loss requirements if a single piece is sent. For purposes of illustration, however, assume that the single piece is not split at all (i.e., the fraction is 1). - In the first case (902), allocating the packet to the first link will result in 1 piece of 1000 bytes sent on the first link and zero on the rest. Since the first link has relative speed 1.0, this will take 1.0 relative units of time to transfer. This is computed as (bytes to send/original bytes)*(1/link capacity). For the other links, the 0 bytes sent will take 0.0 units of time to transfer, and thus the overall time required for this allocation is the maximum time required on each link, which is 1.0.
- In the second case (904), allocating the packet to the second link results in there being 1 piece of 1000 bytes sent on the second link and zero on the rest. With a relative speed of 0.5, it will take the second link 2.0 relative units of time to transfer the pieces. As in the first case, the other links will require 0.0 units of time to transfer 0 bytes. Thus the time required for this allocation is 2.0.
- The third (906) and fourth (908) cases are similar, but with a relative speed of 0.25, each case results in a required time of 4.0. Therefore, the best greedy allocation choice is to allocate the packet to the first link so that the smallest effective time required to transfer the data is used. This solution is denoted as (1, 0, 0, 0)-1.0.
-
FIG. 10 illustrates an example of the second iteration of a process for performing a fractional split decision. The example shown repeats the processing described in conjunction withFIG. 9 . In this example, the current solution is (1, 0, 0, 0) and the table of allowed splits indicates that for two pieces, each of them must be full size to meet the loss requirements. An exploration of the four possible allocations for the next piece is performed. They are denoted as configurations (2, 0, 0, 0), (1, 1, 0, 0), (1, 0, 1, 0), and (1, 0, 0, 1). - In the first case (1002), two packets of size 1000 are assigned to the first link, so the effective time required to send the 2000 bytes over the 1.0 capacity link is 2.0. In the second case (1004), one packet of size 1000 is sent on the first link and one packet of size 1000 is sent on the second link. The first link's effective time is 1.0 and the second link's effective time is 2.0, so the effective time to transfer is 2.0.
- Similarly, for the third (1006) and fourth (1008) cases, the effective time is 4.0. The best solution using two pieces is therefore (2, 0, 0, 0), yielding an effective time of 2.0. While this is larger than the effective time of the previous solution (1, 0, 0, 0), the previous solution (using a single piece) does not meet the loss criteria and so the new solution, denoted (2, 0, 0, 0)-2.0 is stored as the new overall best solution.
-
FIG. 11 illustrates an example an additional iteration of a process for performing a fractional split decision. As in previous iterations, the process begins with the solution of the previous iteration (2, 0, 0, 0) and examines the solutions with one additional packet—(3, 0, 0, 0), (2, 1, 0, 0), (2, 0, 1, 0), and (2, 0, 0, 1). The allowed split factors table indicates that for three pieces, each of the pieces can be half the size (divided by factor of 2). Therefore, each piece now has a size of 500 bytes instead of the full 1000. - In the first case (1102), 3×500 byte pieces are sent on the first link, for a total of 1500 bytes being sent over a 1.0 capacity link. This results in an effective time of 1.5. In the second case (1104), 2×500 byte pieces are sent on the first link of capacity 1.0, and 1×500 byte packet is sent on the second link of capacity 0.5. Thus, the required time for the first and second links is 1.0.
- In the third (1106) and fourth (1108) cases, the required time is 2.0. Thus, the best greedy solution with three pieces is (2, 1, 0, 0), which results in an effective time of 1.0. Since this time is less than the previous best overall solution of (2, 0, 0, 0)-2.0, the new solution is saved as the overall best one.
- Iteration may proceed up to an arbitrary number of pieces, and the end result is designated as the global optimal split decision that determines the split factor and number of pieces to create as well as the number of pieces to send on each link.
-
FIG. 12A illustrates an example of a fractional split decision made with a target loss of 1.0%.FIG. 12B illustrates an example of a fractional split decision made with target loss of 0.0001%.FIGS. 12A and 12B illustrate how QOS parameters may affect a fractional split decision. InFIGS. 12A and 12B , respectively, the links have normalized speeds of 1.0 and 0.5. In both cases, the estimated probability of loss of a single packet is 0.1% or 0.001. The difference between the two cases is that the first uses a target loss probability of 0.01 or 1% while the second uses a target loss probability of 0.0001%. - As illustrated in
FIGS. 12A and 12B , respectively, the example greedy split decision is carried out as previously described. For compactness, only the first six iterations of the greedy algorithm are shown. Note that the differing value for target loss in each case affects the allowed splits, which in turn affect the maximum possible split factor used at each iteration of the algorithm. - Applying the fractional split decision algorithm with a target loss of 1% results in an encoder being able to split input packets as finely as the number of packets it chooses to create, as indicated by the allowed splits table. For example, the (5, 5) entry in
FIG. 12A indicates that if the encoder sends five pieces, each can carry a fifth of the input packet's data and still satisfy the loss requirement. On the other hand, the (5, 3) entry inFIG. 12B indicates that if five pieces are sent, each must carry a third of the input packet's data in order to satisfy the target loss of 0.0001% used inFIG. 12B . -
FIG. 12A shows that with a target loss of 1%, the optimal split is (2, 1), with each of the pieces carrying a third of the original data. This results in each packet taking ⅔ of the time to be sent, increasing total capacity by 50%. On the other hand,FIG. 12B shows that with a target loss of 0.0001%, the optimal split is (4, 2), which results in each packet taking the same time to be sent as the original input packet, but meets the much stricter loss requirements. - Although the foregoing embodiments have been described in some detail for purposes of clarity of understanding, the invention is not limited to the details provided. There are many alternative ways of implementing the invention. The disclosed embodiments are illustrative and not restrictive.
Claims (20)
1. A system, comprising:
an interface configured to receive a packet; and
an encoder configured to, using a processor:
construct a plurality of fractional packets from the received packet; and
transmit the plurality of fractional packets to a decoder, wherein the decoder is configured to reconstruct the packet from a portion of the plurality of fractional packets that is fewer than all of the fractional packets in the plurality.
2. The system of claim 1 wherein the encoder is further configured to determine the number of fractional packets that form the plurality of fractional packets.
3. The system of claim 2 wherein the encoder is configured to determine the number of fractional packets that form the plurality of fractional packets based at least in part on link performance data.
4. The system of claim 2 wherein the encoder is configured to determine the number of fractional packets that form the plurality of fractional packets based at least in part on quality of service requirements.
5. The system of claim 2 wherein the encoder is configured to determine the number of fractional packets that form the plurality of fractional packets based at least in part on a fractional decision technique.
6. The system of claim 1 wherein the encoder is configured to construct the plurality of fractional packets using a cryptographic secret sharing technique.
7. The system of claim 6 wherein the technique includes Shamir's secret sharing technique.
8. The system of claim 1 wherein the encoder is configured to construct the plurality of fractional packets using a forward error correction technique.
9. The system of claim 1 wherein the encoder is further configured to monitor the status of one or more links
10. The system of claim 1 wherein the encoder is further configured to receive link performance information.
11. The system of claim 10 wherein the link performance information includes information obtained from a driver.
12. The system of claim 1 wherein the fractional packets are of equal size.
13. The system of claim 1 wherein the encoder is further configured to transmit the plurality of fractional packets over a plurality of available links
14. The system of claim 13 wherein the plurality of available links are made available by a plurality of carriers.
15. The system of claim 1 wherein the encoder is configured to transmit two fractional packets in the plurality of fractional packets over a first available link and a single fractional packet in the plurality of fractional packets over a second link.
16. A system, comprising:
an interface configured to receive, from an encoder, one or more fractional packets, wherein the encoder is configured to construct the one or more fractional packets from an original packet; and
a decoder configured to, using a processor:
determine whether a threshold number of fractional packets is received;
reconstruct from the received fractional packets the original packet; and
transmit the original packet.
17. The system of claim 16 wherein the decoder is further configured to store the original packet in a buffer.
18. The system of claim 16 wherein the decoder is configured to determine whether a threshold number of fractional packets is received based at least in part on a packet ID.
19. A method, comprising:
receiving, via an interface, a packet;
constructing a plurality of fractional packets from the received packet; and
transmitting the plurality of fractional packets to a decoder, wherein the decoder is configured to reconstruct the packet from a portion of the plurality of fractional packets that is fewer than all of the fractional packets in the plurality.
20. A computer program product embodied in a computer readable storage medium and comprising computer instructions for:
receiving a packet;
constructing a plurality of fractional packets from the received packet; and
transmitting the plurality of fractional packets to a decoder, wherein the decoder is configured to reconstruct the packet from a portion of the plurality of fractional packets that is fewer than all of the fractional packets in the plurality.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/861,239 US20140029630A1 (en) | 2008-02-01 | 2013-04-11 | Fractional threshold encoding and aggregation |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US6338108P | 2008-02-01 | 2008-02-01 | |
US12/362,400 US8442070B1 (en) | 2008-02-01 | 2009-01-29 | Fractional threshold encoding and aggregation |
US13/861,239 US20140029630A1 (en) | 2008-02-01 | 2013-04-11 | Fractional threshold encoding and aggregation |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US12/362,400 Continuation US8442070B1 (en) | 2008-02-01 | 2009-01-29 | Fractional threshold encoding and aggregation |
Publications (1)
Publication Number | Publication Date |
---|---|
US20140029630A1 true US20140029630A1 (en) | 2014-01-30 |
Family
ID=48225496
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US12/362,400 Expired - Fee Related US8442070B1 (en) | 2008-02-01 | 2009-01-29 | Fractional threshold encoding and aggregation |
US13/861,239 Abandoned US20140029630A1 (en) | 2008-02-01 | 2013-04-11 | Fractional threshold encoding and aggregation |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US12/362,400 Expired - Fee Related US8442070B1 (en) | 2008-02-01 | 2009-01-29 | Fractional threshold encoding and aggregation |
Country Status (1)
Country | Link |
---|---|
US (2) | US8442070B1 (en) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9203625B2 (en) * | 2011-11-28 | 2015-12-01 | Cleversafe, Inc. | Transferring encoded data slices in a distributed storage network |
JP5935572B2 (en) * | 2012-07-27 | 2016-06-15 | 富士通株式会社 | Base station apparatus and packet distribution method |
US20140181061A1 (en) * | 2012-12-21 | 2014-06-26 | Hong Jiang | Data distribution in a cloud computing system |
US10742564B2 (en) | 2018-09-16 | 2020-08-11 | Audiocodes Ltd. | Device, system, and method of RTP packet transmission and analysis of voice-over-IP communications |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5396490A (en) * | 1992-03-23 | 1995-03-07 | Motorola, Inc. | Packet reassembly method and apparatus |
US20010036202A1 (en) * | 2000-02-17 | 2001-11-01 | Toru Watanabe | Multiplexing apparatus |
US20030084020A1 (en) * | 2000-12-22 | 2003-05-01 | Li Shu | Distributed fault tolerant and secure storage |
US20030200499A1 (en) * | 2002-04-18 | 2003-10-23 | Khayrallah Ali S. | Method for multicast over wireless networks |
US20040223519A1 (en) * | 2003-05-05 | 2004-11-11 | Spediant Systems Ltd. | Inverse multiplexing with mapping vector |
US20050100022A1 (en) * | 2003-11-12 | 2005-05-12 | Ramprashad Sean A. | Media delivery using quality of service differentiation within a media stream |
US20050221757A1 (en) * | 2002-05-28 | 2005-10-06 | Mobile Satellite Ventures, Lp | Systems and methods for reducing satellite feeder link bandwidth/carriers in cellular satellite systems |
US20050226272A1 (en) * | 2003-10-08 | 2005-10-13 | Digital Fountain, Inc. | FEC-based reliability control protocols |
US20050265345A1 (en) * | 2004-05-04 | 2005-12-01 | Qualcomm Incorporated | Method and apparatus for content delivery to a mobile device |
US7089320B1 (en) * | 2001-06-01 | 2006-08-08 | Cisco Technology, Inc. | Apparatus and methods for combining data |
US7200154B1 (en) * | 2001-05-23 | 2007-04-03 | Nortel Networks Limited | QoS link protocol (QLP) |
US20070160198A1 (en) * | 2005-11-18 | 2007-07-12 | Security First Corporation | Secure data parser method and system |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5485474A (en) * | 1988-02-25 | 1996-01-16 | The President And Fellows Of Harvard College | Scheme for information dispersal and reconstruction |
US5253248A (en) * | 1990-07-03 | 1993-10-12 | At&T Bell Laboratories | Congestion control for connectionless traffic in data networks via alternate routing |
US5617541A (en) * | 1994-12-21 | 1997-04-01 | International Computer Science Institute | System for packetizing data encoded corresponding to priority levels where reconstructed data corresponds to fractionalized priority level and received fractionalized packets |
US6470391B2 (en) * | 1995-09-08 | 2002-10-22 | Hitachi, Ltd. | Method for transmitting data via a network in a form of divided sub-packets |
JP4160642B2 (en) * | 1995-09-08 | 2008-10-01 | 株式会社日立製作所 | Network data transfer method |
US5832000A (en) * | 1997-03-17 | 1998-11-03 | Motorola, Inc. | Method and apparatus for communicating error-tolerant messages |
US5991414A (en) * | 1997-09-12 | 1999-11-23 | International Business Machines Corporation | Method and apparatus for the secure distributed storage and retrieval of information |
WO1999030462A2 (en) * | 1997-12-12 | 1999-06-17 | 3Com Corporation | A forward error correction system for packet based real-time media |
US6320520B1 (en) * | 1998-09-23 | 2001-11-20 | Digital Fountain | Information additive group code generator and decoder for communications systems |
US6307487B1 (en) * | 1998-09-23 | 2001-10-23 | Digital Fountain, Inc. | Information additive code generator and decoder for communication systems |
US7319701B2 (en) * | 2000-12-29 | 2008-01-15 | Texas Instruments Incorporated | Modem relay protocol redundancy for reliable low speed modem communications over IP networks with substantial packet loss |
US6993000B2 (en) * | 2001-06-19 | 2006-01-31 | Telcordia Technologies, Inc. | Method for CDMA soft handoff via IP multicasting |
US7362709B1 (en) * | 2001-11-02 | 2008-04-22 | Arizona Board Of Regents | Agile digital communication network with rapid rerouting |
JP4506185B2 (en) * | 2004-02-06 | 2010-07-21 | ソニー株式会社 | Receiving apparatus and method, and program |
US9996413B2 (en) * | 2007-10-09 | 2018-06-12 | International Business Machines Corporation | Ensuring data integrity on a dispersed storage grid |
US7574579B2 (en) * | 2005-09-30 | 2009-08-11 | Cleversafe, Inc. | Metadata management system for an information dispersed storage system |
US7613121B2 (en) * | 2006-02-28 | 2009-11-03 | Microsoft Corporation | Method and system for faciliating data routing in a congested network |
JP2007299088A (en) * | 2006-04-28 | 2007-11-15 | Fujitsu Ltd | Data protection system, method and program |
US20100142522A1 (en) * | 2008-12-04 | 2010-06-10 | James Gardner | Methods and apparatus for adaptive error correction in networks |
-
2009
- 2009-01-29 US US12/362,400 patent/US8442070B1/en not_active Expired - Fee Related
-
2013
- 2013-04-11 US US13/861,239 patent/US20140029630A1/en not_active Abandoned
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5396490A (en) * | 1992-03-23 | 1995-03-07 | Motorola, Inc. | Packet reassembly method and apparatus |
US20010036202A1 (en) * | 2000-02-17 | 2001-11-01 | Toru Watanabe | Multiplexing apparatus |
US20030084020A1 (en) * | 2000-12-22 | 2003-05-01 | Li Shu | Distributed fault tolerant and secure storage |
US7200154B1 (en) * | 2001-05-23 | 2007-04-03 | Nortel Networks Limited | QoS link protocol (QLP) |
US7089320B1 (en) * | 2001-06-01 | 2006-08-08 | Cisco Technology, Inc. | Apparatus and methods for combining data |
US20030200499A1 (en) * | 2002-04-18 | 2003-10-23 | Khayrallah Ali S. | Method for multicast over wireless networks |
US20050221757A1 (en) * | 2002-05-28 | 2005-10-06 | Mobile Satellite Ventures, Lp | Systems and methods for reducing satellite feeder link bandwidth/carriers in cellular satellite systems |
US20040223519A1 (en) * | 2003-05-05 | 2004-11-11 | Spediant Systems Ltd. | Inverse multiplexing with mapping vector |
US20050226272A1 (en) * | 2003-10-08 | 2005-10-13 | Digital Fountain, Inc. | FEC-based reliability control protocols |
US20050100022A1 (en) * | 2003-11-12 | 2005-05-12 | Ramprashad Sean A. | Media delivery using quality of service differentiation within a media stream |
US20050265345A1 (en) * | 2004-05-04 | 2005-12-01 | Qualcomm Incorporated | Method and apparatus for content delivery to a mobile device |
US20070160198A1 (en) * | 2005-11-18 | 2007-07-12 | Security First Corporation | Secure data parser method and system |
Also Published As
Publication number | Publication date |
---|---|
US8442070B1 (en) | 2013-05-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111149316B (en) | System and method for optimizing load of multipath data transmission | |
EP2810180B1 (en) | Multi-path data transfer using network coding | |
US7733913B1 (en) | Striping data over transmission channels | |
EP3160073A1 (en) | Method and optical switching node for transmitting data packets in an optical transmission network | |
KR102114847B1 (en) | Apparatus and method for transmitting and receiving multimedia data in mobile communication system | |
US8881177B2 (en) | Communications driver management | |
CN112751644B (en) | Data transmission method, device and system and electronic equipment | |
CN110741573A (en) | Method and system for selectively propagating transactions using network coding in a blockchain network | |
CN111884900B (en) | Method for transmitting data and forwarding device | |
US20140029630A1 (en) | Fractional threshold encoding and aggregation | |
CN113114410A (en) | Data processing method, configuration method and communication equipment | |
CN107040334A (en) | Loss for communication network restores agreement | |
MX2014013560A (en) | Apparatus and method of transmitting and receiving packet in a broadcasting and communication system. | |
Tasdemir et al. | FSW: Fulcrum sliding window coding for low-latency communication | |
CN105939181A (en) | Aggregated data frame structures | |
US9116827B2 (en) | System and method for optimizing luby transform (LT) codes to facilitate data transmission over communication network | |
Nguyen et al. | Advanced adaptive decoder using Fulcrum network codes | |
Zhang et al. | A bignum network coding scheme for multipath transmission in vehicular networks | |
Gong et al. | Optimal node selection for data regeneration in heterogeneous distributed storage systems | |
Taghouti et al. | On the joint design of compressed sensing and network coding for wireless communications | |
US20100027563A1 (en) | Evolution codes (opportunistic erasure coding) platform | |
CN107615810A (en) | Header compression system and method for online network code | |
Torre et al. | Network-coded multigeneration protocols in heterogeneous cellular networks | |
US10568126B2 (en) | Method and apparatus for distributed uplink data processing in a communication network with limited backhaul | |
Behnke et al. | ScalaNC—Scalable heterogeneous link aggregation enabled by Network Coding |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |