Abstract:
The invention relates to a device, in particular a router, for bundling a plurality of Internet access lines into a virtual Internet access line for the purpose of providing the sum of the bandwidths of the plurality of Internet access lines for a transmission of data via the virtual Internet access line, wherein the device divides a data packet to be transmitted among a plurality of data packets for separate transmission via the plurality of Internet access lines, wherein the device is designed to calculate redundancy information and to transmit said redundancy information along, from which redundancy information lost data packets can be restored, such that packet losses on an Internet access line do not lead to packet losses on the bundled virtual line.

Description:
[0001]    The invention relates to devices according to the preamble of claim  1  or  13 , as well as to an assembly, an auxiliary transmitting device and an auxiliary receiving device according to the preamble of claim  16 ,  17  or  18 . 
         [0002]    In particular, the invention relates to a device such as an internet access router, which can use several different internet accesses simultaneously, and thereby places the total capacity of connected lines at the disposal of the user, with the characteristic feature that all IP packets are transmitted without losses and delays from a user perspective as the result of forward error correction, even given disruptions with significant packet losses on a portion of the lines. 
       TECHNOLOGICAL BACKGROUND 
       [0003]    For example, bundling several different wired or wireless internet lines for purposes of parallel data transmission, and hence increasing the bandwidth, is known from U.S. Pat. No. 8,125,989 B2 or EP 1 976 202 A2. The methods and devices described therein are included in this application by reference. 
         [0004]    One typical intended use for this technique is as an internet router installed in a vehicle (automobile, train, airplane), which combines several different mobile internet accesses, for example all mobile providers in a country. A single mobile network will always have dropouts while traveling, e.g., when the signal path to the respective cell tower of the mobile provider is blocked or the transmission mast is destroyed. For this reason, a single mobile line is unusable for mission-critical applications that require the prompt and lossless delivery of data packets (e.g., in healthcare). 
         [0005]    Existing bundling solutions of the kind known from the publications mentioned at the outset can provide the bandwidths of all connected internet accesses bundled together. However, if packets are lost during data transmission on one of the lines, they must be retransmitted again over one of the other lines. As a result, signal propagation delays yield delays in useful data transmission. 
         [0006]    Therefore, the object of the invention is to create devices for data transmission over bundled network access lines that are more stable, in particular with respect to packet losses on one or more of the network access lines. 
       REPRESENTATION OF THE INVENTION 
       [0007]    This object is achieved by a device and a system according to claim  1  or  13 , as well as by an assembly, an auxiliary transmitting device and an auxiliary receiving device according to claim  16 ,  17  or  18 . 
         [0008]    The use of forward error correction makes it possible to completely offset dropouts on one or several of the lines, without requiring retransmissions. For example, when combining 4 internet access lines (wireless or wired), packet losses of up to 25% can be offset without a retransmission being required. 
         [0009]    Additional embodiments and characteristics of the invention may be gleaned from the following description, the figures and the claims. 
     
    
     
       DESCRIPTION OF THE FIGURES 
         [0010]      FIG. 1  illustrates the principle underlying the invention of bundling internet access lines. 
           [0011]      FIG. 2  illustrates an embodiment. 
           [0012]      FIG. 3  illustrates the system according to the invention for data redundancy. 
       
    
    
     DETAILED DESCRIPTION OF EXEMPLARY EMBODIMENTS 
       [0013]    The assembly depicted on  FIG. 1  for transmitting a data stream a from a transmitting device  1  to a receiving device  2  over a packet-based network, in particular the internet  3 , encompasses a respective device  5 ,  6  on the transmitter and receiver side, preferably in the form of a respective router, wherein several network access lines  4 ,  4 ′ can be provided on the transmitter and/or receiver side to increase the data transmission rate and/or to increase the reliability. The device  6  can potentially also be located in the internet, and transmit the composite data stream a′ over a line to the receiving device  2 , which then can exhibit a conventional design. These types of assemblies along with the accompanying transmission methods are known from U.S. Pat. No. 8,125,989 B2 or EP 1 976 202 A2 of the applicant, and will not be described further here, but rather be made part of the present disclosure by way of reference. 
         [0014]    The transmitting device can be a computer or medical device, see  FIG. 2 , which in an ambulance  7  is linked to the internet by the device  5  according to the invention, e.g., a wireless router connected with several wireless networks  4 , as well as cell towers, and ultimately connected with a remote station, e.g., a telemedicine setup at a clinic  9 , preferably also by way of the device  6  according to the invention, e.g., a router with wireless and/or wired network access lines. It is possible to have the remote station  6  be located in the internet, and provide a simple router  2  with just a single internet access line  4 ′ at the clinic. 
         [0015]    In the embodiment shown, the location of the user (e.g., inside the vehicle  7 ) has a device  5  according to the invention, herein in the form of a router (auxiliary transmitting device+auxiliary receiving device), which is hooked up to several wireless and/or wired internet access lines  4  (e.g., radio modems). IP data packets from and in the internet are not directly sent by the transmitting device  1  via the connected internet access lines  4 , but instead in particular encapsulated via the device  5 , preferably via a VPN tunnel to the counterpart  6  of the device, e.g., which can be configured as a router in the internet (auxiliary transmitting device+auxiliary receiving device), in which the packets are potentially decapsulated and then relayed to the actual destination  6 . Packets from the internet to the user also initially pass through a corresponding router before expediently being encapsulated and sent to the router of the user. 
         [0016]    The object of the invention is now to divide IP data packets from/to the user in the auxiliary transmitting devices/auxiliary receiving devices into several fragments as a function of the number of available connected lines, wherein the number of fragments corresponds to the number of lines that currently satisfy the quality requirements minus 1, for example, and furthermore to generate at least one additional fragment containing redundancy data from the remaining fragments, and to then send this fragment over the remaining line. 
         [0017]    This forward error correction makes it possible to drastically minimize transmission errors and transmission delays: Precisely in mobile networks, each different network frequently has brief dropouts, in particular when used in a moving vehicle, because the connection to a cell tower or transmission from one cell tower to the next leads to transmission dropouts. However, these dropouts as a rule do not happen at the same time when using several mobile providers, but are rather delayed, since each provider has its own cell tower. By transmitting redundancy data, the auxiliary receiving device can both offset such packet losses and also prevent packet transmission delays, since in most cases one no longer has to wait for delayed fragments, but can instead regenerate the missing fragment from the forward error correction data. 
       System 
       [0018]    The system according to the invention for implementing a method will be described with reference to  FIG. 3 . 
         [0019]    An IP data packet P 1  is sent out by the sender with the destination address of the recipient. It is relayed to the router, which serves as an auxiliary transmitting device. 
         [0020]    The auxiliary transmitting device checks whether the IP data packet belongs to an existing connection flow. If this is not the case, a new, unique connection flow number F 1  is generated and assigned to the IP data packet. If this is the case, the existing connection flow number is assigned to the IP data packet. 
         [0021]    Based on the quality rules stored in the auxiliary transmitting device, the auxiliary transmitting device now determines which of the connected internet access media is possible for transporting this packet. Possible criteria include: Line latency (time required by a packet to reach the auxiliary receiving device from the auxiliary transmitting device on this line), packet loss rate of this line between the auxiliary transmitting device and auxiliary receiving device, costs for data transmission on this line, along with other criteria. 
         [0022]    After the auxiliary transmitting device has determined which lines can be used for the IP data packet P 1 , the determined lines are stored in the list P 1 L. The number of entries on this list is stored in NP 1 L. 
         [0023]    If the value NP 1 L=0, no lines are currently available. In this case, the IP data packet is either discarded, or buffered for a later point in time. 
         [0024]    If the value NP 1 L=1, the data packet is completely stored in the encapsulated packet KP 1 . The encapsulated packet is marked in the header data of the encapsulation to indicate its completeness. The connection flow number is stored as well. The encapsulated packet is subsequently provided with the source IP address of the only line stored in P 1 L, and sent to the destination IP address of the auxiliary receiving device over this line. 
         [0025]    By contrast, it will be assumed below that NP 1 L=6, for example, i.e., that more than one line is available for transmission and meets the quality requirements. 
       Fragmentation of Data Packets 
       [0026]    If the value NP 1 L&gt;2, the data packet P 1  is to be fragmented into NP 1 L−1 equally sized parts. In order to do so, the expected size of the fragments is first determined. Given a size for P 1  of 1452 bytes, a division by NP 1 l−1=5 would yield=290.4 bytes. This size value is rounded up to the next value divisible by 4, i.e., 292 bytes in this case. 
         [0027]    Subsequently, 5 fragment packets of 292 bytes each are here now generated. Fragment packet  1  (FP 1 F 1 ) receives bytes 2-292 of data packet P 1 , fragment packet  2  (FP 1 F 2 ) receives bytes 293-584, and so on. As a consequence, only 284 bytes from packet P 1  are now still available for the last fragment packet FP 1 F 5 . The missing 8 bytes in FP 1 F 5  are filled with 0 bytes. 
       Exception: First Packet of a New Connection Flow 
       [0028]    If the first packet (P 1 ) of a new connection flow number is involved, care is taken during division to ensure that the size of the fragment is at least large enough for the first fragment to contain the complete header data (IP header data and possibly UDP or TCP header data) of the IP data packet P 1 . In practice, the fragments of the first IP data packet of a connection flow number must hence have a size of at least 40 bytes. If the packet size of P 1  divided by NP 1 L−1&lt;40, division here takes place into packet size/fragments. If there is a remainder after division, division takes place into (packet size/40)+1 fragments. The last fragment then again receives 0 bytes as filler data at the end. Proceeding in this way ensures that, at the point in time the fragment P 1 F 1  is received, the auxiliary receiving device is able to assign the destination address information of the original IP packet to the transmitted connection flow number F 1 . 
       Calculation of Redundancy Information 
       [0029]    As a consequence, the auxiliary transmitting device now has the fragment packets FP 1 F 1  to FP 1 F 5 . In addition, a fragment redundancy packet FP 1 F R  with the same length as the fragment packets FP 1 F 1  to FP 1 F 5  is now generated. This fragment redundancy packet is filled with redundancy data, which are calculated out of FP 1 F 1  to FP 1 F 5 . In a preferred method, the first byte from FP 1 F 1  is to this end linked with the first byte from FP 1 F 2  via exclusive OR (XOR). The result is then again linked via exclusive OR (XOR) with the first byte from FP 1 F 3 , this result with FP 1 F 4 , and this result with FP 1 F 4 . The result is now stored as the first byte from the fragment redundancy packet FP 1 F R . The same process is repeated with the remaining 291 bytes. 
         [0030]    As a result, the fragment redundancy packet FP 1 F R  contains the result of all XOR linkages of all bytes of the fragment packets FP 1 F 1  to FP 1 F 5 . 
       Optional Calculation of Doubled Redundancy Information 
       [0031]    Should a high packet loss rate on more than one of the used lines make generating a single redundancy insufficient for ensuring that the auxiliary receiving device can restore the original data even given packet losses, the auxiliary transmitting device can decide to calculate doubled redundancy information. This is possible and expedient when at least 4 lines are available, i.e., NP 1 L&gt;3. In this case, only NP 1 L−2 fragments of the data packet P 1  are now generated. The first fragment redundancy packet FP 1 F R  is subsequently generated as above via XOR linkage. A second fragment redundancy packet FP 1 F R2  is generated based on Galois field multiplications. This method is known from the redundant storage on data carriers (e.g., Patent DE 19922253 A1), but here described for the first time for use in the real-time data transmission of IP data. If necessary, three or more fragment redundancy packets are generated. 
         [0032]    The additional explanations refer to the transmission of single redundancy information, and are to be applied analogously when using multiple, in particular doubled, redundancy information. 
       Encapsulation and Dispatch of Fragment Packets 
       [0033]    Each fragment packet FP 1  is now encapsulated in a new IP data packet KFP 1 . The IP source address of the corresponding line of the auxiliary transmitting device along with the destination IP address of the auxiliary receiving device are stored in the header of the encapsulated packet. The connection flow number F 1 , the overall number of fragments NP 1 L−1, as well as the fragment packet number FP 1 Fn are also stored. Each packet KFP 1 Fn is subsequently sent out via the accompanying line Ln. 
         [0034]    The fragment redundancy packet FP 1 F R  is encapsulated in KFP 1 F R . The IP source address of the line NP 1 L 6  of the auxiliary transmitting device along with the destination IP address of the auxiliary receiving device are stored in the header of the encapsulated packet. The connection flow number F 1 , the overall number of fragments NP 1 L−1, as well as a marking that denotes the involvement of a fragment redundancy packet are also stored. This is done by using a reserved number in the field of the fragment packet number. The encapsulated fragment redundancy packet KFP 1 F R  is subsequently sent out via line NP 1 L 6 . 
         [0035]    The appropriate process is followed when using doubled redundancy information: The fragment packets FP 1  to FP 4  are here sent out over lines L 1  to L 4 , the first fragment redundancy packet FP 1 F R  over line L 5 , and the second fragment redundancy packet FP 1 F R2  over line L 6 . 
       Incorrect Sorting and Optional Speculative Retransmission of Fragment Packets 
       [0036]    Due to the varying runtimes for the encapsulated fragment packets on the lines or the infrastructure of the network operator connected downstream therefrom, the fragment packets will not reach the auxiliary receiving device in the sequence in which they were sent. Not only can the individual fragments arrive in the wrong sequence (e.g., KFP 1 F 3 , KFP 1 F 2 , KFP 1 F 4 , KFP 1 F R , KFP 1 F 4 , KFP 1 F 1 ), the actual packet numbers can also arrive in the wrong sequence as the result of overhauls (e.g., KFP 2 F 1 , KFP 1 F 2 , KFP 2 F 5 , KFP 1 F 4  . . . ). 
         [0037]    As explained further on, the described method makes a significant loss of packets very unlikely, and packets can as a rule be restored through fragmentation and forward error correction at the auxiliary receiving device. However, in order to also deal with cases where packet losses arise simultaneously on several lines so as to make restoration impossible in the auxiliary receiving device, line behavior is also checked via heuristics. If the line deteriorates right (within the roundtrip time of the connection between the auxiliary transmitting device and auxiliary receiving device) after sending out the fragments on more than one of the used lines to such an extent as to no longer satisfy the quality requirements for connection flow (e.g., increased latency, complete disconnection), the affected fragments are retransmitted over a line that satisfies the quality requirements in a speculative retransmission. 
       The Auxiliary Receiving Device 
       [0038]    Two lists are kept in the auxiliary receiving device: The list of known connection flows BVF and the list of unknown connection flows UVF. 
         [0039]    Once a newly encapsulated fragment packet KFP arrives at the auxiliary receiving device, it is decapsulated, and the header information of the packet is initially checked to see whether the connection flow number is on the list of known connection flows BVF. If this is not the case, a check is performed to determine whether the first fragment of the first packet of this connection is here involved, i.e., FP 1 F 1 . If this is the case, a new entry is generated in the BVF, and a newly generated resorting heap NSH is attached to this entry. The packet FP 1 F 1  is transferred to this resorting heap. Furthermore, a check is now performed to determine whether additional packets of this connection flow are on the list of unknown connection flows UVF, i.e., packets that are later in the sequence, but already arrived before FP 1 F 1 . If this is the case, the packets contained therein are transmitted to the resorting heap in the BVF, and the entry in the UVF is deleted. 
         [0040]    If the received packet is one whose connection flow number does not appear on the list of known connection flows BVF, and the first fragment of the first packet (FP 1 F 1 ) of this connection flow is not involved, a check is performed to determine whether the connection flow number appears on the list of unknown connection flows UVF. If this is the case, the packet is added there. If this is not the case, an entry is generated on the list of unknown connection flows UVF, and the packet is added. 
         [0041]    If the received packet is one whose connection flow number does appear on the list of known connection flows BVF, the packet is added to the resorting heap HSP of the list entry in the BVF. 
       Resorting Heap Input 
       [0042]    If data are transferred to the resorting heap, a check is first performed to determine whether a complete packet or a fragment is involved. If a complete packet is involved, a check is performed to determine whether the sequence number of the packet lies within the expected range (i.e., a delayed duplicate is not involved), after which it is sorted into the resorting heap. Furthermore, the sequence number of the packet is marked as present in a hash table. 
         [0043]    If a complete packet is not involved, but rather a fragment, a check is initially performed to determine whether a fragment card already exists for the sequence number of the fragmented packet. If this is not the case, a new fragment card is created. Based on the header data of the fragment packets, the fields indicating the number of fragments of this sequence number are recorded on the card, and the useful data of this packet are copied. If a fragment redundancy packet is involved, the data are instead stored in a separate data field for parity information within the fragment card. 
         [0044]    If the number of fragments recorded on the card now corresponds to the overall number of fragments of this sequence number, the now complete packet is sorted into the resorting heap, and the sequence number is marked as present on the hash table. 
         [0045]    If the number of fragments recorded on the card corresponds to the overall number of fragments minus 1, i.e., if only a single fragment is missing, and if parity data (i.e., a fragment redundancy packet) were already received, the parity data are used to restore the missing fragment. To this end, all present fragments are sequentially XOR linked with the content of the parity data field of the fragment card. The result in the parity data field is then copied to the location of the missing fragment. The now complete packet is sorted into the resorting heap, and the sequence number is marked as present on the hash table. 
         [0046]    In the event of doubled redundancy information, the original packet can already be generated again once n−2 fragments have arrived at the auxiliary receiving device. 
       Resorting Heap Output 
       [0047]    The resorting heap stores the next packet sequence number to be output. When generated, the heap has the value 1. After each input into the resorting heap, the auxiliary receiving device checks whether an output is now possible. Even though the characteristics of the binary heap ensure that the data contained in the resorting heap are sorted correctly (in ascending order), gaps may be present due to packets that have not yet arrived. Therefore, the output function of the resorting heap checks whether the sequence number of the first present packet corresponds to the expected next sequence number. If this is the case, the packet is output, and the expected next sequence number is increased by one; if this is not the case, no packet is output. 
       Optional Delivery Signaling and Retransmission 
       [0048]    As a rule, the described invention will make it possible to provide the useful data to the auxiliary receiving device in a timely manner through forward error correction, even given highly disrupted lines. In the event of a simultaneous, sudden disruption of several lines that could not be anticipated by the auxiliary transmitting device based on the behavior history, it can still happen that one or more packet fragments would not arrive at the auxiliary receiving device, or only after a long delay. In this case, the described behavior would require that the auxiliary receiving device wait until such time as the missing fragment arrives. In order to avoid this, the auxiliary receiving device continuously determines the average time that elapses between the reception of the first and last fragment of a packet. As a rule, this time should correspond to the difference between the lowest and highest latency between the auxiliary transmitting device and auxiliary receiving device for this connection flow. If this statistically expected delay is now significantly exceeded during resorting in the resorting heap, it must be assumed that one of the fragment packets has been lost or significantly delayed. 
         [0049]    In order to counter this case, the user can choose between two different approaches within the framework of service quality settings: 
         [0050]    a) Skip Missing Packets 
         [0051]    If the resorting heap is unable to reestablish a seamless connection flow in time, the missing packets are skipped. As a consequence, the problem of the missing useful data packets is left to higher transmission layers, e.g., TCP or UDP. While the connection flow of user data will in this instance have gaps on rare occasions, it will arrive at the final recipient with a uniform delay. For example, this is desired for services like telephony or video conferences. 
         [0052]    b) Retransmit Missing Packets 
         [0053]    If the corresponding user option is selected, the auxiliary receiving device cyclically notifies the auxiliary transmitting device for each connection flow which fragment packets have arrived at the auxiliary receiving device. Similarly to the described analysis based on the packet runtimes (latencies) of the individual lines, it is now the auxiliary transmitting device which, based upon missing confirmations, recognizes in a timely manner when all fragment packets have not arrived at the auxiliary receiving device within the expected time window. In this case, the auxiliary transmitting device again speculatively sends out packet fragments over a line other than the one used previously for this fragment. 
         [0054]    The transmitted fragment packets can be compressed and/or encrypted between the auxiliary transmitting device and auxiliary receiving device. Depending on the used compression and encryption procedures, it may be that several data packets are essential to the auxiliary receiving device, meaning that the data flow could not be further restored if such a packet were to be missing. In this case, the auxiliary transmitting device could separately mark such essential packets in the header field, even given a user decision for variant a). In this case, the auxiliary receiving device will also signal to the auxiliary transmitting device only the receipt of such essential packets or fragments thereof, and the auxiliary transmitting device according to b) will only transmit such packets. By contrast, the procedure according to a) is followed for all nonessential packets, i.e., the auxiliary receiving device will accept gaps in the data flow to avoid delays in the connection flow. 
       Relaying of Packets to the Actual Destination 
       [0055]    A connection flow exactly corresponding to the input data flow at the auxiliary transmitting device is now generated at the auxiliary receiving device. As soon as the first fragment packet FP 1 F 1  has reached the auxiliary receiving device, the original header information of the IP packet is again available, so that IP-based routing can now be performed for the data flow. According to configured routing protocols, the connection flow can now be treated as a conventional IP data flow, and relayed to the actual destination. 
       Bidirectional Data Flows 
       [0056]    Implemented in parallel in the auxiliary transmitting device is an auxiliary receiving device, and in the auxiliary receiving device is an auxiliary transmitting device. For a bidirectional useful data flow, the auxiliary receiving device thus now oppositely becomes the auxiliary transmitting device, while the auxiliary transmitting device becomes the auxiliary receiving device. The forward and reverse directions of a connection flow can here be handled independently of each other. However, it is also possible for the auxiliary transmitting device and auxiliary receiving device to automatically assign the forward and reverse flows of the connection flow, and subsequently use bundling parameters separately for both directions.