(57)【特許請求の範囲】
【請求項１】
方法であって、
第1のネットワークデバイスにおいて、第2のネットワークデバイスから受信される複数のパケットに関連付けられている一次シーケンス識別子および二次シーケンス識別子を決定するステップであって、前記複数のパケットの第1の部分集合が第1のパケットルートを介して受信され、前記複数のパケットの第2の部分集合が第2のパケットルートを介して受信される、ステップと、
前記第１のネットワークデバイスにおいて、前記第２のネットワークデバイスが前記複数のパケットを前記第１のネットワークデバイスに送信するパケット順序を示すシーケンスリストパケットを前記第２のネットワークデバイスから受信するステップと、
第1のパケットの前記二次シーケンス識別子、第2のパケットの前記二次シーケンス識別子、及び前記シーケンスリストパケットに少なくとも一部は基づき、前記第2のパケットに対する前記第1のパケットの不正な順序の配送を検出するステップと、
前記第2のパケットに対する前記第1のパケットの不正な順序の配送の検出に応答して、前記第1のパケットの前記二次シーケンス識別子および前記第2のパケットの前記二次シーケンス識別子に少なくとも一部は基づき、前記第1のパケットおよび前記第2のパケットを再順序付けするステップと、
を含むことを特徴とする方法。
【請求項２】
前記一次シーケンス識別子および前記二次シーケンス識別子を決定する前記ステップは、
前記第１のパケットのヘッダフィールドから前記第１のパケットの前記二次シーケンス識別子を読み取るステップをさらに含む、請求項1に記載の方法。
【請求項３】
前記一次シーケンス識別子および前記二次シーケンス識別子を決定する前記ステップは、
前記第１のパケットのヘッダフィールドおよび前記第１のパケットのペイロードからなるグループのメンバーの少なくとも1つの少なくとも一部に基づき、前記第１のパケットのパケットシグネチャを決定するステップと、
前記第１のパケットの前記パケットシグネチャを前記シーケンスリストパケット内の複数のパケットシグネチャと比較するステップであって、前記シーケンスリストパケットは、パケットシグネチャ、および前記複数のパケットの各々に対応する二次シーケンス識別子を含む、ステップと、
前記第１のパケットの前記パケットシグネチャが、第1のパケットシグネチャと一致すると判定するステップと、
前記シーケンスリストパケットから、前記第1のパケットシグネチャに対応する第1の二次シーケンス識別子を前記第1のパケットの前記二次シーケンス識別子として選択するステップと、
をさらに含む、請求項1に記載の方法。
【請求項４】
前記二次シーケンス識別子は、前記第1のパケットの仮想ローカルエリアネットワーク(VLAN)タグの少なくとも1つのビットで示され、前記二次シーケンス識別子を示す前記VLANタグの前記少なくとも1つのビットは、所定の符号化に関連付けられる、請求項1に記載の方法。
【請求項５】
不正な順序の配送を検出する前記ステップは、
前記第1のパケットの前記二次シーケンス識別子が、すでに受信されているパケットの前記二次シーケンス識別子と順序が揃っているかどうかを判定するステップと、
前記第1のパケットの前記二次シーケンス識別子が、前記すでに受信されているパケットの前記二次シーケンス識別子と順序が揃っているとの判定に応答して、前記第1のパケットと前記すでに受信されているパケットが、順序が揃っていると判定するステップと、
前記第1のパケットの前記二次シーケンス識別子が、前記すでに受信されているパケットの前記二次シーケンス識別子と順序が揃っていないとの判定に応答して、前記第1のパケットが前記すでに受信されているパケットに対して不正な順序で届くと判定するステップと、
をさらに含む、請求項1に記載の方法。
【請求項６】
不正な順序の配送を検出する前記ステップは、前記第1のパケットを再順序付けバッファに格納するステップをさらに含み、
前記第1のパケットおよび前記第2のパケットを再順序付けする前記ステップは、前記第2のパケットを、前記再順序付けバッファ内にすでに格納されている前記第1のパケットに対して再順序付けするステップをさらに含む、
請求項1に記載の方法。
【請求項７】
不正な順序の配送を検出する前記ステップは、
前記第1のパケットの前記二次シーケンス識別子に基づき、前記第1のパケットが第３のパケットより順序に関して前の方にあるかどうかを判定するステップであって、前記第３のパケットは、前記第1のネットワークデバイスの上位プロトコル層に処理のために供給された最後のパケットである、ステップと、
前記第1のパケットが前記第３のパケットより順序に関して前の方にあるとの判定に応答して、前記第1のネットワークデバイスにおいて前記第1のパケットを破棄するステップと、
前記第1のパケットが前記第３のパケットより順序に関して後の方にあるとの判定に応答して、前記第1のパケットの前記二次シーケンス識別子に基づき、前記第1のパケットを再順序付けするステップと、
をさらに含む、請求項1に記載の方法。
【請求項８】
前記第1のパケットの前記二次シーケンス識別子は、前記第1のパケットのシーケンス番号および前記第1のパケットのタイムスタンプからなるグループのメンバーのうちの少なくとも1つを含む、請求項1に記載の方法。
【請求項９】
前記第1のパケットおよび前記第2のパケットの前記再順序付けに応じて、前記第1のパケットおよび前記第2のパケットを処理のために前記第1のネットワークデバイスの上位プロトコル層に供給するステップをさらに含む、請求項1に記載の方法。
【請求項１０】
不正な順序の配送を検出する前記ステップは、
前記第1のネットワークデバイスにおいて、前記第1のパケットおよび第3のパケットが共通の二次シーケンス識別子を有すると判定するステップと、
前記第1のパケットおよび前記第3のパケットが共通の前記二次シーケンス識別子を有すると判定するステップに応じて、
前記第1のパケットおよび前記第2のパケットを再順序付けする前記ステップのために前記第1のパケットを供給するステップと、
前記第3のパケットを破棄するステップと、
を含む、請求項1に記載の方法。
【請求項１１】
第1のネットワークデバイスにおいて、複数のパケットを、第2のネットワークデバイスに送信することを決定するステップと、
二次シーケンス識別子を複数のパケットの各々の中に挿入するステップであって、前記二次シーケンス識別子は、前記第１のネットワークデバイスのハイブリッドアダプテーション層によって挿入される、ステップと、
前記第１のネットワークデバイスから前記第２のネットワークデバイスへシーケンスリストパケットを送信するステップであって、前記シーケンスリストパケットは、前記第１のネットワークデバイスが前記複数のパケットを前記第２のネットワークデバイスに送信するパケット順序を示している、ステップと、
前記シーケンスリストパケットにおいて示される前記パケット順序に従って、前記複数のパケットを前記第2のネットワークデバイスに送信するステップであって、対応する二次シーケンス識別子を含む前記複数のパケットの第1の部分集合は、第1のパケットルートを介して送信され、対応する二次シーケンス識別子を含む前記複数のパケットの第2の部分集合は、第2のパケットルートを介して送信される、ステップと、
を含むことを特徴とする方法。
【請求項１２】
前記二次シーケンス識別子を挿入する前記ステップは、
一次シーケンス識別子を前記第１のネットワークデバイスの上位プロトコル層により前記複数のパケットの各々の中に挿入することに加えて、前記二次シーケンス識別子を挿入するステップ、又は
前記複数のパケットが前記一次シーケンス識別子を含んでいないとの判断に応答して、前記二次シーケンス識別子を前記複数のパケットの各々の中に挿入するステップ、
を含む、請求項11に記載の方法。
【請求項１３】
前記二次シーケンス識別子を挿入する前記ステップは、
前記二次シーケンス識別子を、第１のパケットのヘッダフィールド内に挿入するステップと、
前記二次シーケンス識別子を含む前記第１のパケットを前記第2のネットワークデバイスに送信するステップと、
をさらに含む、請求項11に記載の方法。
【請求項１４】
前記二次シーケンス識別子を挿入する前記ステップは、
前記複数のパケットの各パケットについて、前記パケットのヘッダフィールドおよび前記パケットのペイロードからなるグループのメンバーのうちの少なくとも1つに基づき、前記パケットを一意に識別するパケットシグネチャを決定するステップと、
前記パケットシグネチャ、および前記複数のパケットの各々の対応する前記二次シーケンス識別子を含む前記シーケンスリストパケットを生成するステップと、
をさらに含む、請求項11に記載の方法。
【請求項１５】
前記第1のネットワークデバイスにおいて、前記第1のパケットルートを介して第1のパケットを送信することを決定するステップと、
前記第2のパケットルートを介して第2のパケットを送信するステップであって、前記第2のパケットは、前記第2のパケットルートを介して送信される最後のパケットである、ステップと、
前記第2のパケットを送信する前記ステップに応じて、所定の時間間隔で前記第2のパケットルートと前記第1のパケットルートとを介して後続のパケットを送信することを妨げるステップと、
前記所定の時間間隔が経過した後に前記第1のパケットルートを介して前記第1のパケットを送信するステップと、
をさらに含む、請求項11に記載の方法。
【請求項１６】
第1の通信ネットワークデバイスであって、
ネットワークインターフェースと、
前記ネットワークインターフェースに結合された再順序付けユニットと、
を備え、
前記再順序付けユニットは、
前記第1の通信ネットワークデバイスと第2の通信ネットワークデバイスとの間の複数のパケットルートを介して第2の通信ネットワークデバイスから受信された複数のパケットに関連付けられている一次シーケンス識別子および二次シーケンス識別子を決定することであって、前記複数のパケットの第1の部分集合は、第1のパケットルートを介して受信され、前記複数のパケットの第2の部分集合は、第2のパケットルートを介して受信される、決定することと、
前記第２の通信ネットワークデバイスから、前記第２の通信ネットワークデバイスが前記複数のパケットを前記第１の通信ネットワークデバイスに送信するパケット順序を示すシーケンスリストパケットを受信することと、
第1のパケットの前記二次シーケンス識別子、第2のパケットの前記二次シーケンス識別子、及び前記シーケンスリストパケットに少なくとも一部は基づき、前記第2のパケットに対する前記複数のパケットの前記第1のパケットの不正な順序の配送を、検出することと、
前記第2のパケットに対する前記第1のパケットの不正な順序の配送を前記再順序付けユニットが検出することに応答して、前記第1のパケットの前記二次シーケンス識別子および前記第2のパケットの前記二次シーケンス識別子に少なくとも一部は基づき、前記第1のパケットおよび前記第2のパケットを再順序付けすることと、
を行うように動作可能であることを特徴とする第1の通信ネットワークデバイス。
【請求項１７】
前記再順序付けユニットは、前記第１のパケットのヘッダフィールドから前記第１のパケットの前記二次シーケンス識別子を読み取るようにさらに動作可能である、請求項16に記載の第1の通信ネットワークデバイス。
【請求項１８】
前記再順序付けユニットは、
前記第１のパケットのヘッダフィールドおよび前記第１のパケットのペイロードからなるグループのメンバーのうちの少なくとも1つに少なくとも一部は基づき、前記第１のパケットのパケットシグネチャを決定することと、
前記第１のパケットの前記パケットシグネチャを前記シーケンスリストパケット内の複数のパケットシグネチャと比較することであって、前記シーケンスリストパケットは、パケットシグネチャ、および前記複数のパケットの各々に対応する二次シーケンス識別子を含む、比較することと、
前記第１のパケットの前記パケットシグネチャが第1のパケットシグネチャと一致すると判定することと、
前記シーケンスリストパケットから、前記第1のパケットシグネチャに対応する第1の二次シーケンス識別子を前記第１のパケットの前記二次シーケンス識別子として選択することと、
を行うようにさらに動作可能である、請求項16に記載の第1の通信ネットワークデバイス。
【請求項１９】
前記再順序付けユニットは、
前記第1のパケットの前記二次シーケンス識別子が、すでに受信されているパケットの二次シーケンス識別子と順序が揃っているかどうかを判定することと、
前記第1のパケットの前記二次シーケンス識別子が、すでに受信されているパケットの前記二次シーケンス識別子と順序が揃っていると前記再順序付けユニットが判定することに応答して、前記第1のパケットが前記すでに受信されているパケットと順序が揃っていると判定することと、
前記第1のパケットの前記二次シーケンス識別子が、前記すでに受信されているパケットの前記二次シーケンス識別子と順序が揃っていないと前記再順序付けユニットが判定することに応答して、前記第1のパケットが前記すでに受信されているパケットに対して不正な順序であると判定することと、
を行うようにさらに動作可能である、請求項16に記載の第1の通信ネットワークデバイス。
【請求項２０】
前記再順序付けユニットは、前記第2のパケットを、前記再順序付けバッファ内にすでに格納されている前記第1のパケットに対して再順序付けすることを前記再順序付けユニットが行うように動作可能であることをさらに含む、
請求項16に記載の第1の通信ネットワークデバイス。
【請求項２１】
前記再順序付けユニットは、
前記第1のパケットの前記二次シーケンス識別子に基づき、前記第1のパケットが第３のパケットより順序に関して前の方にあるかどうかを判定するステップであって、前記第３のパケットは、前記第1の通信ネットワークデバイスの上位プロトコル層に処理のために供給された前記複数のパケットの最後のパケットより順序に関して前の方にあるかどうかを判定することと、
前記第1のパケットが前記第３のパケットより順序に関して前の方にあると前記再順序付けユニットが判定することに応答して、前記第1の通信ネットワークデバイスにおいて前記第1のパケットを破棄することと、
前記第1のパケットが前記第３のパケットより順序に関して後の方にあると前記再順序付けユニットが判定することに応答して、前記第1のパケットの前記二次シーケンス識別子に少なくとも一部は基づき、前記第1のパケットを再順序付けすることと、
を行うようにさらに動作可能である、請求項16に記載の第1の通信ネットワークデバイス。
【請求項２２】
命令が格納されている非一時的な機械可読記憶媒体であって、前記命令はプロセッサによって実行されたときに、前記プロセッサに動作を実行することを行わせ、前記動作は、
第2のネットワークデバイスから第1のネットワークデバイスに受信された複数のパケットに関連付けられている一次シーケンス識別子および二次シーケンス識別子を決定するステップであって、前記複数のパケットの第1の部分集合が第1のパケットルートを介して受信され、前記複数のパケットの第2の部分集合が第2のパケットルートを介して受信される、ステップと、
前記第１のネットワークデバイスにおいて、前記第２のネットワークデバイスが前記複数のパケットを前記第１のネットワークデバイスに送信するパケット順序を示すシーケンスリストパケットを前記第２のネットワークデバイスから受信するステップと、
第1のパケットの前記二次シーケンス識別子、前記複数のパケットの第2のパケットの前記二次シーケンス識別子、及び前記シーケンスリストパケットに少なくとも一部は基づき、前記第2のパケットに対する前記複数のパケットの前記第1のパケットの不正な順序の配送を検出するステップと、
前記第2のパケットに対する前記第1のパケットの不正な順序の配送を検出する前記動作に応答して前記第1のパケットの前記二次シーケンス識別子および前記第2のパケットの前記二次シーケンス識別子に少なくとも一部は基づき、前記第1のパケットおよび前記第2のパケットを再順序付けするステップと、
を含むことを特徴とする非一時的な機械可読記憶媒体。
【請求項２３】
前記一次シーケンス識別子および前記二次シーケンス識別子を決定する前記動作は、
前記第１のパケットのヘッダフィールドから前記第１のパケットの前記二次シーケンス識別子を読み取るステップをさらに含む、請求項22に記載の非一時的な機械可読記憶媒体。
【請求項２４】
前記一次シーケンス識別子および前記二次シーケンス識別子を決定する前記動作は、
前記第１のパケットのヘッダフィールドおよび前記第１のパケットのペイロードからなるグループのメンバーのうちの少なくとも1つに少なくとも一部は基づき、前記第１のパケットのパケットシグネチャを決定するステップと、
前記第１のパケットの前記パケットシグネチャを前記シーケンスリストパケット内の複数のパケットシグネチャと比較するステップであって、前記シーケンスリストパケットは、パケットシグネチャ、および前記複数のパケットの各々に対応する二次シーケンス識別子を含む、ステップと、
前記第１のパケットの前記パケットシグネチャが第1のパケットシグネチャと一致すると判定するステップと、
前記シーケンスリストパケットから、前記第1のパケットシグネチャに対応する第1の二次シーケンス識別子を前記第１のパケットの前記二次シーケンス識別子として選択するステップと、
をさらに含む、請求項22に記載の非一時的な機械可読記憶媒体。
【請求項２５】
不正な順序の配送を検出する前記動作は、
前記第1のパケットの前記二次シーケンス識別子が、前記第1のネットワークデバイスですでに受信されたすでに受信されているパケットの二次シーケンス識別子と順序が揃っているかどうかを判定するステップと、
前記第1のパケットの前記二次シーケンス識別子が、前記すでに受信されているパケットの前記二次シーケンス識別子と順序が揃っているとの判定に応答して、前記第1のパケットと前記すでに受信されているパケットが順序が揃っていると判定するステップと、
前記第1のパケットの前記二次シーケンス識別子が、前記すでに受信されているパケットの前記二次シーケンス識別子と順序が揃っていないとの判定に応答して、前記第1のパケットが前記すでに受信されているパケットに対して不正な順序であると判定するステップと、
をさらに含む、請求項22に記載の非一時的な機械可読記憶媒体。
【請求項２６】
前記第1のパケットの前記一次シーケンス識別子は、前記第2のネットワークデバイスの上位プロトコル層によって挿入され、
前記第1のパケットの前記二次シーケンス識別子は、前記第2のネットワークデバイスのハイブリッドアダプテーション層によって挿入され、
前記ハイブリッドアダプテーション層は、前記上位プロトコル層と前記第2のネットワークデバイスの複数のネットワークインターフェースとの間の中間プロトコル層である、
請求項1に記載の方法。
【請求項２７】
前記複数のパケットのそれぞれが、前記第2のネットワークデバイスのハイブリッドアダプテーション層によって挿入された対応する二次シーケンス識別子を含むかどうかを判定するステップと、
前記複数のパケットのそれぞれが、前記対応する第二次シーケンス識別子を含んでいないとの判定に応答して、
第1のパケットの前記一次シーケンス識別子及び第2のパケットの前記二次シーケンス識別子に少なくとも一部は基づき、前記第2のパケットに対する前記第1のパケットの不正な順序の配送を検出するステップと、
前記第1のパケットの前記一次シーケンス識別子および前記第2のパケットの前記二次シーケンス識別子に少なくとも一部は基づき、前記第1のパケットおよび前記第2のパケットを再順序付けするステップと、
をさらに具備する、請求項１に記載の方法。
【請求項２８】
不正な順序の配送を検出する前記動作は、
前記第1のパケットの前記二次シーケンス識別子に基づき、前記第1のパケットが第３のパケットより順序に関して前の方にあるかどうかを判定するステップであって、前記第３のパケットは、前記第1のネットワークデバイスの上位プロトコル層に処理のために供給された最後のパケットである、ステップと、
前記第1のパケットが前記第３のパケットより順序に関して前の方にあるとの判定に応答して、前記第1のネットワークデバイスにおいて前記第1のパケットを破棄するステップと、
前記第1のパケットが前記第３のパケットより順序に関して後の方にあるとの判定に応答して、前記第1のパケットの前記二次シーケンス識別子に基づき、前記第1のパケットを再順序付けするステップと、
をさらに具備する、請求項22に記載の非一時的な機械可読記憶媒体。
【請求項２９】
不正な順序の配送を検出する前記動作は、
前記第1のネットワークデバイスにおいて、前記第1のパケットおよび第3のパケットが共通の二次シーケンス識別子を有すると判定するステップと、
前記第1のパケットおよび前記第3のパケットが共通の前記二次シーケンス識別子を有すると判定するステップに応じて、
前記第1のパケットおよび前記第2のパケットを再順序付けする前記ステップのために前記第1のパケットを供給するステップと、
前記第3のパケットを破棄するステップと、
を具備する、請求項22に記載の非一時的な機械可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
［関連出願］
本出願は、2011年11月3日に出願した米国特許出願第13/288,319号の優先利益を主張するものである。
【０００２】
本発明の主題の実施形態は、一般的には、通信システムの分野に関し、より詳細には、多配送ルートパケット順序付け(multiple delivery route packet ordering)に関する。
【背景技術】
【０００３】
ハイブリッド通信ネットワークは、通常、単一の拡張通信ネットワークを形成するために異なるネットワーク技術と媒体との間でパケットを転送するブリッジング対応デバイスを使用して相互接続される複数のネットワーキング技術(たとえば、ワイヤレスローカルエリアネットワーク(WLAN)技術、電力線通信技術、イーサネット（登録商標）など)を含む。通常、通信機構、およびプロトコル仕様(たとえば、デバイスおよびトポロジー発見、他のネットワークへのブリッジングなど)は、各ネットワーキング技術に固有のものである。ハイブリッド通信ネットワークは、送信元ネットワークデバイスから送信先ネットワークデバイスにパケットを配送するために異なるネットワーク技術のうちの1つまたは複数に関連付けられている異なるルートを提供することができる。
【発明の概要】
【課題を解決するための手段】
【０００４】
いくつかの実施形態では、方法は、通信ネットワークの第1のネットワークデバイスにおいて、第1のネットワークデバイスと第2のネットワークデバイスとの間の複数のパケットルートを介して第2のネットワークデバイスから受信されるパケットストリームに関連付けられた複数のパケットに関連付けられているシーケンス識別子を決定するステップであって、複数のパケットの部分集合が複数のパケットルートの各々を介して受信される、ステップと、複数のパケットに関連付けられているシーケンス識別子に少なくとも一部は基づき、複数のパケットルートを介して受信されるパケットストリームに関連付けられている複数のパケットのうちの1つまたは複数のパケットの不正な順序の配送を検出するステップと、複数のパケットルートを介して受信されるパケットストリームに関連付けられている複数のパケットのうちの1つまたは複数のパケットの不正な順序の配送を前記検出するステップに応答して複数のパケットに関連付けられているシーケンス識別子に基づき、複数のパケットの少なくとも部分集合を再順序付けするステップとを含む。
【０００５】
いくつかの実施形態では、第1のネットワークデバイスと第2のネットワークデバイスとの間の複数のパケットルートを介して第2のネットワークデバイスから受信されるパケットストリームに関連付けられている複数のパケットに関連付けられているシーケンス識別子を前記決定するステップは、複数のパケットの各々が第2のネットワークデバイスのハイブリッドアダプテーション層によって挿入される二次シーケンス識別子を含むかどうかを判定するステップと、第1のネットワークデバイスにおいて、複数のパケットの各々が第2のネットワークデバイスのハイブリッドアダプテーション層によって挿入される二次シーケンス識別子を含むと判定するステップに応答して、複数のパケットの各々に関連付けられている二次シーケンス識別子を決定するステップと、第1のネットワークデバイスにおいて、複数のパケットの各々が二次シーケンス識別子を含まないと判定するステップに応答して、複数のパケットの各々に関連付けられている一次シーケンス識別子を決定するステップであって、複数のパケットの各々に関連付けられている一次シーケンス識別子は、第2のネットワークデバイスの上位プロトコル層によって挿入される、ステップとをさらに含む。
【０００６】
いくつかの実施形態では、複数のパケットの各々が第2のネットワークデバイスのハイブリッドアダプテーション層によって挿入される二次シーケンス識別子を含むと判定するステップに応答して、複数のパケットの各々に関連付けられている二次シーケンス識別子を前記決定するステップは、複数のパケットの各々について、パケットの1つまたは複数のヘッダフィールドから二次シーケンス識別子を読み取るステップをさらに含む。
【０００７】
いくつかの実施形態では、複数のパケットの各々が第2のネットワークデバイスのハイブリッドアダプテーション層によって挿入される二次シーケンス識別子を含むと判定するステップに応答して、複数のパケットの各々に関連付けられている二次シーケンス識別子を前記決定するステップは、複数のパケットの各々について、パケットのヘッダフィールドおよびパケットのペイロードのうちの少なくとも1つに基づき、パケットのパケットシグネチャを決定するステップと、パケットのパケットシグネチャをシーケンスリストパケット(sequence list packet)内の複数のパケットシグネチャと比較するステップであって、シーケンスリストパケットは、複数のパケットシグネチャ、およびパケットストリームの複数のパケットの対応する各々に関連付けられている対応する複数のシーケンス識別子を含み、シーケンスリストパケットは、第2のネットワークデバイスから第1のネットワークデバイスに供給される、ステップと、パケットのパケットシグネチャをシーケンスリストパケット内の複数のパケットシグネチャと前記比較するステップに基づき、パケットのパケットシグネチャがシーケンスリストパケット内の複数のパケットシグネチャのうちの第1のシグネチャと一致すると判定するステップと、パケットのパケットシグネチャがシーケンスリストパケット内の複数のパケットシグネチャのうちの第1のシグネチャと一致すると前記判定するステップに応答して、複数のパケットシグネチャのうちの第1のシグネチャに対応する複数のシーケンス識別子のうちの第1の識別子をパケットに関連付けられているシーケンス識別子として識別するステップとをさらに含む。
【０００８】
いくつかの実施形態では、二次シーケンス識別子は、パケットに関連付けられている仮想ローカルエリアネットワーク(VLAN)タグの1つまたは複数のビットのうちの少なくとも1つで示され、第2のシーケンス識別子を示すVLANタグの1つまたは複数のビットは、所定の符号化に関連付けられる。
【０００９】
いくつかの実施形態では、複数のパケットルートを介して受信されるパケットストリームに関連付けられている複数のパケットのうちの1つまたは複数のパケットの不正な順序の配送を前記検出するステップは、複数のパケットの各々について、パケットに関連付けられているシーケンス識別子が、第1のネットワークデバイスですでに受信されていたパケットストリームに関連付けられている対応する1つまたは複数のすでに受信されているパケットに関連付けられている1つまたは複数のシーケンス識別子と順序が揃っているかどうかを判定するステップと、パケットに関連付けられているシーケンス識別子が、パケットストリームに関連付けられている対応する1つまたは複数のすでに受信されているパケットに関連付けられている1つまたは複数のシーケンス識別子と順序が揃っていると判定するステップに応答して、パケットがパケットストリームに関連付けられている1つまたは複数のすでに受信されているパケットと順序が揃っていると判定するステップと、パケットに関連付けられているシーケンス識別子が、パケットストリームに関連付けられている対応する1つまたは複数のすでに受信されているパケットに関連付けられている1つまたは複数のシーケンス識別子と順序が揃っていないと判定するステップに応答して、パケットがパケットストリームに関連付けられている1つまたは複数のすでに受信されているパケットに関して不正な順序で届いていると判定するステップとをさらに含む。
【００１０】
いくつかの実施形態では、複数のパケットルートを介して受信されるパケットストリームに関連付けられている複数のパケットのうちの1つまたは複数のパケットの不正な順序の配送を前記検出するステップは、複数のパケットのうちの1つまたは複数のパケットを再順序付けバッファに格納するステップをさらに含み、複数のパケットに関連付けられているシーケンス識別子に基づき、複数のパケットの少なくとも部分集合を前記再順序付けするステップは、複数のパケットの部分集合の各々について、そのパケットを、再順序付けバッファ内にすでに格納されている1つまたは複数のパケットで再順序付けするステップをさらに含む。
【００１１】
いくつかの実施形態では、複数のパケットルートを介して受信されるパケットストリームに関連付けられている複数のパケットのうちの1つまたは複数のパケットの不正な順序の配送を前記検出するステップは、複数のパケットの各々について、パケットに関連付けられているシーケンス識別子に基づき、パケットが第1のネットワークデバイスの上位プロトコル層に処理のために供給された複数のパケットのうちの最後のパケットより順序に関して前の方にあるかどうかを判定するステップと、パケットが第1のネットワークデバイスの上位プロトコル層に処理のために供給された複数のパケットのうちの最後のパケットより順序に関して前の方にあると判定するステップに応答して、第1のネットワークデバイスにおいてパケットを破棄するステップと、パケットが第1のネットワークデバイスの上位プロトコル層に処理のために供給された複数のパケットのうちの最後のパケットより順序に関して後の方にあると判定するステップに応答して、パケットに関連付けられているシーケンス識別子に基づき、パケットを再順序付けするステップとをさらに含む。
【００１２】
いくつかの実施形態では、シーケンス識別子は、シーケンス番号およびタイムスタンプのうちの少なくとも1つを含む。
【００１３】
いくつかの実施形態では、複数のパケットに関連付けられているシーケンス識別子に基づき、複数のパケットの少なくとも部分集合を前記再順序付けするステップに応答して、この方法は、複数のパケットの少なくとも部分集合を処理のため第1のネットワークデバイスの上位プロトコル層に送るステップをさらに含む。
【００１４】
いくつかの実施形態では、複数のパケットルートを介して受信されるパケットストリームに関連付けられている複数のパケットのうちの1つまたは複数のパケットの不正な順序の配送を前記検出するステップは、複数のパケットに関連付けられているシーケンス識別子に少なくとも一部は基づき、その同じシーケンス識別子に関連付けられている2つ以上のパケットが第1のネットワークデバイスで検出されるかどうかを判定するステップと、その同じシーケンス識別子に関連付けられている2つ以上のパケットが第1のネットワークデバイスで検出されると判定するステップに応答して、複数のパケットに関連付けられているシーケンス識別子に基づき、複数のパケットの少なくとも部分集合を前記再順序付けするステップについて同じシーケンス識別子に関連付けられている2つ以上のパケットのうちの第1のパケットを供給し、同じシーケンス番号に関連付けられている2つ以上のパケットの残りを破棄するステップとを含む。
【００１５】
いくつかの実施形態では、方法は、通信ネットワークの第1のネットワークデバイスにおいて、パケットストリームに関連付けられている複数のパケットを、第1のネットワークデバイスと第2のネットワークデバイスとの間の複数のパケットルートを介して通信ネットワークの第2のネットワークデバイスに送信することを決定するステップと、二次シーケンス識別子をパケットストリームに関連付けられている複数のパケットの各々の中に挿入するステップであって、二次シーケンス識別子は、第1のネットワークデバイスのハイブリッドアダプテーション層によって挿入される、ステップと、複数のパケットルートを介して複数のパケットを第2のネットワークデバイスに送信するステップであって、複数のパケットの部分集合は、複数のパケットルートの各々を介して送信されるようにスケジュールされる、ステップとを含む。
【００１６】
いくつかの実施形態では、二次シーケンス識別子をパケットストリームに関連付けられている複数のパケットの各々の中に前記挿入するステップは、第1のネットワークデバイスの上位プロトコル層によって挿入された一次シーケンス識別子に加えて二次シーケンス識別子を複数のパケットの各々の中に挿入するステップ、またはパケットストリームに関連付けられている複数のパケットが一次シーケンス識別子を含まないと判定するステップに応答して、二次シーケンス識別子を複数のパケットの各々の中に挿入するステップを含む。
【００１７】
いくつかの実施形態では、二次シーケンス識別子を第2のパケットストリームに関連付けられている1つまたは複数のパケットの各々の中に前記挿入するステップは、1つまたは複数のパケットの各々について、二次シーケンス識別子をパケットのヘッダフィールド内に挿入するステップと、二次シーケンス識別子を含むパケットを第2のネットワークデバイスに送信するステップとをさらに含む。
【００１８】
いくつかの実施形態では、二次シーケンス識別子をパケットストリームに関連付けられている複数のパケットの各々の中に前記挿入するステップは、複数のパケットの各々について、パケットのヘッダフィールドおよびパケットのペイロードのうちの少なくとも1つに基づき、パケットを一意に識別するパケットシグネチャを決定するステップと、複数のパケットの各々に関連付けられているパケットシグネチャと、複数のパケットの各々に関連付けられている対応する二次シーケンス識別子とを備えるシーケンスリストパケットを生成するステップと、シーケンスリストパケットを第2のネットワークデバイスに送信して1つまたは複数のパケットが第1のネットワークデバイスから第2のネットワークデバイスに送信される順序を指示するステップと、シーケンスリストパケットで指示されているパケット順序に従って複数のパケットを第2のネットワークデバイスに送信するステップとをさらに含む。
【００１９】
いくつかの実施形態では、この方法は、第1のネットワークデバイスにおいて、複数のパケットルートのうちの第2のパケットルートの代わりに、複数のパケットルートのうちの第1のパケットルートを介して複数のパケットのうちの1つまたは複数を送信することを決定するステップと、第2のパケットルートを介して複数のパケットのうちの第1のパケットを送信するステップであって、複数のパケットのうちの第1のパケットは、第2のパケットルートを介して送信される最後のパケットである、ステップと、第2のパケットルートを介して複数のパケットのうちの第1のパケットを前記送信するステップに応答して、所定の時間間隔で第2のパケットルートと第1のパケットルートとを介して複数のパケットのうちの後続のパケットを送信することを妨げるステップであって、複数のパケットのうちの第1のパケットは、第2のパケットルートを介して送信される最後のパケットである、ステップと、所定の時間間隔が経過した後に第1のパケットルートを介して複数のパケットのうちの後続のパケットを送信するステップとをさらに含む。
【００２０】
いくつかの実施形態では、通信ネットワークデバイスは、1つまたは複数のネットワークインターフェースと、1つまたは複数のネットワークインターフェースに結合された再順序付けユニットとを備え、再順序付けユニットは、通信ネットワークデバイスと第2の通信ネットワークデバイスとの間の複数のパケットルートを介して第2の通信ネットワークデバイスから通信ネットワークデバイスにおいて受信されたパケットストリームに関連付けられている複数のパケットに関連付けられているシーケンス識別子を決定することであって、複数のパケットの部分集合が複数のパケットルートの各々を介して受信される、決定することと、複数のパケットに関連付けられているシーケンス識別子に少なくとも一部は基づき、複数のパケットルートを介して受信されるパケットストリームに関連付けられている複数のパケットのうちの1つまたは複数のパケットの不正な順序の配送を検出することと、複数のパケットルートを介して受信されるパケットストリームに関連付けられている複数のパケットのうちの1つまたは複数のパケットの不正な順序の配送を再順序付けユニットが検出することに応答して、複数のパケットに関連付けられているシーケンス識別子に基づき、複数のパケットの少なくとも部分集合を再順序付けすることとを行うように動作可能である。
【００２１】
いくつかの実施形態では、再順序付けユニットが通信ネットワークデバイスと第2の通信ネットワークデバイスとの間の複数のパケットルートを介して第2の通信ネットワークデバイスから受信されるパケットストリームに関連付けられている複数のパケットに関連付けられているシーケンス識別子を決定するように動作可能であることは、複数のパケットの各々が第2の通信ネットワークデバイスのハイブリッドアダプテーション層によって挿入される二次シーケンス識別子を含むかどうかを判定することと、複数のパケットの各々が第2の通信ネットワークデバイスのハイブリッドアダプテーション層によって挿入される二次シーケンス識別子を含むと再順序付けユニットが判定することに応答して、複数のパケットの各々に関連付けられている二次シーケンス識別子を決定することと、複数のパケットの各々が二次シーケンス識別子を含まないと再順序付けユニットが判定することに応答して、複数のパケットの各々に関連付けられている一次シーケンス識別子を決定することであって、複数のパケットの各々に関連付けられている一次シーケンス識別子は、第2の通信ネットワークデバイスの上位プロトコル層によって挿入される、一次シーケンス識別子を決定することとを再順序付けユニットが行うように動作可能であることをさらに含む。
【００２２】
いくつかの実施形態では、複数のパケットの各々が第2の通信ネットワークデバイスのハイブリッドアダプテーション層によって挿入される二次シーケンス識別子を含むと再順序付けユニットが判定することに応答して、再順序付けユニットが複数のパケットの各々に関連付けられている二次シーケンス識別子を決定するように動作可能であることは、複数のパケットの各々について、パケットの1つまたは複数のヘッダフィールドから二次シーケンス識別子を読み取ることを行うように再順序付けユニットが動作可能であることをさらに含む。
【００２３】
いくつかの実施形態では、複数のパケットの各々が第2の通信ネットワークデバイスのハイブリッドアダプテーション層によって挿入される二次シーケンス識別子を含むと再順序付けユニットが判定することに応答して、再順序付けユニットが、パケットのヘッダフィールドおよびパケットのペイロードのうちの少なくとも1つに基づき、複数のパケットの各々についてパケットのパケットシグネチャを決定するように動作可能であることは、複数のパケットの各々について、パケットのヘッダフィールドおよびパケットのペイロードのうちの少なくとも1つに基づき、パケットのパケットシグネチャを決定することと、パケットのパケットシグネチャをシーケンスリストパケット内の複数のパケットシグネチャと比較することであって、シーケンスリストパケットは、複数のパケットシグネチャ、およびパケットストリームの複数のパケットの対応する各々に関連付けられている対応する複数のシーケンス識別子を含み、シーケンスリストパケットは、第2の通信ネットワークデバイスから通信ネットワークデバイスに供給される、比較することと、再順序付けユニットがパケットのパケットシグネチャをシーケンスリストパケット内の複数のパケットシグネチャと比較することに基づき、パケットのパケットシグネチャがシーケンスリストパケット内の複数のパケットシグネチャのうちの第1のシグネチャと一致すると判定することと、パケットのパケットシグネチャがシーケンスリストパケット内の複数のパケットシグネチャのうちの第1のシグネチャと一致すると再順序付けユニットが判定することに応答して、複数のパケットシグネチャのうちの第1のシグネチャに対応する複数のシーケンス識別子のうちの第1の識別子をパケットに関連付けられているシーケンス識別子として識別することとを再順序付けユニットが行うように動作可能であることをさらに含む。
【００２４】
いくつかの実施形態では、再順序付けユニットが複数のパケットルートを介して受信されるパケットストリームに関連付けられている複数のパケットのうちの1つまたは複数のパケットの不正な順序の配送を検出するように動作可能であることは、複数のパケットの各々について、パケットに関連付けられているシーケンス識別子が、通信ネットワークデバイスですでに受信されていたパケットストリームに関連付けられている対応する1つまたは複数のすでに受信されているパケットに関連付けられている1つまたは複数のシーケンス識別子と順序が揃っているかどうかを判定することと、パケットに関連付けられているシーケンス識別子が、パケットストリームに関連付けられている対応する1つまたは複数のすでに受信されているパケットに関連付けられている1つまたは複数のシーケンス識別子と順序が揃っていると再順序付けユニットが判定することに応答して、パケットがパケットストリームに関連付けられている1つまたは複数のすでに受信されているパケットと順序が揃っていると判定することと、パケットに関連付けられているシーケンス識別子が、パケットストリームに関連付けられている対応する1つまたは複数のすでに受信されているパケットに関連付けられている1つまたは複数のシーケンス識別子と順序が揃っていないと再順序付けユニットが判定することに応答して、パケットがパケットストリームに関連付けられている1つまたは複数のすでに受信されているパケットに関して不正な順序で届くと判定することとを再順序付けユニットが行うように動作可能であることをさらに含む。
【００２５】
いくつかの実施形態では、再順序付けユニットが複数のパケットルートを介して受信されるパケットストリームに関連付けられている複数のパケットのうちの1つまたは複数のパケットの不正な順序の配送を検出するように動作可能であることは、複数のパケットのうちの1つまたは複数のパケットを再順序付けバッファに格納することを再順序付けユニットが行うように動作可能であることをさらに含み、再順序付けユニットが複数のパケットに関連付けられているシーケンス識別子に基づき、複数のパケットの少なくとも部分集合を再順序付けするように動作可能であることは、複数のパケットの部分集合の各々について、そのパケットを、再順序付けバッファ内にすでに格納されている1つまたは複数のパケットで再順序付けすることを再順序付けユニットが行うように動作可能であることをさらに含む。
【００２６】
いくつかの実施形態では、再順序付けユニットが複数のパケットルートを介して受信されるパケットストリームに関連付けられている複数のパケットのうちの1つまたは複数のパケットの不正な順序の配送を検出するように動作可能であることは、複数のパケットの各々について、パケットに関連付けられているシーケンス識別子に基づき、パケットが通信ネットワークデバイスの上位プロトコル層に処理のために供給された複数のパケットのうちの最後のパケットより順序に関して前の方にあるかどうかを判定することと、パケットが通信ネットワークデバイスの上位プロトコル層に処理のために供給された複数のパケットのうちの最後のパケットより順序に関して前の方にあると再順序付けユニットが判定することに応答して、通信ネットワークデバイスにおいてパケットを破棄することと、パケットが第1の通信ネットワークデバイスの上位プロトコル層に処理のために供給された複数のパケットのうちの最後のパケットより順序に関して後の方にあると再順序付けユニットが判定することに応答して、パケットに関連付けられているシーケンス識別子に基づき、パケットを再順序付けすることとを再順序付けユニットが行うように動作可能であることをさらに含む。
【００２７】
いくつかの実施形態では、1つまたは複数の機械可読記憶媒体に命令が格納され、これらの命令は1つまたは複数のプロセッサによって実行されたときに、1つまたは複数のプロセッサに動作を実行することを行わせ、これらの動作は第1のネットワークデバイスと第2のネットワークデバイスとの間の複数のパケットルートを介して第2のネットワークデバイスから第1のネットワークデバイスにおいて受信されたパケットストリームに関連付けられている複数のパケットに関連付けられているシーケンス識別子を決定するステップであって、複数のパケットの部分集合が複数のパケットルートの各々を介して受信される、ステップと、複数のパケットに関連付けられているシーケンス識別子に少なくとも一部は基づき、複数のパケットルートを介して受信されるパケットストリームに関連付けられている複数のパケットのうちの1つまたは複数のパケットの不正な順序の配送を検出するステップと、複数のパケットルートを介して受信されるパケットストリームに関連付けられている複数のパケットのうちの1つまたは複数のパケットの不正な順序の配送を前記検出する動作に応答して複数のパケットに関連付けられているシーケンス識別子に基づき、複数のパケットの少なくとも部分集合を再順序付けするステップとを含む。
【００２８】
いくつかの実施形態では、第1のネットワークデバイスと第2のネットワークデバイスとの間の複数のパケットルートを介して第2のネットワークデバイスから受信されるパケットストリームに関連付けられている複数のパケットに関連付けられているシーケンス識別子を前記決定する動作は、複数のパケットの各々が第2のネットワークデバイスのハイブリッドアダプテーション層によって挿入される二次シーケンス識別子を含むかどうかを判定するステップと、複数のパケットの各々が第2のネットワークデバイスのハイブリッドアダプテーション層によって挿入される二次シーケンス識別子を含むと判定するステップに応答して、複数のパケットの各々に関連付けられている二次シーケンス識別子を決定するステップと、複数のパケットの各々が二次シーケンス識別子を含まないと判定することに応答して、複数のパケットの各々に関連付けられている一次シーケンス識別子を決定するステップであって、複数のパケットの各々に関連付けられている一次シーケンス識別子は、第2のネットワークデバイスの上位プロトコル層によって挿入される、ステップとをさらに含む。
【００２９】
いくつかの実施形態では、複数のパケットの各々が第2のネットワークデバイスのハイブリッドアダプテーション層によって挿入される二次シーケンス識別子を含むと判定するステップに応答して、複数のパケットの各々に関連付けられている二次シーケンス識別子を前記決定する動作は、複数のパケットの各々について、パケットの1つまたは複数のヘッダフィールドから二次シーケンス識別子を読み取るステップをさらに含む。
【００３０】
いくつかの実施形態では、複数のパケットの各々が第2のネットワークデバイスのハイブリッドアダプテーション層によって挿入される二次シーケンス識別子を含むと判定するステップに応答して、複数のパケットの各々に関連付けられている二次シーケンス識別子を前記決定する動作は、複数のパケットの各々について、パケットのヘッダフィールドおよびパケットのペイロードのうちの少なくとも1つに基づき、パケットのパケットシグネチャを決定するステップと、パケットのパケットシグネチャをシーケンスリストパケット内の複数のパケットシグネチャと比較するステップであって、シーケンスリストパケットは、複数のパケットシグネチャ、およびパケットストリームの複数のパケットの対応する各々に関連付けられている対応する複数のシーケンス識別子を含み、シーケンスリストパケットは、第2のネットワークデバイスから第1のネットワークデバイスに供給される、ステップと、パケットのパケットシグネチャをシーケンスリストパケット内の複数のパケットシグネチャと前記比較する動作に基づき、パケットのパケットシグネチャがシーケンスリストパケット内の複数のパケットシグネチャのうちの第1のシグネチャと一致すると判定するステップと、パケットのパケットシグネチャがシーケンスリストパケット内の複数のパケットシグネチャのうちの第1のシグネチャと一致すると前記判定する動作に応答して、複数のパケットシグネチャのうちの第1のシグネチャに対応する複数のシーケンス識別子のうちの第1の識別子をパケットに関連付けられているシーケンス識別子として識別するステップとをさらに含む。
【００３１】
いくつかの実施形態では、複数のパケットルートを介して受信されるパケットストリームに関連付けられている複数のパケットのうちの1つまたは複数のパケットの不正な順序の配送を前記検出する動作は、複数のパケットの各々について、パケットに関連付けられているシーケンス識別子が、第1のネットワークデバイスですでに受信されていたパケットストリームに関連付けられている対応する1つまたは複数のすでに受信されているパケットに関連付けられている1つまたは複数のシーケンス識別子と順序が揃っているかどうかを判定するステップと、パケットに関連付けられているシーケンス識別子が、パケットストリームに関連付けられている対応する1つまたは複数のすでに受信されているパケットに関連付けられている1つまたは複数のシーケンス識別子と順序が揃っていると判定するステップに応答して、パケットがパケットストリームに関連付けられている1つまたは複数のすでに受信されているパケットと順序が揃っていると判定するステップと、パケットに関連付けられているシーケンス識別子が、パケットストリームに関連付けられている対応する1つまたは複数のすでに受信されているパケットに関連付けられている1つまたは複数のシーケンス識別子と順序が揃っていないと判定するステップに応答して、パケットがパケットストリームに関連付けられている1つまたは複数のすでに受信されているパケットに関して不正な順序で届くと判定するステップとをさらに含む。
【００３２】
本発明の実施形態は、添付図面を参照することによって、より良く理解され、多くの対象、特徴、および利点が当業者にとって明白なものとなり得る。
【図面の簡単な説明】
【００３３】
【図１】ハイブリッド通信ネットワークにおける例示的なパケット再順序付け機構を示すブロック図である。
【図２】複数のネットワーキングインターフェースを実装するハイブリッドデバイスに対する例示的なプロトコルスタックを示す概念図である。
【図３】送信元ハイブリッドデバイスから送信先ハイブリッドデバイスに送信されるパケットに関連付けられる送信順序を示すための例示的な動作を示すフロー図である。
【図４】送信先ハイブリッドデバイスにおいて不正な順序で届くパケットを検出し、再順序付けするための例示的な動作を示すフロー図である。
【図５】図4の続きであり、やはり送信先ハイブリッドデバイスにおいて不正な順序で届くパケットを検出し、再順序付けするための例示的な動作を示す図である。
【図６】ハイブリッド通信ネットワークにおけるパケット再順序付けのための機構を含む電子デバイスの一実施形態のブロック図である。
【発明を実施するための形態】
【００３４】
次の説明は、本発明の主題の技術を具現化する例示的なシステム、方法、技術、命令シーケンス、およびコンピュータプログラム製品を含む。しかし、説明されている実施形態は、これらの具体的詳細がなくても実施され得ることは理解される。たとえば、いくつかの実施形態では、パケット順序付け機構は、ワイヤレスローカルエリアネットワーク(WLAN)デバイス(たとえば、IEEE802.11デバイス)、電力線ネットワークデバイス(たとえば、HomePlug AV)およびイーサネット（登録商標）デバイスを含むハイブリッド通信ネットワーク用に実装され得るけれども、他の実施形態では、パケット順序付け機構は、他の標準/プロトコル(たとえば、WiMAXなど)を実装する他の好適な種類のネットワークデバイスを備えることができるハイブリッド通信ネットワーク内に実装され得る。他の場合には、よく知られている命令インスタンス、プロトコル、構造、および技術は、説明が不明瞭にならないよう、詳細に示されていない。
【００３５】
送信元通信デバイスは、典型的には、順序付けられたパケットシーケンスでデータを送信先通信デバイスに送信する。受信データを解析する一環として、送信先通信デバイスは、典型的には、送信元通信デバイスによって送信されたのと同じ順序でパケットが処理されることを保証する。従来の通信ネットワークは、典型的には、送信元通信デバイスおよび送信先通信デバイスが互いに通信するために単一のインターフェースのみを利用するので、2つの通信デバイス間にそのネットワークを通る単一のルートを構成する。しかし、ハイブリッド通信ネットワークは、典型的には、異なるネットワーク技術および通信媒体にまたがる通信ネットワークセグメント(またはサブネットワーク)の相互接続として形成される。ハイブリッド通信ネットワークは、複数のネットワークインターフェースを有し、異なるネットワーク技術にまたがって動作するように構成されているハイブリッドデバイスを備えることができる。ハイブリッドデバイスは、複数のネットワークインターフェースのうちのどれか1つのインターフェースを使用してハイブリッド通信ネットワークを介してパケットを送信/受信することができる。その結果、送信元ハイブリッドデバイスと送信先ハイブリッドデバイスとの間に複数のルートが存在し得る。たとえば、送信元ハイブリッドデバイスおよび送信先ハイブリッドデバイスがそれぞれ3つのネットワークインターフェースを備えている場合、送信元ハイブリッドデバイスと送信先ハイブリッドデバイスとの間に少なくとも9つのルートが存在し得る。ハイブリッド通信ネットワークは、送信元ハイブリッドデバイスと送信先ハイブリッドデバイスとの間の複数のルートを構成することができるという理由により、および送信元ハイブリッドデバイスは、複数のネットワークインターフェース(および複数のパケットルート)を同時に使用して同じパケットストリームに関連付けられているパケットを送信することができるという理由により、1つまたは複数のパケットが送信先ハイブリッドデバイスに不正な順序で届く可能性がある。パケットが不正な順序で届くと、送信先ハイブリッドデバイスの上位プロトコル層またはアプリケーションの動作に混乱が生じることがある。不正な順序で届くパケットを管理するための既存の技術は、典型的には、単一のネットワークインターフェースを備える従来の通信デバイス、通信デバイス間に単一のルートのみを構成する従来の通信ネットワーク、または複数のルートが利用可能であっても単一のルートしか使用しない通信デバイスに対して最適化される。不正な順序で届くパケットを管理するためのいくつかのプロトコルにおいて、不正な順序でパケットが届くとそれがきっかけとなって、送信元デバイスに輻輳制御が行われ、次いで、その結果、輻輳制御のスロットリング機構によりスループットが低下し得る。さらに、送信先ハイブリッドデバイスによって採用されているいくつかの通信プロトコル(たとえば、ユーザデータグラムプロトコル(UDP))は、組み込みパケット再順序付け機構を備えていない場合がある。送信先ハイブリッドデバイスで不正な順序で届くパケットを管理するための信頼できる機構が存在しないと、ハイブリッドデバイスのパフォーマンスおよび���ループットの低下につながり得る。
【００３６】
いくつかの実施形態では、ハイブリッドデバイスは、複数のルートを使用してパケットのストリームを配送する結果生じるパケットが不正な順序で届くのを管理するための機構を実装することができる。一実施形態では、送信元ハイブリッドデバイスは、送信先ハイブリッドデバイスに送信されるようにスケジュールされている各パケットに関連付けられているシーケンス識別子を指示することができる。送信元ハイブリッドデバイスは、送信されるようにスケジュールされているパケットの各々に関連付けられているパケットストリームを決定することもできる。パケットストリームに基づき、送信元ハイブリッドデバイスは、パケットを送信する際に辿る複数のパケットルートから2つ以上のパケットルートを決定することができる。送信元ハイブリッドデバイスは、同じパケットストリームに関連付けられているパケットを送信するために複数のパケットルート間をアクティブに切り替えることができる。パケットを受信することに応答して、送信先ハイブリッドデバイスは、同じパケットストリームに関連付けられていて、複数のパケットルートを介して受信されたパケットを識別することができる。送信先ハイブリッドデバイスは、受信パケットに関連付けられているシーケンス識別子およびすでに受信されているパケット(同じパケットストリームに属している)に関連付けられているシーケンス識別子を使用して受信パケットが不正な順序で届くかどうかを判定することができる。シーケンス識別子に基づき、送信先ハイブリッドデバイスは、パケットストリームに関連付けられているパケットを再順序付けし、その後の処理のために適切な順序でパケットを放出することができる。本明細書で説明されているように、パケットの順序を示し、シーケンス識別子に基づき、不正な順序で届くパケットを再順序付けするためこれらの機構および他の機構は、送信先ハイブリッドデバイスが複数のパケットルートを使用して同じパケットストリームに関連付けられているパケットを送信する結果生じるパケットが不正な順序で届くのを管理することを可能にし得る。
【００３７】
図1は、ハイブリッド通信ネットワーク100における例示的なパケット再順序付け機構を示すブロック図である。ハイブリッド通信ネットワーク100は、ハイブリッドデバイス102および112、ならびに転送デバイス120および122を備える。ハイブリッドデバイス102は、送信機ユニット104および受信機ユニット106を備える。送信機ユニット104は、シーケンス指示ユニット108およびルーティングユニット110を備える。ハイブリッドデバイス112は、送信機ユニット114および受信機ユニット115も備える。受信機ユニット115は、再順序付けユニット116および再順序付けバッファ118を備える。図1に図示されていないけれども、ハイブリッドデバイス102の受信機ユニット106は、再順序付けユニットおよび再順序付けバッファも備えることができる。同様に、図1に図示されていないけれども、ハイブリッドデバイス112の送信機ユニット114は、シーケンス指示ユニットおよびルーティングユニットも備えることができる。転送デバイス120および122は、従来の(レガシーとも称される)通信デバイスまたはハイブリッド通信デバイスであってもよい。いくつかの実装形態では、ハイブリッドデバイス102および110は、複数のネットワークインターフェースを備えることができ、それぞれのネットワークインターフェースはハイブリッドデバイスを通信ネットワークの異なるセグメント(本明細書では通信ネットワークセグメントまたはネットワークセグメントを称する)に接続する。たとえば、ハイブリッドデバイス102および110は、ハイブリッドデバイスが電力線通信ネットワークセグメント、イーサネット（登録商標）、およびWLANにそれぞれ接続することを可能にする3つのネットワークインターフェース(たとえば、電力線インターフェース、イーサネット（登録商標）インターフェース、およびWLANインターフェース)を各々備えることができる。
【００３８】
一実装形態において、図2に示されているように、ハイブリッドデバイス102および110のネットワーキング機能は、国際標準化機構(ISO)開放型システム間相互接続(OSI)参照モデルと整合している「階層化」アプローチを使用していくつかのサブ機能に分割され得る。ネットワーキングプロトコル層の集合は、「プロトコルスタック」と称され得る。図2は、複数のネットワーキングインターフェースを実装するハイブリッドデバイスに対する例示的なプロトコルスタック200を示している。図2のプロトコルスタックは、送信元ハイブリッドデバイス102に関して説明されるけれども、送信先ハイブリッドデバイス112は、図2に示されているのと同じ(または類似の)プロトコルスタックを実装することもできることに留意されたい。図2の例示的なプロトコルスタック200では、ハイブリッドデバイスは、2つの通信インターフェースに関連付けられている。したがって、プロトコルスタック200は、2つの物理(PHY)層202および204ならびに対応する2つの媒体アクセス制御(MAC)層206および208を含む。MAC層206およびPHY層202は、ハイブリッドデバイスを一方の通信ネットワークセグメント222(たとえば、イーサネット（登録商標）)に結合する。同様に、MAC層208およびPHY層204は、ハイブリッドデバイスを別の通信ネットワークセグメント224(たとえば、電力線通信ネットワーク)に結合する。通信ネットワークセグメント222および204は各々、ハイブリッド通信ネットワークなどの、拡張ブリッジ接続ネットワークの一部とすることができることに留意されたい。プロトコルスタック200は、ネットワーク層212を含む。ネットワーク層212では、インターネットプロトコルバージョン4(IPv4)通信プロトコル、インターネットプロトコルバージョン6(IPv6)通信プロトコル、AppleTalk(登録商標)通信プロトコル、または他の好適なネットワーク層プロトコルを実装することができる。プロトコルスタック200は、ネットワーク層212とMAC層206および208との間に「ハイブリッドアダプテーション層」210も備える。一例において、図2に示されているように、ハイブリッドアダプテーション層210は、シーケンス指示ユニット108、ルーティングユニット110、再順序付けユニット116、ならびにパケットの送信順序を示すための、および不正な順序で届くパケットを再順序付けするための他の機能を備えることができる。図1、および図3〜図5において以下でさらに説明されるようにシーケンス指示ユニット108は、ハイブリッドデバイスからパケットが送信される(または送信されることになる)シーケンスを決定し、指示することができる。ルーティングユニット110は、パケットストリームに関連付けられているパケットを送信先デバイスに送信する際に辿る2つ以上のパケットルートを決定することができる。パケットストリームは、同じアプリケーションに関連付けられ、同じ通信接続またはセッションの一部であるデータを搬送するパケットのシーケンスを含み得る。ハイブリッド通信ネットワーク100を介してパケット(パケットストリームに関連付けられている)を受信することに応答して、再順序付けユニット116は、受信パケットに関連付けられているシーケンス番号を決定するための動作と、パケットが不正な順序でハイブリッドデバイスに届くのを検出するための動作と、不正な順序で届くパケッ���を(必要ならば)再順序付けするための動作を実行することができる。プロトコルスタック200は、ネットワーク層212にまたがって動作するトランスポート層214も備える。トランスポート層214は、ハイブリッドデバイスによって実装されているネットワーク層プロトコルに応じて、伝送制御プロトコル(TCP)、ユーザデータグラムプロトコル(UDP)、または他の好適なトランスポート層プロトコルを備えることができる。プロトコルスタック200は、他のデバイスとの通信に他のプロトコル層202〜214を利用する3つのアプリケーション216、218、および220も示している。
【００３９】
いくつかの実装形態では、アプリケーション層(アプリケーション216、218、および220を含む)、トランスポート層214、およびネットワーク層212は、「上位プロトコル層」と総称することができる。MAC層206および208ならびにPHY層202および204は、「下位プロトコル層」と総称することができる。ハイブリッドアダプテーション層210は、ハイブリッドデバイスにおける、単一の組の上位プロトコル層(たとえば、実装された各ネットワークプロトコルタイプに対する単一のネットワーク層212、および実装された各トランスポートプロトコルタイプに対する単一のトランスポート層214)を用いた通信ではあるものの、複数のネットワーキングインターフェース(たとえば、複数のPHY層とMAC層)を用いた通信を管理するための機能を実施することができる。一実装形態において、ハイブリッドアダプテーション層210は、基礎となるMAC層206および208とインターフェースして、ネットワーキングリソースを管理し、プロトコルスタックの上位層に透過的な高速パケットルート変更を行うことができる。ハイブリッドアダプテーション層210は、送信元ハイブリッドデバイス102が単一のMAC層および対応する単一のPHY層のみを含むかのように上位プロトコル層を動作させることもできる。図2に示されているプロトコルスタック200は、ハイブリッドデバイス102および110のアーキテクチャの一実施形態を示していることに留意されたい。他の実装形態では、ハイブリッドデバイス102および110は、実装されることも可能であるネットワーキング技術およびオプションのプロトコルに応じて、他の好適な層または下位層を備えることができる。たとえば、いくつかのネットワーキング技術では、MAC層の上にイーサネット（登録商標）コンバージェンス層を実装することができる。別の例として、いくつかのネットワーキング技術は、論理リンク制御(LLC)プロトコル層を含むことができる。さらに、1つまたは複数の他の下位層は、本明細書において図1、図3〜図6で説明されている機能を実行することができる。図1を再び参照すると、ハイブリッドデバイス102(「送信元ハイブリッドデバイス」)は、段階Aで説明されるように、パケットのシーケンスの指示を送り、それにより、パケット再順序付け
(段階B〜Dで説明されている)をハイブリッドデバイス112(送信先ハイブリッドデバイス)において実行することができる。
【００４０】
段階Aにおいて、送信元ハイブリッドデバイス102のシーケンス指示ユニット108は、2つ以上のパケットルートを介して送信先ハイブリッドデバイス112に送信されるパケットストリームに関連付けられている複数のパケットの各々にシーケンス識別子を挿入することを決定する。シーケンス識別子は、タイムスタンプ、シーケンス番号、または別のタイプのシーケンス識別子とすることができる。いくつかの実装形態では、送信元ハイブリッドデバイス102の上位プロトコル層(たとえば、トランスポートプロトコル層214)は、パケットをハイブリッドアダプテーション層210に供給する前に、送信先ハイブリッドデバイス112に送信されるようにスケジュールされているパケット内にシーケンス識別子を挿入することができる。上位プロトコル層によって挿入されるシーケンス識別子は、本明細書において、「一次シーケンス識別子」と称される。段階Aにおいて、ハイブリッドアダプテーション層210のシーケンス指示ユニット108は、一次シーケンス識別子と異なる、シーケンス識別子(たとえば、ハイブリッドアダプテーション層210によって生成される)をパケットの各々に追加するかどうか決定することができる。ハイブリッドアダプテーション層210(すなわち、シーケンス指示ユニット108)によって生成され、挿入されるシーケンス識別子は、本明細書において、「二次シーケンス識別子」と称される。図3を参照しつつ次にさらに説明されるように、シーケンス指示ユニット108は、パケットが一次シーケンス識別子を含むかどうか、およびパケットに関連付けられている二次シーケンス識別子を追加するかどうかを決定することができる。
【００４１】
いくつかの実装形態では、ハイブリッド通信ネットワーク100は、送信元ハイブリッドデバイス102と送信先ハイブリッドデバイス112との間に複数のパケットルートを用意することができる。図1の例に示されているように、ハイブリッド通信ネットワーク100は、転送デバイス120および122を介して送信元ハイブリッドデバイス102と送信先ハイブリッドデバイス112との間に3つのパケットルートを用意することができる。パケットルート124に沿ってパケットを送信するために、送信元ハイブリッドデバイス102は、パケットを転送デバイス120に送信し、次いで、これはパケットを送信先ハイブリッドデバイス112に送信する。パケットルート126に沿ってパケットを送信するために、送信元ハイブリッドデバイス102は、パケットを転送デバイス122に送信し、次いで、これはパケットを送信先ハイブリッドデバイス112に送信する。パケットルート128に沿ってパケットを送信するために、送信元ハイブリッドデバイス102は、パケットを転送デバイス120に送信する。転送デバイス120は、その後、パケットを送信先ハイブリッドデバイス112に送信する転送デバイス122にパケットを送信する。いくつかの実装形態では、図1に示されているように、パケットルート124、126、および128は、送信元ハイブリッドデバイス102から送信先ハイブリッドデバイス112にそのパケットのルートを選択する転送デバイス(および他の中間通信デバイス)について異なり得る。他の実装形態では、パケットルート124、126、および128は、パケットの送信元となるネットワークインターフェース(「送信元通信インターフェース」)、パケットが届くネットワークインターフェース(「送信先通信インターフェース」)、および/またはパケットが送信される際に経由する通信ネットワークセグメントについても異なり得る。図3でさらに説明されるように、いくつかの実装形態では、ルーティングユニット110は、パケットルートの各々に関連付けられているルート特性(たとえば、トラヒック、輻輳、パフォーマンスなど)に少なくとも一部は基づき、特定のパケットストリームに関連付けられているパケットを送信するために複数のパケットルート間を切り替えることができる。別の実装形態では、ルーティングユニット110
は、送信されるパケットに関連付けられているパケットストリームに少なくとも一部は基づき、送信先ハイブリッドデバイス112にパケットを送信するために2つ以上のパケットルートを選択することができる。シーケンス指示ユニット108が、送信されるようにスケジュールされているパケットに二次シーケンス識別子を挿入した後、ルーティングユニット110は、選択されたパケットルートを介して(たとえば、パケットの送信を2つ以上の選択されているパケットルートの間で変えることによって)送信先ハイブリッドデバイス112にパケットを送信することができる。送信先ハイブリッドデバイス112は、パケットを受信し、段階B〜Dにおいて以下で説明されている動作を実行してシーケンス識別子に少なくとも一部は基づき、受信パケットを(必要ならば)再順序付けすることができる。
【００４２】
段階Bにおいて、送信先ハイブリッドデバイス112の再順序付けユニット116は、複数の受信パケットに関連付けられているシーケンス識別子に少なくとも一部は基づき、2つ以上のパケットルートを介して送信元ハイブリッドデバイスから受信されるパケットストリームに関連付けられている複数のパケットのうちの1つまたは複数のパケットの不正な順序の配送を検出する。2つ以上のパケットルートを介して送信元ハイブリッドデバイス102から複数のパケットを受信したことに応答して、再順序付けユニット116は、各受信パケットに関連付けられているシーケンス識別子を読み取ることができる。いくつかの実装形態では、再順序付けユニット116は、受信パケットに関連付けられているシーケンス識別子を同じパケットストリームに関連付けられている1つまたは複数のすでに受信されているパケットに関連付けられているシーケンス識別子(たとえば、最後に受信されたパケットに関連付けられているシーケンス識別子)と比較することができる。したがって、再順序付けユニット116は、受信パケットがすでに受信されているパケットに関して不正な順序で届いているかどうか、および再順序付け動作が実行されるべきかどうかを判定することができる。たとえば、特定のパケットストリームについて、再順序付けユニット116は、シーケンス番号「7」を持つパケットを受信した後に、シーケンス番号「5」を持つパケットを受信することがある。その結果、再順序付けユニット116は、受信パケット(シーケンス番号5を持つ)は、すでに受信されているパケットと順序が揃っていないと判定することができる。
【００４３】
段階Cにおいて、再順序付けユニット116は、2つ以上のパケットルートを介して受信されるパケットストリームに関連付けられている複数のパケットのうちの1つまたは複数のパケットの不正な順序の配送を検出するステップに応答して複数のパケットに関連付けられているシーケンス識別子に基づき、複数のパケットの少なくとも部分集合を再順序付けする。いくつかの実装形態では、同じパケットストリームのすでに受信されているパケットと順序が揃っていない各受信パケットについて、再順序付けユニット116は、シーケンス番号に基づき、正しい順序を再確立することができるまで再順序付けバッファ118ユニット内に受信パケットを格納しておく。再順序付けユニット116は、任意の好適な再順序付け技術を実行して、受信パケットおよび再順序付けバッファ118内の1つまたは複数のすでに受信されているパケットを再順序付けすることができる。いくつかの実装形態において、図4〜図5においてさらに説明されるように、受信パケットがすでに受信されているパケットと順序が揃っていないと判定することに応答して、再順序付けユニット116は、シーケンス内の後続のパケットが上位プロトコル層によって処理のために供給された後にパケットが受信されたかどうかを判定することができる。もしそうであれば、再順序付けユニット116は、受信パケットを破棄するものとしてもよい。そうでない場合、再順序付けユニット116は、再順序付けバッファ118内にパケットを格納し、再順序付けバッファ118内のパケットを再順序付けすることができる。
【００４４】
段階Dにおいて、再順序付けユニット116は、その後の処理のために受信パケットを供給することを決定することに応答して再順序付けバッファ118内に格納されている受信パケットの各々を放出する。図5でさらに説明されるように、再順序付けユニット116は、1つまたは複数のパケットが再順序付けバッファ118内で正しい順序にあると判定したことに応答して、所定の時間間隔が経過した後、または再順序付けバッファ118が容量の閾値に達したときに上位プロトコル層によってその後の処理のために1つまたは複数のパケットを送ることができる。
【００４５】
図3は、送信元ハイブリッドデバイスから送信先ハイブリッドデバイスに送信されるパケットに関連付けられる送信順序を示すための例示的な動作を示すフロー図(「フロー」)300である。フロー300は、図3のブロック302から始まる。
【００４６】
ブロック302において、送信元ハイブリッドデバイスは、複数のパケットを送信先ハイブリッドデバイスに送信することを決定する。図1の例を参照すると、送信元ハイブリッドデバイス102は、複数のパケットを送信先ハイブリッドデバイス112に送信することを決定することができることがわかる。フローは、ブロック304に続く。
【００４７】
ブロック304で、送信先ハイブリッドデバイスに送信されるようにスケジュールされた複数のパケットに二次シーケンス識別子を追加するかどうかが決定される。上で説明されているように、いくつかの実装形態では、送信元ハイブリッドデバイス102の上位プロトコル層(たとえば、トランスポートプロトコル層214)は、パケットをハイブリッドアダプテーション層210に供給する前に、送信先ハイブリッドデバイス112に送信されるようにスケジュールされている複数のパケットの各々の中に一次シーケンス識別子を挿入することができる。ブロック304で、ハイブリッドアダプテーション層210のシーケンス指示ユニット108は、複数のパケットの各々に関連付けられている二次シーケンス識別子を挿入するかどうかを決定することができる。いくつかの実装形態では、シーケンス指示ユニット108は、パケットがすでに一次シーケンス識別子(上位プロトコル層によってすでに挿入されている)を含んでいるかどうかを決定することができる。たとえば、送信元ハイブリッドデバイス102が、TCPを実装している場合、TCPトランスポート層214は、パケット内に32バイト一次シーケンス番号を挿入することができる。シーケンス指示ユニット108が、パケットが一次シーケンス識別子を含むと判定した場合、シーケンス指示ユニット108は、パケット内に二次シーケンス識別子を挿入しないことを決定することができる。別の例として、送信元ハイブリッドデバイス102が、UDPを実装している場合、UDPトランスポート層214は、パケット内に一次シーケンス番号を挿入し得ない。シーケンス指示ユニット108が、複数のパケットが一次シーケンス識別子を含まないと判定した場合、シーケンス指示ユニット108は、パケット内に二次シーケンス識別子を挿入することを決定することができる。
【００４８】
いくつかの実施形態では、シーケンス指示ユニット108は、任意の好適な分類技術を使用して送信されることをスケジュールされている複数のパケットに関連付けられているパケットストリームを決定し、したがって、パケット内にシーケンス識別子を挿入するかどうか、パケット内にどのようなタイプのシーケンス識別子を挿入するか、およびパケット内に挿入すべきシーケンス識別子の値を決定することができる。たとえば、送信のスケジュールがなされている複数のパケットの解析結果に基づき、シーケンス指示ユニット108は、送信されるようにスケジュールされたパケットの部分集合が第1のパケットストリーム(たとえば、第1のアプリケーションによって生成される)の一部であること、および残りのパケットが第2のパケットストリーム(たとえば、第2のアプリケーションによって生成される)の一部であることを決定することができる。シーケンス指示ユニット108は、第1のアプリケーションがTCPを使用すること(一次シーケンス識別子を挿入する)、および第2のアプリケーションがUDPを使用すること(一次シーケンス識別子を挿入しない)を決定することもできる。したがって、シーケンス指示ユニット108は、第1のパケットストリームの一部であるパケットに二次シーケンス識別子を追加しないことを決定することができ、第2のパケットストリームの一部であるパケットに二次シーケンス識別子を追加することを決定することができる。二次シーケンス識別子をパケットに追加することを決定した場合、フローはブロック306に続く。そうでなければ、二次シーケンス識別子をパケットに追加しないことを決定した場合、送信元ハイブリッドデバイス102は、送信先ハイブリッドデバイス112に頼り、一次シーケンス識別子を使用して不正な順序のパケット配送を検出し、不正な順序のパケットを再順序付けすることができ、フローはブロック308に続く。
【００４９】
ブロック306で、送信元ハイブリッドデバイスは、二次シーケンス識別子を送信先ハイブリッドデバイスに送信されることをスケジュールされているパケットストリームの複数のパケットの中に挿入する。いくつかの実装形態では、シーケンス指示ユニット108は、適切な二次シーケンス番号をパケットストリームに関連付けられているパケットとの各々の中に挿入することができる。シーケンス指示ユニット108は、パケットのシーケンス番号フィールドを「1」だけ、パケットに含まれるバイト数だけ、または別の好適な増分値だけ増分することができる(送信される各々のパケットに対して)。別の実装形態では、シーケンス指示ユニット108は、適切な二次タイムスタンプをパケットストリームに関連付けられているパケットとの各々の中に挿入することができる(またはタイムスタンプとシーケンス番号の両方)。シーケンス指示ユニット108は、送信されるようにスケジュールされているパケットに二次シーケンス識別子を挿入するために様々な技術を使用することができる。たとえば、シーケンス指示ユニット108は、パケット順序、所定のEtherType値に基づく新しいタグ、パケットヘッダ内の予備/未使用パケットフィールド、パケットヘッダ内の新しいパケットフィールド、または他の好適な技術を示すために予約されている特別な仮想ローカルエリアネットワーク(VLAN)タグ符号化を使用して二次シーケンス識別子をパケット内に挿入することができる。特に、VLANタグは、二次シーケンス識別子を挿入するために使用することができ、VLANタグは、二次シーケンス識別子を符号化するために使用することができ、特別な予約済み符号化は、他の情報とともに二次シーケンス識別子を符号化するために使用され得る(たとえば、VLAN識別子またはストリーム識別情報)。
【００５０】
いくつかの実装形態では、シーケンス指示ユニット108は、パケットシグネチャまたは他のパケット分類情報の指示、および送信元ハイブリッドデバイス102によってパケットが送信される順序を定期的に(たとえば、個別のシーケンスリストパケットに入れて)送信することができる。一例において、シーケンスリストパケットは、パケットシグネチャ、および送信されるようにスケジュールされている複数のパケット(たとえば、パケットストリームの所定の数のパケット)に関連付けられている対応する二次シーケンス識別子を含むことができる。別の例では、シーケンスリストパケットは、パケットシグネチャ、およびすでに送信されている複数のパケット(パケットストリームの)に関連付けられている対応する一次シーケンス識別子を含むことができる。シーケンス指示ユニット108は、任意の好適な技術を使用してパケットシグネチャを決定することができる。たとえば、巡回冗長検査(CRC)計算法(またはパケットルートから独立している別の好適な計算方法)が、パケットシグネチャ(たとえば、CRC値)を生成するために使用され得る。図4〜図5において以下でさらに説明されるように送信先ハイブリッドデバイス112は、このシーケンスリストパケットを使用して、パケットを編成し処理すべき正しい順序を決定することができる。
【００５１】
いくつかの実装形態では、パケットが送信される(または送信された)シーケンスを示すことに加えて、シーケンス指示ユニット108は、パケットに関連付けられているパケットストリームの指示を送信することもできる(たとえば、パケットの一部として、シーケンスリストパケットに入れて、または別の異なるパケットに入れて)。パケットに関連付けられているストリーム識別情報は、特別な予約済みVLANタグ符号化、所定のEtherType値に基づく新しいタグ、予備/予約済みパケットヘッダフィールド、および/またはパケット内の新しいパケットヘッダフィールドを使用して追加され得る。いくつかの実装形態において、パケットの第1の送信およびパケットの後続の再送に関連付けられているシーケンス識別子は、同じであってもよく、シーケンス識別子は、相対的送信シーケンスを示し得る。フローは、ブロック308に続く。
【００５２】
ブロック308で、同じパケットストリームに関連付けられている複数のパケットを送信する際に辿る2つ以上のパケットルートが決定される。シーケンス指示ユニット108が二次シーケンス識別子をパケットに挿入することに応答して、フロー300はブロック306からブロック308に移動する。フロー300は、二次シーケンス識別子がパケット内に挿入されるべきでないと判定したことに応答してブロック304からブロック308にも移動する(たとえば、一次シーケンス識別子が利用可能であるので)。いくつかの実装形態では、ルーティングユニット110は、パケットルートの各々に関連付けられているルート特性(たとえば、トラヒック、輻輳、パフォーマンスなど)に少なくとも一部は基づき、特定のパケットストリームに関連付けられているパケットを送信するために複数のパケットルート間を切り替えることができる。複数のパケットルートを介して単一のパケットストリームに関連付けられているパケットを送信することで、総スループットを高め、配送待ち時間を短縮し、静的または動的ネットワークリンク負荷分散を行って利用可能なネットワークリソースの効率的使用を可能にすることができる。たとえば、ルーティングユニット110は、パケットルート124、126、および128が第1のパケットストリームに関連付けられているパケットを送信するために使用できると決定することができる。ルーティングユニット110は、パケットルート124を介してパケットストリームに関連付けられているパケットの1/5を、パケットルート128を介してパケットストリームに関連付けられているパケットの別の1/5を、パケットルート126を介してパケットストリームに関連付けられているパケットの残り3/5を送信することを(たとえば、ルート特性を解析することに基づき)決定することができる。言い換えると、パケットストリームの5パケットを送信先ハイブリッドデバイス112に送信することを決定した後、ルーティングユニット110は、パケットルート124を介して第1のパケットを、パケットルート128を介して第2のパケットを、パケットルート126を介して残り3つのパケットを送信することができる。別の例として、ルーティングユニット110は、パケットルート126の使用とパケットルート128の使用をパケットごとに交
互させることができる。言い換えると、ルーティングユニット110は、パケットルート126に沿って順に、パケット「n」、「n+2」、などを送信し、パケットルート128に沿ってパケット「n+1」、「n+3」などを送信し、パケットストリームに対して最高のスループットを実現することができる。上で説明されているように、パケットルート128に関連付けられている配送待ち時間が、パケットルート126に関連付けられている配送待ち時間より長い場合、パケットルート128に沿って早い時間に送信されたパケットが、パケットルート126に沿って送信されたパケットよりも後に届き、その結果、送信先ハイブリッドデバイス112には不正な順序でパケットが届くことになり得る。フローは、ブロック310に続く。
【００５３】
ブロック310で、複数のパケットが、2つ以上のパケットルートを介して送信先ハイブリッドデバイスに送信される。たとえば、ルーティングユニット110は、ブロック308で選択された適切なパケットルート上で複数のパケットを送信先ハイブリッドデバイス112に送信する(か、または送信ユニットに送信させる)ことができる。ブロック310からのフローは終了する。同じパケットストリームに関連付けられている複数のパケットを受信することに応答して、送信先ハイブリッドデバイスは、図4〜図5において以下で説明されるように、シーケンス識別子に基づき、パケットを(必要ならば)再順序付けすることができる。
【００５４】
図3は、パケットが一次シーケンス識別子を含むかどうかに基づき、二次シーケンス識別子をパケット内に挿入するかどうかを決定するシーケンス指示ユニット108を説明しているけれども、実施形態はそれに限定されない。他の実施形態では、シーケンス指示ユニット108は、パケットが一次シーケンス識別子を含むかどうかに関係なく二次シーケンス識別子をパケットに挿入することができる。これにより、送信元ハイブリッドデバイス102側でパケットの順序を指示し、送信先ハイブリッドデバイス112側でパケットを再順序付けするための動作を簡素化することができる。
【００５５】
図4および図5は、送信先ハイブリッドデバイスにおいて不正な順序で届くパケットを検出し、再順序付けするための例示的な動作を示すフロー図400である。フロー400は、図4のブロック402から始まる。
【００５６】
ブロック402で、送信先ハイブリッドデバイスは、送信元ハイブリッドデバイスによって送信されたパケットを受信する。図1の例を参照すると、送信先ハイブリッドデバイス112の再順序付けユニット116は、パケットルートに沿ってパケットストリームに関連付けられているパケットを(送信元ハイブリッドデバイス102から)受信することができる。いくつかの実装形態では、パケットは、2つ以上のパケットルートを介して送信元ハイブリッドデバイス102から送信先ハイブリッドデバイス112に送信されるパケットストリームに関連付けられている複数のパケットのうちの1つとすることができる。たとえば、パケットストリームに関連付けられている複数のパケットの部分集合が、第1のパケットルートを介して受信され、複数のパケットの残りの部分集合が、第2のパケットルートを介して受信され得る。別の例として、送信元ハイブリッドデバイス102は、パケットごとにパケット送信を交互することができる。送信元ハイブリッドデバイス102は、第1のパケットルートを介してパケットストリームに関連付けられている複数のパケットのうちの第1のパケットを送信し、第2のパケットルート上でパケットストリームに関連付けられている複数のパケットのうちの第2のパケットを送信し、第1のパケットルートを介してパケットストリームで関連付けられている複数のパケットのうちの第3のパケットを送信し、というように続けることができる。フローは、ブロック404に続く。
【００５７】
ブロック404で、受信パケットに関連付けられている二次シーケンス識別子が検出されたかどうかが判定される。たとえば、再順序付けユニット116は、受信パケットが二次シーケンス識別子を含むかどうかを判定することができる。上で説明されているように、いくつかの実装形態では、二次シーケンス識別子は、送信元ハイブリッドデバイス102のハイブリッドアダプテーション層210によってパケットに追加され、シーケンス番号、タイムスタンプ、および/またはパケットに関連付けられている他の好適なシーケンス識別子を含むことができる。いくつかの実装形態では、再順序付けユニット116は、受信パケットに関連付けられている1つまたは複数のヘッダフィールドを読み取り、受信パケットが二次シーケンス識別子を含んでいるかどうかを判定することができる。再順序付けユニット116は、対応する1つまたは複数のパケットに関連付けられている1つまたは複数の二次シーケンス識別子のリストを含むシーケンスリストパケット(図3において上で説明されている)が送信元ハイブリッドデバイス102から受信されたかどうかを判定することもできる。シーケンスリストパケットが、受信された場合、ブロック404において、再順序付けユニット116は、受信パケットに関連付けられている二次シーケンス識別子をシーケンスリストパケットから識別できるかどうかを判定することができる。受信パケットに関連付けられている二次ルーティングシーケンス識別子が検出された場合、フローはブロック408に続く。そうでない場合、フローはブロック406に続く。
【００５８】
ブロック406で、二次シーケンス識別子が検出されない場合、送信元ハイブリッドデバイスの上位プロトコル層によって挿入されたパケットに関連付けられている一次シーケンス識別子が検出される。フロー400は、再順序付けユニット116が、受信パケットが二次シーケンス識別子を含まないと判定した場合にブロック404からブロック406に移動する。いくつかの実装形態では、送信元ハイブリッドデバイス102の上位プロトコル層(従来のプロトコルスタックの)のうちの1つまたは複数-ネットワーク層212、トランスポート層214、アプリケーション216、218、220は、送信されるようスケジュールされているパケット内に一次シーケンス識別子を挿入することができる。たとえば、送信元ハイブリッドデバイス102が、TCPを実装している場合、TCPトランスポート層212は、送信されるようにスケジュールされているパケット内に一次シーケンス番号を挿入することができる。再順序付けユニット116は、受信パケットのヘッダフィールドを「スヌープ」することができ、および/または他のパケット検査機構を使用して受信パケットに関連付けられている一次シーケンス識別子を決定することができる。再順序付けユニット116が受信パケットに関連付けられている一次シーケンス識別子を決定した後、フローはブロック410に続く。
【００５９】
ブロック408で、送信元ハイブリッドデバイスのハイブリッドアダプテーション層によって挿入されたパケットに関連付けられている二次シーケンス識別子が決定される。フロー400は、再順序付けユニット116が、受信パケットが二次シーケンス識別子を含むと判定した場合にブロック404からブロック408に移動する。図3において上で説明されているように、送信元ハイブリッドデバイス102のハイブリッドアダプテーション層210は、パケットに関連付けられているパケットストリームに応じて送信されるようにスケジュールされているパケット内に二次シーケンス識別子を挿入することができる。一実装形態において、再順序付けユニット116は、受信パケットの適切なヘッダフィールドを読み取り、受信パケットに関連付けられている二次シーケンス識別子を決定することができる。別の実装形態では、再順序付けユニット116は、すでに受信されているシーケンスリストパケットを使用して、受信パケットに関連付けられている二次シーケンス識別子を決定することができる。この実装形態では、再順序付けユニット116は、パケットシグネチャ(たとえば、CRC値)を計算し、シーケンスリストパケットからパケットシグネチャを識別し、シーケンスリストパケット内の識別されたパケットシグネチャに対応する二次シーケンス識別子を読み取ることができる。別の実装形態では、再順序付けユニット116は、再順序付けバッファ118内に受信パケットを一時的に格納し、送信元ハイブリッドデバイス102からシーケンスリストパケットを受信するのを待ち、シーケンスリストパケットを受信したことに応答して受信パケットに関連付けられている二次シーケンス識別子を決定することができる。再順序付けユニット116が受信パケットに関連付けられている二次シーケンス識別子を決定した後、フローはブロック410に続く。
【００６０】
ブロック410で、パケットに関連付けられているシーケンス識別子に基づき、不正な順序のパケット配送が送信先ハイブリッドデバイスにおいて検出されたかどうかが判定される。いくつかの実装形態では、受信機の再順序付けユニット116は、受信パケットをパケットストリームにソートすることができる(たとえば、受信パケットに関連付けられているヘッダ内の1つまたは複数のフィールドに基づく、シーケンスリストパケット内の情報に基づく、など)。再順序付けユニット116は、パケットヘッダ内のパケット分類技術および/または情報(たとえば、送信元ハイブリッドデバイス102によって挿入される)を使用して特定のパケットストリームに属すパケットを識別することができる。次いで、再順序付けユニット116は、ブロック402で受信したパケットと同じパケットストリームに属す1つまたは複数のすでに受信されているパケットのシーケンス識別子(たとえば、一次シーケンス識別子または二次シーケンス識別子)を決定することができる。いくつかの実装形態では、再順序付けユニット116は、パケットストリームに関連付けられている最後に受信したパケットに関連付けられているシーケンス識別子を(たとえば、所定のメモリロケーション内で)追跡することができる。別の実装形態では、受信パケットに関連付けられているシーケンス識別子を決定することに応答して、再順序付けユニット116は再順序付けバッファ118を調べて、再順序付けバッファ118内に格納されているパケットに関連付けられているシーケンス識別子を決定することができる。たとえば、再順序付けユニット116は、受信パケットのシーケンス番号が50であると判定することができる。再順序付けユニット116は、最後の受信パケットのシーケンス番号が45であったと判定することができる。したがって、再順序付けユニット116は、受信パケットが送信先ハイブリッドデバイス112に不正な順序で、または所定の順序に従うことなく配送された(「不正な順序のパケット配送」)と判定することができる。あるいは、再順序付けユニット116が、最後に受信したパケットのシーケンス番号が49であったと判定した場合、再順序付けユニット116は、不正な順序のパケット配送が検出されなかったと判定することができる。受信パケットに関連付けられているシーケンス
識別子が予期されているシーケンス番号より大きい場合(順序について最後に受信したパケットに基づき)、不正な順序のパケット配送が検出され、フローは図5のブロック412に続く。そうでない場合、フローは図5のブロック422に続く。
【００６１】
図5のブロック412において、受信パケットが送信先ハイブリッドデバイス112での処理のため送られている最後のパケットより順序に関して前の方にあるかどうかが判定される。フロー400は、再順序付けユニット116が、不正な順序のパケット配送が検出されたと判定した場合に図4のブロック410から図5ブロック412に移動する。ブロック412で、再順序付けユニット116は、上位プロトコル層による処理のために供給された最後のパケット(ブロック402で受信されたパケットと同じパケットストリームに属す)に関連付けられているシーケンス識別子を決定することができる。次いで、再順序付けユニット116は、受信パケットのシーケンス識別子が、処理のために供給された最後のパケットのシーケンス識別子より小さいかどうかを判定することができる。たとえば、再順序付けユニット116は、受信パケットのタイムスタンプが16:20:00であると判定し得る。再順序付けユニット116は、再順序付けバッファ118内に格納されているパケットに関連付けられているタイムスタンプおよび/または処理のために供給された最後のパケットのタイムスタンプの範囲を決定することもできる。処理のために供給された最後のパケットのタイムスタンプが、16:25:00であった(すなわち、現在受信されているパケットのタイムスタンプより大きい)場合、再順序付けユニット116は、受信パケットが送信先ハイブリッドデバイス112における処理のために供給された最後のパケットより順序に関して前の方にあると判定することができる。その結果、フローはブロック414に続く。しかし、処理のために供給された最後のパケットのタイムスタンプが、16:19:00であった(すなわち、現在受信されているパケットのタイムスタンプより小さい)場合、再順序付けユニット116は、受信パケットが処理のために供給された最後のパケットより順序に関して後の方にあると判定することができる。その結果、フローはブロック416に続く。
【００６２】
ブロック414で、受信パケットが破棄される。フロー400は、再順序付けユニット116が、シーケンス識別子に基づき、受信パケットが送信先ハイブリッドデバイス112における処理のため供給された最後のパケットより順序に関して前の方にあると判定した場合にブロック412からブロック414に移動する。たとえば、再順序付けユニット116は、上位プロトコル層に受信パケットを送らないことを決定することができ、受信パケットより順序に関して後の方にあるパケットが送信先ハイブリッドデバイス112に処理のためすでに送られている場合にパケット破棄することができる。別の例として、再順序付けユニット116は、パケットを受信するための所定の時間間隔が経過した後にパケットが受信された場合にパケットを破棄することができる。フローは、ブロック418に続く。
【００６３】
ブロック416で、受信パケットは、再順序付けバッファ内に格納され、受信パケットは、シーケンス識別子に従って再順序付けされる。フロー400は、再順序付けユニット116が、受信パケットが処理のために供給された最後のパケットより順序に関して後の方にあると判定した場合にブロック412からブロック416に移動する。再順序付けユニット116は、再順序付けバッファ118内に受信パケットを格納することができる。いくつかの実装形態では、再順序付けバッファ118のサイズは、往復遅延時間、送信元ハイブリッドデバイス102および送信先ハイブリッドデバイス112によって採用されている通信プロトコルが複数回の再送試行をサポートしている場合に複数の往復遅延時間、順序に関して最後のパケットを受信してから不正な順序で届くパケットを受信するまでの間の最大許容遅延時間、再送遅延時間、ハイブリッド通信ネットワーク100内の予想遅延時間、および他のそのような要因に少なくとも一部は基づき、動的に(または静的に)構成され得る。たとえば、最大許容往復遅延時間が100msであり、各パケットの最大長が20msである場合、再順序付けバッファ118のサイズ(たとえば、再順序付けバッファ118内に格納することができるパケットの数)は、順序に関して次のパケットが送信先ハイブリッドデバイス112に届くのを待ちながら少なくとも4つの不正な順序で届くパケットが再順序付けバッファ内に格納されるように選択され得る。
【００６４】
一実装形態において、再順序付けユニット116は、同じパケットストリームに関連付けられているパケットが上位プロトコル層およびアプリケーションに順序正しく(またはほぼ順序正しく)配送されるようにシーケンス識別子に基づき、再順序付けバッファ118内のパケットを再順序付けすることができる。たとえば、再順序付けユニット116は、受信パケットのシーケンス番号が50であり、再順序付けバッファ118がシーケンス番号47、48、52、および54を持つパケットを含むと判定することができる。したがって、再順序付けユニット116は、シーケンス識別子48を持つ受信パケットとシーケンス識別子52を持つ受信パケットとの間にシーケンス番号50を持つ受信パケットを挿入することによってパケットを再順序付けすることができる。別の実装形態では、再順序付けユニット116は、パケットを再順序付けバッファ118内に、パケットが受信された順序で格納することができ、処理のため格納されているパケットが放出されるべき順序を示すために再順序付けバッファ118の各エントリに関連付けられているリストまたはフラグを更新することができる。上記の例を参照すると、再順序付けバッファ118がシーケンス番号47、48、52、および54を持つパケットを含む場合に、再順序付けユニット116は、「P1」、「P2」、「P3」、および「P4」のタグをそれぞれ割り当てて、処理のためパケットを放出すべき順序を示すことができる。シーケンス番号50を持つパケットを受信したことに応答して、再順序付けユニット116は、シーケンス番号54を持つパケットの後にシーケンス番号50を持つパケットを格納することができる。再順序付けユニット116は、再順序付けバッファ118内に格納されているパケットに関連付けられているタグを更新することによって新しいパケット順序を示すことができる。言い換えると、再順序付けユニット116は、「P1」、「P2」、「P3」、「P4」のタグおよび新しいタグ「P5」をそれぞれ、シーケンス番号47、48、50、52、および54に割り当てることができる。ブロック420〜ブロック422において以下でさらに説明されるように再順序付けユニット116は、元のパケット順序(送信元ハイブリッドデバイス102によって確立されている)が維持されるように再順序付けバ
ッファ118から送信先ハイブリッドデバイス112における上位プロトコル層およびアプリケーションにパケットを放出することができる。フローは、ブロック418に続く。
【００６５】
ブロック418で、1つまたは複数のパケットがその後の処理のために送られるべきかどうかが決定される。たとえば、再順序付けユニット116は、再順序付けバッファ118からのパケットが送信先ハイブリッドデバイス112の上位プロトコル層にその後の処理のために送られるべきかどうかを決定することができる。上で説明されているように、再順序付けバッファ118を維持する際に、再順序付けユニット116は、送信元ハイブリッドデバイス102によって送信されたのと同じ順序でパケットストリームに関連付けられているパケットを(その後の処理のために)放出することを試みることができる。いくつかの実装形態では、再順序付けユニット116は、2つ以上のパケットを正しい順序で検出することに応答して再順序付けバッファ118内のパケットを上位プロトコル層に送ることを決定することができる。別の実装形態では、再順序付けユニット116は、受信パケットが上位プロトコル層に供給された最後のパケットと順序が揃っていることを検出したことに応答して受信パケットを上位プロトコル層に(再順序付けバッファ118内に格納することなく)直接的に送ることができる。
【００６６】
いくつかの実装形態では、送信先ハイブリッドデバイス112がドロップ/破棄パケットを受信するのを無期限に待つことを防ぐために(または過剰なパケット配送遅延時間を防ぐために)、再順序付けユニット116は、タイムアウト機構を使用して、所定のバッファ時間間隔が経過した後に再順序付けバッファ118からパケットを放出することができる。所定のバッファ時間間隔は、予想往復アクノリッジメント時間、再送遅延時間、および/またはパケットストリームに関連付けられているパケットを配送するために使用されるパケットルート間の配送遅延時間の最大の差に少なくとも一部は基づき、決定され得る。たとえば、送信先ハイブリッドデバイス112が、所定のバッファ時間間隔の範囲内でパケットを順序正しく受信することに失敗した場合、再順序付けユニット116は、パケット送信(または再送)が失敗しており、パケットが配送されないと判定することができ、失敗したパケットより大きいシーケンス番号を持つパケットを再順序付けバッファ118から放出することができる。別の実装形態では、再順序付けユニット116は、再順序付けバッファ118が満杯になるか、またはバッファ閾値レベルを超えた場合にその後の処理のためにパケットを放出することができる。バッファ閾値レベルは、送信先ハイブリッドデバイス112に蓄積され得るデータの最大量、パケットストリームに関連付けられているパケットを配送するために使用されるパケットルートの配送待ち時間、および他のそのような要因に基づき、選択することができる。1つまたは複数のパケットが上位プロトコル層によるその後の処理のために送られるべきと判定された場合、フローはブロック420に続く。そうでない場合、フローは終了する。
【００６７】
ブロック420で、送信先ハイブリッドデバイスの上位プロトコル層によるその後の処理のために放出される1つまたは複数のパケットが識別される。フローは、ブロック422に続く。
【００６８】
ブロック422で、適切な順序で送信先ハイブリッドデバイスの上位プロトコル層によるその後の処理のために1つまたは複数のパケットが送られる。たとえば、再順序付けユニット116は、受信パケット、および/または適切な順序で送信先ハイブリッドデバイス112の上位プロトコル層による処理のために再順序付けバッファ118からの1つまたは複数のパケットを送ることができる。いくつかの実装形態では、上位プロトコル層に放出されるパケットのシーケンスは、順序正しいものであり得るが、このシーケンスは、欠落パケットが受信されないか(たとえば、所定のバッファ時間間隔において)、または破棄された場合に1つまたは複数のパケットを含み得ない。たとえば、シーケンス番号5を持つパケットが所定のバッファ時間間隔の範囲内で、またはバッファが容量の閾値に到達する前に受信されなかった場合、再順序付けバッファ118からのパケットが、順序1、2、3、4、6、7などで上位プロトコル層に送られ得る。ブロック422からのフローは終了する。
【００６９】
図4は、受信パケットが二次シーケンス識別子を含むかどうかを(ブロック404で)判定する再順序付けユニット116を説明しているけれども、実施形態はそれに限定されないことを理解されるであろう。いくつかの実施形態では、上で説明されているように、送信元ハイブリッドデバイス102は、パケットが一次シーケンス識別子を含むかどうかに関係なく二次シーケンス識別子をパケットに挿入するように構成され得る。この実施形態では、送信先ハイブリッドデバイス112は、パケットが一次シーケンス識別子を含むかどうかに関係なく二次シーケンス識別子を使用して不正な順序で届くパケットを検出し、再順序付けするように構成され得る。別の実施形態では、送信先ハイブリッドデバイス112は、一次シーケンス識別子または二次シーケンス識別子を使用して不正な順序で届くパケットを検出し、再順序付けするかどうかを決定することができる。
【００７０】
図1〜図5は、実施形態の理解を助けることを意図された例であり、実施形態を制限する、または請求項の範囲を限定するために使用されるべきでないことは理解されるであろう。実施形態は、追加の動作、より少ない動作、異なる順序での動作、並列の動作、および違った方法によるいくつかの動作を実行することができる。図5は、不正な順序のパケット配送を検出することに応答してパケットを再順序付けする送信先ハイブリッドデバイス112を説明しているけれども、実施形態はそれに限定されない。いくつかの実施形態では、送信元ハイブリッドデバイスおよび送信先ハイブリッドデバイスによって実装される通信プロトコルに応じて、パケットを受信するアプリケーションなど、上位プロトコル層への順序正しいパケット配送は、送信先ハイブリッドデバイス112では不要な場合がある。いくつかの実装形態では、送信先ハイブリッドデバイス112で不正な順序のパケット配送が検出されたかどうかを判定する前に(図4のブロック410において)、送信先ハイブリッドデバイス112の上位プロトコル層にパケットを順序正しく配送することが必要であるかまたは有用であるかが判定され得る。たとえば、ハイブリッドアダプテーション層210の再順序付けユニット116は、上位プロトコル層に組み込まれている再順序付け機構(たとえば、IPv4プロトコル群のTCP)で不正な順序のパケット配送を十分に取り扱えると判定された場合に図4〜図5において上で説明されている動作を実行しないものとしてもよい。別の例として、図4〜図5で説明されているようなパケット再順序付け機構は、上位プロトコル層が不正な順序で届くパケットを再順序付けするための機能を備えていない(または非常に限定された機能を備える)と判定された場合に実行され得る。
【００７１】
いくつかの実装形態では、送信元ハイブリッドデバイス102は、第2のパケットルート(たとえば、パケットルート126)に切り替える前に第1のパケットルート(たとえば、パケットルート124)上で送信されたパケットへのアクノリッジメント(たとえば、送信先ハイブリッドデバイス112からの)を待つように構成され得る。送信元ハイブリッドデバイス102は、アクノリッジメントを受け取るまで、または所定の時間間隔が経過するまで、第1のパケットルート124上でパケットを再送することができる。送信元ハイブリッドデバイス102は、第1のパケットルート124上で送信されたパケットがアクノリッジされるまで第2のパケットルート126を介してパケットを送信することができない。他の実装形態では、しかし、送信元ハイブリッドデバイス102は、送信先ハイブリッドデバイス112からアクノリッジメントが届くのを待たなくてもよい。その代わりに、送信元ハイブリッドデバイス102は、アクノリッジメントを待つことなく第1のパケットルート124を介して最後のパケットを送信した後に第2のパケットルート126を介してパケットを送信することができる。たとえば、送信元ハイブリッドデバイス102は、すべてのパケット(または1つおきのパケット)に対してパケットルートを切り替える場合、送信元ハイブリッドデバイス102は、送信先ハイブリッドデバイス112からのアクノリッジメントを待たなくてもよい。あるいは、いくつかの実装形態では、送信元ハイブリッドデバイス102は、第2のパケットルート126を介して第1のパケットルート124のアクノリッジされていないパケットを送信することができる。
【００７２】
いくつかの実装形態では、送信元ハイブリッドデバイス102は、1つまたは複数の代替パケットルート(たとえば、パケットルート126)上で指定されたパケットルート(たとえば、パケットルート124)を介して送信されたパケットを複製することができる。パケットルートに関連付けられている配送特性(たとえば、スループット、待ち時間、誤り率、信頼度など)の低下の影響は、1つまたは複数の重複するパケットを送信するように送信元ハイブリッドデバイス102を構成することによって軽減され得る。一例において、ルーティングユニット110は、パケットストリームに関連付けられているパケットを(たとえば、パケットルート124とパケットルート126の両方を介して)送信するために使用される2つ以上のパケットルートに沿って同じパケットのコピーを送信することによってパケットを複製し、パケットが送信先ハイブリッドデバイス112に正常に配送される確率を改善し、および/またはパケット配送遅延時間を短縮することができる。いくつかの実装形態では、ルーティングユニット110は、パケットルート124のうちの1つを介して所定の数のすでに送信されているパケットを(別のパケットルート126上で)再送することを決定することができる。別の実装形態では、ルーティングユニット110は、送信元ハイブリッドデバイス102と送信先ハイブリッドデバイス112との間のいくつかのパケットルートに沿って送信されるパケットを複製することを決定することができる。たとえば、ルーティングユニット110は、パケットルート124を介して送信されるパケットを複製するだけでよい。ルーティングユニット110は、パケットルート126および128を介して送信されるパケットを複製しないことを決定することができる。別の実装形態では、ルーティングユニット110は、パケットルート124を介して送信されたパケットが送信先ハイブリッドデバイス112によってアクノリッジされなかった場合に別のパケットルート126上でパケットを再送することを決定することができる。たとえば、ルーティングユニット110は、パケットルート124を介して送信されたパケットに対するアクノリッジメントが所定のアクノリッジメント時間間隔の範囲内で受信されなかったと判定し得る。したがって、ルーティングユニット110は、別
のパケットルート126を介してパケットを送信先ハイブリッドデバイス112に再送することができる。
【００７３】
送信先ハイブリッドデバイス112において、再順序付けユニット116は、送信元ハイブリッドデバイス102のシーケンス指示ユニット108(または上位プロトコル層)によってパケット内に挿入されたシーケンス識別子を使用して重複するパケットを検出することができる。たとえば、重複するパケットが元のパケットと同じシーケンス識別子を割り当てられている場合、同じシーケンス識別子を持つ複数のパケットを受信することで、重複するパケットの存在が示され得る。別の実装形態では、再順序付けユニット116は、パケットシグネチャに基づき、重複するパケットを検出することができる。たとえば、再順序付けユニット116が、同じパケットシグネチャを持つ2つのパケットを検出した場合、これは、2つの検出されたパケットが互いの重複であることを示し得る。再順序付けユニット116は、最近受信されたパケットに関連付けられているパケットシグネチャの記録を維持し、受信パケットシグネチャのこの記録を使用して重複するパケットを検出することができる。次いで、再順序付けユニット116は、重複するパケットを破棄することができる。
【００７４】
図1〜図5には示されていないけれども、いくつかの実装形態において、送信元ハイブリッドデバイス102が送信先ハイブリッドデバイス112に適切なパケット順序を維持するための時間遅延技術を採用することができることに留意されたい。図1の例を参照すると、ルーティングユニット110は、複数のパケットルートを使用して、送信されるようにスケジュールされているパケットに関連付けられているパケットストリーム、ルート特性などに少なくとも一部は基づき、パケットを送信することができる。いくつかの実装形態では、第1のパケットルート124に沿って最後のパケットを送信した後、送信機の処理ユニット106は、第1のパケットルート124を介して送信されたすべてのパケットが、パケットルート内でパケットが変わる前に送信先ハイブリッドデバイス112に必ず届くように所定の待ち時間間隔の間待つ(およびパケット送信を防ぐ)ことができる。所定の待ち時間間隔は、第1のパケットルート124を介した最後のパケットの送信から次のパケットルート126を介して第1のパケットを送信するまでの間の、送信元ハイブリッドデバイス102が送信先ハイブリッドデバイス112にいかなるパケットも送信できない、期間とすることができる。たとえば、パケットルート124および126上のパケットストリームに関連付けられているパケットの送信を交互に行うことを決定したことに応答して、ルーティングユニット110は、パケットルート124上で第1のパケットを送信し、所定の時間間隔の間待ち、第2のパケットルート126上で第2のパケットを送信し、所定の時間間隔の間待ち、パケットルート124上で第3のパケットを送信し、というように続けることができる。所定の待ち時間間隔は、現在のパケットルート124を介してハイブリッド通信ネットワーク100を通じて配送される特定のストリームに関連付けられているパケットに要すると思われる推定時間、上位プロトコル層のアクノリッジメントパケットが送信先ハイブリッドデバイス112から届き得る最大時間間隔、現在のパケットルート遅延、ハイブリッド通信ネットワーク100に関連付けられている待ち時間、パケットストリームに関連付けられているパケットを送信するために割り当てられているパケットルートに関連付けられている待ち時間、順序に関して最後のパケットを受
信してから不正な順序のパケットを受信するまでの最大遅延時間、再送遅延時間、再順序付けバッファ118のサイズ、および/または他のそのような要因に基づき、動的に(または静的に)構成され得る。いくつかの実装形態では、所定の待ち時間間隔は、送信元ハイブリッドデバイス102および送信先ハイブリッドデバイス112によって採用されている通信プロトコルが複数回の再送試行をサポートしている場合に複数の報復遅延時間に少なくとも一部は基づき、決定され得る。いくつかの実装形態では、送信先ハイブリッドデバイス112は、所定の待ち時間遅延を検出して、パケットストリームに関連付けられているパケットルートの変更を決定することができる。他の実装形態では、送信先ハイブリッドデバイス112は、所定の待ち時間遅延またはパケットルートの変更を明示的には検出し得ない。パケットストリームに関連付けられているパケットを送信するために使用されるパケットルートの変更から次の変更までの所定の待ち時間遅延を強制することによって、送信元ハイブリッドデバイス102は、送信元ハイブリッドデバイス102から送信されたパケットを送信先ハイブリッドデバイス112において正しい順序で確実に受信することを試みることができる。さらに、いくつかの実装形態において、送信元ハイブリッドデバイス102は、送信先ハイブリッドデバイス112の処理能力に基づき、上で説明されている時間遅延機構を使用するかどうかを決定することができることに留意されたい。たとえば、送信元ハイブリッドデバイス102は、送信先ハイブリッドデバイス112がシーケンス識別子を検出するように構成されていない場合、および/または送信先デバイス110が不正な順序で届いたパケットを再順序付けするように構成されていない場合に、送信先ハイブリッドデバイス112で順序付けされたパケット受信を可能にする時間遅延機構を使用することを決定することができる。
【００７５】
いくつかの実施形態では、時間遅延機構および二次シーケンス識別子の送信は、相互排他的な動作であってもよい。しかし、他の実施形態では、送信元ハイブリッドデバイス102は、パケットに関連付けられている二次シーケンス識別子を送信することに加えて所定の待ち時間遅延(上で説明されているような)を強制することができる。他の実施形態では、送信元ハイブリッドデバイス102は、所定の待ち時間遅延を強制することができるが、パケットが一次シーケンス識別子を含んでいる場合には二次シーケンス識別子を実装することができない、いくつかの実装形態では、送信元ハイブリッドデバイス102は、所定の待ち時間遅延を強制し、パケットが一次シーケンス識別子を含んでいる場合であっても二次シーケンス識別子を実装することができる。
【００７６】
図5は、所定のバッファ時間間隔が経過した後に欠落パケットが受信された場合、および/または受信された欠落パケットより順序に関して後の方にあるパケットが上位プロトコル層にすでに放出されている場合に欠落パケットを破棄するための動作を説明している。いくつかの実装形態では、再順序付けユニット116は、受信パケットが上位プロトコル層にすでに供給されているパケットより順序に関して前の方/後の方にあるかどうかに関係なく受信したすべてのパケットを上位プロトコル層に供給することができる。この実装形態では、再順序付けユニット116は、上位プロトコル層にすでに送られている重複するパケットのみを破棄することができる。しかし、他の実装形態では、再順序付けユニット116は、アクノリッジメントパケットを観察することによって、および/または到着タイミング(たとえば、過度に遅延したフレームは再送と想定され得る)、到着インターフェース、パケット再送を示すヘッダ、または他のパケットヘッダフィールドで再送を推論することによって再送されたパケットを明示的に検出することができる。再順序付けユニット116は、順序に関して後の方にあるパケットが上位プロトコル層に送られているかどうかに関係なくその後の処理のため再送されたパケットのみを供給することができる。最後に、シーケンス指示ユニット108、ルーティングユニット110、再順序付けユニット116、および再順序付けバッファ118は、従来のプロトコルスタック(たとえば、トランスポート層214など)で実装される従来の上位層の再順序付け機構とは別のものであり、またそれに加えたものであってもよいことに留意されたい。
【００７７】
実施形態は、全体がハードウェアである実施形態、全体がソフトウェアである実施形態(ファームウェア、常駐ソフトウェア、マイクロコードなどを含む)、または本明細書ですべて「回路」、「モジュール」、または「システム」と一般的に称され得るソフトウェアの態様とハードウェアの態様とを組み合わせた実施形態の形をとることができる。さらに、本発明の主題の実施形態は、コンピュータ使用可能プログラムコードが媒体中に具現化されている任意の有形媒体の表現手段で具現化されたコンピュータプログラム製品の形をとり得る。説明されている実施形態は、本明細書に企図され得るすべての変更形態が列挙されていないので、現在説明されていようといまいと、実施形態に従ってプロセスを実行するようにコンピュータシステム(または他の電子デバイス)をプログラムするために使用され得る、命令が格納されている機械可読媒体を含むものとしてもよい、コンピュータプログラム製品またはソフトウェアとして実現され得る。機械可読媒体は、機械(たとえば、コンピュータ)によって読み込むことが可能な形式(たとえば、ソフトウェア、処理アプリケーション)で情報を格納するか、または送信するための任意の機構を備える。機械可読媒体は、機械可読記憶媒体または機械可読信号媒体であってもよい。機械可読記憶媒体として、たとえば、限定はしないが、磁気記憶媒体(たとえば、フロッピー（登録商標）ディスケット)、光記憶媒体(たとえば、CD-ROM)、光磁気記憶媒体、リードオンリーメモリ(ROM)、ランダムアクセスメモリ(RAM)、消去可能プログラム可能メモリ(たとえば、EPROMおよびEEPROM)、フラッシュメモリ、または電子命令を格納するのに適した他のタイプの有形の媒体が挙げられる。機械可読信号媒体としては、コンピュータ可読プログラムコードが中に具現化されている伝搬データ信号、たとえば、電気的、光学的、音響的、または他の形態の伝搬信号(たとえば、搬送波、赤外線信号、デジタル信号など)が挙げられる。機械可読信号媒体上に具現化されたプログラムコードは、限定はしないが、電線、ワイヤレス、光ファイバーケーブル、RF、または他の通信媒体を含む、好適な媒体を使用して送信され得る。
【００７８】
実施形態の動作を実行するためのコンピュータプログラムコードは、Java（登録商標）、Smalltalk、C++、または同様のものなどのオブジェクト指向プログラミング言語、および「C」プログラミング言語または類似のプログラミング言語などの伝統的な手続き型プログラミング言語を含む、1つまたは複数のプログラミング言語の任意の組合せで書くことができる。プログラムコードは、全部をユーザのコンピュータ上で、一部をユーザのコンピュータ上で、スタンドアロンのソフトウェアパッケージとして、一部をユーザのコンピュータ、一部をリモートコンピュータ上で、または全部をリモートコンピュータまたはサーバー上で実行することができる。後者のシナリオでは、リモートコンピュータは、ローカルエリアネットワーク(LAN)、パーソナルエリアネットワーク(PAN)、またはワイドエリアネットワーク(WAN)を含む、任意のタイプのネットワークを通じてユーザのコンピュータに接続され得るか、または接続を外部コンピュータに対して(たとえば、インターネットサービスプロバイダを利用してインターネットを通じて)行うことができる。
【００７９】
図6は、ハイブリッド通信ネットワークにおいてパケットに関連付けられているシーケンス識別子に基づくパケット再順序付けのための機構を備える電子デバイス600の一実施形態のブロック図である。いくつかの実装形態では、電子デバイス600は、ラップトップコンピュータ、タブレットコンピュータ、ネットブック、携帯電話、スマートアプライアンス、電力線通信デバイス、ゲーム機、ネットワークブリッジングデバイス、または複数の通信ネットワークセグメントにまたがって通信するように構成されたハイブリッド通信ユニットを備える他の電子システムのうちの1つとすることができる。電子デバイス600は、プロセッサユニット602(場合によっては、複数のプロセッサ、複数のコア、複数のノードを備え、および/またはマルチスレッディングなどを実装する)を備える。電子デバイス600は、メモリユニット606を備える。メモリユニット606は、システムメモリ(たとえば、キャッシュ、SRAM、DRAM、ゼロキャパシタRAM、ツイントランジスタRAM、eDRAM、EDO RAM、DDR RAM、EEPROM、NRAM、RRAM（登録商標）、SONOS、PRAMなどの1つまたは複数)、または機械可読媒体の上ですでに説明されている可能な実現のうちの任意の1つまたは複数とすることができる。電子デバイス600は、バス610(たとえば、PCI、ISA、PCI-Express、HyperTransport(登録商標)、InfiniBand(登録商標)、NuBus、AHB、AXIなど)、およびワイヤレスネットワークインターフェース(たとえば、WLANインターフェース、Bluetooth(登録商標)インターフェース、WiMAXインターフェース、ZigBee(登録商標)インターフェース、Wireless USBインターフェースなど)および有線ネットワークインターフェース(たとえば、電力線通信インターフェース、イーサネット（登録商標）インターフェースなど)のうちの少なくとも1つを備えるネットワークインターフェース604も備える。いくつかの実装形態では、電子デバイス600は、複数のネットワークインターフェースを備えることができ、各々が電子デバイス600を異なる通信ネットワークセグメントに結合する。たとえば、電子デバイス600は、電子デバイス600を電力線通信ネットワークセグメント、イーサネット（登録商標）、およびワイヤレスローカルエリアネットワークとそれぞれ結合する、電力線通信インターフェース、イーサネット（登録商標）インターフェース、およびWLANインターフェースを備えることができる。
【００８０】
電子デバイス600は、通信ユニット608も備える。通信ユニット608は、送信機ユニット612および受信機ユニット618を備える。送信機ユニット612は、シーケンス指示ユニット614およびルーティングユニット616を備える。受信機ユニット618は、再順序付けユニット620および再順序付けバッファ622を備える。いくつかの場合において、電子デバイス600は、1つまたは複数のパケットを送信先デバイスに送信する送信元デバイスとして動作し得る。これらの場合において、シーケンス指示ユニット614は、2つ以上のパケットルートに沿って送信されるようにスケジュールされているパケットストリームに関連付けられている複数のパケットに対する二次シーケンス識別子を決定し(必要ならば)挿入することができる。ルーティングユニット616は、パケットを送信する際に使用すべき2つ以上のパケットルートを識別し、図1〜図3において上で説明されているように、パケットをしかるべく送信することができる。他の場合において、電子デバイス600は、2つ以上のパケットルートを介して送信元デバイスからパケットストリームに関連付けられている複数のパケットを受信する送信先デバイスとして動作し得る。これらの場合において、再順序付けユニット620は、図1、4、および5において上で説明されているように、シーケンス識別子に基づき、不正な順序のパケット配送を検出し、受信されたパケットを(たとえば、再順序付けバッファ622を使用して)再順序付けし、その後の処理のためにパケットを供給するための機能を実装することができる。これらの機能のうちのどれか1つは、ハードウェアで、および/またはプロセッサユニット602上に、部分的に(または全部について)実装することができる。たとえば、機能は、特定用途向け集積回路、プロセッサユニット602内に実装されているロジック、周辺デバイスまたはカード上のコプロセッサ、などにより実装され得る。さらに、実現は、図6に例示されていないより少ない、または追加したコンポーネント(たとえば、ビデオカード、オーディオカード、追加のネットワークインターフェース、周辺デバイスなど)を含み得る。プロセスユニット602、メモリユニット606、およびネットワークインターフェース604は、バス610に結合される。バス610に結合されてい
るように図示されているけれども、メモリユニット606は、プロセッサユニット602に結合され得る。
【００８１】
これらの実施形態は、様々な実装形態および利用形態を参照しつつ説明されているが、これらの実施形態は例示的であり、本発明の主題の範囲は、これらに限定されないことは理解されるであろう。概して、本明細書で説明されているような多配送ルートパケット順序付けの技術は、任意のハードウェアシステムと整合している設備、またはハードウェアシステムにより実装され得る。多くの変更形態、修正形態、追加形態、および改良形態が可能である。
【００８２】
単一の事例として本明細書で説明されているコンポーネント、動作、または構造に対して複数の事例を与えることができる。最後に、様々なコンポーネント、動作、およびデータストアの間の境界はいくぶん恣意的であり、特定の例示的な構成を背景として特定の動作が例示されている。機能の他の割り当ても企図され、本発明の主題の範囲内に収まり得る。一般に、例示的な構成において個別のコンポーネントとして提示されている構造および機能は、組み合わされた構造またはコンポーネントとして実装され得る。同様に、単一のコンポーネントとして提示される構造および機能は、個別のコンポーネントとして実装され得る。これらのおよび他の変更形態、修正形態、追加形態、および改良形態は、本発明の主題の範囲内に収まり得る。
【符号の説明】
【００８３】
100  ハイブリッド通信ネットワーク
102  送信元ハイブリッドデバイス
102、112  ハイブリッドデバイス
104  送信機ユニット
106  受信機ユニット
108  シーケンス指示ユニット
110  ルーティングユニット
112  送信先ハイブリッドデバイス
114  送信機ユニット
115  受信機ユニット
116  再順序付けユニット
118  再順序付けバッファ
120、122  転送デバイス
124、126、128  パケットルート
200  プロトコルスタック
202、204  物理(PHY)層
206、208  媒体アクセス制御(MAC)層
210  ハイブリッドアダプテーション層
212  ネットワーク層
214  トランスポート層
216、218、220  アプリケーション
222  通信ネットワークセグメント
224  通信ネットワークセグメント
600  電子デバイス
602  プロセッサユニット
604  ネットワークインターフェース
606  メモリユニット
608  通信ユニット
610  バス
612  送信機ユニット
614  シーケンス指示ユニット
616  ルーティングユニット
618  受信機ユニット
620  再順序付けユニット
622  再順序付けバッファ
【図１】
0005827413.tif 000002
【図２】
0005827413.tif 000003
【図３】
0005827413.tif 000004
【図４】
0005827413.tif 000005
【図５】
0005827413.tif 000006
【図６】
0005827413.tif 000007