(57)【要約】  第２のネットワークを介して第１のネットワークから第３のネットワークにデータ伝送を転送する方法は、第１のネットワークから第１のタイプのパケットを受信するステップと、それぞれのパケットを第２のネットワークに送信される第２のタイプのパケットにセグメント分割するステップと、第２のタイプのパケットのそれぞれの少なくとも１つの符号化された複製を生成し、第２のネットワークに送信して、第２のタイプのすべてのパケットが受信されるとは限らない場合に第１のタイプのパケットが作成し直されることを可能にするステップとを含む。第２のタイプの十分な数のパケットおよび符号化された複製パケットが第１のタイプのパケットを作成し直すために受信されない場合、この方法は、選択された時間間隔において送信されたパケットの数に対する作成し直されていないパケットの数を表す損失率を決定する。
2015505183.tif 000002
【特許請求の範囲】
【請求項１】
ＴＣＰデータセグメントを符号化されたＴＣＰチャネルを介して送信元エンドステーションから送信先エンドステーションに送信する方法であって、
前記エンドステーションの間のＴＣＰセッションに対して第１のインターセプトネットワークデバイスと第２のインターセプトネットワークデバイスとの間に符号化されたＴＣＰチャネルを確立するステップと、
前記インターセプトネットワークデバイスのうちの一方のデバイスにおいて前記ＴＣＰセッションに関係するＴＣＰデータセグメントをインターセプトするステップと、
前記インターセプトネットワークデバイスのうちの一方のデバイスにおいてインターセプトされた前記ＴＣＰデータセグメントをセグメント分割し選択可能な符号化レベルで符号化し、符号化された前記セグメントを前記インターセプトネットワークデバイスのうちの他方のデバイスに送信するステップと、
前記エンドステーションの間の前記ＴＣＰセッションに対するネットワーク性能測定値を計算するステップと、
前記ＴＣＰセッションに対する計算された前記ネットワーク性能測定値に基づき前記符号化レベルを選択するステップと
を含む方法。
【請求項２】
請求項１に記載の方法であって、前記他方のインターセプトネットワークデバイスにおいて符号化された前記セグメントを復号するステップと、前記ＴＣＰデータセグメントを前記他方のインターセプトネットワークデバイスから前記送信先エンドステーションに送信するステップとを含む方法。
【請求項３】
請求項１に記載の方法であって、前記ネットワーク性能測定値は、セッションにおけるスループットとグッドプットとからなる群から選択された少なくとも１つの測定値であり、スループットは、受信されたすべてのセグメントを前記他方のインターセプトネットワークデバイスに送信するために使用される帯域幅であり、グッドプットは、固有のセグメントを前記他方のインターセプトネットワークデバイスに送信するために使用される帯域幅であり、セッションは、ＴＣＰデータセグメントを前記送信元エンドステーションから前記送信先エンドステーションに送信する期間である、方法。
【請求項４】
請求項３に記載の方法であって、前記ネットワーク性能測定値は、スループットとグッドプットの両方の測定値を含み、損失率の変化は、前記スループットとグッドプットの測定値から求められ、前記符号化レベルは、損失率の前記変化に応じて定められる、方法。
【請求項５】
請求項４に記載の方法であって、前記ネットワーク性能測定値は、グッドプットの測定値を含み、前記符号化レベルは、グッドプットの変化に応じて修正される、方法。
【請求項６】
ＴＣＰデータセグメントを符号化されたＴＣＰチャネルを介して送信元エンドステーションから送信先エンドステーションに送信するためのデータ伝送ネットワークであって、
前記エンドステーションの間のＴＣＰセッションに対して符号化されたＴＣＰチャネルを確立する前記第１のインターセプトネットワークデバイスおよび前記第２のインターセプトネットワークデバイスを備え、
前記インターセプトネットワークデバイスのうちの一方のデバイスは、
前記ＴＣＰセッションに関係するＴＣＰデータセグメントをインターセプトし、
インターセプトされたＴＣＰデータセグメントをセグメント分割し選択可能な符号化レベルで符号化し、
符号化された前記セグメントを前記インターセプトネットワークデバイスのうちの他方のデバイスに送信し、
前記エンドステーションの間のＴＣＰセッションに対するネットワーク性能測定値を計算し、
前記ＴＣＰセッションに対する計算された前記ネットワーク性能測定値に基づき前記符号化レベルを選択する
ように構成された、データ伝送ネットワーク。
【請求項７】
請求項６に記載のデータ伝送ネットワークであって、前記他方のインターセプトネットワークデバイスは、符号化された前記セグメントを前記他方のインターセプトネットワークデバイスにおいて復号し、前記ＴＣＰデータセグメントを前記送信先エンドステーションに送信する、データ伝送ネットワーク。
【請求項８】
請求項６に記載のデータ伝送ネットワークであって、前記ネットワーク性能測定値は、セッションにおけるスループットとグッドプットとからなる群から選択された少なくとも１つの測定値であり、スループットは、受信されたすべてのセグメントを前記他方のインターセプトネットワークデバイスに送信するために使用される帯域幅であり、グッドプットは、固有のセグメントを前記他方のインターセプトネットワークデバイスに送信するために使用される帯域幅であり、セッションは、ＴＣＰデータセグメントを前記送信元エンドステーションから前記送信先エンドステーションに送信する期間である、データ伝送ネットワーク。
【請求項９】
請求項８に記載のデータ伝送ネットワークであって、前記ネットワーク性能測定値は、スループットとグッドプットの両方の測定値を含み、損失率の変動は、前記スループットとグッドプットの測定値から求められ、前記符号化レベルは、損失率の前記変動に応じて定められる、データ伝送ネットワーク。
【請求項１０】
請求項９に記載のデータ伝送ネットワークであって、前記ネットワーク性能測定値は、グッドプットの測定値を含み、前記符号化レベルは、グッドプットの低減に応じて低減される、データ伝送ネットワーク。
【請求項１１】
ＴＣＰデータセグメントを送信するためのデータ伝送ネットワークにおいて、送信元エンドステーションと送信先エンドステーションとの間のＴＣＰセッションに対する符号化されたＴＣＰチャネルを確立する際に使用するインターセプトネットワークデバイスであって、インターセプトネットワークデバイスはプロセッサを含み、該プロセッサは、
前記ＴＣＰセッションに関係するＴＣＰデータセグメントをインターセプトし、
インターセプトされたＴＣＰデータセグメントをセグメント分割し選択可能な符号化レベルで符号化し、
符号化された前記セグメントを前記インターセプトネットワークデバイスのうちの他方のデバイスに送信し、
前記エンドステーションの間のＴＣＰセッションに対するネットワーク性能測定値を計算し、
前記ＴＣＰセッションに対する計算された前記ネットワーク性能測定値に基づき前記符号化レベルを選択する
ようにプログラムされた、インターセプトネットワークデバイス。
【請求項１２】
請求項１１に記載のインターセプトネットワークデバイスであって、前記ネットワーク性能測定値は、セッションにおけるスループットとグッドプットとからなる群から選択された少なくとも１つの測定値であり、スループットは、受信されたすべてのセグメントを前記他方のインターセプトネットワークデバイスに送信するために使用される帯域幅であり、グッドプットは、固有のセグメントを前記他方のインターセプトネットワークデバイスに送信するために使用される帯域幅であり、セッションは、ＴＣＰデータセグメントを前記送信元エンドステーションから前記送信先エンドステーションに送信する期間である、インターセプトネットワークデバイス。
【請求項１３】
請求項１２に記載のインターセプトネットワークデバイスであって、前記ネットワーク性能測定値は、スループットとグッドプットの両方の測定値を含み、損失率の変動は、前記スループットとグッドプットの測定値から求められ、前記符号化レベルは、損失率の前記変動に応じて定められる、インターセプトネットワークデバイス。
【請求項１４】
請求項１３に記載のインターセプトネットワークデバイスであって、前記ネットワーク性能測定値は、グッドプットの測定値を含み、前記符号化レベルは、グッドプットの低減に応じて低減される、インターセプトネットワークデバイス。
【請求項１５】
データ伝送ネットワークにおいてＴＣＰデータセグメントを送信するため送信元エンドステーションのＴＣＰ輻輳ウィンドウをスティミュレートする方法であって、
送信先エンドステーションにおいてＴＣＰデータセグメントを受信したことに応答してＴＣＰ  ＡＣＫセグメントを生成し、前記ＴＣＰ  ＡＣＫセグメントを前記送信元エンドステーションに送信するステップと、
前記ＴＣＰ  ＡＣＫセグメントをインターセプトし、インターセプトされた前記ＴＣＰ  ＡＣＫセグメントに対応する付加的な符号化されたＴＣＰ  ＡＣＫセグメントを生成するステップと、
前記付加的なＴＣＰ  ＡＣＫセグメントを前記送信元エンドステーションに送信して前記ＴＣＰ輻輳ウィンドウをスティミュレートするステップと
を含む方法。
【請求項１６】
請求項１５に記載の方法であって、前記付加的な符号化されたＴＣＰ  ＡＣＫセグメントを生成する前記ステップは、所定の時間継続する、方法。
【請求項１７】
請求項１５に記載の方法であって、前記ＴＣＰ  ＡＣＫセグメントのインターセプト後に受信されたＴＣＰ  ＡＣＫセグメントに含まれるバイトの数に基づき前記付加的なＴＣＰ  ＡＣＫセグメントの数を制御するステップを含む方法。
【請求項１８】
請求項１５に記載の方法であって、ネットワーク性能測定値を計算するステップと、前記ネットワーク性能測定値が所定の閾値を超えたときに前記付加的なＴＣＰ  ＡＣＫセグメントを生成するステップとを含む方法。
【請求項１９】
請求項１８記載の方法であって、前記ネットワーク性能測定値は、グッドプットの測定値、スループットの測定値、および損失の測定値からなる群から選択された少なくとも１つの測定値である、方法。
【請求項２０】
請求項１５に記載の方法であって、前記付加的なＴＣＰ  ＡＣＫセグメントは、許容されるＴＣＰ  ＡＣＫセグメントの所定の最小セグメントサイズおよび最大数に基づき元のＴＣＰ  ＡＣＫセグメントから生成され、前記方法は、
前記元のＴＣＰ  ＡＣＫセグメントのバイトサイズを前記最小セグメントバイトサイズと比較するステップと、
前記元のＴＣＰ  ＡＣＫセグメントのサイズが前記最小セグメントのサイズより大きい場合に、前記付加的なＴＣＰ  ＡＣＫセグメントを生成するステップであって、前記付加的なＴＣＰ  ＡＣＫセグメントは前記元のＴＣＰ  ＡＣＫセグメントと同じ情報を含み、前記付加的なＴＣＰ  ＡＣＫセグメントのそれぞれのサイズは少なくとも前記最小セグメントのサイズであり、前記付加的なＴＣＰ  ＡＣＫセグメント全部の数は許容されるＴＣＰ  ＡＣＫセグメントの前記最大数を超えない、ステップと、
生成された前記付加的なＴＣＰ  ＡＣＫセグメントを前記送信元エンドステーションに送信するステップと
を含む、方法。
【請求項２１】
第１のインターセプトネットワークデバイスから第２のインターセプトネットワークデバイスへのＴＣＰデータセグメントまたは非ＴＣＰデータセグメントの流れに対するラウンドトリップタイムＲＴＴを計算するための方法であって、
ＲＴＴクエリセグメントを作成し、ローカルタイムスタンプおよび前記クエリセグメントに関連付けられている特定のシーケンス識別子を保存するステップと、
前記ＲＴＴクエリセグメントを前記第２のインターセプトネットワークデバイスに送信するステップと、
前記ＲＴＴクエリセグメントを前記第２のインターセプトネットワークデバイスにおいて受信し、前記ＲＴＴクエリセグメントをＲＴＴの計算のため前記第１のインターセプトネットワークデバイスに送り返すステップと、
前記シーケンス識別子を検出することによって前記ＲＴＴクエリセグメントを取り出すステップと、
保存されたタイムスタンプ情報および前記現在のローカルタイムに基づきＲＴＴを計算するステップと
を含む方法。
【請求項２２】
送信元エンドステーションから送信先エンドステーションへの符号化されたチャネルにおけるＴＣＰデータセグメントまたは非ＴＣＰデータセグメントの流れに対するラウンドトリップタイムＲＴＴを計算するためのデータ伝送ネットワークであって、
前記エンドステーションの間の通信セッションに対して符号化されたチャネルを確立する第１のインターセプトネットワークデバイスおよび第２のインターセプトネットワークデバイスを備え、
前記インターセプトネットワークデバイスのうちの一方のデバイスは、
ＲＴＴクエリセグメントを作成し、ローカルタイムスタンプおよび前記ＲＴＴクエリセグメントに関連付けられている特定のシーケンス識別子を保存し、
前記ＲＴＴクエリセグメントを前記第２のインターセプトネットワークデバイスに送信し、
前記ＲＴＴクエリセグメントを第１のインターセプトネットワークデバイスに返し、
前記シーケンス識別子を検出することによって前記ＲＴＴクエリセグメントを取り出し、
格納されているタイムスタンプ情報および前記現在のローカルタイムに基づきＲＴＴを計算する
ように構成された、データ伝送ネットワーク。
【請求項２３】
データ伝送ネットワークにおいて、送信元エンドステーションから送信先エンドステーションへの符号化されたチャネルにおけるＴＣＰデータセグメントまたは非ＴＣＰデータセグメントの流れに対するラウンドトリップタイムＲＴＴを計算する際に使用するインターセプトネットワークデバイスであって、該インターセプトネットワークデバイスはプロセッサを含み、該プロセッサは、
ＲＴＴクエリセグメントを作成し、ローカルタイムスタンプおよび前記ＲＴＴクエリセグメントに関連付けられている特定のシーケンス識別子を保存し、
前記ＲＴＴクエリセグメントを前記第２のインターセプトネットワークデバイスに送信し、
前記ＲＴＴクエリセグメントを第１のインターセプトネットワークデバイスに返し、
前記シーケンス識別子を検出することによって前記ＲＴＴクエリセグメントを取り出し、
保存されたタイムスタンプ情報および前記現在のローカルタイムに基づきＲＴＴを計算する
ようにプログラムされた、インターセプトネットワークデバイス。
【請求項２４】
第１のインターセプトネットワークデバイスから第２のインターセプトネットワークデバイスへのＴＣＰデータセグメントの流れに対するラウンドトリップタイムＲＴＴを計算するための方法であって、
ＴＣＰデータセグメントをインターセプトし、ローカルタイムスタンプおよびインターセプトされた前記ＴＣＰデータセグメントに関連付けられている固有のＴＣＰ識別子を格納するステップと、
格納されている前記ＴＣＰタイムスタンプに対応する固有のＴＣＰ識別子を有するＴＣＰ  ＡＣＫセグメントを検出するステップと、
格納されている前記ローカルタイムスタンプを取り出すステップと、
取り出された前記ローカルタイムスタンプおよび前記現在のローカルタイムに基づきＲＴＴを計算するステップと
を含む方法。
【請求項２５】
送信元エンドステーションから送信先エンドステーションへの符号化されたＴＣＰチャネルにおけるＴＣＰデータセグメントの流れに対するラウンドトリップタイムＲＴＴを計算するためのデータ伝送ネットワークであって、
前記エンドステーションの間の通信セッションに対して符号化されたＴＣＰチャネルを確立する第１のインターセプトネットワークデバイスおよび第２のインターセプトネットワークデバイスを備え、
前記インターセプトネットワークデバイスのうちの一方のデバイスは、
ＴＣＰデータセグメントをインターセプトし、ローカルタイムスタンプおよびインターセプトされた前記ＴＣＰデータセグメントに関連付けられている固有のＴＣＰ識別子を格納し、
格納されている前記ＴＣＰタイムスタンプに対応するＴＣＰタイムスタンプを有するＴＣＰ  ＡＣＫセグメントを検出し、
格納されている前記ローカルタイムスタンプを取り出し、
取り出された前記ローカルタイムスタンプおよび前記現在のローカルタイムに基づきＲＴＴを計算する
ように構成された、データ伝送ネットワーク。
【請求項２６】
データ伝送ネットワークにおいて、送信元エンドステーションから送信先エンドステーションへの符号化されたＴＣＰチャネルにおけるＴＣＰデータセグメントの流れに対するラウンドトリップタイムＲＴＴを計算する際に使用するインターセプトネットワークデバイスであって、前記インターセプトネットワークデバイスはプロセッサを備え、該プロセッサは、
ＴＣＰデータセグメントをインターセプトし、ローカルタイムスタンプおよびインターセプトされた前記ＴＣＰデータセグメントに関連付けられている固有のＴＣＰ識別子を格納し、
格納されている前記ＴＣＰタイムスタンプに対応するＴＣＰタイムスタンプを有するＴＣＰ  ＡＣＫセグメントを検出し、
格納されている前記ローカルタイムスタンプを取り出し、
取り出された前記ローカルタイムスタンプおよび前記現在のローカルタイムに基づきＲＴＴを計算する
ようにプログラムされた、インターセプトネットワークデバイス。
【請求項２７】
ＴＣＰデータセグメントを符号化されたＴＣＰチャネルを介して送信元エンドステーションから送信先エンドステーションに送信する方法であって、
前記エンドステーションの間のＴＣＰセッションに対して第１のインターセプトネットワークデバイスと第２のインターセプトネットワークデバイスとの間に符号化されたＴＣＰチャネルを確立するステップと、
前記インターセプトネットワークデバイスのうちの一方のデバイスにおいて前記ＴＣＰセッションに関係するＴＣＰデータセグメントをインターセプトするステップと、
前記インターセプトネットワークデバイスのうちの一方のデバイスにおいてインターセプトされたＴＣＰデータセグメントをセグメント分割し選択可能な符号化レベルで符号化し、符号化された前記セグメントを前記インターセプトネットワークデバイスのうちの他のデバイスに送信するステップと、
前記ＴＣＰセッションに対する推奨符号化レベルを受信するステップと、
前記符号化レベルを前記推奨符号化レベルとロックされていない最高の符号化レベルとの間の最小レベルに設定するステップと、
前記エンドステーションの間の前記ＴＣＰセッションに対する性能測定の第１のシーケンスを実行するステップと、
前記符号化レベルを前記推奨符号化レベルに設定するステップと、
前記エンドステーションの間の前記ＴＣＰセッションに対する性能測定の第２のシーケンスを実行するステップと、
前記第１のシーケンスの性能測定値と前記第２のシーケンスの性能測定値とを比較し、
前記第２のシーケンスの性能測定値が前記第１のシーケンスの性能測定値と同じであるかまたはそれよりもよい場合に、所定の時間、前記符号化レベルを前記推奨符号化レベルに設定するか、または
前記第２のシーケンスの性能測定値が前記第１のシーケンスの性能測定値よりもよくない場合に、前記推奨符号化レベルをロックする
ステップと
を含む方法。
【請求項２８】
請求項２７に記載の方法であって、前記性能測定値は、ラウンドトリップタイムＲＴＴおよびグッドプットを含む、方法。
【請求項２９】
請求項２７に記載の方法であって、所定の期間が過ぎた後前記通信セッションに対する最低のロックされた符号化レベルをアンロックするステップを含む方法。
【請求項３０】
請求項２７に記載の方法であって、別の通信セッションが完了したときに通信セッションのロックされた前記符号化レベルのうちの少なくとも１つをアンロックするステップを含む方法。
【請求項３１】
非ＴＣＰデータセグメントを符号化されたチャネルを介して送信元エンドステーションから送信先エンドステーションに送信する方法であって、
前記エンドステーションの間の非ＴＣＰセッションに対して第１のインターセプトネットワークデバイスと第２のインターセプトネットワークデバイスとの間に符号化されたチャネルを確立するステップと、
前記インターセプトネットワークデバイスのうちの一方のデバイスにおいて前記非ＴＣＰセッションに関係するＴＣＰデータセグメントをインターセプトするステップと、
前記インターセプトネットワークデバイスのうちの一方のデバイスにおいてインターセプトされた非ＴＣＰデータセグメントをセグメント分割し選択可能な符号化レベルで符号化し、符号化された前記セグメントを前記インターセプトネットワークデバイスのうちの他のデバイスに送信するステップと、
前記非ＴＣＰセッションに対する推奨符号化レベルを受信するステップと、
前記符号化レベルを前記推奨符号化レベルとロックされていない最高の符号化レベルとの間の最小レベルに設定するステップと、
前記エンドステーションの間の前記非ＴＣＰセッションに対する性能測定の第１のシーケンスを実行するステップと、
前記符号化レベルを前記推奨符号化レベルに設定するステップと、
前記エンドステーションの間の前記非ＴＣＰセッションに対する性能測定の第２のシーケンスを実行するステップと、
前記第１のシーケンスの性能測定値と前記第２のシーケンスの性能測定値とを比較し、
前記第２のシーケンスの性能測定値が前記第１のシーケンスの性能測定値と同じであるかまたはそれよりもよい場合に、所定の時間、前記符号化レベルを前記推奨符号化レベルに設定するか、または
前記第２のシーケンスの性能測定値が前記第１のシーケンスの性能測定値よりもよくない場合に、前記推奨符号化レベルをロックする
ステップと
を含む方法。
【請求項３２】
請求項３１に記載の方法であって、所定の期間が過ぎた後前記通信セッションに対する最低のロックされた符号化レベルをアンロックするステップを含む方法。
【請求項３３】
請求項３１に記載の方法であって、別の通信セッションが完了したときに通信セッションのロックされた前記符号化レベルのうちの少なくとも１つをアンロックするステップを含む方法。
【請求項３４】
請求項３１に記載の方法であって、前記性能測定値は、ラウンドトリップタイムＲＴＴおよび損失を含む、方法。
【発明の詳細な説明】
【技術分野】
【０００１】
[0001]本発明は、通信データネットワークに関するものである。より具体的には、本発明は、ネットワークのエッジから見たときにネットワークを通るデータ伝送のスループットを高めるためのシステムおよび方法に関するものである。
【背景技術】
【０００２】
[0002]パケットベースのネットワークでは、送信元エンドステーションまたはネットワークから送信先エンドステーションまたはネットワークへのデータ通信を可能にするために、データストリームをより小さなデータパケットに分割する。これらのパケットがネットワークを横断するときに、輻輳または他のネットワーク制限のせいでこれらのパケットの一部の損失が生じることがある。このパケット損失は、送信元エンドステーションと送信先エンドステーションとの間の通信チャネルを利用するアプリケーションに甚大な影響を及ぼしうる。理想的には、ネットワークは、多くのアプリケーションの観点から、決定論的パケット遅延を有し、パケット損失がない、完全な性能を備えていなければならない。しかし、完全なネットワーク性能を達成するための資本コストと運用コストは、ほとんどのサービスプロバイダおよびエンタープライズネットワークプロバイダにとって実際的ではない。
【０００３】
[0003]したがって、アプリケーションに高いネットワーク性能をもたらすために低コストのネットワークで使用できるシステムおよび方法が必要である。一アプローチでは、損失および遅延へのレスポンスを改善するためにエンドステーション側にインストールされる新しい符号化プロトコルスタックを作成する。しかし、このアプローチは、送信元ネットワークおよび送信先ネットワーク内のすべてのエンドステーションが新しい符号化プロトコルスタックを使用するためにアップグレードされなければならないため自明なアプローチとは言えない。
【０００４】
[0004]別のアプローチでは、標準プロトコルをインターセプトするネットワークデバイス、およびインターセプトネットワークデバイス（intercepting network devices）間の符号化プロトコルを使用して、ネットワーク損失から復旧する。これらのデバイスは、常駐するアプリケーションがネットワークそれ自体において一般的に利用可能であるものに比べてよいネットワーク性能を必要とするネットワークの領域内に展開される。このようなデバイスは、米国特許第７，７４２，５０１号の一部継続出願である、米国特許第８，００９，６９６号の一部継続出願である、交付された特許第７，９５３，１１４号において説明されている。
【０００５】
[0005]符号化プロトコルは、損失を低減することを目的としている。この目標を達成するために、符号化プロトコルではネットワーク内で必要な全帯域幅を増大させる。帯域幅が増大すると実際には結果として、ネットワーク制約により代わりに損失が増大しうる。インターセプトネットワークデバイスは、この問題を検知し、通信するエンドステーションが望むアプリケーション性能を確実に達成するよう反応する必要がある。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】米国特許第７，９５３，１１４号
【特許文献２】米国特許第８，００９，６９６号
【特許文献３】米国特許第７，７４２，５０１号
【特許文献４】米国特許出願第１２／１９３，３４５号
【発明の概要】
【０００７】
[0006]一実施形態によれば、第２のネットワークを介して第１のネットワークから第３のネットワークにデータ伝送を転送する方法は、第１のネットワークから第１のタイプのパケットを受信するステップと、第１のタイプのそれぞれのパケットを第２のタイプのいくつかのパケットにセグメント分割するステップと、第２のタイプのパケットを第２のネットワークに送信するステップと、第２のタイプのパケットのそれぞれの少なくとも１つの符号化された複製を生成して第２のネットワークに送信するステップとを含む。符号化された複製パケットは、第２のタイプのすべてのパケットが第２のネットワークで受信されるとは限らない場合に第１のタイプのパケットが作成し直されることを可能にする。第２のタイプの十分な数のパケットおよび符号化された複製パケットが第１のタイプのパケットを作成し直すために受信されない場合、この方法は、選択された時間間隔において送信されたパケットの数に対して作成し直されていないパケットの数を表す損失率を決定し、損失率を最小にしようと試みるために符号化された複製パケットの生成に要するオーバーヘッドを動的に調整し、複数の時間間隔にわたって決定された損失率の著しい増加を検出し、決定された損失率の著しい増加を検出したことに応答して符号化された複製パケットの生成に要するオーバーヘッドを逐次的に低減し、低減されたオーバーヘッド要件で決定された損失率が安定するかどうかを判定し、その答えが肯定的であれば、オーバーヘッド要件の逐次的低減を終了する。
【０００８】
[0007]一実装において、符号化された複製パケットの生成に要するオーバーヘッドは、複数の時間間隔にわたって決定された損失率の著しい増加の検出に応答して符号化された複製パケットの生成の符号化レベルを調整することによって低減される。例えば、符号化レベルは、前記損失率の増加を十分に停止できるように低減されうる。複数の時間間隔にわたる決定された損失率の著しい増加は、損失率の変化、またはそれらの時間間隔にわたる損失率の平均を決定し、その変化を事前に選択された閾値と比較することによって検出されうる。
【０００９】
[0008]次に、本発明の実施形態について、添付されている図を参照しつつ、例としてのみ説明する。
【図面の簡単な説明】
【００１０】
【図１】[0009]本発明を実施することができる環境のブロック図である。
【図２】[0010]図１で使用されているインターセプトネットワークデバイス内のコンポーネントを例示するブロック図である。
【図３】[0011]標準パケットの例示的なセグメント化および符号化を示す図である。
【図４】[0012]損失を評価する第１のアルゴリズム例を示す図である。
【図５】[0013]平均損失を考慮する例示的な一実施形態を示す図である。
【図６】[0014]符号化レベルバックオフの一例を示す図である。
【図７】[0015]損失の著しい増加が検知され、符号化レベルバックオフが有効化されたときに実行されるステップを示す流れ図である。
【図８】[0016]符号化レベルバックオフが有効化された後に損失率安定化を検知するため実行されるステップを示す流れ図である。
【図９】[0017]損失の著しい増加が検知され、符号化レベルバックオフが有効化されたときに実行される代替的アルゴリズムを示す流れ図である。
【図１０】[0018]バースト損失による符号化レベルを制限する一例の流れ図である。
【図１１】[0019]符号化チャネルが開いたままでいる残り時間の間に制限された符号化レベルを処理する一例の流れ図である。
【図１２】[0020]期間ｄの間に制限された符号化レベルを処理する一例の流れ図である。
【図１３】[0021]制限された符号化レベルを処理する一例の流れ図である。この場合、符号化レベルは、制限された符号化レベルと一致するように一定期間にわたって増大される。
【図１４】[0022]本発明の一実施形態によるインタリーブモードの一例の流れ図である。
【図１５】[0023]本発明の一実施形態によるマルチレベルインタリーブモードの一例の流れ図である。
【図１６】[0024]インターセプトネットワークデバイスがバースト損失を処理しているときに実行されるステップを示す流れ図である。
【図１７】[0025]インターセプトネットワークデバイスがバースト損失を処理していて、インタリーブモードが有効化されているときに実行されるステップを示す流れ図である。
【図１８】[0026]インターセプトネットワークデバイスがインタリーブモードを出て、ランダムモードが有効化されているときに実行されるステップを示す流れ図である。
【図１９】[0027]インターセプトネットワークデバイスがインタリーブモードを出て、ランダムモードが有効化されているときに実行される代替的アルゴリズムを示す流れ図である。
【図２０】[0028]インターセプトネットワークデバイスがインタリーブモードを出て、ランダムモードが有効化されているときに実行される別の代替的アルゴリズムを示す流れ図である。
【図２１】[0029]インターセプトネットワークデバイスがインタリーブモードを出て、ランダムモードが有効化されているときに実行される別の代替的アルゴリズムを示す流れ図である。
【図２２】[0030]インターセプトネットワークデバイスがインタリーブモードおよび符号化レベルバックオフを使用してバースト損失を処理しているときに実行されるステップを示す流れ図である。
【図２３】[0031]バースト損失を処理するときに符号化レベルバックオフが必要かどうかを判定するために実行されるステップを示す流れ図である。
【図２４】[0032]図１のネットワーク要素間のＴＣＰトラヒックフローを示す梯子図である。
【図２５】[0033]図２４のＴＣＰセッションにおけるＴＣＰセグメントの損失を示す梯子図である。
【図２６】[0034]グッドプットおよびスループットを決定するために復号器においてＴＣＰセグメントがどのように取り扱われるかを定義する流れ図である。
【図２７】[0035]単一のＴＣＰ  ＡＣＫを複数のＡＣＫに分割するためのＩＮＤ符号器に対するアルゴリズムを示す流れ図である。
【図２８】[0036]１つのＴＣＰ  ＡＣＫを複数のＴＣＰ  ＡＣＫに分割するためのメカニズムを流れ図形式で定義する図である。
【図２９】[0037]図２７から始まる流れ図の続きの図である。
【図３０】[0038]符号化されたセグメントに埋め込まれた専用プロトコルを使用してラウンドトリップタイム（ＲＴＴ）を計算するための関数を分解して示す梯子図である。
【図３１】[0039]図３０のステップ３０００で必要とされるＲＴＴクエリメッセージを生成するための手順を記述した流れ図である。
【図３２】[0040]受信されたＲＴＴクエリパケットをＩＮＤでどのように取り扱うかを示す流れ図である。
【図３３】[0041]ＴＣＰセッションから収集された情報を使用してラウンドトリップタイム（ＲＴＴ）を計算するのに必要な関数を分解して示す梯子図である。
【図３４】[0042]ＴＣＰセッションに対するグッドプットおよびＲＴＴ測定に関連付けられている損失報告の取り扱いの一例を示す図である。
【図３５】[0043]ＵＤＰセッションに対する損失およびＲＴＴ測定に関連付けられている損失報告の取り扱いの一例を示す図である。
【図３６】[0044]符号化バックオフ（encoding backoff）の取り扱いの一例を示す図である。
【図３７】[0045]符号化レベルをアンロックする一例を示す図である。
【発明を実施するための形態】
【００１１】
[0046]本発明は、いくつかの好ましい実施形態に関して説明されるけれども、本発明はそれらの特定の実施形態に制限されないことは理解されるであろう。それどころか、本発明は、付属の請求項によって定められるような本発明の精神と範囲のうちにあるものとしてよいようなすべての代替形態、修正形態、および等価配置構成を対象とすることが意図されている。
【００１２】
[0047]図１は、送信元エンドステーション１０および送信先エンドステーション３０が標準プロトコル（例えば、パケットベースのプロトコル）を使用して通信するアプリケーションを有するネットワーク環境を例示している。このプロトコルは、例えば、インターネットまたは他の何らかの通信ネットワークとすることができるネットワーク２０を通して伝送される。エンドステーション１０および３０は、モデム、ローカルもしくはワイドエリアネットワーク、またはネットワーク２０にアクセスできる他のデバイスもしくはシステムを通じて接続されているパーソナルコンピュータなどの端末とすることができる。エンドステーション１０および３０上に常駐するいくつかのアプリケーションについては、さらによいネットワーク性能が必要となり、これらのアプリケーションに関係するパケットは、ネットワークデバイス４０および５０によってインターセプトされる。「インターセプト」ネットワークデバイス（「ＩＮＤ」）と言う場合、これは、ネットワークデバイス４０および５０がネットワーク性能を高める符号化プロトコルを使用して標準パケットを符号化することである。このネットワークの動作の仕方を例示するために、標準パケットフローは、送信元エンドステーション１０から送信先エンドステーション３０（すなわち、図１において左から右）であると仮定される。インターセプトネットワークデバイス４０は、送信元エンドステーション１０からの標準パケットを符号化し、それらの符号化されたパケットをネットワーク２０を通じてインターセプトネットワークデバイス５０に転送する。インターセプトネットワークデバイス５０は、パケットを復号化し、再構成された標準パケットを送信先エンドステーション３０に転送する。逆方向では、送信先エンドステーション３０から送信元エンドステーション１０へ流れるパケットは、インターセプトネットワークデバイス５０によって符号化され、ネットワーク２０越しにインターセプトネットワークデバイス５０に転送される。インターセプトネットワークデバイス４０は、これらのパケットを復号化し、再構成された標準パケットは、送信元エンドステーション１０に転送される。
【００１３】
[0048]図２は、ネットワーク性能を改善するために符号化プロトコルを実装するのに必要なモジュールを備えるインターセプトネットワークデバイス４０の例示的な一実施形態を示している。これらのモジュールは、単一のデバイス内にあるか、または複数のデバイス間に分散させることができる。図２の例示的な実施形態では、インターセプトネットワークデバイス４０は、ネイティブインターフェース６０、符号化インターフェース７０、復号器８０、および符号器９０を備える。ネイティブインターフェース６０は、送信元エンドステーション１０との間で標準パケットの送受信を行い、符号化インターフェース７０は、ネットワーク２０との間で符号化パケットの送受信を行う。
【００１４】
[0049]符号器８０は、ネイティブインターフェース６０から標準パケットを受信し、パケットを１つまたは複数のセグメントに分割することによって符号化パケットを生成し、この後、これらのセグメントは符号化インターフェース７０を使ってネットワーク２０に送信できる状態にある。復号器９０は、符号化インターフェース７０から符号化パケットを受信し、ネイティブインターフェース６０を使って送信元エンドステーション１０に送信するため標準パケットを生成する。
【００１５】
[0050]符号化パケットから標準パケットを作成し直す作業を補助するために、符号器９０は、付加的符号化パケットも作成することができる。これらの付加的符号化パケットは、標準パケットおよび符号化パケットから導出される。付加的符号化パケットは、１つまたは複数の符号化パケットがネットワーク２０を通しての送信中に失われた場合に送信先のインターセプトネットワークデバイス５０内の復号器が元の標準パケットを作成し直すか、または組み立て直すのを補助する。
【００１６】
[0051]一実施形態による標準パケットの符号化が図３に例示されている。説明を簡単にするため、元の標準パケットおよび符号化パケットからヘッダを省いてある。符号器において受信された標準パケット４００は、ｌバイト分のパケットペイロードを有しており、ｎ個のセグメント４０２にセグメント分割される。ｎがｌの整数係数として選択された場合、ｎ個のセグメントのそれぞれは、図示されているようにｌ／ｎバイトを有する。それに加えて、ｍ個の付加的符号化パケットが作成される。図３に示されている例では、ｍ＝１および追加すなわち付加的セグメント４０４は、論理関数（例えば、ＸＯＲ関数）をｎ個のセグメントのすべてに適用することによって作成されるパリティセグメントである。
【００１７】
[0052]符号器がセグメントおよび付加的符号化セグメントを作成するプロセスを完了した後、パケットにヘッダが追加され、符号化パケットおよび付加的符号化パケットを作成する。ヘッダでは、ネットワーク内に専用操作機能が期待されないように標準プロトコルを使用する。したがって、符号化パケットおよび付加的符号化パケットは、ネットワークを通して復号化インターセプトネットワーク要素に伝送される。符号器では、パケットのサイズを考慮し、標準プロトコルヘッダが符号化パケットに追加されるとネットワークの最大転送単位（ＭＴＵ）を超えることになるサイズの符号化パケットを送信するのを回避するためｎを自動的に増分することができる。この機能は、ジャンボフレームを取り扱えないネットワークに入る前にジャンボフレームを分割するのにも有用な場合がある。
【００１８】
[0053]復号器が符号化パケットおよび付加的符号化パケットから標準パケットを組み立て直すときに、復号器は符号化パケットの損失を処理することができる。十分な情報が付加的符号化パケットに含まれる場合、失われた符号化パケットによって引き起こされた欠落セグメントが作成し直される。損失が大きすぎる場合には、符号器はオプションを有する。標準パケットが制限された寿命を有する場合（ビデオパケットなど）、影響を受ける標準パケットは破棄される。アプリケーションがネイティブ機能としてパケット損失に対する回復性を備える場合、ここでもまた、標準パケットは破棄されうる。標準パケットが妥当な寿命を有し、アプリケーションがネイティブ機能として回復性を備えていない場合、復号器は、符号器に欠落セグメントの再送を要求することができる。これは、符号器は、ネットワークの他端で復号化に成功するまで標準パケットをバッファリングすると仮定する。
【００１９】
[0054]通信するアプリケーションに対するより高いネットワーク性能を可能にするために、インターセプトネットワークデバイス間で符号化チャネルが確立される。これらのチャネルの作成例は、米国特許出願第１２／１９３，３４５号において説明されている。本出願の目的に関して、インターセプトネットワークデバイス４０と５０との間の符号化チャネルは、ネゴシエーションに成功すると仮定される。符号化チャネルは、データと制御情報の両方を搬送するために使用され、符号化パケットおよび付加的符号化パケットは、インターセプトネットワークデバイス間で送受信することができる。
【００２０】
[0055]上記のネットワーク内のエンドステーション上に常駐するアプリケーションは、通信ネットワーク内の異なるレベルのパケット損失を許容することができる。インターセプトネットワークデバイスは、標準プロトコル信号伝達要素に基づきこれらのアプリケーションを区別することができる。ＦＴＰを使用するファイル転送の信号伝達にはＴＣＰポートが使用される。これは、６４０００の範囲内のＴＣＰポートを開いて、エンドステーション間でファイルをトランスポートする。ＴＣＰは、ネットワーク内の損失および遅延時間の変動に対する回復性を有する。転送の重要な目標は、ファイルが損なわれることなく、ネットワークに可能な適切なタイミングで届くことを確実にすることである。このアプリケーションは、テレビ会議アプリケーションとは対照的なものである。これらは、ＵＤＰポート５０６０上のセッション開始プロトコルを使用して信号伝達を行うことができ、また会議に関連するビデオ、音声、およびデータセッションに対する情報を含む。ビデオセッションは、損失に対する許容度が低く、アイフレーム（画面の完全な画像）の損失は、ビデオ圧縮アルゴリズムを大きく損なう可能性がある。ビデオストリームに必要な帯域幅が大きければ大きいほど、損失に対する許容度は低いが、それは、それぞれの標準パケットがビデオストリームに関係するより多くの情報を搬送しているからである。音声セッションは、人間の話言葉の予測的な性質のせいで損失に対して比較的高い許容度を有する。音声コーデックは、連続する音声ストリームを保証するためギャップを埋めることができる。いずれの場合も、ビデオおよび音声セッションは、ビデオブロッキングまたは音声クリッピングを回避するために１％未満の標準パケット損失を有する必要があり、ほとんどのプロバイダが、標準パケット損失を０．５％未満に抑えようとしている。
【００２１】
[0056]与えられているセッションに関する文脈内で、異なるストリームは、異なる損失目標で処理されうる。ディープパケットインスペクション（ＤＰＩ）は、アプリケーションの種類（ビデオ／音声／データ）を検知し、アプリケーションのその種類に対する構成済みネットワークポリシーに従って損失目標を設定するため、インターセプトネットワークデバイス内で使用されうる。最終的に、それぞれの標準パケットは、必要な保護レベルを識別するヘッダ内に用意された情報に基づきそれ専用の損失目標を有することができる（例えば、ＳＶＣ（スケーラブルビデオコーデック））。この損失目標は、ターゲット損失率（Target Loss Ratio）（ＴＬＲ）として定義される。
【００２２】
[0057]ＴＬＲは、ｎとｍの両方によって決定される符号化率を決定するために使用されうる。符号化率は、与えられたインターセプトネットワークデバイスに関連する符号化コンポーネントで終端する１つまたはすべての符号化チャネルに対して観察された、および／または報告されたネットワーク性能に基づき調整されうる。目標は、符号化チャネルがセッションに対するＴＬＲを達成するように、またはそれ以上に、符号化レベルを設定することである。
【００２３】
[0058]図４を参照すると、観察された損失率の決定は、インターセプトネットワークデバイスＡ１１０６とインターセプトネットワークデバイスＢ１１０７との間の符号化チャネルに関して、特に、インターセプトネットワークデバイスＡからインターセプトネットワークデバイスＢへの方向でチャネルを見て、説明されることがわかる。「無損失」、または許容可能な損失の状態の下で、符号化は、必要ないときにネットワーク内の付加的帯域幅を使用することを回避するためにｎ＝１およびｍ＝０に設定されうる。インターセプトネットワークデバイスＢ１１０７の復号器１１０９は、図４に例示されているサブルーチンを使用して、受信したパケットの数ＰｘおよびＷ単位時間の間隔（例えば、Ｗ＝８秒）で損失したパケットの数ＬＰｘをカウントする。この時間間隔は、特定の数のパケットの受信として定義することもできる。あるいは、ＬＰｘは、再送要求の数を表すことができ、回復に成功した損失は、損失率の一部としてはカウントされない。それぞれの間隔の終わりは、ステップ１１００で検知され、損失率Ｌｘは、例えば、
【００２４】
【数１】
2015505183.tif 000003
【００２５】
を使用して、ステップ１１０１で計算される。
[0059]式１の中のＰｘは、期間Ｗで送信された標準パケットの数とすることができる。この場合、ＬＰｘは、失われた標準パケットの数である。これは、ＳＰＬｘと称される。Ｐｘに対する別のオプションは、期間Ｗで標準パケットを組み立て直すために復号器に届いているべきである符号化セグメントおよび付加的符号化セグメントの数をカウントすることである。次いで、ＬＰｘは、期間Ｗでネットワーク内の失われたセグメントおよび付加的セグメントの数である。これは、ＥＰＬｘと称される。一般に、ＳＰＬｘは、符号化スキームが復号器による損失からの回復を助けるという事実によりＥＰＬｘより低く、そのため、標準パケットに関係する符号化パケットが失われたとしても標準パケットを再現することができる。その観点から、ＥＰＬｘは、ネットワークの性能のより正確な指標である。
【００２６】
[0060]現在の損失率（Ｌｘ）は、標準パケットの測定結果から計算される損失を指すものとしてよい（ＳＰＬｘ）。これは、符号化および付加的符号化セグメントから計算された現在の損失を指すものとしてよい（ＥＰＬｘ）。これは、ＳＰＬｘとＥＰＬｘとの組み合わせから計算された現在の損失率を指すものとしてもよい。この組み合わせの一例は、
【００２７】
【数２】
2015505183.tif 000004
【００２８】
であるが、ただし式中、ωｓは標準パケットの損失に付与された重みであり、ωＥは、符号化セグメントの損失に付与された重みである。
[0061]偶発的に発生する事象への反応を回避するために、ステップ１１０２では、最近のＺ回の損失測定結果にわたって平均損失を計算する。最近のネットワークステータスを考慮するために、例えば、式
【００２９】
【数３】
2015505183.tif 000005
【００３０】
を使用して、加重平均をとり、最近の現在の損失率の測定に重み付けすることができるが、ただし式中、ＷＬｘは、間隔ｘに対する最近の損失の測定結果の加重平均を表す。重みは、ｉ＜ｊ≦ｘに対してωｉ＜ωｊとなるような重みである。
【００３１】
[0062]多数の損失測定の経過を追うのを回避するために、例えば、式
【００３２】
【数４】
2015505183.tif 000006
【００３３】
を使用し、前の加重損失を使用して、新しい加重損失を評価することもできるが、ただし式中、ωｏｌｄおよびωｎｅｗは、一般にωｏｌｄ＜ωｎｅｗとなるように設定された重みである。
【００３４】
[0063]適宜、加重損失率をステップ１１０３で正規化し、整数のみを使用してルックアップを簡素化することができる。正規化損失ＮＬｘは、式
【００３５】
【数５】
2015505183.tif 000007
【００３６】
を使用して計算することができるが、ただし式中、Ｎは、正規化係数である（例えば、Ｎ＝１００００）。
[0064]次いで、現在の符号化レベルを抽出するためステップ１１０４でＮＬｘを使用して符号化レベルテーブルのインデックスを作成する。符号化レベルテーブルの一例が以下に示されているが、これは８つのレベルを構成するが、ただし表中、ＩＮＴ＿ｍａｘは、最大整数または大きな値（例えば、１００００）である。
【００３７】
【表１】
2015505183.tif 000008
【００３８】
[0065]次いで、インターセプトネットワークデバイスＢ１１０７の符号器１１１１は、抽出された符号化レベル１１０５をインターセプトネットワークデバイスＡ１１０６にそのセッションのために送信されたそれぞれの符号化パケットのヘッダ内に挿入する。インターセプトネットワークデバイスＡ１１０６内の復号器１１１２は、受信したパケットから符号化レベルを読み取る。次いで、ＩおよびＭａｘ＿ｎの値を得るために符号化レベルで新しいパラメータテーブルのインデックスを作成するが、この値は現在の符号化レベルが与えられた場合にｎが設定されるべき最大値である。複数の新しいパラメータテーブルを使用して、アプリケーション要件および許容可能なオーバーヘッドに基づき異なるＴＬＲを達成することができる。８個の損失率を使用するこのような新しいパラメータテーブルの一例を以下に示す。
【００３９】
【表２】
2015505183.tif 000009
【００４０】
ただし表中、ＩＮＴ＿ｍａｘは、最大整数（無限大）であるものとしてよい。
[0066]インターセプトネットワークデバイスＡ１１０６の符号器１１０８がサイズｓのパケットを符号化する前に、Ｒｅｃ＿ｎを得るために、ｓで事前構成されたパケットサイズテーブルのインデックスを作成するが、この値はパケットサイズが与えられた場合にｎの推奨値を表す。パケットサイズテーブルの一例を以下に示す。
【００４１】
【表３】
2015505183.tif 000010
【００４２】
[0067]このテーブルを使用すると、サイズｓ＜８８バイトのパケットは、Ｒｅｃ＿ｎ＝１を返すことがわかる。ｓ＞５２８バイトであれば、Ｒｅｃ＿ｎ＝４である。次いで、パケットを符号化するために使用されるｎの値が、ｎ＝ｍｉｎ（Ｒｅｃ＿ｎ，Ｍａｘ＿ｎ）で決定される。
【００４３】
[0068]別の実施形態では、復号器１１０９は、上記の式（３）または（４）を使用して加重損失率ＷＬｘを計算する。式（５）を使用し、適宜正規化してＮＬｘを計算する。正確な損失値（ＷＬｘまたはＮＬｘ）が、セッションに対する符号化チャネル内に挿入された制御メッセージにより規則正しい間隔で（例えば、１秒おきに）復号器１１１２に送られる。復号器１１１２は、制御メッセージから正確な損失値を抽出する。符号器１１０８は、正確な損失値を使用して、新しいパラメータテーブルのインデックスを作成し、Ｍａｘ＿ｎおよびｍを求める。
【００４４】
【表４】
2015505183.tif 000011
【００４５】
[0069]ｎの値は、ｎ＝ｍｉｎ（Ｒｅｃ＿ｎ，Ｍａｘ＿ｎ）として導出される。異なるターゲット損失率を反映するように複数の新しいパラメータテーブルを構成することができ、符号器１１０８は、アプリケーションのターゲット損失率に基づき適切なテーブルを使用する。現在の損失率の代わりに実際の損失率を送信することで、符号化側でパラメータテーブルを構成することができ、したがって、構成が簡素化される。
【００４６】
[0070]前の式は、個別のストリームに対する損失率の計算の仕方を示している。例として図５を取りあげると、インターセプトネットワークデバイスＤ１２０３は、インターセプトネットワークデバイスＡ１２０２、Ｂ１２０７、およびＣ１２０８をそれぞれ発信元とする３つのフロー１２０４、１２０５、および１２０６の損失率を計算することがわかる。フローについて測定された損失率を返すことに加えて、受信側インターセプトネットワークデバイスは、間隔ｘで送られる３つのフローから、加重損失率ＡＬｘの平均を計算することができる。
【００４７】
[0071]間隔期間は、単一のフローに対する損失率を計算するために使用される間隔期間と同じであってよい。平均損失率は、例えば、
【００４８】
【数６】
2015505183.tif 000012
【００４９】
で計算することができるが、ただし式中、ＷＬｉは上記の式（３）または（４）を使用して計算できる。次いで、上記の式（５）を使用してＡＬｘを正規化し、正規化された平均損失率ＮＡＬｘを求めることができる。次いで、符号化レベルテーブル内でＮＡＬｘをインデックス付けして、遠端における平均損失率（ＡＬＦＥｘ）を得る。符号化レベルテーブルは、上に例示されているか、または異なる数で事前構成されているものと同じであってよい。ＡＬＦＮｘが、上で説明されているように計算されたフロー毎の現在の損失率とともにインターセプトネットワークデバイスＤ１２０３の復号器によって各インターセプトネットワークデバイス１２０２、１２０７、および１２０８に送信される符号化パケットのパケットヘッダに加えられる。
【００５０】
[0072]集約情報がパケットヘッダ内に含まれる場合、インターセプトネットワークデバイス１２０２、１２０７、または１２０８は、その情報を使用してその符号化レベルを変更するかどうかを決定することができる。インターセプトネットワークデバイスＡ１２０２の復号器は、測定期間ｘにおいてアクティブであるｇ個の符号化されたセッション１２１１、１２１２、および１２０４から符号化チャネルで受信された現在の損失率（ｃｕｒｒｅｎｔ  ｌｏｓｓ  ｒａｔｉｏ）の平均である近端における平均損失（ＡＬＮＥｘ）も
【００５１】
【数７】
2015505183.tif 000013
【００５２】
で計算する。
[0073]図５の例において、インターセプトネットワークデバイスＡ１２０２で計算されたＡＬＮＥｘは、インターセプトネットワークデバイスＤ１２０３、Ｅ１２０９、およびＦ１２１０から受信された現在の損失率の平均を表す。
【００５３】
[0074]セッションに対する現在の損失率とＡＬＦＥｘとの差が所定の閾値より低い場合、上で説明されているように、現在の損失率を使用して符号化レベルを設定する。この場合、現在の損失率が計算されたＡＬＮＥｘよりもよいか、またはわずかに悪いので、セッションは上流ネットワークを輻輳させていることはありえなと想定される。
【００５４】
[0075]現在の損失率とＡＬＦＥｘとの差が所定の閾値以上であり、かつ現在の損失率−ＡＬＮＥｘが所定の閾値以上である場合、その現在の損失率は無視され、符号化レベルは、パケットサイズテーブルにのみ従って設定され、与えられたパケットに対する最も帯域幅効率の高い符号化方法を選択することによって帯域幅の使用度を最小限度に抑える。所定の閾値は異なっていることもあり、またネットワークポリシーおよびトポロジに従って設定することが可能である。
【００５５】
[0076]ｎがどのように決定されようと（現在の損失または平均損失）、ｎの値の増加は、オーバーヘッドの増分が大きくならないように徐々に行われうる。テーブルによってｎのより大きな値が推奨される場合、これはその後の標準パケットの部分集合にのみ適用することができ、次に到来するｗ個の標準パケットのうちのｖ個の標準パケットのみがｎの増加された値を使用し、他のｗ−ｖ個のパケットはｎに対して前の低い値を使用する。ｖおよびｗの値は、測定された損失率が増加し続ける場合、または測定された損失率が次のレベルに近づくときにも変化しうる。
【００５６】
[0077]例えば、測定された損失（加重または正規化）が０％の場合、ｎ＝１、ｍ＝０、およびｖ＝ｗ＝１である。したがって、すべてのパケットは、ｎ＝１、ｍ＝０で符号化される。測定された損失が０％より大きく、０．０５％より小さい値まで増加する場合、ｎ＝４、ｍ＝１であるが、ｖ＝１およびｗ＝３であり、３つのパケットのうちの１つのみがｎ＝４で符号化され、他は、前の符号化レベルｎ＝１、ｍ＝０を使用する。測定された損失が０．０５％を超えるが、０．１％未満である場合、ｖ＝１およびｗ＝２に変化し、２つおきのパケットがｎ＝４で符号化され、他は、前の符号化レベルｎ＝１、ｍ＝０を使用する。測定された損失が０．１％を超えるが、０．２％以下である場合、ｖ＝１およびｗ＝１を使用し、すべてのパケットがｎ＝４で符号化される。ｖおよびｗの異なる値は、異なる所定の損失率でオーバーヘッドの増加を平滑化するように構成されうる。これができると、異なる損失率の間の伝達関数が著しく平滑化されうる。
【００５７】
[0078]インターセプトネットワークデバイスは、符号化レベルが上がるにつれネットワーク損失が減少するという理論に基づき動作する。しかし、ｎおよび／またはｍが増加するにつれ、インターセプトネットワークデバイスによって生成され、ネットワークを横断する、パケットの数が増加する。この結果、アプリケーション通信を達成するために必要な帯域幅が増大する。
【００５８】
[0079]帯域幅の増大は、場合によっては、損失の増大につながりうる。経路内の１つまたは複数のリンクが制約された帯域幅である場合、追加されるパケットは、実際にこの時点で輻輳を増大させる。送信用のリンクにパケットが到来しても、すぐに送信される場合も送信できない場合もある。パケットが送信できない場合のために、ほとんどのデバイスにおいて後で送信できるようにパケットをバッファリングするキューが実装される。いくつかのデバイスでは、このリンクに関連付けられているキューが特定のレベルまで大きくなると、ネットワーク輻輳制御機構（例えば、ＲＥＤ、ＷＲＥＤなど）が呼び出され、このリンク上の輻輳を処理することができる。このリンクに到来するパケットの数が増えると、符号化パケットの１つが破棄される可能性が高まる。この確率は、符号化チャネルによって加えられる追加のオーバーヘッドによっても高まる。追加のオーバーヘッドは、キューの深さをたちまち大きくし、したがって、パケットが破棄される確率も高まる。
【００５９】
[0080]輻輳の別の原因として、コンテキストのスイッチングがある。送信元エンドステーションと送信先エンドステーションとの間の経路内のネットワークデバイスは、期間毎に限られた数のパケットを転送することしかできない。したがって、符号化パケットをトランスポートするのに十分なリンク帯域幅が利用可能であっても、ネットワークデバイスはすべてのフレームを転送できるわけではなく、そのため損失が生じる。
【００６０】
[0081]したがって、経路内のパケットの数を増やす符号化レベル、およびオーバーヘッドの量を大きくすることによって、損失率が高まりうる。インターセプトネットワークデバイスは、この状況に対応するためのアルゴリズムを必要とする。最初に、インターセプトデバイスが、符号化チャネル上の損失率の著しい増加（ｓｉｇｎｉｆｉｃａｎｔ  ｉｎｃｒｅａｓｅ）を検知する必要がある。これは、例えば、一定期間にわたる損失率の結果を追跡することによって、行える。これは、式（１）または（２）によって計算された現在の損失率、式（３）または（４）によって計算された加重損失率、式（５）によって計算された正規化された損失率、または損失を求める任意の他の方法によるものであってよい。
【００６１】
[0082]著しい増加を検知する方法の１つは、損失率の瞬間的変化を使用するものである。これは、現在の損失率と前の損失率との差を見るものである。
ΔＣＬＲｘ＝ＣＬＲｘ−ＣＬＲｘ−１    （８）
この差がＳＩＴとして定義される著しい増加の閾値を超える場合、損失率の著しい増加（ｓｉｇｎｉｆｉｃａｎｔ  ｉｎｃｒｅａｓｅ）が検知される。著しい増加が生じたと誤って宣言するのを回避するため、送信元インターセプトネットワークデバイスと送信先インターセプトネットワークデバイスとの間で送信される符号化パケットの数（ｔｈｅ  ｎｕｍｂｅｒ  ｏｆ  ｅｎｃｏｄｅｄ  ｐａｃｋｅｔｓ）は、統計的に関連性を有していなければならない。これは、以下の式の場合に取り込まれる。
【００６２】
【数８】
2015505183.tif 000014
【００６３】
[0083]瞬間的損失率を使用する代わりに、前の式において平均損失率を使用することができる（式（３）および（４）のように）。変化は、式（１０）を使用して計算することができる。
【００６４】
ΔＷＬＸｘ＝ＷＬＸｘ−ＷＬＸｘ−１    （１０）
次いで、著しい増加（ｓｉｇｎｉｆｉｃａｎｔ  ｉｎｃｒｅａｓｅ）を以下のように決定することができる。
【００６５】
【数９】
2015505183.tif 000015
【００６６】
[0084]別のアプローチでは、増加が符号化レベルであって有効化されている場合に損失率を記録する。損失率の変化（ＣＬＲｏｒｉｇｉｎａｌ）が記録され、現在の瞬間的な損失率との比較の基準として使用される。現在の損失率が、例えば元の損失率の１０倍である場合、損失の著しい増加（ｓｉｇｎｉｆｉｃａｎｔ  ｉｎｃｒｅａｓｅ）が検知されている。
【００６７】
【数１０】
2015505183.tif 000016
【００６８】
[0085]損失率の著しい増加が検知された後、インターセプトネットワークデバイスは、符号化レベルバックオフスキームを使用して反応する。この場合、インターセプトネットワークデバイスは、符号化レベルを増加させる代わりに減少させることによって損失に反応する。図６は、損失率の著しい増加の検出に応答して符号化レベルを減少させる一技術の流れ図である。最初に、ステップ１３００において、損失率の増加を停止する符号化レベルを見つけようとする。このレベルが達成された後、ステップ１３０１において、損失率が安定していることを確認してからインターセプトネットワークデバイスを損失率の通常処理に戻す。
【００６９】
[0086]図７は、図６のステップ１３００の一実装を示している。このアルゴリズムは、損失率の増加を停止する符号化レベルを見つけるステップを定義する。このアルゴリズムは、ステップ１４００で現在の損失率を記録することから開始し、次いで、チャネルの符号化レベルが、ステップ１４０１で下げられる。符号化レベルの低下は、いくつかの方法で実行できる。例えば、符号化レベルは、アルゴリズムの反復毎に直線的に低下させるか、または指数関数的に減少させることができる。一実装では、両方の方法をサポートし、符号化チャネルが確立されるときにこれらの方法のうちの１つを選択することができる。別の例では、符号化チャネルが作成される前に設定されている構成ポリシーを使用する。
【００７０】
[0087]ステップ１４０１で符号化レベルが低減された後、ステップ１４０２において、符号化レベルが０より大きいかどうかを判定する。ステップ１４０２で否定的な答えであれば、現在の損失率は開始時の損失率よりいぜんとして高く、符号化バックオフアルゴリズムが動作していないことを示し、そのため、アルゴリズムはステップ１４０３で打ち切られる。次いで、符号化チャネルは、通常の損失率処理に戻るか、またはｎ＝１およびｍ＝０に戻り、ユーザおよび／またはシステムに通知する。
【００７１】
[0088]ステップ１４０２での答えが肯定的である場合、システムはステップ１４０４に進み、そこで、インターセプトネットワークデバイスは一定期間ｄの間待ってから、ステップ１４０５で現在の損失率を再びサンプリングする。次いで、ステップ１４０６は、現在の損失率がステップ１４０６の開始時の損失率より高い、すなわち、損失率が所定のある量だけ変わらず増加しているかどうかを判定し、アルゴリズムは、ステップ１４０６からステップ１４０１および１４０２に戻り、チャネルに対する符号化レベルを再び下げる。ステップ１４０６での答えが否定的である場合、システムはステップ１４０７に進み、現在の符号化レベルの結果損失率が安定しているかどうかを判定する。
【００７２】
[0089]図８は、図６のステップ１３０１の一実装を示している。このアルゴリズムは、現在の符号化レベルの結果安定した損失率をもたらしているかどうかを判定するステップを定義する。このアルゴリズムは、ステップ１５００で初期化されたループ内で実行される。次いで、インターセプトネットワークデバイスは、ステップ１５０１で一定期間ｄの間待ってから、ステップ１５０２で現在の損失率を再びサンプリングする。現在の損失率が開始時の損失率より著しく高い場合、ステップ１５０３でアルゴリズムは終了し、符号化レベルのバックオフに戻る。ステップ１５０３において、現在の損失率が開始時の損失率より低いままであるかどうかを判定し（ステップ１５０３）、次いで、アルゴリズムがループカウンタをインクリメントし（ステップ１５０４）、最大反復回数に達するまで現在の損失率のサンプリングを続ける（ステップ１５０５）。この時点で、損失率の著しい増加が処理されたため、アルゴリズムは終了する。
【００７３】
[0090]図６のアルゴリズムの他の実装がある。例えば、図９は、符号化レベルバックオフスキームの代替的実装を示している。この場合、アルゴリズムは、ステップ１６００で開始時の損失率を現在の損失率の値に設定し、次いで、ステップ１６０１において、最初に、損失率が下げられるかどうかを判定するため符号化レベルを上げる。ステップ１６０４で、損失率の低下を検知した場合、アルゴリズムは終了して、損失率が安定していることを確認するステップに進み、その後、通常の損失率処理に戻る。ステップ１６０４で、損失率の低下が検知されない場合、アルゴリズムはステップ１６０５および１６０６に進み、符号化レベルを２レベル下げ、次いで、ステップ１６０２に進み、一定期間待ってから現在の損失率を再びチェックする。これが成功した場合（ステップ１６０３および１６０４）、アルゴリズムは、損失率が安定していることを確認してから通常の損失率処理に戻る。ステップ１６０４において、現在の損失率が開始時の損失率よりいぜんとして高いと判定し、ステップ１６０５において、これが最初の反復でないと判定した場合、アルゴリズムは図７のアルゴリズムを使用して符号化レベルのバックオフを続ける。
【００７４】
[0091]損失率の著しい増加を処理する別のアプローチ（図６のステップ１３００における）では、図１０のアルゴリズムを使用して、著しい増加を引き起こしている符号化レベルを制限する。ステップ１７００において、現在の符号化レベルは制限された符号化レベルとして記録され、次いで、現在の符号化レベルが、ステップ１７０１で下げられる。次いで、ステップ１７０２において、現在の符号化レベルが制限された符号化レベル未満に留まることを確認する。
【００７５】
[0092]図６のステップ１３０１において、符号化レベルの制限が損失率を安定化させるかどうかを判定する方法が多数ある。図１１に示されている方法の１つは、符号化チャネルがアクティブである間に符号化レベルが再度使用されることのないようにアルゴリズムを単に終了するというものである。図１２は、ステップ１８０１で符号化チャネルに対する符号化レベルを再有効化する前にステップ１８００で一定期間ｄだけ遅延する代替的技術を示している。図１３は、符号化レベルがゆっくりと調整されて制限された符号化レベルに戻る別の代替的形態を示している。これが行われる期間は、ステップ１９００で設定された遅延期間ｄ、およびステップ１９０２で符号化レベルを増加させるために使用される増分に依存する。ステップ１９０１は、現在の符号化レベルを制限された符号化レベルと比較して、現在の符号化レベルが制限された符号化レベルより小さいかどうかを判定する。答えが肯定的である限りにおいて、システムはステップ１９０２に進み、符号化レベルを上げる。制限されたレベルが達成された後、アルゴリズムはステップ１９０３で終了する。
【００７６】
[0093]高レベルのネットワーク損失を処理するための別の戦略は、インタリーブ方式（「インタリーブモード」と称される）で符号化パケットを送信するように符号器を構成することであり、これにより、異なる標準パケットにまたがって複数の符号化パケットを失うリスクを分散させ、符号化パケットを組み立て直しできる確率を高めることができる。したがって、符号化パケットのグループをそれぞれのグループが単一の標準パケットに対応するように順次送信する代わりに、異なる標準パケットからの符号化パケット同士をインタリーブする。図１４は、インタリーブモードの一例を示す。この例では、標準パケットＡ、Ｂ、およびＣがそれぞれ符号化パケットＡ１、Ａ２とＢ１、Ｂ２、Ｂ３とＣ１、Ｃ２、Ｃ３、Ｃ４とにセグメント化されると仮定している。符号化パケットＡ２、Ｂ３、およびＣ４は、付加的符号化パケットである。各標準パケットに従ってグループ化されたこれらの符号化パケットを送信する代わりに、これらは、ｋ個の標準パケットのグループによってインタリーブされる。図１４の例では、ｋ＝３である。符号器は、ｋ個の標準パケットに対応する符号化パケットをバッファ１３０３内に格納する。あるいは、符号器は、所定の期間に、または時間依存の情報が検知されるまで（例えば、ディープパケットインスペクションを介して）、到来する多数のパケットを格納する。並べ替えを回避するために、符号化パケットの集合を、それぞれの標準パケットの最後の２番目のデータがテールにあり、最後に送信され、それぞれの標準パケットの第１の符号化パケットがヘッドにあり、最初に送信されるように左に揃えられる。符号器は、物理的インターフェース１３０４上で、ヘッドにあるデータ単位を上から下への順序により、または同じ標準パケットからの２つの連続する符号化パケットの送信を最小にする順序により、送信する。図１４の例では、符号化パケットは、Ｃ１、Ｂ１、Ｃ２、Ａ１、Ｂ２、Ｃ３、Ａ２、Ｂ３、およびＣ４の順序で送信されうる。すべての付加的符号化パケットを最後に送信することで遅延を最小にすることができる。このインタリーブは、ランダムに実行することもできる。インタリーブするパケットのグループは、インターフェースから送信されるすべての符号化パケットを含みうるか、またはインタリーブするグループは、同じアプリケーション（例えば、テレビ会議の同じチャネル）、同じ送信先、または事前構成されたグルーピングの符号化パケットを含みうる。
【００７７】
[0094]図１５では、インタリーブされた符号化パケットの異なるインタリーブされたグループ１４０１、１４０２、１４０３の符号化パケットをインタリーブすることによって別のレベルのインタリーブが達成される。このようなインタリーブによって、データ単位の大きな損失の影響を最小限度に抑えることができ、採用されている符号化および戦略に応じて、この種類の損失は回復可能であるものとしてよい。
【００７８】
[0095]「インタリーブモード」は、バースト損失に対処する場合にも使用することができる。バースト損失は、現在の損失率（すなわち、式（１）、（２）、（３）、または（４）の結果）が所定の量（例えば、２倍）だけターゲット損失率を超えている場合に検知することができる。バースト損失を処理する一技術は、図１６に例示されている。バースト損失が最初に検知されると、損失率の跳ね返りが抑制される。バースト損失が持続すると仮定すると、インタリーブモードへの遷移がステップ２０００で実行される。インタリーブモードが有効化されている場合、ステップ２００１でランダムモードに戻る条件がチェックされ、検証される。
【００７９】
[0096]インタリーブモードへの遷移の一例は、図１７に示されている。アルゴリズムは、インタリーブモードを有効化する前に問題が持続していることを確認するために現在の損失率の跳ね返りを抑制する。この実装では、ステップ２１００で初期化されるループを使用し、次いで、ステップ２１０１で一定期間ｄの間遅延する。現在の損失率は、ステップ２１０２で取り出され、ステップ２１０３でチェックされて、現在の損失率が、この標準的なプロトコルタイプに対して許容可能である、ターゲット損失率の２倍を超えているかどうかを判定する。ステップ２１０３で答えが肯定的である場合、ステップ２１０４でループカウンタがインクリメントされ、次いでステップ２１０５で、ループカウントが最大反復回数に達したかどうかを判定する。答えが否定的である場合、システムはステップ２１０１に戻り、ステップ２１０２および２１０３を繰り返す。ステップ２１０３で答えが否定的であれば、ルーチンは終了し、ステップ２１０５で答えが肯定的であれば、ステップ２１０６でインタリーブモードが有効化される。
【００８０】
[0097]したがって、遅延期間ｄ×最大反復回数において損失率が維持されると仮定すると、キューはインタリーブモードに設定され、アルゴリズムはランダムモードへの復帰を処理するに続く。損失率が引き続きアプリケーションに対するＴＬＲの２倍を超えていなければ、アルゴリズムは終了し、インタリーブモードが無効化される。
【００８１】
[0098]ランダムモードへの復帰は、図１８〜２１に例示されているいくつかの異なる方法のうちのどれかによって実行されうる。符号化チャネルに実際に使用される方法は、いくつかの方法で選択されうる。インターセプトネットワークデバイスは、すべての符号化チャネルに使用する方法で構成されうる。また、インターセプトネットワークデバイスは、符号化される標準プロトコルに適合するポリシーを有するものとしてよい。あるいは、インターセプトネットワークデバイスは、符号化チャネルが確立されるときに使用する方法をネゴシエートすることができる。
【００８２】
[0099]図１８は、ランダムモードに復帰するための最も直接的方法を例示している。この場合、符号化チャネルがインタリーブモードに入っているときにステップ２２００でタイマーが起動される。タイマーがタイムアウトになると、ステップ２２０１でチャネルがランダムモードに戻る。
【００８３】
[0100]図１９において、アルゴリズムは、キューがランダムモードに戻る前にインタリーブモードが現在の損失率に影響を及ぼすことを確実にする。現在の損失率は、ランダムモードが有効化される前に期間ｄ×最大反復回数の間にターゲット損失率の２倍より低くなければならない。これを完全にするために、ループを使用して現在の損失率をサンプリングする。ループは、ステップ２３００で初期化され、次いで、ステップ２３０１で一定遅延期間ｄの間待つ。現在の損失率は、ステップ２３０２で取り出され、ステップ２３０３でチェックされて、現在の損失率が、ターゲット損失率の２倍を超えているかどうかを判定する。ステップ２３０３で答えが肯定的である場合、ステップ２３０４でループカウンタがインクリメントされ、次いでステップ２３０５で、ループカウントが最大反復回数に達したかどうかを判定する。答えが否定的である場合、システムはステップ２３０１に戻り、ステップ２３０２および２３０３を繰り返す。ステップ２３０５で答えが肯定的であれば、ステップ２３０６でランダムモードが有効化される。
【００８４】
[0101]図２０は、現在の損失率を使用する代わりに、平均損失率が使用されることを除き、図１９に類似している。ループは、ループカウンタを０に設定し、開始時の平均損失を現在の平均損失に設定することによってステップ２４００で初期化され、次いで、システムが、ステップ２４０１で一定遅延期間ｄの間待つ。現在の平均損失率は、ステップ２４０２で取り出され、ステップ２４０３でチェックされて、現在の平均損失率が、開始時の平均損失を超えているかどうかを判定する。ステップ２４０３で答えが肯定的である場合、ステップ２４０４でループカウンタがインクリメントされ、次いでステップ２４０５で、ループカウントが最大反復回数に達したかどうかを判定する。答えが否定的である場合、システムはステップ２４０１に戻り、ステップ２４０２および２４０３を繰り返す。ステップ２４０５で答えが肯定的であれば、ステップ２４０６でランダムモードが有効化される。
【００８５】
[0102]図２１は、符号化レベルを変更することも許されていることを除き、図２０に類似している。ループは、ループカウンタを０に設定し、開始時の平均損失を現在の平均損失に設定することによってステップ２５００で初期化され、次いで、システムが、ステップ２５０１で一定期間ｄの間待つ。現在の平均損失率は、ステップ２５０２で取り出され、ステップ２５０３でチェックされて、現在の平均損失率が、開始時の平均損失を超えているかどうかを判定する。ステップ２５０３で答えが否定的であれば、ステップ２５６０７で現在の平均損失率を処理するように符号化レベルが調整され、ステップ２５００に戻る。ステップ２５０３で答えが肯定的である場合、ステップ２５０４でループカウンタがインクリメントされ、次いでステップ２５０５で、ループカウントが最大反復回数に達したかどうかを判定する。答えが否定的である場合、システムはステップ２５０１に戻り、ステップ２５０１〜２５０３を繰り返す。ステップ２５０５で答えが肯定的であれば、ステップ２５０６でランダムモードが有効化される。
【００８６】
[0103]図２２は、ＴＬＲの２倍を超える現在の損失率またはバースト損失の両方の著しい変化を処理することを組み合わせたアルゴリズムを示している。この実施形態では、アルゴリズムは、符号化チャネルがインタリーブモードに遷移することを必要としているかどうかを判定することによってステップ３００から開始する。これが必要であると仮定して、アルゴリズムは、ステップ３００１で符号器レベルバックオフが必要かどうかをチェックして確認する。バックオフが必要かどうかに関係なく、アルゴリズムは、ステップ３００２で符号化チャネルがランダムモードにいつ戻るかを決定する。
【００８７】
[0104]ステップ３０００でインタリーブモードへの遷移を処理することは、図１８と同じようにして行える。ステップ３００２で、図１８〜２１に例示されているアルゴリズムのうちのどれかを使用して、ランダムモードに戻る遷移を見る。
【００８８】
[0105]ステップ３００２でバックオフが必要かどうかを判定することは図２３に例示されている。このアルゴリズムは、ランダムモードからインタリーブモードへの遷移の効果の跳ね返りを抑制する。この測定は、符号化レベルの増加の後に実行すべきである。これは、一定遅延期間ｄ×最大反復回数の間ループして、現在の損失率をチェックする。ループは、ステップ３１００で初期化され、ステップ３１０１で一定遅延期間ｄを有する。この遅延期間が終了すると、現在の損失率がステップ３１０２でサンプリングされ、ステップ３１０３でＴＬＲの２倍と比較される。現在の損失率がＴＬＲの２倍より大きい場合、超過カウンタがステップ３１０４でインクリメントされる。そうでない場合、ループカウンタは、ステップ３１０５でインクリメントされる。このプロセスは、ループカウンタがステップ２５０６で最大反復回数に達するまで続く。この時点で、超過カウンタがステップ２５０７でチェックされ、それが最大反復回数に等しければ、ステップ３５０８で符号化レベルバックオフは有効化される。そうでない場合、アルゴリズムは、ランダムモードへの復帰の処理に進む。
【００８９】
[0106]ＴＣＰなどのいくつかのプロトコルは、本質的に、信頼性および再送機能を備える。この場合、ＩＮＤは、ネイティブプロトコル情報を使用して、損失および適切な符号化レベルを決定することができる。ＴＣＰの場合、送信元エンドステーションから送信先エンドステーションに移動するバイトのストリームは、シーケンス番号を使用して番号が振られる。これらのバイトが送信先エンドステーションによって受信されると、バイトシーケンスが確認応答される。図２４は、図１に掲載されているネットワーク要素を利用するそのような１つのフローの一例を示している。このフローは、送信先エンドステーション３０が３５００バイトの受信ウィンドウサイズをメッセージ２４００で送信元エンドステーション１０にアドバタイズすることから始まる。メッセージ２４００は、送信先エンドステーション３０が送信元エンドステーション１０からのデータに圧倒されることのないようにするためにＴＣＰによって実現されるフロー制御メカニズムの一部である。メッセージ２４００が送信元エンドステーション１０に届くと、３つのＴＣＰセグメント２４１０から２４１２が送信先エンドステーション３０に送信されて、送信先エンドステーション３０の開いている受信ウィンドウを埋める。送信元エンドステーションはセグメント２４１０から２４１２を、これらのセグメントが送信先エンドステーション３０に再送される必要がある場合に手放さない。これらのセグメントは、図２４においてＴＣＰ  ＡＣＫメッセージ２４２０から２４２２で示されているように送信先エンドステーション３０によって確認応答されるまで保持される。これらのＴＣＰ  ＡＣＫメッセージは、送信先エンドステーション３０内の受信ウィンドウが、受信されてゆくＴＣＰセグメントで埋められつつあることを示す。送信元エンドステーション１０がこれらの確認応答を受信すると、関連セグメントが解放され、送信元エンドステーションは、受信ウィンドウが再び開くとさらにセグメントを自由に送信することができるようになり、このプロセスをもう一度開始する。
図２５は、図２４に基づいており、セグメントが失われたときに送信先エンドステーション３０がどのように反応するかを調べたものである。この場合、送信元エンドステーション１０によって送信された第１のＴＣＰセグメント（２４１０）が失われている。ＴＣＰセグメント２４１１が送信先エンドステーション３０によって受信されたときに、送信先エンドステーションはＴＣＰセグメント２４１０を受信していないことを認識して、シーケンス番号１とともにＴＣＰ  ＡＣＫ２５０１を送信することによって応答する。送信先エンドステーションは、欠損しているセグメントが復元されるまでセグメントを受信する毎にこのプロセスを繰り返す。ＴＣＰ  ＡＣＫ２５００が送信元エンドステーション１０によって受信されたときに、これはメッセージ２５１０で第１のＴＣＰセグメントを再送する。この図の中のＩＮＤ、つまりネットワーク要素４０および５０は、送信元エンドステーション１０と送信先エンドステーション３０との間のトランザクションの監視し、ＴＣＰセグメントおよびＴＣＰ  ＡＣＫメッセージを通じてネットワーク状態を推論することができる。一実施形態では、ＩＮＤ  ５０の復号器８０は、送信元エンドステーション１０と送信先エンドステーション３０との間の接続のＴＣＰ状態を解析する。ＴＣＰセグメントにおけるシーケンス番号を使用することで、ＴＣＰ接続のスループットおよびグッドプットの測定が確認されうる。スループットは、受信されたすべてのセグメントを送信先エンドステーション３０に送信するために使用される帯域幅である。グッドプットは、固有のセグメントを送信先エンドステーション３０に送信するために使用される帯域幅であり、この帯域幅は、再送セグメントを含まない。これら２つの測定は、式１３に示されている例などの損失測定を導き出すために使用することができる。
【００９０】
【数１１】
2015505183.tif 000017
【００９１】
損失測定Ｌｘが導き出された後、本特許において定義されているその後の式およびアルゴリズムがこの測定に適用され、これによりこのＴＣＰセッションに対する符号化レベルを定義することができる。
【００９２】
[0107]符号化が適用された後、ＧＯＯＤＰＵＴが監視される必要がある。符号化の導入によりＧＯＯＤＰＵＴが低減された場合、その変化がＧＯＯＤＰＵＴを改善するかどうかを調べるために符号化レベルが下げられる。この値は、正しいレベルがセッションに適用されたことを保証するための符号化アルゴリズムへの自然なフィードバックとなる。この評価は、符号化レベルアルゴリズムから独立している。
【００９３】
[0108]図２６は、ＩＮＤ５０の復号器８０における例示的なアルゴリズムの概要を示している。このアルゴリズムは、３つの変数を使用する。第１の変数は、ＩＮＤによって見られるＴＣＰバイトストリームの現在の進行状況を保持する予想シーケンス番号（ＥＸＰ＿ＳＥＱ＿＃）である。第２の、および第３の変数である、ＧＯＯＤＰＵＴおよびＴＨＲＯＵＧＨＰＵＴは、この間隔で、ＴＣＰセッションに対するグッドプットおよびスループットを計算するためのバイトカウントを維持する。アルゴリズムは、ステップ２６０１、２６０２、および２６０３でシーケンス番号の折り返しをチェックすることから始まる。ステップ２６０１の結果がステップ２６０２の結果より大きい限り、ＴＣＰセグメントで受信されたシーケンス番号（ＳＥＱ  ＃）は、予想シーケンス番号（ＥＸＰ＿ＳＥＱ＿＃）より後の番号である。これは、ステップ２６０３でチェックされる。ＳＥＱ  ＃が後の方であれば、予想シーケンス番号は、ＳＥＱ  ＃に設定され（ステップ２６０４）、ＧＯＯＤＰＵＴおよびＴＨＲＯＵＧＨＰＵＴはセグメントサイズだけインクリメントされる（ステップ２６０５／２６０６）。パケットがステップ２６０３で識別されたような再送である場合、ＴＨＲＯＵＧＨＰＵＴのみがセグメントサイズだけインクリメントされる（ステップ２６０６）。この間隔が完了した後、Ｌｘは式１３を使用して計算される。次いで、ＧＯＯＤＰＵＴおよびＴＨＲＯＵＧＨＰＵＴに対する変数がゼロにリセットされ、図２６のアルゴリズムを使用してバイトをカウントするプロセスが再開される。
【００９４】
[0109]アルゴリズムを具現化するＩＮＤは、ネットワーク利用度を改善するために利用することができるネットワーク２０の現在の状態のビューを有する。ネットワークリソースが空くか、またはネットワーク性能が著しく改善すると、ＩＮＤはエンドステーションに影響を及ぼしそのＴＣＰウィンドウを増大することができる。このアクティビティに対するスティミュラスは、著しい量のＴＨＲＯＵＧＨＰＵＴを使用していたか、またはＩＮＤ４０と５０との間のＴＣＰセッションによるＧＯＯＤＰＵＴの著しい増加を生じたＴＣＰセッションが閉じることであってよい。ＩＮＤは、符号化がＴＣＰセッションに適用されていないときにのみこの機能を実行することができる。ＴＣＰセッションがより高いレベルの損失を受け始め、符号化が適用された場合、ＩＮＤはエンドステーションＴＣＰウィンドウを開く試みを止めるが、それは損失の増大を引き起こしうるからである。
【００９５】
[0110]加法的増大／乗法的減少を通じて送信元エンドステーション上の輻輳をスティミュレート（stimulate）し、転送の性能を改善すると有益である。ＴＣＰウィンドウを大きくするためにエンドステーションをスティミュレートするための一メカニズムは、ＴＣＰ  ＡＣＫを複数のＴＣＰ  ＡＣＫに分割することである。ＴＣＰの実装で、受信されるすべてのＴＣＰ  ＡＣＫについてＴＣＰ最大セグメントサイズの数分の１だけ輻輳ウィンドウを大きくする。ＴＣＰ  ＡＣＫの数を増やすことによって、輻輳ウィンドウがより高速に開き、より多くのＴＣＰセグメントをフライト中にする。
【００９６】
[0111]この機能を実装するために使用されうるアルゴリズムは、図２７、２８、および２９に示されている。これらのアルゴリズムは、送信元エンドステーションをスティミュレートするために使用されるネットワーク２０のリソースの量を制御するように実装される。帯域幅を制御するために図２７で使用される一メカニズムは、アルゴリズムに対するデューティサイクルを定義することである。このことは、定義済み期間に対して符号化アルゴリズムの有効化および無効化が行われることを意味する。一方法は、総期間およびデューティファクタをパーセントで定義する時間に関してこれらの期間を定義することである。デューティファクタは、符号化アルゴリズムが動作している、総期間のパーセンテージを定義する。別のオプションは、パケットに関して期間を定義することである。総期間は、ＰＡＣＫＥＴ＿ＰＥＲＩＯＤと定義される。ＰＡＣＫＥＴ＿ＰＥＲＩＯＤの範囲内で、ＥＮＣＯＤＥ＿ＬＩＭＩＴが、複数のＴＣＰ  ＡＣＫパケットに分割されるＴＣＰ  ＡＣＫパケットの数を定義する。パケット法は、図２７で使用されている。
【００９７】
[0112]図２７は、ＴＣＰ  ＡＣＫを分割するための一般的アルゴリズムを対象としている。これは、ＬＡＳＴ＿ＶＡＬＩＤ＿ＡＣＫパラメータを検査することから始まる（ステップ２７０１）。これは、送信される前にＴＣＰ  ＡＣＫパケットを分割するためのベースとして使用され、それぞれのＴＣＰ  ＡＣＫパケットが有効な情報を搬送していることを保証する。したがって、このパラメータが初期化されていない場合、これは現在のシーケンス番号ＣＵＲＲＥＮＴ＿ＳＥＱに設定され（ステップ２７０６）、パケット期間カウンタＡＣＫ＿ＣＯＵＮＴはゼロに初期化され（ステップ２７０９）、ＴＣＰ  ＡＣＫパケット（複数可）が送信される（ステップ２７０７）。ＬＡＳＴ＿ＶＡＬＩＤ＿ＡＣＫパラメータが初期化されていると仮定して、現在のＴＣＰ  ＡＣＫパケットシーケンス番号がＬＡＳＴ＿ＶＡＬＩＤ＿ＡＣＫと比較される（ステップ２７０２）。現在のＴＣＰ  ＡＣＫパケットシーケンス番号がＬＡＳＴ＿ＶＡＬＩＤ＿ＡＣＫパラメータに等しい場合、関連するＴＣＰ接続は損失を生じており、その状況は、送信元エンドステーション１０に信号で送り返されている。このセグメント損失の結果ネットワーク利用度が影響を受けることのないことを保証するために、ＴＣＰ  ＡＣＫパケットは、送信元エンドステーションに戻り、ＴＣＰ高速リカバリアルゴリズムを開始する必要がある。したがって、このＴＣＰ  ＡＣＫパケットは、即座に送信される（ステップ２７０７）。ＣＵＲＲＥＮＴ＿ＳＥＱがＬＡＳＴ＿ＶＡＬＩＤ＿ＡＣＫに等しくない場合、ＡＣＫ＿ＣＯＵＮＴはインクリメントされ（２７０３）、ＥＮＣＯＤＥ＿ＬＩＭＩＴと比較される（ステップ２７０４）。ＡＣＫ＿ＣＯＵＮＴがＥＮＣＯＤＥ＿ＬＩＭＩＴ以下である場合、ＴＣＰ  ＡＣＫパケットは分割され（ステップ２７０５）、ＬＡＳＴ＿ＶＡＬＩＤ＿ＡＣＫはＣＵＲＲＥＮＴ＿ＳＥＱに設定され（ステップ２７０６）、ＴＣＰ  ＡＣＫパケットが送信される（ステップ２７０７）。ＡＣＫ＿ＣＯＵＮＴがＥＮＣＯＤＥ＿ＬＩＭＩＴより大きい場合（ステップ２７０４）、ＡＣＫ＿ＣＯＵＮＴは、ＰＡＣＫＥＴ＿ＰＥＲＩＯＤと比較される（ステップ２７０８）。ＡＣＫ＿ＣＯＵＮＴがＰＡＣＫＥＴ＿ＰＥＲＩＯＤより小さい場合、ＬＡＳＴ＿ＶＡＬＩＤ＿ＡＣＫはＣＵＲＲＥＮＴ＿ＳＥＱに設定され（ステップ２７０６）、ＴＣＰ  ＡＣＫパケットが送信される（ステップ２７０７）。そうでない場合、パケット期間は、ＡＣＫ＿ＣＯＵＮＴを０に設定することによってリセットされる（ステップ２７０９）。
【００９８】
[0113]ＴＣＰ  ＡＣＫパケットを分割する方法は、図２８で説明されており、図２９に続く。これらのアルゴリズムは、単一のＴＣＰ  ＡＣＫパケットから生成されるＴＣＰ  ＡＣＫパケットの数を制御することによって帯域幅利用度も制御する。第１のパラメータは、ＭＡＸＩＭＵＭ＿ＡＣＫであり、このパラメータは、単一のＴＣＰ  ＡＣＫから生成されうるＴＣＰ  ＡＣＫの最大数を定義する。ＭＩＮＩＭＵＭ＿ＳＥＧＭＥＮＴ＿ＳＩＺＥは、連続するＴＣＰ  ＡＣＫのシーケンス番号の間の最小の差を決定する。例えば、ＭＡＸＩＭＵＭ＿ＡＣＫは３と定義され、ＭＩＮＩＭＵＭ＿ＳＥＧＭＥＮＴ＿ＳＩＺＥは５００と定義されうる。符号器から見える現在のＴＣＰ  ＡＣＫと前のＴＣＰ  ＡＣＫとの間のシーケンスの差が２１００バイトであるときにパケットが届いた場合、符号器は、それぞれ７００バイトのシーケンス差をそれぞれ有する３つのＴＣＰ  ＡＣＫを生成する。この符号化は、ＭＡＸＩＭＵＭ＿ＡＣＫパラメータによって制限される。４００バイトのシーケンス差を有するＴＣＰ  ＡＣＫが届いた場合、これはＭＩＮＩＭＵＭ＿ＳＥＧＭＥＮＴ＿ＳＩＺＥより小さいので、変更なしで送信される。
【００９９】
[0114]図２８は、現在のシーケンス番号ＣＵＲＲＥＮＴ＿ＳＥＱとＬＡＳＴ＿ＶＡＬＩＤ＿ＡＣＫとの差を計算することから始まる（ステップ２８０１）。ＤＩＦＦＥＲＥＮＣＥがＭＩＮＩＭＵＭ＿ＳＥＧＭＥＮＴ＿ＳＩＺＥより小さい場合（ステップ２８０２）、ＴＣＰ  ＡＣＫパケットは１つだけ生成され（ステップ２８０３）、これは、ＮＵＭ＿ＡＣＫＳを１に設定し、ＳＥＱＵＥＮＣＥ＿ＩＮＴＥＲＶＡＬをＤＩＦＦＥＲＥＮＣＥに設定することによって達成される。ＤＩＦＦＥＲＥＮＣＥがＭＩＮＩＭＵＭ＿ＳＥＧＭＥＮＴ＿ＳＩＺＥより大きい場合（ステップ２８０２）、ＴＣＰ  ＡＣＫパケットの数は、ＤＩＦＦＥＲＥＮＣＥをＭＩＮＩＭＵＭ＿ＳＥＧＭＥＮＴ＿ＳＩＺＥで除算することによって決定される（ステップ２８０４）。ＮＵＭ＿ＡＣＫＳがＭＡＸＩＭＵＭ＿ＡＣＫ（ステップ２８０５）を超える場合、ＮＵＭ＿ＡＣＫＳはＭＡＸＩＭＵＭ＿ＡＣＫに設定され、ＳＥＱＵＥＮＣＥ＿ＩＮＴＥＲＶＡＬはＭＡＸＩＭＵＭ＿ＡＣＫで除算されたＤＩＦＦＥＲＥＮＣＥに設定される（ステップ２８０６）。そうでない場合、ＳＥＱＵＥＮＣＥ＿ＩＮＴＥＲＶＡＬは、ＭＩＮＩＭＵＭ＿ＳＥＧＭＥＮＴ＿ＳＩＺＥ（ステップ２８０７）に設定される。
【０１００】
[0115]ＴＣＰ  ＡＣＫパケットの数およびＴＣＰ  ＡＣＫの間のシーケンス間隔がこれで決定されたので、ＴＣＰ  ＡＣＫパケットをセグメント分割できる。このアルゴリズムは、図２９で説明されている。ＴＣＰ  ＡＣＫ  パケットを複数のＴＣＰ  ＡＣＫパケットに分けるために、ループカウンタＣＵＲＲＥＮＴ＿ＡＣＫが１に初期化され、ＬＡＳＴ＿ＳＥＱがＬＡＳＴ＿ＶＡＬＩＤ＿ＡＣＫに設定される（ステップ２９０１）。次いで、ループ条件が、ＣＵＲＲＥＮＴ＿ＡＣＫを、生成されるＴＣＰ  ＡＣＫの総数であるＮＵＭ＿ＡＣＫＳと比較することによってチェックされる（ステップ２９０２）。ＣＵＲＲＥＮＴ＿ＡＣＫがＮＵＭ＿ＡＣＫＳに等しくない場合、現在のＴＣＰ  ＡＣＫパケットのシーケンス番号が、ＬＡＳＴ＿ＳＥＱ番号＋ＳＥＱＵＥＮＣＥ＿ＩＮＴＥＲＶＡＬを使用して計算され（ステップ２９０３）、このＴＣＰ  ＡＣＫパケットが生成される（ステップ２９０４）。次いで、ＴＣＰ  ＡＣＫパケットが送信されるＴＣＰ  ＡＣＫパケットのリストに追加され（ステップ２９０５）、ＣＵＲＲＥＮＴ＿ＡＣＫカウンタがインクリメントされる（ステップ２９０６）。この手順は、ＣＵＲＲＥＮＴ＿ＡＣＫがＮＵＭ＿ＡＣＫＳに等しくなるまで繰り返される（ステップ２９０２）。この時点で、ループは終了し、最終ＴＣＰ  ＡＣＫパケットが、このパケットのシーケンス番号をＣＵＲＲＥＮＴ＿ＳＥＱに設定し（ステップ２９０７）、このパケットを送信されるＴＣＰ  ＡＣＫパケットのリストに追加する（ステップ２９０８）ことによって生成される。
【０１０１】
[0116]ＴＣＰセッションにおけるエンドステーションのスティミュレーションは、測定されたグッドプットおよびスループットが指定された目標に合致している間続行しうる。これらの測定から導かれる損失測定が指定された閾値を超えるか、またはＧＯＯＤＰＵＴ測定が減少する場合、図２７、２８、および２９で定義されたアルゴリズムは、ＩＮＤがエンドステーションを再びスティミュレートすることを開始するのを許すレベルにネットワーク条件が戻るまで中断される。
【０１０２】
[0117]ネットワーク性能の別のインジケータは、個別情報のラウンドトリップタイム（ＲＴＴ）である。ＲＴＴは、個別情報が送信されるのにかかる時間の長さにその情報の確認応答が受信されるのにかかる時間の長さを加えた値である。この時間が通信セッションの存続時間にわたってどのように変わるかが、セッションに関係する情報（パケットまたはセグメント）を配送するネットワークの能力を反映する。ジッタは、注目している別のネットワーク性能の尺度である。ジッタは、リアルタイムアプリケーションのプレイバックバッファに影響を及ぼしうるＲＴＴまたは一方向遅延の変動であるとして定義することができる。
【０１０３】
[0118]ＩＮＤはＲＴＴをいくつかの方法で測定することができる。ＶｏＩＰまたはＩＰＴＶなどのリアルタイムセッションでは、送信元エンドステーションから送信先エンドステーションに受け渡される情報に対する確認応答は用意されない。したがって、測定を行うために、ＩＮＤは、これ以降ＲＴＴクエリパケットと称する、パケットをセッション内に注入して測定を行う。図３０は、そのような測定がなされうるネットワーク例を示している。この図は、ＲＴＴ測定に対するパケットの特定の流れを調べるために、図１のネットワークに基づいている。ステップ３０００において、これ以降発信側ＩＮＤと称される、ＩＮＤ４０は、特定のセッションに対するＲＴＴを測定し、測定を開始するために、ステップ３００１でピアＩＮＤ５０に向けてＲＴＴクエリパケットを注入する。ＲＴＴクエリパケットは、ＩＮＤ５０によって検出され（ステップ３００２）、クエリの送信元はＩＮＤ４０なので、パケットは、発信側ＩＮＤに返される。発信側ＩＮＤ４０がパケットを検出した場合、これはこのクエリに関連付けられている現在のＲＴＴを計算することができる。
【０１０４】
[0119]図３１は、発信側ＩＮＤ（発信側ＩＮＤ４０など）がＲＴＴクエリパケットを送信することをどのように決定するかを示している。この実施形態では、遅延タイマーが使用され、ＲＴＴクエリは、符号化セッションの存続期間において遅延タイマーがタイムアウトになる毎に送信される。この手順は、ステップ３１００で遅延タイマーを実行することによって開始する。このタイマーがタイムアウトになると、発信側ＩＮＤは、ＲＴＴクエリを送信する準備をする。最初に、ＲＴＴクエリが戻るときに特定のクエリおよびその関連する情報が特定されるようにステップ３１０１でシーケンス識別子を割り当てる。次いで、発信側ＩＮＤは、ＲＴＴクエリがステップ３１０２で送信された時間を記録するためにタイムスタンプを取得し、次いで、パケット３１０３の送信を続ける。次いで、発信側ＩＮＤは、このクエリに関連付けられているすべてのデータを記録し、ステップ３１０４でＲＴＴクエリが戻ったときの処理のためにこれを格納する。あるいは、タイムスタンプは、ＲＴＴクエリパケット内に埋め込まれ、次いでＩＮＤを受信することによって返される。ＲＴＴ値は、将来の処理（傾向分析または平均処理）のためメモリ３１０５に格納される。このプロセスの最終ステップは、セッションがまだ有効であるか、または十分なＲＴＴ計算があるかを確認するチェックを行うことである（ステップ３１０６）。セッションがまだ有効であるが、ＲＴＴは計算される必要がある場合、プロセスはステップ３１００に戻り、プロセスは始めからやり直す。そうでない場合、プロセスは終了する。
【０１０５】
[0120]ＲＴＴクエリの生成を取り扱うための他の実施形態も企図される。例えば、多数のパケットが送信された後に、クエリが生成されうる。別のオプションは、通信セッションによって多数のバイトが送信された後にクエリを生成することである。別の実施形態では、遅延タイマーとバイト閾値との組み合わせを使用してＲＴＴを測定することができる。この方法により、セッションの方向が無音状態になった場合に遅延タイマーの最小の頻度で測定を確実に行える。この方法は、無音抑制をサポートする、ＶｏＩＰセッションに使用することができる。
【０１０６】
[0121]図３２は、ＲＴＴクエリの受信をＩＮＤでどのように取り扱うかを示している。このロジックは、受信側ＩＮＤの復号器８０内に実装される。受信されたパケットが、有効な符号化ストリーム３２０１からのものでない場合、３２０３において無視され、そうでなければ、パケットがＲＴＴクエリである場合（ステップ３２００）、すべてのデータおよびメタデータを含むパケットは発信側ＩＮＤに返され（ステップ３２０２）、そうでなければ、パケットは復号され、エンドステーションに転送される。
【０１０７】
[0122]通信セッションがそれぞれの方向において情報の相関を許す識別データを含む場合（例えば、ＴＣＰ／ＩＰ）、発信側ＩＮＤはこの識別を利用してＲＴＴを測定することができる。例えば、発信側ＩＮＤは、ＴＣＰシーケンス番号を利用して、測定を実行することができる。これは、符号化方向で送信されたセグメントにおけるシーケンス番号と復号方向に返されるＴＣＰ  ＡＣＫとの相関を求めることができる、図３３は、発信側ＩＮＤがこの関数をどのように実行できるかを示している。この梯子図は、ネットワーク２０を通じて送信元エンドステーション１０から送信先エンドステーション３０に送信される（ステップ３３００）ＴＣＰセグメントを発信元ＩＮＤ４０が検出すること（ステップ３３０１）から始まる。これが検出されると、発信元ＩＮＤ４０は、ＴＣＰパケットが作成されたときにＴＣＰスタックによって与えられる元のＴＣＰタイムスタンプなどの、このセグメントに関係する情報を記録し、次いでセグメントをＩＮＤ５０および送信先エンドステーション３０に向けて転送する（ステップ３３０２）。転送時間は、後で処理するために元のＴＣＰタイムスタンプとともに格納される。エンドステーション３０は、ＴＣＰ  ＡＣＫを使用して（ステップ３３０３）このセグメントの受信を確認応答し、このＴＣＰ  ＡＣＫは、発信側ＩＮＤ４０によって検出される（ステップ３３０５）。そこで、発信側ＩＮＤ４０は、すでに格納されている転送時間とともにＴＣＰ  ＡＣＫに格納されている元のＴＣＰタイムスタンプによって識別されるセグメントに対するＲＴＴ時間を計算することができ、このパケットを送信元エンドステーション１０上に転送する。
【０１０８】
[0123]この実施形態では、ＴＣＰセグメント毎にＲＴＴを計算する。他の実施形態では、タイマーがタイムアウトするまで遅延タイマーを使ってＲＴＴの計算結果を保持することによってＲＴＴの計算回数を制限することが可能である。別の実施形態では、設定された数のセグメントまたは設定された数のバイトが転送された後だけＲＴＴの計算を実行するということも可能である。
【０１０９】
[0124]ＲＴＴのサンプルを収集するためにどの方法が使用されようと、ＩＮＤ４０とＩＮＤ５０との間のネットワーク性能を判定するために、所定の量のＲＴＴ測定ｒが発信元ＩＮＤによって収集される。ネットワーク性能が許容可能とみなされた場合、符号化は、必要ないときにネットワーク内の付加的帯域幅を使用することを回避するためにｎ＝１およびｍ＝０に設定されうる。新しいサンプルと（ｆ−１）個の前のサンプルとの平均がとられ、これにより、セッションに対する最近のＲＴＴを判定する。
【０１１０】
【数１２】
2015505183.tif 000018
【０１１１】
現在のＲＴＴサンプルも、通信セッションの存続期間にわたって平均ＲＴＴを計算するために追加される（ステップ３６０２）。
【０１１２】
【数１３】
2015505183.tif 000019
【０１１３】
ただし式中、ωｏｌｄおよびωｎｅｗは、一般に、ωｏｌｄ＞ωｎｅｗとなるように設定される重みである。
[0125]図３４は、上で説明されているように、また関連出願で説明されているように、新しい符号化レベルが推奨されるときにＴＣＰセッションの符号化レベルを変更するために使用されうるアルゴリズムの一例を示している。推奨レベルが現在のレベルより低い場合３４０２、現在の符号化レベルは、ｚ単位時間の期間に変更され設定され３４１３、そうでなければ、推奨符号化レベルがロックされている場合３４０３、推奨符号化レベルは、最高のアンロックレベルに設定される３４０４。本明細書で「プレグッドプット（pre-goodput）」測定（図２５に例が示されている）と称される、グッドプット測定は、ｗ単位時間において実行される３４０５。次いで、符号化レベルは、推奨レベルに対して変更される３４０６。ＲＴＴ測定（図３１および図３３の例に関して）とともに本明細書で「ポストグッドプット（post-goodput）」測定（図２５に例が示されている）と称される、グッドプット測定は、ｙ単位時間について実行される３４０５。プレグッドプット、ポストグッドプット、およびＲＴＴ値は、ＲＴＴ上の平均プレグッドプット、平均ポストグッドプット、および傾向分析を決定するために処理される３４０８。ＲＴＴが増加し３４０９、平均ポストグッドプットが平均プレグッドプット以上である場合３４１０、より多くのポストグッドプットおよびＲＴＴ測定が行われる３４０７。ＲＴＴが減少するか、または一定であり３４０９、平均ポストグッドプットが平均プレグッドプット以上である場合３４１１、符号化レベルは、ｚ単位時間の期間に推奨符号化レベルに設定される。ポストグッドプットが、プレグッドプットより低い場合３４１０、３４１１、バックオフアルゴリズム（図３６）が呼び出される。
【０１１４】
[0126]図３５は、非ＴＣＰセッション（例えば、ＵＤＰ）の符号化レベルを変更するために使用されうるアルゴリズムの一例を示している。これは新しい符号化レベルが上で説明され、また関連出願において説明されているように推奨される場合である。推奨レベルが現在のレベルより低い場合３５０２、現在の符号化レベルは、ｚ単位時間の期間に変更され設定され３５１３、そうでなければ、推奨符号化レベルがロックされている場合３５０３、推奨符号化レベルは、最高のアンロックレベルに設定される３５０４。本明細書で「プレ損失（pre-loss）」測定（図２５に例が示されている）と称される、損失測定は、ｗ単位時間において実行される３５０５。次いで、符号化レベルは、推奨レベルに対して変更される３５０６。ＲＴＴ測定（図３１および図３３の例に関して）とともに本明細書で「ポスト損失（post-loss）」測定（図２５に例が示されている）と称される、損失測定は、ｙ単位時間について実行される３５０５。プレ損失、ポスト損失、およびＲＴＴ値は、ＲＴＴ上の平均プレ損失、平均ポスト損失、および傾向分析を決定するために処理される３５０８。ＲＴＴが増加し３５０９、平均ポスト損失が平均プレ損失より小さい場合３５１０、より多くのポスト損失およびＲＴＴ測定が行われる３５０７。ＲＴＴが減少するか、または一定であり３５０９、平均ポスト損失が平均プレ損失より小さい場合３５１１、符号化レベルは、ｚ単位時間の期間に推奨符号化レベルに設定される。ポスト損失が、プレ損失以上である場合３５１０、３５１１、バックオフアルゴリズム（図３６）が呼び出される。
【０１１５】
[0127]図３６は、推奨レベルがネットワーク性能の理由により使用できない場合に呼び出されるバックオフメカニズム３６００を例示している（例えば、図３４および図３５）。この場合、セッションに対する現在の符号化は、より低いレベル（例えば、ｎ＝０、ｍ＝１）に設定され、推奨レベルおよびこのレベルより高いすべてのレベルは、その流により禁止される３６０２。タイマーは、所定の値に設定され３６０３、このタイマーがタイムアウトすると３６０４、最も低いロックされた符号化レベルは、すべてのレベルがアンロックされるまで３６０６、アンロックされた状態である３６０５。
【０１１６】
[0128]図３７は、セッションに対する禁止されている符号化レベルをアンロックするために使用される例示的なメカニズムを示している。符号化デバイスが、流れまたはセッションが停止したことを検出した場合３７０１、符号化デバイスは、１つのアクティブなセッションを選択し、このセッションでは１つまたは複数の符号化レベルがロックされているか、または禁止されている（例えば、図３６）３７０２。この選択は、ポリシーに基づくか、または優先度に基づくか、またはランダムになさるものとしてよい。符号化デバイスは、最低のロックレベルから始まる、選択されたセッションに対する１つまたは複数のレベルをアンロックする３７０３。
【０１１７】
[0129]以下の説明では、説明を目的として、本発明を完全に理解できるようにする多数の詳細を述べている。しかし、当業者には、本発明の実施形態を実施するためにこれらの具体的詳細事項は必要ないということは明白であろう。他の場合には、本発明をわかりにくくしないために、よく知られている電気的構造および回路はブロック図形式で示されている。例えば、本明細書で説明されている発明の実施形態がソフトウェアルーチン、ハードウェア回路、ファームウェア、またはこれらの組み合わせとして実装されるかどうかに関して、具体的詳細を述べていない。
【０１１８】
[0130]本発明の実施形態は、サーバまたは他のコンピューティングデバイスなどのエンドポイント、および関連する符号化コンポーネントを有するネットワーク内に実装されうる。符号化コンポーネントおよび説明されている方法は、ハードウェア、ソフトウェア、またはこれらの組み合わせで実装することができる。ソフトウェアで実装される部分は、機械可読媒体（コンピュータ可読媒体、プロセッサ可読媒体、またはコンピュータ可読プログラムコードが中に具現化されているコンピュータ使用可能媒体とも称される）内に格納されているソフトウェア製品として表現することができる。機械可読媒体は、ディスケット、コンパクトディスク読出し専用メモリ（ＣＤ−ＲＯＭ）、メモリデバイス（揮発性または不揮発性）、または類似の記憶装置機構を含む磁気記憶媒体、光記憶媒体、または電気的記憶媒体を含む好適な有形の媒体とすることができる。機械可読媒体は、実行されたときに方法の中のステップをプロセッサに実行させる、さまざまな命令セット、コード列、構成情報、または他のデータを収めることができる。当業者であれば、説明されている実施形態を実装するために必要な他の命令および演算も機械可読媒体に格納できることを理解するであろう。機械可読媒体から実行しているソフトウェアは、記述されているタスクを実行する回路とインターフェースすることができる。
【０１１９】
[0131]本発明の特定の実施形態およびアプリケーションが図示され説明されているが、本発明が本明細書に開示されている正確な構造および構成に限定されないこと、および付属の請求項で定められている発明の精神および範囲から逸脱することなくさまざまな修正、変更、および改変は前記の説明から明らかであることは理解されるであろう。
【符号の説明】
【０１２０】
１０  送信元エンドステーション
２０  ネットワーク
３０  送信先エンドステーション
４０  ネットワークデバイス
５０  ネットワークデバイス
６０  ネイティブインターフェース
７０  符号化インターフェース
８０  復号器
９０  符号器
４００  標準パケット
４０２  セグメント
４０４  追加セグメント
１１０５  抽出された符号化レベル
１１０６  インターセプトネットワークデバイス
１１０７  インターセプトネットワークデバイス
１１０８  符号器
１１０９  復号器
１１１２  復号器
１２０２  インターセプトネットワークデバイス
１２０３  インターセプトネットワークデバイス
１２０４  フロー
１２０５  フロー
１２０６  フロー
１２０７  インターセプトネットワークデバイス
１２０８  インターセプトネットワークデバイス
１２０９  インターセプトネットワークデバイス
１２１０  インターセプトネットワークデバイス
１２１１  セッション
１２１２  セッション
１３０３  バッファ
１３０４  物理的インターフェース
【図１】
2015505183.tif 000020
【図２】
2015505183.tif 000021
【図３】
2015505183.tif 000022
【図４】
2015505183.tif 000023
【図５】
2015505183.tif 000024
【図６】
2015505183.tif 000025
【図７】
2015505183.tif 000026
【図８】
2015505183.tif 000027
【図９】
2015505183.tif 000028
【図１０】
2015505183.tif 000029
【図１１】
2015505183.tif 000030
【図１２】
2015505183.tif 000031
【図１３】
2015505183.tif 000032
【図１４】
2015505183.tif 000033
【図１５】
2015505183.tif 000034
【図１６】
2015505183.tif 000035
【図１７】
2015505183.tif 000036
【図１８】
2015505183.tif 000037
【図１９】
2015505183.tif 000038
【図２０】
2015505183.tif 000039
【図２１】
2015505183.tif 000040
【図２２】
2015505183.tif 000041
【図２３】
2015505183.tif 000042
【図２４】
2015505183.tif 000043
【図２５】
2015505183.tif 000044
【図２６】
2015505183.tif 000045
【図２７】
2015505183.tif 000046
【図２８】
2015505183.tif 000047
【図２９】
2015505183.tif 000048
【図３０】
2015505183.tif 000049
【図３１】
2015505183.tif 000050
【図３２】
2015505183.tif 000051
【図３３】
2015505183.tif 000052
【図３４】
2015505183.tif 000053
【図３５】
2015505183.tif 000054
【図３６】
2015505183.tif 000055
【図３７】
2015505183.tif 000056
【国際調査報告】
2015505183.tif 000057
2015505183.tif 000058
2015505183.tif 000059
2015505183.tif 000060
2015505183.tif 000061
2015505183.tif 000062