CN115023928A - Packetized data communication over multiple unreliable channels - Google Patents

Packetized data communication over multiple unreliable channels Download PDF

Info

Publication number
CN115023928A
CN115023928A CN202080095139.2A CN202080095139A CN115023928A CN 115023928 A CN115023928 A CN 115023928A CN 202080095139 A CN202080095139 A CN 202080095139A CN 115023928 A CN115023928 A CN 115023928A
Authority
CN
China
Prior art keywords
data packet
networks
bit stream
data packets
copies
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.)
Granted
Application number
CN202080095139.2A
Other languages
Chinese (zh)
Other versions
CN115023928B (en
Inventor
U·阿维尼
I·卓锐
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zixi Co ltd
Original Assignee
Zixi Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US16/699,786 external-priority patent/US11546615B2/en
Application filed by Zixi Co ltd filed Critical Zixi Co ltd
Publication of CN115023928A publication Critical patent/CN115023928A/en
Application granted granted Critical
Publication of CN115023928B publication Critical patent/CN115023928B/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/02Arrangements for detecting or preventing errors in the information received by diversity reception
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0045Arrangements at the receiver end
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/08Arrangements for detecting or preventing errors in the information received by repeating transmission, e.g. Verdan system
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/20Arrangements for detecting or preventing errors in the information received using signal quality detector
    • H04L1/201Frame classification, e.g. bad, good or erased
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/24Multipath
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/28Flow control; Congestion control in relation to timing considerations
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/324Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the data link layer [OSI layer 2], e.g. HDLC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W56/00Synchronisation arrangements
    • H04W56/001Synchronization between nodes
    • H04W56/002Mutual synchronization

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Quality & Reliability (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Communication Control (AREA)
  • Time-Division Multiplex Systems (AREA)
  • Detection And Prevention Of Errors In Transmission (AREA)

Abstract

A method, comprising: receiving a plurality of copies of a serial bit stream, wherein the serial bit stream comprises a sequence of data packets; successively dividing each of the copies of the serial bitstream based on a sequential time window; aligning, with respect to each of the time windows, the data packets associated with each of the copies of the serial bit stream received within the time window based at least in part on data packet similarity; and recreating the serial bitstream in real-time by selecting at least one of the aligned data packets as representing a next data packet in the sequence of data packets.

Description

Packetized data communication over multiple unreliable channels
CROSS-REFERENCE TO RELATED APPLICATIONS
The present application claims priority to U.S. patent application No. 16/699,786 entitled "packed DATA COMMUNICATION OVER MULTIPLE UNRELIABLE CHANNELS" filed on 12/2.2019, which is a continuation of part of U.S. patent application No. 16/359,016 entitled "SYSTEM AND METHOD FOR COMMUNICATING DATA" filed on 3/20.2019, the contents of which are incorporated herein by reference in their entirety.
Technical Field
The present invention relates generally to data communications. More particularly, the present invention relates to the use of several unreliable communication channels for communicating data.
Background
When transmitting data over a packetized network, some data packets may be dropped or they may be corrupted upon arrival. In general, a packetized network or channel may involve dividing the content to be transmitted into packets or messages, transmitting the packets or messages, and reconstructing the content based on the packets by the receiving end.
To overcome the loss or corruption of packets, some known systems and methods transmit some or even all of the packets more than once. However, sending the same data more than once is often a wasteful approach to overcoming errors. Other methods, such as Forward Error Correction (FEC), enable detection of a limited number of errors and may further enable the receiver to correct some of the errors, however, such methods have the cost of increasing computational resources and transmitter complexity.
Both stream replication and FEC methods associate sequence numbers or other identifiers with packets and use the identifiers to reconstruct the packet stream from the correct (or original) order or sequence. However, such an approach is inadequate when the packets are not numbered or ordered.
The above examples of related art and limitations related thereto are intended to be illustrative and not exclusive. Other limitations of the related art will become apparent to those of skill in the art upon a reading of the specification and a study of the drawings.
Disclosure of Invention
The following embodiments and aspects thereof are described and illustrated in conjunction with systems, tools, and methods, which are meant to be exemplary and illustrative in scope, not limiting.
Provided in an embodiment is a method, comprising: receiving multiple copies of a serial bit stream, wherein the serial bit stream comprises a sequence of data packets; successively dividing each of the copies of the serial bit stream based on sequential time windows; aligning, with respect to each of the time windows, the data packets associated with each of the copies of the serial bit stream received within the time window based at least in part on data packet similarity; and recreating the serial bitstream in real-time by selecting at least one of the aligned data packets to represent a next data packet in the sequence of data packets.
There is also provided in an embodiment a system comprising at least one hardware processor; and a non-transitory computer-readable storage medium having program code embodied therein, the program code executable by the at least one hardware processor to: receiving a plurality of copies of a serial bit stream, wherein the serial bit stream comprises a sequence of data packets; successively dividing each of the copies of the serial bit stream based on sequential time windows; aligning, with respect to each of the time windows, the data packets associated with each of the copies of the serial bit stream received within the time window based at least in part on data packet similarity; and recreating the serial bit stream in real-time by selecting at least one of the aligned data packets to represent a next data packet in the sequence of data packets.
There is further provided in an embodiment a computer program product comprising a non-transitory computer readable storage medium having program instructions embodied therein, the program instructions executable by at least one hardware processor to: receiving multiple copies of a serial bit stream, wherein the serial bit stream comprises a sequence of data packets; successively dividing each of the copies of the serial bit stream based on sequential time windows; aligning, with respect to each of the time windows, the data packets associated with each of the copies of the serial bit stream received within the time window based at least in part on data packet similarity; and recreating the serial bit stream in real-time by selecting at least one of the aligned data packets to represent a next data packet in the sequence of data packets.
The computer program product of claim 15, wherein each of the multiple copies of the serial bitstream is transmitted over a different communication channel selected from the group consisting of: a private IP network, a public IP network, the Internet, a Global System for Mobile communications (GSM) network, a Local Area Network (LAN), a Metropolitan Area Network (MAN), a Wide Area Network (WAN), a wireless network, a satellite communication network, a cellular communication network, a Bluetooth communication channel, and a Wi-Fi network.
In some embodiments, each of the multiple copies of the serial bit stream is transmitted over a different communication channel.
In some embodiments, each of the communication channels is selected from the group consisting of: a private IP network, a public IP network, the Internet, a Global System for Mobile communications (GSM) network, a Local Area Network (LAN), a Metropolitan Area Network (MAN), a Wide Area Network (WAN), a wireless network, a satellite communication network, a cellular communication network, a Bluetooth communication channel, and a Wi-Fi network.
In some embodiments, aligning comprises arranging the data packets received within a time window in columns of an alignment score matrix based at least in part on the data packet similarities, wherein each row of the matrix represents one of the copies of the serial bit stream.
In some embodiments, the method further comprises assigning an alignment score to each of the columns based on a data packet mismatch and one of the data packet gaps in the column, and the program instructions are further executable to assign an alignment score to each of the columns based on a data packet mismatch and one of the data packet gaps in the column.
In some embodiments, for each column of the matrix, a consensus is selected that is determined based at least in part on data packet similarities for a majority of data packets in the column.
In some embodiments, the data packet similarity is determined based at least in part on a comparison of data packet contents, wherein the data packet contents are represented by a hash function.
In addition to the exemplary aspects and embodiments described above, further aspects and embodiments will become apparent by reference to the drawings and by study of the following detailed description.
Drawings
Non-limiting examples of embodiments of the present disclosure are described below with reference to the accompanying drawings, which are attached to the contents listed later in this paragraph. Identical features that appear in more than one figure are generally labeled with a same label in all the figures in which they appear. Labels in the figures labeling icons representing given features of embodiments of the present disclosure may be used to reference the given features. The dimensions of the features shown in the figures are chosen for convenience and clarity of presentation and are not necessarily shown to scale. For example, the dimensions of some of the elements may be exaggerated relative to other elements for clarity or several physical components may be included in one functional block or element. Further, where considered appropriate, reference numerals may be repeated among the figures to indicate corresponding or analogous elements.
The subject matter which is regarded as the invention is particularly pointed out and distinctly claimed in the concluding portion of the specification. The invention, however, both as to organization and method of operation, together with objects, features, and advantages thereof, may best be understood by reference to the following detailed description when read with the accompanying drawings. Embodiments of the invention are illustrated by way of example and not limitation in the figures of the accompanying drawings, in which like references indicate corresponding, similar or analogous elements, and in which:
FIG. 1 shows a block diagram of a system in accordance with an illustrative embodiment of the present invention; and
FIG. 2 shows a flow diagram of a method in accordance with an illustrative embodiment of the invention.
Detailed Description
In the following detailed description, numerous specific details are set forth in order to provide a thorough understanding of the present invention. However, it will be understood by those skilled in the art that the present invention may be practiced without these specific details. In other instances, well-known methods, procedures, and components, modules, units, and/or circuits have not been described in detail so as not to obscure the invention. Some features or elements described in relation to one embodiment may be combined with features or elements described in relation to other embodiments. For clarity, discussion of the same or similar features or elements may not be repeated.
Although embodiments of the invention are not limited in this respect, discussions utilizing terms such as, for example, "processing," "computing," "calculating," "determining," "establishing", "analyzing", "checking", or the like, may refer to operation(s) and/or process (es) of a computer, a computing platform, a computing system, or other electronic computing device that manipulates and/or transforms data represented as physical (e.g., electronic) quantities within the computer's registers and/or memories or other information non-transitory storage media that may store instructions to perform the operations and/or processes. Although embodiments of the present invention are not limited in this respect, the term "plurality" and "a plurality" as used herein may include, for example, "multiple" or "two or more". The terms "plurality" and "a plurality" may be used throughout the specification to describe two or more components, devices, elements, units, parameters and the like. As used herein, the term "collection" may include one or more items.
Unless explicitly stated, the method embodiments described herein are not limited to a particular sequence or temporal sequence in time. Moreover, some of the described method elements may occur or be performed concurrently, at the same point in time, or concurrently. Some of the described method elements may be skipped or they may be repeated during the operational sequence of the method.
A system, method, and computer program product for real-time error recovery in data streaming are disclosed.
In some embodiments, the present disclosure provides for streaming a repeated serialized data stream from a transmitter over two or more different communication routes or channels, e.g., in the form of data packets, and seamlessly reconstructing the data packets from the repeated received stream by a receiver to correct errors in any of the individual channels.
The present disclosure may be particularly useful in the field of packetized video streaming, e.g., MPEG transport streams over noisy and/or lossy networks such as the internet. Thus, in some embodiments, the present disclosure may provide real-time broadcast quality video over the internet with robust no-hit failover capabilities.
In some embodiments, the present disclosure provides a simple, scalable process that can recover data even when a complete channel failure is considered, and can be used with simple independent transmission units without modifying the payload they transmit.
In some embodiments, the plurality of routes may be generated by replicating transmission channels over a plurality of communication channels. In some embodiments, multiple routes may be generated by multiple receiving units listening to a single transmission on the broadcast medium, for example using multiple wireless receiving stations tuned to the same source signal at different locations.
In some embodiments, error recovery may be achieved by aligning data packets received over several communication channels based on, for example, a time window, time of arrival, content, and/or another and/or similar method for defining and/or synchronizing and/or aligning data packets.
In some embodiments, data packet alignment includes arranging packets received over several channels such that the same or similar packets are aligned.
In some embodiments, data packet alignment may be performed using a sequence alignment algorithm that selects the most likely source packet sequence that best interprets the packet sequence observed in the time window. In some embodiments, sequence alignment is a way of arranging a sequence of packets in a matrix row in such a way that identical or similar packets are aligned in a matrix column, with possible gaps between packets.
In some embodiments, packet alignment may be used to overcome packet loss in one or more of the channels. For example, if no packets are present (or represented) in a first stream, but present or represented in one or more other streams, the receiver may determine that packets are missing in the first stream and may select packets represented by the other streams for inclusion. Thus, for example, when aligned, the third packet received from the first channel will be aligned with the third packet received from the second channel. If a third packet is lost in another channel, the receiver may determine that the packet is lost in that channel and select one of the corresponding third packets for inclusion in the reconstructed stream.
In some embodiments, once alignment is achieved, it can be used to create a unified sequence that uses alignment and fills the gaps of missing packets with their corresponding existing packets in the corresponding channel by selecting a consensus packet within the column in case of packet corruption.
In some embodiments, the alignment algorithm within the time window maximizes a scoring function that penalizes having a gap in alignment and having an incomplete match (e.g., due to packet corruption). In some embodiments, the penalty for having long gaps may be lower than the penalty for having multiple short gaps, thereby capturing the typical correlation in consecutive packet loss events in an IP network.
Fig. 1 illustrates an exemplary system 100 for real-time error recovery in data streaming according to some embodiments of the invention. As shown, data from a sender (or source) 110 may be transmitted to a receiver (or destination) 120 over a plurality of communication channels 140 via a network 130. The transmitter 110 and receiver 120 may be any applicable computing device, such as a server, camera, smart phone, or home computer. It will be appreciated that embodiments of the invention are not limited by the nature or type of sender or source 110 and/or the nature or type of receiver or destination 120. For clarity and simplicity, only one transmitter 110 and one receiver 120 are shown, however, it will be understood that embodiments may include any number of such nodes, e.g., multiple transmitters 110 may transmit data to receiver 120 over a communication channel similar to communication channel 140. Communication channels 140 may be physical channels or routes (e.g., routes may be or may include wires, routers, etc.), or they may be logical channels or routes (e.g., User Datagram Protocol (UDP) connections), or they may be a combination of physical and logical channels.
The network 130 may be, may include, or may be part of a private or public IP network or the internet, or a combination thereof. Additionally or alternatively, the network 130 may be, include, or be part of a global system for mobile communications (GSM) network. For example, the network 130 may include or include an IP network, such as the internet, a GSM-related network, and any equipment used to bridge or otherwise connect such networks as is known in the art. Network 130 may be, or may include, or be part of, a public or private data network, a Local Area Network (LAN), a Metropolitan Area Network (MAN), a Wide Area Network (WAN), a wired or wireless network, a satellite communication network, a cellular communication network, any combination of the preceding, and/or any other suitable communication means. Thus, many elements of the network 130 (e.g., access points, base stations, communications satellites, GPS satellites, routers, and telephone switches) are implicit, but not shown. It will be appreciated that embodiments of the invention are not limited by the nature or type of network 130.
Embodiments may provide error recovery by streaming data packets from a transmitter using two or more different routes or channels, and seamlessly reconstructing the data packets by a receiver. In general, the original packet stream (as sent by a transmitter, e.g., transmitter 110) is reconstructed by a receiver (e.g., receiver 120) based on multiple repeated received streams. Note that embodiments can properly reconstruct the original stream even when packet sequence numbers or other sequence information is not available.
The multiple routes may be duplicated transmissions, or multiple receiving units listen to a single transmission over a broadcast medium, for example using multiple wireless receiving stations tuned to the same source signal at different locations. As noted, the routes may be physical and/or logical routes.
In some embodiments, the receiver 120 aligns the packets according to a time window or time interval. For example, streams of packets received from multiple channels at time intervals of, for example, 50 milliseconds. Thus, packets received from, for example, time interval 10:00:00(HR: MIN: SEC: MILL) to 10:00:50 are aligned, then packet streams received from multiple channels during time intervals from 10:00:00:51 to 10:00:100 are aligned, and so on. Any technique or mechanism for defining and/or synchronizing times and/or time slots, intervals, or windows may be used. Aligning the packets in a time-bounded window allows for real-time continuous reconstruction of the stream (as opposed to offline) and it reduces computational complexity. Based on the alignment, the receiver selects the sequence of packets that is most likely to be the original sequence as sent by the transmitter.
In general, alignment, or sequence alignment as referred to herein, includes arranging packets received over several channels in a matrix, where each channel stream is represented in a matrix row, such that identical or similar packets are aligned in separate matrix columns. For example, when aligned, the third packet received from the first channel 140 (in the current time window) is in the same column as the third packet received from the second channel 140. If the same packet is present in, for example, two separate rows (each representing a respective channel) but is missing in the third row (representing a third channel), the receiver may determine that the packet is lost or dropped in the third channel and one of the packets present in the other two rows may be selected for inclusion in the reconstructed stream.
In some embodiments, the actual content of the packet may be used in the alignment process. For example, the content of the packets may be represented using a hash or other function, and aligning may include checking whether packets in the same column have the same content, e.g., by comparing hash values. For example, packets for inclusion in the reconstructed stream may be selected based on a majority of rows of packets that include the same content. For example, if it is determined (by the receiver 120) that the content of the packet in the sixth column in several rows (representing respective ones of the streams) is the same and different from the content of the packet in the sixth column in a single row representing an additional stream, then the receiver may conclude that the packet in the additional stream was corrupted in transmission and may be ignored. Thus, the receiver can select one of the packets in the six identical streams for inclusion in a reconstructed stream from any of the several streams.
Embodiments may use the alignment described to overcome packet loss. For example, if no packets are present (or represented) in the first row/column pair representing the first stream, but packets are present or represented in the same column of one or more other streams, the receiver may determine that packets are lost or dropped in the first stream and may select packets represented by the other streams for inclusion.
In some embodiments, the receiver may use a scoring function and/or a threshold in the alignment process. For example, after arranging the packets in a matrix as described, the scoring function may calculate values for the time window based on the gaps and/or based on the content mismatch. For example, a gap may be no packets in the column and a mismatch may be different content in the same column. In some embodiments, a scoring function and/or threshold is used to determine whether alignment of the set of packets of the respective flow set is achieved.
Any scoring function, algorithm, or logic may be used to align the set of packet sequences received from the respective set of streams or channels without departing from the scope of the present invention. It will be appreciated that the specific algorithm discussed herein is only one example of an alignment algorithm that may be used.
In some embodiments, the alignment algorithm uses a packet similarity score for/when comparing the payloads of two packets, and a score (or penalty) for inserting (or representing) gaps between the packets. In some embodiments, the similarity function depends on the likelihood or probability that the source packets are the same given the values of the observed packets, taking into account the probabilistic nature of the communication channel. For example, if the channel is an erasure channel (dropped packets are possible, corrupted packets are not possible), the scoring function may be one that returns a 1 if the payloads of the compared packets are the same, returns a 0 when comparing packets to gaps (indicating the likelihood of packet loss), and returns negative infinity if the packets are not similar (indicating the likelihood of packet corruption is not possible). If packet bit flipping may occur in the associated channel (e.g., 0 becomes 1), the packet similarity may depend on the hamming distance between the packet payloads, that is, how much the payload of the first packet differs from the payload of the second packet.
For simplicity and clarity, a simplified case is described herein, namely aligning two sequences of packets received from two data streams. Generally, a method for aligning packet sequences and determining or identifying the original (source) packet sequence is to place two sequences one after the other in a way that maximizes a fractional function for sequence alignment using a dynamic programming method.
For example, for a size (number of packets) of | S 1 I and I S 2 Two sequences S of | 1 、S 2 The method constructs a size (| S) 1 |+1)*|S 2 L +1) of the two-dimensional matrix M.
Let the similarity function be σ and the penalty of inserting a gap of length x be G x The method initializes the matrix M according to the following formula:
M j,0 =-G j ,0≤j≤|S 1 |
M 0,j =-G j ,0≤j≤|S 2 |
note that as indicated above, the initialization of matrix M includes a penalty of alignment starting with a gap. The remainder of the matrix cell is populated by selecting the maximum value between the 3 previously calculated values, as follows:
Figure BDA0003772271540000091
in the above, the first calculation is to group S 1 (i) And group S 2 (j) The scores at the time of matching, the second term and the third term depending on the previously calculated values and respectively expressed at S 1 (i) Or S 2 (j) Fraction of previous insertion of a gap of length x (sequence of dropped packets).
By said maximum value, each M of the matrix M i,j The cell includes a subset S 1 (1.. i) and S 2 (1.. j) best score of alignment, and cell
Figure BDA0003772271540000092
The best alignment score is held.
In some embodiments, backtracking is used to enable
Figure BDA0003772271540000093
The decision to maximize the score, the alignment of the constructed, identified or selected packet sequence is done in reverse order. As is known in the art, there may be multiple paths leading to the same maximum score during backtracking. The methods described herein may be used to identify the path that produces the largest score for M.
For example, in each backtracking step, the method records or finds the previous or last selected cell that maximizes the score in that cell (i, j). To improve efficiency, the pointer to the previous or last cell that resulted in the largest score may be stored in the matrix cell in the construction phase.
Next, two aligned sequences are constructed from end point to start point according to the following logic:
if matrix cell (i, j) is moved to matrix cell (i-1, j-1), then group S 1 (i) Added to the first alignment sequence and grouped S 2 (j) Added to the second alignment sequence.
If the matrix cell (i, j) is moved to cell (i-x, j), then group S 1 (i) Is added to the first sequence and a gap of length x is added to the second sequence.
If the matrix cell (i, j) is moved to cell (i, j-x), then a gap of length x is added to the first sequence and the packet S is grouped 2 (j) Added to the second sequence. The process terminates when the edge of the matrix is reached.
The output of the backtracking process is a sequence of two packets, one above the other, possibly with gaps in some places.
Aligning 3 or more sequences can be done in a similar way using higher dimensional matrices. Some improvements may be considered, for example, by iteratively aligning pairs of sequences, faster approximate alignment may be achieved.
The output of the alignment process described above is a consensus sequence between all sequences in the search window. To construct the consensus sequence, in each column aligned, the method selects the most likely grouping by majority voting (or bitwise majority voting). As an example, assume that the packet is one byte long and σ, S 1 、S 2 And G x As follows:
Figure BDA0003772271540000101
G x =x
S 1 =ANTNARIV
S 2 =NTANANAVO
in this exemplary case, since G x X, so the fraction of the inserted large gap is equal to the fraction of the inserted small gaps. Therefore, in order to calculate the scores during the backtracking process, only the cells in the immediate upper left, upper and left corners need to be considered when filling the score matrix, and during the backtracking process.
With respect to the above example, the fractional matrix initialized and populated according to the dynamic programming logic is as follows:
Figure BDA0003772271540000102
going back from the last cell (value-1), it is necessary to move to the cell on the upper, left or upper left diagonal according to the path that maximizes the current cell score. After the backtracking process, aligned sequences are generated from back to front as follows:
Figure BDA0003772271540000103
based on the aligned sequences, the reconstructed consensus sequence is as follows:
A N T A N A N A R I V O
various logical and heuristic methods may be used. For example, a penalty for having long gaps (e.g., reducing the value calculated as described) may be lower than a penalty for having multiple short gaps, thus, for example, compensating for typical correlation in consecutive packet loss events in an IP network.
As noted above, any scoring function may be used without departing from the scope of the invention, for example, in other embodiments, rather than maximizing the score as described above, the scoring function reduces the initial value for each gap or mismatch identified, and if the resulting value is above a threshold, the receiver may determine that proper alignment has been achieved (and thus may reconstruct the stream for the relevant time window). If the value produced by the scoring function is below a threshold (e.g., due to many corrupted or lost packets), then the receiver may determine that the stream cannot be reconstructed correctly and the receiver may take further action, such as requiring retransmission, selecting one of the misaligned sequences, alerting the user, etc.
In some embodiments, the scoring function may be automatically selected based on the type or properties of the channel 140. For example, a first set of factors and/or thresholds may be used for channels implemented over physical wires (e.g., where loss and corruption of packets are unlikely), and a second set of factors and/or thresholds may be used for channels implemented over the wireless infrastructure.
In some embodiments, the method may be automatically selected based on the type or properties of the channel 140. For example, if a channel 140 is known to be relatively reliable, then a two or three column match may be sufficient for the receiver 120 to determine that the correct packet was found, whereas if a channel 140 is known to be unreliable, then the receiver 120 may require four or five matched packets. Thus, embodiments may automatically adjust or select logic for reconstructing the stream based on the properties of the communication channel used.
In another case, if it is known (e.g., based on the infrastructure used) that packets can be lost or dropped but cannot be corrupted, the transmitter and receiver can automatically revert to using only 2 channels. If packet corruption is possible, the transmitter and receiver may automatically choose to use 3 channels. Thus, the number of channels 140 may be automatically selected.
Referring to fig. 2, there is a flow chart of a method according to an illustrative embodiment of the invention. As shown in block 210, the same content may be transmitted over multiple communication channels. For example, content obtained from a video camera may be divided into packets, and each of the packets may be sent over several network connections. As indicated at block 215, the received packets may be aligned. For example, the receiver 120 receives packets over multiple channels 140, arranges the received packets in a matrix and performs a shift or other operation until optimal alignment is achieved. In some embodiments, aligning may include simply arranging or placing the groupings in a matrix as described and determining the degree of alignment exhibited by the groupings. As shown at block 220, content transmitted over a channel as described may be reconstructed based on the alignment. For example, as described, packets to be included in the reconstructed stream may be selected based on the alignment of the packets in the matrix.
The description of the embodiments of the present invention in this application is provided by way of example and is not intended to limit the scope of the invention. While certain features of the invention have been illustrated and described herein, many modifications, substitutions, changes, and equivalents will now occur to those skilled in the art. Various embodiments have been proposed. Each of these embodiments may, of course, include features from other embodiments set forth, and embodiments not specifically described may include various features described herein.
As will be appreciated by one skilled in the art, aspects of the present invention may be embodied as a system, method or computer program product. Accordingly, aspects of the present invention may take the form of an entirely hardware embodiment, an entirely software embodiment (including firmware, resident software, micro-code, etc.) or an embodiment combining software and hardware aspects that may all generally be referred to herein as a "circuit," module "or" system. Furthermore, aspects of the present invention may take the form of a computer program product embodied in one or more computer-readable media having computer-readable program code embodied in the media.
Any combination of one or more computer-readable media may be utilized. The computer readable medium may be a computer readable signal medium or a computer readable storage medium. A computer readable storage medium may be, for example, but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device, or any suitable combination of the foregoing. More specific examples (a non-exhaustive list) of the computer readable storage medium would include the following: an electrical connection having one or more wires, a portable computer diskette, a hard disk, a Random Access Memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or flash memory), an optical fiber, a portable compact disc read-only memory (CD-ROM), an optical storage device, a magnetic storage device, or any suitable combination of the foregoing. In the context of this document, a computer readable storage medium may be any tangible medium that can contain, or store a program for use by or in connection with an instruction execution system, apparatus, or device.
A computer readable signal medium may include a propagated data signal with computer readable program code embodied therein, for example, in baseband or as part of a carrier wave. Such a propagated signal may take any of a variety of forms, including, but not limited to, electro-magnetic, optical, or any suitable combination thereof. A computer readable signal medium may be any computer readable medium that is not a computer readable storage medium and that can communicate, propagate, or transport a program for use by or in connection with an instruction execution system, apparatus, or device.
Program code embodied on a computer readable medium may be transmitted using any appropriate medium, including but not limited to wireless, wireline, optical fiber cable, RF, etc., or any suitable combination of the foregoing.
Computer program code for carrying out operations for aspects of the present invention may be written in any combination of one or more programming languages, including an object oriented programming language such as Java, Smalltalk, C + + or the like and conventional procedural programming languages, such as the "C" programming language or similar programming languages. The program code may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer through any type of network, including a Local Area Network (LAN) or a Wide Area Network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet service provider).
Aspects of the present invention are described herein with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems) and computer program products according to embodiments of the invention. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer program instructions. These computer program instructions may be provided to a hardware processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
These computer program instructions may also be stored in a computer readable medium that can direct a computer, other programmable data processing apparatus, or other devices to function in a particular manner, such that the instructions stored in the computer readable medium produce an article of manufacture including instructions which implement the function/act specified in the flowchart and/or block diagram block or blocks.
The computer program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other devices to cause a series of operational steps to be performed on the computer, other programmable apparatus or other devices to produce a computer implemented process such that the instructions which execute on the computer or other programmable apparatus provide processes for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
The flowchart and block diagrams in the figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods and computer program products according to various embodiments of the present invention. In this regard, each block in the flowchart or block diagrams may represent a module, segment, or portion of code, which comprises one or more executable instructions for implementing the specified logical function(s). It should also be noted that, in some alternative implementations, the functions noted in the block may occur out of the order noted in the figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved. It will also be noted that each block of the block diagrams and/or flowchart illustration, and combinations of blocks in the block diagrams and/or flowchart illustration, can be implemented by special purpose hardware-based systems which perform the specified functions or acts, or combinations of special purpose hardware and computer instructions.
The description of the various embodiments of the present invention has been presented for purposes of illustration and is not intended to be exhaustive or limited to the disclosed embodiments. Many modifications and variations will be apparent to those of ordinary skill in the art without departing from the scope and spirit of the described embodiments. The terminology used herein is selected to best explain the principles of the embodiments, the practical application, or technical improvements to the technology found in the marketplace, or to enable others of ordinary skill in the art to understand the embodiments disclosed herein.
In the description and claims of this application, the words "comprising", "including" and "having", and forms thereof, are not necessarily limited to each member of a list with which the word may be associated. Further, in the event of inconsistencies between this application and any document incorporated by reference, it is hereby intended that this application control.

Claims (21)

1. A method, comprising:
receiving multiple copies of a serial bit stream, wherein the serial bit stream comprises a sequence of data packets;
successively dividing each of the copies of the serial bit stream based on sequential time windows;
aligning, with respect to each of the time windows, the data packets associated with each of the copies of the serial bit stream received within the time window based at least in part on data packet similarity; and
the serial bitstream is recreated in real-time by selecting at least one of the aligned data packets to represent a next data packet in the sequence of data packets.
2. The method of claim 1, wherein each of the multiple copies of the serial bit stream is transmitted over a different communication channel.
3. The method of claim 2, wherein each of the communication channels is selected from the group consisting of: private IP networks, public IP networks, the internet, global system for mobile communications networks (GSM networks), Local Area Networks (LANs), Metropolitan Area Networks (MANs), Wide Area Networks (WANs), wireless networks, satellite communication networks, cellular communication networks, bluetooth communication channels, and Wi-Fi networks.
4. The method of any of claims 1-3, wherein the aligning comprises arranging the data packets received within a time window in columns of an aligned fractional matrix based at least in part on the data packet similarities, wherein each row in the matrix represents one of the copies of the serial bitstream.
5. The method of claim 4, further comprising assigning an alignment score to each of the columns based on one of the data packet gaps in the column not matching a data packet.
6. The method of claim 4, wherein for each column of the matrix, the selecting is based at least in part on a consensus determined by data packet similarity of a majority of data packets in the column.
7. The method of any of claims 1 to 6, wherein the data packet similarity is determined based at least in part on a comparison of data packet content, wherein the data packet content is represented by a hash function.
8. A system, comprising:
at least one hardware processor; and
a non-transitory computer-readable storage medium having program code embodied therein, the program code executable by the at least one hardware processor to:
receiving multiple copies of a serial bit stream, wherein the serial bit stream comprises a sequence of data packets;
successively dividing each of the copies of the serial bitstream based on a sequential time window;
aligning, with respect to each of the time windows, the data packets associated with each of the copies of the serial bit stream received within the time window based at least in part on data packet similarity; and
the serial bitstream is recreated in real-time by selecting at least one of the aligned data packets to represent a next data packet in the sequence of data packets.
9. The system of claim 8, wherein each of the multiple copies of the serial bit stream is transmitted over a different communication channel.
10. The system of claim 9, wherein each of the communication channels is selected from the group consisting of: a private IP network, a public IP network, the Internet, a Global System for Mobile communications network (GSM network), a Local Area Network (LAN), a Metropolitan Area Network (MAN), a Wide Area Network (WAN), a wireless network, a satellite communications network, a cellular communications network, a Bluetooth communications channel, and a Wi-Fi network.
11. The system of any of claims 8 to 10, wherein the aligning comprises arranging the data packets received within a time window in columns of an aligned fractional matrix based at least in part on the data packet similarities, wherein each row in the matrix represents one of the copies of the serial bit stream.
12. The system of claim 11, wherein the instructions are further executable to assign an alignment score to each of the columns based on one of the data packet gaps in the column not matching a data packet.
13. The system of claim 12, wherein for each column of the matrix, the selecting is based at least in part on a consensus determined by data packet similarity of a majority of data packets in the column.
14. The system of any of claims 8 to 13, wherein the data packet similarity is determined based at least in part on a comparison of data packet content, wherein the data packet content is represented by a hash function.
15. A computer program product comprising a non-transitory computer-readable storage medium having program instructions embodied therein, the program instructions executable by at least one hardware processor to:
receiving multiple copies of a serial bit stream, wherein the serial bit stream comprises a sequence of data packets;
successively dividing each of the copies of the serial bit stream based on sequential time windows;
aligning, with respect to each of the time windows, the data packets associated with each of the copies of the serial bit stream received within the time window based at least in part on data packet similarity; and
the serial bitstream is recreated in real-time by selecting at least one of the aligned data packets to represent a next data packet in the sequence of data packets.
16. The computer program product of claim 15, wherein each of the multiple copies of the serial bit stream is transmitted over a different communication channel.
17. The computer program product of claim 16, wherein each of the communication channels is selected from the group consisting of: private IP networks, public IP networks, the internet, global system for mobile communications networks (GSM networks), Local Area Networks (LANs), Metropolitan Area Networks (MANs), Wide Area Networks (WANs), wireless networks, satellite communication networks, cellular communication networks, bluetooth communication channels, and Wi-Fi networks.
18. The computer program product of any of claims 15 to 17, wherein the aligning comprises arranging the data packets received within a time window in columns of an aligned fractional matrix based at least in part on the data packet similarities, wherein each row in the matrix represents one of the copies of the serial bitstream.
19. The computer program product of claim 18, wherein the instructions are further executable to assign an alignment score to each of the columns based on one of the data packet gaps in the column not matching a data packet.
20. The computer program product of claim 18, wherein, for each column of the matrix, the selecting is based at least in part on a consensus determined by data packet similarity of a majority of data packets in the column.
21. The computer program product of any of claims 15 to 20, wherein the data packet similarity is determined based at least in part on a comparison of data packet content, wherein the data packet content is represented by a hash function.
CN202080095139.2A 2019-12-02 2020-12-02 Packetized data communication over multiple unreliable channels Active CN115023928B (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/699,786 US11546615B2 (en) 2018-03-22 2019-12-02 Packetized data communication over multiple unreliable channels
US16/699,786 2019-12-02
PCT/IB2020/061382 WO2021111329A1 (en) 2019-12-02 2020-12-02 Packetized data communication over multiple unreliable channels

Publications (2)

Publication Number Publication Date
CN115023928A true CN115023928A (en) 2022-09-06
CN115023928B CN115023928B (en) 2024-02-23

Family

ID=76221036

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202080095139.2A Active CN115023928B (en) 2019-12-02 2020-12-02 Packetized data communication over multiple unreliable channels

Country Status (9)

Country Link
EP (1) EP4070488A4 (en)
JP (1) JP2023508744A (en)
KR (1) KR20220136343A (en)
CN (1) CN115023928B (en)
AU (1) AU2020396439A1 (en)
BR (1) BR112022010854A2 (en)
CA (1) CA3160355A1 (en)
IL (1) IL293533A (en)
WO (1) WO2021111329A1 (en)

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070091928A1 (en) * 2005-10-21 2007-04-26 Wee Susie J Serial and parallel processing of data using information about the data and information about a streaming network
US20080069016A1 (en) * 2006-09-19 2008-03-20 Binshi Cao Packet based echo cancellation and suppression
US20090010152A1 (en) * 1999-11-09 2009-01-08 Yoram Ofek Interface system and methodology having scheduled connection responsive to common time reference
US7707349B1 (en) * 2006-06-26 2010-04-27 Marvell International Ltd. USB isochronous data transfer for a host based laser printer
US20100103929A1 (en) * 2008-10-29 2010-04-29 Seung-Jong Lee Method, apparatus, and system for automatic data aligner for multiple serial receivers
CN105164960A (en) * 2013-03-14 2015-12-16 谷歌公司 Reduction of retransmission latency by combining pacing and forward error correction
US20160337723A1 (en) * 2015-05-13 2016-11-17 Huawei Technologies Co., Ltd. System and Method for Hybrid Photonic Electronic Switching

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4068545B2 (en) * 2003-10-24 2008-03-26 日本電信電話株式会社 Packet receiving method and apparatus
US7729256B2 (en) * 2004-07-14 2010-06-01 Opnet Technologies, Inc. Correlating packets
US8873557B2 (en) * 2011-04-08 2014-10-28 Gigamon Inc. Systems and methods for packet de-duplication
EP3791504A4 (en) * 2018-05-10 2021-12-15 Apple Inc. Synchronization control for packet data convergence protocol (pdcp) duplicate transmissions

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090010152A1 (en) * 1999-11-09 2009-01-08 Yoram Ofek Interface system and methodology having scheduled connection responsive to common time reference
US20070091928A1 (en) * 2005-10-21 2007-04-26 Wee Susie J Serial and parallel processing of data using information about the data and information about a streaming network
US7707349B1 (en) * 2006-06-26 2010-04-27 Marvell International Ltd. USB isochronous data transfer for a host based laser printer
US20080069016A1 (en) * 2006-09-19 2008-03-20 Binshi Cao Packet based echo cancellation and suppression
US20100103929A1 (en) * 2008-10-29 2010-04-29 Seung-Jong Lee Method, apparatus, and system for automatic data aligner for multiple serial receivers
CN102204198A (en) * 2008-10-29 2011-09-28 晶像股份有限公司 Method, apparatus, and system for automatic data aligner for multiple serial receivers
CN105164960A (en) * 2013-03-14 2015-12-16 谷歌公司 Reduction of retransmission latency by combining pacing and forward error correction
US20160337723A1 (en) * 2015-05-13 2016-11-17 Huawei Technologies Co., Ltd. System and Method for Hybrid Photonic Electronic Switching

Also Published As

Publication number Publication date
EP4070488A4 (en) 2024-01-03
BR112022010854A2 (en) 2022-08-23
IL293533A (en) 2022-08-01
EP4070488A1 (en) 2022-10-12
CN115023928B (en) 2024-02-23
AU2020396439A1 (en) 2022-06-30
CA3160355A1 (en) 2021-06-10
WO2021111329A1 (en) 2021-06-10
KR20220136343A (en) 2022-10-07
JP2023508744A (en) 2023-03-03

Similar Documents

Publication Publication Date Title
KR102133930B1 (en) Apparatus and method for transmitting and receiving data packet
KR100598662B1 (en) Lost packet recovery method for packet transmission protocols
CN101803263B (en) Scalable error detection and cross-session timing synchronization for packet-switched transmission
US9276702B2 (en) Apparatus and method for transmitting and receiving an application layer-forward error correction packet in multimedia communication system
US20100050058A1 (en) Method and device for transmitting and receiving data packets
KR102138000B1 (en) Apparatus and method for sending/receiving packet in multimedia communication system
WO2018171641A1 (en) Method and device for transmitting and receiving network management information, transmitting apparatus and receiving apparatus
US11876723B2 (en) Method and apparatus for transmitting and receiving packet in communication system
CN103096183A (en) Efficient streaming media transmission method
US9667384B2 (en) Apparatus and method for transmitting and receiving forward error correction packet
US10341049B2 (en) Method and apparatus for performing a forward error correction (FEC) encoding or decoding in a multimedia system
CN115023928B (en) Packetized data communication over multiple unreliable channels
FR2898446A1 (en) METHOD, MODULE AND APPARATUS FOR RECEIVING DATA PACKET FRAMES
KR102081467B1 (en) Method and apparatus for error recovery using information related to the transmitter
US11546615B2 (en) Packetized data communication over multiple unreliable channels
US20120192039A1 (en) Method, Apparatuses and Service for Media Transmission
US10574424B2 (en) Transmission bandwidth improvements for DVB-S2X channel bonding
US20170111285A1 (en) Methods and apparatus for random access of hevc bitstream for mmt
CN102255690A (en) Method for decoding fountain codes based on 2 and 3 degrees of coding packets
KR101706573B1 (en) Device and method for multicast screen mirroring
JP2004023379A (en) Data transmission apparatus, data reception apparatus, data transmission method, data reception method, and data transmission and reception program
US9998278B2 (en) Method and apparatus for synchronization of a decoding unit
US8499223B2 (en) Receiving apparatus, receiving method and non-transitory computer readable recording medium for recording receiving program
JP2005223682A (en) Transmission/reception system, transmitter and transmitting method, receiver and receiving method, transmitter/receiver and transmitting/receiving method, and program
JPH01289341A (en) Packet transmission system

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant