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

Packetized data communication over multiple unreliable channels Download PDF

Info

Publication number
CN115023928B
CN115023928B CN202080095139.2A CN202080095139A CN115023928B CN 115023928 B CN115023928 B CN 115023928B CN 202080095139 A CN202080095139 A CN 202080095139A CN 115023928 B CN115023928 B CN 115023928B
Authority
CN
China
Prior art keywords
networks
data packet
bit stream
serial bit
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.)
Active
Application number
CN202080095139.2A
Other languages
Chinese (zh)
Other versions
CN115023928A (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

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; sequentially dividing each of the copies of the serial bit stream based on a sequential time window; aligning the data packets received within the time window associated with each of the copies of the serial bit stream based at least in part on data packet similarity with respect to each of the time windows; and recreating the serial bit stream 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
This application claims priority from U.S. patent application Ser. No. 16/699,786 entitled "PACKETIZED DATA COMMUNICATION OVER MULTIPLE UNRELIABLE CHANNELS" filed on Ser. No. 12/month 2/2019, which is a continuation of the portion of U.S. patent application Ser. No. 16/359,016 entitled "SYSTEM AND METHOD FOR COMMUNICATING DATA" filed on Ser. No. 3/month 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 data is sent over a packetized network, some data packets may be discarded or they may be corrupted upon arrival. In general, a packetized network or channel may involve dividing content to be transmitted into packets or messages, transmitting the packets or messages, and reconstructing the content by a receiving end based on the packets.
To overcome packet loss or corruption, some known systems and methods send some or even all packets more than once. However, sending the same data more than once is often a wasteful way to overcome errors. Other approaches, 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 approaches have the cost of increasing computational resources and transmitter complexity.
Both the stream duplication 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 and not limiting.
In an embodiment, a method is provided, comprising: receiving a plurality of copies of a serial bit stream, wherein the serial bit stream comprises a sequence of data packets; sequentially dividing each of the copies of the serial bit stream based on a sequential time window; aligning the data packets received within the time window associated with each of the copies of the serial bit stream based at least in part on data packet similarity with respect to each of the time windows; 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.
Also provided in an embodiment is 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; sequentially dividing each of the copies of the serial bit stream based on a sequential time window; aligning the data packets received within the time window associated with each of the copies of the serial bit stream based at least in part on data packet similarity with respect to each of the time windows; 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 a plurality of copies of a serial bit stream, wherein the serial bit stream comprises a sequence of data packets; sequentially dividing each of the copies of the serial bit stream based on a sequential time window; aligning the data packets received within the time window associated with each of the copies of the serial bit stream based at least in part on data packet similarity with respect to each of the time windows; 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 plurality of copies of the serial bit stream is transmitted over a different communication channel selected from the group consisting of: private IP networks, public IP networks, the internet, global system for mobile communications (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.
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: private IP networks, public IP networks, the internet, global system for mobile communications (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.
In some embodiments, aligning includes 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 in 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 one of the data packet gaps and the data packet mismatch in the columns, and the program instructions are further executable to assign an alignment score to each of the columns based on one of the data packet gaps and the data packet mismatch in the columns.
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 content, wherein the data packet content is 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 list below in this paragraph. The same features that appear in more than one drawing are generally labeled with the same label in all the drawings in which they appear. Labels in the figures, labeled with icons representing given features of embodiments of the present disclosure, may be used to mention 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 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 reference numerals refer to corresponding, similar or analogous elements, and in which:
FIG. 1 shows a block diagram of a system according to an illustrative embodiment of the invention; and
fig. 2 shows a flow chart of a method according to 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 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 with respect to one embodiment may be combined with features or elements described with respect to other embodiments. The discussion of the same or similar features or elements may not be repeated for clarity.
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, computing platform, computing system, or other electronic computing device that manipulate and/or transform data represented as physical (e.g., electronic) quantities within the computer's registers and/or memories or other information non-transitory storage medium that may store instructions to perform operations and/or processes. Although embodiments of the present invention are not limited in this respect, the term "multiple" and "a multiple" as used herein may include, for example, "multiple" or "two or more. The term "plurality of" may be used throughout the specification to describe two or more components, devices, elements, units, parameters, etc. As used herein, the term "collection" may include one or more items.
The method embodiments described herein are not limited to a particular order or sequence of time unless explicitly stated. Furthermore, some of the described method elements may occur or be performed concurrently, at the same point in time or concurrently. During the sequence of operations of the method, some of the described method elements may be skipped, or they may be repeated.
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 sender 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, for example, 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 hitless failover capability.
In some embodiments, the present disclosure provides a simple, scalable process that can recover data even in the event of a complete channel failure, and can be used with simple, independent transmission units without modifying the payloads they transmit.
In some embodiments, the plurality of routes may be generated by replicating a transmission channel over a plurality of communication channels. In some embodiments, multiple routes may be generated by multiple receiving units listening for a single transmission on a broadcast medium, e.g., 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, time windows, 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, the sequence alignment is a manner in which the sequence of packets is arranged in matrix rows in such a way that the same or similar packets are aligned in a matrix column, with possible gaps between the 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 the first stream but are present or represented in one or more other streams, the receiver may determine that packets are lost in the first stream and may select packets represented by the other streams for inclusion. Thus, for example, when aligned, a third packet received from a first channel will be aligned with a third packet received from a 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 the alignment and fills in gaps of missing packets with their corresponding existing packets in the corresponding channel by selecting the consensus packet within the column in the event of packet corruption.
In some embodiments, the alignment algorithm within the time window maximizes a scoring function that gives a penalty for having gaps in alignment and for 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, capturing typical correlations 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 sent 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 present invention are not limited by the nature or type of the sender or source 110 and/or the nature or type of the 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 a receiver 120 over a communication channel similar to communication channel 140. The communication channels 140 may be physical channels or routes (e.g., routes may be or 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, network 130 may include or include an IP network, such as the internet, a GSM related network, and any equipment for bridging or otherwise connecting such networks as known in the art. The network 130 may be, 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 wireline or wireless network, a satellite communications network, a cellular communications network, any combination of the preceding, and/or any other suitable communications means. Thus, many of the elements of network 130 (e.g., access points, base stations, communication satellites, GPS satellites, routers, and telephone exchanges) 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 sender using two or more different routes or channels, and seamlessly reconstructing the data packets by a receiver. In general, an original packet stream (e.g., transmitted by a transmitter, such as transmitter 110) is reconstructed by a receiver (e.g., receiver 120) based on a plurality of repeated received streams. Note that embodiments can reconstruct the original stream correctly even when packet sequence numbers or other order information is not available.
The multiple routes may be duplicate transmissions or multiple receiving units listening to a single transmission over a broadcast medium, for example using multiple wireless receiving stations at different locations tuned to the same source signal. As noted, the route may be a physical and/or logical route.
In some embodiments, the receiver 120 aligns the packets according to a time window or time interval. For example, packet streams received from multiple channels at time intervals of, for example, 50 milliseconds. Thus, packets received from, for example, time intervals 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 time and/or time slots, intervals or windows may be used. Aligning packets in time-bounded windows allows continuous reconstruction of the stream in real-time (as opposed to off-line), and it reduces computational complexity. Based on the alignment, the receiver selects a sequence of packets that is most likely to be the original sequence as sent by the transmitter.
In general, alignment, or sequence alignment referred to herein, includes arranging packets received over several channels in a matrix, with each channel stream represented in a matrix row, such that the same 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 appears in, for example, two separate rows (each representing a respective channel), but is missing in the third row (representing the third channel), the receiver may determine that the packet is missing or dropped in the third channel, and one of the packets appearing 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 the aligning may include checking whether the 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 most of the rows of packets including the same content. For example, if it is determined (by the receiver 120) that the contents of the packets in the sixth column in several rows (representing corresponding several streams) are the same and different from the contents of the packets in the sixth column in a single row representing the additional streams, the receiver may infer that the packets in the additional streams are corrupted in transmission and may be ignored. Thus, the receiver may select one of the packets in six identical streams for inclusion in a reconstructed stream from any of the several streams.
Embodiments may use the described alignment to overcome packet losses. For example, if no packets are present (or represented) in the first row/column pair representing the first stream, but there are packets present or represented in the same column of one or more other streams, the receiver may determine that a packet is lost or dropped in the first stream, and may select the 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 content mismatch. For example, a gap may be that there are no packets in the column, and a mismatch may be a different content in the same column. In some embodiments, a scoring function and/or a threshold is used to determine whether alignment of the packet sets of the respective flow sets is achieved.
Any scoring function, algorithm, or logic may be used to align sets of packet sequences received from corresponding streams or sets of channels without departing from the scope of the invention. It will be appreciated that the specific algorithm discussed herein is but one example of an alignment algorithm that may be used.
In some embodiments, the alignment algorithm uses a packet similarity score for comparing payloads of two packets/the packet similarity score when comparing payloads of two packets, and a score (or penalty) for inserting (or representing) gaps between packets. In some embodiments, the similarity function depends on the likelihood or probability that the source packet is the same given the observed packet value, taking into account the probability characteristics of the communication channel. For example, if the channel is an erasure channel (dropped packets are possible and 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, a 0 when comparing packets to gaps (indicating the likelihood of packet loss), and a negative infinity (indicating the likelihood of packet corruption is not possible) if the packets are dissimilar. If a packet bit flip (e.g., 0 to 1) may occur in the associated channel, the packet similarity may depend on the hamming distance between the packet payloads, that is, how much the payloads of the first packet differ from the payloads 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. In general, the method for aligning packet sequences and determining or identifying the original (source) packet sequence is to arrange the two sequences one after the other in such a way that the score function for sequence alignment is maximized using a dynamic programming method.
For example, for a size (number of packets) of |S 1 I and S 2 Two sequences S of i 1 、S 2 The method constructs a block of size (|S) 1 |+1)*|S 2 |+1) two-dimensional matrix M.
Assuming that the similarity function is σ and that the penalty for inserting a gap of length x is G x The method initializes a 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 for alignment starting with a gap. The remainder of the matrix cells are filled by selecting the maximum value among the 3 previously calculated values as follows:
in the above, the first item is calculated in the process of grouping S 1 (i) And packet S 2 (j) The score at the time of matching, the second term and the third term depend on the previously calculated values and represent the values at S 1 (i) Or S 2 (j) A fraction of the previous insertion of a gap of length x (discarded sequence of packets).
With the maximum value, each M in the matrix M i,j The unit cell comprises a subset S 1 (1). I. i and S) 2 (1..j) best score aligned, and cellHolding the best alignment score.
In some embodiments, the trace back is performedThe decision to maximize the score at that point, the alignment of constructing, identifying or selecting the sequence of packets is done in reverse order. As is known in the art, there may be multiple paths leading to the same maximum score during the backtracking process. The methods described herein may be used to identify the path that yields the greatest score for M.
For example, in each backtracking step, the method records or finds the previously or last selected cell that maximizes the score in that cell (i, j). To improve efficiency, pointers to the previous or last cell that resulted in the greatest score may be stored in the matrix cells during the construction phase.
Next, two aligned sequences were constructed from the end point to the 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) Is added to the first alignment sequence and packet S 2 (j) To the second alignment sequence.
If the matrix cell (i, j) is moved to cell (i-x, j), then group S 1 (i) To the first sequence and a gap of length x 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 2 (j) To the second sequence. When the edge of the matrix is reached, the process terminates.
The output of the backtracking process is a sequence of two packets, one above the other, possibly with gaps in some locations.
Alignment of 3 or more sequences can be accomplished in a similar manner using a higher dimensional matrix. 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 the consensus sequence between all sequences in the search window. To construct the consensus sequence, in each column of the alignment, the method selects the most likely grouping by majority voting (or bitwise majority voting). As an example, assume that a packet is one byte long, andσ、S 1 、S 2 and G x The following is shown:
G x =x
S 1 =ANTNARIV
S 2 =NTANANAVO
in this exemplary case, due to G x =x, so the fraction of large gaps inserted is equal to the fraction of multiple small gaps inserted. Thus, in order to calculate the score during the backtracking process, only the immediately left, upper and upper left corner cells need to be considered when filling the score matrix, and during the backtracking process.
With respect to the above example, the score matrix initialized and populated according to the dynamic programming logic is shown below:
backtracking from the last cell (value-1) requires moving 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, an aligned sequence is generated from back to front as follows:
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 logic and heuristics may be used. For example, the penalty for having a long gap (e.g., reducing the value calculated as described) may be lower than the penalty for having multiple short gaps, thus, for example, compensating for typical correlation in consecutive packet loss events in an IP network.
As described above, any scoring function may be used without departing from the scope of the invention, e.g., 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 scoring function produces a value below a threshold (e.g., due to many corrupted or lost packets), the receiver may determine that the stream cannot be properly reconstructed 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 attribute 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 packet loss and corruption is 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 attribute of the channel 140. For example, if the 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, however, if the 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 a flow based on the properties of the communication channel used.
In another case, if it is known (e.g., based on the infrastructure used) that the packet can be lost or discarded, but cannot be corrupted, the transmitter and receiver can automatically revert to using only 2 channels. If corruption of the packet 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, this is a flow chart of a method according to an illustrative embodiment of the invention. As indicated at 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 a plurality of channels 140, arranges the received packets in a matrix and performs shifting or other operations until optimal alignment is achieved. In some embodiments, aligning may include simply arranging or placing the packets in a matrix as described and determining the degree of alignment exhibited by the packets. As indicated at block 220, content transmitted over the 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 invention in this application is provided by way of example and is not intended to limit the scope of the invention. Although 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 presented, 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 therein.
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. The 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.
The computer readable signal medium may comprise 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 flowcharts 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 was chosen to best explain the principles of the embodiments, the practical application, or the technical improvement of 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, each of the words "include", "include" and "have", and forms thereof, are not necessarily limited to members of the list with which the word may be associated. In addition, in the event of an inconsistency between the present application and any of the documents incorporated by reference, the present application shall be deemed to prevail.

Claims (18)

1. A method of packetized data communication over a plurality of unreliable channels, the method comprising:
receiving a plurality of copies of a serial bit stream, wherein the serial bit stream comprises a sequence of data packets;
sequentially dividing each of the copies of the serial bit stream based on a sequential time window;
aligning the data packets received within the time window associated with each of the copies of the serial bit stream based at least in part on data packet similarity with respect to each of the time windows; 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;
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.
2. The method of claim 1, wherein each of the plurality of 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. A method according to any one of claims 1 to 3, wherein the aligning comprises arranging the data packets received within a time window in columns of an alignment score matrix, wherein each row in the matrix represents one of the copies of the serial bit stream, based at least in part on the data packet similarities.
5. The method of claim 4, further comprising assigning an alignment score to each of the columns based on one of a data packet gap and a data packet mismatch in the columns.
6. The method of claim 4, wherein, with respect to each column of the matrix, the selecting is based at least in part on a consensus of data packet similarity determinations for a majority of data packets in the column.
7. A packetized data communication system over a plurality of unreliable channels, said 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;
sequentially dividing each of the copies of the serial bit stream based on a sequential time window;
aligning the data packets received within the time window associated with each of the copies of the serial bit stream based at least in part on data packet similarity with respect to each of the time windows; 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;
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. The system of claim 7, wherein each of the plurality of copies of the serial bit stream is transmitted over a different communication channel.
9. The system of claim 8, 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.
10. The system of any of claims 7 to 9, wherein the 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 in the matrix represents one of the copies of the serial bit stream.
11. The system of claim 10, wherein the program code is further executable to assign an alignment score to each of the columns based on one of a data packet gap and a data packet mismatch in the columns.
12. The system of claim 11, wherein, with respect to each column of the matrix, the selecting is based at least in part on a consensus of data packet similarity determinations for a majority of data packets in the column.
13. A non-transitory computer readable storage medium for packetized data communication over multiple unreliable channels, having program instructions embodied therein, the program instructions being executable by 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;
sequentially dividing each of the copies of the serial bit stream based on a sequential time window;
aligning the data packets received within the time window associated with each of the copies of the serial bit stream based at least in part on data packet similarity with respect to each of the time windows; 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;
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.
14. The computer-readable storage medium of claim 13, wherein each of the plurality of copies of the serial bit stream is transmitted over a different communication channel.
15. The computer-readable storage medium of claim 14, 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.
16. The computer-readable storage medium of any of claims 13-15, wherein the aligning comprises arranging the data packets received within a time window in columns of an alignment score matrix, wherein each row in the matrix represents one of the copies of the serial bit stream, based at least in part on the data packet similarities.
17. The computer readable storage medium of claim 16, wherein the program instructions are further executable to assign an alignment score to each of the columns based on one of a data packet gap and a data packet mismatch in the columns.
18. The computer-readable storage medium of claim 16, wherein, with respect to each column of the matrix, the selecting is based at least in part on a consensus of data packet similarity determinations for a majority of data packets in the column.
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 2019-12-02
US16/699,786 US11546615B2 (en) 2018-03-22 2019-12-02 Packetized data communication over multiple unreliable channels
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 CN115023928A (en) 2022-09-06
CN115023928B true 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 (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7707349B1 (en) * 2006-06-26 2010-04-27 Marvell International Ltd. USB isochronous data transfer for a host based laser printer
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

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7801132B2 (en) * 1999-11-09 2010-09-21 Synchrodyne Networks, Inc. Interface system and methodology having scheduled connection responsive to common time reference
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
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
US7852792B2 (en) * 2006-09-19 2010-12-14 Alcatel-Lucent Usa Inc. Packet based echo cancellation and suppression
US8873557B2 (en) * 2011-04-08 2014-10-28 Gigamon Inc. Systems and methods for packet de-duplication
US9860614B2 (en) * 2015-05-13 2018-01-02 Huawei Technologies Co., Ltd. System and method for hybrid photonic electronic switching
WO2019213898A1 (en) * 2018-05-10 2019-11-14 Apple Inc. Synchronization control for packet data convergence protocol (pdcp) duplicate transmissions

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7707349B1 (en) * 2006-06-26 2010-04-27 Marvell International Ltd. USB isochronous data transfer for a host based laser printer
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

Also Published As

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

Similar Documents

Publication Publication Date Title
CN107819828B (en) Data transmission method and device, computer equipment and storage medium
KR102133930B1 (en) Apparatus and method for transmitting and receiving data packet
CN101803263B (en) Scalable error detection and cross-session timing synchronization for packet-switched transmission
KR101298640B1 (en) Method and apparatus for transmitting transport stream packets
US20100050058A1 (en) Method and device for transmitting and receiving data packets
CN108631873B (en) Method and device for transmitting and receiving network management information, transmitting equipment and receiving equipment
US10218821B2 (en) Apparatus and method of transmitting and receiving packet in a broadcasting and communication system
US11876723B2 (en) Method and apparatus for transmitting and receiving packet in communication system
JP4068545B2 (en) Packet receiving method and apparatus
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
US9667756B2 (en) Apparatus and method for transmitting/receiving data in communication system
US10574424B2 (en) Transmission bandwidth improvements for DVB-S2X channel bonding
US11546615B2 (en) Packetized data communication over multiple unreliable channels
KR20150046700A (en) Scheme for transmitting and receiving packets in communication system using error correcting codes
US20170103727A1 (en) Method, system and apparatus for transmitting intelligent information
EP2449708A1 (en) A method, apparatuses and service for media transmission
CN102255690A (en) Method for decoding fountain codes based on 2 and 3 degrees of coding packets
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
CN117614851A (en) VoIP hidden channel construction method, system and medium based on data packet length
JP2005223682A (en) Transmission/reception system, transmitter and transmitting method, receiver and receiving method, transmitter/receiver and transmitting/receiving method, and program
GB2554370A (en) Method for operating a reception device in a system using multi-copy transmission

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