(57)【特許請求の範囲】
【請求項１】
ネットワーク内のデータパケットを転送する方法であって、
前記データパケットの少なくともペイロードデータ、シーケンスデータ、および宛先データを複製するステップを含む、少なくとも2つのトランジットデータパケットを形成するステップと、
前記少なくとも2つのトランジットデータパケットのうちの1つ目を、第1の定義されたネットワークパスに沿って、前記宛先データに従って選択されるエグレスノードに伝送するステップと、
前記少なくとも2つのトランジットデータパケットのうちの2つ目を、前記第1の定義されたネットワークパスとは異なる第2の定義されたネットワークパスに沿って、前記エグレスノードに伝送するステップと、
を含み、
プログラム可能なイングレスノードが、処理デバイスとメモリとを備え、各ステップは、前記メモリに格納された転送命令を実行する前記処理デバイスによって実行される、方法。
【請求項２】
前記形成および転送するステップの前に、前記データパケットを少なくとも前記シーケンスデータおよび前記宛先データを用いて識別するステップをさらに含む、請求項1に記載の方法。
【請求項３】
前記転送するステップが、異なるネットワークパスデータを前記少なくとも2つのトランジットデータパケットの1つ1つに組み入れるステップを含み、前記少なくとも2つのトランジットデータパケットの1つ1つの前記ネットワークパスデータが前記異なるネットワークパスと関連付けられている、請求項1に記載の方法。
【請求項４】
受信したデータパケットの前記シーケンスデータをトラッキングするステップと、
前記トラッキングに基づいて、前記受信したデータパケットをデータ宛先に転送するステップと、をさらに含む、請求項1に記載の方法。
【請求項５】
前記受信したデータパケットの前記シーケンスデータを、少なくとも1つの以前に受信したデータパケットの格納シーケンスデータと比較するステップを含む、トラッキングするステップをさらに含み、
前記受信したデータパケットの前記シーケンスデータが前記少なくとも1つの以前に受信したデータパケットの前記格納シーケンスデータと一致しないと決定すると、前記転送するステップが実施される、請求項4に記載の方法。
【請求項６】
前記受信したデータパケットの所与のシーケンスデータが前記少なくとも1つの以前に受信したデータパケットの前記格納シーケンスデータと一致すると決定すると、前記所与のシーケンスデータと関連付けられる前記格納シーケンスデータを消去するステップをさらに含む、請求項5に記載の方法。
【請求項７】
前記受信したデータパケットの前記シーケンスデータが前記少なくとも1つの以前に受信したデータパケットの前記格納シーケンスデータと一致しないと決定すると、前記シーケンスデータを前記エグレスノードのメモリおよびネットワークコントローラのメモリのうちの少なくとも1つに格納するステップをさらに含む、請求項5に記載の方法。
【請求項８】
前記ネットワークが、複数のプログラム可能なネットワークノードを備えるソフトウェア定義ネットワーク(SDN)である、請求項1に記載の方法。
【請求項９】
形成するステップ、前記第1のパケットを伝送するステップ、および前記第2のパケットを伝送するステップが、SDNコントローラから受信される命令に従って実施される、請求項8に記載の方法。
【請求項１０】
前記第1のパスおよび前記第2のパスが前記SDNコントローラによって指定される、請求項9に記載の方法。
【請求項１１】
前記複数のプログラム可能なネットワークノードが、プロトコル忘却型フォワーディング(POF)スイッチである、請求項8に記載の方法。
【請求項１２】
前記宛先データが、カスタムプロトコル、リアルタイム転送プロトコル(RTP)、および伝送制御プロトコル(TCP)のうちの少なくとも1つを伴う、請求項1に記載の方法。
【請求項１３】
ネットワーク外のデータ宛先に連結されるエグレスノードを含む複数のノードを有する前記ネットワーク内のデータパケットを転送するためのプログラム可能なイングレスノードであって、前記プログラム可能なイングレスノードが、データソースへの動作接続のためおよび前記ネットワークを介した前記エグレスノードへの接続のためのものであり、
処理デバイスと、
前記処理デバイスに動作可能に連結され、かつ転送命令を格納したメモリであって、前記転送命令が、前記処理デバイスによって実行されるとき、前記プログラム可能なイングレスノードに、
前記データパケットの少なくともペイロードデータ、シーケンスデータ、および宛先データを複製することを含む、少なくとも2つのトランジットデータパケットを形成させ、
前記少なくとも2つのトランジットデータパケットのうちの1つ目を、第1の定義されたネットワークパスに沿って、前記宛先データに従って選択されるエグレスノードに伝送させ、かつ
前記少なくとも2つのトランジットデータパケットのうちの2つ目を、前記第1の定義されたネットワークパスとは異なる第2の定義されたネットワークパスに沿って、前記エグレスノードに伝送させる、メモリと、
を備える、プログラム可能なイングレスノード。
【請求項１４】
前記転送することが、異なるネットワークパスデータを前記トランジットデータパケットの1つ1つに組み入れることを含み、前記少なくとも2つのトランジットデータパケットの1つ1つの前記ネットワークパスデータが、前記異なるネットワークパスと関連付けられている、請求項13に記載のプログラム可能なイングレスノード。
【請求項１５】
前記ネットワークがソフトウェア定義ネットワーク(SDN)である、請求項13に記載のプログラム可能なイングレスノード。
【請求項１６】
前記プログラム可能なイングレスノードがSDNスイッチである、請求項15に記載のプログラム可能なイングレスノード。
【請求項１７】
前記SDNスイッチが、OpenFlowスイッチおよびプロトコル忘却型フォワーディング(POF)スイッチのうちの少なくとも1つである、請求項16に記載のプログラム可能なイングレスノード。
【請求項１８】
前記宛先データが、カスタムプロトコル、リアルタイム転送プロトコル(RTP)、および伝送制御プロトコル(TCP)のうちの少なくとも1つを伴う、請求項13に記載のプログラム可能なイングレスノード。
【請求項１９】
データソースに連結されるイングレスノードを含む複数のノードを有するネットワークへの接続のためのプログラム可能なエグレスノードであって、前記プログラム可能なエグレスノードがさらに、前記ネットワークを介して前記イングレスノードへの動作接続のためおよびデータパケットを前記ネットワーク外のデータ宛先に転送するためのものであり、
処理デバイスと、
前記処理デバイスに動作可能に連結され、かつ転送命令を格納したメモリであって、前記転送命令が、前記処理デバイスによって実行されるとき、前記プログラム可能なイングレスノードに、
受信したデータパケットのシーケンスデータを少なくとも1つの以前に受信したデータパケットの格納シーケンスデータと比較させ、かつ
前記受信したデータパケットの前記シーケンスデータが以前に伝送されたデータパケットに対応する格納シーケンスデータと一致しないと決定すると、前記受信したデータパケットを前記データ宛先に転送させる、メモリと、
を備える、プログラム可能なエグレスノード。
【請求項２０】
前記転送命令が、前記受信したデータパケットの所与のシーケンスデータが前記少なくとも1つの以前に受信したデータパケットの前記格納シーケンスデータと一致すると決定すると、前記所与のシーケンスデータに関連付けられる前記格納シーケンスデータを消去することをさらに含む、請求項19に記載のプログラム可能なエグレスノード。
【請求項２１】
前記シーケンスデータが、前記エグレスノードのメモリおよびネットワークコントローラのメモリのうちの少なくとも1つに格納される、請求項19に記載のプログラム可能なエグレスノード。
【請求項２２】
前記ネットワークがソフトウェア定義ネットワーク(SDN)である、請求項19に記載のプログラム可能なエグレスノード。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本出願は、2015年1月30日に出願された表題「METHOD FOR FORWARDING DATA PACKETS IN A NETWORK AND PROGRAMMABLE INGRESS AND EGRESS NODES THEREFORE」の米国特許出願第14/610,673号の優先権の利益を主張するものであり、その内容は参照により本明細書に組み込まれる。
分野
【０００２】
本改善は、概して、ネットワーク通信の分野、ならびにより具体的には、ネットワーク内のデータパケットをストリーミングするためのシステム、デバイス、および方法に関する。
【背景技術】
【０００３】
データストリーミングは、例えば、サービスプロバイダによってネットワークを通じて提供されているデジタルコンテンツをそのままエンドユーザが消費することを望むときに使用される。そのようなデータストリーミングは、典型的には、エンドユーザがデジタルコンテンツを消費できるようにする前に、デジタルコンテンツの十分な部分をダウンロードすることに関連付けられる時間遅延を管理する。
【０００４】
デジタルコンテンツは、典型的には、データパケットのシーケンスの形態でネットワークを通じて伝送される。データパケットのうちの1つまたは複数の損失、損傷、または遅延は、エンドユーザに提供されるデータストリーミングの品質に影響を与え得ることが理解されよう。
【０００５】
データストリーミングに関与する既存のシステム、デバイス、および方法は、ある程度は満足のいくものであったが、特にデータストリーミングの品質に関連する問題を解決することに関しては、未だ改善の余地がある。
【発明の概要】
【課題を解決するための手段】
【０００６】
一態様に従って、ネットワーク内のデータパケットを転送するための方法が提供される。本方法は、データパケットの少なくともペイロードデータ、シーケンスデータ、および宛先データを複製するステップを含む、少なくとも2つのトランジットデータパケットを形成するステップと、少なくとも2つのトランジットデータパケットのうちの1つ目を、第1の定義されたネットワークパスに沿って、宛先データに従って選択されるエグレスノードに伝送するステップと、少なくとも2つのトランジットデータパケットのうちの2つ目を、第1の定義されたネットワークパスと異なる第2の定義されたネットワークパスに沿って、エグレスノードに伝送するステップと、を含み得る。
【０００７】
別の態様に従って、ネットワーク外のデータ宛先に連結されるエグレスノードを含む複数のノードを有するネットワーク内のデータパケットを転送するためのプログラム可能なイングレスノードが提供され、プログラム可能なイングレスノードは、データソースへの動作接続のためおよびネットワークを介したエグレスノードへの接続のためのものである。プログラム可能なイングレスノードは、処理デバイスと、処理デバイスに動作可能に連結され、かつ転送命令を格納したメモリとを備え得、転送命令は、処理デバイスによって実行されるとき、プログラム可能なイングレスノードに、データパケットの少なくともペイロードデータ、シーケンスデータ、および宛先データを複製することを含む、少なくとも2つのトランジットデータパケットを形成させ、少なくとも2つのトランジットデータパケットのうちの1つ目を、第1の定義されたネットワークパスに沿って、宛先データに従って選択されるエグレスノードに伝送させ、かつ少なくとも2つのトランジットデータパケットのうちの2つ目を、第1の定義されたネットワークパスと異なる第2の定義されたネットワークパスに沿ってエグレスノードに伝送させる。
【０００８】
別の態様に従って、データソースに連結されるイングレスノードを含む複数のノードを有するネットワークへの接続のためのプログラム可能なエグレスノードが提供され、プログラム可能なエグレスノードはさらに、ネットワークを介してイングレスノードへの動作接続のためおよびデータパケットをネットワーク外のデータ宛先に転送するためのものである。プログラム可能なエグレスノードは、処理デバイスと、処理デバイスに動作可能に連結され、かつ転送命令を格納したメモリとを備え得、転送命令は、処理デバイスによって実行されるとき、プログラム可能なイングレスノードに、受信したデータパケットのシーケンスデータを少なくとも1つの以前に受信したデータパケットの格納シーケンスデータと比較させ、かつ受信したデータパケットのシーケンスデータが以前に伝送されたデータパケットに対応する格納シーケンスデータと一致しないと決定すると、受信したデータパケットをデータ宛先に転送させる。
【０００９】
別の態様に従って、ネットワーク内のデータパケットを転送するための方法が提供される。本方法は、データパケットの少なくともペイロードデータ、シーケンスデータ、および宛先データを複製するステップを含む、少なくとも2つのトランジットデータパケットを形成するステップと、少なくとも2つのトランジットデータパケットを異なるネットワークパスに沿って転送するステップとを含み、エグレスノードへ導く異なるネットワークパスは、宛先データに基づく。
【００１０】
別の態様に従って、ネットワーク内のデータパケットを転送するためのプログラム可能なイングレスノードが提供される。プログラム可能なイングレスノードは、ネットワークに動作可能に連結される処理デバイスであって、ネットワークが、データソースに連結される少なくともプログラム可能なイングレスノードおよびデータ宛先に連結されるエグレスノードを含む少なくとも複数のノードを有する、処理デバイスと、処理デバイスによって実行可能である第1の転送命令を格納したメモリとを備える。第1の転送命令は、データパケットの少なくともペイロードデータ、シーケンスデータ、および宛先データを複製することを含む、少なくとも2つのトランジットデータパケットを形成すること、および少なくとも2つのトランジットデータパケットを異なるネットワークパスに沿って転送することを含み得、エグレスノードへ導く異なるネットワークパスは、宛先データに基づく。
【００１１】
別の態様に従って、ネットワーク内のデータパケットを転送するためのプログラム可能なエグレスノードが提供される。プログラム可能なエグレスノードは、ネットワークに動作可能に連結される処理デバイスであって、ネットワークが、少なくともデータソースに連結されるイングレスノードおよびデータ宛先に連結されるプログラム可能なエグレスノードを含む少なくとも複数のノードを有する、処理デバイスと、処理デバイスによって実行可能な第2の転送命令を格納したメモリとを備える。第2の転送命令は、受信したデータパケットのシーケンスデータを少なくとも1つの以前に受信したデータパケットの格納シーケンスデータと比較すること、および受信したデータパケットのシーケンスデータが少なくとも1つの以前に受信したデータパケットの格納シーケンスデータと一致しないと決定されると、受信したデータパケットをデータ宛先に転送することを含み得る。
【００１２】
別の態様に従って、ネットワーク内のメインフローと関連付けられる複数のデータパケットを転送するためのネットワークコントローラが提供される。ネットワークコントローラは、ネットワークに動作可能に連結される処理デバイスを含み、さらにこのネットワークが、データソースに連結されるイングレスノードおよびデータ宛先に連結されるエグレスノードを含む少なくとも複数のプログラム可能なネットワークノードを有する。ネットワークコントローラはまた、処理デバイスによって実行可能なコンピュータソフトウェア製品を格納するメモリを有する。コンピュータソフトウェア製品は、イングレスノードのメモリに第1の転送命令をインストールするように適合されるコンピュータコードを含む。第1の転送命令は、イングレスノードの処理デバイスによって実行可能であり、メインフローの複数のデータパケットの1つ1つについて少なくともペイロードデータ、シーケンスデータ、および宛先データを複製することによって少なくとも2つのトランジットフローを形成すること、および少なくとも2つのトランジットフローをネットワークの異なるネットワークパスに沿って転送することを含み、ここで異なるネットワークパスは、宛先データに基づいてエグレスノードへ導く。
【００１３】
依然としてこの後者の態様に従って、第1の転送命令は、前記形成および転送することの前に、複数のデータパケットの1つ1つをシーケンスデータおよび宛先データのうちの少なくとも1つを用いて識別することを含み得る。
【００１４】
依然としてこの後者の態様に従って、前記転送することは、異なるネットワークパスデータを少なくとも2つのトランジットフローの1つ1つのデータパケットの1つ1つに組み込むことを含み得、ここで少なくとも2つのトランジットフローの1つ1つのネットワークパスデータは、異なるネットワークパスと関連付けられ得る。
【００１５】
依然としてこの後者の態様に従って、コンピュータソフトウェア製品は、エグレスノードのメモリに第2の転送命令をインストールするためのコンピュータコードを含み得、ここで第2の転送命令は、エグレスノードの処理デバイスによって実行可能であり得る。第2の転送命令は、受信したデータパケットのシーケンスデータをトラッキングすること、および前記トラッキングに基づいて、受信したデータパケットをデータ宛先に転送することを含み得る。
【００１６】
依然としてこの後者の態様に従って、前記トラッキングすることは、受信したデータパケットのシーケンスデータを少なくとも1つの以前に受信したデータパケットの格納シーケンスデータと比較することを含み得、前記転送するステップは、受信したデータパケットのシーケンスデータが少なくとも1つの以前に受信したデータパケットの格納シーケンスデータと一致しないと決定されると実施され得る。
【００１７】
依然としてこの後者の態様に従って、ネットワークコントローラは、ソフトウェア定義ネットワーク(SDN)コントローラであり得、複数のプログラム可能なネットワークノードは、SDNノードであり得る。
【００１８】
依然としてこの後者の態様に従って、複数のプログラム可能なネットワークノードは、プロトコル忘却型フォワーディング(Protocol-Oblivious Forwarding、POF)スイッチであり得る。
【００１９】
依然としてこの後者の態様に従って、宛先データは、カスタムプロトコル、リアルタイム転送プロトコル(Real-time Transport Protocol、RTP)、および伝送制御プロトコル(Transmission Control Protocol、TCP)のうちの少なくとも1つを伴い得る。
【００２０】
依然としてこの後者の態様に従って、第2の転送命令は、受信したデータパケットの所与のシーケンスデータが少なくとも1つの以前に受信したデータパケットの格納シーケンスデータと一致すると決定すると、所与のシーケンスデータと関連付けられる格納シーケンスデータを消去することを含み得る。
【００２１】
依然としてこの後者の態様に従って、第2の転送命令は、受信したデータパケットのシーケンスデータが少なくとも1つの以前に受信したデータパケットの格納シーケンスデータと一致しないと決定すると、シーケンスデータをエグレスノードのメモリおよびネットワークコントローラのメモリのうちの少なくとも1つに格納することを含み得る。
【００２２】
依然としてこの後者の態様に従って、コンピュータソフトウェア製品は、エグレスノードのメモリ上に第2の転送命令をインストールするためのコンピュータコードを含み得、ここで第2の転送命令は、データ宛先からのトラフィックフローデータの受信時に、その処理デバイスによって実行可能であり得る。第2の転送命令は、トラフィックフローデータを、データ宛先からのその受信時に、イングレスノードに転送することを含み得、ここでトラフィックフローデータを前記転送するステップは、異なるネットワークパスに沿って実施され得る。
【００２３】
依然としてこの後者の態様に従って、第1の転送命令は、トラフィックフローデータを、エグレスノードからの受信時に、データソースに転送することを含み得る。
【００２４】
依然としてこの後者の態様に従って、第2の転送命令は、トラフィックフローデータを、データ宛先からの受信時に、イングレスノードに転送することを含み得、ここでトラフィックフローデータを前記転送することは、異なるネットワークパスに沿って実施され得る。
【００２５】
依然としてこの後者の態様に従って、第1の転送命令は、異なるネットワークパスの1つ1つからのトラフィックフローデータをデータソースに転送することを含み得る。
【００２６】
依然としてこの後者の態様に従って、異なるネットワークパスの1つ1つからのトラフィックフローデータは、データソースに転送する前に、互いに組み合わされ得る。
【００２７】
別の態様に従って、ネットワーク内のメインフローと関連付けられる複数のデータパケットを転送するための方法が提供される。本方法は、メインフローの複数のデータパケットの1つ1つについて少なくともペイロードデータ、シーケンスデータ、および宛先データを複製するステップによって、少なくとも2つのトランジットフローを形成するステップと、少なくとも2つのトランジットフローを異なるネットワークパスに沿って転送するステップとを含み、ここで異なるネットワークパスは、宛先データに基づいてエグレスノードへ導く。
【００２８】
依然としてこの後者の態様に従って、本方法は、前記形成および転送するステップの前に、複数のデータパケットの1つ1つを少なくともシーケンスデータおよび宛先データを用いて識別するステップを含み得る。
【００２９】
依然としてこの後者の態様に従って、前記転送するステップは、異なるネットワークパスデータを少なくとも2つのトランジットフローの1つ1つのデータパケットの1つ1つに組み込むステップを含み得、ここで少なくとも2つのトランジットフローの1つ1つのネットワークパスデータは、異なるネットワークパスと関連付けられ得る。
【００３０】
依然としてこの後者の態様に従って、本方法は、受信したデータパケットのシーケンスデータをトラッキングするステップ、および前記トラッキングに基づいて、受信したデータパケットをデータ宛先に転送するステップを含み得る。
【００３１】
依然としてこの後者の態様に従って、本方法は、受信したデータパケットのシーケンスデータを少なくとも1つの以前に受信したデータパケットの格納シーケンスデータと比較するステップを含むトラッキングするステップを含み得、ここで前記転送するステップは、受信したデータパケットのシーケンスデータが少なくとも1つの以前に受信したデータパケットの格納シーケンスデータと一致しないと決定されると実施され得る。
【００３２】
依然としてこの後者の態様に従って、ネットワークは、複数のプログラム可能なネットワークノードを備えるソフトウェア定義ネットワーク(SDN)であり得る。
【００３３】
依然としてこの後者の態様に従って、複数のプログラム可能なネットワークノードは、プロトコル忘却型フォワーディング(POF)スイッチであり得る。
【００３４】
依然としてこの後者の態様に従って、宛先データは、カスタムプロトコル、リアルタイム転送プロトコル(RTP)、および伝送制御プロトコル(TCP)のうちの少なくとも1つを伴い得る。
【００３５】
依然としてこの後者の態様に従って、本方法は、受信したデータパケットの所与のシーケンスデータが少なくとも1つの以前に受信したデータパケットの格納シーケンスデータと一致すると決定すると、所与のシーケンスデータと関連付けられる格納シーケンスデータを消去するステップを含み得る。
【００３６】
依然としてこの後者の態様に従って、本方法は、受信したデータパケットのシーケンスデータが少なくとも1つの以前に受信したデータパケットの格納シーケンスデータと一致しないと決定すると、シーケンスデータをエグレスノードのメモリおよびネットワークコントローラのメモリのうちの少なくとも1つに格納するステップを含み得る。
【００３７】
依然としてこの後者の態様に従って、本方法は、トラフィックフローデータを、データ宛先からのその受信時に、イングレスノードに転送するステップを含み得、ここでトラフィックフローデータを前記転送するステップは、異なるネットワークパスに沿って実施され得る。
【００３８】
依然としてこの後者の態様に従って、本方法は、トラフィックフローデータを、エグレスノードからの受信時に、データソースに転送するステップを含み得る。
【００３９】
依然としてこの後者の態様に従って、本方法は、トラフィックフローデータを、データ宛先からの受信時に、イングレスノードに転送するステップを含み得、ここでトラフィックフローデータを前記転送するステップは、異なるネットワークパスに沿って実施され得る。
【００４０】
依然としてこの後者の態様に従って、本方法は、異なるネットワークパスの1つ1つからのトラフィックフローデータをデータソースに転送するステップを含み得る。
【００４１】
依然としてこの後者の態様に従って、異なるネットワークパスの1つ1つからのトラフィックフローデータは、データソースへ転送する前に、互いに組み合わされ得る。
【００４２】
別の態様に従って、ネットワーク内のメインフローと関連付けられる複数のデータパケットを転送するために使用され得るコンピュータソフトウェア製品が提供される。コンピュータソフトウェア製品は、ネットワークと関連付けられるネットワークコントローラのメモリに格納可能であり得、かつネットワークのイングレスノードのメモリにインストールされたときに、第1の転送命令を実施するように適合され得る。第1の転送命令は、イングレスノードの処理デバイスによって実行可能であり、メインフローの複数のデータパケットの1つ1つについて少なくともペイロードデータ、シーケンスデータ、および宛先データを複製することによって少なくとも2つのトランジットフローを形成すること、ならびに少なくとも2つのトランジットフローを異なるネットワークパスに沿って転送することを含み、ここで異なるネットワークパスは、宛先データに基づいてエグレスノードへ導く。
【００４３】
依然としてこの後者の態様に従って、第1の転送命令は、前記形成および転送することの前に、複数のデータパケットの1つ1つを少なくともシーケンスデータおよび宛先データを用いて識別することを含み得る。
【００４４】
依然としてこの後者の態様に従って、前記転送することは、異なるネットワークパスデータを少なくとも2つのトランジットフローの1つ1つのデータパケットの1つ1つに組み込むことを含み得、ここで少なくとも2つのトランジットフローの1つ1つのネットワークパスデータは、異なるネットワークパスと関連付けられ得る。
【００４５】
依然としてこの後者の態様に従って、コンピュータソフトウェア製品は、ネットワークのエグレスノードのメモリにインストールされる第2の転送命令を含み得、ここで第2の転送命令は、エグレスノードの処理デバイスによって実行可能であり得る。第2の転送命令は、受信したデータパケットのシーケンスデータをトラッキングすること、および前記トラッキングに基づいて、受信したデータパケットをデータ宛先に転送することを含み得る。
【００４６】
依然としてこの後者の態様に従って、トラッキングすることは、受信したデータパケットのシーケンスデータを少なくとも1つの以前に受信したデータパケットの格納シーケンスデータと比較することを含み得、前記転送することは、受信したデータパケットのシーケンスデータが少なくとも1つの以前に受信したデータパケットの格納シーケンスデータと一致しないと決定されると実施され得る。
【００４７】
依然としてこの後者の態様に従って、ネットワークコントローラは、ソフトウェア定義ネットワーク(SDN)コントローラであり得、複数のプログラム可能なネットワークノードは、SDNノードであり得る。
【００４８】
依然としてこの後者の態様に従って、複数のプログラム可能なネットワークノードは、プロトコル忘却型フォワーディング(POF)スイッチであり得る。
【００４９】
依然としてこの後者の態様に従って、宛先データは、カスタムプロトコル、リアルタイム転送プロトコル(RTP)、および伝送制御プロトコル(TCP)のうちの少なくとも1つを伴い得る。
【００５０】
依然としてこの後者の態様に従って、第2の転送命令は、受信したデータパケットの所与のシーケンスデータが少なくとも1つの以前に受信したデータパケットの格納シーケンスデータと一致すると決定すると、所与のシーケンスデータと関連付けられる格納シーケンスデータを消去することを含み得る。
【００５１】
依然としてこの後者の態様に従って、シーケンスデータは、エグレスノードのメモリおよびネットワークコントローラのメモリのうちの少なくとも1つに格納され得る。
【００５２】
依然としてこの後者の態様に従って、コンピュータソフトウェア製品は、エグレスノードのメモリに第2の転送命令をインストールするためのコンピュータコードを含み得、第2の転送命令は、データ宛先からのトラフィックフローデータの受信時に、その処理デバイスによって実行可能であり得る。第2の転送命令は、トラフィックフローデータを、データ宛先からのその受信時に、イングレスノードに転送することを含み得、ここでトラフィックフローデータを前記転送することは、異なるネットワークパスに沿って実施され得る。
【００５３】
依然としてこの後者の態様に従って、第1の転送命令は、トラフィックフローデータを、エグレスノードからの受信時に、データソースに転送することを含み得る。
【００５４】
依然としてこの後者の態様に従って、第2の転送命令は、トラフィックフローデータを、データ宛先からの受信時に、イングレスノードに転送することを含み得、ここでトラフィックフローデータを前記転送することは、異なるネットワークパスに沿って実施され得る。
【００５５】
依然としてこの後者の態様に従って、第1の転送命令は、異なるネットワークパスの1つ1つからのトラフィックフローデータをデータソースに転送することを含み得る。
【００５６】
依然としてこの後者の態様に従って、異なるネットワークパスの1つ1つからのトラフィックフローデータは、データソースへ転送する前に、互いに組み合わされ得る。
【００５７】
別の態様に従って、ネットワーク内のメインフローと関連付けられる複数のデータパケットを転送するためのプログラム可能なイングレスノードが提供される。プログラム可能なイングレスノードは、ネットワークに動作可能に連結される処理デバイスを含み、さらにこのネットワークが、データソースに連結されるプログラム可能なイングレスノードおよびデータ宛先に連結されるエグレスノードを少なくとも含む少なくとも複数のノードを有する。プログラム可能なイングレスノードはまた、処理デバイスによって実行可能である第1の転送命令を格納したメモリを有する。第1の転送命令は、メインフローの複数のデータパケットの1つ1つについて少なくともペイロードデータ、シーケンスデータ、および宛先データを複製することによって、少なくとも2つのトランジットフローを形成することと、少なくとも2つのトランジットフローを異なるネットワークパスに沿って転送することとを含み、ここで異なるネットワークパスは、宛先データに基づいてエグレスノードへ導く。
【００５８】
依然としてこの後者の態様に従って、第1の転送命令は、前記形成および転送することの前に、複数のデータパケットの1つ1つを少なくともシーケンスデータおよび宛先データを用いて識別することを含み得る。
【００５９】
依然としてこの後者の態様に従って、前記転送することは、異なるネットワークパスデータを少なくとも2つのトランジットフローの1つ1つのデータパケットの1つ1つに組み込むことを含み得、ここで少なくとも2つのトランジットフローの1つ1つのネットワークパスデータは、異なるネットワークパスと関連付けられ得る。
【００６０】
依然としてこの後者の態様に従って、ネットワークは、ソフトウェア定義ネットワーク(SDN)であり得る。
【００６１】
依然としてこの後者の態様に従って、プログラム可能なイングレスノードは、SDNスイッチであり得る。
【００６２】
依然としてこの後者の態様に従って、SDNスイッチは、OpenFlowスイッチおよびプロトコル忘却型フォワーディング(POF)スイッチのうちの少なくとも1つである。
【００６３】
依然としてこの後者の態様に従って、宛先データは、カスタムプロトコル、リアルタイム転送プロトコル(RTP)、および伝送制御プロトコル(TCP)のうちの少なくとも1つを伴い得る。
【００６４】
依然としてこの後者の態様に従って、プログラム可能なイングレスノードは、エグレスノードのメモリに第2の転送命令をインストールするためのコンピュータコードを含むことを含み得、ここで第2の転送命令は、データ宛先からのトラフィックフローデータの受信時に、その処理デバイスによって実行可能であり得る。第2の転送命令は、トラフィックフローデータを、データ宛先からのその受信時に、イングレスノードに転送することを含み得、ここでトラフィックフローデータを前記転送することは、異なるネットワークパスに沿って実施され得る。
【００６５】
依然としてこの後者の態様に従って、第1の転送命令は、トラフィックフローデータを、エグレスノードからの受信時に、データソースに転送することを含み得る。
【００６６】
別の態様に従って、ネットワーク内のメインフローと関連付けられる複数のデータパケットを転送するためのプログラム可能なエグレスノードが提供される。プログラム可能なエグレスノードは、ネットワークに動作可能に連結される処理デバイスを含み、さらにこのネットワークが、データソースに連結されるイングレスノードおよびデータ宛先に連結されるプログラム可能なエグレスノードを少なくとも含む少なくとも複数のノードを有する。プログラム可能なエグレスノードはまた、処理デバイスによって実行可能な第2の転送命令を格納したメモリを有する。第2の転送命令は、受信したデータパケットのシーケンスデータを少なくとも1つの以前に受信したデータパケットの格納シーケンスデータと比較すること、および受信したデータパケットのシーケンスデータが少なくとも1つの以前に受信したデータパケットの格納シーケンスデータと一致しないと決定されると、受信したデータパケットをデータ宛先に転送することを含む。
【００６７】
依然としてこの後者の態様に従って、第2の転送命令は、受信したデータパケットの所与のシーケンスデータが少なくとも1つの以前に受信したデータパケットの格納シーケンスデータと一致すると決定すると、所与のシーケンスデータと関連付けられる格納シーケンスデータを消去することを含み得る。
【００６８】
依然としてこの後者の態様に従って、シーケンスデータは、エグレスノードのメモリおよびネットワークコントローラのメモリのうちの少なくとも1つに格納され得る。
【００６９】
依然としてこの後者の態様に従って、ネットワークは、ソフトウェア定義ネットワーク(SDN)であり得る。
【００７０】
依然としてこの後者の態様に従って、プログラム可能なイングレスノードは、SDNスイッチであり得る。
【００７１】
依然としてこの後者の態様に従って、SDNスイッチは、OpenFlowスイッチおよびプロトコル忘却型フォワーディング(POF)スイッチのうちの少なくとも1つであり得る。
【００７２】
依然としてこの後者の態様に従って、第2の転送命令は、トラフィックフローデータを、データ宛先からの受信時に、イングレスノードに転送することを含み得、ここでトラフィックフローデータを前記転送することは、異なるネットワークパスに沿って実施され得る。
【００７３】
依然としてこの後者の態様に従って、第1の転送命令は、異なるネットワークパスの1つ1つからのトラフィックフローデータをデータソースに転送することを含み得る。
【００７４】
依然としてこの後者の態様に従って、異なるネットワークパスの1つ1つからのトラフィックフローデータは、データソースに転送する前に、互いに組み合わされ得る。
【００７５】
別の態様に従って、ネットワーク内のメインフローと関連付けられる複数のデータパケットを転送するためのネットワーク通信システムが提供される。ネットワーク通信システムは、データソースおよびネットワークに動作可能に連結されるプログラム可能なイングレスノードを有する。プログラム可能なイングレスノードは、複数のデータパケットを有するメインフローをデータソースからデータ宛先に転送するための要求を受信するように構成され、ここで前記メインフローを転送することは、メインフローの複数のデータパケットの1つ1つについて少なくともペイロードデータ、シーケンスデータ、および宛先データを複製することによって、少なくとも2つのトランジットフローを形成すること、および少なくとも2つのトランジットフローを異なるネットワークパスに沿って転送することを含む。ここで、異なるネットワークパスは、宛先データに基づいてエグレスノードへ導く。ネットワーク通信システムはまた、データ宛先およびネットワークに動作可能に連結されるプログラム可能なエグレスノードを有する。プログラム可能なエグレスノードは、少なくとも2つのトランジットフローを受信するように構成され、ここで前記受信は、受信したデータパケットのシーケンスデータをトラッキングすること、および受信したデータパケットを前記トラッキングに基づいてデータ宛先に転送することを含む。
【００７６】
依然としてこの後者の態様に従って、第1の転送命令は、前記形成および転送することの前に、複数のデータパケットの1つ1つを少なくともシーケンスデータおよび宛先データを用いて識別することを含み得る。
【００７７】
依然としてこの後者の態様に従って、前記転送することは、異なるネットワークパスデータを少なくとも2つのトランジットフローの1つ1つのデータパケットの1つ1つに組み込むことを含み得、ここで少なくとも2つのトランジットフローの1つ1つのネットワークパスデータは、異なるネットワークパスと関連付けられ得る。
【００７８】
依然としてこの後者の態様に従って、前記トラッキングすることは、受信したデータパケットのシーケンスデータを少なくとも1つの以前に受信したデータパケットの格納シーケンスデータと比較することを含み得、前記受信したデータパケットを転送することは、受信したデータパケットのシーケンスデータが少なくとも1つの以前に受信したデータパケットの格納シーケンスデータと一致しないと決定されると実施され得る。
【００７９】
依然としてこの後者の態様に従って、ネットワークコントローラは、ソフトウェア定義ネットワーク(SDN)コントローラであり得、複数のプログラム可能なネットワークノードは、SDNノードであり得る。
【００８０】
依然としてこの後者の態様に従って、複数のプログラム可能なネットワークノードは、プロトコル忘却型フォワーディング(POF)スイッチであり得る。
【００８１】
依然としてこの後者の態様に従って、宛先データは、カスタムプロトコル、リアルタイム転送プロトコル(RTP)、および伝送制御プロトコル(TCP)のうちの少なくとも1つを伴い得る。
【００８２】
依然としてこの後者の態様に従って、第2の転送命令は、受信したデータパケットの所与のシーケンスデータが少なくとも1つの以前に受信したデータパケットの格納シーケンスデータと一致すると決定すると、所与のシーケンスデータと関連付けられる格納シーケンスデータを消去することを含み得る。
【００８３】
依然としてこの後者の態様に従って、シーケンスデータは、エグレスノードのメモリおよびネットワークコントローラのメモリのうちの少なくとも1つに格納され得る。
【００８４】
依然としてこの後者の態様に従って、コンピュータソフトウェア製品は、エグレスノードのメモリに第2の転送命令をインストールするためのコンピュータコードを含み得、ここで第2の転送命令は、データ宛先からのトラフィックフローデータの受信時に、その処理デバイスによって実行可能であり得る。第2の転送命令は、トラフィックフローデータを、データ宛先からのその受信時に、イングレスノードに転送することを含み得、ここで前記トラフィックフローデータを転送することは、異なるネットワークパスに沿って実施され得る。
【００８５】
依然としてこの後者の態様に従って、第1の転送命令は、トラフィックフローデータを、エグレスノードからの受信時に、データソースに転送することを含み得る。
【００８６】
依然としてこの後者の態様に従って、第2の転送命令は、トラフィックフローデータを、データ宛先からの受信時に、イングレスノードに転送することを含み得、ここで前記トラフィックフローデータを転送することは、異なるネットワークパスに沿って実施され得る。
【００８７】
依然としてこの後者の態様に従って、第1の転送命令は、異なるネットワークパスの1つ1つからのトラフィックフローデータをデータソースに転送することを含み得る。
【００８８】
依然としてこの後者の態様に従って、異なるネットワークパスの1つ1つからのトラフィックフローデータは、データソースに転送する前に、互いに組み合わされ得る。
【００８９】
本改善に関する多くのさらなる機能およびその組み合わせは、本開示を読むことにより当業者にとっては明らかである。
【図面の簡単な説明】
【００９０】
【図１】実施形態に従う、ネットワーク通信システムの例のネットワーク図である。
【図２】実施形態に従う、図1のネットワーク通信システム内のデータパケットのメインフローの第1の例を示す概念図である。
【図３Ａ】実施形態に従う、データパケットの第1の例を示すハイレベル概念図である。
【図３Ｂ】実施形態に従う、データパケットの第2の例を示すハイレベル概念図である。
【図４】実施形態に従う、イングレスノード内のデータパケットのメインフローの例を示す概念図である。
【図５】実施形態に従う、エグレスノード内のデータパケットのフロー例を示す概念図である。
【図６】実施形態に従う、図1のネットワーク通信システムのネットワークコントローラの例のハイレベル概念図である。
【図７】実施形態に従う、図1のネットワーク通信システムのノードの例のハイレベル概念図である。
【図８】実施形態に従う、図1のネットワーク通信システム内のデータパケットのメインフローの第1の例を示す概念図である。
【図９】実施形態に従う、図1のネットワーク通信システム内のデータパケットのメインフローの第2の例を示す概念図である。
【図１０Ａ】実施形態に従う、図1のネットワーク通信システム内のメインフローに関連付けられる複数のデータパケットを転送するための方法の例のフローチャートである。
【図１０Ｂ】実施形態に従う、図1のネットワーク通信システム内のメインフローに関連付けられる複数のデータパケットを転送するための方法の例のフローチャートである。
【発明を実施するための形態】
【００９１】
これらの図面は、例証を目的として実施形態を例示的に描写するものであり、変形形態、代替構成、代替コンポーネント、および修正がこれらの例示的実施形態になされてもよい。
【００９２】
図1は、ネットワーク通信システム100の例を例証する。描写されるように、システム100は、パケット交換ネットワーク140によって相互接続される、ネットワークコントローラ110、データソースまたはストリームソース120、およびデータ宛先またはストリーム処理設備130を含む。パケット交換ネットワーク140は、イングレスノード150、中間ノード160、およびエグレスノード170などのノードを含む。
【００９３】
この実施形態では、ネットワーク通信システム100は、部分的または完全にソフトウェア定義されたアーキテクチャを有する。ネットワークコントローラ110は、好適なアプリケーションプログラムインターフェース(API)と連結され得るソフトウェア定義ネットワーク(SDN)コントローラである。SDNコントローラ110は、パケット交換ネットワーク140のための制御プレーン機能を実施するように、およびネットワーク140のためのトラフィックエンジニアリング機能を実施するように構成される。例えば、ネットワークコントローラ110は、ネットワーク140内を伝送されるデータパケットのフローのための最適ネットワークパスを決定し、システム110のノードでのデータパケットの出発時間をスケジューリングする。さらには、この実施形態では、ノード150、160、および170は、SDNノード、SDNスイッチなどのプログラム可能なネットワークノードである。ノード150、160、および170は、ネットワークコントローラ110を介して、またはサードパーティデバイスを介して、プログラム可能および/または制御可能であるように構成される。ネットワークコントローラ110、ならびにノード150、160、および170のそのようなプログラマビリティが、SDNシステム100の制御プレーンおよび転送プレーン両方のカスタマイゼーションを可能にする。
【００９４】
本明細書に提示される方法およびシステム例は、ネットワーク140を通じて情報をストリーミングすることを伴うSDNシステム100において具現化される。SDNシステム100、ネットワークコントローラ110、ならびにノード150、160、および170と関連付けられる利点を生かしながら、本明細書に開示される実施形態は、データパケットの損失、損傷、および/または遅延をもたらし得る問題などのデータストリーミングの品質問題を解決するために、データのストリームを複製することを伴う。非SDN通信システムにおけるそのような課題に取り組むことは、イングレスノードおよびエグレスノードで物理的に統合されるハードウェアを伴い、そのようなことには、追加の物理装置、保守、および人的資源に関してコストがかかっていたが、そのような懸念のうちの少なくとも一部は、本明細書に開示されるようにSDN実施形態を使用して解決され得る。
【００９５】
図2は、ネットワーク通信システム100内のデータパケットPiのメインフローFの第1の例を示す概念図を例証する。上に簡単に説明されるように、データストリーミングにおいて、デジタルコンテンツは、複数のデータパケットPiのシーケンスを有するメインフローFの形態で、ネットワーク140を通じて伝送される(また“転送される"とも称される)。メインフローFは、例えば、データソース120から伝送される。この実施形態は、イングレスノード150およびエグレスノード170でのソフトウェアの使用、ならびに/またはイングレスノード150およびエグレスノード170のネットワーク制御を伴う。イングレスノード150では、メインフローFのデータパケットPiは、複製されたデータパケットPiの2つのトランジットフローF'およびF''に複製される。次いで、トランジットフローF'、F''は、ネットワーク140を通じて、異なるネットワークパスに沿って伝送され、より具体的には、第1の定義されたネットワークパス210に沿ってエグレスノードに転送される場合には少なくとも2つのトランジットデータパケットのうちの1つ目、および少なくとも2つのトランジットデータパケットのうちの2つ目は、第1の定義されたネットワークパス210とは異なる第2の定義されたネットワークパス220に沿ってエグレスノードに転送される。さらに、エグレスノード170では、トランジットフローF'、F''の受信時に、データパケットPiがトラッキングされ、データ宛先130に転送される。単一のトランジットフローを送信することと比べて、この実施形態は、同じデータパケットPiのうちの任意の所与の1つが損失、損傷、および/または遅延される可能性を著しく減少させ得る。受信したデータパケットPiのトラッキングは、受信するデータパケットの1つ1つのシーケンスデータに基づき得る。ある実施形態において、本明細書に記載される方法およびシステムは、前記トラッキング中に、そのシーケンスのデータパケットのうちのどの1つがすでにデータ宛先130に転送されたかを示す格納シーケンスデータの記録を維持することを可能にする。本明細書に詳細に説明されるように、少なくとも2つの異なるネットワークパスは、宛先データに従って選択され、宛先データに基づいてエグレスノードへ導き得る。
【００９６】
図2に提示される単純化された例示的概略において、ネットワーク140は、離れて配置されたデータソース120およびデータ宛先130を連結する複数のネットワークパスを有する。トランジットフローF'は、トランジットフローF'のデータパケットが第1のネットワークリンク212に沿って中間ノード160'に、次いで第2のネットワークリンク242を介してエグレスノード170に伝送されるように、ネットワーク140を通じてネットワークパス210を介して伝送される。この実施形態においてさらに示されるように、トランジットフローF''は、中間ノード160''および160'''、ならびにネットワークリンク222、224、および226を有するネットワークパス220を介してエグレスノード170に伝送される。
【００９７】
図2に概略的に例証されるように、いくつかのデータパケットPiは、損失、損傷、および/または遅延される。例えば、トランジットフローF'のデータパケットP4およびトランジットフローF''のデータパケットP8は、損失および/または欠落し、トランジットフローF'のデータパケットP9は、データパケットP8と比較して一時的に遅延される。本明細書に開示される方法およびシステムは、データストリーミングの品質の劣化を少なくして、メインフローFをデータ宛先130において提供することができる。実際、図2に例証される時点においては、メインフローFのデータパケットP1、P2、およびP3がちょうどトラッキングされ、エグレスノード170によって比較されたところであり、データ宛先130に転送されようとしている。この実施形態では、データパケットP1およびP2はフローF''から選択され、データパケットP3はフローF'から選択された。次にエグレスノード170に向かうのは、トランジットフローF''からのデータパケットP4であり、データパケットP4がトランジットフローF'に不在であることから、それはデータ宛先130に転送されることになる。トランジットフローのうちのいずれか1つのデータパケットPiが、データ宛先130に伝送されるメインフローF上で使用され得る状況では、両方のトランジットフローがアクティブであると言われ得、本実施形態は、アクティブ-アクティブデータストリーミングの例と称され得る。
【００９８】
図3Aは、データパケットPiの第1の例を示すハイレベル概念図である。この実施形態では、データパケットPiは、ペイロードデータ310、宛先データ320、およびシーケンスデータ330を含む(追加データが代替実施形態には存在し得る)。ペイロードデータ310は、ネットワーク140を通じてストリーミングされるセグメント化されたデジタルコンテンツと関連付けられる。ある実施形態において、ペイロードデータ310に含まれる情報の量は、フローのデータパケット間で均等に共有されるが、別の実施形態においては、ペイロード310に含まれる情報の量は、データパケットごとに様々であり得る。宛先データ320は、メインフローFが最終的に転送されるデータ宛先130と関連付けられる。この実施形態では、詳細なネットワークパスは、イングレスノードで完全に決定されるわけではないが、中間ノードで少なくとも部分的に決定され、故に現在のネットワーク状況および/または任意の他の関連検討事項に依存し得る。データパケットPiに関連したシーケンスデータ330は、メインフローF内でのその順序を示す。例えば、図2の実施形態では、データパケットP1は、メインフローFの第1のデータパケットであるが、データパケットPiは、メインフローFのi番目のデータパケットである。
【００９９】
図3Bは、データパケットPiの第2の例を示すハイレベル概念図である。この実施形態では、データパケットPiは、追加で、最終的にエグレスノードへ導くパスに沿った中間宛先に関連するより詳細なネットワークパスデータ340を含む。一実施形態において、例えば、パス全体が既定され、例えば、イングレスノードの段階でネットワークパスデータ340内に示され得る。ネットワークパスは、ネットワーク140内で辿るためのノードおよび/またはリンクの特定のシーケンスを含み得る。別の実施形態において、ネットワークパスデータは、データパケットPiが転送されるべき次の中間ノード160を示し得る。
【０１００】
データパケットPiに組み込まれるデータ320、330(および340または任意の他の追加データ)は、所与の通信プロトコルによって読まれ得るヘッダの形態で提供され得る。宛先データ320は、例えば、インターネットプロトコル(IP)ヘッダ、ユーザデータグラムプロトコル(User Datagram Protocol、UDP)ヘッダ、リアルタイム転送プロトコル(Real-time Transport Protocol、RTP)ヘッダなどであり得る。シーケンスデータは、メインフローF内のデータパケットPiのシーケンス順を示す数値、またはシーケンシング機能を満たすことができる任意の他のヘッダであり得る。さらに、SDN環境においては、既知の通信プロトコルと関連付けられる代わりにカスタマイズされる宛先データ320を提供することが有用であることが分かった。確かに、標準プロトコルを順守する必要性は、ノード150、160、および170がプログラム可能であるために減少される。
【０１０１】
図4は、本明細書に開示される方法およびシステムの実施形態に従う、イングレスノード150によって処理されるデータパケットPiのメインフローFの例400を示す概念図である。この実施形態では、イングレスノード150は、入力データを受信し、かつ出力データを経時的に順次伝送するように構成される。入力データは、ペイロードデータ310を有するデータパケットPiのメインフローFであり、出力データは、例えば、2つのトランジットフローF'およびF''である。本明細書に開示される方法およびシステムに従って、イングレスノード150は、出力データを出力する前に、命令に基づいたアクションを実施するように構成される。図4の実施形態では、イングレスノード150は第1の転送命令を実施するように構成される。ある実施形態において、そのような第1の転送命令は、イングレスノード150のメモリに格納され得る。別の実施形態において、第1の転送命令は、適切に適合されるコンピュータソフトウェア製品を使用して、ネットワークコントローラ110によってイングレスノード150のメモリにインストールされる。
【０１０２】
第1の転送命令は、例えば、識別アクション410、複製アクション420、および転送アクション430を含み得る。代替の実施形態において、シーケンスデータは、データパケットがイングレスノードに到着したとき、ペイロードデータと共にすでに存在し得、故に識別のステップは回避され得る。いくつかの実施形態において、データは、安定したデータストリームの形態でイングレスノードに到着し得、および/またはイングレスノードと共に完全にまたは部分的に格納され得、イングレスノードは、データパケットの形態でデータの送信を準備するために分離機能および/またはバッファリング機能を追加で実施し得る。図4の実施形態では、メインフローFのデータパケットPiの1つ1つを識別する識別アクション410を実施するように構成されるのはイングレスノード150である。この実施形態に従って、識別は、宛先データ320およびシーケンスデータ330をデータパケットPiのペイロードデータ310に組み込むことを含み得る。別の実施形態において、識別アクション410は随意であり、メインフローFのデータパケットPiの1つ1つは、イングレスノード150に伝送される前に、宛先データ320およびシーケンスデータ330を用いて識別される。別の実施形態において、イングレスノード150は、ネットワークパスデータ340を、2つのトランジットフローF'およびF'のうちの所与の1つのデータパケットの1つ1つに組み込むように構成される。この特定の実施形態において、2つのトランジットフローF'およびF''は2つの異なるネットワークパスに沿って転送されることになるため、ネットワークパスデータ340は、トランジットフローF'およびトランジットフローF''では異なる。図4に示されるように、イングレスノード150は、メインフローFのデータパケットPiを経時的に順次複製して宛先データ320およびシーケンスデータ330を有するデータパケットPiの2つのトランジットフローF'およびF''を形成する複製アクション420を実施するように構成される。図4に示されるように、イングレスノード150は、トランジットフローF'およびF''を、パケット交換ネットワーク140の中間ノード160に沿って(少なくとも図2に示される)、例えば、2つの異なるネットワークパス210および220を介して転送するように構成される。依然として図4を参照すると、データパケットP2は、この実施形態では、連続するアクション410、420、および430の際にイングレスノード150によって処理されているが、1つを超えるデータパケットPiは、例えば、イングレスノード150によって実施される連続するアクション410、420、および430の1つ1つによって継続して処理され得ることに留意されたい。
【０１０３】
別の実施形態において、識別アクション410は、イングレスノード150によって実施される代わりにデータソース120によって実施される。この特定の実施形態において、宛先データ320およびシーケンスデータ330は、データパケットPiのメインフローFのイングレスノード150への伝送前に、データソース120によってデータパケットPiのペイロード310に組み込まれる。依然としてこの実施形態では、イングレスノード150は、例えば、トランジットフローF'およびF''を形成するために、データパケットPiの1つ1つに対して複製アクション420および転送アクション430のみを実施する。
【０１０４】
図5は、本明細書に開示される方法およびシステムの実施形態に従う、エグレスノード170によって処理されるデータパケットPiのメインフローFの例500を示す概念図である。この実施形態では、エグレスノード170は、入力データを受信し、かつ出力データを経時的に順次伝送するように構成される。入力データは、イングレスノード150から、2つの異なるネットワークパス210および220に沿って伝送される2つのトランジットフローF'およびF''である。エグレスノード170の出力データは、ペイロードデータ310を有するデータパケットPiのメインフローFである。図5の実施形態では、エグレスノード170は第2の転送命令を実施するように構成される。ある実施形態において、そのような第2の転送命令は、エグレスノード170のメモリに格納され得る。別の実施形態において、第2の転送命令は、適切に適合されるコンピュータソフトウェア製品を使用して、ネットワークコントローラ110によってエグレスノード170のメモリにインストールされる。
【０１０５】
第2の転送命令は、例えば、少なくともトラッキングアクション510、転送アクション520、消去アクション530、および格納アクション540を含み得る。図5に描写されるように、エグレスノード170は、トランジットフローF'およびF''のデータパケットPiの1つ1つを識別およびトラッキングするトラッキングアクション510を実施するように構成される。一実施形態において、エグレスノード170は、2つのトランジットフローF'およびF''からの受信したデータパケットPiをトラッキングし、受信したデータパケットPiの1つ1つに時点tiを関連させる。この実施形態に従って、エグレスノード170は、トランジットフローF'およびF''の受信したデータパケットPiのそれぞれに関連した時点tiに基づいて転送アクション520を実施するように適合される。例えば、トランジットフローF'のデータパケットP3が時点t3'で受信され、かつトランジットフローF''のそのデータパケットP3が、たまたま時点t3'の前である時点t3''で受信されるとき、エグレスノード170は、トランジットフローF''のデータパケットP3をデータ宛先130に転送するように構成される。トランジットフローF'のデータパケットP3については、エグレスノード170は、トランジットフローのいずれかのデータパケットP3のいずれかがデータ宛先130に一旦転送されると、消去アクション530下で後に受信したデータパケットP3を消去するように構成される。
【０１０６】
別の実施形態において、エグレスノード170は、トランジットフローF'およびF''からの受信したデータパケットPiをトラッキングし、データパケットPiをデータ宛先130に転送する前に、データパケットPiのシーケンスデータ330を比較する。この実施形態では、エグレスノード170は、格納アクション540を実施し、受信したデータパケットの1つ1つの格納シーケンスデータを格納する。比較は、受信したデータパケットPiのシーケンスデータ330が少なくとも1つの以前に受信したデータパケットの格納シーケンスデータと一致しないと決定すると決定すると、データパケットPiを転送する前に、受信したデータパケットのシーケンスデータ330を格納シーケンスデータと比較することを含む。言い換えると、所与のデータパケットがすでに受信されたシーケンスデータを有するとき、例えば、シーケンスデータが格納シーケンスデータにすでに格納されている場合、エグレスノード170が所与のデータパケットを消去するように適合されるように、エグレスノード170は、受信したデータパケットPiと関連付けられる受信したシーケンスデータ330の記録を維持する。代替的に、所与のデータパケットが格納シーケンスデータに従って以前に受信されていないシーケンスデータを有するとき、エグレスノード170は、所与のデータパケットをデータ宛先130に転送するように適合される。依然としてこの実施形態では、エグレスノード170は、受信したデータパケットの所与のシーケンスデータが以前に受信したデータパケットのうちのいずれか1つの格納シーケンスデータと一致することが決定されたとき、所与のシーケンスデータと関連付けられる格納シーケンスデータを消去するように適合される。異なる言い方をすると、エグレスノード170によって格納される格納シーケンスデータは、例えば、システム要件を制限するためにリアルタイムで更新され得る。
【０１０７】
ある実施形態において、格納アクション540は、エグレスノード170のメモリ内にトランジットフローF'およびF''のデータパケットのシーケンスデータ330を格納する。図5に描写される実施形態では、トランジットフローF''のデータパケットP3のシーケンスデータ330は、時点3''で格納され、その結果、後の時点t3'でのトランジットフローF'のデータパケットP3の受信時に、トランジットフローF'の後に受信したデータパケットP3は消去アクション530の下で消去されるべきであるということがエグレスノード170によって決定される。さらに、この実施形態では、転送アクション520は、データパケットPiのペイロード310をデータ宛先130に転送する前に、シーケンスデータ330および宛先データ320をデータパケットPiから除去する。別の実施形態において、データパケットPiは、例えば、その宛先データ320およびそのシーケンスデータ330に従って転送される。別の実施形態において、エグレスノード170は、データパケットPiをある時間にわたって格納するように構成される。この格納は、データパケットPiの再順序付けのとき、即ち、次のデータパケットが前のデータパケットの前に受信されるときに有用であり得る。この状況では、エグレスノード170は、データパケットPiのメインフローFのシーケンスデータのシーケンスに従って次のデータパケットをデータ宛先130に転送するために、次のデータパケットを格納するように適合される。
【０１０８】
別の実施形態において、転送アクション520は、転送されたデータパケットPiの1つ1つから宛先データ320およびシーケンスデータ330を除去しない。この特定の実施形態において、転送されたデータパケットPiは、ペイロード310、宛先データ320、およびシーケンスデータ330を含む。依然としてこの実施形態では、データ宛先130は、例えば、「再構築された」メインフローFのデータパケットPiの1つ1つのペイロード310をそれらのそれぞれのシーケンスデータ330に基づいて処理するように構成される。
【０１０９】
図6は、ネットワークコントローラ110の例のハイレベル概念図を例証する。示されるように、ネットワークコントローラ110は、メモリ620に接続される処理デバイス610を含む。
【０１１０】
図7は、イングレスノード150およびエグレスノード170のいずれかの例のハイレベル概念図を例証する。描写されるように、ノード150および170は、処理デバイス710および処理デバイス710に動作可能に接続されるメモリ720を含む。
【０１１１】
ある実施形態において、ネットワークコントローラ110は、第1の転送命令および第2の転送命令を、それぞれイングレスノード150およびエグレスノード170を使用して実施することができる。この特定の実施形態において、データパケットPiのメインフローFのストリーミングは、ネットワークコントローラ110のメモリ620に格納されたコンピュータソフトウェア製品によって管理される。別の実施形態において、コンピュータソフトウェア製品は、イングレスノード150のメモリ720に第1の転送命令をインストールするため、およびイングレスノード170のメモリ720に第2の転送命令をインストールするためのコンピュータコードを含む。第1および第2の転送命令がノード150および170のうちのいずれか1つのメモリ720にインストールされると、処理デバイス710は、本明細書に開示される方法に従って転送命令の1つ1つを実施するように適合される。ある実施形態において、ネットワークコントローラ110は、メモリ620上にコンピュータソフトウェア製品がプログラムされた状態で販売され、イングレスノード150は、イングレスノード150のメモリ720上に第1の転送命令を有するスタンドアローンデバイスとして販売され、エグレスノード170は、エグレスノード170のメモリ720上に第2の転送命令を有するスタンドアローンデバイスとして販売される。
【０１１２】
ある実施形態において、ネットワークコントローラ110は、ネットワーク140を介してイングレスノード150およびエグレスノード170に動作可能に連結される。ある実施形態において、SDNコントローラ110は、イングレスノード150によって使用され得るネットワークパスを生成するようにさらに構成される。ネットワークコントローラ110のメモリ620には、ネットワーク通信システム100の、およびより具体的にはパケット交換ネットワーク140のトポロジおよび動作特性に関するデータが取り込まれ得る。例えば、メモリ620は、データソース120のそれぞれ、ノード150、160、および170のそれぞれ、ならびにデータ宛先130のそれぞれを識別する記録、ノードを相互接続するリンクのそれぞれを識別する記録、パケット交換ネットワーク140間において可能性のあるソースルートのそれぞれを識別する記録、ならびに可能性のあるソースルートと関連付けられる伝送遅延のそれぞれを識別する記録を含み得る。
【０１１３】
別の実施形態において、ネットワークコントローラ110のメモリ620に格納されるデータの少なくとも一部は、ネットワークコントローラ110の動作の前にアクセスされ得る。ネットワークコントローラ110のメモリ620は、新しいノードもしくはリンクが追加されるか、もしくは更新される、またはノードもしくはリンクが除去されるか、もしくは失敗すると、ネットワーク140のトポロジおよび動作特性の変化によって更新され得る。ネットワーク状態の変化に関する更新は、ノードから、またはネットワーク140に接続される専用モニタ(図示されず)から受信され得る。ある実施形態において、ネットワークデータベース400は、リアルタイムまたはリアルタイム近くで更新され得る。
【０１１４】
ネットワークコントローラ110は、例えば、OpenDaylight SDNコントローラ、Open Network Operating System(ONOS)SDNコントローラなどであってもよい。ネットワークコントローラ110は、OpenFlowTMプロトコルおよび/またはプロトコル忘却型フォワーディング(POF)プロトコルに従ってシステム100のノード、例えば、データソース120、ならびにノード150、160および170と通信し得る。ネットワークコントローラ110はまた、ネットワーク構成、ネットワークモニタリングなどを含む、ネットワーク140のための様々な他の制御プレーン機能を実施することができる。
【０１１５】
描写された実施形態において、ノード150および170は、それらがパケット交換ネットワーク140を通じて情報を伝送、受信、および/または転送するように構成され得るように、ネットワークコントローラ110によってプログラム可能である。例えば、ノード150、160、および170は、スイッチ、モデム、ハブ、もしくはブリッジなどのSDNデータ通信装置(DCE)、ルータ、ワークステーション、もしくはサーバなどのSDNデータ端末装置(DTE)、および/またはそれらの組み合わせであり得る。
【０１１６】
図8は、TCP転送を伴う実施形態に従う、ネットワーク通信システム100内のデータパケットPiのメインフローFの第1の例800を示す概念図である。TCPストリームは、データソース120からデータ宛先130だけでなく、データ宛先130からデータソース120へも情報が流れるように双方向であることが知られている。この実施形態では、メインフローFは、データソース120からデータ宛先130へ伝送されるが、トラフィックデータ810は、データ宛先130からデータソース120へ伝送される。ある実施形態において、フロートラフィックデータ810は、例えば、メインフローFのデータパケットPiがデータ宛先130へきちんと伝送されたことを示す承認データを少なくとも含む。図8に描写される実施形態では、トラフィックフローデータ810は、データ宛先130からエグレスノード170へ伝送され、ここでトラフィックフローデータ810は、トランジットトラフィックフローデータ810'および810''を形成するために複製される。トラフィックフローデータ810'および810'のそれぞれは、それぞれトランジットフローF'およびF''のネットワークパスに沿って逆向きに伝送される。ある実施形態において、トラフィックフローデータ810のそのような伝送は、エグレスノード170によって実施される第2の転送命令に含まれる。さらに、別の実施形態において、トランジットトラフィックフローデータ810'および810''は、トラフィックフローデータ820の形態でデータソース120に伝送される前に、イングレスノード150によって受信され、組み合わされることになる。いずれにせよ、トラフィックフローデータ820は、データソース120にメインフローFのデータパケットPiのいずれかを再伝送させることができる。
【０１１７】
図9は、TCPを伴う実施形態に従う、ネットワーク通信システム100内のデータパケットPiのメインフローFの第2の例900を示す概念図である。この描写された実施形態では、データ宛先130は、上記の方法およびシステムに従う第2の転送命令のアクションを実施するように構成される。実際、この実施形態では、2つのトランジットフローF'およびF''は、エグレスノード170から、データ処理宛先であり得るデータ宛先130へ直接伝送される。図9に描写される別の実施形態では、イングレスノード150は、トランジットトラフィックフローデータ810'および810''を、それらの組み合わせなしに、データソース120へ直接転送する。別の実施形態において、トラフィックフローデータは、トランジットフローF'およびF''のネットワークパスのいずれか1つにおけるトラフィックを示す。この特定の実施形態において、トラフィックフローデータ810は、ネットワーク140に関する管理的および/または動作的理由に基づいてトランジットフローのいずれか1つをリルートするために使用される。
【０１１８】
図10Aおよび図10Bは、実施形態に従う、ネットワーク通信システム100内のメインフローFと関連付けられる複数のデータパケットを転送するための方法1000の例のフローチャートである。図10Aを参照すると、例示的な方法1000は、複数のデータパケットPiを有するメインフローFをデータ宛先120から転送するための要求を受信するステップ1002を含む。メインフローFのストリーミングが開始されると、本方法は、データパケットPiの1つ1つを少なくともシーケンスデータ330および宛先データ320を用いて識別するステップ1004を含む。次いで、本方法は、メインフローFのデータパケットPiの1つ1つについて少なくともペイロードデータ310、シーケンスデータ330、および宛先データ330を複製することによって、少なくとも2つのトランジットフローを形成するステップ1006、続いて少なくとも2つのトランジットフローを、宛先データ320に基づいてエグレスノードへそれぞれ導く異なるネットワークパスに沿って転送するステップ1008を含む。方法1000は、イングレスノード150の処理デバイス710またはネットワークコントローラ110の処理デバイス610によって実施され得る。先述のとおり、ステップ1004、1006、および1008は、第1の転送命令と称され、それは、例えば、ネットワーク140内のメインフローFの伝送の前に実施されることになる。
【０１１９】
さらには、図10Bは、実施形態に従う、ネットワーク通信システム100内のメインフローFと関連付けられる複数のデータパケットPiを転送するための方法1000の例示のフローチャートである。ステップ1010、1012、および1014は、第2の転送命令と称され、それは、データパケットPiの少なくとも2つのトランジットフローの受信時かつ再構築されたメインフローFのデータ宛先120への伝送前に実施されることになる。より具体的には、本方法は、少なくとも2つのトランジットフローを異なるネットワークパスに沿って受信するステップ1010、受信したデータパケットのシーケンスデータ330をトラッキングするステップ1012、および前記トラッキングに基づいて受信したデータパケットをデータ宛先120に転送するステップ1014を含む。
【０１２０】
ある実施形態において、第1の転送命令は、第1の識別表および複製表の形態で提供され、第2の転送命令は、第2の識別表およびトランジットフロー組み合わせ表の形態で提供される。そのような表は、ノード150および170のメモリ720にインストールされるとき、本明細書に記載される方法に従って転送命令を実施するために、処理デバイス710によって素早くアクセスされ得る。
【０１２１】
描写された実施形態において、ネットワーク140は、複数の有線リンクを含むイーサネット(登録商標)ネットワークである。しかしながら、別の実施形態において、ネットワーク140は、フレーム中継ネットワーク、非同期転送モード(Asynchronous Transfer Mode、ATM)ネットワーク、汎用パケット無線サービス(GPRS)ネットワークなどの別の種類のパケット交換ネットワーク140であり得、複数の有線リンク、ワイヤレスリンク、またはそれらの組み合わせを含んでもよい。
【０１２２】
本明細書に開示される実施形態は、ハードウェアを使用して、ソフトウェアを使用して、およびそれらの組み合わせによって実装され得る。そのような理解に基づいて、技術的解決策はソフトウェア製品の形態で具現化され得る。ソフトウェア製品は、コンパクトディスク読み出し専用メモリ(CD-ROM)、USBフラッシュディスク、またはリムーバブルハードディスクなどであり得る非揮発性または非一時的記憶媒体に格納されてもよい。ソフトウェア製品は、コンピュータデバイス(パーソナルコンピュータ、サーバ、またはネットワークデバイス)が実施形態に提供される方法を実行することを可能にするいくつかの命令を含む。
【０１２３】
プログラムコードは、本明細書に記載される機能を実施し、かつ出力情報を生成するために入力データに適用される。出力情報は、1つまたは複数の出力デバイスに適用される。いくつかの実施形態において、通信インターフェースは、ネットワーク通信インターフェースであり得る。要素が組み合わされる実施形態において、通信インターフェースは、プロセス間通信のためのものなど、ソフトウェア通信インターフェースであり得る。依然として他の実施形態では、ハードウェア、ソフトウェア、およびそれらの組み合わせとして実装される通信インターフェースの組み合わせが存在し得る。
【０１２４】
各コンピュータプログラムは、汎用または専用のプログラム可能なコンピュータによって読むことができる記憶媒体またはデバイス(例えば、ROM、磁気ディスク、光学ディスク)に格納され得、それらは、記憶媒体またはデバイスがコンピュータによって読まれて本明細書に記載される手順を実施するときにコンピュータを構成する、および動作させるためのものである。本システムの実施形態はまた、コンピュータプログラムで構成される非一時的コンピュータ可読記憶媒体として実装されると考えられ得、ここでそのように構成される記憶媒体は、本明細書に記載される機能を実施するために特定および既定の様式でコンピュータを動作させる。
【０１２５】
さらには、記載された実施形態のシステムおよび方法は、1つまたは複数のプロセッサに対するコンピュータが使用可能な命令を有する物理的な非一時的コンピュータ可読媒体を含むコンピュータプログラム製品に分散され得る。媒体は、1つまたは複数のディスケット、コンパクトディスク、テープ、チップ、磁気および電子記憶媒体、揮発性メモリ、非揮発性メモリなどを含む、様々な形態で提供され得る。非一時的コンピュータ可読媒体は、一時的な伝搬信号であるのは除き、すべてのコンピュータ可読媒体を含み得る。非一時的という用語は、一次メモリ、揮発性メモリ、RAMなどのコンピュータ可読媒体を除外することを意図せず、ここではそこに格納されるデータは、一時的にのみ格納され得る。コンピュータが使用可能な命令はまた、コンパイル済みコードおよびコンパイルされていないコードを含め、様々な形態にあり得る。
【０１２６】
サーバ、サービス、インターフェース、ポータル、プラットフォーム、またはハードウェアデバイスから形成される他のシステムに関して多くの言及がなされる。そのような用語の使用は、コンピュータ可読の有形の非一時的媒体に格納されたソフトウェア命令を実行するように構成される少なくとも1つのプロセッサを有する1つまたは複数のデバイスを表すと見なされることを理解されたい。当業者は、開示されたコンピュータに基づくアルゴリズム、プロセス、方法、または他の種類の命令のセットが、開示されたステップをプロセッサに実行させる命令を格納する非一時的な有形のコンピュータ可読媒体を備えるコンピュータプログラム製品として具現化され得ることをさらに理解すべきである。
【０１２７】
本明細書で使用される場合、および別途文脈により指示されない限り、「に連結される」という用語は、直接連結(互いに連結される2つの要素が互いに接触する)および非直接連結(少なくとも1つの追加要素が2つの要素の間に置かれる)の両方を含むことが意図される。したがって、「に連結される」および「と連結される」という用語は、同義的に使用される。
【０１２８】
本明細書に記載される実施形態は、物理的なコンピュータハードウェア実施形態によって実装される。本明細書に記載される実施形態は、有用な物理マシン、および、例えば、コンピューティングデバイス、サーバ、プロセッサ、メモリ、ネットワークの特別に構成されたコンピュータハードウェア配置を提供する。本明細書に記載れる実施形態は、例えば、コンピュータ装置、ならびに電子データ信号の処理および変換を通じてコンピュータによって実装される方法を対象にする。
【０１２９】
本明細書に記載される実施形態は、様々な動作を実装するように特別に構成されるコンピューティングデバイス、サーバ、受信機、送信機、プロセッサ、メモリ、ディスプレイ、ネットワークを伴い得る。本明細書に記載される実施形態は、様々な種類の情報を表す電磁信号を処理および変換するために適合される電子機械を対象にする。本明細書に記載される実施形態は、機械およびそれらの使用に広くかつ全体的に関係し、本明細書に記載される実施形態は、コンピュータハードウェア、機械、様々なハードウェアコンポーネントとのそれらの使用以外では、意味または実用的な利用可能性を有しない。
【０１３０】
理解され得るように、上に説明されかつ例証される例は、例示的のみであることが意図される。例えば、異なるネットワークパスは、データソースで暗号化および/または多重化され、ネットワークの同じネットワークパスに沿って転送され得る一方、復号および/または逆多重化はデータ宛先で実施され得る。範囲は、添付の特許請求の範囲によって示される。
【符号の説明】
【０１３１】
100  ネットワーク通信システム
110  ネットワークコントローラ
120  データソース
130  データ宛先またはストリーム処理設備
140  パケット交換ネットワーク
150  イングレスノード
160  中間ノード
160'  中間ノード
160''  中間ノード
160'''  中間ノード
170  エグレスノード
210  ネットワークパス
212  第1のネットワークリンク
220  ネットワークパス
222  ネットワークリンク
224  ネットワークリンク
226  ネットワークリンク
242  第2のネットワークリンク
310  ペイロードデータ
320  宛先データ
330  シーケンスデータ
340  ネットワークパスデータ
400  データパケットPiのメインフローFの例
410  識別アクション
420  複製アクション
430  転送アクション
500  データパケットPiのメインフローFの例、ネットワークデータベース
510  トラッキングアクション
520  転送アクション
530  消去アクション
540  格納アクション
610  処理デバイス
620  メモリ
710  処理デバイス
720  メモリ
800  データパケットPiのメインフローFの第1の例
810  フロートラフィックデータ
810'  トランジットトラフィックフローデータ
810''  トランジットトラフィックフローデータ
820  トラフィックフローデータ
900  データパケットPiのメインフローFの第2の例
1000  例示的な方法
【図１】
0006471238.tif 000002
【図２】
0006471238.tif 000003
【図３Ａ】
0006471238.tif 000004
【図３Ｂ】
0006471238.tif 000005
【図４】
0006471238.tif 000006
【図５】
0006471238.tif 000007
【図６】
0006471238.tif 000008
【図７】
0006471238.tif 000009
【図８】
0006471238.tif 000010
【図９】
0006471238.tif 000011
【図１０Ａ】
0006471238.tif 000012
【図１０Ｂ】
0006471238.tif 000013