用語
以下は、本出願で使用される用語の用語集である。
記憶媒体−様々なタイプのメモリデバイスまたは記憶デバイスのいずれか。「メモリ」および「記憶媒体」という用語は、インストール媒体、たとえば、CD−ROM、フロッピー(登録商標)ディスク、もしくはテープデバイス、DRAM、DDR RAM、SRAM、EDO RAM、Rambus RAMなどのコンピュータシステムメモリもしくはランダムアクセスメモリ、または、フラッシュメモリ、ハードウェアレジスタ、磁気媒体(たとえば、ハードドライブ)、もしくは光記憶装置などの不揮発性メモリを含むことを意図する。記憶媒体は、他のタイプのメモリまたはそれらの組合せも備えることができる。「記憶媒体」という用語は、2つ以上の記憶媒体を含むことができる。
コンピュータシステム−パーソナルコンピュータシステム(PC)、メインフレームコンピュータシステム、ワークステーション、ネットワークアプライアンス、インターネットアプライアンス、携帯電話、スマートフォン、ラップトップ、ノートブック、ネットブック、またはタブレットコンピュータシステム、携帯情報端末(PDA)、マルチメディアデバイス、または他のデバイスもしくはデバイスの組合せを含む、様々なタイプのモバイルシステム、または固定型(stationary)コンピューティングシステム、または処理システムのいずれか。一般に、「コンピュータシステム」という用語は、記憶媒体からの命令を実行する少なくとも1つのプロセッサを有する何らかのデバイス(またはデバイスの組合せ)を包含するように広く定義され得る。
伝送媒体−有線伝送媒体(ツイストペア、光ファイバ、電話配線、電気配線など)またはワイヤレス伝送媒体(電磁スペクトル内の様々なライセンスされた帯域またはライセンスされていない帯域のいずれかなど)を含む、送信/受信するために使用されることが可能な様々な媒体のいずれか。「動的な伝送媒体」という句は、より具体的には、短時間にわたって、そのPHYレートの大幅な変化を生じやすい伝送媒体を指すことができる。802.11(WLAN/Wi−Fi(登録商標))および電力線通信ネットワーク(PLC)は、動的な伝送媒体を利用するネットワーキング技術の2つの例である。干渉、チャネルのフェージング、雑音環境などの比較的予測不可能な要因が、802.11ネットワークによって使用されるISM帯域と、PLCネットワークによって使用される電気配線の両方に影響を及ぼすことがある。
ストリーム−「フロー」とも呼ばれる。当業者には一般に理解されるように、ストリームという用語は、何らかの一般的な特性を共有する、経時的に利用できるデータ要素のシーケンスを指すことができる。一例として、ストリームのデータ要素は、同じ送信元アドレスと宛先IPアドレスとポートとを有することがある。いくつかの実施形態では、この句は、一般的に意図された(たとえば、逐次的)順序で、一緒に使用するためのデータパケットのシーケンスを指すために使用されることがある。たとえば、ストリームは、ビデオ(たとえば、ビデオストリーム)を示すために適用によって使用され得るパケットのシーケンスを含むことがある。
図1
図1は、複数のネットワーク(たとえば、異なる伝送媒体、または場合によっては複数の伝送媒体を利用することができるネットワークの各々)を介して結合されたいくつかのデバイス102a、102b、…102nを含む例示的なハイブリッドネットワーク100を示す。ネットワーキング技術としては、Wi−Fi(たとえば、その伝送媒体として、2.4GHz、5GHz、および/または別のISM帯域を使用する)、電力線通信(たとえば、その伝送媒体として、電気配線を使用する)、イーサネット(たとえば、ツイストペア、光ファイバ、および/または他の有線伝送媒体を使用する)、および/または他の様々なネットワーキング技術/伝送媒体のいずれかがあり得る。図1は1つの考えられるハイブリッドネットワークを示すが、図示のネットワーキング技術に加えて、またはその代わりに、他のネットワーキング技術が、本開示の実施形態により、様々な構成のいずれかの形で使用されてよいことを理解されたい。
図2
図2は、本開示の1つまたは複数の実施形態を実施するように構成された電子デバイス200の一実施形態のブロック図である。いくつかの実装形態では、電子デバイス200は、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、携帯電話、スマートアプライアンス、電力線通信デバイス、ゲームコンソール、ネットワークブリッジングデバイス、または複数の通信ネットワークにわたって通信するように構成されたハイブリッド通信ユニットを備える他の電子システムの1つであってよい。電子デバイス200は、(場合によっては、複数のプロセッサと、複数のコアと、複数のノードとを含む、および/またはマルチスレッドを実施する、など)プロセッサユニット202を含む。電子デバイス200は、メモリユニット206を含む。メモリユニット206は、システムメモリ(たとえば、キャッシュ、SRAM、DRAM、ゼロコンデンサRAM、ツイントランジスタRAM、eDRAM、EDO RAM、DDR RAM、EEPROM(登録商標)、NRAM、RRAM(登録商標)、SONOS、PRAMなどの1つまたは複数)であってもよいし、機械可読媒体の上記ですでに説明した考えられる実現物のいずれか1つまたは複数であってもよい。電子デバイス200は、バス210(たとえば、PCI、ISA、PCI−Express、HyperTransport(登録商標)、InfiniBand(登録商標)、NuBus、AHB、AXIなど)、ワイヤレスネットワークインターフェース(たとえば、WLANインターフェース、ブルートゥース(登録商標)インターフェース、WiMAXインターフェース、ZigBee(登録商標)インターフェース、ワイヤレスUSBインターフェースなど)の1つまたは複数を含み得るネットワークインターフェース204、および/または有線ネットワークインターフェース(たとえば、電力線通信インターフェース、イーサネットインターフェースなど)も含む。いくつかの実装形態では、電子デバイス200は、複数のネットワークインターフェースを備えることができる−その各々は、電子デバイス200を異なる通信ネットワークに結合する。たとえば、電子デバイス200は、電力線通信インターフェースと、イーサネットインターフェースと、電子デバイス200を電力線通信ネットワークセグメント、イーサネット、ワイヤレスローカルエリアネットワークにそれぞれ結合するWLANインターフェースとを備えることができる。
電子デバイス200は、通信ユニット208も含む。通信ユニット208は、ハイブリッド制御エンティティ212と、ハイブリッドブリッジ214とを備えることができる。ハイブリッド制御エンティティ212およびハイブリッドブリッジ214は、複数の、場合によっては動的な伝送媒体を使用するストリームの送信および/または受信に関連するいくつかの技術のいずれかを実行するように構成され得る。たとえば、ハイブリッド制御エンティティ212および/またはハイブリッドブリッジ214は、一組の実施形態による図4〜7の方法のいずれかまたはすべてを実施するように構成され得る。これらの機能のいずれか1つは、ハードウェア内で、および/またはプロセッサユニット202(たとえば、メモリユニット206などの記憶媒体上に記憶されたプログラム命令を実行する)上で、部分的に(または完全に)実施され得る。たとえば、機能は、特定用途向け集積回路を用いて、プロセッサユニット202内で実施される論理内で、またはカード周辺デバイス上のコプロセッサ内などで、実施され得る。さらに、実現物としては、図2で図示されない、上記よりも少ないまたは追加の構成要素(たとえば、ビデオカード、オーディオカード、追加のネットワークインターフェース、周辺デバイスなど)があり得る。プロセッサユニット202、メモリユニット206、およびネットワークインターフェース204は、バス210に結合される。メモリユニット206は、バス210に結合されるように示されているが、プロセッサユニット202に結合されてもよい。
図3
一実装形態では、図3に示されるように、ネットワーキング機能のハイブリッドデバイス102a…102nは、国際標準化メカニズム(ISO)のオープンシステム間相互接続(OSI)参照モデルと合致する、「レイヤード」アプローチを使用してサブ機能に分割され得る。ネットワークプロトコルレイヤのセットは、「プロトコルスタック」と呼ばれることがある。図3は、複数のネットワークインターフェースを実施するデバイス102のための例示的なプロトコルスタックを示す。図3の例では、ハイブリッドデバイス102は、2つの通信インターフェースを含む。したがって、ハイブリッドデバイス102は、2つの物理(PHY)レイヤ302および304と、2つの対応するメディアアクセス制御(MAC)レイヤ306および308とを備える。MACレイヤ306およびPHY302レイヤは、デバイス102を1つの通信ネットワークセグメント322(たとえば、イーサネット)に結合する。同様に、MACレイヤ308およびPHYレイヤ304は、ハイブリッドデバイス102を別の通信ネットワークセグメント324(たとえば、電力線通信ネットワーク)に結合する。通信ネットワークセグメント322および324は各々、ハイブリッド通信ネットワークなどのブリッジ接続された拡張ネットワークの一部分とすることができることに留意されたい。デバイス102はネットワークレイヤ312を備える。ネットワークレイヤ312は、インターネットプロトコルバージョン4(IPv4)通信プロトコル、インターネットプロトコルバージョン6(IPv6)通信プロトコル、AppleTalk(登録商標)通信プロトコル、または他の適切なネットワークレイヤプロトコルを実施することができる。デバイス102はまた、ネットワークレイヤ312とMACレイヤ306および308との間で「ハイブリッド適応レイヤ」310を実施する。一例では、図3に示されるように、ハイブリッド適応レイヤ310は、ハイブリッド制御エンティティ212、ハイブリッドブリッジ214、および/または本開示の実施形態を実施するように構成された他のモジュールを備えることができる。デバイス102は、ネットワークレイヤ312を越えて動作するトランスポートレイヤ314も備える。ハイブリッドデバイス102は、伝送制御プロトコル(TCP)、ユーザデータグラムプロトコル(UDP)、および/またはハイブリッドデバイス102によって実施されるネットワークレイヤプロトコルに応じた他の適切なトランスポートレイヤプロトコルを実施することができる。ハイブリッドデバイス102は、他のデバイスとの通信のためにプロトコルスタックを利用することができる3つのアプリケーション316と318と320も備える。
いくつかの実装形態では、アプリケーションレイヤ(アプリケーション316と318と320とを備える)、トランスポートレイヤ314、およびネットワークレイヤ312は、「上位プロトコルレイヤ」と総称され得る。MACレイヤ306および308ならびにPHYレイヤ302および304は、「下位プロトコルレイヤ」と総称され得る。ハイブリッド適応レイヤ310は、上位プロトコルレイヤ(たとえば、実施される各上位レイヤプロトコル型に対する単一のネットワークレイヤおよびトランスポートレイヤ)の単一セットを用いて、ハイブリッドデバイス102内のネットワーク通信を管理するための機能を実施することができるが、複数のネットワークインターフェース(たとえば、複数のPHYレイヤおよびMACレイヤ)を用いて実施することもできる。一実装形態では、ハイブリッド適応レイヤ310は、ネットワークリソースを管理するために、およびプロトコルスタックの上位レイヤに対してトランスペアレントである迅速なパケットルート変更を行うために、下位のMACレイヤ306および308とインターフェースすることができる。ハイブリッド適応レイヤ310は、送信元ハイブリッドデバイス102が単一のMACレイヤと対応する単一のPHYレイヤとをのみ備えるかのように上位プロトコルレイヤが動作することを可能にすることもできる。図3に示されるプロトコルスタックは、ハイブリッドデバイス102のアーキテクチャの一実施形態を示すことに留意されたい。他の実装形態では、ハイブリッドデバイス(複数可)102は、ネットワーキング技術および実施され得る任意選択のプロトコルに応じて、他の適切なレイヤまたはサブレイヤを備えることができる。たとえば、いくつかのネットワーキング技術は、MACレイヤの上でイーサネットコンバージェンスレイヤを実施することができる。別の例として、いくつかのネットワーキング技術は、論理リンク制御(LLC)プロトコルレイヤを含むことができる。そのうえ、いくつかの実装形態では、1つまたは複数の他のサブレイヤが、本明細書において説明する機能を実行することができる。
図4〜図8
図4〜図7は、複数の伝送媒体を使用したネットワーク通信に関連するいくつかの方法を示すフローチャート図である。図4〜図7に関して以下で説明されるステップは特定の順序で示されているが、様々な実施形態によれば、ステップの1つまたは複数は、省略してもよいし、繰り返してもよいし、示されている順序と異なる順序で実行してもよいことに留意されたい。必要に応じて、1つまたは複数の追加ステップが、同じくまたは代替的に追加されてよい。いくつかの実施形態では、方法の1つまたは複数(または方法の1つもしくは複数の1つもしくは複数のステップ)が互いに組み合わされてもよい。
図4は、あるデバイスが第2のデバイスにストリームを送信するための方法の実施形態を示すフローチャート図である。この方法を実施するデバイスは、複数の伝送媒体を介して第2のデバイスに結合され得る。たとえば、いくつかの実施形態では、第1のデバイスおよび第2のデバイスは、図1に示されるデバイスの2つであってよい。方法を実施するシステムは、いくつかの実施形態では、図2に示され、図2に関して説明されるようなシステムであってよい。方法を実施するシステムは、いくつかの実施形態では、図3に示され、図3に関して説明されるようなOSIプロトコルスタックを実施することができる。たとえば、一組の実施形態では、方法は、たとえばハイブリッド制御エンティティ212および/またはハイブリッドブリッジ214によって、ハイブリッド適応レイヤ310で実施され得る。他の実施形態では、方法は、別のレイヤまたはいくつかのレイヤで実施され得る(たとえば、いくつかのレイヤの各々は、方法の要素を実施することができる)。方法は、次のように実行され得る。
402では、複数の伝送媒体の各々のパス特性が決定され得る。いくつかの実施形態では、伝送媒体の少なくとも1つは、本質的には、実質的に動的であることがある。たとえば、伝送媒体としては、Wi−Fi(たとえば、2.4GHz、5GHz、および/または別のISM周波数帯域を使用する)、PLC(たとえば、電気配線を使用する)、および/または様々な要因(たとえば、干渉、チャネルのフェージング、または他の要因を含む)に応じて経時的にPHYレートが変わることができる、1つまたは複数の他の実質的に動的な伝送媒体があり得る。伝送媒体は、本質的には実質的に動的でない1つまたは複数の伝送媒体、すなわち、イーサネットなどの、PHYレートが実質的に静的であり経時的に予測可能であることができる伝送媒体も含むことができる。
いくつかの実施形態によれば、各伝送媒体に対して決定されるパス特性としては、各伝送媒体の1つもしくは複数の現在の媒体利用率、最大媒体利用率、および/またはリンク容量があり得る。いくつかの実施形態によれば、現在の媒体利用率は、伝送媒体がビジーである時間のパーセンテージとすることができる。最大媒体利用率は、最大許容媒体利用率とすることができる。たとえば、現在の媒体利用率が最大媒体利用率よりも高い場合、伝送媒体はオーバーサブスクライブされる(oversubscribed)または容量超過と見なされることがあり、これにより、1つまたは複数の負荷バランシングの判定がトリガされることがある。いくつかの実施形態では、最大媒体利用率は、100%未満に設定されることがあり、すなわち、所望の性能を提供するために余裕が維持される、たとえば、個々のストリーム媒体利用率の変化性に相当することができる。言い換えれば、個々のパケットストリームの媒体使用率(個々のストリームの「ストリーム媒体利用率」)は経時的に変わり得るので、媒体上で送信されるようにスケジュールされたトラフィックの量がそのトラフィックをサポートする媒体の容量を超える前にトラフィックを媒体から移すことによって伝送媒体上で通信されるストリームの性能に悪影響を及ぼすことを回避するために、最大媒体利用率を100%未満に設定することが望ましいことがある。伝送媒体の最大媒体利用率は、伝送媒体/通信インターフェースのタイプによって、および/または様々な実施形態により伝送媒体を使用するようにスケジュールされたストリームのタイプに応じて(たとえば、ストリーム内容、パケットのタイプ、および/または優先レベルに基づいて)、異なってよい。特定の宛先に対する伝送媒体のリンク容量は、送信元デバイスと宛先デバイスの間の伝送媒体の利用可能なデータ搬送容量とすることができる。言い換えれば、伝送媒体のリンク容量は、伝送媒体がどれほど多くの追加データを特定のデバイスに、たとえば、メガビット毎秒(Mbps)、ギガビット毎秒(Gbps)、またはデータレートの何らかの他の測定単位で、所与の時刻に送信することが可能であるかの尺度である。いくつかの実施形態では、リンク容量は、各伝送媒体によってアクセス可能である可能な宛先ごとに推定され得る。たとえば、一組の実施形態によれば、デバイスが、PLC、2.4GHzのWi−Fi、または5GHzのWi−Fiのいずれかを使用して2つの他のデバイスと通信するように構成される場合、6つのリンク容量が決定され得る。リンク容量は、いくつかの実施形態では、最大媒体利用率、伝送媒体のPHYレート、および誤り率に対応することができる。いくつかの実施形態では、他の要因が、同じくまたは代替的に、リンク容量の計算/推定に含まれてよい。たとえば、一組の実施形態では、優先順位のより高いストリームに対するリンク容量の計算が、優先順位のより低いストリームに代わる可能性をもたらし得るので、伝送媒体のリンク容量は、ストリームのタイプによって、たとえば優先順位および/またはコンテンツタイプに応じて、異なってよい。
いくつかの実施形態では、これらのパス特性が、システムが利用可能な伝送媒体のすべて(動的な伝送媒体と静的な伝送媒体の両方を潜在的に含む)に対して決定され得ることに留意されたい。これらのパス特性に加えて(または、これらのパス特性の1つまたは複数の代わりに)、1つまたは複数の他の特性(場合によっては、媒体固有特性を含む)が伝送媒体の1つまたは複数に対して決定され得る。たとえば、いくつかの実施形態では、有効媒体利用率およびリンク容量がWi−Fi接続に対して決定され得る。これらの得られたパス特性は、そのような接続はアクセスポイントを通る中継(たとえば、ワイヤレスルータ)を含むことができることの説明となるように調整され得る。さらに、いくつかの実施形態では、各伝送媒体上の個々のストリーム(たとえば、パケットストリーム)の使用特性が決定され得る。たとえば、いくつかの実施形態では、推定されたストリーム媒体利用率が、伝送媒体上で送信される各ストリームに対して決定され得る。上記で述べたように、ストリーム媒体利用率は、どれくらい多くのストリームが伝送媒体を使用しているかの尺度(たとえば、時間のパーセンテージ)とすることができる。
404では、第1の伝送媒体は、決定されたパス特性に基づいて、第1のストリームに対する複数の伝送媒体から選択され得る。第1のストリームは、「新しい」ストリーム、すなわち、パケットがまだ送信されていないストリームであってよい。第1のストリームは、複数の伝送媒体を介して第1のデバイスに結合された第2のデバイスへの送信のためのものとすることができる。言い換えれば、第2のデバイスは、第1のデバイスから複数の伝送媒体のいずれかを介して第1のストリームのパケットを受信することを可能とすることができる。したがって、第1のデバイスは、どの伝送媒体(パス)を使用して第1のストリームのパケットを第2のデバイスに最初に送信するか決定することが必要なことがある。
実際のパス選択アルゴリズムは、たとえばどのくらい多くの伝送媒体が利用可能か、および各伝送媒体が第1のストリームの宛先デバイスに対してどのくらい多くのリンク容量を現在有するかに応じて、決定されたパス特性を様々な方法のいずれかにおいて使用することができる。パス選択アルゴリズムはまた、第1のストリームのストリーム特性(たとえば、コンテンツタイプ(ビデオ、音声、その他など)、パケットタイプ(たとえば、UDP、TCPなど)、優先レベル(たとえば、低、中、高))に左右されることがある。場合によっては、これらのストリーム特性は、自動的にまたは手動で相関させることができる。たとえば、いくつかの実施形態では、ビデオコンテンツストリームは、高い優先レベルを自動的に受信することができる。その他の自動または手動による優先権の相関も可能である。
一組の実施形態では、第1の伝送媒体は、複数の伝送媒体の中で最大の利用可能リンク容量を有することに基づいて選択され得る。いくつかの実施形態では、第1の伝送媒体は、第1のストリームのタイプの追加ストリームをサポートするのに十分なリンク容量(たとえば、ある一定の閾値を上回るリンク容量)を有する複数の伝送媒体の中で、第1のストリームのタイプのストリームにとって好ましい媒体とすることができる。
いくつかの実施形態では、パス選択プロセスは、複数のタイプのストリームの各々に対する伝送媒体の好ましい順序を決定することを含むことができる。いくつかの実施形態では、この複数のタイプのストリームの各々に対する伝送媒体の好ましい順序は、新しいストリームに主に適用することができる。たとえば、好ましい順序は、新しいストリームを伝送媒体に割り当てるために使用され得るが、ストリームがいったん伝送媒体に割り当てられると、そのストリームのパケットは、その媒体上に引き続き無期限に(たとえば、オーバーサブスクリプションまたは他のイベントのために再び割り当てられない限り)送信され得る。
一実施形態では、ストリームのカテゴリ化は、ごく単純なことがある。たとえば、UDPパケットは、第1の好ましい順序の伝送媒体に割り当てられることがあり、非UDPパケットは、第2の好ましい順序の伝送媒体に割り当てられ得る。いくつかの実施形態では、タイプに基づくストリームの分類またはカテゴリ化は、まったく行われなくてよい。そのような実施形態では、すべてのタイプのストリームは、等しく扱われ得る。しかしながら、一般的に、ストリーム特性に応じてより広範囲のサービス品質を提供するために、ストリームタイプの区別および分類のためのより高い能力を提供することが望ましいことがあり、そのため、いくつかの実施形態では、ストリームは、3つ以上のクラスに分類されることがある。
一般的に言えば、優先順位の高い(たとえば、コンテンツタイプ(たとえば、音声、ビデオ、データなど)、パケット構造(TCP、UDPなど)、手動による割り当て、または別の基準に基づいて)パケットストリームを、(たとえば、最も良い性能を優先順位の高いストリームに提供するために)より高い信頼性および/またはより大きなリンク容量を有する伝送媒体に割り当てることが好ましいことがある。しかしながら、他の要因が、同じくまたは代替的に、所与のタイプのストリームに対する伝送媒体の好ましい順序を決定する際に重要な役割を果たすことがある。
いくつかの実施形態では、異なるストリームタイプに対する伝送媒体の好ましい順序の割り当ては、パス特性の変更に基づいて頻繁に更新され得ることに留意されたい。たとえば、伝送媒体の媒体利用率が著しく増加する、および/または媒体がオーバーサブスクライブした場合、その伝送媒体は、追加ストリームをその伝送媒体に割り当てることを回避するために、それ自体の媒体利用率が減少し、それ自体のリンク容量が増加する(たとえば、1つまたは複数のストリームが終了したまたは異なる伝送媒体に再び割り当てられたので)まで、1つまたは複数のタイプのストリームに対する伝送媒体の好ましい順序の最後になることができる。
いくつかの実施形態では、第1の伝送媒体がいったん第1のストリームの送信のために選択されると、第1のストリームの後続パケットが送信のために第1の伝送媒体にルーティングされるべきであることを示す情報が格納され得る。
406では、第1のストリームの第1の複数のパケットが、第1の伝送媒体上で送信され得る。実施形態に応じて、第1のストリームの第1の複数のパケットは、個別におよび/またはバーストで(すなわち、複数のパケットからなるグループで)送信されてもよく、潜在的には、他のストリームの個々のパケットまたはパケットバーストは、第1のストリームの個々のパケットまたはパケットバーストの合間に第1の伝送媒体上で送信される。ステップ406では、第1のストリームの第1の複数のパケットが、第1のストリームの送信のための第1の伝送媒体の選択に基づいて、第1の伝送媒体上での送信のために第1の伝送媒体にルーティングされ得る。いくつかの実施形態では、ルーティングは、具体的には、第1のストリームのパケットは送信のために第1の伝送媒体にルーティングされるべきであることを示す格納された情報に基づくことができる。たとえば、いくつかの実施形態では、第1のストリームの新しいパケットが第1のデバイスによって送信のために受信されると、この新しいパケットを第1のストリームの一部と識別する、新しいパケット内の情報が、第1のストリームのパケットは送信のために第1の伝送媒体にルーティングされるべきであることを示す格納された情報と組み合わせて、新しいパケットのルーティングを決定するために使用され得る。
いくつかの実施形態では、1つまたは複数の他のパケットストリームは、たとえば第1のストリームの第1の伝送媒体への割り当ての前および/または後に、複数の伝送媒体の第1の伝送媒体および/または1つもしくは複数の他の伝送媒体に割り当てられ、その上で送信され得る。いくつかの実施形態では、そのような他のストリームのためのパス選択が同様に実行され得る。たとえば、1つまたは複数のテーブルまたは他のデータ構造が、異なるタイプのストリームに対する複数の伝送媒体の現在の好ましい選択順序を追跡するために、およびどの伝送媒体がどのアクティブなパケットストリームに現在割り当てられているか追跡するために、維持され得る。いくつかの実施形態では、パケットストリームがアクティブでなくなると、それらのパケットストリームに関連する格納された情報は、テーブル(複数可)または他のデータ構造(複数可)から除去され得る。
いくつかの実施形態では、各伝送媒体に割り当てられた1つまたは複数のアクティブなパケットストリームは異なる宛先アドレスを有することができることにも留意されたい。たとえば、上記で述べたように、いくつかの実施形態では、各伝送媒体は、方法を実施するデバイスを複数の他のデバイスに連結することができる。したがって、1つまたは複数のストリームが同じ伝送媒体を使用して異なる宛先デバイスに送信され得ることが可能なことがある。
408では、第1の伝送媒体の現在の媒体利用率が第1の閾値を超えたと決定され得る。これは、いくつかの実施形態では、たとえば媒体条件の変更および/または追加ストリームが第1の伝送媒体に割り当てられた結果として、第1の複数のパケット(または第1の複数のパケットの少なくとも一部分)が第1の伝送媒体上で送信された後で行われ得る。たとえば、現在の媒体利用率が第1の伝送媒体の最大媒体利用率を超えたと決定され得る。上記で述べたように、これは、本明細書ではオーバーサブスクリプションイベントと呼ばれることがあり、第1の媒体がオーバーサブスクライブしたことを示すことができる。第1の伝送媒体上でのストリームの所望の性能およびサービス品質を維持するために、第1の伝送媒体上で現在送信されている1つまたは複数のストリームを別の伝送媒体に(部分的または完全に)移ることが望ましいことがある。一般的に言えば、たとえば、複数の通信インターフェースを使用する送信ストリームに関連するオーバーヘッドを回避するために、ストリームを伝送媒体間で全体として移ることが好ましいことがある。しかしながら、いくつかの状況(たとえば、利用可能な伝送媒体が、その全体が第1の伝送媒体上で現在送信されている何らかのストリームの送信をサポートするのに十分なリンク容量を持たない)では、ストリームの送信を2つ以上の通信インターフェース間で分割することが望ましいことがある。
410aでは、第1のストリームは、第2の伝送媒体上での送信のために選択され得る。第1のストリームは、第1の伝送媒体の現在の媒体利用率が第1の閾値を超えると決定したことに基づいて、第2の伝送媒体上での送信のために選択され得る。いくつかの実施形態では、(たとえば、第1の伝送媒体の代わりに)第2の伝送媒体上での送信に第1のストリームを選択するためのプロセスは、初期パス選択のためのプロセスとの類似点を含むことができる。たとえば、(すなわち、オーバーサブスクライブした)第1の伝送媒体上で送信される第1のストリームおよび何らかの他のストリームの特性は、第2の伝送媒体に移動されるべき第1のストリームを選択する際に考慮され得る。同様に、第2の伝送媒体および複数の伝送媒体の何らかの他の伝送媒体の特性は、第1のストリームの送信のために第2の伝送媒体を選択する際に考慮され得る。
いくつかの実施形態では、第1の伝送媒体上で現在送信されているストリームを選択して異なる伝送媒体に再び割り当てるプロセスは、第1の媒体上で送信されている各ストリームのストリーム媒体利用率を決定することを含むことができる。一組の実施形態によれば、最大のストリーム媒体利用率を持つストリームは、好ましくは、別の伝送媒体への再割り当てのために選択され得る。別の組の実施形態では、最小のストリーム媒体利用率を持つストリームは、好ましくは、別の伝送媒体への再割り当てのために選択され得る。いくつかの実施形態では、ストリームの優先順位も考慮され得る。たとえば、いくつかの実施形態では、最低の優先レベルを持つストリームが、好ましくは、再割り当てのために選択されてもよいし、最低の優先レベルを持つストリームの中で最大(または最小)のストリーム媒体利用率を持つストリームが、好ましくは、再割り当てのために選択されてもよい。
他の実施形態では、他の要因が、ストリーム優先順位およびストリーム媒体利用率に加えて、またはこれらの代わりに、どのストリームを新しい伝送媒体に再び割り当てるべきか決定する際に考慮され得る。たとえば、伝送媒体の特性自体が、どのストリームが再割り当てのために選択されるかに影響を及ぼすことができる。いくつかの実施形態では、利用可能な伝送媒体の特性が、同じくまたは代替的に、ストリームが再び割り当てられるべき新しい伝送媒体を選択する際に考慮され得る。たとえば、複数の伝送媒体の各々の現在のリンク容量は、新しい伝送媒体(たとえば、第2の伝送媒体)上での送信にストリーム(たとえば、第1のストリーム)を選択する際と、再割り当てのために選択されたストリーム(たとえば、第1のストリーム)をその上で送信するべき新しい伝送媒体(たとえば、第2の伝送媒体)を選択する際の両方で、決定および考慮され得る。上記で述べたように、いくつかの実施形態では、最低の優先順位および/または最大のストリーム媒体利用率を持つストリームを再割り当てのために選択することが好ましいことがある。しかしながら、最低の優先順位および/または最高のストリーム媒体利用率を持つストリームを追加するのに十分なリンク容量を持つ利用可能な伝送媒体がない場合、より高い優先順位および/またはより低いストリーム媒体利用率を持つストリームが、再割り当てのために選択されてよい。
例示的な一組の実施形態では、再割り当てプロセスは、次のように実行され得る。最大の利用可能リンク容量を持つ伝送媒体は、ストリームを第1の伝送媒体からそれ自体に再び割り当てさせるために選択され得る。選択された伝送媒体が、(たとえば、ストリーム優先順位、ストリーム媒体利用率、または他の要因の結果として)再割り当てに好ましく選択されたストリームに対して十分なリンク容量を有するかどうか決定され得る。選択された伝送媒体が、そのストリームに対して十分なリンク容量を有する場合、そのストリームは、選択された伝送媒体に再び割り当てられ得る。選択された伝送媒体が、そのストリームに対して十分なリンク容量を持たない場合、選択された伝送媒体が、次のストリームに対して十分なリンク容量を有するかどうか決定され得る。このプロセスは、許容可能なストリームが、選択された伝送媒体への再割り当てのために選択されるまで、そのような方法で継続され得る。許容可能なストリームが、全体として再割り当てのために選択されない場合(たとえば、第1の伝送媒体上での現在送信されているストリームのいずれかをサポートするのに十分なリンク容量を持つ利用可能な伝送媒体がない場合、または別の理由で)、方法は、あるいは、ストリームが部分的に再び割り当てられる、たとえば分割/アグリゲーションされ得るかどうか決定するために、ステップ410bに進むことができる。
いくつかの実施形態では、インジケーションが、第1のストリームが第2の伝送媒体に再び割り当てられた第2のデバイスに提供され得る。インジケーションは、1つまたは複数の制御パケットなどの制御メッセージを含んでもよいし、別の形をとってもよい。あるいは、いくつかの実施形態では、インジケーションが提供されなくてもよく、第2のデバイスは、第2の伝送媒体上で第1のストリームのパケットを受信することのみに基づいて、第1のストリームが第2の伝送媒体に再び割り当てられたと決定するように構成され得る。
412aでは、第1のストリームの第2の複数のパケットが第2の伝送媒体上で送信され得る。第1のストリームの第2の複数のパケットは、(たとえば、410aで)第2の伝送媒体上での送信に第1のストリームを選択したことに基づいて、第2の伝送媒体上で送信され得る。第1のストリームが第2の伝送媒体上で送信されるべきであると(たとえば、第1の伝送媒体のオーバーサブスクリプションならびに第2の伝送媒体の1つもしくは複数のパス特性および/または第1のストリームの1つもしくは複数のストリーム特性に基づく選択アルゴリズムの結果として)決定された後で、第1のストリームの後続パケットが第2の伝送媒体にルーティングされるべきであることを示す情報が格納され得る。たとえば、どの伝送媒体に各アクティブなストリームが割り当てられるべきか示す情報を格納するテーブルまたは他のデータ構造がある場合、このテーブルは、第1のストリームのパケットが第2の伝送媒体にルーティングされるべきであることを示すように更新され得る。
第1のストリームが第2の伝送媒体に再び割り当てられた後、第1のストリームのパケットは、たとえば、第1のストリームのパケットが第2の伝送媒体にルーティングされるべきであることを示す更新されたテーブルまたは他のデータ構造に基づいて、第1の伝送媒体上で送信されなくなってもよい。第1の伝送媒体のオーバーサブスクリプションのレベルに応じて、第1の伝送媒体は、第1のストリームの再割り当ての後でオーバサブスクライブしなくなってもよい。この場合、少なくとも、別のオーバーサブスクリプションイベントが発生する(または、伝送媒体が故障する、その場合、伝送媒体上で送信されているすべてのストリームは新しい伝送媒体に再び割り当てられ得る)まで、ストリームのさらなる再割り当てが必要であることがある。しかしながら、第1のストリームの再割り当ての後で第1の伝送媒体が依然としてオーバーサブスクライブする場合、別のオーバーサブスクリプションイベントが発生することができる、いくつかの実施形態では、これによって、第1の伝送媒体から離れるように別のストリームの再割り当てがトリガされることがある。いくつかの実施形態では、オーバーサブスクリプションイベントによりストリームを伝送媒体から移すことと、伝送媒体の媒体利用率を再測定することの間に、遅延(たとえば、構成可能な遅延)があり得ることに留意されたい。これは、更新されたデータ/統計が使用され、伝送媒体がより古いデータ/統計に基づいて、依然としてオーバーサブスクライブしていると誤って決定されないことを確実にするために、望ましいことがある。
上記で述べたように、いくつかの実施形態によれば、第1の伝送媒体上で送信されているストリームが、別の伝送媒体のオーバーサブスクリプションを引き起こすことなく、全体として別の伝送媒体に再び割り当てられ得ない場合、あるストリームが、複数の伝送媒体上での送信のために選択され得る。したがって、そのような場合、ステップ410aの代わりに、410bにおいて、第1のストリームが、第1の伝送媒体と第2の伝送媒体の両方の上での送信のために選択され得る。したがって、いくつかの実施形態では、第1のストリームは、第1の伝送媒体の現在の媒体利用率が第1の閾値を超えると決定したことに基づいて、および複数の伝送媒体の中で、第1の伝送媒体上で現在送信されているいずれかのストリームが代替伝送媒体上で完全に送信されるのに十分な利用可能なリンク容量(たとえば、伝送媒体によってアクセス可能ないずれかの宛先デバイスに対する)を有する代替伝送媒体がないと決定したことにも基づいて、第1の伝送媒体と第2の伝送媒体の両方の上での送信のために選択され得る。
さらに、いくつかの実施形態では、第2のデバイスはストリームをアグリゲーションするように構成されると決定され得る。この決定は、いくつかの実施形態では、第1のデバイスと第2のデバイスの間で送信される初期構成メッセージに基づいて行われ得る。あるいは、第1のデバイスは、第2のデバイスに問い合わせて、第2のデバイスはストリームをアグリゲーションするように構成されることを示す肯定応答を受信してもよいし、しかしながら、第2のデバイスのストリームをアグリゲーションする機能の確認をせずに、第1のストリームを分割しようとするだけでもよい。しかしながら、一般に、第1のストリームを複数の伝送媒体に分割する前に、第2のデバイスのストリームをアグリゲーションする機能の確認を受信することが好ましいことがある。いくつかの実施形態では、第1のデバイスが、第2のデバイスはストリームをアグリゲーションするように構成されていないというインジケーションを受信した場合、第1のデバイスは、第1のストリームを分割しないことができる。この場合、ストリーム分割/アグリゲーションを伴わない最良の取組みによる負荷バランシングの試みが行われ得る。あるいは、第1の伝送媒体を使用して異なるデバイスに送信されているストリームは、たとえば他のデバイスがストリームアグリゲーションをサポートする場合、分割のために選択され得る。
いくつかの実施形態では、ストリームを再び割り当てるべき2つの伝送媒体の選択は、単一の新しい伝送媒体への再割り当てにストリームを選択するよりも複雑になることがある。上記で述べたように、送信デバイスにおけるストリームの分割および受信デバイスにおける分割されたストリームのアグリゲーションは、著しい追加オーバーヘッドを招くことがあり、すべてのストリームを1つの伝送媒体または別の伝送媒体上で完全に送信するほど効率的でない、個々の伝送媒体の使用となることがある。しかしながら、少なくとも1つの伝送媒体のオーバーサブスクリプションを引き起こすことなくすべてのアクティブなストリームに対応するように複数の伝送媒体を負荷バランシングすることが困難または不可能な状況では、他のオプションが好ましいことがある。というのは、他のオプションは、複数の伝送媒体を全体としてより効率的に使用する機会を与えることができるからである。
いくつかの実施形態では、ストリームを再び割り当てるべき2つの伝送媒体および再び割り当てるべきストリームの選択を決定する選択プロセスは、分割を伴わない再割り当てのための伝送媒体およびストリームの選択で使用される同じ特性の多くの使用を含むことができる。たとえば、様々な伝送媒体のリンク容量ならびに第1の伝送媒体上で送信されている個々のストリームのストリーム媒体利用率および/またはタイプ(たとえば、優先順位)は、第1の媒体と第2の伝送媒体の両方への再割り当てのために第1のストリームを選択する際に決定および使用され得る。例示的な一組の実施形態では、最高のリンク容量を持つ2つの伝送媒体が、ストリームをそれらの伝送媒体に再び割り当てさせるために選択され得る。別の組の実施形態では、第1の伝送媒体は、再割り当てのために選択されたストリームの一部分を送信し続けるために自動的に選択されてもよく、残りの伝送媒体のうち最高のリンク容量を持つ伝送媒体は、第2の伝送媒体として選択され得る。必要に応じて、ストリームを再び割り当てるべき2つの伝送媒体を選択するための他のプロセスが代替的に使用されてもよい。
いくつかの実施形態では、単一のストリームを3つ以上の伝送媒体に分割することが望ましくないことがあり、その理由は、この追加の分割およびアグリゲーションによって引き起こされるオーバーヘッドの増加が望ましくないまたは必要ではないことがあるからであることに留意されたい。たとえば、正常な負荷バランシングが、1つのストリームを2つの伝送媒体に分割することによって達成され得ない場合、単一のストリームを3つ以上の伝送媒体に分割するのではなく、第2のストリームを2つの(たとえば、他の)伝送媒体に分割することが望ましいことがある。しかしながら、ストリームを3つ以上の伝送媒体に分割することは、必要に応じて実行され得る。
上記で述べたように、いくつかの実施形態では、複数の伝送媒体への分割および再割り当てのためのストリームの選択は、ストリームの特性および/または伝送媒体の特性に基づくことができる。たとえば、一組の実施形態では、ストリームを再び割り当てるべき最高のリンク容量を持つ2つの伝送媒体を選択したので、再び割り当てられるべきストリームは、それ自体のストリーム媒体利用率および/またはそれ自体の優先順位に基づいて選択され得る。したがって、一組の実施形態では、ストリーム(たとえば、第1のストリーム)は、最低の優先レベルを有するストリームの中から選択されてもよく、最低の優先レベルを持つストリームの中で選択された伝送媒体によって対応できる最高のストリーム媒体利用率を持つストリームとすることができる。あるいは、たとえば、より低い優先順位を持つ許容できるストリームが見つけられない場合、ストリームは、より高い優先レベルを持つストリームの中から選択されてもよく、より高い優先レベルを有するストリームの中で選択された伝送媒体によって対応できる最高のストリーム媒体利用率を持つストリームとすることができる。他の組の実施形態では、必要に応じて、異なる選択基準を利用することができ、および/または異なる方法で同じ選択基準を使用することができる。たとえば、別の組の実施形態では、最小のストリーム媒体利用率を持つストリームが、好ましくは、選択されてもよく、より高い優先順位を持つストリームは、分割(または何らかの形の再割り当て)から除外されてもよく、および/または最低の優先順位のストリームは、たとえば最良の取組みによる負荷バランシングの試みとして、それ自体が選択された伝送媒体によって対応できるかとは無関係に選択され得る。
いくつかの実施形態では、いったんストリームが再割り当てのために選択されると、ストリーム(たとえば、第1のストリーム)を選択された伝送媒体(たとえば、第1の伝送媒体および第2の伝送媒体)にどのように分割するのが最善か決定するために、さらなる計算が実行され得る。たとえば、どちらの伝送媒体のオーバーサブスクリプションも回避するように第1の伝送媒体にルーティングされる第1のストリームのパケットの割合と、第2の伝送媒体にルーティングされる第1のストリームのパケットの割合とを決定することが望ましいことがある。一組の実施形態では、この計算は、現在の媒体利用率が第1の伝送媒体の最大媒体利用率を超える量を決定することと、少なくとも現在の媒体利用率が第1の伝送媒体の最大媒体利用率を超える量を第2の伝送媒体に再び割り当てる第1のストリームを分割する際に使用するための比を選択することとを含むことができる。
412bでは、第1のストリームの第2の複数のパケットが、第1の伝送媒体と第2の伝送媒体の両方を使用して送信され得る。第1の伝送媒体と第2の伝送媒体の両方を使用して第1のストリームを送信することは、第1の伝送媒体上で第2の複数のパケットの第1の部分を送信することと、第2の伝送媒体上で第2の複数のパケットの第2の部分を送信することとを含むことができる。いくつかの実施形態では、第1の伝送媒体または第2の伝送媒体のその後のオーバーサブスクリプションを回避するように構成された比(たとえば、おおよその比または正確な比)は、第2の複数のパケットの第1の部分と第2の部分の間で維持され得る。
他のストリーム再割り当て状況と同様に、いくつかの実施形態では、分割/アグリゲーションのために選択されたストリームのパケットは選択された伝送媒体にルーティング可能であることを示す情報は、そのストリームとそれらの伝送媒体とを選択することに基づいて格納され得る。さらに、いくつかの実施形態では、選択されたストリームを分割する際に使用するための比を示す情報が格納され得る。この情報は、テーブルまたは他のデータ構造に格納され得る。たとえば、いくつかの実施形態では、選択されたストリームの以前の伝送媒体割り当てを示す、以前に格納された情報は、選択されたストリームの新しい伝送媒体割り当てと比とを示すために更新され得る。
いくつかの実施形態では、第2の複数のパケットが第1の伝送媒体と第2の伝送媒体の両方を使用して送信されているというインジケーションも、第2のデバイスに提供され得る。一組の実施形態では、アグリゲーション命令(たとえば、アグリゲーションバッファの推奨サイズを含む)を含む制御メッセージは、第1のデバイスによって第2のデバイスに送信されてもよく、第1の伝送媒体と第2の伝送媒体の両方を使用して第2の複数のパケットが送信されていることを示す。これによって、第2のデバイスがアグリゲーションバッファを開始するおよび/または第1のストリームをアグリゲーションするための他の技法を実行することが可能になり得る。いくつかの実施形態では、第2のデバイスが第1のストリームをアグリゲーションする助けとなることを意図する1つまたは複数の技法も実行され得る。
一実施形態では、たとえば第1のストリームがまだシーケンス番号を含んでいない場合、シーケンス番号が第1のストリームのパケットに挿入され得る。シーケンス番号は、第2のデバイスが分割されたストリームを再順序付けする助けとなることができる。TCPパケットストリームおよびRTPパケットストリームは、本質的に、パケットシーケンス番号を含むことができるが、UDPパケットストリームは、本質的に、第2のデバイスによってアクセス可能であり、分割されたストリームを再順序付けする際に使用可能なシーケンス番号を含まなくてよい。したがって、いくつかの実施形態では、シーケンス番号は、たとえば、パケットカプセル化(たとえば、TCPへの変換)、冗長フィールド(いくつかの実施形態ではVLANタグなど)へのシーケンス番号の挿入、または別の手段によって、第1のストリームのパケットに挿入され得る。
代替的に、または追加として、いくつかの実施形態では、切り換えマーカパケットが各伝送媒体上のバーストの先頭に挿入され得る。切り換えマーカパケットは、伝送媒体上で通信されているストリームの一部分(「バースト」)の先頭を示すことができる。したがって、1つの伝送媒体上で通信される「ストリームの開始」マーカパケットは、ストリームの次の部分(意図されたパケット順序付けに従って)がその伝送媒体上で通信されていることを示すことができる。いくつかの実施形態では、各ストリームの開始マーカパケットは、その伝送媒体上で送信されようとしているバーストのサイズを示す情報を含むことができる。これによって、いつバーストが完了されたか、したがって場合によっては、いつ次のバーストが異なる伝送媒体上で予想されるはずであるかを受信機が決定することが可能になり得る。
上記で述べたように、いくつかの実施形態では、ストリーム分割/アグリゲーションは、各伝送媒体上で送信されるストリームの割合の比を維持するように実行され得る。これを達成する1つの手段は、各伝送媒体上で異なるバーストサイズを使用することであることができ、バーストサイズは、上記の比に従って構成される。たとえば、21:33の比が望ましい場合、21(または42などの21の倍数)パケットのパケットバーストが第1の伝送媒体上で送信されてもよく、一方、33(または66などの33の倍数)のパケットバーストが第2の伝送媒体上で送信され得る。
いくつかの実施形態では、「ストリームの終了」マーカパケットも使用されることがある。たとえば、いくつかの実施形態では、ストリームの開始マーカパケットが、その伝送媒体上で送信されるバーストのサイズを示す情報を含まないことがあるが、ストリームの終了マーカパケットが、バーストが完了された(たとえば、および、現在の時刻において、そのストリームのさらなるパケットがその伝送媒体上で通信されない)ことを受信機に示すためにバーストの終了時に送信され得る。しかしながら、いくつかの実施形態では、ストリームの終了マーカパケットを使用することが望ましくないことがある。その理由は、ストリームの開始マーカパケットにバーストサイズ情報を含むだけに対して、オーバーヘッドの不必要な追加を表すことがあるからである。
したがって、一組の実施形態では、ストリームの開始マーカパケットが、第2の複数のパケットの第1の部分の先頭に挿入され得る(および、いくつかの実施形態では、ストリームの終了マーカパケットが、第2の複数のパケットの第1の部分の終了時に挿入され得る)。同様に、ストリームの開始マーカパケットが、第2の複数のパケットの第2の部分の先頭に挿入され得る(および、いくつかの実施形態では、ストリームの終了マーカパケットが、第2の複数のパケットの第2の部分の終了時に挿入され得る)。切り換えマーカパケットは、意図されたストリームパケット順序に従って第2の複数のパケットをどのようにして再結合するかを第2のデバイスに示すことができ、したがって、受信後、第2の複数のパケットの第1の部分と第2の部分(と、ストリームが分割されている限り、ストリームの開始マーカパケットと、場合によってはストリームの終了マーカパケットとを同様に含むことができる、何らかの後続ストリーム部分)は、順序正しく受信されたかどうかとは無関係に、意図された順序で再結合される。
上記で述べたように、ストリーム分割およびアグリゲーションは、単一の伝送媒体上でストリームを完全に送信することと比較して、追加オーバーヘッドを招くことがある。したがって、いくつかの実施形態では、分割されたストリームを単一の伝送媒体上で完全に送信するのに十分なリンク容量が利用可能になったときに、分割されたストリームを再びマージするために、様々な伝送媒体のリンク容量と様々なストリームのストリーム媒体利用率とをモニタすることが望ましいことがある。たとえば、一組の実施形態では、ある伝送媒体(たとえば、第1の伝送媒体または別の伝送媒体)は、その伝送媒体上で第1のストリームが完全に送信されるのに十分な利用可能なリンク容量を有すると、その後で決定され得る。そのような場合、第1のストリームは、その伝送媒体に完全に再び割り当てられることがあり、第1のストリームの第3の複数のパケットが、その伝送媒体上で送信されてもよく、第3の複数のパケットのすべては、新たに選択された伝送媒体上で送信されてもよい。
図5は、あるデバイスが複数の伝送媒体上で第2のデバイスから第1のストリームを受信するための方法を示すフローチャート図である。いくつかの実施形態によれば、図5の方法のステップは、図4に示され図4に関して説明されるような送信機側の挙動に応答する少なくともいくつかの受信機側の挙動に相当することができる。具体的には、図5は、2つの伝送媒体間でのストリームの分割の開始および/または終了、ならびに分割されたストリームの正常なアグリゲーションおよび正しいパケット順序付けを保証するために受信機によって行われる可能な挙動に関して警告されるプロセスに関連することができる。
この方法を実施するデバイスは、複数の伝送媒体を介して第2のデバイスに結合され得る。たとえば、いくつかの実施形態では、第1のデバイスおよび第2のデバイスは、図1に示されるデバイスのうち2つであってよい。方法を実施するシステムは、いくつかの実施形態では、図2に示され、図2に関して説明されるようなシステムであってよい。方法を実施するシステムは、いくつかの実施形態では、図3に示され、図3に関して説明されるようなOSIプロトコルスタックを実施することができる。たとえば、一組の実施形態では、方法は、たとえばハイブリッド制御エンティティ212および/またはハイブリッドブリッジ214によって、ハイブリッド適応レイヤ310で実施され得る。他の実施形態では、方法は、別のレイヤまたはいくつかのレイヤで実施され得る(たとえば、いくつかのレイヤの各々は、方法の要素を実施することができる)。方法は、次のように実行され得る。
502では、第1のストリームの第1の複数のパケットが、第2のデバイスから第1の伝送媒体上で受信され得る。第1の複数のパケットのすべては、第1の伝送媒体上で受信され得る。言い換えれば、第1のストリームは、最初は、単一の伝送媒体上で完全に受信され得る。
504では、第1のストリームが第1の伝送媒体と第2の伝送媒体の両方の上で送信されるというインジケーションが、第2のデバイスから受信され得る。デバイスは、第1のストリームが第1の伝送媒体と第2の伝送媒体の両方の上で送信されることを示す情報を格納することができる。いくつかの実施形態では、このインジケーションを受信することは、第1の伝送媒体および第2の伝送媒体上で受信されるパケットのパケット順序付けが損なわれないことを保証するために、アグリゲーションバッファの開始をトリガすることもできる。
506では、第1のストリームの第2の複数のパケットが、第2のデバイスから第1の伝送媒体と第2の伝送媒体の両方を使用して受信され得る。第2の複数のパケットの第1の部分(たとえば、第1のバースト)は第1の伝送媒体上で受信されてもよく、一方、第2の複数のパケットの第2の部分(たとえば、第2のバースト)は第2の伝送媒体上で受信され得る。
いくつかの実施形態では、第1のストリームのパケットは、第1の媒体および第2の媒体の上で交互に(たとえば、交互バースト)受信され得る。このため、パケットが意図されたパケット順序付けで受信されないことがあり得、さらには、この可能性が高い。言い換えれば、いくつかの実施形態では、第1のストリームの第2の複数のパケットの少なくとも一部分は、意図されたものとは異なる順序で受信され得る。そのような場合、たとえば、受信されたパケットを再順序付けするために、1つまたは複数のさらなるステップが実行されてよい。
508および510では、第2の複数のパケットの意図された順序が決定されてもよく、第2の複数のパケットは、第2の複数のパケットの意図された順序に従って再順序付けされ得る。多数の実施形態では、パケットの各部分は、内部で正しく順序付けられ得る。したがって、いくつかの実施形態では、異なる伝送媒体を介して受信された第1のストリームの各部分を再順序付けする(再結合する)ためのメカニズムが設けられ得る。上記で述べたように、一組の実施形態では、このメカニズムは、アグリゲーションバッファを含むことができる。アグリゲーションバッファの性質およびサイズは、実施形態によって変わることができる。いくつかの実施形態では、第2のデバイスから受信されるインジケーションは、たとえば第1のストリームならびに/または第1の伝送媒体および第2の伝送媒体の特性に基づく、推奨されるアグリゲーションバッファサイズを含むことができる。
いくつかのアグリゲーションバッファ技法では、パケットシーケンス番号を利用することができる。したがって、いくつかの実施形態では、第1のストリームのパケットは、シーケンス番号を含むことができる。いくつかのタイプのストリーム(たとえば、TCP、RTP)は、本質的に、パケット再順序付けに使用できるシーケンス番号を含むことができる。いくつかの他のタイプのストリーム(たとえば、UDP)は、本質的には、シーケンス番号を含まなくてよい。そのような場合、シーケンス番号は、たとえば、ストリームパケットをカプセル化すること、またはシーケンス番号を冗長フィールド(たとえば、いくつかの実施形態ではVLANタグ)に挿入すること、または別の手段によって、ストリームパケットに挿入され得る。
一組の実施形態では、アグリゲーションバッファは、環状バッファとすることができる。環状バッファを開始および維持することは、基本シーケンス変数を決定および維持することを含むことができ、この基本シーケンス変数は、処理の順番が次のパケット(たとえば、そのパケットのパケットシーケンス番号に基づく)へのポインタであってよい。新たに受信されたパケットは、シーケンス番号に基づいて、基本シーケンスポインタに対してバッファ内の適切な場所に格納されてもよく、必要に応じて、パケットは処理されてもよく、基本シーケンス変数は更新され得る。
今説明したようにパケットシーケンス番号および環状バッファを使用することは、第1のストリームのいくつかのパケットが順序を乱して受信されるかどうかと無関係に、第1のストリームがそれ自体の意図されたパケット順序付けにアグリゲーションできることを保証するための1つの可能な技法とすることができる。しかしながら、上記で述べたように、すべてのタイプのストリームが本質的にシーケンス番号を含むとは限らず、そのような場合、シーケンス番号を人為的に挿入することが負担となる可能性があり、潜在的には、さらなる問題を引き起こし得る。たとえば、いくつかの実施形態では、パケットをカプセル化してシーケンス番号を付与することによって、スイッチによってサポートされるサイズを超えてパケットが拡張されてもよく、一方、タグを冗長フィールドに挿入することは、さらなる複雑さを必要とし、場合によっては、意図されていない目的でフィールドを使用することによって曖昧さをもたらすことがある。
(たとえば、フローに関して、本質的にはシーケンス番号を含まない、または、すべてのフローに関して、一般にシーケンス番号を含まない)1つの可能な代替形態として、いくつかの実施形態では、第1のストリームのパケットの送信が1つの伝送媒体から別の伝送媒体に移動される直前(および、いくつかの実施形態では、その直後)に、切り換えマーカパケットが第1のストリームに挿入され得る。切り換えマーカパケットは、伝送媒体上で通信されているストリームの一部分の開始または終了を示すことができる。したがって、1つの伝送媒体上で通信される「ストリームの開始」マーカパケットは、ストリームの次の部分(意図されたパケット順序に従って)がその伝送媒体上で通信されていることを示すことができる。同様に、「ストリームの終了」マーカパケットは、現在の時刻において、そのストリームのさらなるパケットがその伝送媒体上で通信されていることを示すことができる。
したがって、一組の実施形態では、ストリームの開始マーカパケットが、第2の複数のパケットの第1の部分の先頭で受信されてもよく、ストリームの終了マーカパケットが、第2の複数のパケットの第1の部分の終了時に受信され得る。同様に、ストリームの開始マーカパケットが、第2の複数のパケットの第2の部分の先頭で受信されてもよく、ストリームの終了マーカパケットが、第2の複数のパケットの第2の部分の終了時に受信され得る。切り換えマーカパケットは、意図されたストリームパケット順序に従って第2の複数のパケットをどのようにして再結合するかを第2のデバイスに示すことができ、したがって、受信後、第2の複数のパケットの第1の部分と第2の部分(と、ストリームが分割されている限り、ストリームの開始マーカパケットと、ストリームの終了マーカパケットとを同様に含むことができる、何らかの後続ストリーム部分)は、順序正しく受信されたかどうかに関係なく、意図された順序で再結合される。
たとえば、いくつかの実施形態では、ストリームの開始マーカパケットおよび第2の複数のパケットの第2の部分のいくつかのパケットは、第2の複数のパケットの第1の部分のいくつかのパケットおよびストリームの終了マーカパケットが第1の伝送媒体上で受信される前に、第2の伝送媒体上で受信され得るが、第2の複数のパケットの第2の部分は、第1のストリームの意図された順序付けでは、第2の複数のパケットの第1の部分の後ろであってよい。この場合、第2の複数のパケットの第2の部分の何らかの早期に受信されたパケットは、第2の複数のパケットの第1の部分のパケットのすべてが受信および処理されるまで、アグリゲーションバッファにバッファリングされ得る。いくつかの実施形態では、第2の複数のパケットの第1の部分全体が受信されたことは、第1の伝送媒体上でのストリームの終了マーカパケットの受信によって示され得る。その時点で、バッファリングされたパケットは、処理のためにプロトコルスタックの次のレイヤに送られてもよく、したがって、第2の複数のパケットは、意図された順序で処理され得る。
もちろん、場合によっては、たとえば、ある種のエラーによって、ストリームの終了マーカパケットが受信されないことがあることも可能である。この場合、第1の伝送媒体上で受信されることにならないさらなるパケットを無期限に待機するのを回避するために、たとえば実際の時間またはバッファサイズ(充満度)に基づいた、タイムアウトパラメータがあってもよい。
別の組の実施形態では、ストリームの開始マーカパケットは、ストリームの終了マーカパケットも使用することなく、使用され得る。たとえば、上記で図4に関して述べたように、いくつかの実施形態では、特定の伝送媒体上で受信されるストリームの開始マーカパケットは、その伝送媒体上で送信されようとするバーストのバーストサイズを示す情報を含むことができる。この場合、受信機は、ストリームの開始マーカパケット内のバーストサイズ情報に基づいて、バーストの終了がいつ発生したか(たとえば、ストリームの開始マーカパケット内のバーストサイズ情報によって示されるパケットの数がいつ受信されたか)決定することが可能であることがある。
したがって、いくつかの実施形態では、第1のストリームの第1のストリームの開始マーカパケットが第1の伝送媒体上で受信され得る。この第1のストリームの開始マーカパケットは、第1のバーストサイズを示す情報を含むことができる。次いで、第1のストリームのパケットの第1のバースト(たとえば、第1のバーストサイズを有する)が第1の伝送媒体上で受信され得る。
第1のストリームの第2のストリームの開始マーカパケットも、第2の伝送媒体上で受信され得る。この第2のストリームの開始マーカパケットは、第2のバーストサイズを示す情報を含むことができる。次いで、第1のストリームのパケットの第2のバースト(たとえば、第2のバーストサイズを有する)が第2の伝送媒体上で受信され得る。
いくつかの実施形態では、第1のバーストの第1の部分が第1の伝送媒体上で受信された後、かつ第1のバーストの第2の部分が第1の伝送媒体上で受信される前に、第2のバーストの第1の部分が第2の伝送媒体上で受信され得る。この場合、第1のストリームの開始マーカパケット内の第1のバーストサイズを示す情報に基づいて、第2のバーストの第1の部分が受信されたとき、第1のバーストの第2の部分がまだ受信されていないと決定されることがある。これに基づいて、第1のバーストの第1の部分および第2の部分が処理される間、第2のバーストの第1の部分がバッファに格納されてもよく、(たとえば、意図されたストリーム順序付けでは、第1のバーストのすべてのパケットは、第2のバーストのどのパケットの前にもなることができるので)第1のバーストの第2の部分の処理が完了した後で、第2のバーストの第1の部分が処理され得る。
いくつかの実施形態では、切り換えマーカパケットが上記で説明したように使用されるときなどに、アグリゲーションバッファを環状バッファとして実施する必要がないことがあるが、アグリゲーションバッファは、必要に応じて、依然として環状バッファとして実施されてもよいことに留意されたい。
切り換えマーカパケットはストリーム分割/アグリゲーションの場合に主に使用されるように上記で説明されているが、切り換えマーカパケットは、同じくまたは代替的に、ストリームが全体として新しい伝送媒体に転送されるストリーム再割り当て状況において使用され得ることに留意されたい。
図6は、あるデバイスがストリームを新しい伝送媒体に切り換えるための方法を示すフローチャート図である。図6の方法は、主に「フェイルオーバ」状況、すなわち、ある伝送媒体で障害が発生した(すなわち、通信機能の著しいロスまたは全ロスを被った)状況において使用され得る。しかしながら、図6の方法の一部またはすべては、同じくまたは代替的に、すなわち元の伝送媒体と新しい伝送媒体の両方が通信のために使用され得る、通常の負荷バランシング状況において使用され得る。
この方法を実施するデバイスは、複数の伝送媒体を介して第2のデバイスに結合され得る。たとえば、いくつかの実施形態では、第1のデバイスおよび第2のデバイスは、図1に示されるデバイスのうち2つであってよい。方法を実施するシステムは、いくつかの実施形態では、図2に示され、図2に関して説明されるようなシステムであってよい。方法を実施するシステムは、いくつかの実施形態では、図3に示され、図3に関して説明されるようなOSIプロトコルスタックを実施することができる。たとえば、一組の実施形態では、方法は、たとえばハイブリッド制御エンティティ212および/またはハイブリッドブリッジ214によって、ハイブリッド適応レイヤ310で実施され得る。他の実施形態では、方法は、別のレイヤまたはいくつかのレイヤで実施され得る(たとえば、いくつかのレイヤの各々は、方法の要素を実施することができる)。方法は、次のように実行され得る。
602では、第2のデバイスへの送信向けの第1のストリームが受信され得る。この第1のストリーム(たとえば、第1のストリームのパケット)は、より上位のプロトコルレイヤから受信され得る。
604では、第1のストリームの第1の複数のパケットが、第2のデバイスに第1の伝送媒体上で送信され得る。第1の複数のパケットは、1つまたは複数のインデックスマーカパケットを含むことができる。各インデックスマーカパケットは、インデックス番号を含むことができる。たとえば、いくつかの実施形態では、最初のインデックスマーカパケットは、1(または必要に応じて何らかの他の番号)というインデックス番号を有することができ、各後続インデックスマーカパケットは、それ自体の前のインデックスマーカパケット内のインデックス番号に対して1だけ増分されたインデックス番号を有することができる。インデックスマーカパケットは、第1のストリームに挿入され得る。インデックスマーカパケットは、規則的な間隔または不規則な間隔で第1のストリームに挿入され得る。一組の実施形態では、インデックスマーカパケットは、n個のパケットごとに第1のストリームに挿入されてもよく、ここで、nは、必要に応じて、50、100、1000、5000、または何らかの他の数であってよい。いくつかの実施形態では、nの値は固定されてなくてもよく、いくつかの間隔または間隔ごとにすら、変えられてもよい。
606では、第1のストリームの第1の複数のパケットの第1の部分がバッファに格納され得る。いくつかの実施形態では、第1のストリームのパケットの少なくとも一部分が、送信バッファに(たとえば、一時的に)格納され得る。いくつかの実施形態では、インデックスマーカパケットも送信バッファに格納され得る。
608では、第1の複数のパケットの少なくとも一部分が第2のデバイスによって受信されていない可能性があると決定されることがある。いくつかの実施形態では、伝送媒体(または、特定の伝送媒体を利用するインターフェース)において、時々、一時的または永久的に障害が発生することがある。伝送媒体の障害は、本明細書で用いる場合、通信機能の(一時的または永久的な)著しいまたは完全なロスによってストリームがもはや伝送媒体上で送信されない状況を指すことを意図する。したがって、第1の伝送媒体で障害が発生したと決定された場合、第1の複数のパケットの少なくとも一部分が第2のデバイスによって受信されていない可能性があると推測されることがある。
第1の伝送媒体で障害が発生した場合、第1の伝送媒体に割り当てられた各ストリームは、新しい伝送媒体に再び割り当てられ得る。選択プロセスは、いくつかの実施形態では、図4に関して上記で説明した負荷バランシングする新しい伝送媒体選択プロセスと類似していてよい。たとえば、第1のストリーム(および、場合によっては他のストリーム)および利用可能な伝送媒体のうち1つまたは複数の特性は、どの伝送媒体(または複数の媒体)が第1のストリーム(および、場合によっては他のストリーム)に最も良く対応できるか決定するために考慮され得る。いくつかの実施形態では、第1のストリームは第2の伝送媒体に再び割り当てられるべきであると決定され得る。
第1の複数のパケットのうちいくつかが第2のデバイスによって受信されていない可能性があるので、送信バッファに格納されたパケットの少なくとも一部分が再び送信されるべきであると決定されることがある。さらに、いくつかの実施形態では、バッファマーカパケットは、「強調された」パケット(すなわち、バッファ開始マーカパケットとバッファ終了マーカパケットの間のパケット)が以前に送信されたパケット(たとえば、第1の複数のパケットの一部として第1の伝送媒体上で送信されたパケット)を複製することができることを受信機に示すために、再送信されたパケットの開始時および終了時に第2のデバイスに第2の伝送媒体上で送信され得る。
いくつかの実施形態では、バッファ開始マーカパケットは情報を含むことができ、この情報は、インデックスマーカパケットを識別し、この識別されたインデックスマーカパケットに相対的な、第1のストリーム内でのバッファ開始マーカパケットの位置を示す。たとえば、いくつかの実施形態では、あるストリーム用のバッファ開始マーカパケットは、バッファ内の第1のパケットの前にあるストリームの最後のインデックスマーカパケットのインデックス番号と、ストリーム内でそのインデックスマーカパケットとバッファ内の第1のパケットとの間にあるパケットの数とを含むことができる。これによって、インデックスマーカが規則的な(たとえば、予測可能な)間隔で挿入されているかどうかとは無関係に、第2のデバイスが何らかの複製パケットを識別および破棄することが可能になり得る。その理由は、第2のデバイスは、1つまたは複数の最近受信されたインデックスマーカパケットのインデックス番号と、それらの1つまたは複数の最近受信されたインデックスマーカパケット以降に受信されたパケットの数とを追跡するだけでよい場合があるからである。
いくつかの実施形態では、バッファ開始マーカパケットは、バッファのサイズを示す情報も含むことができる。たとえば、バッファ終了パケットを送信するのではなく、バッファのサイズ(たとえば、パケットの数)を受信機に示すことだけが有利なことがあり、これによって、受信機は、バッファの全体がいつ受信されたか決定することが可能になり得る。これは、バッファ終了パケット内で実施される追加オーバーヘッドを回避するために望ましいことがある。
いくつかの実施形態では、インデックスマーカパケットは、複製パケットがいつ受信されたか決定し、そのような複製パケットを識別および破棄するための十分な根拠(たとえば、規則的な間隔で挿入された場合)を第2のデバイスに提供することができるので、いくつかの実施形態では、バッファマーカパケットが使用されないことがあることに留意されたい。
610では、第1のストリームの第2の複数のパケットが、第2のデバイスに第2の伝送媒体上で送信され得る。第2の複数のパケットは、第1の複数のパケットの少なくともサブセットを含むことができ、1つまたは複数のインデックスマーカパケットの少なくともサブセットも含むことができる。第2の複数のパケットは、たとえば、送信バッファに格納され、かつ第1の複数のパケットの一部でもあった、パケット(何らかのインデックスマーカパケットを含む)を含むことができる。言い換えれば、第2の複数のパケットは、第1の複数のパケットのうちいくつかの複製物を含むことができる。上記で述べたように、これは、第1の複数のパケットのすべてが第2のデバイスによって受信されるとは限らないと決定されるかもしれないので、パケットロスを回避するために望ましいことがある。しかしながら、第2のデバイスに、第1の伝送媒体と第2の伝送媒体の両方の上で正常に受信されたパケット(すなわち、この複製コピー)を識別および除去するための比較的に単純な手段を提供することが望ましいこともある。
上記で述べたように、バッファ終了マーカパケットは、第2の伝送媒体上で第2のデバイスに送信され得る。バッファ終了マーカパケットは、第2の複数のパケットに含まれる第1の複数のパケットの少なくともサブセットを送信した後で、第2のデバイスに送信され得る。言い換えれば、バッファ終了マーカパケットは、たとえば、バッファリングされたパケットのすべて(すなわち、これは、第1の伝送媒体上で送信された第1の複数のパケット内のパケットを複製し得る)が送信され、後続パケットが以前に送信されたパケットを複製しないことがあることを第2のデバイスに示すために、バッファリングされたパケットのすべてが再送信された後で第2のデバイスに送信され得る。
第1のストリームの追加パケット(すなわち、非複製パケット)も、バッファリングされたパケットの終了後に、第2の伝送媒体上で第2のデバイスに送信され得る。いくつかの実施形態では、追加パケットは、複製バッファ内のパケットの送信を調節する(たとえば、自己抑制する(self−throttle))ために使用され得る。たとえば、一組の実施形態では、第1のストリームの追加パケットは、受信機への送信のために受信され得る。追加パケットは、第2の複数のパケットの後で、送信のためにバッファ内に(たとえば、バッファの末尾に)格納され得る。次いで、バッファのヘッドエンドからのあらかじめ選択された数のパケットが、第1のストリームの追加パケットを受信機への送信のために受信したことに基づいて、第2の伝送媒体上で再送信され得る。言い換えれば、追加パケットは、短時間で潜在的に多数のパケット(たとえば、第1の伝送媒体の障害により再送信されることが必要なことがあるパケット)を持つ受信機に負担をかけすぎることを回避するために、バッファからパケットを解放する自動タイマメカニズムとして使用され得る。そのような自己抑制メカニズムは、任意選択であってよく、および/または図7に関して説明するように、代替的に(もしくは追加的に)受信機内で実施され得ることに留意されたい。
上記で述べたように、いくつかの実施形態では、バッファ終了マーカパケットが送信されないことがある。この場合、バッファ開始パケットはバッファサイズを示す情報を含むことができ、その場合、バッファ終了パケットは無関係である。あるいは、いくつかの実施形態では、バッファリングされたパケットの再送信が完了したという、第2のデバイスに提供されるインジケーションがないことがある。たとえば、インデックスマーカパケットが規則的な間隔で第1のストリームに挿入される場合、それらのインデックスマーカパケットは、第2のデバイスがバッファ終了(または、いくつかの実施形態では、バッファ開始)マーカパケットを必要とせずに何らかの複製パケットを識別および破棄するのに十分な根拠を提供することができる。
図7は、デバイスが第2のデバイスから受信された複製パケットを除去するための方法を示すフローチャート図である。図7の方法は、主に「フェイルオーバ(fail-over)」状況、すなわち、ある伝送媒体で障害が発生した(すなわち、通信機能の著しいロスまたは全ロスを被った)状況において使用され得る。しかしながら、図7の方法の一部またはすべては、同じくまたは代替的に、すなわち元の伝送媒体と新しい伝送媒体の両方が通信のために使用され得る、通常の負荷バランシング状況において使用され得る。
この方法を実施するデバイスは、複数の伝送媒体を介して第2のデバイスに結合され得る。たとえば、いくつかの実施形態では、第1のデバイスおよび第2のデバイスは、図1に示されるデバイスのうち2つであってよい。方法を実施するシステムは、いくつかの実施形態では、図2に示され、図2に関して説明されるようなシステムであってよい。方法を実施するシステムは、いくつかの実施形態では、図3に示され、図3に関して説明されるようなOSIプロトコルスタックを実施することができる。たとえば、一組の実施形態では、方法は、たとえばハイブリッド制御エンティティ212および/またはハイブリッドブリッジ214によって、ハイブリッド適応レイヤ310で実施され得る。他の実施形態では、方法は、別のレイヤまたはいくつかのレイヤで実施され得る(たとえば、いくつかのレイヤの各々は、方法の要素を実施することができる)。方法は、次のように実行され得る。
702では、第1のストリームの第1の複数のパケットが、第1の伝送媒体上で受信され得る。第1の複数のパケットは、1つまたは複数のインデックスマーカパケットを含むことができる。各インデックスマーカパケットは、インデックス番号を含むことができる。たとえば、いくつかの実施形態では、最初のインデックスマーカパケットは、1(または必要に応じて何らかの他の番号)というインデックス番号を有することができ、各後続インデックスマーカパケットは、それ自体の前のインデックスマーカパケット内のインデックス番号に対して1だけ増分されたインデックス番号を有することができる。インデックスマーカパケットは、規則的な間隔または不規則な間隔で第1のストリームに置かれ得る。一組の実施形態では、インデックスマーカパケットは、n個のパケットごとに第1のストリームに置かれてもよく、ここで、nは、必要に応じて、50、100、1000、5000、または何らかの他の数であってよい。いくつかの実施形態では、nの値は固定されてなくてもよく、いくつかの間隔または間隔ごとにすら、変えられてもよい。
704では、第1の伝送媒体上で第1のストリーム内で受信された最後のインデックスマーカと最後のインデックスマーカ以降に第1の伝送媒体上で受信された第1のストリームのパケットの数とを示す情報が格納され得る。いくつかの実施形態では、たとえば、インデックスマーカが比較的短いおよび/または不規則な間隔で置かれる場合、以前に受信された複数のインデックスマーカパケットのインデックス番号を示す情報が、場合によってはそれらのインデックスマーカパケットとインデックスマーカパケットの間で受信されたパケットの数を示す情報とともに、格納され得る。
706では、バッファ開始マーカパケットが第2の伝送媒体上で受信され得る。いくつかの実施形態では、バッファ開始マーカパケットは情報を含むことができ、この情報は、インデックスマーカパケットを識別し、この識別されたインデックスマーカパケットに関連する、第1のストリーム内でのバッファ開始マーカパケットの位置を示す。たとえば、いくつかの実施形態では、あるストリーム用のバッファ開始マーカパケットは、バッファ内の第1のパケットの前にあるストリームの最後のインデックスマーカパケットのインデックス番号と、ストリーム内でそのインデックスマーカパケットとバッファ内の第1のパケットとの間にあるパケットの数とを含むことができる。これによって、インデックスマーカが規則的な(たとえば、予測可能な)間隔で挿入されているかどうかとは無関係に、第2のデバイスが何らかの複製パケットを識別および破棄することが可能になり得る。その理由は、第2のデバイスは、1つまたは複数の最近受信されたインデックスマーカパケットのインデックス番号と、それらの1つまたは複数の最近受信されたインデックスマーカパケット以降に受信されたパケットの数とを追跡するだけでよい場合があるからである。いくつかの実施形態では、バッファ開始マーカパケットは、バッファのサイズを示す情報も含むことができる。
708では、第1のストリームの第2の複数のパケットが第2の伝送媒体上で受信され得る。第2の複数のパケットは、第1の複数のパケットの少なくともサブセットを含むことができ、1つまたは複数のインデックスマーカパケットの少なくともサブセットを含むことができる。第2の複数のパケットは、たとえば、第2のデバイスによって送信バッファに格納され、かつ第1の複数のパケットの一部でもあった、パケット(何らかのインデックスマーカパケットを含む)を含むことができる。言い換えれば、第2の複数のパケットは、第1の複数のパケットのうちいくつかの複製物を含むことができる。
いくつかの実施形態では、バッファ終了マーカパケットも、第2の伝送媒体上で第1のデバイスによって受信され得る。バッファ終了マーカパケットは、第2の複数のパケットに含まれる第1の複数のパケットの少なくともサブセットを受信した後で、第1のデバイスによって受信され得る。言い換えれば、バッファ終了マーカパケットは、バッファリングされたパケットのすべてが受信された後で第1のデバイスによって受信されてもよく、バッファリングされたパケットのすべて(すなわち、これは、第1の伝送媒体上で受信された第1の複数のパケット内のパケットを複製し得る)が送信され、後続パケットが以前に送信されたパケットを複製しないことがあることを第1のデバイスに示すことができる。しかしながら、いくつかの実施形態では、たとえば、バッファ開始マーカパケットが、送信されているバッファのサイズを示す情報を含む場合、バッファ終了マーカパケットが、必要とされないまたは望ましくないことがあることに留意されたい。この場合、受信機は、バッファ開始マーカパケットに含まれる情報に基づいて、バッファの全体がいつ受信されたか決定することが可能であることがある。これは、バッファ終了パケット内で実施される追加オーバーヘッドを回避するために望ましいことがある。
第1のストリームの追加パケット(すなわち、非複製パケット)も、バッファリングされたパケットの後で、第2の伝送媒体上で第1のデバイスによって受信され得る。いくつかの実施形態では、追加パケットは、たとえば、多数のパケットが短時間に受信される場合、バッファリングされたパケットの処理(たとえば、上位プロトコルレイヤに送ること)を調節する(たとえば、自己抑制する)ために使用され得る。これは、上位プロトコルレイヤのうち1つまたは複数に負担をかけすぎることを回避するために望ましいことがあり、これらのレイヤに負担をかけすぎることによって、潜在的に、パケットロスが引き起こされる可能性がある。
たとえば、一組の実施形態では、第2の複数のパケットのうち少なくともいくつかは、たとえば処理の前に、受信バッファに格納され得る。第1のストリームの追加パケットが、第2の伝送媒体上で受信されてもよく、受信バッファのテールエンドに格納され得る。第1のストリームの追加パケットを受信したことに基づいて、受信バッファのヘッドエンドからのあらかじめ選択された数のパケットが、処理され(たとえば、上位プロトコルレイヤに送られ)、バッファのヘッドエンドから除去され得る。したがって、いくつかの実施形態では、追加パケットは、バッファからパケットを解放するために、自動タイマメカニズムとして使用され得る。各さらなる追加パケットを受信すると、一組の実施形態によれば、受信バッファが空になるまで、受信バッファのヘッドエンドからの追加のあらかじめ選択された数のパケットが解放され得る。
さらに、いくつかの実施形態では、インデックスマーカパケットは、複製パケットがいつ受信されたか決定し、そのような複製パケットを識別および破棄するための十分な根拠(たとえば、規則的な間隔で挿入された場合)を第2のデバイスに提供することができるので、いくつかの実施形態では、バッファマーカパケットがまったく使用されないことがあることに留意されたい。
710では、第1の伝送媒体上で受信された第1の複数のパケットまたは第2の伝送媒体上で受信された第2の複数のパケットのうち1つまたは複数が複製パケットであると決定され得る。第1の伝送媒体上で受信された第1の複数のパケットまたは第2の伝送媒体上で受信された第2の複数のパケットのうち1つまたは複数が複製パケットであると決定することは、1つまたは複数のインデックスマーカパケットに少なくとも部分的に基づくことができる。いくつかの実施形態では、この決定は、第1の伝送媒体上で第1のストリームの最後のインデックスマーカと第1のストリームの最後のインデックスマーカが第1の伝送媒体上で受信された以降に第1の伝送媒体上で受信された第1のストリームのパケットの数とを示す格納された情報に少なくとも部分的に基づいて行われ得る。たとえば、インデックスマーカパケットが規則的な間隔で挿入される場合、第2の伝送媒体上で受信された第1のインデックスマーカパケットおよびそのインデックスマーカパケットを受信する前に第2の伝送媒体上で受信されたパケットの数を、第1の伝送媒体上で受信された最後のインデックスマーカパケットおよびそのインデックスマーカパケット以降に第1の伝送媒体上で受信されたパケットの数と比較することによって、複製パケットがあるかどうか、およびどのくらい多くのどのパケットが複製パケットであるかについてのインジケーションがもたらされ得る。しかしながら、このプロセスは、インデックスマーカパケットが第2の伝送媒体上で受信されるまで待機することを必要とすることがあり、これは非効率的なことがある。
あるいは、バッファ開始マーカパケットが第1のストリームの何らかのコンテンツパケットの前に第2の伝送媒体上で受信された場合、ストリーム内でのそれ自体の場所を識別するバッファ開始マーカパケット内の情報は、複製パケットの存在を直ちに検出するために使用され得る。たとえば、いくつかの実施形態では、受信された最後のインデックスマーカパケットと前回のインデックスマーカパケット以降に第1の伝送媒体上で受信されたパケットの数とを示す格納された情報は、最新のインデックスマーカパケットに関連する、第1のストリーム内でのバッファ開始マーカパケットの位置を示す情報と比較されて、第1の複数のパケットまたは第2の複数のパケットのいずれかが互いの複製パケットであるかどうか決定することができる。
712では、決定された複製パケットが破棄され得る。破棄された複製パケットは、必要に応じて、第1の伝送媒体または第2の伝送媒体のいずれかの上で受信された複製パケットのコピーであってよい。一組の実施形態では、バッファ開始マーカパケットが受信された後に第1のストリームのパケットが第1の伝送媒体上で引き続き受信され、それらのパケットがストリームパケット順序付け内のバッファ開始マーカパケットの場所の後ろにある場合、それらのパケットは破棄され得る(たとえば、それらのパケットが第2の伝送媒体上で再送信されると仮定されることがあるので)。一方、バッファ開始マーカパケットが受信されるとき、第1のストリームのパケットが、ストリームパケット順序付けにおけるバッファ開始マーカパケットの場所を過ぎたある点まで、第1の伝送媒体上ですでに受信された場合、第2の伝送媒体上で受信された第1のストリームのパケットは、非複製パケット(すなわち第1の伝送媒体上で受信されておらず、処理もされていないパケット)が受信されるまで、破棄され得る。その時点では、第1のストリームは、第2の伝送媒体に完全に切り換えられていることができる。いくつかの実施形態では、たとえば、新しい伝送媒体への第1のストリームのさらなる再割り当ての場合、第2の伝送媒体上で最近受信された1つまたは複数のインデックスマーカパケットとそれらの最近受信されたインデックスマーカパケット以後またはそれらの最近受信されたインデックスマーカパケットとパケットの間に受信されたパケットの数とを示す情報は、引き続き格納され得る。
図8〜図11および追加の考慮事項
図8〜図11およびそれらと関連して提供される以下の詳細および追加の考慮事項は、図4〜図7の方法に従って使用され得る特定の例示的な実装形態に関する。しかしながら、当業者には理解されるように、詳細に関する異なる実装形態を含む何らかの数の異なる実装形態は図4〜図7の方法とともに使用されてもよく、したがって、以下の考慮事項は、全体として本開示に限定すると見なされるべきである。
図8
図8は、一実施形態による、ストリーム分割/ストリームアグリゲーションを取り巻く送信デバイスと受信デバイスの間のメッセージフロー800を示す通信図である。
最初に、オーバーサブスクリプションイベントが、送信デバイスによって検出され得る。デバイス(たとえば、図2に示されるハイブリッド制御エンティティ212などのハイブリッドネットワーキングレイヤで動作するハイブリッド制御エンティティ、または別のシステム要素)は、ストリームを分割することを決めることができる。デバイスは、たとえばストリームを受信デバイスに分割する判定を示す送信制御パケットによって、受信デバイスに通知することができる。受信デバイス(たとえば、図2に示されるハイブリッドブリッジ214などのハイブリッドネットワーキングレイヤで動作するハイブリッドブリッジ、または別のシステム要素)は、アグリゲーション命令(推奨アグリゲーションバッファサイズなど)を含むことができる制御パケットと、制御パケットの受信確認とを受信することができる。
いくつかの実施形態では、分割のために選択されたストリームのパケットを含む新たに受信されたパケットのルーティングを決定するために送信デバイスによって使用されるルーティングテーブルは、ストリームを分割する判定に従って更新され得る。次いで、送信デバイスが、たとえば、分割されたストリームのいくつかのパケットを第1の伝送媒体に、および分割されたストリームのいくつかのパケットを第2の伝送媒体にルーティングすることによって、ストリームを複数のインターフェースに分割することができる。いくつかの実施形態では、選択された伝送媒体の各々にルーティングされる分割されたストリームの割合は、ルーティングテーブルに格納された情報に従って維持され得る。
一方、受信デバイスは、分割されたフローのパケットを複数のインターフェース上で受信し、パケットをアグリゲーションし、再順序付けすることができる。
最終的に、送信デバイスが、ストリームの分割を中止するように決めることができる。その後、送信デバイスは、複数のインターフェースではなく単一のインターフェースを使用して、ストリームのパケットを送信し始めることができる。送信デバイスは、さらなる制御パケットによって受信デバイスに通知することができ、この制御パケットは、受信デバイスによって受信および確認され得る。
したがって、いくつかの実施形態によれば、送信デバイスは、フローの分割ステータスを修正するとき、たとえば、フローを分割し始めるとき、およびフローの分割を中止するとき、コマンドを受信機に送信することができる。
この情報の目的は、受信機が再順序付けバッファを作製し、フローを再順序付けすることを始めることを可能にすることであり得る。再順序付けは、(CPUとメモリの両方で)比較的高価になることがあり、潜在的には、フローの配送遅延を増加させる可能性がある。したがって、受信機が常にすべてのフローに対してそのようにしないことが望ましいことがある。したがって、いくつかの実施形態では、再順序付け(たとえば、アグリゲーションバッファのセットアップを含む)は、複数の媒体にわたって送信されるフローに対してのみ実行され得る。
いくつかの実施形態によれば、制御パケットは、推奨バッファサイズおよび/または推奨タイムアウトも示すことができる。送信機は、ストリームが分割された両方のインターフェースのフローレートおよび相対的遅延に基づいて、アグリゲーションバッファサイズを推奨することができる。受信機は、一般的に推奨を遵守してよいが、メモリ可用性に応じ無効にしてもよい。送信機はまた、ストリームが分割された両方のインターフェースのフローレートおよび相対的遅延に基づいて、タイムアウトを推奨することができる。この場合も、受信機は、一般的に推奨を遵守してよいが、メモリ可用性に応じて無効にしてもよい。
図9
図9は、一実施形態による、異なるシナリオによる様々な伝送媒体の仮想リンク容量を示すグラフ900である。図示の実施形態では、3つの利用可能な伝送媒体、すなわち、PLC、2.4GHzスペクトルで動作するWi−Fi(W2)、および5GHzスペクトルで動作するWi−Fi(W5)がある。PLCおよびW5は、現在、25Mbpsよりも大きなリンク容量を有し、このリンク容量は、例示的な実施形態では、それを上回ると伝送媒体が新しいトラフィック(たとえば、新しいストリーム)を追加するのに十分な容量よりも多い容量を有すると見なされる閾値として設定されている。W2も何らかの利用可能なリンク容量を有するが、図示の実施形態では、25Mbpsよりも小さい。
図示のシナリオでは、複数の伝送媒体が新しいトラフィックをサポートするのに十分なリンク容量を有するが、このシナリオは「高可用性」と呼ばれることがある。この状況では、ストリーム自体のマッチング特性に基づいて新しいストリームのための最も適した伝送媒体を選択するために、より大きな自由が存在することがある。たとえば、高い優先順位および/またはいくつかの特定のタイプのコンテンツ(たとえば、音声、ビデオ)を持つストリームは、好ましくは、より高速および/または信頼性のより高い伝送媒体に割り当てられることがあり、一方、低い優先順位および/またはいくつかの特定のタイプのコンテンツ(たとえば、データのダウンロード)を持つストリームは、好ましくは、(たとえば、優先順位のより高いトラフィックのために、より高速および/または信頼性のより高い伝送媒体を確保するために)より低速および/または信頼性のより低い伝送媒体に割り当てられ得る。
たったわずかに1つの伝送媒体が「高可用性」閾値を超えるリンク容量を有するシナリオは、図示のシナリオとは対照的に、「低可用性」と呼ばれることがある。この状況において、少なくともいくつかの実施形態では、新しいストリームは、最高のリンク容量を持つ伝送媒体だけに割り当てられることがあり、新しいストリームの特性を最も適切な伝送媒体と適合させる特別な取組みは行われなくてよい。
図10A〜図10B
図10Aおよび図10Bは、パケットアグリゲーションが望ましいことがあるシナリオを示す。1つの基本的な使用事例は、受信可能範囲である。たとえば、家庭での使用についてのシナリオでは、アグリゲーションによって、単一のストリームをサポートするのに不十分な帯域幅を有する住宅の隅に受信可能範囲が提供され得る。そのような場合、ストリームを複数のインターフェースに分割することにより、受信可能範囲が増加する。パケットアグリゲーションはまた、様々な他のシナリオでも望ましいことがある。
図10Aに示されるように、一実施形態では、トラフィック生成器1002は、(たとえば、イーサネット結合を介して)第1のデバイス1004に結合され得る。第1のデバイスは、10Mbps接続を持つWi−Fiを介して、および7Mbps接続を持つPLCを介して、第2のデバイス1006に結合され得る。第2のデバイス1006は、(たとえば、イーサネット結合を介して)トラフィックシンク1008に結合され得る。
トラフィックシンク1008が、トラフィック生成器1002から12Mbpsを必要とするビデオストリームを開始した場合、Wi−Fi接続もPLCも、このビデオストリームを個別にサポートする容量を持たない。しかしながら、ストリームの一部がWi−Fiリンク上で送信され、ストリームの一部がPLCリンク上で送信されるようにストリームが分割された場合、これらの接続は、共同でビデオストリームをサポートすることができる。
図10Bは、いくつかのフローにとって十分な帯域幅が利用可能であるシナリオを示す−しかしながら、帯域幅の、ストリーム割り当てによって各媒体内に残る部分は、追加のフローを扱うのに不十分である。この場合、Wi−Fiは40Mbps接続を提供し、PLCは20Mbps接続を提供するが、ストリーム1および2は各々、Wi−Fi接続の15Mbpsを利用し、ストリーム3はPLC接続の15Mbpsを利用する。したがって、Wi−Fiは10Mbpsの残存リンク容量を有し、PLCは5Mbpsの残存リンク容量を有する。いずれの伝送媒体も、新しいストリーム4(15Mbpsを必要とする)を個別にサポートすることはできないが、新しいストリームを分割することによって、これらの伝送媒体は、共同でビデオストリームをサポートすることができる。
いくつかの実施形態では、パケットアグリゲーションによる主な性能限界(CPU使用率)は、受信機側でパケットの再順序付けであることがある。CPUの制限を想定すれば、これは、アグリゲーションされたストリームの最大サイズと1つのストリームをアグリゲーションしながらサポート可能なアグリゲーションされていない全トラフィックとのトレードオフを提供する。したがって、いくつかの実施形態では、場合によっては、アグリゲーションされていないトラフィックがどのくらい多く存在するかに応じた異なるストリームサイズ制限を含む、アグリゲーションされたストリームのサイズを制限することが望ましいことがある。一例として、他のトラフィックがない場合、最大30Mbpsのアグリゲーションされたストリームがサポートされてもよく、最大50Mbpsの他のトラフィックがある場合、最大20Mbpsのアグリゲーションされたストリームがサポートされ得る。もちろん、これらは単なる例であり、必要に応じて、異なる制限が使用されてよい(または、制限が使用されなくてもよい)。
さらに、アグリゲーションされたストリームを受信するコスト(たとえば、CPUコスト)が、アグリゲーションされていないストリームを受信するコストよりも高いことがあるので、いくつかの実施形態では、アグリゲーションされるストリームの数を最小にすることが望ましいことがある。たとえば、一組の実施形態では、2つの利用可能な伝送媒体がある場合、多くとも1つのストリームを分割することが望ましいことがあり、3つの利用可能な伝送媒体がある場合、多くとも2つのストリームを分割することが望ましいことがある。
言い換えれば、いくつかの実施形態では、同じデバイス(2つの媒体を持つ)から発生する2つのストリームが両方の媒体に分割される状況が回避され得る。これによって、使いやすさを抑制しないことができる。2つのインターフェースに分割された2つ以上のストリームを、単一のインターフェース実行されている上で1つ以外のすべてのストリームに変換することが、常に可能なことがある。同じ論理は、3つの利用可能な媒体を持つデバイスに適用され得る。
いくつかの実施形態では、アグリゲーションは、(たとえば、送信元とシンクの間の対向する)ハイブリッドデバイス同士の間で行われ得ることに留意されたい。アグリゲーションする(すなわち、ストリームを複数のインターフェースに分割する)判定は、送信元ハイブリッドデバイスにおいて行われ得る。いくつかの実施形態では、すべてのハイブリッド判定は、送信元ハイブリッドデバイスにおいて行われ得る。
図11
図11は、一実施形態によるアグリゲーション(再順序付け)バッファ1100を示す。(他の可能な通信インターフェースの中でもとりわけ)Wi−FiとPLCの伝送遅延は異なることがあり、したがって、すべてのパケットが適切に配送された場合ですら、パケットが順序を乱して配送されることがあることがあり得る。これは、望ましくないことがある。
パケットを再順序付けすることは、再順序付けバッファを要求しうる。このバッファのサイズは、ストリームが分割された両方のインターフェースのフローレートおよび相対的遅延に基づいて、構成可能とすることができる。実際には、再結合される2つの下位ストリームは内部的には順序が正しいので、このプロセスは、厳密には再順序付けプロセスではなく、むしろ正しい順序における再結合プロセスであることがあることに留意されたい。
再順序付けバッファは、まだ上位レイヤに配送されていない受信されたパケットへのポインタを含むことができる。BaseSequence変数は、インデックス0に対応するパケットシーケンス番号を含むことができる。再順序付けバッファは、環状バッファとして実施され得る。一実施形態によれば、パケットが受信されるとき、以下の論理が実行され得る。
(PacketSequenceNumber<BaseSequence)の場合、受信されたパケットは、古い順序外れのパケット(たとえば、場合によっては、タイムアウトしたパケット)である。パケットは、必要に応じて、実装形態に応じて、破棄されてもよいし、配信されてもよい。
あるいは、(PacketSequenceNumber<BaseSequence+Size)の場合、パケットは、バッファ内部にあってよい。パケットは、バッファ内の適切な場所に格納され得る。パケットへのポインタは、インデックス(PacketSequenceNumber−BaseSequence)に置かれ得る。そのインデックスがすでに非NULL(たとえば、パケットポインタがすでにその場所に存在する)場合、(たとえば、パケットが複製パケットであり得るので)パケットは破棄され得る。次いで、どのパケットも配信され得る。バッファインデックス0がパケットポインタを含む場合、パケットは配信されてもよく、インデックスはNULLにリセットされ得る。環状バッファポインタは、1だけ前方に移動されてもよく、BaseSequence変数も増分され得る。これは、バッファインデックス0が、たとえばシーケンス内の次のパケットがまだ受信されていないことを示すNULLになる(たとえば、パケットへのポインタを含まない)まで繰り返され得る。
あるいは、(PacketSequenceNumber≧BaseSequence+Size)の場合、パケットは、バッファの外側にあるが、より新しいことができる。これは、たとえば、バッファが余りにも小さいというインジケーションとなることができる。いくつかの実施形態では、シーケンスに空いた場所(hole)があるかどうかとは無関係に、この新しいシーケンス番号をバッファに持ち込むのに十分なパケットが配信され得る。
再順序付けバッファはまた、タイムアウトメカニズムを組み込むこともできる。シーケンスに空いた場所がある場合ですら、プログラマブルタイムアウトの後、パケットは上位レイヤに配信され得る。いくつかの実施形態では、タイムアウトメカニズムは、各パケットの受信タイムスタンプの記録を維持することを含むことができる。いくつかの実施形態では、タイムスタンプが固有のタイムスタンプではなくRX時刻であることが望ましいことがあることに留意されたい。タイムアウトメカニズムは、バッファ内の第1の利用可能なパケットのタイムスタンプ、例えばたとえば第1のギャップを越えた(past)パケットを維持することをさらに含むことができる。第1の利用可能なパケットのタイムスタンプがタイムアウトする(すなわち、タイムアウト値よりも大きい)場合、そのパケット(およびタイムアウトした何らかの他のパケット)が配信され得る。
パケットはネットワークスタックに送られるので、インデックス0にパケットがないことがあることに留意されたい。この値を計算するには、第1のギャップを通って第1のパケットを検索しなければならないので、これは、比較的コストのかかる動作であることがあることにも留意されたい。
初期シーケンス番号に関して、TCPとRTPの両方は、初期シーケンス番号をランダム化してシーケンス番号予測攻撃を防止することができることに留意されたい。いくつかの実施形態では、ハイブリッドレベルにおける送信機および受信機は、このシーケンス番号を制御しないことがある。しかしながら、いくつかの実施形態では、ストリームがフローを開始した後にストリーム分割およびアグリゲーションがアクティブ化され得る。さらに、アグリゲーションは、明示的にアクティブ化され得る。たとえば、送信機は、ストリーム(ストリーム識別子を含む)が分割されようとしていることを示すコマンドを受信機に送信することができる。これによって、受信機が、分割が始まる前に現在実行されているシーケンス番号を識別することが可能になり得、初期シーケンス番号のランダム化によって引き起こされ得る潜在的な問題を軽減する。
パケットシーケンス番号を利用する上記で説明した環状バッファは、多数の実施形態では使用されなくてもよいことに留意されたい。たとえば、任意の数の他の環状バッファ技法または他のアグリゲーションバッファ技法は、必要に応じて使用されてよい。本明細書中の他の場所で説明する切り換えマーカ技法の実施形態は、アグリゲーション再順序付けするための1つの可能な代替(または相補的な)オプションを表す。
さらなる考慮事項
データ構造
これまで述べたように、本開示の要素を実施するデバイスは、いくつかの実施形態では、1つまたは複数のメモリに情報を格納することができる。情報は、一組の実施形態では、1つまたは複数のデータ構造に格納され得る。たとえば、一組の実施形態では、ルーティングテーブルが維持されてもよく、このルーティングテーブルに、アクティブなストリームとその様々な特性(たとえば、ルーティング情報)とを識別する情報が格納され得る。たとえば、そのようなルーティングテーブルは、複数のストリームの各々に対して、ストリーム識別子と、ストリームの宛先アドレス(DA)と、ストリームのタイプと、優先レベルと、1つまたは複数の割り当てられたインターフェース(たとえば、1つまたは複数の伝送媒体を暗黙的または明示的に含む)とを含むことができる。いくつかの実施形態では、たとえば、複数のインターフェースに分割されたストリームに対して、ルーティングテーブルは、複数の割り当てられたインターフェースのうちどれがストリームを送信するために現在使用されているか、各割り当てられたインターフェース上で使用されるバーストサイズ、および/または現在使用されているインターフェース上で送信されている現在のバーストにどのくらい多くのパケットが残っているかを示す情報も含むことができる。
さらに、ストリームの1つまたは複数の宛先アドレスおよび/またはタイプの各々に対する伝送媒体の現在の好ましい順序を示すテーブルが維持され得る。このテーブルは、たとえば媒体利用率の変化、リンク容量などに基づいて、定期的に更新され得る。ルーティングテーブルはまた、たとえば、何らかのルーティングの変化(たとえば、負荷バランシング、フェイルオーバ、ストリームの分割、ストリームの完了の結果として、または何らかの他の理由で)にも基づいて、定期的に更新され得る。
バーストサイズ
大きいバーストは、複数のインターフェースの同時使用を制限することがあるので、いくつかの実施形態では、バーストのサイズを制限することが望ましいことがあり、これは、いくつかの実施形態によれば、ストリーム分割/アグリゲーションという目標に反することがあることに留意されたい。
たとえば、1400バイトのパケットサイズを持ち10Mbpsで実行されているストリームは892pps(パケット毎秒)ということになる。255パケットのバーストは0.28秒になる。言い換えれば、この場合、一方の媒体は0.28秒間使用される、他方の媒体は使用されない。
デバイスの能力の発見
ストリームを分割する判定が行われるときはいつでも、宛先デバイスの能力を認識することが重要なことがある。たとえば、宛先ハイブリッドデバイスが、アグリゲーションをサポートしないレガシーデバイスであることがある。
デバイスは、トポロジ発見パケットの一部として能力を知らせることができる。たとえば、1つまたは複数の制御パケットの一部分は、アグリゲーションのサポートを宣言するために割り振られ得る。いくつかの実施形態では、デバイスは、この情報を送信し、負荷バランシングの判定中に使用されるネットワーク上のすべてのデバイスに関するそのような情報のデータベースを維持することができる。
パケットロスの最小化および複製パケットの除去
本開示の実施形態は、複数の伝送媒体がストリームの送信に利用可能であるシステムおよびそのようなシステムに関連する様々な技法に関する。実施形態の多くは、ある伝送媒体から別の伝送媒体へのストリームフローの切り換えに関する。パケットのロス、パケットの重複、および順序の乱れたパケット配信を含めて、そのようなパス切り換えによるいくつかのパケットフローの混乱があり得る。
ネットワーキングプロトコルおよびアプリケーションによって、そのようなパケットフローの混乱への反応は異なるが、一般に副作用がある。たとえば、TCP/IPは上記のうちいずれかに応じてスループットを抑制し、いくつかのビデオアプリケーションは視覚的欠陥を表示することがある。エンドユーザにシームレスな経験を提供するために、これらの混乱のすべてが、可能ならば最小限にされるかまたは解消されなければならない。
ハイブリッドシステムは、次の2つのシナリオの下でフローを切り換えることができる。すなわち、あるインターフェースに障害が発生し、そのインターフェースからのすべてのストリームが別のインターフェースに切り換えられるフェイルオーバと、媒体がオーバーサブスクライブし、1つまたは複数のストリームがそのストリームから別のインターフェースに切り換えられる負荷バランシングである。
あるインターフェースが依然として動作中であり、いくつかのパケットを送信するときすら、ハイブリッドシステムが、そのインターフェースを「障害が発生した」と見なすことがあり得ることに留意されたい。たとえば、いくつかのインターフェースでは、インターフェースの報告されたPHYレートが閾値(たとえば、5Mbpsまたは何らかの他のPHYレート)を下回る場合、ハイブリッドシステムは、そのインターフェースを「障害が発生した」と見なすことがある。
利用することができる2つの一般的な通信インターフェースは、Wi−Fiネットワークと、電力線ネットワーク(たとえば、HomePlugAV)とを含む。Wi−FiドライバとHPAVドライバの両方は、特定のストリームからのパケットの順序正しい配信を保証することができる。両方とも、送信のためにパケットをバッファリングされ得る。いくつかの実施形態によれば、外部アプリケーションは、どのパケットがHPAVドライバからではなくWi−Fiドライバから正常に送信されたに関する情報を取得することが可能であることがあり、外部アプリケーションは、どちらかのドライバの送信バッファからパケットを除去することが可能でないことがある。したがって、媒体が生きている限り(たとえば、媒体に障害が発生したと見なされる場合ですら)、送信バッファ内のパケットは引き続き送信される。
インターフェースに(本当に)障害が発生すると、そのバッファからそれ以上パケットを送信することができないことがある。バッファ内のパケットのすべてが失われることがあり、そのため、ハイブリッドシステムが、インターフェースに障害が発生したと決定し、新しいインターフェース上でパケットを送信し始めるまで、追加のパケットが送信される。パケットロスを減少させるメカニズムは、パケットはインターフェース上で送信されるとパケットの実行窓(バッファ)を保存し、切り換えるとき、それらのパケットを新しいインターフェース上で(再)送信することである。言い換えれば、パス切り換えがトリガされるときはいつでも、これらのパケットが新しいインターフェース上で送信され得る。
いくつかの実施形態によれば、そのような特徴が全体的にまたはストリームごとに実施され得る。たとえば、特徴が実施される各ストリームは、したがって、バッファサイズ(たとえば、格納できるパケットの数)を持つそれ自体のバッファと、バッファタイムウィンドウ(たとえば、どれくらい(時間的に)パケットを保持するかを指定する)とを有することができる。
特徴を実施するために、一組の実施形態によれば、パケットがインターフェース上で送信されると、そのフローが最初に識別され得る。フローによって、バッファリングが有効にされる場合、パケットがバッファに付加され得る。パケットがタイムウィンドウの外側にある場合、バッファが大きすぎる場合、および/またはパケットが正常に送信された場合、バッファが(たとえば、先頭から末尾まで)通過されることがあり、パケットが除去され得る。したがって、パケットが送信されるとき、バッファが維持され得る。
フローがある媒体から別の媒体に切り換えられているとき、バッファが(たとえば、先頭から末尾まで)通過されることがあり、正常に送信されたパケットが破棄され得る。正常に送信されたことが知られているパケットは、新しいインターフェース上で送信され得る。
パケットが正常に送信されたかどうか決定することは、いくつかのインターフェース(たとえば、Wi−Fiまたはこの情報へのアクセスを提供する他のインターフェース)からのみ利用可能であってよいことに留意されたい。したがって、いくつかの実施形態では、この情報が、そのようなインターフェースからのパス切り換えにのみ使用され得る。
パケットロスの最小化に使用される、上記で説明したバッファは、パス切り換えが実行されるときはいつでも新しいインターフェース上でパケットを送信するために使用され得る。そのようなバッファ内のパケットの数は、いくつかの実施形態では、インターフェースに障害が発生したことをハイブリッドシステムが検出するのにどれくらいかかるか−数秒かかることがあるプロセス−によって定められ得る。したがって、少なくともいくつかの実施形態では、バッファサイズが>1000パケットであることができる。他の実施形態では、任意の数の他の(たとえば、上記より小さいまたは大きい)バッファサイズが使用され得る。
インターフェースを通して>1000パケットを送信することは、ドライバ(イーサネット、Wi−Fi、埋め込みPLC)のバッファを(比較的)即時に埋めることができる。したがって、これらの送信を抑制するメカニズムは、実施され得る。いくつかの実施形態では、連続した送信をブロックしないように、送信は、ハイブリッドブリッジの外部から抑制され得る。たとえば、トークンバケットフィルタキューイング規則(TBF qdisc)は、そのような抑制メカニズムを実施する−それによって、最大レートが指定され得る。
上記で説明した送信バッファ再送信メカニズムは、パケットロスを減少させる働きをすることができる。しかしながら、パケットが古いインターフェース内ですでに発送されて送信中の場合、受信機が複製パケットを受信することができる。この比較的簡単な(部分的な)解決策は、(当初のインターフェース上で)正常に送信されたそれらのパケットをバッファから除去することであることができる。これは、Wi−Fiインターフェース(上記で述べた)にとって可能であることがあり、しかしながら、(同様に、上記で述べたように)HPAVインターフェースにとっては可能でないことがある。この特徴をWi−Fi上で別のインターフェースパスへの移行に使用してすらも、この問題に完全には対処されないことがある。というのは、元の(Wi−Fi)インターフェースのバッファに依然として存在するパケットが除去されないことがあり、インターフェースが本当に死んでいない場合、送信され続けることがある。
より完全だが簡略化された(CPUコストの面では)解決策は、この特定の複製シナリオのいくつかの特徴を利用することができる。具体的には、ことを利用することができる。1つのインターフェース上で送信されたすべてのパケットは順序正しく受信される。あるインターフェースから別のインターフェースに切り換える判定がいったん行われると、元のインターフェース上でのすべてのさらなる送信が停止される。(たとえば、これは複製物が生成される原因であるので)複製物は複製バッファ内にのみ存在することができる。もちろん、いくつかの実施形態では、この解決策はまた、有利には、異なる条件を含む他のシナリオで使用され得る。
方法の特定の利点は、アルゴリズムが、パケット自体について仮定することができないことであり得る。言い換えれば、いくつかの実施形態では、データパケットの検査が行われる(具体的には、いくつかの実施形態では、シーケンス番号は、パケットに埋め込まれると仮定され得る)。
方法を実施するための送信機(データ送信元)側機能は、インデックスマーカ(MI)パケットをNパケットごとにデータストリームに挿入することを含むことができる。インデックスマーカはインデックス番号を含むことができ、インデックス番号は、各後続のインデックスマーカパケットにより1だけ増分され得る。インデックスマーカパケット(複数可)は、複製バッファの前に挿入され得る。したがって、これらのインデックスマーカパケットは、複製バッファの一部であってよい。
パス切り換えを実行するとき、複製バッファは再送信され得る。バッファマーカパケット(MB)は、新しいインターフェース上で複製バッファの先頭および/または終端に挿入され得るそれぞれMB,BおよびMB,Eとする。MB,Bでは、複製バッファの外部にある最後のインデックスマーカ(MI)パケットのインデックス、ならびにそのインデックスマーカパケット以降にバッファから除去されたそのストリームからのパケットの数は、(正常に送信されたのであろうと、バッファサイズのための経年劣化したまたは除去されたのであろうと)含まれ得る。このデータ対は、(IT,LT)と呼ばれることがある。
方法を実施するための受信機(データシンク)側機能は、インデックスマーカ(MI)パケットを追跡することを含むことができる。たとえば、受信された最後のインデックスおよびそのインデックスマーカ以降に受信されたそのストリームのパケットの数は、格納され得る。このデータ対は、(IR,LR)と呼ばれることがある。
バッファの先頭すなわちバッファマーカパケット(MB,B)を受信するとき、代替インターフェースから入ってくるこのストリームに属するどのパケットも破棄され得る。様々な実施形態によれば、このブロッキングは、ある時間間隔(たとえば、プログラム可能な時間間隔)の後で除去されることもできるし、次のMB,Bが(たとえば、新しいインターフェース上で)観測されるまで保持されることもできる。
さらに、MB,Bから観測されたデータ対(IT,LT)が検査され、(IR,LR)と比較され得る。IT=IRかつLT≧LRの場合、パケットは破棄され得ない−新しいインターフェース上に複製パケットがないことがある。IT=IRかつLT<LRの場合、第1のLR−LTパケットは、元のインターフェース上ですでに受信された可能性があるので、バッファから破棄されることがある。IT<IRの場合、インデックスマーカパケットとインデックスIRが受信されるまで、複製バッファパケットは破棄され得る。その時点で、追加LRパケットは破棄され得る。(IT>IR)の場合、パケットは破棄され得ない。これは、複製バッファが、フェイルオーバによるパケットロスを処理するのに十分なほど大きくなく、複製パケットは受信されていないことを示すことができる。
上記のアルゴリズムは、データの2つの複製ストリーム、すなわち、複製バッファリングされたパケットの受信が始まった後に古いインターフェースに到着するパケットと、フェイルオーバの後だが複製バッファリングされたパケットの受信の前に古いインターフェースに到着したパケットとを処理することができる。
いくつかの実施形態によれば、(上記で述べられた)複製バッファ有効化/無効化は、この特徴を制御するためにも使用され得る。言い換えれば、いくつかの実施形態では、複製バッファがフローに対して有効化された場合、インデックスマーカ(MI)のみが挿入され得る。さらに、いくつかの実施形態では、ストリームパラメータにつき1つのインデックスマーカ間隔が構成可能とすることができる。たとえば、パス特性化情報に基づいてインデックスマーカ間隔を動的に調整することを望むことがある。
上記で説明した複製パケット最小化手順では、インデックスマーカパケット(MI)がNパケットごとにストリームに挿入され得ることを指定する。上記のアルゴリズムに基づいて、値Nは、固定される必要がないことがあり、時々または間隔ごとに、たとえば、送信されたパケットおよび受信されたパケットの適切なカウントが保持される限り、変えられてもよい。値Nはまた、複製バッファのサイズから独立することができる。いくつかの実施形態では、たとえば、Nは極めて大きくてよい。しかしながら、パケット誤り率(PER)とNと受信された複製パケットの数との間に関係があることがある。
PERにより、パケットが破棄される−これは、パケットは、送信されるとカウントされ得るが、受信されるとカウントされないことができることを意味する。あらゆるそのような欠落されたパケットの結果、複製パケットが受信されるようになることができる。たとえば、最後のMI,LT=10の後で10個のパケットが送信される。しかしながら、PERによって9個のパケットのみが受信された場合、LR=9である。この場合、受信機ではパケットは除去されず、その結果、複製パケットが受信され得る。したがって、複製パケットの可能性はPER×Nに比例することができる。したがって、Nを増加させることによって、複製物を受信する可能性が増加することができる。
上記で述べたように、上記で説明したパケットロスの最小化技法は、他の場合は必要とされないことがある追加情報を格納することを必要とすることがある。いくつかの実施形態によれば、送信側に格納された追加情報は、最後のインデックスマーカパケット(MI)インデックスと、最後のインデックスマーカパケット以降のパケットの数とを含むことができる。
受信側に格納された追加情報は、最後のインデックスマーカパケットインデックスと、最後のインデックスマーカパケット以降のパケットの数と、ストリームインターフェース(たとえば、ストリームが受信されているインターフェース)とを含むことができる。いくつかの実施形態では、ストリームインターフェース上で受信されないすべてのパケットが破棄されるべきであることを示すブロックモードフラグも格納され得る。さらに、インデックスマーカパケットが現在検索されているかどうか(と、そのインデックスマーカパケットのインデックスと)を示す情報が格納されてもよく、および/または、(たとえば、上記で説明したように、複製物であると決定されたパケットの数に基づいて)破棄するパケットの数を示すカウンタが格納され得る。
当業者によって認識されるように、異なる実装形態は、パケットロスの最小化アルゴリズムに関する格納された異なる情報を含むことができる。
サービス品質
本開示の実施形態は、複数の伝送媒体を使用して通信するように構成されたデバイスによって使用され得る様々な技法に関する。これらの技法は、いくつかの実施形態では、必要に応じて、改善されたサービス品質(QoS)に関するコンテンツ分類および区別を考慮せずに実施され得る。しかしながら、サービスプロバイダが、たとえば客がテレビのビデオが低品質であることまたは音声伝送が途切れることに動揺しないようにするために、タイムクリティカルなデータ(たとえばNetflixビデオ)と延期可能なデータ(たとえばファイルのダウンロード)とを区別することを望むことがある−サービスプロバイダはサービス品質を保証したいのである。小売り客も同様に、干渉または遅延を伴わずにインターネットビデオ(たとえばHuluまたはNetflix)をストリーミング可能であることを望むことがある。無料コンテンツの消費者ですら、サービス品質の保証/区別を予想することがある。
非ハイブリッドネットワークには、データが送信される単一の媒体のみがある。ハイブリッドネットワークには、データを送信するために使用できる複数の媒体があることがある−データの各々は、様々な動的に変化する特性を有する。したがって、QoS問題は、別の次元となる。
このセクションでは、一組の実施形態によるハイブリッドネットワーキングシステムによって配信され得るQoSの詳細について説明する。一組の実施形態によれば、ハイブリッドシステムの所望の振る舞い(識別されるサービスのタイプ(有料ビデオと無料ビデオなどとを含む)と、システムの挙動とを含む)と、この機能を配信するための実装アーキテクチャおよびアルゴリズムの記述が含まれる。
2つのタイプのQoSがあることに留意されたい。優先されるQoSは、優先レベルを持つパケットのタグ付けに関連する。パケットは、この優先順位に基づいて処理され得る(たとえば、より高い優先順位は、より低い優先順位とは異なって処理され得る)。パラメータ化されたQoSは、媒体による帯域幅の予約および保証に関連する。帯域幅予約を持つストリームに属するパケットには、最高の優先順位(保証)配信が与えられる。
いくつかの媒体(たとえばMoCA)は一種のパラメータ化されたQoSを実施するが、このパラメータ化されたQoSは、エンドツーエンド帯域幅予約と(帯域幅を予約するための)アプリケーションレベルの関与とを必要とすることがあるので、実際には使用されないことがある。したがって、このセクションは、優先されるQoSに焦点を当てる。
QoS関連の振る舞いは、ハイブリッドネットワークのいくつかの態様において適切であることがある。これらの態様のうちいくつかとしては、データの異なるタイプのサービス(クラス)への分類、この分類に基づくデータのタグ付け、分類されたデータのパス選択および特定のインターフェースへの割り当て、フェイルオーバおよびフローの再割り当て、過輻輳(over−congestion)の場合のトラフィックの負荷バランシング、ならびにデータストリームすべてをサポートするのに不十分な帯域幅があるときの異なるデータストリームのストリーム優先順位付与があり得る。
データの分類は、データパケットをストリームに分離することと、ストリームを特定タイプのサービスとして分類することとを伴うことができる。一組の実施形態により分類され得るいくつかの可能なタイプのサービスとしては、インターネットストリーミングビデオ、インターネットストリーミングオーディオ、インターネットリアルタイムオーディオ/ビデオ、および/または他のタイプのサービスがある。
分類は、コンテナのタイプではなくパケットの内容を検査することを含むことができることに留意されたい。したがって、コンテンツタイプの分類は、IPv4トラフィックまたはIPv6トラフィックのどちらかを用いて可能とすることができる。
いくつかのタイプのトラフィックは、すでにクラスに従ってタグ付けされている可能性があるので、分類されないことがあることにも留意されたい。そのようなタイプのトラフィックの例としては、IPTV、VoD(通信事業者により提供されるビデオオンデマンド)、およびVoIPがある。
データは、いったん特定タイプのトラフィックとして分類されても、依然としてタグ付けされる必要があることがある。いくつかの実施形態によれば、いくつかのシステム要素は、異なるレベルのタグ粒度を利用するように構成され得る。たとえば、ハイブリッドシステムは、潜在的には、ネットワークドライバよりも高い粒度の分類を使用することが可能であることがある。たとえば、一実施形態では、「ビデオ」はたった1つのタグを有することができるが、ハイブリッドシステムは、ビデオのIPTVタイプと、VoDタイプと、OTTタイプとを区別するように構成され得る。
ストリームが起動されると、ストリームは、定期的に更新されるデフォルトインターフェースに割り当てられ得る。デフォルトインターフェースを選択するためのアルゴリズムは、各利用可能な媒体のリンク容量(LC)を最初に考慮することを含むことができる。高可用性シナリオでは、新しいトラフィックをサポートするのに十分なリンク容量(たとえば、25Mbpsなどのあらかじめ設定された閾値または動的な閾値または何らかの他の閾値よりも大きいリンク容量)が、複数の媒体上で利用可能であることができる。この場合、媒体(たとえば、LC閾値よりも高いLCを持つ媒体のみを考慮する)が、プログラム可能な順序たとえば「P52」に基づいて選択され得る。低可用性シナリオでは、リンク容量の高い利用可能な媒体がないことがある。この場合、最高のリンク容量を持つ媒体が単に選択され得る。
媒体優先権のプログラム可能な順序はトラフィックのクラスごとに構成可能とすることができることに留意されたい。たとえば、「P52」という上記の例は、IPTVに適用し、IPTVストリームは好ましくは最初にPLC、続いてWi−Fi5GHz、さらに続いてWi−Fi2.4GHzに割り当てられ得ることを示すことができる。
いくつかの実施形態では、「高可用性」と考えられるリンク容量閾値も、トラフィックのクラスごとに構成可能なパラメータとすることができる。もちろん、ストリームが起動されたとき、どれくらい多くの帯域幅を必要とするかが知られていないことがある。この閾値によって、振る舞いをトラフィックのクラスごとにカスタマイズすることができる。たとえば、一組の実施形態によれば、少なくとも25MbpsのLCがIPTVに利用可能であることが望ましいことがあるが、OTTに関しては、10MbpsのLCが十分であることができる。すべてのクラスに単一の閾値を使用することも可能である。
いくつかの実施形態では、一種のトラフィックがいくつかの媒体から除外され得ることに留意されたい。たとえば、利用可能な伝送媒体のうちいくつかのみが伝送媒体の好ましい順序で指定される(たとえば、「25」という好ましい順序が、Wi−Fi2GおよびWi−Fi5Gのみが考えられ、Wi−Fi2GとWi−Fi5Gの両方が無効化された場合であってもフローはPLCインターフェース上に送られないことを意味することがある。この場合、フローは破棄され得る。これは、実装形態に応じて、望ましいオプションであることもあれば、そうでないこともある。
上記で説明したパス選択アルゴリズムは、リンク容量に関する。上記で述べたように、リンク容量は、特定の伝送媒体上で送信元ポイントから宛先に送信できる(一般的にMbps単位で測定される)トラフィックの量とすることができる。リンク容量は、リンクの物理的特性(たとえばPHYレートおよびPER)ならびに全体的な媒体の輻輳を考慮に入れることができる。しかしながら、QoSの観点から、クラス(優先順位)固有であるようにリンク容量を修正することが望ましいことがある。たとえば、いくつかの実施形態では、リンク容量は、送信元ポイントから宛先に(Mbps単位で)送信できる特定の優先順位クラスに関するトラフィックの量と定義され得る。したがって、特定のハイブリッドデバイスに関して、リンク容量は、LC[DA][Priority]という二次元配列とすることができる。
チャネルがアイドル状態のとき、特定の宛先へのすべてのリンク容量、すなわちLC[DA][*]は同一であることに留意されたい。しかし、媒体上にトラフィックがあるとき、優先順位の高いデータに対するリンク容量は、優先順位の低いデータに関するよりも高くすることができる−すなわちLC[DA][HIGH]≧LC[DA][LOW]である。これにより、優先順位のより高いトラフィックが優先順位の低いトラフィックを押しのける可能性を考慮に入れることができる。
いくつかの実施形態では、サポートされる優先順位の数は、下位媒体によって定められてもよく−たとえば、一組の実施形態では、この数は、Wi−FiとPLCの両方に関して4にすることができる。したがって、この場合、分類により、2つのタイプのストリーム間に、より高い粒度が存在する(たとえば、IPTVとVoDを区別することが可能である)場合であっても、利用可能なリンク容量の観点から、これらのストリームは同一とすることができる。他の数のサポートされる優先順位も可能である。
ある媒体に故障が発生すると、ストリームは、他の利用可能な媒体に再び割り当てる。一組の実施形態によれば、故障が発生したインターフェース上の各ストリームに対して、ストリームが代替インターフェースに切り換え可能かどうか決定され得る。このセクションで以前に説明したパス選択アルゴリズムは、代替インターフェースを見つけるために使用され得るすなわち、十分な帯域幅を持つ複数の媒体がある場合、ストリームのその優先順位クラスに関する媒体優先順位構成に基づいて、媒体を選択する。ストリーム固有のリンク容量も使用され得る。十分な容量がない場合、ストリーム優先順位付け方法が使用され得る。
媒体が過剰輻輳(over−congested)になる(媒体利用率が閾値を超える)と、輻輳を緩和するために、いくつかのフローが他の媒体に再び割り当てられる必要があることがある。いくつかの実施形態によれば、優先順位の高いフロー(一組の実施形態によれば、IPTV/VoD/OTT/VoIPなど)は、たとえば欠陥を回避するために、可能な場合は切り換えられるべきでない。言い換えれば、優先順位のより低いフローが切り換えの第1の候補であるべきである。
一組の実施形態によれば、負荷をバランスするために、過剰輻輳した媒体上のストリームのより低い優先レベルから始まって、より高い優先レベルに移動して、以下のステップが行われ得る。最高の媒体利用率を持つ次のストリームが選択され得る。ストリームが代替インターフェースに切り換えられるかどうか決定され得る。これは、このセクションで以前に説明したパス選択アルゴリズム、すなわち、十分な帯域幅を持つ複数の媒体がある場合、ストリームのその優先順位クラスに関する媒体優先順位構成に基づいて、媒体を選択することを含むことができる。ストリーム固有のリンク容量も使用され得る。ストリームが切り換えられ得ない場合、次のストリームが選択され得る。最低の優先レベルのすべてのストリームが切り換えられ得ない場合、次に最も高い優先レベルで最高の媒体利用率を持つストリームが選択され得る。どのストリームも切り換えられるのに十分なリンク容量がない場合、たとえば、他の媒体も過剰輻輳している場合、ストリーム優先順位付け方法が使用され得る。
すべての媒体が過剰輻輳し、負荷バランシングが実行不可能であるとき、媒体上のすべてのストリームの品質が劣化することがある。2つの可能な過剰輻輳シナリオ、すなわち、過剰輻輳を引き起こす優先順位のより高いストリームと優先順位のより低いストリームの混合物があるシナリオ、または等しい優先順位を持つ一組のストリームが過剰輻輳を引き起こしているシナリオがある。
どのシナリオが発生するかに応じて、様々な構成可能な挙動が可能である。ストリームの優先順位が混合している場合、優先順位のより低いストリームが破棄され得る。必要/可能な場合、より細かい粒度の優先順位付けが使用され得る。たとえば、可能な場合、異なるタイプのビデオストリーム(たとえば、IPTV対VoD対OTTなど)間での優先順位の変動が使用され得る。代替オプションは、TCPストリームのスループットを抑制することとすることができる。しかしながら、そのようなストリームのスループット特定対時間特性を理解するために、ビデオTCPストリーム(たとえば、OTTストリームまたはVoDストリーム)の特性化が望ましいことがある。たとえば、いくつかの実施形態では、ビデオTCPストリームを抑制しないことが好ましいことがある。
ストリームの優先順位が等しい場合、様々なオプションが存在する。1つの可能性は、ビットレートに対して最も大きなリソースを消費するフローを破棄することである。いくつかの実施形態では、フローの優先順位は、宛先アドレスごとに構成され得る。たとえば、居間のTVへのトラフィックは、寝室のTVへのトラフィックよりも高い優先順位を有することができる。TCPストリームのスループットに制限を設けることは、1つのオプションとなることができる。別の可能性は、最も新しいフローを破棄することである。しかしながら、いくつかの実施形態では、たとえば、ユーザがあるIPTVチャネルから別のチャネルに切り換える場合、すばやいチャネル切り換えがオーバーサブスクリプションの1つの可能な原因であることがある。両方のストリームが切り換え中に同時に実行されてもよく(したがって、「黒い画面」は出現しない)、エンドデバイスは、適切な(たとえば、最も新しい)ストリームを選択して表示することができる。しかしながら、リソースが競合する場合、新しいストリームは、より古いストリームよりもリソースを優先的に受信するべきである。したがって、同じエンドデバイスに向かう複数のフローがある場合、最も古いフローが破棄され得る。
一組の実施形態によれば、必要に応じて、追加のQoS固有の制約がパケットアグリゲーションに課せられ得る。たとえば、可能な場合、優先順位の高いストリームではなく、優先順位のより低いストリームが分割/アグリゲーションされ得る。さらに、いくつかのトラフィックタイプはアグリゲーションされないと指定することを可能にするように構成可能なパラメータが提供され得る。
いくつかの実施形態では、(たとえば、欠陥の可能性があるために)VoIPストリームを分割/アグリゲーションしないことが望ましいことがあることに留意されたい。しかしながら、多数の実施形態では、そのようなストリームは、極めて小さな帯域幅を利用することができ、したがって、一般に、分割/アグリゲーションの好ましい候補でないことがある。
上記で述べたように、QoSの考慮事項を含むパス特性化は、宛先および優先レベルごとの増大されたリンク容量を利用することができる。実装レベルでは、これは、優先レベルごとの媒体利用率になることができる。というのは、それは、いくつかの実施形態によれば、生のリンク容量から利用可能なリンク容量を決定するために使用され得るからである。
チャネルアクセスは、複数のノードの相互作用およびこれらのノードが送信しなければならないトラフィックの優先順位に左右されることがあることに留意されたい。PLCの場合、このアクセスは完全に協調することができ、厳密な優先順位を有する。Wi−Fiの場合、これは、統計学的アクセスとすることができる−この場合、優先順位のより高いトラフィックほど、チャネルにアクセスする高い可能性を有する。ノード内でのアクセスは、たとえどんな送信インターフェースであろうとも、依然として、厳密な優先順位によることができる(たとえば、あるノードが、送信する複数のクラスのトラフィックを有するとき、このノードは、厳密な優先順位を用いて送信することができる)。
いくつかの実施形態によれば、3つのサービス品質レベルがサポートされ得る。これらのサービス品質レベルとしては、高い優先順位(たとえば、緊急転送(expedited forwarding))、中程度の優先順位、および通常の優先順位があり得る。たとえば、一組の実施形態では、ビデオ、ボイスオーバーIP、または最小のパケットロスおよび低遅延で配信されることが必要な何らかの他のカスタムストリームが、高い優先順位を割り当てられ得る。中程度の優先順位は、何らかの他の優先順位のより高いトラフィックに割り当てられてもよく、通常の優先順位(最良の取組み)は、何らかの他のトラフィックタイプに割り当てられ得る。
いくつかの実施形態によれば、ハイブリッド制御パケットは、様々なハイブリッド制御機能に使用され得る。これらは、少なくともいくつかの実施形態では、システムの適切な振る舞い(トポロジ発見、パス特性化など)にとって極めて重要なことがある。したがって、制御パケットがネットワーク輻輳により宛先に到着しない場合、ハイブリッド機能が損なわれることがある。したがって、いくつかの実施形態によれば、ハイブリッド制御パケットは、一般的に、利用可能な最も高い優先順位を有することができる。
この例外は、マーカパケット(たとえば、バッファ開始マーカパケット/バッファ終了マーカパケット、ストリームの開始マーカパケット/ストリームの終了マーカパケット、および/またはインデックスマーカパケット)とすることができる。一組の実施形態によれば、マーカパケットは、パケットをフローとともに正しい順序で保持するために、アタッチされたフローを模倣することができる。模倣としては、同一の優先順位付け、宛先アドレス、および/または他の特性があり得る。
双方向データ
いくつかの実施形態では、特定のTCPフローのすべてのトラフィックを単一のインターフェース上に強制的に流れさせる機能が実施され得ることに留意されたい。これは、データおよびACKストリームが異なるインターフェース上にある場合に遅延差がフローを抑制するようにTCPをトリガし得るという懸念から行われることがある。
いくつかの実施形態では、本明細書で説明するパス選択スキームにおいて、あらゆるデバイスが、あらゆる他のデバイスとは無関係に(フェイルオーバまたは負荷バランシングによる)パス選択および切り換えに関して判定を行うと仮定することができる。具体的には、あらゆるデバイスは、それ自体から発生して、それ自体を通ってブリッジングされるストリーム(たとえば、ストリームのパスの次の一部分に対してデバイスが発生させるストリーム)に関して、これらの判定を行うことができる。2つのデバイスの間に、いずれかの方向で、複数のデータストリームがある場合、各々は、媒体に割り当てられ、必要に応じて他のストリームとは無関係に切り換えられ得る。
しかしながら、IP/TCPなどのいくつかの高水準プロトコルでは、異なる方向の複数のストリームは、実際には、機能的に互いと関連付けられる。たとえば、IP/TCPの場合、TCPデータは一方向に流れることができ、このデータに対応するTCP ACKは他の方向に流れる。多くのネットワーキングプロトコルは、たとえばターンアラウンドタイムを短縮することによって、そのような依存する双方向トラフィックの性能を最適化するように設計され得る。いくつかの実施形態によれば、下位媒体によるそのような最適化は、すべての依存ストリームが同じ媒体を使用している場合のみ行われ得る。したがって、いくつかの実施形態では、IP/TCPストリーム(および/または関連する双方向トラフィックを持つ他のストリーム)の場合、そのようなストリームは識別可能であり、すべての依存ストリームは同じ媒体の使用が保証され得る。
これを達成する1つの可能なメカニズムとして、関連する「スレーブ」ストリームをストリームが有することができることを受信デバイスに明示的に通知する送信デバイスがあり得、「スレーブ」ストリームは、「マスタ」ストリームと同じ伝送媒体を利用するべきである。送信デバイスは、1つまたは複数の制御パケットを介して、または別の手段を介して、受信デバイスに通知することができる。
これを達成する別の可能なメカニズムとしては、そのようなストリームを検出および識別する受信デバイスがあり得る。たとえば、受信デバイスは、ストリームの第1の受信されたパケットの検査に基づいて、ストリームを識別することができる。その検査から、パケットが、反対方向の関連するストリームが生成され得るタイプであることが示された場合、受信デバイスは、受信デバイスがそのストリームに関するパス選択または負荷バランシングの判定を行うべきでないことを示す情報を格納することができる。受信デバイスはまた、ストリームが「スレーブ」ストリームである(たとえば、パス選択または負荷バランシングの判定はローカルで行われるべきでない)ことを示す情報を、送信デバイスがストリームの性質を受信デバイスに明示的に通知する上記で説明したメカニズムに格納することができることに留意されたい。
したがって、一組の実施形態では、第1のストリームの第1の複数のパケットが、第2のデバイスから第1の伝送媒体上で受信され得る。第2のストリームが第1のストリームに関連して生成され得ることが決定されてもよく、その場合、第2のストリームは、第2のデバイスへの送信を目的とする。いくつかの実施形態では、第2のストリームが第1のストリームに関連して生成され得るというインジケーションが、第2のデバイスから受信され得る。この場合、第2のストリームが第1のストリームに関連して生成され得ると決定することは、第2のストリームが第1のストリームに関連して生成され得るというインジケーションを受信することに基づくことができる。あるいは、第1のデバイスは、たとえば、第1のストリームの1つまたは複数のパケットを検査してパケットタイプを決定することによって、第2のデバイスからのインジケーションとは無関係に、第2のストリームが第1のストリームに関連して生成され得ると決定することができる。
第1のストリームが第1の伝送媒体に割り当てられ、第2のストリームが第1のストリームと関連付けられることを示す情報が、格納され得る。第2のストリームの第2の複数のパケットは、第1の伝送媒体上で第2のデバイスに送信されてもよく、これは、第1のストリームが第1の伝送媒体に割り当てられ、第2のストリームが第1のストリームと関連付けられることを示す情報に基づくことができる。
いくつかの実施形態では、第1のストリームの第1の複数のパケットを受信したことを受けて、第2のストリームの第2の複数のパケットが生成され得る。たとえば、一組の実施形態では、第1の複数のパケットとしては、TCPデータパケットがあり得るが、第2の複数のパケットとしては、このTCPデータパケットに応答して生成されたTCP ACKパケットがあり得る。
関連する逆方向ストリームを持つストリームが、ストリーム分割およびアグリゲーションに関する追加の問題を提起することがあることに留意されたい。この場合、様々な実施形態によれば、そのようなストリームがストリーム分割から除外され得るか、または(たとえば、可能な場合)「スレーブ」ストリームを引き起こすプロトコル機能(たとえば、TCP ACK機能)が無効化され得る。
自己抑制
上記で説明したように、いくつかの実施形態によれば、いくつかのデバイスは、送信インターフェース上でパケットをバッファリングすることによって、フェイルオーバ時にロスされるパケットをなくす助けとなるメカニズムを実施することができる。次いで、フェイルオーバの場合、このバッファが新しいインターフェース上で送信され得る。同様に、受信側では、パケットは、順序正しい配信を保証するために、新しいインターフェース上で検出されると、バッファリングされ得る。後者の場合、すべてのパケットが受信されたことがいったん検出されると、バッファリングされたパケットは、すべてプロトコルスタックに送られ得る。いずれの場合も、多数のパケットが短時間に送信され得る。これは、いくつかの実施形態では、メモリ枯渇によるパケットロスを引き起こす可能性を有する。
上記で簡単に言及したあるメカニズムは、よく知られている抑制メカニズム(TBFなど)を使用して、パケットが宛先に送られる速度を制限することを含むことができる。しかしながら、これらの汎用メカニズムは複雑なことがある−たとえば、これらのメカニズムは、パケットが宛先に送られる速度を調節する助けとなる追加タイマを利用することができる。
より単純なメカニズムは、自己抑制を含むことができる。特定のストリームのパケットは、そのようなイベントの後で引き続き送受信され得るので、そのような送信または受信を、パケットを宛先に送るためのタイマとして使用することが可能なことがある。たとえば、一組の実施形態では、FIFOバッファが実施されてもよく、このバッファでは、新しいパケットがバッファの末尾に置かれ、一方、プログラム可能な数のより古いパケットは先頭から除去され、処理される(たとえば、宛先に送られる)ことができる。バッファは、最終的には枯渇することがあり、その時点で、自己抑制フェーズが完了することができる。様々な実施形態によれば、自己抑制型FIFOバッファは、必要に応じて送信機側および/または受信機側のいずれかまたは両方で実施され得る。
上記の実施形態についてかなり詳細に説明してきたが、上記の開示が十分に理解されれば、数多くの変形形態および修正形態が当業者に明らかになるであろう。以下の特許請求の範囲は、すべてのそのような変形形態と修正形態とを包含すると解釈されることが意図されている。