GB2460434A - Encoding data with parity information and transmitting it over at least three paths to enable data reconstruction in the event of a path failure - Google Patents
Encoding data with parity information and transmitting it over at least three paths to enable data reconstruction in the event of a path failure Download PDFInfo
- Publication number
- GB2460434A GB2460434A GB0809767A GB0809767A GB2460434A GB 2460434 A GB2460434 A GB 2460434A GB 0809767 A GB0809767 A GB 0809767A GB 0809767 A GB0809767 A GB 0809767A GB 2460434 A GB2460434 A GB 2460434A
- Authority
- GB
- United Kingdom
- Prior art keywords
- data
- paths
- node
- path
- nodes
- 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.)
- Withdrawn
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/02—Arrangements for detecting or preventing errors in the information received by diversity reception
- H04L1/06—Arrangements for detecting or preventing errors in the information received by diversity reception using space diversity
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L25/00—Baseband systems
- H04L25/02—Details ; arrangements for supplying electrical power along data transmission lines
- H04L25/14—Channel dividing arrangements, i.e. in which a single bit stream is divided between several baseband channels and reassembled at the receiver
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/24—Multipath
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/28—Routing or path finding of packets in data switching networks using route fault recovery
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/004—Arrangements for detecting or preventing errors in the information received by using forward error control
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L2001/0092—Error control systems characterised by the topology of the transmission link
- H04L2001/0096—Channel splitting in point-to-point links
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Power Engineering (AREA)
- Detection And Prevention Of Errors In Transmission (AREA)
Abstract
A system comprises at least two nodes with at least three paths between a first node and a second node of the at least two nodes, and a controller. An input data stream is received at the first node where the controller applies a coding scheme to the input data stream. The input data is encoded with parity information and the encoded data is transmitted over the at least three paths to the second node, such that, in the event of failure of any path (fig. 1b), the data can be reconstructed from the data and parity information sent on the other paths. The parity information may be derived using an XOR function, hamming or Reed-Solomon codes.
Description
DATA TRANSMISSION METHOD
This invention relates to a system and a method of transmitting data, in particular for achieving hitless transmission in the event of a loss of a data path.
For a number of applications, involving transmission of critical real time data, such as in aircraft control systems, it is necessary to provide hitless data transmission.
In other applications, where non-hitless transmission has a less serious effect, such as in streaming video, it is desirable to improve efficiency if hitless data transmission is used. Thus, when transmitting a flow of data across multiple paths through a network, providing hitless redundancy against the loss of any one path means that should any path fail, the complete flow can still be reassembled from the remaining paths.
Resilient links between two nodes are conventionally provided by two separate paths. For non-hitless redundancy (i.e. packet loss will occur in a failure), the two paths may either act aggregated together, or one as a hot spare' for the other, taking over in the event of a failure. Both these have a delay when a failure occurs and is detected, and some packets will be lost. A hitless mechanism uses the two paths together, but with the traffic duplicated on both, so if one fails the traffic can be acquired from the other. This has the disadvantage that for two links, only the bandwidth of one link is provided. To provide redundancy for two links, four links would be required, so the useful bandwidth is halved.
In accordance with a first aspect of the present invention, a system comprises at least two nodes; at least three paths between a first node and a second node of the at least two nodes; and a controller; wherein an input data stream is received at the first node; wherein the controller applies a coding scheme to the input data stream, whereby the input data is encoded with parity information and the encoded data is transmitted over the at least three paths to the second node, such that in the event of failure of any path, the data can be reconstructed from data and parity information sent over the other paths.
The encoded data with additional parity information sent on each path may be different, but contains sufficient information to allow any one path which is lost to be reconstructed from the remaining ones.
Preferably, the at least three paths comprise at least two data paths between the first node and the second node of the at least two nodes; and at least one additional path between the first and second nodes.
Preferably, the controller splits the data from the input data stream and transmits the split data streams on the data paths to the second node; and wherein the controller derives the parity information from the input data stream for transmission on the or each additional path to the second node; and wherein the number of additional paths is less than the number of data paths.
The present invention provides additional paths to protect against failure of one or more of the data paths between two end nodes, with less than duplication of the number of paths that are being protected.
Preferably, in the event of loss of data on a data path, the controller reconstructs the input data stream from data received on any other data path and the, or each additional path.
Preferably, for each path which is to be protected, there must be an additional path, i.e. three paths allow for protection against one path failure, but the total number of paths which can be reconstructed in the event of a failure is not otherwise restricted.
The paths may be direct between the first and second node, but in one embodiment, preferably, the paths comprise one or more intermediate nodes.
A typical path between end nodes is routed via a number of intermediate nodes.
These intermediate nodes could be shared by more than one path, but preferably, the paths are disjoint.
Preferably, the system is a communication system.
In accordance with a second aspect of the present invention, a method of transmitting data between nodes in a network comprising at least two nodes, at least three paths between the at least two nodes, and a controller, comprises receiving an input data stream at a first node; the controller applying a coding scheme to the input data stream, whereby the input data is encoded with parity information and the encoded data is transmitted on the at least three paths to a second node, such that in the event of failure of any path, the data can be reconstructed from the data and parity information sent on the other paths.
Preferably, the at least three paths comprise at least two data paths between the first node and the second node of the at least two nodes; and at least one additional path between the first and second nodes.
Preferably, the method further comprises splitting the input data stream for transmission over the two or more data paths to the second node; and the controller deriving the parity information and sending the parity information over the one or more additional paths to the second node; wherein the number of additional paths is less than the number of data paths.
Preferably, the method further comprises receiving the data at the second node, checking that all data sent on the two or more data paths has been received correctly; and reconstructing any lost data using the received data and the parity data stream from the or each additional path.
Preferably, the number of paths for which a data stream can be reconstructed is equal to the number of additional paths.
Preferably, the received data stream comprises a series of packets; and wherein each packet is provided with routing and identity information.
Preferably, error checking is applied to each packet received at the second node before using that packet to reconstruct lost data.
Preferably, one or more of the paths comprise intermediate nodes.
Preferably, the paths are disjoint.
Preferably, splitting of the input data stream is carried out by sending one of a fraction of a packet on each data path; whole packets on each data path; and whole data strings on each data path.
Preferably, the capacity of the or each additional path is greater than or equal to the capacity of the data path having the largest capacity of all the data paths.
Preferably, the parity information is derived using one of an XOR function, Hamming or Reed-Solomon codes.
Preferably, the network is a communication network.
An example of a system and a method of transmitting data in accordance with the present invention will now be described with reference to the accompanying drawings in which: Figures la and lb illustrate conventional link aggregation; Figure 1 c illustrates conventional data duplication; Figure 2 illustrates a first example of a data transmission method according to the present invention allowing for a single link failure; and, Figure 3 shows a second example of a data transmission method according to the present invention allowing for multiple link failures.
Conventionally, multiple-path redundancy has been dealt with using link aggregation, or data duplication, depending on requirements. Link aggregation is illustrated in Figs. 1 a and lb. Traffic received at node 1 is sent over two or more links, A, B, C although which traffic is sent on which link is implementation-specific. In this example, one third of the data is sent along each path A, B & C. If, for example, the link on path A fails, then the 1/3 of the data which was in transit on the path A when it failed will be lost, but the remaining data in the stream is then sent via paths B and C, although more slowly. With link aggregation, no packets are duplicated, and if a link is detected to have failed, that flow of traffic will continue to be sent on the remaining link(s). However, as there is no duplication, this method is not hitless, without the use of a significant overhead in terms of delay and buffers.
Data duplication is illustrated in Fig. 1 c, where traffic from node 1 is sent simultaneously over two links A, B to node 2 and if one link fails, e.g. A, then the lost packets can be obtained from the backup flow on link B. This is hitless since there is no renegotiation delay, and no packet loss. However, using data duplication halves the efficiency for the available capacity.
The invention applies error correction codes to be able to provide protection against the failure of one link while only requiring one additional link, irrespective of the number of links on which data can be sent. Instead of duplicating the data on an additional link for each data link, only one additional link is added, which contains the parity data of the other links. Parity is a checksum from which any missing component can be recreated from the data which has not been lost. XOR is a simple example, Hamming or Reed Solomon coding are examples of more complex relationships.
Given two data paths, a parity algorithm is used to derive the data to be sent down a third path, such that if one of the other paths fails, then the lost data can be recomputed.
If data on one path is lost, it can be reassembled by combining together all the other paths, including the parity path. Other parity schemes can be used in environments with many more paths, providing better redundancy.
By deployment of established parity schemes in a flow-based network environment, protection against failure of any one path in a group of N flows is provided with only one additional flow, rather than N flows as has been required conventionally.
This invention provides a mechanism for protection against single link failure in a network where traffic between two nodes is distributed across multiple paths. This resilience can be provided by one extra link, of equal or greater capacity than the largest link currently existing.
Conventionally, one additional path protects only one data path, i.e. 1:1 sparing, whereas the present invention improves the efficiency by providing an N: 1 sparing, where one path provides redundancy for the failure of any one of the other N paths.
Figure 2 illustrates a first example of the present invention. Two nodes, 1 and 2, are connected with three paths A, B, C through a network or networks. These paths may pass through zero or more nodes during their traversal, and for best resilience are entirely disjoint. For the purposes of the following examples, these paths are considered to have the same capacity, although the principles described are equally applicable to paths of differing capacity, so long as the parity path has a capacity equal to or greater than the largest other path. In Fig. 2, data received at node 1 is split and sent along paths A and B, then parity information, in this example, an XOR of the packets on A and B is sent on C. If there were more paths, then the one additional path is used to send the parity information on, but equally it only protects against failure of one of those multiple paths.
Traffic in the form of a stream of data, segmented into packets or cells, is being sent between Node 1 and Node 2. For each packet sent on links A and B, link C carries a parity packet for this. The simplest parity is XORing every bit in the two packets, A and B, i.e: C=AB With the loss of a packet on any one of the links, this allows the missing packet to be recovered, by XORing the successful packet and the parity packet: A=BC B=AC This principle can be extended to N links, for example, with Z as the parity packet: Z =ABC$D...
A=ZBCD...
For any number of links, so long as only one link is lost, the missing packet can be recovered in this manner.
For protection against multiple failures, a different scheme is required and for each additional failure, another path. An example of this is shown in Fig. 3, where data is sent on paths A, B, C, D and E from node 1 to node 2, with two Reed Solomon parity paths F and G provided. The paths do not have to be disjoint, but it is better if they are because losing one node in a non-disjoint path can result in the loss of both paths.
It is worth differentiating between the data paths and the erasure recovery paths.
Any erasure correction code can be used in the recovery paths. A good example is Reed-Solomon coding. Reed-Solomon has the property that, if the location of an erasure is known, it can correct as many erased bits as there are parity bits.
So, for example, two Reed-Solomon parity paths, with any number of data paths, would protect against the failure of two links, as illustrated in the below diagram.
Here, paths A,B,C,D,E all carry the user data. Paths F and G provide a Reed-Solomon code for those links. These will protect against the failure of any two user data links.
In one embodiment, each packet on each link is encapsulated with another header to ensure correct routing and identify what kind of packet it is. The use of outer layer checksum functionality ensures only non-corrupt packets are used to recreate lost packets.
There are several potential mechanisms for splitting and recombining the traffic at the nodes, which can be used in the examples of a single or multiple parity paths.
One option is to split each packet and send an equal fraction over each link, so for the Fig. 2 example, this means sending half over link A, half over link B, with the parity of both halves over link C. For N non-parity links, the effect is to send l/lvth of a packet over each link.
In another case, whole packets are sent on each link using a round-robin of A, B, A, B, etc, with the parity on C every time there is a pair. This can be done on a per-packet basis, or per flow (identified, for example, by the pair of hosts communicating).
A timeout may be used to ensure that there is not too long a wait before the parity packet is sent and if met, a lone packet is sent, duplicated on C. With flow-based round-robining, a send of the parity packet can be forced whenever the next packet in the flow arrives. In all these cases, packets may be of different sizes, and so the smaller must be padded with zero bits to the size of the larger for XORing.
A further example is to implement a time-division multiplexing type system, where packets are sent every x microseconds, whether there is data to send or not.
XORing with an empty packet simply provides a duplicate of the packet. These schemes are modified accordingly for paths of differing capacity.
For example, when sending fractions of a packet, if path sizes are represented by a', b' and c', and c? a> b, then the fractions of the packet are distributed accordingly: A takes a/(a+b)tl of a packet, and B takes b/(a+b)t of a packet. C does an XOR of these two packets, with the smaller (B) padded with zero bits to the size of A's packet. Thus, for optimum use of bandwidth, all paths should be of equal capacity.
Other parity algorithms could be employed. For example, Hamming (7,4) code provides redundancy against two out of four flow losses if there were three parity flows.
The ability to regenerate any lost packet, e.g. A B XOR C, relies upon the location of the error being known (i.e. for it to be known at 2' when a packet has been lost on A, and thus which packets to XOR on B and C to regenerate A). In the simple XOR example, knowing the location of the erasure is required. This is given by some "out of band" information, such as a sequence number in the packet header. This sequence number must be the same (or derivable) across all paths, so that the correct packets on the remaining links can be XORed together. Bit-error detection is also deferred to the encapsulating protocols.
The outcome of using the invention is that the data is less than duplicated, whereas the number of spare paths may be greater than one for multiple data paths.
The first node can decide how to split the data. This can be done on a per packet basis, but more usually done per flow, as the actual time for transition of a particular path may be different and for example with streaming video, if each successive packet went on a different path, this could affect the resulting images when recombined.
Claims (19)
- CLAIMS1. A system comprising at least two nodes; at least three paths between a first node and a second node of the at least two nodes; and a controller; wherein an input data stream is received at the first node; wherein the controller applies a coding scheme to the input data stream; whereby the input data is encoded with parity information and the encoded data is transmitted over the at least three paths to the second node; such that in the event of failure of any path, the data can be reconstructed from the data and parity information sent on the other paths.
- 2. A system according to claim 1, wherein the at least three paths comprise at least two data paths between the first node and the second node of the at least two nodes; and at least one additional path between the first and second nodes.
- 3. A system according to claim 2, wherein the controller splits the input data stream and transmits the split data streams on the data paths to the second node; wherein the controller derives the parity information from the input data stream and the split data streams for transmission on the or each additional path to the second node; and wherein the number of additional paths is less than the number of data paths.
- 4. A system according to claim 2 or claim 3, wherein in the event of loss of data on a data path, the controller reconstructs the input data stream from data received on any other data path and the or each additional path.
- 5. A system according to any preceding claim, wherein the paths comprise one or more intermediate nodes.
- 6. A system according to any preceding claim, wherein the paths are disjoint.
- 7. A system according to any preceding claim, wherein the system is a communication system.
- 8. A method of transmitting data between nodes in a network comprising at least two nodes, at least three paths between the at least two nodes, and a controller; the method comprising receiving an input data stream at a first node; the controller applying a coding scheme to the input data stream, whereby the input data is encoded with parity information and the encoded data is transmitted on the at least three paths to a second node, such that in the event of failure of any path, the data can be reconstructed from the data and parity information sent on the other paths.
- 9. A method according to claim 8, wherein the at least three paths comprise at least two data paths between the first node and the second node of the at least two nodes; and at least one additional path between the first and second nodes.
- 10. A method according to claim 9, comprising splitting the input data stream for transmission over the two or more data paths to the second node; and the controller deriving the parity information and sending the parity information over the one or more additional paths to the second node; wherein the number of additional paths is less than the number of data paths.
- 11. A method according to claim 10, wherein the method further comprises receiving the data at the second node, checking that all data sent on the two or more data paths has been received correctly; and reconstructing any lost data using the received data and the parity information from the or each additional path.
- 12. A method according to claim 11, wherein the number of paths for which a data stream can be reconstructed is equal to the number of additional paths.
- 13. A method according to claim 11 or claim 12, wherein the received data stream comprises a series of packets; and wherein each packet is provided with routing and identity information.
- 14. A method according to any of claims 10 to 13, wherein error checking is applied to each packet received at the second node before using that packet to reconstruct lost data.
- 15. A method according to any of claims 8 to 14, wherein one or more of the paths comprise intermediate nodes.
- 16. A method according to any of claims 8 to 15, wherein the paths are disjoint.
- 17. A method according to any of claims 10 to 16, wherein splitting of the input data stream is carried out by sending one of a fraction of a packet on each data path; whole packets on each data path; and whole data strings on each data path.
- 18. A method according to any of claims 9 to 17, wherein the capacity of the or each additional path is greater than or equal to the capacity of the data path having the largest capacity of all the data paths.
- 19. A method according to any of claims 8 to 18, wherein the parity information is derived using one of an XOR function, Hamming or Reed-Solomon codes.A method according to any of claims 8 to 19, wherein the network is a communication network.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB0809767A GB2460434A (en) | 2008-05-30 | 2008-05-30 | Encoding data with parity information and transmitting it over at least three paths to enable data reconstruction in the event of a path failure |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB0809767A GB2460434A (en) | 2008-05-30 | 2008-05-30 | Encoding data with parity information and transmitting it over at least three paths to enable data reconstruction in the event of a path failure |
Publications (2)
Publication Number | Publication Date |
---|---|
GB0809767D0 GB0809767D0 (en) | 2008-07-09 |
GB2460434A true GB2460434A (en) | 2009-12-02 |
Family
ID=39637789
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
GB0809767A Withdrawn GB2460434A (en) | 2008-05-30 | 2008-05-30 | Encoding data with parity information and transmitting it over at least three paths to enable data reconstruction in the event of a path failure |
Country Status (1)
Country | Link |
---|---|
GB (1) | GB2460434A (en) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2003005661A1 (en) * | 2001-07-04 | 2003-01-16 | Nonend Inventions N.V. | Dispersity coding for inverse multiplexing |
US20040003165A1 (en) * | 2002-06-28 | 2004-01-01 | Schulz Jurgen M. | Memory subsystem including error correction |
US20040017778A1 (en) * | 2002-03-25 | 2004-01-29 | Akash Bansal | Error detection and recovery of data in striped channels |
WO2007003932A2 (en) * | 2005-07-01 | 2007-01-11 | Ntnu Technology Transfer As | Packet switched networks |
-
2008
- 2008-05-30 GB GB0809767A patent/GB2460434A/en not_active Withdrawn
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2003005661A1 (en) * | 2001-07-04 | 2003-01-16 | Nonend Inventions N.V. | Dispersity coding for inverse multiplexing |
US20040017778A1 (en) * | 2002-03-25 | 2004-01-29 | Akash Bansal | Error detection and recovery of data in striped channels |
US20040003165A1 (en) * | 2002-06-28 | 2004-01-01 | Schulz Jurgen M. | Memory subsystem including error correction |
WO2007003932A2 (en) * | 2005-07-01 | 2007-01-11 | Ntnu Technology Transfer As | Packet switched networks |
Also Published As
Publication number | Publication date |
---|---|
GB0809767D0 (en) | 2008-07-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5970059B2 (en) | Multilane transmission apparatus and fault lane notification method | |
US8918691B2 (en) | Processing transport packets | |
US7246303B2 (en) | Error detection and recovery of data in striped channels | |
US7277644B2 (en) | Fade-resistant forward error correction method for free-space optical communications systems | |
JP5918378B2 (en) | Parallel data encoding / decoding system | |
KR101160056B1 (en) | System and method for higher throughput through a transportation network | |
EP1897261A1 (en) | Data packet reconstruction in link-based interconnects with retransmission | |
US20090135717A1 (en) | Network protection using network coding | |
WO2008130159A1 (en) | A method of automatic repeat request (arq) in communication system | |
TW200835213A (en) | Forward Error Correction encoding for multiple link transmission compatible with 64B/66B scrambling | |
WO2008049341A1 (en) | Message processing method, message transmitting device and message receiving device | |
US11936475B2 (en) | Method, apparatus, and system for improving reliability of data transmission involving an ethernet device | |
JP2003143191A (en) | Parallel transmitters, parallel receivers and parallel transmission system | |
US9336080B2 (en) | Transmission system and transmission method | |
Shacham | Packet recovery and error correction in high-speed wide-area networks | |
CN104247319A (en) | Apparatus and method for transmitting/receiving packet in communication system | |
Li et al. | Protection against link errors and failures using network coding | |
GB2460434A (en) | Encoding data with parity information and transmitting it over at least three paths to enable data reconstruction in the event of a path failure | |
JP7116302B2 (en) | Signal quality information notification method and relay communication device | |
WO2021017890A1 (en) | Communication method and communication device | |
CN109560864B (en) | Data transmission method and device | |
US7869344B1 (en) | 1+N network protection for mesh networks: network coding-based protection using P-cycles and protection paths | |
WO2010069829A1 (en) | System and method for packet protection switching | |
WO2022105753A1 (en) | Network data encoding transmission method and apparatus | |
CN114830578A (en) | Data sending method, data receiving method, sending device and receiving device |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
WAP | Application withdrawn, taken to be withdrawn or refused ** after publication under section 16(1) |