IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ジクシー,エルエルシーの特許一覧

特表2023-508744複数の信頼性のないチャネルを介したパケット化データ通信
<>
  • 特表-複数の信頼性のないチャネルを介したパケット化データ通信 図1
  • 特表-複数の信頼性のないチャネルを介したパケット化データ通信 図2
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2023-03-03
(54)【発明の名称】複数の信頼性のないチャネルを介したパケット化データ通信
(51)【国際特許分類】
   H04L 1/00 20060101AFI20230224BHJP
   H04L 1/08 20060101ALI20230224BHJP
   H04L 45/24 20220101ALI20230224BHJP
   H04L 47/34 20220101ALI20230224BHJP
【FI】
H04L1/00 B
H04L1/08
H04L45/24
H04L47/34
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2022546436
(86)(22)【出願日】2020-12-02
(85)【翻訳文提出日】2022-07-28
(86)【国際出願番号】 IB2020061382
(87)【国際公開番号】W WO2021111329
(87)【国際公開日】2021-06-10
(31)【優先権主張番号】16/699,786
(32)【優先日】2019-12-02
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.BLUETOOTH
2.JAVA
3.SMALLTALK
(71)【出願人】
【識別番号】522301902
【氏名又は名称】ジクシー,エルエルシー
(74)【代理人】
【識別番号】100114775
【弁理士】
【氏名又は名称】高岡 亮一
(74)【代理人】
【識別番号】100121511
【弁理士】
【氏名又は名称】小田 直
(74)【代理人】
【識別番号】100202751
【弁理士】
【氏名又は名称】岩堀 明代
(74)【代理人】
【識別番号】100208580
【弁理士】
【氏名又は名称】三好 玲奈
(74)【代理人】
【識別番号】100191086
【弁理士】
【氏名又は名称】高橋 香元
(72)【発明者】
【氏名】アヴィニ,ユーリ
(72)【発明者】
【氏名】ドロリ,イスラエル
【テーマコード(参考)】
5K014
5K030
【Fターム(参考)】
5K014DA06
5K014EA01
5K030LA01
5K030LA19
5K030LC03
5K030MB13
(57)【要約】
シリアルビットストリームの複数の複製を受信することであって、シリアルビットストリームが、データパケットのシーケンスを含む、ことと、連続する時間窓に基づいて、シリアルビットストリームの複製の各々を連続的に分割することと、時間窓の各々に関して、データパケット類似性に少なくとも部分的に基づいて、時間窓内に受信された、シリアルビットストリームの複製の各々に関連付けられたデータパケットを整列させることと、データパケットのシーケンスにおける次のデータパケットを表すものとして、整列されたデータパケットのうちの少なくとも1つを選択することによって、シリアルビットストリームをリアルタイムで再作成することと、を含む、方法。
【選択図】図1
【特許請求の範囲】
【請求項1】
方法であって、
シリアルビットストリームの複数の複製を受信することであって、前記シリアルビットストリームが、データパケットのシーケンスを含む、ことと、
連続する時間窓に基づいて、前記シリアルビットストリームの前記複製の各々を連続的に分割することと、
前記時間窓の各々に関して、データパケット類似性に少なくとも部分的に基づいて、前記時間窓内に受信された、前記シリアルビットストリームの前記複製の各々に関連付けられた前記データパケットを整列させることと、
データパケットの前記シーケンスにおける次のデータパケットを表すものとして、前記整列されたデータパケットのうちの少なくとも1つを選択することによって、前記シリアルビットストリームをリアルタイムで再作成することと、を含む、方法。
【請求項2】
前記シリアルビットストリームの前記複数の複製の各々が、異なる通信チャネルを介して伝送される、請求項1に記載の方法。
【請求項3】
前記通信チャネルの各々が、プライベートIPネットワークと、パブリックIPネットワークと、インターネットと、移動通信用グローバルシステム(GSM)ネットワークと、ローカルエリアネットワーク(LAN)と、メトロポリタンエリアネットワーク(MAN)と、ワイドエリアネットワーク(WAN)と、無線ネットワークと、衛星通信ネットワークと、セルラー通信ネットワークと、Bluetooth通信チャネルと、Wi-Fiネットワークからなる群より選択される、請求項2に記載の方法。
【請求項4】
前記整列させることが、前記データパケット類似性に少なくとも部分的に基づいて、時間窓内に受信された前記データパケットを整列スコア行列の列に配置することを含み、前記行列の各行が、前記シリアルビットストリームの前記複製のうちの1つを表す、請求項1~3のいずれか一項に記載の方法。
【請求項5】
前記列内のデータパケットギャップおよびデータパケットの不一致のうちの1つに基づいて、前記列の各々に整列スコアを割り当てることをさらに含む、請求項4に記載の方法。
【請求項6】
前記行列の各列に関して、前記選択することが、前記列のデータパケットの大部分のデータパケット類似性によって決定されるコンセンサスに少なくとも部分的に基づく、請求項4に記載の方法。
【請求項7】
前記データパケット類似性が、データパケットコンテンツの比較に少なくとも部分的に基づいて決定され、前記データパケットコンテンツがハッシュ関数によって表される、請求項1~6のいずれか一項に記載の方法。
【請求項8】
システムであって、
少なくとも1つのハードウェアプロセッサと、
プログラムコードを実装した非一時的なコンピュータ可読記憶媒体であって、前記プログラムコードが、
シリアルビットストリームの複数の複製を受信することであって、前記シリアルビットストリームが、データパケットのシーケンスを含む、ことと、
連続する時間窓に基づいて、前記シリアルビットストリームの前記複製の各々を連続的に分割することと、
前記時間窓の各々に関して、データパケット類似性に少なくとも部分的に基づいて、前記時間窓内に受信された、前記シリアルビットストリームの前記複製の各々に関連付けられた前記データパケットを整列させることと、
データパケットの前記シーケンスにおける次のデータパケットを表すものとして前記整列されたデータパケットのうちの少なくとも1つを選択することによって、前記シリアルビットストリームをリアルタイムで再作成することと、を行うために前記少なくとも1つのハードウェアプロセッサによって実行可能である、非一時的なコンピュータ可読記憶媒体と、を含む、システム。
【請求項9】
前記シリアルビットストリームの前記複数の複製の各々が、異なる通信チャネルを介して伝送される、請求項8に記載のシステム。
【請求項10】
前記通信チャネルの各々が、プライベートIPネットワークと、パブリックIPネットワークと、インターネットと、移動通信用グローバルシステム(GSM)ネットワークと、ローカルエリアネットワーク(LAN)と、メトロポリタンエリアネットワーク(MAN)と、ワイドエリアネットワーク(WAN)と、無線ネットワークと、衛星通信ネットワークと、セルラー通信ネットワークと、Bluetooth通信チャネルと、Wi-Fiネットワークからなる群より選択される、請求項9に記載のシステム。
【請求項11】
前記整列させることが、前記データパケット類似性に少なくとも部分的に基づいて、時間窓内に受信された前記データパケットを整列スコア行列の列に配置することを含み、前記行列の各行が、前記シリアルビットストリームの前記複製のうちの1つを表す、請求項8~10のいずれか一項に記載のシステム。
【請求項12】
前記命令が、前記列内のデータパケットギャップおよびデータパケットの不一致のうちの1つに基づいて、前記列の各々に整列スコアを割り当てるためにさらに実行可能である、請求項11に記載のシステム。
【請求項13】
前記行列の各列に関して、前記選択することが、前記列のデータパケットの大部分のデータパケット類似性によって決定されるコンセンサスに少なくとも部分的に基づく、請求項12に記載のシステム。
【請求項14】
前記データパケット類似性が、データパケットコンテンツの比較に少なくとも部分的に基づいて決定され、前記データパケットコンテンツがハッシュ関数によって表される、請求項8~13のいずれか一項に記載のシステム。
【請求項15】
プログラム命令を実装した非一時的なコンピュータ可読記憶媒体を含むコンピュータプログラム製品であって、前記プログラム命令が、
シリアルビットストリームの複数の複製を受信することであって、前記シリアルビットストリームが、データパケットのシーケンスを含む、ことと、
連続する時間窓に基づいて、前記シリアルビットストリームの前記複製の各々を連続的に分割することと、
前記時間窓の各々に関して、データパケット類似性に少なくとも部分的に基づいて、前記時間窓内に受信された、前記シリアルビットストリームの前記複製の各々に関連付けられた前記データパケットを整列させることと、
データパケットの前記シーケンスにおける次のデータパケットを表すものとして、前記整列されたデータパケットのうちの少なくとも1つを選択することによって、前記シリアルビットストリームをリアルタイムで再作成することと、を行うために、前記少なくとも1つのハードウェアプロセッサによって実行可能である、コンピュータプログラム製品。
【請求項16】
前記シリアルビットストリームの前記複数の複製の各々が、異なる通信チャネルを介して伝送される、請求項15に記載のコンピュータプログラム製品。
【請求項17】
前記通信チャネルの各々が、プライベートIPネットワークと、パブリックIPネットワークと、インターネットと、移動通信用グローバルシステム(GSM)ネットワークと、ローカルエリアネットワーク(LAN)と、メトロポリタンエリアネットワーク(MAN)と、ワイドエリアネットワーク(WAN)と、無線ネットワークと、衛星通信ネットワークと、セルラー通信ネットワークと、Bluetooth通信チャネルと、Wi-Fiネットワークからなる群より選択される、請求項16に記載のコンピュータプログラム製品。
【請求項18】
前記整列させることが、前記データパケット類似性に少なくとも部分的に基づいて、時間窓内に受信された前記データパケットを整列スコア行列の列に配置することを含み、前記行列の各行が、前記シリアルビットストリームの前記複製のうちの1つを表す、請求項15~17のいずれか一項に記載のコンピュータプログラム製品。
【請求項19】
前記命令が、前記列内のデータパケットギャップおよびデータパケットの不一致のうちの1つに基づいて、前記列の各々に整列スコアを割り当てるためにさらに実行可能である、請求項18に記載のコンピュータプログラム製品。
【請求項20】
前記行列の各列に関して、前記選択することが、前記列のデータパケットの大部分のデータパケット類似性によって決定されるコンセンサスに少なくとも部分的に基づく、請求項18に記載のコンピュータプログラム製品。
【請求項21】
前記データパケット類似性が、データパケットコンテンツの比較に少なくとも部分的に基づいて決定され、前記データパケットコンテンツがハッシュ関数によって表される、請求項15~20のいずれか一項に記載のコンピュータプログラム製品。

【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
本出願は、2019年3月20日に出願された「SYSTEM AND METHOD FOR COMMUNICATING DATA」と題する米国特許出願第16/359,016号の一部継続出願である、2019年12月2日に出願された「PACKETIZED DATA COMMUNICATION OVER MULTIPLE UNRELIABLE CHANNELS」と題する米国特許出願第16/699,786号の優先権の利益を主張し、米国特許出願第16/699,786号それらの内容は参照によりそれらの全体が本願に組み込まれるものとする。
【0002】
本発明は、概して、データ通信に関するものである。より具体的には、本発明は、データ通信のために複数の信頼性のない通信チャネルを使用することに関するものである。
【背景技術】
【0003】
パケット化されたネットワークでデータを送信する場合、一部のパケットが脱落するか、または破損して到着することがある。一般に、パケット化されたネットワークまたはチャネルは、送信されるコンテンツをパケットまたはメッセージに分割し、パケットまたはメッセージを送信し、パケットに基づいて受信する側によってコンテンツを再構築することに関連し得る。
【0004】
パケットの喪失または破損を克服するために、いくつかの既知のシステムおよび方法は、一部またはさらには全部のパケットを2回以上送信する。しかし、同じデータを2回以上送信することは、通常、誤りを克服するにしては無駄な方法である。他の方法、例えば、前方誤り訂正(FEC)は、限られた数の誤りを検出することを可能にし、さらに、受信側が誤りの一部を訂正することを可能にし得るが、このような方法は、計算リソースおよび送信側の複雑性の増加という代償を伴う。
【0005】
ストリーム複製法およびFEC法の両方では、いずれもシーケンス番号または他の識別子がパケットに関連付けられ、それらの識別子を用いてパケットのストリームが正しい(または本来の)順序またはシーケンスに従って再構築される。しかし、このような方法は、パケットに番号が付けられていない場合またはシーケンス化されていない場合には不適当である。
【0006】
関連技術の前述の例およびそれに関連する制限は、例示的であり、排他的ではないことが意図されている。関連技術の他の制限は、本明細書を読み、図を検討すれば、当業者には明らかになるであろう。
【発明の概要】
【0007】
以下の実施形態およびその態様は、範囲を限定するものではなく、例示的かつ例証的であることを意味するシステム、ツール、および方法と併せて説明され、図示される。
【0008】
一実施形態では、シリアルビットストリームの複数の複製を受信することであって、シリアルビットストリームが、データパケットのシーケンスを含む、ことと、連続する時間窓に基づいて、シリアルビットストリームの複製の各々を連続的に分割することと、時間窓の各々に関して、データパケット類似性に少なくとも部分的に基づいて、時間窓内に受信された、シリアルビットストリームの複製の各々に関連付けられたデータパケットを整列させることと、データパケットのシーケンスにおける次のデータパケットを表すものとして、整列されたデータパケットのうちの少なくとも1つを選択することによって、シリアルビットストリームをリアルタイムで再作成することと、を含む、方法が提供される。
【0009】
また、一実施形態では、システムであって、少なくとも1つのハードウェアプロセッサと、プログラムコードを実装した非一時的なコンピュータ可読記憶媒体であって、プログラムコードが、シリアルビットストリームの複数の複製を受信することであって、シリアルビットストリームが、データパケットのシーケンスを含む、ことと、連続する時間窓に基づいて、シリアルビットストリームの複製の各々を連続的に分割することと、時間窓の各々に関して、データパケット類似性に少なくとも部分的に基づいて、時間窓内に受信された、シリアルビットストリームの複製の各々に関連付けられたデータパケットを整列させることと、データパケットのシーケンスにおける次のデータパケットを表すものとして整列されたデータパケットのうちの少なくとも1つを選択することによって、シリアルビットストリームをリアルタイムで再作成することと、を行うために少なくとも1つのハードウェアプロセッサによって実行可能である、非一時的なコンピュータ可読記憶媒体と、を含む、システムが提供される。
【0010】
一実施形態では、プログラム命令を実装した非一時的なコンピュータ可読記憶媒体を含むコンピュータプログラム製品であって、プログラム命令が、シリアルビットストリームの複数の複製を受信することであって、シリアルビットストリームが、データパケットのシーケンスを含む、ことと、連続する時間窓に基づいて、シリアルビットストリームの複製の各々を連続的に分割することと、時間窓の各々に関して、データパケット類似性に少なくとも部分的に基づいて、時間窓内に受信された、シリアルビットストリームの複製の各々に関連付けられたデータパケットを整列させることと、データパケットのシーケンスにおける次のデータパケットを表すものとして、整列されたデータパケットのうちの少なくとも1つを選択することによって、シリアルビットストリームをリアルタイムで再作成することと、を行うために、少なくとも1つのハードウェアプロセッサによって実行可能である、コンピュータプログラム製品がさらに提供される。
【0011】
シリアルビットストリームの複数の複製の各々は、プライベートIPネットワークと、パブリックIPネットワークと、インターネットと、移動通信用グローバルシステム(GSM)ネットワークと、ローカルエリアネットワーク(LAN)と、メトロポリタンエリアネットワーク(MAN)と、ワイドエリアネットワーク(WAN)と、無線ネットワークと、衛星通信ネットワークと、セルラー通信ネットワークと、Bluetooth通信チャネルと、Wi-Fiネットワークからなる群より選択される、異なる通信チャネルを介して伝送される、請求項15に記載のコンピュータプログラム製品である。
【0012】
いくつかの実施形態では、シリアルビットストリームの複数の複製の各々は、異なる通信チャネルを介して伝送される。
【0013】
いくつかの実施形態では、通信チャネルの各々は、プライベートIPネットワークと、パブリックIPネットワークと、インターネットと、移動通信用グローバルシステム(GSM)ネットワークと、ローカルエリアネットワーク(LAN)と、メトロポリタンエリアネットワーク(MAN)と、ワイドエリアネットワーク(WAN)と、無線ネットワークと、衛星通信ネットワークと、セルラー通信ネットワークと、Bluetooth通信チャネルと、Wi-Fiネットワークからなる群より選択される。
【0014】
いくつかの実施形態では、整列させることが、データパケット類似性に少なくとも部分的に基づいて、時間窓内に受信されたデータパケットを整列スコア行列の列に配置することを含み、行列の各行が、シリアルビットストリームの複製のうちの1つを表す。
【0015】
いくつかの実施形態では、方法は、割り当てることをさらに含み、プログラム命令が、列内のデータパケットギャップおよびデータパケットの不一致のうちの1つに基づいて、列の各々に整列スコアを割り当てるためにさらに実行可能である。
【0016】
いくつかの実施形態では、行列の各列に関して、選択することが、列のデータパケットの大部分のデータパケット類似性によって決定されるコンセンサスに少なくとも部分的に基づく。
【0017】
いくつかの実施形態では、データパケット類似性が、データパケットコンテンツの比較に少なくとも部分的に基づいて決定され、データパケットコンテンツがハッシュ関数によって表される。
【0018】
上記の例示的な態様および実施形態に加えて、さらなる態様および実施形態は、図を参照することによって、および以下の詳細な説明を検討することによって明らかになるであろう。
【図面の簡単な説明】
【0019】
本開示の実施形態の非限定的な例は、この段落に続いて記載される本明細書に添付された図を参照して以下に記載される。2つ以上の図に表示される同一の機能には、通常、それらが表示されるすべての図で同じラベルでラベル付けされている。図中の本開示の実施形態の所与の特徴を表すアイコンにラベルを示すラベルは、所与の特徴を参照するために使用されてもよい。図に示されている特徴の寸法は、表示の便宜および明確さのために選択されており、必ずしも縮尺どおりに示されていない。例えば、いくつかの要素の寸法は、明確にするために他の要素に対して誇張されてもよく、または、いくつかの物理的構成要素が1つの機能ブロックまたは要素に含まれてもよい。さらに、適切であると考えられる場合、対応するまたは類似の要素を示すために、参照番号を図の間で繰り返す場合がある。
【0020】
本発明とみなされる主題は、本明細書の結論部分において特に指摘され、明確に特許請求されている。しかしながら、本発明は、その目的、特徴、および利点とともに、構成および操作方法の両方に関して、以下の添付の図面とともに読まれる場合、以下の詳細な説明を参照することによって最もよく理解され得る。本発明の実施形態は、添付図面の図に例として示され、限定されるものではなく、その中で、同様の参照番号は、対応する、類似する、または同様の要素を示し、その中で、以下のように示される。
【0021】
図1】本発明の例示的な実施形態によるシステムのブロック図を示す。
図2】本発明の例示的な実施形態による方法のフローチャートを示す。
【発明を実施するための形態】
【0022】
以下の詳細な説明では、本発明の完全な理解を提供するために、多くの特定の詳細が示されている。しかしながら、本発明は、これらの特定の詳細なしで実施され得ることが、当業者によって理解されるであろう。他の例では、既知の方法、手順、ならびに構成要素、モジュール、ユニットおよび/または回路は、本発明を不明瞭にしないように、詳細には記載されていない。ある実施形態に関して記載したいくつかの特徴または要素は、他の実施形態に関して説明した特徴または要素と組み合わされてもよい。明確にするために、同一または類似の特徴または要素の議論は繰り返さない場合がある。
【0023】
本発明の実施例はこの点に限定されないが、例えば、「処理」、「計算」、「算出」、「決定」、「確立」、「分析」、「検査」等のような用語を使用した説明は、コンピュータのレジスタおよび/またはメモリ内の物理量(例えば、電気量)として表されたデータを、動作および/または処理を実行する命令を格納し得るコンピュータのレジスタおよび/またはメモリもしくは他の情報非一時的な記憶媒体内の物理量として同様に表された他のデータに操作および/または変換するコンピュータ、コンピュータプラットフォーム、コンピュータシステムまたは他の電子計算デバイスの動作および/または処理を示し得る。本発明の実施例はこの点に限定されないが、ここで用いられる「複数」および「複数の」という用語は、例えば、「多数」または「2つ以上」を含んでもよい。「複数」または「複数の」という用語は、2つ以上の構成要素、デバイス、要素、ユニット、パラメータ等を記述するために明細書を通じて使用され得る。本明細書で使用される場合に設定される用語は、1つ以上の項目を含み得る。
【0024】
明示的に述べない限り、本明細書に記載される方法の実施形態は、時間的に特定の順序に、または時系列に制約されない。さらに、記載された方法要素のいくつかは、同時に、同じ時点で、または同時に発生するか、または実行され得る。記載された方法要素のいくつかは、方法の一連の操作の間に、スキップされてもよいし、繰り返されてもよい。
【0025】
データストリーミングにおけるリアルタイムの誤り回復のためのシステム、方法、およびコンピュータプログラム製品が開示されている。
【0026】
いくつかの実施形態において、本開示は、2つ以上の異なる通信経路またはチャネルを介して、送信側から、例えば、データパケットの形態で、複製された直列化データストリームをストリーミングし、個々のチャネルのいずれかにおける誤りを修正するために、複製された受信ストリームから受信側によりデータパケットをシームレスに再構築することを提供する。
【0027】
本開示は、パケット化されたビデオストリーミング、例えば、インターネットなどのノイズの多いおよび/または損失の多いネットワーク上のMPEGトランスポートストリームの分野において特に有用であり得る。したがって、いくつかの実施形態において、本開示は、ロバストなヒットレスフェイルオーバー機能を有する、インターネット上のライブ放送品質のビデオを提供し得る。
【0028】
いくつかの実施形態では、本開示は、完全なチャネル障害を考慮してもデータを回復することができ、それらが伝送するペイロードを修正する必要なく単純な独立した伝送ユニットで使用することができる、単純でスケーラブルな処理を提供する。
【0029】
いくつかの実施形態では、複数のルートは、複数の通信チャネルを介して複製された伝送チャネルによって生成することができる。いくつかの実施形態では、例えば、同じソース信号に調整された異なる場所にある複数の無線受信局を使用して、放送媒体を介した単一の伝送を聞く複数の受信ユニットを介して複数のルートを生成することができる。
【0030】
いくつかの実施形態では、誤り回復は、例えば、時間窓、到着時間、コンテンツ、および/またはデータパケットを定義および/または同期および/または整列させるための別のおよび/または類似の方法に基づいて、複数の通信チャネルを介して受信したデータパケットを整列させることによって達成され得る。
【0031】
いくつかの実施形態では、データパケット整列は、同一または類似のパケットが整列されるように、複数のチャネルを介して受信したパケットを配置することを含む。
【0032】
いくつかの実施形態では、データパケット整列は、シーケンス整列アルゴリズムを使用して実行され得、これは、時間窓で観察されたパケットシーケンスを最もよく説明するソースパケットの最も可能性の高いシーケンスを選択する。いくつかの実施形態では、シーケンス整列は、同一または類似のパケットが行列の行に整列されるやり方において、パケット間に可能なギャップを有する、行列の列にパケットシーケンスを配置するやり方である。
【0033】
いくつかの実施形態では、パケット整列を使用して、1つ以上のチャネルにおけるパケット喪失を克服することができる。例えば、第1のストリームにパケットが存在しない(または表されない)が、1つ以上の他のストリームに存在するか、または表される場合、受信側は、パケットが第1のストリームで喪失したと決定してもよく、他のストリームによって表されるようなパケットを含めるように選択してもよい。したがって、例えば、整列されると、第1のチャネルから受信された第3のパケットは、第2のチャネルから受信された第3のパケットと整列されることになる。第3のパケットが別のチャネルで欠落した場合、受信側は、このパケットがそのチャネルで喪失したと決定し、再構築されたストリームに含めるために、対応する第3のパケットのうちの1つを選択することができる。
【0034】
いくつかの実施形態では、一旦整列が達成されると、整列を使用して、パケット破損が存在する状態で、列内のコンセンサスパケットを選択することによって、対応するチャネル内のそれらの対応する既存のパケットで欠落パケットのギャップを埋める統一シーケンスを作成するために使用することができる。
【0035】
いくつかの実施形態では、時間窓内の整列アルゴリズムは、整列にギャップがあること、および不完全な一致がある(例えば、パケットの破損による)ことに対してペナルティを与えるスコアリング関数を最大化する。いくつかの実施形態では、長いギャップを有することに対するペナルティは、複数の短いギャップを有することによるペナルティよりも低く、IPネットワークにおける連続するパケット喪失事象における典型的な相関を捕捉し得る。
【0036】
図1は、本発明のいくつかの実施形態による、データストリーミングにおけるリアルタイム誤り回復のための例示的なシステム100を示す。図示されるように、送信側(または送信元)110からのデータは、ネットワーク130を介して、いくつかの通信チャネル140を介して受信側(または宛先)120に送信され得る。送信側110および受信側120は、任意の適用可能なコンピューティングデバイス、例えば、サーバ、カメラ、スマートフォン、または家庭用コンピュータであり得る。本発明の実施形態は、送信側または送信元110の性質または種類によって、および/または受信側または宛先120の性質または種類によって制限されないことが認識されるであろう。明確化および簡略化のために、1つの送信側110および1つの受信側120のみが示されているが、実施形態は、任意の数のそのようなノードを含んでもよく、例えば、いくつかの送信側110が、通信チャネル140と類似の通信チャネルを介して受信側120にデータを送信してもよいことが、理解されよう。通信チャネル140は、物理チャネルまたはルート(例えば、ルートは、ワイヤ、ルータなどであるか、またはそれらを含むことができる)であり得、またはそれらは、論理チャネルまたはルート(例えば、ユーザデータグラムプロトコル(UDP)接続)であり得、物理チャネルと論理チャネルとの組み合わせであり得る。
【0037】
ネットワーク130は、プライベートIPネットワーク、またはパブリックIPネットワーク、またはインターネット、またはそれらの組み合わせであるか、それらを含むか、またはその一部であり得る。付加的または代替的に、ネットワーク130は、移動通信用グローバルシステム(GSM)ネットワークであるか、それを含むか、またはその一部であり得る。例えば、ネットワーク130は、インターネットなどのIPネットワーク、GSM関連ネットワーク、および当技術分野で知られているようなネットワークをブリッジするまたは他の方法で接続するための任意の機器を含むか、備え得る。ネットワーク130は、パブリックデータネットワークまたはプライベートデータネットワーク、ローカルエリアネットワーク(LAN)、メトロポリタンエリアネットワーク(MAN)、ワイドエリアネットワーク(WAN)、有線ネットワークまたは無線ネットワーク、衛星通信ネットワーク、セルラー通信ネットワーク、前述の任意の組み合わせ、および/または他の任意の適切な通信手段であってもよく、それらを含むか、またはその一部であってもよい。したがって、ネットワーク130の多数の要素(例えば、アクセスポイント、基地局、通信衛星、GPS衛星、ルータ、および電話スイッチ)が暗示されているが、図示されていない。本発明の実施形態は、ネットワーク130の性質または種類によって制限されないことが認識されるであろう。
【0038】
一実施形態は、送信側から2つ以上の異なるルートまたはチャネルを使用してデータパケットをストリーミングし、受信側によってデータパケットをシームレスに再構築することによって誤り回復を提供することができる。一般に、パケットの元のストリーム(例えば、送信側110である、送信側によって送信された)は、複数の複製された受信ストリームに基づいて受信側(例えば、受信側120)によって再構築される。一実施形態は、パケットシーケンス番号または他の順序情報が利用できない場合でも、元のストリームを正しく再構築できることに留意されたい。
【0039】
複数のルートは、複製された伝送、または、例えば、同じソース信号に調整された異なる場所にある複数の無線受信局を使用して、放送媒体を介した単一の伝送を聞く複数の受信ユニットのいずれかとすることができる。記載したように、ルートは物理ルートおよび/または論理ルートにすることができる。
【0040】
いくつかの実施形態では、受信側120は、時間窓または時間間隔に従ってパケットを整列させる。例えば、例示50ミリ秒の時間間隔で複数のチャネルからパケットのストリームが受信された。したがって、例えば、時間間隔10:00:00:00(HR:MIN:SEC:MILL)から10:00:00:50までに受信されたパケットが整列され、次に10:00:00:51から10:00:00:100までの時間間隔中に複数のチャネルから受信したパケットのストリームが整列されて、その繰り返しとなる。時間および/または時間スロット、間隔または窓を定義および/または同期させるための任意の技術または機構が使用され得る。時間制限のある窓でパケットを整列させると、(オフラインと比較して)リアルタイムで連続的にストリームを再構築することができ、計算の複雑さを軽減することができる。整列に基づき、受信側は、送信側によって送信された元のシーケンスである可能性が最も高いパケットのシーケンスを選択する。
【0041】
一般に、本明細書で指す整列、またはシーケンス整列は、複数のチャネルにわたって受信されたパケットを行列に並べることを含み、各チャネルストリーミングは、同一または類似のパケットが別々の行列の列に並べられるように行列の行で表現されている。例えば、整列されると、第1のチャネル140から受信された(現在の時間窓内の)第3のパケットは、第2のチャネル140から受信された第3のパケットと同じ列にある。同じパケットが、例えば、2つの別々の列(それぞれが各々のチャネルを表す)に表示されているが、第3の列(第3のチャネルを表す)において欠落している場合、受信側は、パケットが第3のチャネルで喪失したかまたは脱落したと決定し、他の2つの列に現れるパケットのうちの1つが再構築されたストリームに含めるために選択されてもよい。
【0042】
いくつかの実施形態では、パケットの実際のコンテンツが整列処理で使用され得る。例えば、ハッシュ関数または他の関数がパケットのコンテンツを表すために使用されてもよく、整列は、例えばハッシュ値を比較することによって、同じ列のパケットが同じコンテンツを有するかどうかをチェックすることを含んでもよい。例えば、再構築されたストリームに含めるためのパケットは、パケットの同じコンテンツを含む行の大部分に基づいて選択され得る。例えば、(それぞれの複数のストリームを表す)複数の行における第6列のパケットのコンテンツとは同じであり、追加のストリームを表す単一の行における第6列のパケットのコンテンツとは異なると(受信側120によって)決定された場合、受信側は、追加のストリームにおけるパケットが転送中に破損したと推測し、無視され得る。したがって、受信側は、いくつかのストリームのいずれかからの再構築されたストリームに含めるために、6つの同一ストリームのパケットのうちの1つを選択し得る。
【0043】
一実施形態は、パケット喪失を克服するために記載されたような整列を使用することができる。例えば、第1のストリームを表す第1の行/列のペアにパケットが存在しない(または表されない)が、1つ以上の他のストリームの同じ列にパケットが存在するまたは表される場合、受信側は、パケットが第1のストリーム内で喪失したまたは脱落したと決定し、他のストリームによって表されるパケットを含めるために選択し得る。
【0044】
いくつかの実施形態では、受信側は、整列処理においてスコアリング関数および/または閾値を使用してもよい。例えば、記載したようにパケットを行列に配置した後、スコアリング関数は、ギャップに基づいて、および/またはコンテンツの不一致に基づいて、時間窓の値を計算してもよい。例えば、ギャップは、記載されているように列にパケットがないことであり、不一致は、記載されているように同じ列内の異なるコンテンツであり得る。いくつかの実施形態では、それぞれのストリームのパケットのセットの整列が達成されたか否かを決定するために、スコアリング関数および/または閾値が使用される。
【0045】
本発明の範囲から逸脱することなく、それぞれのストリームまたはチャネルのセットから受信したパケットシーケンスのセットを整列させるために、任意のスコアリング関数、アルゴリズムまたは論理を使用することができる。本明細書で議論される特定のアルゴリズムは、使用され得る整列アルゴリズムの一例に過ぎないことが理解されよう。
【0046】
いくつかの実施形態では、整列アルゴリズムは、2つのパケットのペイロードを比較するための/比較するときのパケット類似度スコアと、パケット間のギャップを挿入する(または表す)ためにスコア(またはペナルティ)とを使用する。いくつかの実施形態では、類似性関数は、通信チャネルの確率的特性を考慮して、観測されたパケットの値が与えられた場合にソースパケットが同一であることの尤度または確率に依拠する。例えば、チャネルが(パケットの脱落は可能、パケットの破損は不可能である)消去チャネルの場合、スコアリング関数は、比較したパケットのペイロードが同一であれば1、パケットとギャップとを比較した場合は0(パケット喪失の尤度を表す)、パケットが非類似であればマイナス無限大(パケットの破損不可能な尤度を表す)を返すスコアリング関数とすることができる。パケットのビット反転(例えば、0が1になる)が関連するチャネルで可能である場合、パケットの類似性は、パケットペイロード間のハミング距離、すなわち、第1のパケットのペイロードが第2のパケットのペイロードとどれだけ異なるかに依拠し得る。
【0047】
明確化および簡略化のために、本明細書では、2つのストリームから受信したパケットの2つのシーケンスを整列させる簡略化されたケースを記載する。一般に、パケットシーケンスを整列し、元の(ソース)パケットシーケンスを決定または識別する方法は、動的プログラミングアプローチを使用してシーケンスの整列に対するスコア関数を最大化するやり方で2つのシーケンスの一方を他方の上に配置するものである。
【0048】
例えば、サイズ(パケット数)
【数1】

との、2つのシーケンスS、Sに対して、この方法は、
【数2】

の二次元行列Mを構築する。
【0049】
類似性関数をσ、長さxのギャップを挿入する際のペナルティをGであると仮定すると、本方法は以下の式に従って行列Mを初期化する。
【数3】
【0050】
上記のような行列Mの初期化には、ギャップがある状態で整列を開始するというペナルティが含まれていることに注意されたい。残りの行列セルは、以下に示すように、以前に計算された3つの値の間の最大値を選択することによって満たされる。
【数4】
【0051】
上記において、第1の項はパケットS(i)とパケットS(j)とをマッチングさせるときのスコアを計算し、第2の項および第3の項は以前に計算した値に依拠し、それぞれS(i)またはS(j)の前に長さxのギャップ(パケットのドロップ列)を挿入するときのスコアを表している。
【0052】
このように記載した最大値を設定すると、行列Mの各Mi、jセルには、整列させるサブセットS(1..i)とS(1..j)との最適スコアが含まれ、
【数5】

が最適整列スコアを保持することになる。
【0053】
いくつかの実施形態では、パケットシーケンスの整列の構築、識別、または選択は、
【数6】

におけるスコアを最大化する決定をバックトラッキングすることによって、逆の順序で行われる。当技術分野で知られているように、バックトラッキング処理では、同じ最大スコアに至る複数のパスが存在し得る。本明細書に記載する方法は、Mの最大スコアをもたらすパスを識別するために使用することができる。
【0054】
例えば、各バックトラッキングステップで、セル(i,j)のスコアを最大にした前または最後の選択セルを記録または検索する方法がある。効率化のために、最大スコアを導いた前または最後のセルへのポインタを、構築段階の行列セルに格納することができる。
【0055】
次に、後続の論理に従って、2つの整列されたシーケンスが末尾から先頭に向かって構築される。
・行列セル(i,j)が行列セル(i-1,j-1)に移動した場合、パケットS(i)が第1の整列されたシーケンスに追加され、パケットS(j)が第2の整列されたシーケンスに追加される。
・行列セル(i,j)がセル(i-x,j)に移動した場合、パケットS(i)を第1のシーケンスに追加し、第2のシーケンスに長さxのギャップを追加する。
・行列のセル(i,j)がセル(i,j-x)に移動した場合、長さxのギャップが第1のシーケンスに追加され、パケットS(j)が第2のシーケンスに追加される。行列の端に到達すると、この処理は終了する。
【0056】
バックトラッキング処理の出力は、パケットの2つのシーケンスであり、一方が他方の上にあり、場所によってはギャップが生じる可能性がある。
【0057】
3つ以上のシーケンスを整列させることは、より高次元の行列を使用して類似のやり方で行うことができる。いくつかの改善策が考えられ得るが、例えば、シーケンスのペアを繰り返し整列させることで、より高速な近似整列を実現することも可能である。
【0058】
上記の整列処理の出力は、検索窓内のすべてのシーケンス間のコンセンサスシーケンスである。コンセンサスシーケンスを構築するために、整列の各列で、多数決(またはビット単位の多数決)により最も可能性の高いパケットを選択する方法がある。例として、パケットが1バイト長で、σ、S1、S2およびGは、以下に示すようなものであるとする。
【数7】
【0059】
この例示的なケースでは、G=xであるため、大きなギャップを挿入するスコアは、複数の小さなギャップを挿入するスコアと等価である。したがって、記載したようにバックトラッキング処理でスコアを計算するには、スコア行列を埋める際に、直ぐ左隣、上隣、斜め左上のセル、およびバックトラッキング処理を考慮すれば良いことになる。
【0060】
上記の例に関して、記載した動的プログラミング論理に従って初期化され、充填されたスコア行列は、以下のようになる。
【数8】
【0061】
最後のセル(値-1)からバックトラッキングを行うには、現在のセルスコアが最大となるパスに従って、上、左、または斜め上および斜め下のセルに移動する必要がある。バックトラッキング処理に続いて、後ろから前に向かって以下のようなシーケンスが生成される。
【数9】
【0062】
整列されたシーケンスに基づいて、再構築されたコンセンサスシーケンスは次のようになる。
【数10】
【0063】
様々な論理とヒューリスティックとが使用されてもよい。例えば、長いギャップを有することに対するペナルティ(例えば、記載されるように計算された値を減少させる)は、複数の短いギャップを有することによるペナルティよりも低くてもよく、したがって、例えば、IPネットワークにおける連続するパケット喪失事象における典型的な相関を補償することが可能である。
【0064】
論じたように、任意のスコアリング関数は、本発明の範囲から逸脱することなく使用することができ、例えば、他の実施形態では、上述のようにスコアを最大化するのではなく、スコアリング関数は、識別された各ギャップまたは不一致について初期値を減少させ、得られた値が閾値超であれば、受信側は適切な整列が達成された(したがってストリームは関連の時間窓について再構築することができる)と決定し得る。スコアリング関数によって生成された値が閾値を下回る(例えば、多くの破損パケットまたは喪失したパケットが原因)場合、受信側はストリームを正しく再構築できないと決定することができ、受信側はさらなる処置、例えば、再送信の要求、整列されていないシーケンスのうちの1つを選択、ユーザへの警告などを行うことができる。
【0065】
いくつかの実施形態では、スコアリング関数は、チャネル140の種類または属性に基づいて自動的に選択され得る。例えば、(例えば、パケット喪失および破損が起こりにくい)物理的なワイヤを介して実装されるチャネルには、第1の要因および/または閾値のセットが使用されてもよく、無線インフラストラクチャを介して実装されるチャネルには、第2の要因および/または閾値のセットが使用されてもよい。
【0066】
いくつかの実施形態では、方法は、チャネル140の種類または属性に基づいて自動的に選択され得る。例えば、チャネル140が比較的信頼できることが既知である場合、受信側120が正しいパケットを見つけたと決定するには、2列または3列の一致で十分であるが、チャネル140が信頼できないことが既知である場合、受信側120は4つまたは5つの一致するパケットを必要とし得る。したがって、一実施形態は、使用される通信チャネルの属性に基づいてストリームを再構築するための論理を自動的に調整または選択することができる。
【0067】
別のケースでは、パケットが喪失したり脱落したりする可能性があるが、破損することはないことが既知である(例えば、使用されているインフラストラクチャに基づいて)場合、送信側と受信側とは自動的に2つのチャネルのみを使用するように戻すことができる。パケットの破損が発生する可能性がある場合、送信側と受信側とは3つのチャネルを使用するように自動的に選択することができる。したがって、チャネル数140を自動的に選択することができる。
【0068】
本発明の例示的な実施形態による方法のフローチャートである図2を参照する。ブロック210によって示されるように、同じコンテンツが複数の通信チャネルを介して送信され得る。例えば、ビデオカメラから取得したコンテンツをパケットに分割し、各パケットを複数のネットワーク接続を介して送信することができる。ブロック215によって示されるように、受信されたパケットは整列され得る。例えば、受信側120は、いくつかのチャネル140を介してパケットを受信し、受信したパケットを行列に並べ、最適な整列が達成されるまでシフトまたは他の操作を実行する。いくつかの実施形態では、整列させることは、記載されたように、単にパケットを行列に配置すること、およびパケットによって示される整列のレベルを決定することを含み得る。ブロック220によって示されるように、記載されるようにチャネルを介して送信されるコンテンツは、整列に基づいて再構築され得る。例えば、再構築されたストリームに含まれるべきパケットは、記載されているように、行列内のパケットの整列に基づいて選択され得る。
【0069】
本出願における本発明の実施形態の記載は、例示として提供されるものであり、本発明の範囲を限定することを意図するものではない。本発明の特定の特徴を本明細書で例示し、説明してきたが、多くの修正、置換、変更、および均等物が、当業者には着想され得るであろう。様々な実施形態が提示されてきた。これらの実施形態の各々は、もちろん、提示された他の実施形態からの特徴を含み得、具体的に記載されていない実施形態は、本明細書に記載された様々な特徴を含み得る。
【0070】
当業者によって認められるように、本発明の態様は、システム、方法、またはコンピュータプログラムとして具現化することができる。したがって、本発明の態様は、全体的にハードウェアの実施形態、全体的にソフトウェアの実施形態(ファームウェア、常駐ソフトウェア、マイクロコード等を含む)、または、ソフトウェアおよびハードウェアの態様を組み合わせた実施形態という形態を取ることができ、それらは全て本明細書において、「回路」、「モジュール」、または「システム」と一般的に称することができる。さらに、本発明の態様は、具現化されたコンピュータ読み取り可能プログラムコードを有する(1つ以上のコンピュータ読み取り可能媒体において具現化された)コンピュータプログラムの形態を取ることも可能である。
【0071】
1つ以上のコンピュータ読み取り可能媒体のあらゆる組み合わせを利用することができる。コンピュータ読み取り可能媒体は、コンピュータ読み取り可能信号媒体またはコンピュータ読み取り可能記憶媒体とすることができる。コンピュータ読み取り可能記憶媒体は例えば、限定ではないが、電子、磁気、光、電磁、赤外線、または半導体のシステム、装置、またはデバイス、または前述のもののいずれかの適切な組み合わせとすることができる。コンピュータ読み取り可能記憶媒体のさらに具体的な例(非網羅的な列挙)は、以下を含む。すなわち、1本以上のワイヤを含む電気的接続、携帯型コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読み取り専用メモリ(ROM)、消去可能プログラマブル読み取り専用メモリ(EPROMまたはフラッシュ・メモリ)、光ファイバ、携帯型コンパクト・ディスク読み取り専用メモリ(CD-ROM)、光記憶デバイス、磁気記憶デバイス、または前述のもののいずれかの適切な組み合わせである。この文書の文脈において、コンピュータ読み取り可能記憶媒体は、命令実行システム、装置、またはデバイスによってまたはそれと接続して用いるためにプログラムを含有または記憶することができるいずれかのタンジブルな媒体とすることができる。
【0072】
コンピュータ読み取り可能信号媒体は、例えばベースバンドにおいてまたは搬送波の一部として、具現化されたコンピュータ読み取り可能プログラムコードを有する伝播データ信号を含むことができる。かかる伝播信号は様々な形態のいずれかを取ることができ、それらは限定ではないが、電磁、光、またはそれらのいずれかの適切な組み合わせを含む。コンピュータ読み取り可能信号媒体は、コンピュータ読み取り可能記憶媒体でないが、命令実行システム、装置、またはデバイスによってまたはそれと接続して用いるためにプログラムを伝達、伝播、または転送することができるいずれかのコンピュータ読み取り可能媒体とすることができる。
【0073】
コンピュータ読み取り可能媒体上で具現化されるプログラムコードは、限定ではないが、無線、有線、光ファイバ・ケーブル、RF等、または前述のもののいずれかの適切な組み合わせを含むいずれかの適切な媒体を用いて伝送することができる。
【0074】
本発明の態様の動作を実行するためのコンピュータ・プログラムコードは、Java、Smalltalk、C++等のオブジェクト指向プログラミング言語、および「C」プログラミング言語または同様のプログラミング言語等の従来の手順プログラミング言語を含む1つ以上のプログラミング言語のいずれかの組み合わせにおいて記述することができる。プログラムコードは、全体的にユーザのコンピュータ上で、部分的にユーザのコンピュータ上で、スタンドアロンのソフトウェア・パッケージとして、部分的にユーザのコンピュータ上でおよび部分的に遠隔コンピュータ上で、または全体的に遠隔コンピュータもしくはサーバ上で、実行することができる。後者のシナリオでは、リモートコンピュータは、ローカルエリアネットワーク(LAN)もしくはワイドエリアネットワーク(WAN)を含む任意の種類のネットワークを介してユーザのコンピュータに接続することができ、または、接続は、外部コンピュータに(例えば、インターネットサービスプロバイダを使用してインターネット経由で)なされ得る。
【0075】
本発明の実施形態に従った方法、装置(システム)、およびコンピュータプログラム製品のフローチャート図および/またはブロック図を参照して、本開示について本明細書に記載する。フローチャート図および/またはブロック図の各ブロック、およびフローチャート図および/またはブロック図の組み合わせは、コンピュータプログラム命令によって実施可能であることは理解されよう。これらのコンピュータプログラム命令は、汎用コンピュータ、特殊目的コンピュータ、または他のプログラマブル・データ処理装置のハードウェアプロセッサに提供されて機械を生成することができ、これによって、コンピュータまたは他のプログラマブル・データ処理装置のプロセッサによって実行される命令が、フローチャートまたはブロック図あるいはその両方のブロックまたは複数のブロックに規定された機能/行為を実施するための手段を生成するようになっている。
【0076】
また、これらのコンピュータプログラム命令はコンピュータ読み取り可能媒体に記憶することができ、これによって、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイスに特定の方法で機能するように指示することができ、これにより、コンピュータ読み取り可能媒体に記憶された命令が、フローチャートまたはブロック図あるいはその両方のブロックまたは複数のブロックに規定された機能/行為を実施する命令を含む製造品を生成するようになっている。
【0077】
また、コンピュータプログラム命令を、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイスにロードして、そのコンピュータ、他のプログラマブル装置、または他のデバイス上で一連の動作ステップを実行させてコンピュータ実施処理を生成することができ、これによって、コンピュータまたは他のプログラマブル装置上で実行する命令が、フローチャートまたはブロック図あるいはその両方のブロックまたは複数のブロックに規定された機能/行為を実施するための処理を提供するようになっている。
【0078】
図中のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータプログラム製品の可能な実施のアーキテクチャ、機能、および動作を示す。これに関して、フローチャートまたはブロック図の各ブロックは、規定された論理機能を実施するための1つ以上の実行可能命令を含むコードのモジュール、セグメント、または一部を表すことができる。また、いくつかの代替的な実施において、ブロックに明記した機能は図面に明記した順序どおりでなく発生する場合があることに留意すべきである。例えば、連続して示されている2つのブロックは、実際には、実質的に同時に実行される場合があり、またはそのブロックは、関与する機能に応じて逆の順序で実行される場合があってもよい。また、ブロック図および/またはフローチャート図の各ブロック、およびブロック図および/またはフローチャート図の組み合わせは、規定された機能もしくは行為を実行する特殊目的ハードウェア・ベースのシステム、または特殊目的ハードウェアおよびコンピュータ命令の組み合わせによって実施可能であることに留意すべきである。
【0079】
本発明の様々な実施形態の説明は、例示の目的で提示されているが、網羅的であること、または開示された実施形態に限定されることは意図されない。説明された実施形態の範囲および趣旨から逸脱することなく、多くの修正および変形が当業者には明らかであろう。本明細書で使用される用語は、実施形態の原理、実際の応用、もしくは市場で見られる技術に対する技術的改善を最もよく説明するために、または当業者以外の人が本明細書で開示される実施形態を理解できるように選択されたものである。
【0080】
本出願の記載よび特許請求の範囲において、「含む(comprise)」、「含む(include)」、および「有する(have)」という語、ならびにそれらの形態の各々は、必ずしも、その語が関連付けられ得るリスト内のメンバーに限定されない。さらに、本出願と参照により組み込まれる任意の文書との間に不一致がある場合、本出願が支配することが本明細書によって意図されている。
図1
図2
【国際調査報告】