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

Packetized data communication over multiple unreliable channels Download PDF

Info

Publication number
KR20220136343A
KR20220136343A KR1020227021739A KR20227021739A KR20220136343A KR 20220136343 A KR20220136343 A KR 20220136343A KR 1020227021739 A KR1020227021739 A KR 1020227021739A KR 20227021739 A KR20227021739 A KR 20227021739A KR 20220136343 A KR20220136343 A KR 20220136343A
Authority
KR
South Korea
Prior art keywords
data packet
network
bit stream
serial bit
copies
Prior art date
Application number
KR1020227021739A
Other languages
Korean (ko)
Inventor
우리 아브니
이스라엘 드로리
Original Assignee
지아이엑스아이, 엘엘씨
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 지아이엑스아이, 엘엘씨 filed Critical 지아이엑스아이, 엘엘씨
Publication of KR20220136343A publication Critical patent/KR20220136343A/en

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

방법은 : 데이터 패킷들의 시퀀스를 포함하는 직렬 비트 스트림의 복수의 복사본들을 수신하는 단계; 순차적 시간 윈도우들에 기초하여 직렬 비트 스트림의 복사본들 각각을 연속적으로 분할하는 단계; 시간 윈도우들 각각에 대해, 데이터 패킷 유사도에 적어도 부분적으로 기초하여, 시간 윈도우 내에서 수신된 직렬 비트 스트림의 복사본들 각각과 연관된 데이터 패킷들을 정렬하는 단계; 데이터 패킷들의 시퀀스에서 다음 데이터 패킷을 나타내는 것으로서 정렬된 데이터 패킷들 중 적어도 하나를 선택함으로써 직렬 비트 스트림을 실시간으로 재생성하는 단계를 포함한다.The method includes: receiving a plurality of copies of a serial bit stream comprising a sequence of data packets; successively partitioning each of the copies of the serial bit stream based on sequential time windows; aligning, for each of the time windows, data packets associated with each of the copies of the received serial bit stream within the time window based at least in part on the data packet similarity; and regenerating the serial bit stream in real time by selecting at least one of the ordered data packets as representing a next data packet in the sequence of data packets.

Figure P1020227021739
Figure P1020227021739

Description

다수의 신뢰할 수 없는 채널을 통한 패킷화된 데이터 통신 Packetized data communication over multiple unreliable channels

관련 출원에 대한 상호 참조CROSS-REFERENCE TO RELATED APPLICATIONS

본 출원은 "PACKETIZED DATA COMMUNICATION OVER MULTIPLE UNRELIABLE CHANNELS"라는 제목으로 2019년 12월 2일에 출원된 미국 특허 출원 제16/699,786호 의 우선권의 이익을 주장하고, 이는 "SYSTEM AND METHOD FOR COMMUNICATING DATA"라는 제목으로 2019년 3월 20일에 출원된 미국 특허 출원 제16/359,016호의 일부 계속 출원(continuation-in-part)이며, 이의 내용은 그 전체가 본 명세서에 참고로 통합된다.This application claims the benefit of priority of U.S. Patent Application Serial No. 16/699,786, filed December 2, 2019, entitled "PACKETIZED DATA COMMUNICATION OVER MULTIPLE UNRELIABLE CHANNELS," which is entitled "SYSTEM AND METHOD FOR COMMUNICATING DATA." It is a continuation-in-part of U.S. Patent Application No. 16/359,016, filed March 20, 2019, with the title of which is incorporated herein by reference in its entirety.

발명의 분야 field of invention

본 발명은 전반적으로 데이터 통신에 관한 것이다. 보다 구체적으로, 본 발명은 데이터를 통신하기 위해 몇몇 신뢰할 수 없는 통신 채널(unreliable communication channel)들을 사용하는 것에 관한 것이다.The present invention relates generally to data communication. More particularly, the present invention relates to using several unreliable communication channels to communicate data.

패킷화된 네트워크들을 통해 데이터를 발송할 때, 일부 패킷들이 드롭(drop)되거나 손상되어 도착할 수 있다. 일반적으로, 패킷화된 네트워크(packetized network) 또는 채널은 발신될 콘텐츠를 패킷들 또는 메시지들로 분할하는 것, 패킷들 또는 메시지들을 발송하는 것, 및 패킷들에 기초하여 수신단(receiving end)에 의해 콘텐츠를 재구성하는 것에 관련될 수 있다.When sending data over packetized networks, some packets may arrive dropped or corrupted. In general, a packetized network or channel divides content to be sent into packets or messages, sends the packets or messages, and, based on the packets, by a receiving end It may relate to reorganizing the content.

패킷들의 손실 또는 손상을 극복하기 위해, 일부 공지된 시스템들 및 방법들은 일부 또는 심지어 모든 패킷들을 한번 이상 발송한다. 그러나, 동일한 데이터를 한번 이상 발송하는 것은 일반적으로 에러를 극복하기 위한 낭비적인 방법이다. 다른 방법들, 예를 들어, 순방향 에러 정정(FEC)은 제한된 수의 에러들을 검출하는 것을 가능하게 하고, 수신기가 일부 에러들을 정정하는 것을 추가로 가능하게 할 수 있지만, 이러한 방법들은 증가된 계산 자원들 및 발송기 복잡도의 비용을 수반한다.To overcome loss or corruption of packets, some known systems and methods send some or even all packets more than once. However, sending the same data more than once is generally a wasteful way to overcome errors. Although other methods, for example forward error correction (FEC), make it possible to detect a limited number of errors and may further enable the receiver to correct some errors, these methods increase computational resources costs and sender complexity.

스트림(stream) 복사 및 FEC 방법들 둘 모두는 시퀀스 번호들 또는 다른 식별자들을 패킷들과 연관시키고, 식별자들을 사용하여 올바른(또는 원래) 순서 또는 시퀀스에 따라 패킷들의 스트림을 재구성한다. 그러나, 이러한 방법들은 패킷들이 넘버링되거나 시퀀싱되지 않을 때 부적절하다.Both stream copy and FEC methods associate sequence numbers or other identifiers with packets and use the identifiers to reconstruct the stream of packets according to the correct (or original) order or sequence. However, these methods are inadequate when packets are not numbered or sequenced.

관련 기술의 전술한 예들 및 이와 관련된 제한들은 예시적이며 배타적인 것이 아닌 것으로 의도된다. 관련 기술의 다른 제한들은 명세서의 판독 및 도면들의 연구에 따라 당업자에게 명백해질 것이다.The foregoing examples of the related art and the limitations associated therewith are intended to be illustrative and not exhaustive. Other limitations of the related art will become apparent to those skilled in the art upon reading the specification and studying the drawings.

이하의 실시예들 및 이들의 양태들은, 범위에서의 제한이 아니라 대표적이고 예시적이도록 의도되는 시스템들, 툴(tool)들 및 방법들과 함께 설명되고 예시된다.The following embodiments and aspects thereof are described and illustrated in conjunction with systems, tools, and methods that are intended to be representative and illustrative, and not limiting in scope.

일 실시예에서, 방법이 제공되고, 상기 방법은 : 직렬 비트 스트림(serial bit stream)의 복수의 복사본(duplicate)들을 수신하는 단계 - 상기 직렬 비트 스트림은 데이터 패킷들의 시퀀스를 포함함-; 순차적 시간 윈도우(time window)들에 기초하여 상기 직렬 비트 스트림의 상기 복사본들 각각을 연속적으로 분할하는 단계; 상기 시간 윈도우들 각각에 대해, 상기 데이터 패킷 유사도(packet similarity)에 적어도 부분적으로 기초하여, 상기 시간 윈도우 내에서 수신된 상기 직렬 비트 스트림의 상기 복사본들 각각과 연관된 상기 데이터 패킷들을 정렬하는 단계; 상기 데이터 패킷들의 시퀀스에서 다음 데이터 패킷(next data packet)을 나타내는 것으로서 상기 정렬된 데이터 패킷들 중 적어도 하나를 선택함으로써 상기 직렬 비트 스트림을 실시간으로 재생성하는 단계(recreating)를 포함한다.In one embodiment, a method is provided, the method comprising: receiving a plurality of duplicates of a serial bit stream, the serial bit stream comprising a sequence of data packets; successively partitioning each of the copies of the serial bit stream based on sequential time windows; aligning, for 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 the data packet similarity; and recreating the serial bit stream in real time by selecting at least one of the sorted data packets as representing a next data packet in the sequence of data packets.

일 실시예에서, 시스템이 또한 제공되고, 상기 시스템은 적어도 하나의 하드웨어 프로세서; 및 프로그램 코드가 내장된 비일시적 컴퓨터 판독 가능 저장 매체(non-transitory computer readable storage medium)를 포함하고, - 상기 프로그램 코드는 상기 적어도 하나의 하드웨어 프로세서에 의해 : 직렬 비트 스트림의 복수의 복사본들을 수신하고, 상기 직렬 비트 스트림은 데이터 패킷들의 시퀀스를 포함하고, 순차적 시간 윈도우들에 기초하여 상기 직렬 비트 스트림의 상기 복사본들 각각을 연속적으로 분할하고, 상기 시간 윈도우들 각각에 대해 데이터 패킷 유사도에 적어도 부분적으로 기초하여 상기 시간 윈도우 내에서 수신된 상기 직렬 비트 스트림의 상기 복사본들 각각과 연관된 상기 데이터 패킷들을 정렬하고, 상기 데이터 패킷들의 시퀀스에서 다음 데이터 패킷을 나타내는 것으로서 상기 정렬된 데이터 패킷들 중 적어도 하나를 선택함으로써 상기 직렬 비트 스트림을 실시간으로 재생성하도록 실행가능하다.In one embodiment, a system is also provided, the system comprising: at least one hardware processor; and a non-transitory computer readable storage medium having program code embedded therein, wherein the program code is configured by the at least one hardware processor to: receive a plurality of copies of a serial bit stream , wherein the serial bit stream comprises a sequence of data packets, and sequentially partitions each of the copies of the serial bit stream based on sequential time windows, wherein the data packet similarity for each of the time windows is at least in part sort the data packets associated with each of the copies of the serial bit stream received within the time window based on the selection of at least one of the sorted data packets as representing a next data packet in the sequence of data packets to regenerate the serial bit stream in real time.

일 실시예에서, 컴퓨터 프로그램 제품이 추가로 제공되고, 상기 컴퓨터 프로그램 제품은 프로그램 명령들이 내장된 비일시적 컴퓨터 판독가능 저장 매체를 포함하고, 상기 프로그램 명령들은 적어도 하나의 하드웨어 프로세서에 의해 : 직렬 비트 스트림의 복수의 복사본을 수신하고, 상기 직렬 비트 스트림은 데이터 패킷의 시퀀스를 포함하고; 순차적 시간 윈도우들에 기초하여 상기 직렬 비트 스트림의 상기 복사본들 각각을 연속적으로 분할하고; 상기 시간 윈도우들 각각에 대해, 데이터 패킷 유사도에 적어도 부분적으로 기초하여, 상기 시간 윈도우 내에서 수신된 상기 직렬 비트 스트림의 상기 복사본들 각각과 연관된 상기 데이터 패킷들을 정렬하고; 및 상기 데이터 패킷들의 시퀀스에서 다음 데이터 패킷을 나타내는 것으로서 상기 정렬된 데이터 패킷들 중 적어도 하나를 선택함으로써 상기 직렬 비트 스트림을 실시간으로 재생성하도록 실행가능하다.In one embodiment, there is further provided a computer program product, the computer program product comprising a non-transitory computer readable storage medium having program instructions embodied therein, the program instructions being executed by at least one hardware processor: a serial bit stream receive a plurality of copies of, the serial bit stream comprising a sequence of data packets; successively partition each of the copies of the serial bit stream based on sequential time windows; align, for 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 regenerate the serial bit stream in real time by selecting at least one of the ordered data packets as representing a next data packet in the sequence of data packets.

제15항의 컴퓨터 프로그램 제품에 있어서, 상기 직렬 비트 스트림의 상기 복수의 복사본들 각각은 : 사설 IP 네트워크, 공중(public) IP 네트워크, 인터넷, GSM(Global System for Mobile Communications) 네트워크, 근거리 통신망(LAN : local area network : metropolitan area network), 도시권 네트워크(MAN), 광역 네트워크(WAN : wide area network), 무선 네트워크, 위성 통신 네트워크, 셀룰러 통신 네트워크, 블루투스 통신 채널, 및 Wi-Fi 네트워크로 구성된 그룹으로부터 선택된 상이한 통신 채널을 통해 송신된다.16. The computer program product of claim 15, wherein each of said plurality of copies of said serial bit stream comprises: a private IP network, a public IP network, the Internet, a Global System for Mobile Communications (GSM) network, a local area network (LAN: local area network: selected from the group consisting of 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. transmitted through different communication channels.

일부 실시예들에서, 상기 직렬 비트 스트림의 복수의 복사본들 각각은 상이한 통신 채널을 통해 송신된다.In some embodiments, each of the plurality of copies of the serial bit stream is transmitted over a different communication channel.

일부 실시예들에서, 통신 채널들 각각은 : 사설 IP 네트워크, 공중 IP 네트워크, 인터넷, GSM(Global System for Mobile Communications) 네트워크, 근거리 통신망(LAN), 도시권 네트워크(MAN), 광역 네트워크(WAN), 무선 네트워크, 위성 통신 네트워크, 셀룰러 통신 네트워크, 블루투스 통신 채널, 및 Wi-Fi 네트워크로 구성된 그룹으로부터 선택된다In some embodiments, each of the communication channels is: 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), is selected from the group consisting of a wireless network, a satellite communication network, a cellular communication network, a Bluetooth communication channel, and a Wi-Fi network.

일부 실시예들에서, 정렬하는 단계는 상기 데이터 패킷 유사도에 적어도 부분적으로 기초하여, 정렬 스코어 행렬(alignment score matrix)의 열(column)들에서 시간 윈도우 내에 수신된 상기 데이터 패킷들을 정렬하는 단계를 포함하며, 상기 행렬 내의 각각의 행(row)은 상기 직렬 비트 스트림의 상기 복사본들 중 하나를 나타낸다.In some embodiments, aligning comprises aligning the data packets received within a time window in columns of an alignment score matrix based at least in part on the data packet similarity. and each row in the matrix represents one of the copies of the serial bit stream.

일부 실시예들에서, 상기 방법은 상기 열 내의 데이터 패킷 갭(data packet gap)들 및 데이터 패킷 불일치(data packet mismatch)들 중 하나에 기초하여 상기 열들 각각에 정렬 스코어를 할당하는 단계를 더 포함하고, 상기 프로그램 명령들은 상기 정렬 스코어를 할당하도록 추가로 실행 가능하다. In some embodiments, the method further comprises assigning an alignment score to each of the columns based on one of data packet gaps and data packet mismatches in the column; , the program instructions are further executable to assign the alignment score.

일부 실시예들에서, 상기 행렬의 각각의 열에 관하여, 상기 선택하는 단계는 적어도 부분적으로, 상기 열 내의 다수의 데이터 패킷들의 데이터 패킷 유사도에 의해 결정된 컨센서스(consensus)에 기초한다. In some embodiments, for each column of the matrix, the selecting is based, at least in part, on a consensus determined by a data packet similarity of a plurality of data packets in the column.

일부 실시예들에서, 데이터 패킷 유사도는 데이터 패킷 콘텐츠의 비교에 적어도 부분적으로 기초하여 결정되고, 상기 데이터 패킷 콘텐츠는 해시 함수(hash function)에 의해 표현된다.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, additional aspects and embodiments will become apparent by reference to the drawings and study of the following detailed description.

본 개시의 실시예들의 비 제한적인 예들은 본 단락 다음에 나열되는 본 명세서에 첨부된 도면들을 참조하여 아래에서 설명된다. 두 개 이상의 도면에 나타나는 동일한 특징부는 일반적으로 해당 특징부가 나타나는 모든 도면에서 동일한 레이블로 표시된다. 도면에서 본 개시의 일 실시예의 주어진 특징부를 나타내는 아이콘을 라벨링하는 라벨은 주어진 특징부를 참조하기 위해 사용될 수 있다. 도면들에 도시된 특징부들의 치수들은 제시의 편의성 및 명확성을 위해 선택되고, 반드시 축척에 맞도록 도시되는 것은 아니다. 예를 들어, 엘리먼트들 중 일부의 치수들은 명확성을 위해 다른 엘리먼트들에 비해 과장될 수 있거나, 또는 몇몇 물리적 컴포넌트들이 하나의 기능 블록 또는 엘리먼트에 포함될 수 있다. 또한, 적절한 것으로 간주되는 경우, 도면들 사이에 대응하는 또는 유사한 엘리먼트들을 나타내기 위해 도면 번호들이 반복될 수 있다.
본 발명으로 간주되는 요지는 특별히 지적되고 명세서의 종결 부분에서 명백하게 청구된다. 그러나, 본 발명의 목적, 특징 및 장점과 함께, 구성 및 동작 방법에 대한 양자는 첨부된 도면과 함께 읽을 때 다음의 상세한 설명을 참조하여 가장 잘 이해될 수 있다. 본 발명의 실시예들은 첨부 도면들의 도면들에 제한 없이 예로서 예시되며, 여기서 유사한 도면 번호들은 대응하는, 유사한 또는 유사한 엘리먼트들을 나타낸다.
도 1은 본 발명의 예시적인 실시예들에 따른 시스템의 블록도를 도시한다.
도 2는 본 발명의 예시적인 실시예들에 따른 방법의 흐름도를 도시한다.
Non-limiting examples of embodiments of the present disclosure are described below with reference to the drawings appended hereto listed after this paragraph. The same feature appearing in more than one figure is generally marked with the same label in all figures in which the feature appears. Labels in the drawings labeling icons representing a given feature of an embodiment of the present disclosure may be used to refer to the given feature. Dimensions of features shown in the drawings are chosen for convenience and clarity of presentation, and are not necessarily drawn to scale. For example, the dimensions of some of the elements may be exaggerated relative to other elements for clarity, or some physical components may be included in one functional block or element. Also, where considered appropriate, reference numerals may be repeated between the figures to indicate corresponding or similar elements.
Subject matter considered to be the present invention is particularly pointed out and is expressly claimed at the end of the specification. However, the objects, features and advantages of the present invention, both as to construction and method of operation, may be best understood by reference to the following detailed description when read in conjunction with the accompanying drawings. BRIEF DESCRIPTION OF THE DRAWINGS Embodiments of the invention are illustrated by way of example and not limitation in the drawings of the accompanying drawings in which like reference numerals indicate corresponding, similar or similar elements.
1 shows a block diagram of a system in accordance with exemplary embodiments of the present invention.
2 shows a flowchart of a method according to exemplary embodiments of the present invention.

이하의 상세한 설명에서, 본 발명의 완전한 이해를 제공하기 위해 다수의 구체적인 세부사항들이 제시된다. 그러나, 당업자는 본 발명이 이러한 특정 세부사항 없이 실시될 수 있음을 이해할 것이다. 다른 예들에서, 잘 알려진 방법들, 절차들, 및 컴포넌트들, 모듈들, 유닛들 및/또는 회로들은 본 발명을 모호하게 하지 않기 위해 상세히 설명되지 않았다. 일 실시예에 대하여 설명된 일부 특징부들 또는 엘리먼트들은 다른 실시예들에 대하여 설명된 특징부들 또는 엘리먼트들과 결합될 수 있다. 명확성을 위해, 동일하거나 유사한 특징부들 또는 엘리먼트들의 논의는 반복되지 않을 수 있다.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 in order not to obscure the present invention. Some features or elements described with respect to one embodiment may be combined with features or elements described with respect to other embodiments. For clarity, discussion of the same or similar features or elements may not be repeated.

본 발명의 실시예들이 이와 관련하여 제한되지 않지만, 예를 들어, "프로세싱", "컴퓨팅", "계산", "결정", "수립", "분석", "체크" 등과 같은 용어들을 이용하는 논의들은, 컴퓨터의 레지스터들 및/또는 메모리들 내의 물리적(예를 들어, 전자) 수량들로서 표현된 데이터를 컴퓨터의 레지스터들 및/또는 메모리들 내의 물리적 수량들로서 유사하게 표현된 다른 데이터 또는 동작들 및/또는 프로세스들을 수행하기 위한 명령들을 저장할 수 있는 다른 정보 비일시적 저장 매체로 조작 및/또는 변환하는 컴퓨터, 컴퓨팅 플랫폼, 컴퓨팅 시스템, 또는 다른 전자 컴퓨팅 디바이스의 동작(들) 및/또는 프로세스(들)를 지칭할 수 있다. 본 발명의 실시예들이 이에 한정되는 것은 아니며, 본 명세서에서 사용되는 용어 "복수" 및 "복수의"는 예를 들어, "다수의" 또는 " 둘 이상의"를 포함할 수 있다. 용어 "복수" 또는 "복수"는 명세서 전체에서 둘 이상의 구성 엘리먼트, 디바이스, 엘리먼트, 유닛, 파라미터 등을 설명하는데 사용될 수 있다. 본 명세서에서 사용되는 용어 세트는 하나 이상의 항목을 포함할 수 있다.Although embodiments of the present invention are not limited in this regard, for example, discussions using terms such as “processing”, “computing”, “compute”, “determining”, “establishing”, “analyzing”, “checking”, etc. Data expressed as physical (eg, electronic) quantities in registers and/or memories of a computer are similarly expressed as physical quantities within registers and/or memories of a computer and/or other data or operations and/or operations. or operation(s) and/or process(s) of a computer, computing platform, computing system, or other electronic computing device that manipulates and/or transforms into another information non-transitory storage medium that can store instructions for performing processes can be referred to. The embodiments of the present invention are not limited thereto, and the terms “plurality” and “plurality” used herein may include, for example, “a plurality of” or “two or more”. The term “plurality” or “plurality” may be used throughout the specification to describe two or more constituent elements, devices, elements, units, parameters, and the like. A term set as used herein may include one or more items.

명시적으로 언급되지 않는 한, 본 명세서에 기술된 방법 실시예들은 시간적으로 특정 순서 또는 연대순 시퀀스로 제한되지 않는다. 추가적으로, 설명된 방법 엘리먼트들 중 일부는 동시에, 동일한 시점에, 또는 동시에 발생하거나 수행될 수 있다. 설명된 방법 엘리먼트들 중 일부는 방법의 동작들의 시퀀스 동안 스킵될 수 있거나 또는 반복될 수 있다.Unless explicitly stated, the method embodiments described herein are not limited to a particular order or chronological sequence in time. Additionally, some of the described method elements may occur or be performed concurrently, at the same time, or concurrently. Some of the described method elements may be skipped or repeated during the sequence of operations of the method.

데이터 스트리밍에서의 실시간 에러 복구를 위한 시스템, 방법 및 컴퓨터 프로그램 제품이 개시된다. A system, method, and computer program product are disclosed for real-time error recovery in data streaming.

일부 실시예들에서, 본 개시는 2개 이상의 상이한 통신 루트(route)들 또는 채널들을 통해, 발신기(sender)로부터, 예를 들어, 데이터 패킷들의 형태로, 복사된 직렬화된 데이터 스트림들을 스트리밍하고, 개별 채널들 중 임의의 것에서의 에러들을 정정하기 위해, 복사된 수신된 스트림들로부터 수신기에 의해 데이터 패킷들을 끊김없이(seamlessly) 재구성하는 것을 제공한다.In some embodiments, the present disclosure streams copied serialized data streams, e.g., in the form of data packets, from a sender, over two or more different communication routes or channels, It provides seamlessly reconstructing data packets by a receiver from the copied received streams to correct errors in any of the individual channels.

본 개시는 패킷화된 비디오 스트리밍, 예를 들어 인터넷과 같은 노이즈 및/또는 손실 네트워크를 통한 MPEG 전송 스트림의 영역에서 특히 유용할 수 있다. 따라서, 일부 실시예들에서, 본 개시는 강건한 히트리스 장애 조치(hitless failover) 능력들을 갖는 인터넷을 통한 라이브 브로드캐스트 품질 비디오를 제공할 수 있다.The present disclosure may be particularly useful in the realm of packetized video streaming, for example MPEG transport streams over noisy and/or lossy networks such as the Internet. Accordingly, in some embodiments, the present disclosure may provide live broadcast quality video over the Internet with robust hitless failover capabilities.

일부 실시예들에서, 본 개시는 완전한 채널 장애들을 고려하더라도 데이터를 복구할 수 있고, 그들이 송신하는 페이로드를 수정할 필요 없이 간단한 독립적인 송신 유닛들과 함께 사용될 수 있는 단순하고, 스케일러블(scalable) 프로세스를 제공한다.In some embodiments, the present disclosure is simple, scalable, capable of recovering data even taking into account complete channel failures, and can be used with simple independent transmission units without the need to modify the payload they transmit. provide the process.

일부 실시예들에서, 다수의 루트들은 다수의 통신 채널들을 통해 복제된 송신 채널들에 의해 생성될 수 있다. 일부 실시예들에서, 예를 들어, 동일한 소스 신호로 튜닝된 상이한 위치들에서 다수의 무선 수신 스테이션(receiving station)들을 사용하여, 브로드캐스팅 매체를 통한 단일 송신을 청취하는 다수의 수신 유닛들을 통해 다수의 루트들이 생성될 수 있다. In some embodiments, multiple routes may be created by replicated transmission channels over multiple communication channels. In some embodiments, multiple receiving units listening for a single transmission over the broadcasting medium, using multiple wireless receiving stations at different locations tuned to the same source signal, for example Roots of can be created.

일부 실시예들에서, 에러 복구는, 예를 들어, 시간 윈도우(time window)들, 도달 시간, 콘텐츠, 및/또는 데이터 패킷들을 정의 및/또는 동기화 및/또는 정렬하기 위한 다른 및/또는 유사한 방법들에 기초하여 여러 통신 채널들을 통해 수신된 데이터 패킷들을 정렬함으로써 달성될 수 있다.In some embodiments, error recovery is another and/or similar method for defining and/or synchronizing and/or aligning, for example, time windows, time of arrival, content, and/or data packets. may be achieved by sorting data packets received over the various communication channels based on the

일부 실시예들에서, 데이터 패킷 정렬은 동일하거나 유사한 패킷들이 정렬되도록, 여러 채널들을 통해 수신된 패킷들을 정렬하는 것을 포함한다. In some embodiments, data packet sorting includes sorting packets received over multiple channels such that identical or similar packets are sorted.

일부 실시예들에서, 데이터 패킷 정렬은 시간 윈도우에서 관측된 패킷 시퀀스들을 가장 잘 설명하는 소스 패킷들의 가장 가능성 있는(most likely) 시퀀스를 선택하는 시퀀스 정렬 알고리즘(sequence alignment algorithm)을 사용하여 수행될 수 있다. 일부 실시예들에서, 시퀀스 정렬은, 동일하거나 유사한 패킷들이 행렬 열들 내에 정렬되는 방식으로, 패킷들 사이에 가능한 갭들을 갖는 행렬 행들 내에 패킷 시퀀스들을 정렬하는 방법이다.In some embodiments, data packet alignment may be performed using a sequence alignment algorithm that selects the most likely sequence of source packets that best describes the observed packet sequences in a time window. have. In some embodiments, sequence alignment is a method of arranging packet sequences within matrix rows with possible gaps between packets in such a way that identical or similar packets are ordered within matrix columns.

일부 실시예들에서, 패킷 정렬은 채널들 중 하나 이상에서의 패킷 손실을 극복하기 위해 사용될 수 있다. 예를 들어, 패킷이 제1 스트림에 존재(또는 표현)하지 않지만 하나 이상의 다른 스트림들에 존재 또는 표현되면, 수신기는 패킷이 제1 스트림에서 손실되었다고 결정할 수 있고, 다른 스트림들에 의해 표현된 패킷을 포함시키기 위해 선택할 수 있다. 따라서, 예를 들어 정렬될 때, 제1 채널로부터 수신된 제3 패킷은 제2 채널로부터 수신된 제3 패킷과 정렬될 것이다. 제3 패킷이 다른 채널에서 누락되면, 수신기는 이 패킷이 해당 채널에서 손실되었다고 결정할 수 있고, 재구성된 스트림에 포함시키기 위해 대응하는 제3 패킷들 중 하나를 선택할 수 있다.In some embodiments, packet alignment may be used to overcome packet loss in one or more of the channels. For example, if a packet is not present (or represented) in the first stream but is present or represented in one or more other streams, the receiver may determine that the packet is lost in the first stream, and the packet represented by the other streams may choose to include Thus, for example, when aligned, a third packet received from the first channel will be aligned with a third packet received from the second channel. If the third packet is dropped on the other channel, the receiver may determine that this packet is lost on that channel and may select one of the corresponding third packets for inclusion in the reconstructed stream.

일부 실시예들에서, 일단 정렬이 달성되면, 정렬을 사용하여, 그리고 패킷 손상의 존재 시에 열(column) 내의 컨센서스 패킷(consensus packet)들을 선택함으로써, 대응하는 채널들 내의 대응하는 존재 패킷들로 누락된 패킷들의 갭들을 채우는 통합된 시퀀스(unified sequence)를 생성하는 데 사용될 수 있다. In some embodiments, once alignment is achieved, using alignment, and by selecting consensus packets in a column in the presence of packet corruption, into corresponding existing packets in corresponding channels. It can be used to create a unified sequence that fills in the gaps of missing packets.

일부 실시예들에서, 시간 윈도우 내의 정렬 알고리즘은 정렬에서 갭을 갖는 것 및 (예를 들어, 패킷 손상으로 인한) 불완전한 매칭을 갖는 것에 대한 패널티를 제공하는 스코어링 함수(scoring function)를 최대화한다. 일부 실시예들에서, 긴 갭을 갖는 것에 대한 패널티는 다수의 짧은 갭들을 갖는 것에 대한 패널티보다 더 낮을 수 있어서, IP 네트워크들에서 연속적인 패킷 손실 이벤트들에서의 전형적인 상관(correlation)을 캡처한다.In some embodiments, the alignment algorithm within the time window maximizes a scoring function that provides a penalty for having a gap in alignment and having an incomplete match (eg, due to packet corruption). In some embodiments, the penalty for having a long gap may be lower than the penalty for having multiple short gaps, capturing the typical correlation in successive packet loss events in IP networks.

도 1은 본 발명의 일부 실시예들에 따른, 데이터 스트리밍에서 실시간 에러 복구를 위한 예시적인 시스템(100)을 도시한다. 도시된 바와 같이, 발신기(또는 소스)(110)로부터의 데이터는 네트워크(130)를 통해, 다수의 통신 채널들(140)을 통해 수신기(또는 목적지)(120)로 발송될 수 있다. 발신기(110) 및 수신기(120)는 임의의 적용가능한 컴퓨팅 디바이스, 예를 들어, 서버, 카메라, 스마트폰 또는 홈 컴퓨터일 수 있다. 본 발명의 실시예들은 발신기 또는 소스(110)의 특성 또는 유형에 의해 및/또는 수신기 또는 목적지(120)의 특성 또는 유형에 의해 제한되지 않는다는 것이 인식될 것이다. 명료성 및 단순화를 위해, 단지 하나의 발신기(110) 및 하나의 수신기(120)가 도시되어 있지만, 실시예가 임의의 수의 이러한 노드들을 포함할 수 있다는 것, 예를 들어, 다수의 발신기(110)가 통신 채널들(140)과 유사한 통신 채널들을 통해 수신기(120)에 데이터를 발송할 수 있다는 것이 이해될 것이다. 통신 채널들(140)은 물리적 채널들 또는 루트(route)들일 수 있거나(예를 들어, 경로가 와이어들, 라우터들 등일 수 있거나 이들을 포함할 수 있음) 또는 이들이 로직 채널들 또는 루트들(예를 들어, UDP(user datagram protocol) 연결)일 수 있거나 또는 물리적 채널과 로직 채널의 조합일 수 있다.1 depicts an exemplary system 100 for real-time error recovery in data streaming, in accordance with some embodiments of the present invention. As shown, data from a sender (or source) 110 may be sent over a network 130 , to a receiver (or destination) 120 over a number of communication channels 140 . Transmitter 110 and receiver 120 may be any applicable computing device, eg, a server, camera, smartphone, or home computer. It will be appreciated that embodiments of the present invention are not limited by the nature or type of sender or source 110 and/or by the nature or type of receiver or destination 120 . For clarity and simplicity, only one transmitter 110 and one receiver 120 are shown, it is understood that embodiments may include any number of such nodes, e.g., multiple transmitters 110 It will be appreciated that may send data to receiver 120 via communication channels similar to communication channels 140 . Communication channels 140 may be physical channels or routes (eg, a path may be or include wires, routers, etc.) or they may be logical channels or routes (eg, For example, it may be a user datagram protocol (UDP) connection) or it may be a combination of a physical channel and a logical channel.

네트워크(130)는 사설 또는 공중 IP 네트워크, 인터넷, 또는 이들의 조합일 수 있거나, 이를 포함할 수 있거나, 또는 그의 일부일 수 있다. 추가적으로 또는 대안적으로, 네트워크(130)는 GSM(global system for mobile communications) 네트워크일 수 있거나, 이를 포함하거나 또는 그 일부일 수 있다. 예를 들어, 네트워크(130)는 인터넷과 같은 IP 네트워크, GSM 관련 네트워크 및 당업계에 공지된 이런 네트워크들을 브리징(bridging)하거나 다른 방식으로 연결하기 위한 임의의 장비를 포함하거나 구성할 수 있다. 네트워크(130)는 공중 또는 사설 데이터 네트워크, 근거리 네트워크(LAN), 도시권 네트워크(MAN), 광역 네트워크(WAN), 유선 또는 무선 네트워크, 위성 통신 네트워크, 셀룰러 통신 네트워크, 선행하는 및/또는 임의의 다른 적절한 통신 수단의 임의의 조합일 수 있거나, 이를 포함하거나 그 일부일 수 있다. 따라서, 네트워크(130)의 다수의 엘리먼트들(예를 들어, 액세스 포인트들, 기지국들, 통신 위성들, GPS 위성들, 라우터들 및 전화 스위치들)이 암시되지만 도시되지 않는다. 본 발명의 실시예들은 네트워크(130)의 성질 또는 유형에 의해 제한되지 않는다는 것이 인식될 것이다.Network 130 may be, include, or be part of, a private or public IP network, the Internet, or a combination thereof. Additionally or alternatively, network 130 may be, include, or be part of a global system for mobile communications (GSM) network. For example, network 130 may include or constitute IP networks such as the Internet, GSM-related networks, and any equipment for bridging or otherwise connecting such networks known in the art. Network 130 may be 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, preceding and/or any other It may be any combination of, include, or be part of any suitable communication means. Accordingly, multiple elements of network 130 (eg, access points, base stations, communication satellites, GPS satellites, routers, and telephone switches) are implied but not shown. It will be appreciated that embodiments of the present invention are not limited by the nature or type of network 130 .

일 실시예는 발신기로부터, 둘 이상의 상이한 루트들 또는 채널들을 사용하여 데이터 패킷들을 스트리밍하고, 수신기에 의해 데이터 패킷들을 끊김없이 재구성함으로써 에러 복구(error recovery)를 제공할 수 있다. 일반적으로, 패킷들의 원래의 스트림(발신기, 예를 들어, 발신기(110)에 의해 전송된 것)은 다수의 복사된 수신된 스트림들에 기초하여 수신기(예를 들어, 수신기(120))에 의해 재구성된다. 실시예는 패킷 시퀀스 번호 또는 다른 순서 정보가 이용가능하지 않은 경우에도 원본 스트림을 정확하게 재구성할 수 있음에 유의한다.One embodiment may provide error recovery by streaming data packets from the sender using two or more different routes or channels and seamlessly reconstructing the data packets by the receiver. In general, the original stream of packets (sent by an originator, eg, originator 110) is transmitted by a receiver (eg, receiver 120) based on a number of copied received streams. is reconstructed Note that embodiments can accurately reconstruct the original stream even when packet sequence numbers or other ordering information is not available.

다수의 루트들은 복제된 송신이거나, 또는 예를 들어, 동일한 소스 신호로 튜닝된 상이한 위치들에 있는 다수의 무선 수신 스테이션들을 사용하여, 브로드캐스팅 매체를 통한 단일 송신을 청취하는 다수의 수신 유닛들일 수 있다. 설명된 바와 같이, 루트들은 물리적 및/또는 로직 루트들일 수 있다.The multiple routes may be a replicated transmission, or multiple receiving units listening for a single transmission over the broadcasting medium, using, for example, multiple wireless receiving stations at different locations tuned to the same source signal. have. As described, routes may be physical and/or logical routes.

일부 실시예들에서, 수신기(120)는 시간 윈도우들 또는 시간 간격들에 따라 패킷들을 정렬한다. 예를 들어, 패킷들의 스트림들은 예를 들어, 50 밀리초의 시간 간격들로 복수의 채널들로부터 수신된다. 따라서, 예를 들어, 시간 간격 10:00:00:00(HR:MIN:SEC:MILL)로부터 10:00:00:50까지 수신된 패킷들이 정렬되고, 그런 다음 10:00:00:51부터 10:00:00:100까지의 시간 간격 동안 복수의 채널들로부터 수신된 패킷들의 스트림들이 정렬되는 등이다. 시간 및/또는 시간 슬롯들, 간격들 또는 윈도우들을 정의 및/또는 동기화하기 위한 임의의 기술 또는 메커니즘이 사용될 수 있다. 시간 제한 윈도우에서 패킷을 정렬하는 것은 스트림을 실시간(vs. 오프라인)으로 계속 재구성할 수 있으며, 계산 복잡성을 감소시킨다. 정렬에 기초하여, 수신기는 발신기에 의해 발송된, 원래 시퀀스일 가능성이 가장 큰 패킷들의 시퀀스를 선택한다.In some embodiments, receiver 120 orders packets according to time windows or time intervals. For example, streams of packets are received from a plurality of channels at time intervals of, for example, 50 milliseconds. So, for example, packets received from time interval 10:00:00:00(HR:MIN:SEC:MILL) to 10:00:00:50 are sorted, and then from 10:00:00:51 Streams of packets received from multiple channels during the time interval up to 10:00:00:100 are sorted, and so on. Any technique or mechanism for defining and/or synchronizing time and/or time slots, intervals or windows may be used. Sorting packets in a time-limited window allows the stream to be continuously reconstructed in real-time (vs. offline), reducing computational complexity. Based on the alignment, the receiver selects the sequence of packets sent by the sender that is most likely to be the original sequence.

일반적으로, 본 명세서에 언급된 정렬(alignment) 또는 시퀀스 정렬(sequence alignment)은 여러 채널들을 통해 수신된 패킷들을 행렬로 정렬하는 것을 포함하며, 여기서 각각의 채널 스트리밍은 행렬 행(row)으로 표현되어, 동일하거나 유사한 패킷들이 별개의 행렬 열(column)들로 정렬된다. 예를 들어, 정렬될 때, 제1 채널(140)로부터 수신된 제3 패킷(현재 시간 윈도우에서)은 제2 채널(140)로부터 수신된 제3 패킷과 동일한 열에 있다. 동일한 패킷이, 예를 들어, 2개의 별개의 행들(각각은 각각의 채널을 표현함)에서 나타나지만, 제3 행(제3 채널을 표현함)에서 누락되는 경우, 수신기는 패킷이 제3 채널에서 손실되었거나 드롭되었다고 결정할 수 있고, 2개의 다른 행들에서 나타나는 패킷들 중 하나는 재구성된 스트림에 포함시키기 위해 선택될 수 있다.In general, the alignment or sequence alignment referred to herein involves aligning packets received over multiple channels into a matrix, where each channel streaming is represented by a matrix row. , the same or similar packets are arranged in separate matrix columns. For example, when sorted, 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, for example, in two separate rows (each representing a respective channel) but is missing in a third row (representing a third channel), the receiver indicates that the packet was lost on the third channel or It may be determined that it has been dropped, and one of the packets appearing in two different rows may be selected for inclusion in the reconstructed stream.

일부 실시예들에서, 패킷들의 실제 콘텐츠가 정렬 프로세스에서 사용될 수 있다. 예를 들어, 해시(hash) 또는 다른 함수가 패킷들의 콘텐츠를 표현하기 위해 사용될 수 있고, 정렬은, 예를 들어, 해시 값을 비교함으로써, 동일한 열 내의 패킷들이 동일한 콘텐츠를 갖는지 여부를 체크하는 것을 포함할 수 있다. 예를 들어, 재구성된 스트림에 포함하기 위한 패킷은 패킷의 동일한 콘텐츠를 포함하는 다수의 행들에 기초하여 선택될 수 있다. 예를 들어, (수신기(120)에 의해) 여러 행들(각각의 여러 스트림들을 표현함) 내의 열(column) 6의 패킷의 콘텐츠가 동일하고, 추가적인 스트림을 표현하는 단일 행 내의 열 6의 패킷의 콘텐츠와 상이하다고 결정되면, 수신기는 추가적인 스트림 내의 패킷이 전송 중에 손상되었고 무시될 수 있음을 추론할 수 있다. 따라서, 수신기는 몇몇 스트림들 중 임의의 스트림으로부터 재구성된 스트림에 포함시키기 위해 6개의 동일한 스트림들 내의 패킷들 중 하나를 선택할 수 있다.In some embodiments, the actual contents of the packets may be used in the sorting process. For example, a hash or other function may be used to represent the contents of packets, and sorting is to check whether packets in the same column have the same content, for example by comparing hash values. may include For example, a packet for inclusion in the reconstructed stream may be selected based on multiple rows containing the same content of the packet. For example, the content of the packet in column 6 in several rows (representing each of the different streams) is the same (by receiver 120), and the content of the packet in column 6 in a single row representing an additional stream is the same. If determined to be different from , the receiver can infer that packets in the additional stream are corrupted in transit and can be ignored. Thus, the receiver can select one of the packets in six identical streams for inclusion in the reconstructed stream from any of several streams.

일 실시예는 패킷 손실을 극복하기 위해 설명된 정렬을 사용할 수 있다. 예를 들어, 제1 스트림을 나타내는 제1 행/열 쌍에 패킷이 존재하지(또는 표현되지) 않지만 패킷들이 하나 이상의 다른 스트림들의 동일한 열에 존재하거나 표현되면, 수신기는 패킷이 제1 스트림에서 손실되거나 드롭되었다고 결정할 수 있고, 다른 스트림들에 의해 표현된 패킷을 포함시키기 위해 선택할 수 있다.One embodiment may use the alignment described to overcome packet loss. For example, if a packet is not present (or not represented) in the first row/column pair representing the first stream, but the packets are present or represented in the same column of one or more other streams, then the receiver indicates that the packet is lost in the first stream or It may determine that it has been dropped, and may choose to include packets represented by other streams.

일부 실시예들에서, 수신기는 정렬 프로세스에서 스코어링 함수(scoring function) 및/또는 임계치를 사용할 수 있다. 예를 들어, 설명된 바와 같이 행렬로 패킷들을 배열하면, 스코어링 함수는 갭들에 기초하여 및/또는 콘텐츠 불일치(content mismatch)에 기초하여 시간 윈도우에 대한 값을 계산할 수 있다. 예를 들어, 갭은 설명된 바와 같이 열 내의 패킷의 부재일 수 있고, 불일치는 설명된 바와 같이 동일한 열 내의 상이한 콘텐츠일 수 있다. 일부 실시예들에서, 스코어링 함수 및/또는 임계치는 스트림들의 개별 세트의 패킷들의 세트의 정렬이 달성되는지 여부를 결정하기 위해 사용된다.In some embodiments, the receiver may use a scoring function and/or threshold in the alignment process. For example, arranging the packets in a matrix as described, the scoring function may calculate a value for the time window based on gaps and/or based on content mismatch. For example, a gap may be the absence of a packet within a column as described, and a discrepancy may be different content within the same column as described. In some embodiments, a scoring function and/or threshold is used to determine whether alignment of the set of packets of the respective set of streams is achieved.

임의의 스코어링 함수, 알고리즘 또는 로직은 본 발명의 범위를 벗어나지 않고 스트림들 또는 채널들의 개개의 세트로부터 수신된 패킷 시퀀스들의 세트를 정렬하기 위해 사용될 수 있다. 본 명세서에서 논의되는 특정 알고리즘은 사용될 수 있는 정렬 알고리즘의 단지 일례라는 것이 이해될 것이다.Any scoring function, algorithm or logic may be used to order a set of packet sequences received from a respective set of streams or channels without departing from the scope of the present invention. It will be understood that the specific algorithms discussed herein are only examples of sorting algorithms that may be used.

일부 실시예들에서, 정렬 알고리즘은 2개의 패킷들의 페이로드(payload)를 비교하기 위한/비교할 때 패킷 유사도 스코어, 및 패킷들 사이의 갭을 삽입(또는 표현)하기 위한 스코어(또는 패널티(penalty))를 사용한다. 일부 실시예들에서, 유사도 함수는 통신 채널의 확률적 속성들을 고려하여, 관측된 패킷들의 값들이 주어지면 소스 패킷들이 동일할 가능성 또는 확률에 의존한다. 예를 들어, 채널들이 소거 채널들인 경우(드롭된 패킷들이 가능하고, 손상된 패킷들이 아닌 경우), 스코어링 함수는 비교된 패킷들의 페이로드들이 동일한 경우 1, 패킷과 갭(패킷 손실의 가능성을 나타냄)을 비교할 때 0, 그리고 패킷들이 유사하지 않은 경우 마이너스 무한대(패킷 손상 불가능의 가능성을 나타냄)를 리턴하는 스코어링 함수일 수 있다. 패킷 비트 플립(bit flip)들이 관련 채널들에서 가능하다면(예를 들어, 0이 1이 되면), 패킷 유사도는 패킷 페이로드들 사이의 해밍 거리(Hamming distance), 즉 제1 패킷의 페이로드가 제2 패킷의 페이로드와 얼마나 다른지에 의존할 수 있다.In some embodiments, the sorting algorithm performs a packet similarity score for comparing/when comparing the payload of two packets, and a score (or penalty) for inserting (or representing) a gap between packets. ) is used. 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 properties of the communication channel. For example, if the channels are erased channels (dropped packets are possible and not corrupted packets), the scoring function is 1 if the payloads of the compared packets are equal, packet and gap (indicating the probability of packet loss). may be a scoring function that returns 0 when comparing ? If packet bit flips are possible in the relevant channels (eg 0 becomes 1), then the packet similarity is the Hamming distance between the packet payloads, i.e. the payload of the first packet is It may depend on how different it is from the payload of the second packet.

간략화 및 명확화를 위해, 2개의 스트림들로부터 수신된 패킷들의 2개의 시퀀스들을 정렬하는 단순화된 경우가 본 명세서에서 설명된다. 일반적으로, 패킷 시퀀스들을 정렬하고 원래의(소스) 패킷 시퀀스를 결정 또는 식별하는 방법은 동적 프로그래밍 접근법을 사용하여 시퀀스들의 정렬에 대한 스코어 함수(score function)를 최대화하는 방식으로 2개의 시퀀스들을 다른 것 위에 하나를 정렬한다.For simplicity and clarity, a simplified case of aligning two sequences of packets received from two streams is described herein. In general, a method of aligning packet sequences and determining or identifying the original (source) packet sequence uses a dynamic programming approach to separate two sequences in such a way as to maximize a score function for the alignment of the sequences. Sort one on top.

예를 들어, 크기(패킷 수)

Figure pct00001
Figure pct00002
의 S1, S2로 표시된 두 시퀀스의 경우, 본 방법은 크기가
Figure pct00003
인 2차원 행렬 M을 구성한다.For example, size (number of packets)
Figure pct00001
and
Figure pct00002
For the two sequences denoted by S 1 , S 2 , the method has a size
Figure pct00003
to form a two-dimensional matrix M.

유사도 함수가 σ이고, 길이 x의 갭 삽입에 대한 패널티가 Gx라고 가정하면 본 방법은 아래 공식에 따라 행렬 M을 초기화한다:Assuming that the similarity function is σ and the penalty for inserting a gap of length x is G x , the method initializes the matrix M according to the formula:

Figure pct00004
Figure pct00004

위에 표시된 것처럼 행렬 M의 초기화에는 갭으로 정렬을 시작하는 패널티가 포함된다. 나머지 행렬 셀(cell)은 아래와 같이 이전에 계산된 3개의 값 중에서 최대값을 선택하여 채워진다:As shown above, initialization of matrix M includes the penalty of starting sorting with gaps. The remaining matrix cells are filled by selecting the largest of the three previously calculated values as follows:

Figure pct00005
Figure pct00005

상기의 경우, 제1 항은 패킷 S1(i)을 패킷 S2(j)와 일치시킬 때 스코어를 계산하고, 제2 항 및 제3 항은 이전에 계산된 값에 의존하고, 각각 S1(i) 또는 S2(j) 앞에 길이 x의 갭(패킷의 드롭된 시퀀스)을 삽입할 대의 스코어를 나타낸다.In this case, the first term computes a score when matching packet S 1 (i) with packet S 2 (j), and terms 2 and 3 depend on previously calculated values, respectively, S 1 (i) or S 2 (j) represents the score for inserting a gap of length x (dropped sequence of packets) before (j).

설명된 대로 최대값을 사용하여, 행렬 M의 각 Mi,j 셀은 서브세트 S1(1..i)을 S2(1..j)와 정렬하는 최적 스코어를 포함하고, 셀

Figure pct00006
는 최적의 정렬 스코어를 보유한다.Using maxima as described, each M i,j cell of matrix M contains an optimal score that aligns subset S 1 (1..i) with S 2 (1..j),
Figure pct00006
holds the optimal alignment score.

일부 실시예에서, 패킷 시퀀스의 정렬을 구성, 식별 또는 선택하는 것은

Figure pct00007
에서 스코어를 최대화하는 결정을 역추적(backtrack)함으로써 역순으로 수행된다. 당업계에 알려진 바와 같이, 역추적 프로세스에서 동일한 최대 스코어로 이어지는 다중 경로가 있을 수 있다. 여기에 설명된 방법은 M에 대한 최대 스코어를 산출하는 경로를 식별하는 데 사용할 수 있다.In some embodiments, configuring, identifying, or selecting an alignment of a sequence of packets comprises:
Figure pct00007
It is performed in reverse order by backtracking the decision that maximizes the score in . As is known in the art, there may be multiple paths leading to the same maximum score in the traceback process. The method described herein can be used to identify the path that yields the maximum score for M.

예를 들어, 각각의 역추적 단계에서, 방법은 셀 (i,j)에서 스코어를 최대화한 이전 또는 마지막으로 선택한 셀을 기록하거나 찾는다. 효율성을 위해 최대 스코어로 이어진 이전 또는 마지막 셀에 대한 포인터(pointer)는 구성 단계에서 행렬 셀에 저장될 수 있다.For example, at each backtracking step, the method records or finds the previous or last selected cell that maximized the score in cell (i,j). For efficiency, a pointer to the previous or last cell leading to the maximum score may be stored in the matrix cell during the construction phase.

다음으로, 다음 로직에 따라 두 개의 정렬된 시퀀스가 끝에서 시작까지 구성된다 :Next, two sorted sequences are constructed from end to beginning according to the following logic:

Figure pct00008
행렬 셀(i,j)이 행렬 셀(i-1,j-1)로 이동하면, 제1 정렬된 시퀀스에 패킷 S1(i)이 추가되고, 제2 정렬된 시퀀스에 패킷 S2(j)가 추가된다.
Figure pct00008
When matrix cell (i,j) moves to matrix cell (i-1,j-1), packet S 1 (i) is added to the first sorted sequence, and packet S 2 (j) is added to the second sorted sequence ) is added.

Figure pct00009
행렬 셀(i,j)이 셀(i-x,j)로 이동하면, 제1 시퀀스에 패킷 S1(i)이 추가되고, 제2 시퀀스에 길이 x의 갭이 추가된다.
Figure pct00009
When matrix cell (i,j) moves to cell (ix,j), packet S 1 (i) is added to the first sequence, and a gap of length x is added to the second sequence.

Figure pct00010
행렬 셀(i,j)이 셀(i,j-x)로 이동하면, 제1 시퀀스에 길이 x의 갭이 추가되고, 제2 시퀀스에 패킷 S2(j)가 추가된다. 행렬의 에지에 도달하면 프로세스가 종료된다.
Figure pct00010
When matrix cell (i,j) moves to cell (i,jx), a gap of length x is added to the first sequence, and packet S 2 (j) is added to the second sequence. When the edge of the matrix is reached, the process ends.

역추적 프로세스의 출력은 두 개의 패킷 시퀀스로, 하나는 다른 것 위에 있으며 일부 위치에 갭이 있을 수 있다.The output of the traceback process is a sequence of two packets, one above the other, with gaps in some locations.

3개 이상의 시퀀스를 정렬하는 것은 고차원 행렬을 사용하여 유사한 방식으로 수행할 수 있다. 일부 개선이 고려될 수 있으며, 예를 들어, 시퀀스 쌍을 반복적으로 정렬함으로써 보다 빠른 근사 정렬이 달성될 수 있다.Sorting three or more sequences can be done in a similar way using high-dimensional matrices. Some improvements may be considered, for example, faster approximate alignment may be achieved by iteratively aligning sequence pairs.

위에서 설명한 정렬 프로세스의 출력은 검색 윈도우의 모든 시퀀스 간의 컨센서스 시퀀스이다. 컨센서스 시퀀스를 구성하기 위해, 정렬의 각 열에서, 방법은 다수결 투표(majority voting)(또는 비트 단위 다수결 투표)에 의해 가장 가능성이 높은 패킷을 선택한다. 예를 들어, 패킷 길이가 1바이트이고, σ, S1, S2 및 Gx가 아래와 같다고 가정한다:The output of the sorting process described above is the consensus sequence among all sequences in the search window. To construct a consensus sequence, in each column of the sort, the method selects the most probable packet by majority voting (or bitwise majority voting). For example, suppose the packet length is 1 byte, and σ, S 1 , S 2 and G x are:

Figure pct00011
Figure pct00011

이 예시적인 경우, Gx=x이므로 큰 갭을 삽입한 스코어는 다수의 작은 갭을 삽입한 스코어와 동일하다. 따라서 전술한 바와 같이 역추적 프로세스에서 스코어를 계산하기 위해서는, 스코어 행렬을 채울 때와 역추적 프로세스에서 좌측 상단과 대각선 상단 좌측에 바로 이웃하는 셀을 고려하는 것으로 충분하다.In this exemplary case, since G x =x, the score for inserting large gaps is the same as the score for inserting multiple small gaps. Therefore, in order to calculate the score in the tracing process as described above, it is sufficient to consider the cells immediately adjacent to the upper left and the diagonal upper left in the tracing process and when filling the score matrix.

위의 예와 관련하여 설명된 동적 프로그래밍 로직에 따라 초기화되고 채워진 스코어 행렬은 다음과 같다 :A score matrix initialized and populated according to the dynamic programming logic described in connection with the example above is as follows:

Figure pct00012
Figure pct00012

마지막 셀(값-1)에서 역추적하는 것은 현재 셀 스코어를 최대화하는 경로에 따라 위쪽, 왼쪽 또는 대각선 위쪽 및 왼쪽 셀로 이동하는 것을 필요로 한다. 역추적 프로세스에 따라 정렬된 시퀀스는 뒤에서 앞으로 생성되며 다음과 같다:Backtracking from the last cell (value-1) requires moving up, left or diagonally up and left cells depending on the path that maximizes the current cell score. The ordered sequence according to the traceback process is generated from back to front and looks like this:

Figure pct00013
Figure pct00013

정렬된 시퀀스를 기반으로 재구성된 컨센서스 시퀀스는 다음과 같다:The consensus sequence reconstructed based on the sorted sequence is as follows:

Figure pct00014
Figure pct00014

다양한 로직 및 휴리스틱(heuristics)이 사용될 수 있다. 예를 들어, 긴 갭을 갖는 것에 대한 패널티(예를 들어, 설명된 바와 같이 계산된 값을 감소시키는 것)는 다수의 짧은 갭들을 갖는 패널티보다 낮을 수 있고, 따라서, 예를 들어, IP 네트워크들에서의 연속적인 패킷 손실 이벤트들에서의 통상적인 상관들을 보상할 수 있다.Various logic and heuristics may be used. For example, a penalty for having a long gap (eg, reducing a calculated value as described) may be lower than a penalty with multiple short gaps, thus, for example, IP networks can compensate for typical correlations in successive packet loss events in .

논의된 바와 같이, 임의의 스코어링 함수가 본 발명의 범위를 벗어나지 않고 사용될 수 있고, 예를 들어, 다른 실시예들에서, 전술한 바와 같이 스코어를 최대화하기 보다는, 스코어링 함수는 식별된 각각의 갭 또는 불일치에 대한 초기 값을 감소시킬 수 있고, 결과 값이 임계치를 초과하면, 수신기는 적절한 정렬이 달성되었다고(따라서 스트림은 관련 시간 윈도우에 대해 재구성될 수 있음) 결정할 수 있다. 스코어링 함수에 의해 생성된 값이 (예를 들어, 많은 손상되거나 손실된 패킷들로 인해) 임계치 미만이면, 수신기는 스트림이 정확하게 재구성될 수 없다고 결정할 수 있고, 수신기는 추가 액션, 예를 들어, 재송신을 요청하고, 정렬되지 않은 시퀀스들 중 하나를 선택하고, 사용자에게 경고할 수 있다.As discussed, any scoring function may be used without departing from the scope of the present invention, for example, in other embodiments, rather than maximizing the score as described above, the scoring function may be used for each identified gap or The initial value for the discrepancy may be reduced, and if the resulting value exceeds a threshold, the receiver may determine that proper alignment has been achieved (thus the stream may be reconstructed for the relevant time window). If the value generated by the scoring function is below a threshold (eg, due to many corrupted or lost packets), the receiver can determine that the stream cannot be accurately reconstructed, and the receiver can take further actions, eg, retransmit , select one of the unordered sequences, and alert the user.

일부 실시예들에서, 스코어링 함수들은 채널들(140)의 유형 또는 속성들에 기초하여 자동으로 선택될 수 있다. 예를 들어, 제1 세트의 인자들 및/또는 임계치들은 (예를 들어, 패킷들의 손실 및 손상이 가능성이 없는) 물리적 와이어들을 통해 구현되는 채널들에 대해 사용될 수 있고, 제2 세트의 인자들 및/또는 임계치들은 무선 인프라스트럭처를 통해 구현되는 채널들에 대해 사용될 수 있다.In some embodiments, the scoring functions may be automatically selected based on the type or properties of the channels 140 . For example, a first set of factors and/or thresholds may be used for channels implemented over physical wires (eg, where loss and corruption of packets is not likely), the second set of factors and/or thresholds may be used for channels implemented over the wireless infrastructure.

일부 실시예들에서, 방법은 채널들(140)의 유형 또는 속성들에 기초하여 자동으로 선택될 수 있다. 예를 들어, 채널들(140)이 비교적 신뢰할 수 있는 것으로 알려진 경우, 2개 또는 3개의 열들의 매칭은 수신기(120)가 정확한 패킷이 발견되었음을 결정하기에 충분할 수 있지만, 채널들(140)이 신뢰할 수 없는 것으로 알려진 경우, 수신기(120)는 4개 또는 5개의 매칭 패킷들을 요구할 수 있다. 따라서, 실시예는 사용되는 통신 채널들의 속성들에 기초하여 스트림들을 재구성하기 위한 로직을 자동으로 조정하거나 선택할 수 있다. In some embodiments, the method may be automatically selected based on the type or properties of the channels 140 . For example, if channels 140 are known to be relatively reliable, a match of two or three columns may be sufficient for receiver 120 to determine that the correct packet was found, but if channels 140 If known to be unreliable, receiver 120 may request 4 or 5 matching packets. Accordingly, an embodiment may automatically adjust or select logic for reconstructing the streams based on the properties of the communication channels used.

다른 경우에, (예를 들어, 사용되는 인프라스트럭처에 기초하여) 패킷들이 손실되거나 드롭될 수 있지만 손상(corrupt)될 수 없다는 것이 알려지면, 발신기 및 수신기는 자동으로 단지 2개의 채널들을 사용하는 것으로 복귀할 수 있다. 패킷의 손상이 가능하다면, 발신기와 수신기는 3개의 채널을 사용하도록 자동으로 선택할 수 있다. 이에 따라, 채널(140)의 개수는 자동으로 선택될 수 있다.In other cases, if it is known that packets may be lost or dropped but cannot be corrupted (e.g., based on the infrastructure used), the sender and receiver automatically decide to use only two channels. can return If packet corruption is possible, the sender and receiver can automatically choose to use three channels. Accordingly, the number of channels 140 may be automatically selected.

본 발명의 예시적인 실시예들에 따른 방법의 흐름도인 도 2에 대한 참조가 이루어진다. 블록(210)에 의해 도시된 바와 같이, 동일한 콘텐츠가 복수의 통신 채널들을 통해 발송될 수 있다. 예를 들어, 비디오 카메라로부터 획득된 콘텐츠는 패킷들로 분할될 수 있고, 패킷들 각각은 여러 네트워크 연결들을 통해 발송될 수 있다. 블록(215)에 의해 도시된 바와 같이, 수신된 패킷들은 정렬될 수 있다. 예를 들어, 수신기(120)는 다수의 채널들(140)을 통해 패킷들을 수신하고, 수신된 패킷들을 행렬에 배열하고, 최적의 정렬이 달성될 때까지 시프트들 또는 다른 동작들을 수행한다. 일부 실시예들에서, 정렬하는 것은 설명된 바와 같이 행렬에 패킷들을 단순히 배열하거나 배치하는 것 및 패킷들에 의해 나타나는 정렬의 레벨을 결정하는 것을 포함할 수 있다. 블록(220)에 의해 도시된 바와 같이, 설명된 바와 같이 채널들을 통해 발송된 콘텐츠는 정렬에 기초하여 재구성될 수 있다. 예를 들어, 재구성된 스트림에 포함될 패킷들은 설명된 바와 같이 행렬에서의 패킷들의 정렬에 기초하여 선택될 수 있다.Reference is made to FIG. 2 , which is a flowchart of a method according to exemplary embodiments of the present invention. As shown by block 210, the same content may be sent over a plurality of communication channels. For example, content obtained from a video camera may be divided into packets, each of which may be sent over several network connections. As shown by block 215 , the received packets may be sorted. For example, receiver 120 receives packets over multiple channels 140 , arranges the received packets in a matrix, and performs shifts or other operations until optimal alignment is achieved. In some embodiments, sorting may include simply arranging or placing the packets in a matrix as described and determining the level of alignment exhibited by the packets. As shown by block 220, content sent over channels as described may be reconstructed based on sorting. For example, packets to be included in the reconstructed stream may be selected based on the ordering of the packets in the matrix as described.

본 출원에서 발명의 실시예들에 대한 설명은 예시적이며 본 발명의 범위를 제한하지 않는다. 본 발명의 특정 특징부들이 본 명세서에 예시되고 설명되었지만, 많은 수정들, 대체들, 변경들, 및 등가물들이 본 기술분야의 당업자에게 발생할 수 있다. 다양한 실시예들이 제시되었다. 이들 실시예들 각각은 물론 제시된 다른 실시예들로부터의 특징부들을 포함할 수 있고, 구체적으로 설명되지 않은 실시예들은 본 명세서에 설명된 다양한 특징부들을 포함할 수 있다. The description of embodiments of the invention in the present application is illustrative and does not limit the scope of the invention. While specific features of the invention have been illustrated and described herein, many modifications, substitutions, changes, and equivalents will occur to those skilled in the art. Various embodiments have been presented. 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 understood by one of ordinary skill in the art, aspects of the present invention may be implemented as a system, method, or computer program product. Accordingly, aspects of the present invention may be fully hardware embodiments, fully software embodiments (including firmware, resident software, micro-code, etc.) or all herein generally referred to as “circuits,” “modules,” or “systems.” It may take the form of an embodiment combining possible software and hardware aspects. Aspects of the invention may also take the form of a computer program product embodied in one or more computer readable medium(s) having computer readable program code embodied therein.

하나 이상의 컴퓨터 판독가능 매체(들)의 임의의 조합이 이용될 수 있다. 컴퓨터 판독가능 매체는 컴퓨터 판독가능 신호 매체 또는 컴퓨터 판독가능 저장 매체일 수 있다. 컴퓨터 판독가능 저장 매체는, 예를 들어, 전자, 자기, 광학, 전자기, 적외선, 또는 반도체 시스템, 장치, 또는 디바이스, 또는 이들의 임의의 적절한 조합일 수 있지만, 이에 제한되지는 않는다. 컴퓨터 판독가능 저장 매체의 보다 구체적인 예들(비-포괄적인 리스트)은 다음을 포함할 것이다: 하나 이상의 와이어들을 갖는 전기적 접속, 휴대용 컴퓨터 디스켓, 하드 디스크, 랜덤 액세스 메모리(RAM), 판독 전용 메모리(ROM), 소거가능한 프로그래밍가능 판독 전용 메모리(EPROM 또는 플래시 메모리), 광섬유, 휴대용 콤팩트 디스크 판독 전용 메모리(CD-ROM), 광학 저장 디바이스, 자기 저장 디바이스, 또는 이들의 임의의 적절한 조합. 본 문서의 맥락에서, 컴퓨터 판독 가능 저장 매체는 명령 실행 시스템, 장치 또는 디바이스에 의해 또는 이와 관련하여 사용하기 위한 프로그램을 포함하거나 저장할 수 있는 임의의 유형 매체일 수 있다.Any combination of one or more computer readable medium(s) may be used. The computer readable medium may be a computer readable signal medium or a computer readable storage medium. A computer-readable storage medium can be, for example, but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device, or any suitable combination thereof. More specific examples (non-exhaustive list) of computer readable storage media may include: an electrical connection having one or more wires, a portable computer diskette, a hard disk, random access memory (RAM), read only memory (ROM) ), erasable programmable read-only memory (EPROM or flash memory), optical fiber, portable compact disk read-only memory (CD-ROM), optical storage device, magnetic storage device, or any suitable combination thereof. 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.

컴퓨터 판독가능 신호 매체는, 예를 들어, 베이스밴드(baseband) 또는 반송파의 일부로서 컴퓨터 판독가능 프로그램 코드가 내장된 전파된 데이터 신호를 포함할 수 있다. 이러한 전파된 신호는 전자기, 광학, 또는 이들의 임의의 적합한 조합을 포함하지만 이에 제한되지 않는 임의의 다양한 형태를 취할 수 있다. 컴퓨터 판독가능 신호 매체는, 컴퓨터 판독가능 저장 매체가 아니며, 명령 실행 시스템, 장치 또는 디바이스에 의해 또는 이와 관련하여 사용하기 위한 프로그램을 통신, 전파 또는 전송할 수 있는 임의의 컴퓨터 판독가능 매체일 수 있다.A computer readable signal medium may include a propagated data signal having computer readable program code embodied therein, for example, as part of a baseband or carrier wave. Such a propagated signal may take any of a variety of forms including, but not limited to, electromagnetic, optical, or any suitable combination thereof. A computer-readable signal medium is not a computer-readable storage medium, but can be any computer-readable medium that can communicate, propagate, or transmit a program for use by or in connection with an instruction execution system, apparatus, or device.

컴퓨터 판독가능 매체 상에 구현된 프로그램 코드는 무선, 유선, 광섬유 케이블, RF 등, 또는 이들의 임의의 적절한 조합을 포함하지만 이에 제한되지 않는 임의의 적절한 매체를 사용하여 송신될 수 있다.The program code embodied on a computer readable medium may be transmitted using any suitable medium including, but not limited to, wireless, wireline, fiber optic cable, RF, etc., or any suitable combination thereof.

본 발명의 양태들에 대한 동작들을 수행하기 위한 컴퓨터 프로그램 코드는 Java, Smalltalk, C++ 등과 같은 객체 지향 프로그래밍 언어 및 "C" 프로그래밍 언어 또는 유사한 프로그래밍 언어들과 같은 종래의 절차적 프로그래밍 언어들을 포함하는 하나 이상의 프로그래밍 언어들의 임의의 조합으로 기록될 수 있다. 프로그램 코드는 전적으로 사용자의 컴퓨터 상에서, 부분적으로 사용자의 컴퓨터 상에서, 독립형 소프트웨어 패키지로서, 부분적으로 사용자의 컴퓨터 상에서 그리고 부분적으로 원격 컴퓨터 상에서 또는 전적으로 원격 컴퓨터 또는 서버 상에서 실행될 수 있다. 후자의 시나리오에서, 원격 컴퓨터는 근거리 네트워크(LAN) 또는 광역 네트워크(WAN)를 포함하는 임의의 유형의 네트워크를 통해 사용자의 컴퓨터에 접속될 수 있거나, 또는 외부 컴퓨터에 접속될 수 있다(예를 들어, 인터넷 서비스 제공자를 사용하는 인터넷을 통해).The computer program code for performing the operations for aspects of the present invention is one comprising an object-oriented programming language such as Java, Smalltalk, C++, etc. and conventional procedural programming languages such as the “C” programming language or similar programming languages. It can be written in any combination of the above programming languages. The program code may run entirely on the user's computer, partly on the user's computer, as a standalone software package, partly on the user's computer and partly on a remote computer or entirely on a remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer via any type of network, including a local area network (LAN) or a wide area network (WAN), or may be connected to an external computer (eg, , over the Internet using an Internet service provider).

본 발명의 양태들은 본 발명의 실시예들에 따른 방법들, 장치(시스템들) 및 컴퓨터 프로그램 제품들의 흐름도 예시들 및/또는 블록도들을 참조하여 본 명세서에서 설명된다. 흐름도 및/또는 블록도의 각각의 블록, 및 흐름도 및/또는 블록도의 블록의 조합은 컴퓨터 프로그램 명령에 의해 구현될 수 있다는 것이 이해될 것이다. 이들 컴퓨터 프로그램 명령들은 기계를 생성하기 위해 범용 컴퓨터, 특수 목적 컴퓨터, 또는 다른 프로그램가능 데이터 프로세싱 장치의 하드웨어 프로세서에 제공될 수 있어서, 컴퓨터 또는 다른 프로그램가능 데이터 프로세싱 장치의 프로세서를 통해 실행되는 명령들은 흐름도 및/또는 블록도 블록 또는 블록들에서 특정된 기능들/동작들을 구현하기 위한 수단을 생성한다.Aspects of the 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 in the flowcharts and/or block diagrams, and combinations of blocks in the flowcharts and/or block diagrams, may 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 create a machine, such that the instructions executed by the processor of the computer or other programmable data processing apparatus are shown in the flowchart and/or block diagram create means for implementing the functions/acts specified in the block or blocks.

이들 컴퓨터 프로그램 명령들은 또한 컴퓨터, 다른 프로그램가능 데이터 프로세싱 장치, 또는 다른 디바이스들에게 특정 방식으로 기능하도록 지시할 수 있는 컴퓨터 판독가능 매체에 저장될 수 있어서, 컴퓨터 판독가능 매체에 저장된 명령들은 흐름도 및/또는 블록도 블록 또는 블록들에서 특정된 기능/동작을 구현하는 명령들을 포함하는 제조 물품을 생성한다.These computer program instructions may also be stored on a computer readable medium that can instruct a computer, other programmable data processing apparatus, or other devices to function in a particular way, such that the instructions stored on the computer readable medium include flowcharts and/or or block diagram blocks or blocks to create an article of manufacture including instructions that implement a specified function/action.

컴퓨터 프로그램 명령들은 또한 컴퓨터, 다른 프로그램가능 데이터 프로세싱 장치, 또는 다른 디바이스들 상에 로딩되어 일련의 동작 단계들이 컴퓨터, 다른 프로그램가능 장치 또는 다른 디바이스들 상에서 수행되어 컴퓨터 구현 프로세스를 생성하게 하여, 컴퓨터 또는 다른 프로그램가능 장치 상에서 실행되는 명령들은 흐름도 및/또는 블록도 블록 또는 블록들에서 특정된 기능들/동작들을 구현하기 위한 프로세스들을 제공할 수 있다.The computer program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other devices such that a series of operational steps are performed on the computer, other programmable apparatus, or other devices to create a computer implemented process, the computer or Instructions executing on another programmable device may provide processes for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.

도면들에서의 흐름도들 및 블록도들은 본 발명의 다양한 실시예들에 따른 시스템들, 방법들 및 컴퓨터 프로그램 제품들의 가능한 구현들의 아키텍처, 기능 및 동작을 예시한다. 이와 관련하여, 흐름도 또는 블록도들에서의 각각의 블록은 지정된 로직 함수(들)를 구현하기 위한 하나 이상의 실행 가능한 명령들을 포함하는 모듈, 세그먼트 또는 코드의 일부를 나타낼 수 있다. 일부 대안적인 구현들에서, 블록에 언급된 기능들은 도면들에 언급된 순서로부터 발생할 수 있다는 것에 또한 유의해야 한다. 예를 들어, 연속적으로 도시된 2개의 블록들은 사실상 실질적으로 동시에 실행될 수 있거나, 블록들은 때때로 관련된 기능에 따라 역순으로 실행될 수 있다. 블록도들 및/또는 흐름도 예시의 각각의 블록, 및 블록도들 및/또는 흐름도 예시에서의 블록들의 조합들은, 특정된 기능들 또는 동작들을 수행하는 특수 목적 하드웨어-기반 시스템들, 또는 특수 목적 하드웨어 및 컴퓨터 명령들의 조합들에 의해 구현될 수 있다는 것이 또한 주목될 것이다.The flowcharts and block diagrams in the drawings illustrate the architecture, functionality and operation of possible implementations of systems, methods, and computer program products in accordance with 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 that includes one or more executable instructions for implementing the specified logical function(s). It should also be noted that, in some alternative implementations, functions recited in blocks may arise from the order recited in the figures. For example, two blocks shown in succession may in fact be executed substantially simultaneously, or blocks may sometimes be executed in reverse order depending on the function involved. Each block of the block diagrams and/or flowchart illustration, and combinations of blocks in the block diagrams and/or flowchart illustration, are special-purpose hardware-based systems, or special-purpose hardware, that perform specified functions or operations. and combinations of computer instructions.

본 발명의 다양한 실시예에 대한 설명은 예시의 목적으로 제시되었지만, 본 명세서에 개시된 실시예에 한정되거나 포괄적인 것으로 의도되지 않는다. 많은 수정예들 및 변형예들이 설명된 실시예들의 범위 및 취지로부터 벗어나지 않고 당업자에게 명백할 것이다. 본 명세서에서 사용되는 용어는 실시예들의 원리들, 시장에서 발견되는 기술들에 대한 실제 적용 또는 기술적 개선을 가장 잘 설명하기 위해, 또는 당업자가 본 명세서에 개시된 실시예들을 이해할 수 있게 하기 위해 선택되었다. The description of various embodiments of the present invention has been presented for purposes of illustration, but is not intended to be exhaustive or limited to the embodiments disclosed herein. Many modifications and variations will be apparent to those skilled in the art without departing from the scope and spirit of the described embodiments. The terminology used herein was chosen to best describe the principles of the embodiments, practical application or technical improvement to techniques found in the market, or to enable one of ordinary skill in the art to understand the embodiments disclosed herein. .

본 출원의 설명 및 청구항에서, 각각의 단어 "구성한다", "포함한다" 및 "갖는다", 및 이들의 형태는 반드시 단어들이 연관될 수 있는 리스트 내의 멤버들로 한정되는 것은 아니다. 또한, 본 출원과 참조에 의해 통합된 임의의 문서 사이에 불일치가 있는 경우, 본 출원이 제어하는 것으로 의도된다.In the description and claims of this application, each word "comprises", "comprises" and "has", and forms thereof, are not necessarily limited to the members in the list to which the words may be associated. Further, in the event of any inconsistency between this application and any document incorporated by reference, the present application is intended to control.

Claims (21)

방법에 있어서,
직렬 비트 스트림(serial bit stream)의 복수의 복사본(duplicate)을 수신하는 단계, - 상기 직렬 비트 스트림은 데이터 패킷의 시퀀스를 포함함-;
순차적 시간 윈도우(time window)에 기초하여 상기 직렬 비트 스트림의 상기 복사본 각각을 연속적으로 분할하는 단계;
상기 시간 윈도우 각각에 대해, 데이터 패킷 유사도(data packet similarity)에 적어도 부분적으로 기초하여, 상기 시간 윈도우 내에서 수신된 상기 직렬 비트 스트림의 상기 복사본 각각과 연관된 상기 데이터 패킷을 정렬하는 단계; 및
상기 데이터 패킷의 시퀀스에서 다음 데이터 패킷을 나타내는 것으로서 상기 정렬된 데이터 패킷 중 적어도 하나를 선택함으로써 상기 직렬 비트 스트림을 실시간으로 재생성하는 단계(recreating)를 포함하는, 방법.
In the method,
receiving a plurality of duplicates of a serial bit stream, the serial bit stream comprising a sequence of data packets;
successively partitioning each of the copies of the serial bit stream based on a sequential time window;
for each of the time windows, aligning the data packet 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
and recreating the serial bit stream in real time by selecting at least one of the sorted data packets as representing a next data packet in the sequence of data packets.
제1항에 있어서, 상기 직렬 비트 스트림의 상기 복수의 복사본 각각은 상이한 통신 채널을 통해 송신되는, 방법.The method of claim 1 , wherein each of the plurality of copies of the serial bit stream is transmitted over a different communication channel. 제2항에 있어서, 상기 통신 채널 각각은 : 사설 IP 네트워크, 공중 IP 네트워크, 인터넷, GSM(Global System for Mobile Communications) 네트워크, 근거리 통신망(LAN), 도시권 네트워크(MAN), 광역 네트워크(WAN), 무선 네트워크, 위성 통신 네트워크, 셀룰러 통신 네트워크, 블루투스 통신 채널, 및 Wi-Fi 네트워크로 구성된 그룹으로부터 선택된, 방법3. The method of claim 2, wherein each of the communication channels comprises: 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 method selected from the group consisting of a wireless network, a satellite communication network, a cellular communication network, a Bluetooth communication channel, and a Wi-Fi network. 제1항 내지 제3항 중 어느 한 항에 있어서, 상기 정렬하는 단계는 상기 데이터 패킷 유사도에 적어도 부분적으로 기초하여 정렬 스코어 행렬(alignment score matrix)의 열(column)에, 시간 윈도우 내에 수신된 상기 데이터 패킷을 정렬하는 것을 포함하며, 상기 행렬 내의 각각의 행은 상기 직렬 비트 스트림의 상기 복사본 중 하나를 표현하는, 방법.4. The method of any one of claims 1 to 3, wherein the aligning comprises: based at least in part on the data packet similarity, in a column of an alignment score matrix, the received within a time window. and sorting data packets, wherein each row in the matrix represents one of the copies of the serial bit stream. 제4항에 있어서, 상기 열에서의 데이터 패킷 갭(gap) 및 데이터 패킷 불일치 (mismatch) 중 하나에 기초하여 상기 열 각각에 정렬 스코어(alignment score)를 할당하는 단계를 더 포함하는, 방법. 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 column. 제4항에 있어서, 상기 행렬의 각각의 열에 대해, 상기 선택은 상기 열 내의 다수의 데이터 패킷의 데이터 패킷 유사도에 의해 결정된 컨센서스(consensus)에 적어도 부분적으로 기초하는, 방법. 5. The method of claim 4, wherein for each column of the matrix, the selection is based, at least in part, on a consensus determined by a data packet similarity of a plurality of data packets within the column. 제1항 내지 제6항 중 어느 한 항에 있어서, 상기 데이터 패킷 유사도는 데이터 패킷 콘텐츠의 비교에 적어도 부분적으로 기초하여 결정되고, 상기 데이터 패킷 콘텐츠는 해시 함수(hash function)에 의해 표현되는, 방법.7. The method of any preceding claim, wherein 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. . 시스템에 있어서,
적어도 하나의 하드웨어 프로세서; 및
프로그램 코드가 내장된 비-일시적 컴퓨터-판독가능 저장 매체(non-transitory computer-readable storage medium)를 포함하고, 상기 프로그램 코드는 상기 적어도 하나의 하드웨어 프로세서에 의해,
직렬 비트 스트림(serial bit stream)의 복수의 복사본을 수신하고, 상기 직렬 비트 스트림은 데이터 패킷의 시퀀스를 포함하고,
순차적 시간 윈도우에 기초하여 상기 직렬 비트스트림의 상기 복사본 각각을 연속적으로 분할하고,
상기 시간 윈도우 각각에 대해, 데이터 패킷 유사도에 적어도 부분적으로 기초하여, 상기 시간 윈도우 내에서 수신된 상기 직렬 비트 스트림의 상기 복사본 각각과 연관된 상기 데이터 패킷을 정렬하고, 및
상기 데이터 패킷의 시퀀스에서 다음 데이터 패킷을 나타내는 것으로서 상기 정렬된 데이터 패킷 중 적어도 하나를 선택함으로써 상기 직렬 비트 스트림을 실시간으로 재생성하도록 실행가능한, 시스템.
In the system,
at least one hardware processor; and
a non-transitory computer-readable storage medium having program code embedded therein, wherein the program code is executed by the at least one hardware processor;
receive a plurality of copies of a serial bit stream, the serial bit stream comprising a sequence of data packets;
successively partitioning each of the copies of the serial bitstream based on a sequential time window;
align, for each of the time windows, the data packet 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
and regenerate the serial bit stream in real time by selecting at least one of the ordered data packets as representing a next data packet in the sequence of data packets.
제8항에 있어서, 상기 직렬 비트 스트림의 상기 복수의 복사본 각각은 상이한 통신 채널을 통해 송신되는, 시스템.9. The system of claim 8, wherein each of the plurality of copies of the serial bit stream is transmitted over a different communication channel. 제9항에 있어서, 상기 통신 채널 각각은 : 사설 IP 네트워크, 공중 IP 네트워크, 인터넷, GSM(Global System for Mobile Communications) 네트워크, 근거리 통신망(LAN), 도시권 네트워크(MAN), 광역 네트워크(WAN), 무선 네트워크, 위성 통신 네트워크, 셀룰러 통신 네트워크, 블루투스 통신 채널, 및 Wi-Fi 네트워크로 구성된 그룹으로부터 선택된, 시스템.10. The method of claim 9, wherein each of the communication channels comprises: 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 system selected from the group consisting of a wireless network, a satellite communication network, a cellular communication network, a Bluetooth communication channel, and a Wi-Fi network. 제8항 내지 제10항 중 어느 한 항에 있어서, 상기 정렬은, 상기 데이터 패킷 유사도에 적어도 부분적으로 기초하여, 정렬 스코어 행렬(alignment score matrix)의 열에, 시간 윈도우 내에 수신된 상기 데이터 패킷을 정렬하는 것을 포함하고, 상기 행렬의 각각의 행은 상기 직렬 비트 스트림의 상기 복사본 중 하나를 표현하는, 시스템.11. The method of any of claims 8-10, wherein the alignment aligns the data packets received within a time window in a column of an alignment score matrix based at least in part on the data packet similarity. wherein each row of the matrix represents one of the copies of the serial bit stream. 제11항에 있어서, 상기 명령은 상기 열 내의 데이터 패킷 갭 및 데이터 패킷 불일치 중 하나에 기초하여 상기 열 각각에 정렬 스코어를 할당하도록 추가로 실행 가능한, 시스템. 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 a data packet gap and a data packet mismatch within the column. 제12항에 있어서, 상기 행렬의 각각의 열에 대해, 상기 선택은 상기 열 내의 다수의 데이터 패킷의 데이터 패킷 유사도에 의해 결정된 컨센서스에 적어도 부분적으로 기초하는, 시스템. 13. The system of claim 12, wherein for each column of the matrix, the selection is based, at least in part, on a consensus determined by a data packet similarity of a plurality of data packets within the column. 제8항 내지 제13항 중 어느 한 항에 있어서, 상기 데이터 패킷 유사도는 데이터 패킷 콘텐츠의 비교에 적어도 부분적으로 기초하여 결정되고, 상기 데이터 패킷 콘텐츠는 해시 함수(hash function)에 의해 표현되는, 시스템.14. The system of any of claims 8-13, wherein 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. . 컴퓨터 프로그램 제품(computer program product)으로서, 프로그램 명령이 내장된 비일시적 컴퓨터 판독가능 저장 매체를 포함하고, 상기 프로그램 명령은 적어도 하나의 하드웨어 프로세서에 의해,
직렬 비트 스트림(serial bit stream)의 복수의 복사본(duplicate)을 수신하고, 상기 직렬 비트 스트림은 데이터 패킷의 시퀀스를 포함하고;
순차적 시간 윈도우에 기초하여 상기 직렬 비트 스트림의 상기 복사본 각각을 연속적으로 분할하고;
상기 시간 윈도우 각각에 대하여, 데이터 패킷 유사도에 적어도 부분적으로 기초하여, 상기 시간 윈도우 내에서 수신된 상기 직렬 비트 스트림의 상기 복사본 각각과 연관된 상기 데이터 패킷을 정렬하고; 및
상기 데이터 패킷의 시퀀스에서 다음 데이터 패킷을 나타내는 것으로서 상기 정렬된 데이터 패킷 중 적어도 하나를 선택함으로써 상기 직렬 비트 스트림을 실시간으로 재생성하도록 실행가능한, 컴퓨터 프로그램 제품.
A computer program product comprising: a non-transitory computer-readable storage medium having program instructions embodied therein, the program instructions being executed by at least one hardware processor;
receive a plurality of duplicates of a serial bit stream, the serial bit stream comprising a sequence of data packets;
successively partition each of the copies of the serial bit stream based on a sequential time window;
align, for each of the time windows, the data packet 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
and regenerate the serial bit stream in real time by selecting at least one of the ordered data packets as representing a next data packet in the sequence of data packets.
제15항에 있어서, 상기 직렬 비트 스트림의 상기 복수의 복사본 각각은 상이한 통신 채널을 통해 송신되는, 컴퓨터 프로그램 제품.16. 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. 제16항에 있어서, 상기 통신 채널 각각은 : 사설 IP 네트워크, 공중 IP 네트워크, 인터넷, GSM(global system for mobile communications) 네트워크, 근거리 네트워크(LAN), 도시 영역 네트워크(MAN), 광역 네트워크(WAN), 무선 네트워크, 위성 통신 네트워크, 셀룰러 통신 네트워크, 블루투스 통신 채널, 및 Wi-Fi 네트워크로 구성된 그룹으로부터 선택된, 컴퓨터 프로그램 제품17. The method of claim 16, wherein each of the communication channels is: a private IP network, a public IP network, the Internet, a global system for mobile communications (GSM) network, a local area network (LAN), a city area network (MAN), a wide area network (WAN) , a computer program product selected from the group consisting of a wireless network, a satellite communication network, a cellular communication network, a Bluetooth communication channel, and a Wi-Fi network. 제15항 내지 제17항 중 어느 한 항에 있어서, 상기 정렬은, 상기 데이터 패킷 유사도에 적어도 부분적으로 기초하여, 정렬 스코어 행렬의 열(column)에, 상기 시간 윈도우 내에서 수신된 상기 데이터 패킷을 정렬하는 것을 포함하고, 상기 행렬 내의 각각의 행은 상기 직렬 비트 스트림의 상기 복사본 중 하나를 나타내는, 컴퓨터 프로그램 제품.18. The method of any one of claims 15-17, wherein the alignment is based, at least in part, on the data packet similarity by placing, in a column of an alignment score matrix, the data packets received within the time window. sorting, wherein each row in the matrix represents one of the copies of the serial bit stream. 제18항에 있어서, 상기 명령은 상기 열 내의 데이터 패킷 갭 및 데이터 패킷 불일치 중 하나에 기초하여 상기 열 각각에 정렬 스코어를 할당하도록 추가로 실행 가능한, 컴퓨터 프로그램 제품. 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 a data packet gap and a data packet mismatch within the column. 제18항에 있어서, 상기 행렬의 각각의 열에 대해, 상기 선택은 적어도 부분적으로, 상기 열 내의 대다수의 데이터 패킷의 데이터 패킷 유사도에 의해 결정된 컨센서스에 기초하는, 컴퓨터 프로그램 제품. 19. The computer program product of claim 18, wherein for each column of the matrix, the selection is based, at least in part, on a consensus determined by a data packet similarity of a majority of data packets within the column. 제15항 내지 제20항 중 어느 한 항에 있어서, 상기 데이터 패킷 유사도는 데이터 패킷 콘텐츠의 비교에 적어도 부분적으로 기초하여 결정되고, 상기 데이터 패킷 콘텐츠는 해시 함수(hash function)에 의해 표현되는, 컴퓨터 프로그램 제품.21. The computer of any of claims 15-20, wherein 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. program product.
KR1020227021739A 2019-12-02 2020-12-02 Packetized data communication over multiple unreliable channels KR20220136343A (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 (1)

Publication Number Publication Date
KR20220136343A true KR20220136343A (en) 2022-10-07

Family

ID=76221036

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227021739A KR20220136343A (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)

Family Cites Families (11)

* 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
US7707349B1 (en) * 2006-06-26 2010-04-27 Marvell International Ltd. USB isochronous data transfer for a host based laser printer
US7852792B2 (en) * 2006-09-19 2010-12-14 Alcatel-Lucent Usa Inc. Packet based echo cancellation and suppression
US8036248B2 (en) * 2008-10-29 2011-10-11 Silicon Image, Inc. Method, apparatus, and system for automatic data aligner for multiple serial receivers
US8873557B2 (en) * 2011-04-08 2014-10-28 Gigamon Inc. Systems and methods for packet de-duplication
US20140269359A1 (en) * 2013-03-14 2014-09-18 Google Inc. Reduction of retransmission latency by combining pacing and forward error correction
US9860614B2 (en) * 2015-05-13 2018-01-02 Huawei Technologies Co., Ltd. System and method for hybrid photonic electronic switching
US11792748B2 (en) * 2018-05-10 2023-10-17 Apple Inc. Synchronization control for packet data convergence protocol (PDCP) duplicate transmissions

Also Published As

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

Similar Documents

Publication Publication Date Title
CN107819828B (en) Data transmission method and device, computer equipment and storage medium
CN101802797B (en) Generating and communicating source identification information to enable reliable communications
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
CN108631873B (en) Method and device for transmitting and receiving network management information, transmitting equipment and receiving equipment
US11876723B2 (en) Method and apparatus for transmitting and receiving packet in communication system
CN113364559B (en) Multipath-oriented data secure transmission method, device and system
US8321754B2 (en) Method for transmitting multimedia data in ad hoc communication networks
US20160105358A1 (en) Compression of routing information exchanges
JP2005130284A (en) Method and device for receiving packet
EP3125455A1 (en) Method and apparatus for generating and recovering packet in broadcasting and/or communication system
KR20220136343A (en) Packetized data communication over multiple unreliable channels
KR102127685B1 (en) Apparatus and method for transmitting and receiving forward error correction packet
KR102081467B1 (en) Method and apparatus for error recovery using information related to the transmitter
US11546615B2 (en) Packetized data communication over multiple unreliable channels
US11042430B2 (en) Elastic consistency high availability in multiple boards
CN109067503B (en) Data retransmission method and device
WO2011001008A1 (en) A method, apparatuses and service for media transmission
CN116347557A (en) Low orbit satellite network routing method, control device and computer readable storage medium
CN103763139A (en) Automatic failure recovery live broadcast time-shifting transmission system and method
US20210084123A1 (en) Systems and methods for increasing reliability for media data distribution
CN112564856A (en) Message processing method and device and computer readable storage medium
US11456949B1 (en) Routing networks with asynchronous message backup and replay
WO2021047612A1 (en) Packet processing method, device, and computer storage medium