(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-04-19
(54)【発明の名称】クロック同期エッジベースのネットワーク機能
(51)【国際特許分類】
H04L 43/08 20220101AFI20240412BHJP
H04L 43/12 20220101ALI20240412BHJP
【FI】
H04L43/08
H04L43/12
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023565133
(86)(22)【出願日】2022-04-21
(85)【翻訳文提出日】2023-11-20
(86)【国際出願番号】 US2022025843
(87)【国際公開番号】W WO2022226243
(87)【国際公開日】2022-10-27
(32)【優先日】2021-04-23
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2022-03-15
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2022-04-20
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2022-04-20
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】522117613
【氏名又は名称】クロックワーク システムズ インコーポレイテッド
(74)【代理人】
【識別番号】110001243
【氏名又は名称】弁理士法人谷・阿部特許事務所
(72)【発明者】
【氏名】イーロン ゲン
(72)【発明者】
【氏名】バラジ プラバカール
(72)【発明者】
【氏名】シユー リウ
(57)【要約】
データフローの協調制御および異常検出のためにネットワークトラフィックがモニタされる。送信ホストと受信ホストとの間において伝送されるデータフローについて、そのデータフローの送信済みまたは受信済みのネットワークトラフィックの既定量が記録される。ネットワークトラフィックにおけるデータパケットのタイムスタンプに基づいて、データフローが異常のためにモニタされる。異常が検出されないことの決定に応答して、記録された送信済みおよび受信済みのネットワークトラフィックは、それぞれ、新規の送信済みおよび新規の受信済みのネットワークトラフィックにて上書きされる。異常が検出されたことの決定に応答して、データフローは休止され、この休止によって、送信ホストに、記録された送信済みネットワークトラフィックを第1のバッファに保存させ、かつ、受信ホストに、記録された受信済みネットワークトラフィックを第2のバッファに保存させる。
【特許請求の範囲】
【請求項1】
ネットワークトラフィックにおける異常をモニタするためのコンピュータで実行される方法であって、前記方法は、
送信ホストと受信ホストとの間において伝送されるデータフローについて、
第1の逐次基準で、前記送信ホストによって、前記データフローの送信済みネットワークトラフィックの第1の既定量を記録すること、
第2の逐次基準で、前記受信ホストによって、前記データフローの受信済みネットワークトラフィックの第2の既定量を記録し、ここにおいて、前記送信ホストおよび前記受信ホストはクロック同期されること、
前記ネットワークトラフィックにおけるデータパケットのタイムスタンプに基づいて、異常をモニタすること、
前記モニタの期間に異常が検出されるかを決定すること、
前記モニタの期間に異常が検出されないとの決定に応答して、
前記記録された送信済みネットワークトラフィックおよび前記記録された受信済みネットワークトラフィックを、それぞれ、新規に送信されたネットワークトラフィックおよび新規に受信されたネットワークトラフィックにて上書きすること、および、
前記モニタの期間に異常が検出されたとの決定に応答して、前記データフローを休止し、前記送信ホストに、前記記録された送信済みネットワークトラフィックを第1のバッファに保存させ、かつ、前記受信ホストに、前記記録された受信済みネットワークトラフィックを第2のバッファに保存させること、
を含む、コンピュータで実行される方法。
【請求項2】
送信済みネットワークトラフィックの前記第1の既定量および受信済みネットワークトラフィックの前記第2の既定量は、同じ量である、請求項1に記載のコンピュータで実行される方法。
【請求項3】
前記同じ量は、最新の送信済みまたは受信済みのパケットの既定数、または現在よりも前の既定量の時間単位において受信したパケットの何れかに基づいて測定される、請求項2に記載のコンピュータで実行される方法。
【請求項4】
前記モニタの期間に異常が検出されたことの決定は、前記送信ホストから前記受信ホストへ送信されたデータパケットの片道遅延が遅延の閾値量を超えるとの決定を含む、請求項1に記載のコンピュータで実行される方法。
【請求項5】
前記コンピュータで実行される方法は、前記送信ホストによって前記データフローのデータパケットに適用される送信タイムスタンプを、前記受信ホストによって前記データパケットに適用される受信タイムスタンプとの比較として用いることをさらに含み、前記送信ホストおよび前記受信ホストは、同じ基準クロックに同期し、かつ、前記送信タイムスタンプおよび前記受信タイムスタンプは、前記同じ基準クロックに基づく、請求項4に記載のコンピュータで実行される方法。
【請求項6】
前記送信ホストは、カーネルまたは送信機のネットワークインタフェースカード(NIC)の何れかに位置し、前記受信ホストは、カーネルまたは受信機のNICの何れかに位置する、請求項1に記載のコンピュータで実行される方法。
【請求項7】
前記送信機は、物理マシンまたは仮想マシンであり、前記受信機は、物理マシンまたは仮想マシンである、請求項6に記載のコンピュータで実行される方法。
【請求項8】
前記データフローは、前記送信ホストを含む複数の送信ホストからのデータパケットを含み、前記複数の送信ホストのそれぞれは、前記データフローの一部として送信する前記データパケットを記録する、請求項1に記載のコンピュータで実行される方法。
【請求項9】
前記モニタの期間に前記異常が検出されたことの決定に応答して、前記複数の送信ホストのそれぞれに、前記データフローの一部として送信される、それぞれにおいて記録されたデータパケットをそれぞれのバッファに保存させる、請求項8に記載のコンピュータで実行される方法。
【請求項10】
前記モニタの期間に前記異常が検出されたことの決定にさらに応答して、前記異常に関連付けられたデータパケットを個々の送信ホストそれぞれのバッファから再送すること、および、前記データフローを再開すること、をさらに含む、請求項9に記載のコンピュータで実行される方法。
【請求項11】
前記データパケットの再送は、前記送信ホストにおいて前記受信ホストへの2つ以上のデータパケットの送信タイミングを揺動させることを含み、揺動は、1つまたは複数の既定時間またはランダム時間を用いて行われる、請求項10に記載のコンピュータで実行される方法。
【請求項12】
前記データパケットの再送は、個々の送信ホストそれぞれのバッファから全ての前記データパケットを再送することを含む、請求項10に記載のコンピュータで実行される方法。
【請求項13】
ネットワークトラフィックにおける異常をモニタするためのエンコードされた命令を有するメモリを含む非一時的なコンピュータ可読媒体であって、前記命令は、1つまたは複数のプロセッサによって実行されると、
送信ホストと受信ホストとの間において伝送されるデータフローについて、
第1の逐次基準で、前記送信ホストによって、前記データフローの送信済みネットワークトラフィックの第1の既定量を記録すること、および、
第2の逐次基準で、前記受信ホストによって、前記データフローの受信済みネットワークトラフィックの第2の既定量を記録し、ここにおいて、前記送信ホストおよび前記受信ホストはクロック同期されること、
前記ネットワークトラフィックにおけるデータパケットのタイムスタンプに基づいて、異常をモニタすること、
前記モニタの期間に異常が検出されるかを決定すること、
前記モニタの期間に異常が検出されないことの決定に応答して、
前記記録された送信済みネットワークトラフィックおよび前記記録された受信済みネットワークトラフィックを、それぞれ、新規に送信されたネットワークトラフィックおよび新規に受信されたネットワークトラフィックにて上書きすること、および、
前記モニタの期間に異常が検出されたことの決定に応答して、前記データフローを休止し、前記送信ホストに、前記記録された送信済みネットワークトラフィックを第1のバッファに保存させ、かつ、前記受信ホストに、前記記録された受信済みネットワークトラフィックを第2のバッファに保存させること、
を実行するための命令を含む、非一時的なコンピュータ可読媒体。
【請求項14】
送信済みネットワークトラフィックの前記第1の既定量および受信済みネットワークトラフィックの前記第2の既定量は、同じ量である、請求項13に記載の非一時的なコンピュータ可読媒体。
【請求項15】
前記同じ量は、最新の送信済みまたは受信済みのパケットの既定数、または現在よりも前の既定量の時間単位において受信したパケットの何れかに基づいて測定される、請求項14に記載の非一時的なコンピュータ可読媒体。
【請求項16】
前記モニタの期間に異常が検出されたことの決定は、前記送信ホストから前記受信ホストへ送信されたデータパケットの片道遅延が遅延の閾値量を超えるとの決定を含む、請求項13に記載の非一時的なコンピュータ可読媒体。
【請求項17】
前記命令は、前記送信ホストによって前記データフローのデータパケットに適用される送信タイムスタンプを前記受信ホストによって前記データパケットに適用される受信タイムスタンプとの比較として用いて片道遅延を決定するための命令をさらに含み、前記送信ホストおよび前記受信ホストは、同じ基準クロックに同期し、かつ、前記送信タイムスタンプおよび前記受信タイムスタンプは、前記同じ基準クロックに基づく、請求項16に記載の非一時的なコンピュータ可読媒体。
【請求項18】
前記送信ホストは、カーネルまたは送信機のネットワークインタフェースカード(NIC)の何れかに位置し、前記受信ホストは、カーネルまたは受信機のNICの何れかに位置する、請求項13に記載の非一時的なコンピュータ可読媒体。
【請求項19】
前記送信機は、物理マシンまたは仮想マシンであり、前記受信機は、物理マシンまたは仮想マシンである、請求項18に記載の非一時的なコンピュータ可読媒体。
【請求項20】
前記データフローは、前記送信ホストを含む複数の送信ホストからのデータパケットを含み、前記複数の送信ホストのそれぞれは、前記データフローの一部として送信する前記データパケットを記録する、請求項13に記載の非一時的なコンピュータ可読媒体。
【請求項21】
前記データフローについてのバイトスタンプが永続性メモリに記録される、請求項13に記載の非一時的なコンピュータ可読媒体。
【請求項22】
ネットワークトラフィックを優先度付けするためのコンピュータで実行される方法であって、前記方法は、
第1の送信ホストと受信ホストとの間の第1のデータフローを識別することであって、前記第1のデータフローは高優先度を有し、前記第1の送信ホストおよび前記受信ホストは、共通の基準クロックを用いて同期される、こと、
第2の送信ホストと前記受信ホストとの間の第2のデータフローを識別することであって、前記第2のデータフローは低優先度を有する、こと、
前記高優先度に基づいて前記第1のデータフローに第1の遅延閾値を割り当て、かつ、前記低優先度に基づいて前記第2のデータフローに第2の遅延閾値を割り当てることであって、前記第1の遅延閾値は、前記第2の遅延閾値を超える、こと、
前記第1の遅延閾値に関連して前記第1のデータフローのデータパケットの第1の片道遅延をモニタすること、
前記第2の遅延閾値に関連して前記第2のデータフローのデータパケットの第2の片道遅延をモニタすること、
前記第1のデータフローのデータパケットの前記第1の片道遅延が前記第1の遅延閾値を超えるとの決定に応答して、前記第1の送信ホストから前記受信ホストへの前記第1のデータフローのデータパケットの送信を第1の時間、休止すること、および、
前記第2のデータフローのデータパケットの前記第2の片道遅延が前記第2の遅延閾値を超えるとの決定に応答して、前記第2の送信ホストから前記受信ホストへの前記第2のデータフローのデータパケットの送信を、前記第1の時間を超える第2の時間、休止すること、
を含む、コンピュータで実行される方法。
【請求項23】
前記第1の送信ホストおよび前記第2の送信ホストは、同じ送信ホストである、請求項22に記載のコンピュータで実行される方法。
【請求項24】
前記第1のデータフローは、輻輳に直面した場合に、前記第2のデータフローよりも高い帯域幅および低いレイテンシが保証される、請求項22に記載のコンピュータで実行される方法。
【請求項25】
中間の優先度を有する第3のデータフローに、前記第1の遅延閾値と前記第2の遅延閾値との間の値を有する第3の遅延閾値が割り当てられる、請求項22に記載のコンピュータで実行される方法。
【請求項26】
前記第3のデータフローのデータパケットの第3の片道遅延が前記第3の遅延閾値を超えるとの決定に応答して、前記第3のデータフローのデータパケットの送信を、前記第1の時間と前記第2の時間との間の値を有する第3の時間、休止することをさらに含む、請求項25に記載のコンピュータで実行される方法。
【請求項27】
データフローのデータパケットを個々の送信側によってそれぞれにおける有限バッファに記録すること、および、個々のデータフローが休止される間に、個々の有限バッファに記録されたデータパケットを再送すること、をさらに含む、請求項22に記載のコンピュータで実行される方法。
【請求項28】
前記第1の送信ホストと前記受信ホストとの間において達成可能な最小片道遅延を決定すること、および、
前記最小片道遅延の倍率に基づいて前記第1の遅延閾値を決定することであって、前記倍率は、前記第1のデータフローの優先度に依存して選択されること、をさらに含む、請求項22に記載のコンピュータで実行される方法。
【請求項29】
前記第1のデータフローおよび前記第2のデータフローの優先度は、経時的に再決定され、かつ、動的に変化する、請求項22に記載のコンピュータで実行される方法。
【請求項30】
ネットワークトラフィックを優先度付けするためのエンコードされた命令を含む非一時的なコンピュータ可読媒体であって、前記命令は、実行されると、1つまたは複数のプロセッサに動作を実行させ、前記命令は、
第1の送信ホストと受信ホストとの間の第1のデータフローを識別することであって、前記第1のデータフローは高優先度を有し、前記第1の送信ホストおよび前記受信ホストは、共通の基準クロックを用いて同期される、こと、
第2の送信ホストと前記受信ホストとの間の第2のデータフローを識別することであって、前記第2のデータフローは低優先度を有する、こと、
前記高優先度に基づいて前記第1のデータフローに第1の遅延閾値を割り当て、かつ、前記低優先度に基づいて前記第2のデータフローに第2の遅延閾値を割り当てることであって、前記第1の遅延閾値は、前記第2の遅延閾値を超える、こと、
前記第1の遅延閾値に関連して前記第1のデータフローのデータパケットの第1の片道遅延をモニタすること、
前記第2の遅延閾値に関連して前記第2のデータフローのデータパケットの第2の片道遅延をモニタすること、
前記第1のデータフローのデータパケットの前記第1の片道遅延が前記第1の遅延閾値を超えるとの決定に応答して、前記第1の送信ホストから前記受信ホストへの前記第1のデータフローのデータパケットの送信を第1の時間、休止すること、および、
前記第2のデータフローのデータパケットの前記第2の片道遅延が前記第2の遅延閾値を超えるとの決定に応答して、前記第2の送信ホストから前記受信ホストへの前記第2のデータフローのデータパケットの送信を、前記第1の時間を超える第2の時間、休止すること、
を実行するための命令を含む、非一時的なコンピュータ可読媒体。
【請求項31】
前記第1の送信ホストおよび前記第2の送信ホストは、同じ送信ホストである、請求項30に記載の非一時的なコンピュータ可読媒体。
【請求項32】
前記第1のデータフローは、輻輳に直面した場合に、前記第2のデータフローよりも高い帯域幅および低いレイテンシが保証される、請求項30に記載の非一時的なコンピュータ可読媒体。
【請求項33】
中間の優先度を有する第3のデータフローに、前記第1の遅延閾値と前記第2の遅延閾値との間の値を有する第3の遅延閾値が割り当てられる、請求項30に記載の非一時的なコンピュータ可読媒体。
【請求項34】
前記命令は、前記第3のデータフローのデータパケットの第3の片道遅延が前記第3の遅延閾値を超えるとの決定に応答して、前記第3のデータフローのデータパケットの送信を、前記第1の時間と前記第2の時間との間の値を有する第3の時間、休止するための命令をさらに含む、請求項33に記載の非一時的なコンピュータ可読媒体。
【請求項35】
前記命令は、データフローのデータパケットを個々の送信側によってそれぞれにおける有限バッファに記録し、かつ、個々のデータフローが休止される間に、個々の有限バッファに記録されたデータパケットを再送するための命令をさらに含む、請求項30に記載の非一時的なコンピュータ可読媒体。
【請求項36】
前記命令は、
前記第1の送信ホストと前記受信ホストとの間において達成可能な最小片道遅延を決定し、かつ、
前記最小片道遅延の倍率に基づいて前記第1の遅延閾値を決定し、前記倍率は、前記第1のデータフローの優先度に依存して選択される、ための命令をさらに含む、請求項30に記載の非一時的なコンピュータ可読媒体。
【請求項37】
前記第1のデータフローおよび前記第2のデータフローの優先度は、経時的に再決定され、かつ、動的に変化する、請求項30に記載の非一時的なコンピュータ可読媒体。
【請求項38】
ネットワークトラフィックを優先度付けするためのシステムであって、前記システムは、
エンコードされた命令を有するメモリと、
前記命令を実行すると、動作の実行が引き起こされる1つまたは複数のプロセッサと、を備え、前記動作は、
第1の送信ホストと受信ホストとの間の第1のデータフローを識別することであって、前記第1のデータフローは高優先度を有し、前記第1の送信ホストおよび前記受信ホストは、共通の基準クロックを用いて同期される、こと、
第2の送信ホストと前記受信ホストとの間の第2のデータフローを識別することであって、前記第2のデータフローは低優先度を有する、こと、
前記高優先度に基づいて前記第1のデータフローに第1の遅延閾値を割り当て、かつ、前記低優先度に基づいて前記第2のデータフローに第2の遅延閾値を割り当てることであって、前記第1の遅延閾値は、前記第2の遅延閾値を超える、こと、
前記第1の遅延閾値に関連して前記第1のデータフローのデータパケットの第1の片道遅延をモニタすること、
前記第2の遅延閾値に関連して前記第2のデータフローのデータパケットの第2の片道遅延をモニタすること、
前記第1のデータフローのデータパケットの前記第1の片道遅延が前記第1の遅延閾値を超えるとの決定に応答して、前記第1の送信ホストから前記受信ホストへの前記第1のデータフローのデータパケットの送信を第1の時間、休止すること、および、
前記第2のデータフローのデータパケットの前記第2の片道遅延が前記第2の遅延閾値を超えるとの決定に応答して、前記第2の送信ホストから前記受信ホストへの前記第2のデータフローのデータパケットの送信を、前記第1の時間を超える第2の時間、休止すること、
を含む、システム。
【請求項39】
前記第1の送信ホストおよび前記第2の送信ホストは、同じ送信ホストである、請求項38に記載のシステム。
【請求項40】
前記第1のデータフローは、輻輳に直面した場合に、前記第2のデータフローよりも高い帯域幅および低いレイテンシが保証される、請求項38に記載のシステム。
【請求項41】
中間の優先度を有する第3のデータフローに、前記第1の遅延閾値と前記第2の遅延閾値との間の値を有する第3の遅延閾値が割り当てられる、請求項38に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
[0002]本開示は、一般に、ネットワーク伝送およびデータフローにおけるネットワークトラフィックの協調制御に関する。
【背景技術】
【0002】
関連出願の相互参照
[0001]本願は、2021年4月23日に出願された米国仮出願第63/178,999号、2022年3月15日に出願された米国仮出願第63/320,160号、2022年4月20日に出願された米国実用新案出願第17/725,408号、および、2022年4月20日に出願された米国実用特許出願第17/520,836号の利益を主張し、それらの出願は参照によりそれぞれの全体が組み込まれる。
【0003】
[0003]最新のインターネットインフラストラクチャは、大量のネットワークトラフィックを生成する大規模データセンタを典型的に含む。要求が高い場合、データセンタの出力は、(例えば、スイッチやゲートウェイの能力などによって)制約されることがあり、かつ、ネットワークトラフィックを測定しなければならないことがある。このような一時的な輻輳シナリオは、ボトルネックを引き起こし、かつ、パケットの欠落を引き起こし得る。このような状況に直面した場合にパケット伝送の成功を確実にするために、パケットを受信すると受信ノードから送信ノードへ確認応答を送信するシステムが開発されている。しかしながら、これらの確認応答は、ネットワークトラフィックのさらなる一因であるという点で効果的でない。さらに、これらの確認応答は、単一の送信機から単一の受信機へのシナリオにおいて機能するように制限される。またさらに、確認応答が受信されない場合、パケットは、単にアドホックに再送され、同じ輻輳スイッチに流入し、かつ、同じ欠落結果に陥る可能性があり、結果的に、パケットが絶えず遅延する、または宛先によってまったく受信されないシナリオとなる。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】米国特許第10,623,173号明細書
【図面の簡単な説明】
【0005】
【
図1】[0004]
図1は、本開示の実施形態に係る、ネットカムおよび優先機能を実行する例示的なシステム環境である。
【
図2】[0005]
図2は、本開示の実施形態に係る、複数の送信ホストが複数のデータフローを単一の受信ホストへ送信することを示すネットワークトラフィック図である。
【
図3】[0006]
図3は、本開示の実施形態に係る、データ伝送の送信側および受信側の両方におけるタイムスタンプ動作を示すネットワークトラフィック図である。
【
図4】[0007]
図4は、本開示の実施形態に係る、通常動作期間およびその期間に異常が検出された場合におけるネットカム動作を示すデータフロー図である。
【
図5】[0008]
図5は、本開示の実施形態に係る、受信ホストが送信ホストから高優先度および低優先度の両方のトラフィックを受信することを示すネットワークトラフィック図である。
【
図6】[0009]
図6は、本開示の実施形態に係る、ネットカム動作を決定する際に優先度が考慮されることを示すデータフロー図である。
【
図7】[0010]
図7は、本開示の実施形態に係る、ネットカム動作を実施するための例示的な処理を示すフローチャートである。
【
図8】[0011]
図8は、本開示の実施形態に係る、複数優先度シナリオにおけるネットカム動作を実施するための例示的な処理を示すフローチャートである。
【発明を実施するための形態】
【0006】
[0012]図面および以下の説明は、例示目的のみの好ましい実施形態に関する。以下の議論から、本明細書に開示される構造および方法の代替的な実施形態は、特許請求の範囲の原理から逸脱せずに採用され得る実行可能な代替として容易に認識されるべきである。
【0007】
[0013]本明細書において、一時的な輻輳に直面した際にデータフローを協調制御するシステムおよび方法が開示される。「ネットカム」は、データフローの一部である、クロック同期した送信ホストおよび受信ホストの間のネットワークトラフィックをモニタする。「ネットカム」として本明細書において使用される用語は、「ネットワークカメラ」の略記であり、ネットワークトラフィックを追跡し、かつ、クロック同期したシステムにおけるデータフローのトラフィックが許容限度を超えて遅延した場合に是正措置(remedial action)をとることを確実にするモジュールである。ネットカムは、送信ホストおよび受信ホストに、ネットワークトラフィックのコピーを幾つかのパラメータ(例えば、或る個数のパケットをバッファする、逐次時間窓(a rolling window of time)に見合ったパケットをバッファする等)に従ってバッファするように指示する。バッファは、パラメータが達成される場合に逐次基準(rolling basis)で上書きされ得る(例えば、新規のパケットが送信または受信された場合かつバッファが満杯である場合に最も古いパケットが上書きされる等)。ネットカムは、異常が検出された場合に、全ての送信ホストおよび受信ホストにデータをバッファさせてよく、かつ、書き込まれたパケットを送信ホストに再送させてよい。再送は、所与のパケット伝送シーケンスに起因してパケット伝送に遅延または失敗が生じるような、揺動(例えば、データフローのパケット伝送間の時間遅延)を受け得るが、揺動(jitter)は、それにもかかわらず、再送の試行が成功するのに十分な変化を引き起こす。ネットカムは、データフローの優先度に異なって依存してパケットの書き込みおよび再送の必要性を決定し得る。
【0008】
[0014]有利には、本明細書において開示するネットカムの実装は、ネットワーク伝送および犯罪科学分析(forensic analysis)の両方の改善を可能にする。改善されたネットワーク伝送は、データフローにおける最新のパケット伝送について全てのマシンにわたってバッファへの書き込みを試行することによってもたらされ、複雑に絡み合ったマシンにわたって損失(lost)または欠落(dropped)し得る確認応答パケットに依存することなく、多くのマシンからの正確なパケットセットの再送を可能にする。さらに、仮想マシンは、検出または分離することが難しいバグを有し得る。異常に関連付いたパケットシーケンスの書き込みは、異常分析を可能にし、その分析は欠陥のある仮想マシンの識別を可能にし得る。さらなる利点および改善が、以下の開示から明らかになる。
【0009】
[0015]
図1は、本開示の実施形態に係る、ネットカムおよび優先機能を実行する例示的なシステム環境である。
図1に示すように、ネットカム環境100は、送信ホスト110、ネットワーク120、受信ホスト130、および、クロック同期システム140を含む。送信ホスト110および受信ホスト130のそれぞれ1つのみが示されるが、便宜のため、および、図示の容易性のために過ぎず、あらゆる数の送信ホストおよび受信ホストがネットカム環境100の一部であり得る。
【0010】
[0016]送信ホスト110は、バッファ111、ネットワークインタフェースカード(NIC)112、および、ネットカムモジュール113を有する。バッファ111は、バッファのパケットを上書きまたは破棄する1つまたは複数の基準が満たされるまで、出力データ伝送のコピーを保存する。例えば、バッファは、容量に達するまでデータパケットを保存してよく、容量に達した場合、バッファされた最も古いデータパケットが、破棄または上書きされてよい。他の基準として、時間経過(例えば、送信タイムスタンプから所定量の時間が経過したパケットを破棄する)、バッファされたパケット量(例えば、所定量のパケットがバッファされた後、新規パケットの送信時に最も古いパケットの破棄または上書きを開始する)等が含まれてもよい。
【0011】
[0017]実施形態において、バッファ111は、全てのパケットよりも、所与の出力伝送に関する情報を保存する。例えば、パケット自体よりもバイトスタンプ(byte stamp)が保存されてよく、バイトスタンプは、パケットの識別子および/またはフロー識別子と、パケット(または、アグリゲートされたデータフロー)が送信された時のタイムスタンプとを示す。このような実施形態において、保存された情報は上書きされる必要はなく、送信ホスト110および/またはクロック同期システム140の永続性メモリに保存されてよい。本実施形態は、パケットのコピーを保存するバッファ111と相互に排他的ではなく、それらの組み合わせが採用されてもよい。
【0012】
[0018]NIC112は、スマートNICのような、あらゆる種類のネットワークインタフェースであってよい。NIC112は、送信ホスト110およびネットワーク120をインタフェースする。
【0013】
[0019]ネットカムモジュール113は、データフローの或る条件をモニタし、モニタデータに基づいて機能をトリガする。一例として、ネットカムモジュール113は、ネットワーク輻輳の検出に応答して、データフローの一部である全ホストに対して、送信の休止、バッファされたデータ送信のスナップショットの取得(つまりは、永続性メモリへのバッファデータの書き込み)、および、その他の協調動作の実施といった、様々な動作の1つまたは複数を指示してよい。本明細書において使用されるデータフローという用語は、相互に関連した2つ以上のホストの間のデータ伝送の集合(collection)を意味し得る。ネットカムモジュール113のさらなる詳細については、
図2~
図8との関係においてさらに詳細に以下に記載される。ネットカムモジュール113は、送信ホスト110のあらゆるコンポートに実装され得る。一実施形態において、ネットカムモジュール113は、NIC112に実装されてよい。他の実施形態において、ネットカムモジュール113は、送信ホスト110のカーネルに実装されてよい。
【0014】
[0020]ネットワーク120は、ワイドエリアネットワーク、ローカルエリアネットワーク、インターネット、または、送信ホスト110と受信ホストとの間におけるあらゆる他のデータ伝送の配線(conduit)といった、どのようなネットワークであってもよい。幾つかの実施形態において、ネットワーク120は、送信ホスト110および受信ホスト130の両方を収容するデータセンタ内に存在してもよい。他の実施形態において、ネットワーク120は、あらゆる距離にわたる相互データセンタ伝送(cross-data center transmissions)を促進し得る。データセンタの言及は例示に過ぎず、送信ホスト110および受信ホスト130は、データセンタでない媒体を含む、どのような媒体において実装されてもよい。
【0015】
[0021]受信ホスト130は、ネットカムバッファ131、NIC132、および、ネットカムモジュール133を有する。ネットカムバッファ131、NIC132、および、ネットカムモジュール133は、送信ホスト110について上述した類似構成要素と同様に動作する。バッファ131は、バッファ111と同じサイズまたは異なるサイズであってよく、追加的または代替的に、受信パケットのバイトスタンプを保存してよい。送信ホストおよび受信ホストにおいて実装される構成要素間のさらなる区別は、以下の
図2~
図8の開示に基づいて明らかにされるであろう。
【0016】
[0022]ネットカムシステム140は、クロック同期システム141を有する。ネットカムシステム140は、ネットカムモジュール131および133のような、ホストに実装されるネットカムモジュールによって観測されるデータをモニタし得る。ネットカムシステム140は、ネットカムモジュールによるアクションを要求する条件を検出してよく、かつ、影響のあるネットカムモジュールに対して所与のデータフローについて協調動作をとるように指示してよい。クロック同期システム141は、NIC、カーネル、またはネットカムモジュール内において動作する他の構成要素といった、個々のホストの1つまたは複数の構成要素を同期させる。クロック同期の詳細については、2020年4月14日に発行された共同所有に係る特許文献1に記載され、その開示は参照により全体が本明細書に組み込まれる。個々のホストは、極めて正確なレベルで同じ基準クロックに同期され、ホストの場所、ホストの帯域幅条件、および、揺動(jitter)等に関わらず、複数ホストにわたる正確なタイムスタンプを可能にする。ネットカムシステム140のさらなる詳細については、
図2~
図8を参照して以下に開示される。ネットカムシステム140は、ネットカム環境100におけるオプションの構成要素であり、送信ホストおよび受信ホストのネットカムモジュールは、同期する基準クロックに頼ることを除いて、集中システムに頼らずに動作することが可能である。
【0017】
[0023]ネットカム環境100には、多くの利点がある。ネットカムモジュールがホスト(例えば、物理ホスト、仮想マシン、またはあらゆる他のホストの形態)のカーネルまたはNIC(例えば、スマートNIC)において実行可能であると仮定した場合、ネットカムモジュールは、エッジベース(edge-based)である。一実施形態において、ネットカム機能は、例えば、OSIシステムの輻輳制御レイヤ(例えば、OSIシステムのレイヤ3)の下においてシム(shim)として実行され得るという意味において、下層(underlay)として実行され得る。ネットカムモジュール、および/または、ネットカムシステム140は、条件の検出に応じて、影響するホストにわたるデータフローの送信休止、スナップショット(すなわち、送信された最後のNバイト、および/または、最後のS秒において送信されたバイト、ここで、NまたはSは、デフォルト値または管理者によって定義されてよい、といった幾つかのまたは全部のバッファデータの書き込み)、および、本明細書において開示されるあらゆる他の動作の実施をホストに指示してよい。さらなる利点および機能は、
図2~
図8を参照して以下に記載される。
【0018】
[0024]
図2は、本開示の実施形態に係る、複数の送信ホストが複数のデータフローを単一の受信ホストへ送信することを示すネットワークトラフィック図である。
図2に示すように、送信ホスト1は、データフロー211を受信ホスト200へ送信しており、送信ホスト220は、データフロー221を受信ホスト200へ送信しており、かつ、送信ホスト230によって代表されるように、あらゆる数の追加のホストがそれぞれのデータフロー(データフロー231によって代表される)を受信ホスト200へ送信し得る。
図2に示すように、個々のホストによって送信された個々のデータフローは異なるが、これは便宜に過ぎず、2つ以上のホストが同じデータフローからデータを送信してもよい。さらに、単一の送信ホストが、2つ以上の異なるデータフローを受信ホスト200へ送信してもよい。1つの受信ホストのみが示されているが、送信ホストは、あらゆる数の受信ホストへデータフローを送信してよい。
【0019】
[0025]送信ホストおよび受信ホストにおけるネットカムモジュールの動作について説明するため、
図3を参照する。
図3は、本開示の実施形態に係る、データ伝送の送信側および受信側の両方におけるタイムスタンプ動作を示すネットワークトラフィック図である。
図3に示すように、送信ホスト310がパケットを受信ホスト320へ送信する場合、受信ホスト320のネットカムモジュール113は、送信タイムスタンプ311を記録する。同様に、受信ホスト320がパケットを受信する場合、受信ホスト320のネットカムモジュール133は、受信タイムスタンプを適用する。タイムスタンプは、データパケットがネットカムモジュールの導入された関連の構成要素(例えば、NIC、カーネル等)において送信または受信された時刻を反映する。送信タイムスタンプは、バッファ111および131に保存されたり、パケットに添付されたり、ネットカムシステム140内の記憶装置へ送信されたりしてよく、また、それらのあらゆる組み合わせであってもよい。
【0020】
[0026]送信ホスト310は、受信ホスト320と同じ基準クロックに同期するため、送信タイムスタンプ311と受信タイムスタンプ321との間の経過時間は、所与のパケットの片道(one-way)遅延を反映する。一実施形態において、所与のパケットの受信に応じて、受信ホスト320は、受信タイムスタンプ321を示す確認応答パケットを送信ホスト310へ送信し、これによってネットカムモジュール113は、受信タイムスタンプ321から送信タイムスタンプ311を減算することで片道遅延を計算することが可能である。片道遅延を計算する他の手段は本開示の範囲内である。例えば、送信タイムスタンプ311がデータ送信に添付されてよく、かつ、受信ホスト320は、それにより、確認応答パケットの必要無しに片道遅延を計算し得る。さらに他の例として、送信ホストおよび受信ホストのネットカムモジュールは、まとめて(in batches)または個別に、タイムスタンプをネットカムシステム140へ送信してよく、ネットカムシステム140は、それらから片道遅延を計算してよい。便宜および簡潔さを目的として、以下の開示では、送信ホストが確認応答パケットに基づいて片道遅延を計算するシナリオに着目するが、当業者は、これらのあらゆる計算手段が同等に適用されることを認識するであろう。
【0021】
[0027]そして、ネットカムシステムは、片道遅延が閾値を超えるかを判定する。例えば、片道遅延の計算後に、送信ホスト110は、片道遅延を閾値と比較してよい。閾値は、所定でもよいし動的に決定されてもよい。所定の閾値は、デフォルトで設定されてもよいし、管理者によって設定されてもよい。以下においてさらに説明するように、データフローの1つまたは複数の優先度のような属性に依存して、異なる閾値が異なるデータフローに適用されてよい。閾値は、輻輳が低下するにつれて動的に増加し、かつ、輻輳が上昇するにつれて減少する(例えば、輻輳が生じていないか、軽度の輻輳であるという問題を遅延が示している可能性が高いため)というように、あらゆる数の因子に依存して動的に決定されてもよい。一実施形態において、閾値は、送信ホストと受信ホストとの間の距離に依存し得るため、ホスト単位を基準(per-host basis)として設定されてよい。このような実施形態において、閾値は、送信ホストと受信ホストとの間の最小片道遅延の予め決められた倍率であり得る。すなわち、パケットが送信ホストから受信ホストへ伝搬するのに必要な最小時間が、最小片道遅延である。倍率は典型的には最小で1.5倍~3倍であるが、あらゆる倍率がネットカムの管理者によって定義されてよい。閾値は、最小片道遅延の複数回の乗算に等しい。片道遅延が閾値を超えているとの決定に応答して、ネットカムモジュール113は、送信ホスト110に1つまたは複数の動作をとるよう指示してよい。
【0022】
[0028]これらの1つまたは複数の動作は、片道遅延が高い場合に送信ホストからの送信を休止することを含んでよく、それによって輻輳を低減しネットワーク120におけるパケット欠落を全体的に低減する。休止は、所定時間であってもよいし、または、片道遅延の大きさに比例して動的に決定されてもよい。一実施形態において、休止は、片道遅延に等しくてもよいし、または、片道遅延に管理者が定義した倍率を適用することによって決定されてもよい。一実施形態において、ネットカムは、以前の休止が実施中であるかを判定し、実施中である場合は、以前の確認応答パケットから既に経過した休止時間に基づいて、休止時間を短縮してよい。さらに、所与のデータフローは、輻輳をもたらすデータフローのみでなくてよく、したがって、その休止期間は片道遅延または片道遅延閾値よりも小さくてもよい。
【0023】
[0029]他の取り得る動作は、片道遅延が閾値を超えることに応答して、幾つかのまたは全部のバッファされたデータパケット(例えば、送信ホストおよび受信ホストのうちの1つまたは両方からの)を永続性メモリに書き込むことである。そして、バッファされたデータパケットに基づいて診断が実施され得る(例えば、ネットワークの不具合を識別するため)。さらなる動作が、
図4~
図8に関して以下に詳細に説明される。
【0024】
[0030]幾つかの実施形態において、データフローは、異なる優先度に関連付けられてよい。ネットカムモジュールは、明示的な識別子(例えば、データパケットヘッダ内のトラフィック層の識別子)に基づいて、または、推定(例えば、優先度タイプを決定するためにルールがパケットヘッダ、および/またはペイロードに適用されるというヒューリスティック)に基づいて、データフローの優先度を決定し得る。本明細書において使用する優先度とは、どのタイプのデータパケットの送信が、許容されるべきであるか、および、輻輳期間には休止されるべきであるかについての優先スキームを指す。本明細書において開示する優先度は、不十分なリンクの活用または明示的な帯域割当の必要性を回避し、代わりにネットワーク輻輳期間にどのパケットの送信を選択するかという面から検討される。
【0025】
[0031]高優先度パケットを優先するために、高い片道閾値が高優先度トラフィックに割り当てられてよく、かつ、高い片道閾値に対して相対的に低い片道閾値が低優先度トラフィックに割り当てられてよい。このように、ネットカムモジュールによって異常が検出されるためには、低優先度パケットについてより低い片道遅延が検出される必要があるため、低優先度パケットについては、高優先度パケットよりも頻繁に異常が検出されることになるのに対し、高優先度パケットについては、高い片道閾値が破られた場合にのみ異常が検出されることになる。所与のホストに対する片道閾値の決定についての以上の説明に続いて、異なる片道閾値が、同じホストから送信された、または、同じホストによって受信された異なるデータパケットに対し、優先度に依存して適用されてもよい。優先度についての実施形態において、片道閾値は、上述した方法(例えば、閾値に所定の倍率を適用すること)によって決定されてもよく、ここで、決定は、優先度倍率の適用によって付加的に影響される。優先度倍率は、あらゆる所与のタイプの優先度について管理者によって設定されてよいが、より高い優先度にはより高く、かつ、より低い優先度にはより低く設定される。優先度は2値である必要はなく、あらゆる数の優先度の階層が規定されてよく、それぞれは、異なるタイプまたは複数タイプのデータトラフィックに対応し、かつ、異なる倍率を有する。優先度およびそれらに関連付けられた倍率は、所与のデータフローについて経時的に変化し得る(例えば、高レイテンシ伝送の必要の無い異なるタイプのデータパケットの送信開始において、優先度は低下し得る)。
【0026】
[0032]所与のパケットの優先度に基づいて片道遅延閾値を使用すること、および、片道遅延閾値を異ならせることの追加または代替で、ネットカムモジュールは、休止動作中の休止トラフィックの休止時間を優先度に依存して異なるように操作してもよい。低い休止時間が高優先度トラフィックに割り当てられてよく、かつ、相対的に高い休止時間が低優先度トラフィックに割り当てられてよい。低優先度トラフィックが輻輳期間に高優先度トラフィックよりも頻繁に休止されることを確実にすることによって、高優先度トラフィックがより多くの帯域幅を利用できることを確実にする一方、低優先度トラフィックは休止される。休止時間は、前述と同じ方法によって決定されてよいが、休止時間に追加の休止倍率を適用する追加のステップ、高優先度トラフィックについてのより低い休止倍率(例えば、0.7倍のような1よりも小さい倍率)、および、より低い優先度トラフィックについてのより高い休止倍率(例えば、1よりも大きい倍率)を用いて決定されてもよい。
【0027】
[0033]優先度は、あらゆる数の方法において割り当てられてよい。一実施形態において、適格な優先度を有するデータフローによって使用可能な1つまたは複数の「相乗りレーン(carpool lanes)」が割り当てられてよい。例えば、「相乗りレーン」は、所与のデータ通信のための最小帯域幅を保証しない帯域幅の割当であってよいが、要求パラメータを満たすデータフローによってのみアクセス可能である。例示的なパラメータは、所与の「相乗りレーン」の予約帯域幅の使用を適格とする1つまたは複数の優先度を含んでよい。一例として、相乗りレーンは、データフローが少なくとも中間の優先度を有することが求められるため、低、中、高の3つの優先度システムでは、中優先度および高優先度の両方が適格となる。他の一例として、複数の「相乗りレーン」が存在してもよい(例えば、中優先度および高優先度のトラフィックによるアクセスが可能な相乗りレーンに加えて、高優先度トラフィックによるアクセスのみが可能な相乗りレーン)。
【0028】
[0034]一実施形態において、保証帯域幅は、所与の優先度に割り当てられてよい。例えば、高優先度データフローには、70mbpsのような最小帯域幅が割り当てられてよい。このような実施形態において、保証された帯域幅からの余剰の未使用帯域幅は、保証適格であるデータフローによって帯域幅が要求されるような時まで、より低優先度のデータフローに割り当てられてよい。保証帯域幅は、絶対的または相対的であり得る。相対的な保証は、所与の優先度データフローが、少なくとも低優先データフローよりも相対量の大きな帯域幅を受けることを保証する。例えば、高優先度データフローは、低優先度データフローの3倍の帯域幅が保証されてよく、かつ、中優先度データフローは、低優先度データフローの2倍の帯域幅が保証されてよい。
【0029】
[0035]
図2を参照すると、2つ以上の送信ホストが同じデータフローからデータを送信する場合、それらに並んで、かつ、データフローからデータを受信するあらゆる受信ホストに対する追加のノードは、「クラスタ」と称されてよい。一実施形態において、データフローは、データパケットがデータフローの一部であることを表す識別子の収集、仮に全部が検出された場合、によって識別され得る。例えば、何れかのホストのネットカムモジュールは、パケットが属するデータフローを識別するフロー識別子を、送信元アドレス、宛先アドレス、送信元ポート番号、宛先ポート番号、および、プロトコルポート番号の組み合わせに基づいて決定し得る。識別子の他の組み合わせが、そのパケットを一部とするデータフローの識別に使用されてもよい。既述のように、クラスタのホストは、全てが同じ基準クロックに対して同期するため、それらの形態(例えば、サーバ、仮想マシン、スマートNIC等)は問わない。
【0030】
[0036]データフロー211および221が同じデータフローであるシナリオにおいて、送信ホスト210、送信ホスト220、および、受信ホスト200がクラスタを形成する。この例に従い、データパケットのバッファは、フロー単位のレベルでクラスタのホストにわたって生じ得る。すなわち、1つまたは複数のネットカムモジュール、および/または、ネットカムシステム140は、バッファがデータを記録し、その後にデータ(例えば、直近に送信されたパケット、所与の時間内に送信/受信されたパケット等)を上書きするために使用するパラメータがどのようなパラメータであっても、そのパラメータ内で送信または受信された全てのパケットをデータフローのホストのバッファ内に記録し得る。一実施形態において、基準クロックに対する相対的な時間シーケンスの表示は、バッファされたデータと共に保存される(例えば、送信タイムスタンプ311および/または受信タイムスタンプ321は、バッファされたデータパケットと共に保存される)。よって、送信ホスト210および送信ホスト220は、それらのバッファ111に所与のフローIDを共有するデータパケットを保存してよく、受信ホスト200は、バッファ131に受信パケットを保存してよい。代替的または追加的に、送信および/または受信されたパケットは、ネットカムシステム140に送信されてよく、ネットカムシステム140は、受信データをバッファし得る。
【0031】
[0037]クラスタの個々のホストにおいて或る量のデータをバッファするというこの利点から、ホストネットカムモジュールの異なる機能が、異常の検出に応答して可能になる。
図4は、本開示の実施形態に係る、通常動作期間およびその期間に異常が検出された場合におけるネットカム動作を示すデータフロー図である。データフロー400は、通常機能期間および「異常機能」(すなわち、異常が検出された場合にとられる動作)期間のホスト動作およびネットカム動作(例えば、送信/受信ホストのネットカムモジュールまたはネットカムシステム140)を反映する。データフロー400は、まず通常機能を示し、通常機能においてホストはデータフローを送信または受信し402、そして、ネットカムモジュールまたはシステム(この図において一般に「ネットカム」として参照される)が、(例えば、上述したように片道遅延に基づいて)異常が検出されるかを決定404する。異常が検出されない場合、以前からデータパケットのストレージが満杯であると仮定して、ホスト(例えば、クラスタの)は、それらのバッファを上書き406する(例えば、上述したように、最古のパケットの上書き、または幾つかの他の上書きヒューリスティックに従うことを意味する)。もちろん、バッファが満杯でない場合、上書きは必要なく、バッファの空きメモリへの保存が生じる。通常機能は、異常が検出されない限り、繰り返される。
【0032】
[0038]異常機能は、異常が検出された場合に生じる。本明細書において異なる異常機能が開示され、データフロー400は、バッファデータの再送についての特定の異常機能の図示に着目する。ホスト(例えば、クラスタの)によるデータフローの情報を送信/受信408する場合に、ネットカムは、異常を検出410し得る。既述のように、異常は、片道遅延が閾値を超える場合に検出される。クラスタでは、閾値はクラスタのホスト間において、送信ホストと受信ホストの間の距離に応じて変化し得ることが思い起こされる。異常の検出に応答して、ネットカムは、クラスタの全ホストにバッファデータを保存すべきことを指示412する。すなわち、クラスタの1つのホストにおいて異常が検出された場合であっても、クラスタの全ノードからのデータが保存される。これは、ホストにバッファデータ(または、バッファデータのデータフローに関連する一部分)を永続性メモリに保存するよう指示することによって、またはバッファ内にバッファデータを維持し、かつ、データ送信を休止することによって、または異なるホストに対する異なる指示を用いたそれらの組み合わせによって生じ得る。なお、休止が使用される場合、休止時間は、既述のように、クラスタの異なるノードにわたって変化してよい。データがどのようにして保存されるかに関わらず、ネットカムは、再送タイミングを揺動(jitter)414させてよい。パケット送信および受信の時間シーケンスは、保存されたデータパケットにおいて反映されることが思い起こされる。ネットカムは、時間シーケンスを変更する(例えば、送信間において前回の時間ギャップよりも長い時間差(lag)を生成する、異なる順序でパケットを送信する等)ことによって、再送タイミングを揺動させてよい。揺動は、ヒューリスティックに、またはランダムに生じ得る。揺動は、先に試行された時間シーケンスが失敗の原因(例えば、先に試行された時間シーケンス自体が過度に一時的な輻輳を引き起こし得るため)であった場合に適用され、したがって、揺動無しの再送では失敗するようなシナリオでも、揺動の適用によって成功し得る。ネットカムは、その後にバッファデータ(またはその一部分)を再送416する。なお、異常と関連するデータフローのパケットを分離するよりも、データフローまたは異常と関連しないデータを含むバッファ全体を再送する方が、より得策で計算効率のよい場合がある。その後、別の異常が検出されるまで、通常機能が再開される。
【0033】
[0039]揺動を伴う再送は、通常機能の一例に過ぎず、あらゆる数の機能が異常の検出に応答して生じ得る。例えば、データフロー400において示した異常機能に対して追加的または代替的に、バッファデータは、永続性メモリに書き込まれて犯罪科学分析のために保存されてよい。このようなシナリオにおいて、異常の検出に応答して、ネットカムは、管理者にアラートを送信、および/または、異常を示すイベントログを生成してよい。あらゆる他の既述の異常機能が同等に適用可能である。犯罪科学分析の一例として、データセンタのようなシステムに対する既知のタイプの攻撃は、タイミング攻撃である。タイミング攻撃は、「シグネチャ」を有することがあり、トラフィックのパケット間隔を学習できる(例えば、タイミングパターンがタイミング攻撃であったかによってラベル付けされたタイミングパターンを使用して機械学習モデルをトレーニングすることにより)。犯罪科学分析は、データがタイミング攻撃であったかを決定するために実施され得る。タイミング攻撃は、ブロックされ得る(例えば、バッファデータがタイミング攻撃を表すとのネットカムモジュール113の決定に応じてバッファからデータパケットをドロップすることにより)。
【0034】
[0040]上述したように、バッファデータは、バイトスタンプ(バッファパケットと対照的に、または、追加して)を含み得る。バイトスタンプは、異常の分析に使用され得る(例えば、犯罪科学分析、ネットワークデバッグ、セキュリティ分析等において)。バイトスタンプを使用することの利点は、バッファされたデータパケットを使用するよりも、記憶スペースが節約されることであり、かつ、バイトスタンプは処理にかかる計算が少ない。異常の原因を特定するために、異常に対応する時間量のバイトスタンプが分析され得る。バッファされたパケットよりもバイトスタンプを使用することのトレードオフは、バッファされたパケットデータがよりロバストであり、異常に対するさらなる洞察を提供し得ることである。
【0035】
[0041]
図5は、本開示の実施形態に係る、受信ホストが送信ホストから高優先度および低優先度の両方のトラフィックを受信することを示すネットワークトラフィック図である。
図5に示すように、送信ホスト510は、高優先度データフロー511を受信ホスト500へ送信し、かつ、送信ホスト530は、低優先度データフロー531を受信ホスト500へ送信する。ネットワーク輻輳が発生し、かつ、異常が検出された場合、送信ホストは、高優先度および低優先度のトラフィックを異なって処理し得る。一実施形態において、低優先度データフロー531は高優先度データフロー511よりも低い片道遅延閾値と関連付けられるため、送信ホスト530は、送信ホスト510よりも早くネットワーク輻輳を検出する。したがって、送信ホスト530は、低優先度データフロー531のネットワーク送信を休止時間だけ休止するといった是正措置を実施し、一方で、高優先度データフロー511については、その高い片道遅延閾値には到達していないため、送信を継続する。高優先度データフロー511がその高い片道遅延閾値に実際に到達し、かつ、休止動作が応答的にとられた場合、その休止時間は、低優先度データフロー531についての休止時間よりも短い時間であってよい。したがって、高優先度データフロー511が継続する間に低優先度データフロー531が余分な時間だけ(for extra time)休止されなかった場合に直面するであろう場合よりも、高優先度データフロー511が、より早く、かつ、より輻輳の少ない時間に再開することを確実にする。
【0036】
[0042]2つの別々の送信ホストとして示されているが、送信ホスト510および530は同じホストであってもよく、その場合、1つの送信ホストが高優先度トラフィックおよび低優先度トラフィックの両方を受信ホスト500に送信する。したがって、同じ送信ホストは、高優先度データフロー511を通常通りに送信し続けながら、低優先度データフロー531の異常検出に応答して、是正措置(例えば、休止)をとり得る。送信ホストは、複数のバッファ111を有してよく、個々のバッファは、異なる優先度に対応する。
【0037】
[0043]
図6は、本開示の実施形態に係る、ネットカム動作を決定する際に優先度が考慮されることを示すデータフロー図である。データフロー600は、1つまたは複数の送信ホスト(例えば、送信ホスト110)がデータフローを送信602し、かつ、送信タイムスタンプ(例えば、送信タイムスタンプ311)を適用することによって開始する。受信ホスト(例えば、受信ホスト130)は、データフローを受信604し、かつ、受信タイムスタンプ(例えば、受信タイムスタンプ321)を適用する。そして、ネットカム動作が生じる。上述したように、ネットカム動作は、送信ホストにおいて(例えば、受信タイムスタンプを示すACKパケットを受信し、かつ、ネットカムモジュールを使用して片道遅延を計算することによって)、受信ホストにおいて(例えば、送信タイムスタンプがデータフローに含められており、かつ、ネットカムモジュールがそこから片道遅延を計算する場合において)、ネットカムシステム140において、またはそれらの幾つかの組み合わせにおいて、生じ得る。
【0038】
[0044]ネットカムは、データフローにおけるデータパケットの片道遅延を決定606する。先に説明したように、片道遅延の計算は、データフローの優先度に依存してよく、したがって、異なるデータフローは、異なる片道遅延閾値(「優先度閾値」)を有し得る。ネットカムは、決定した片道遅延を個々の優先度閾値と比較608する。片道遅延が所与のデータフローについての閾値よりも大きいとの決定に応答して、異常機能が起動(initiated)される。
図6に示すように、幾つかの異常機能は、所与の優先度に関連付けられたデータフローの送信を休止612すること、および/または、所与の優先度に関連付けられたバッファデータフローを(例えば、犯罪科学分析のために)保存614することのうちの1つまたは複数を含み得る。上述したように、休止時間は、休止されたデータフローの優先度レベルに応じて変化し得る。
【0039】
[0045]
図7は、本開示の実施形態に係る、ネットカム動作を実施するための例示的な処理を示すフローチャートである。処理700は、1つまたは複数のプロセッサによって実行され得る(例えば、非一時的なコンピュータ可読媒体に保存された、動作を実施するためのコンピュータ可読命令に基づいて)。例えば、ネットカムモジュール113、133、および/または、ネットカムシステム140は、幾つかのまたは全ての命令を実行して処理700を実施し得る。処理700は、便宜的に、ネットカムモジュール113について記載するが、あらゆる他のネットカムモジュール、および/または、システムによって実行されてよい。
【0040】
[0046]処理700は、送信ホスト(例えば、送信ホスト110)と受信ホスト(例えば、受信ホスト130)との間において送信されたデータフローについて、送信ホストによって、データフローの送信済みネットワークトラフィックの第1の既定量(pre-defined amount)を第1の逐次基準で記録702すること(例えば、バッファ111に記録すること)、および、受信ホストによって、データフローの受信済みネットワークトラフィックの第2の既定量を第2の逐次基準で記録704すること(例えば、バッファ131に記録すること)から開始し、ここにおいて、送信ホストおよび受信ホストは、クロック同期する(例えば、クロック同期システム141の基準クロックを使用して)。
【0041】
[0047]ネットカムモジュール113は、ネットワークトラフィックにおけるデータパケットのタイムスタンプに基づいて(例えば、受信タイムスタンプ321から送信タイムスタンプ311を減算し、かつ、その結果を片道遅延閾値と比較することによって)、データフローにおける異常をモニタ706する。ネットカムモジュール113は、モニタ期間に(例えば、比較が閾値よりも大きい片道遅延を示すかどうかに基づいて)異常が検出されるかどうかを決定708する。モニタ期間に異常が検出されないことの決定に応答して、ネットカムモジュール133は、記録された送信済みネットワークトラフィックおよび記録された受信済みネットワークトラフィックを、それぞれ、新規に送信したネットワークトラフィックおよび新規に受信したネットワークトラフィックにて上書きすること710を受動的に許容してよい(例えば、最古に記録されたデータパケットの上に最新のネットワークトラフィックを記録し、かつ、エレメント702~708の繰り返しを継続する)。モニタ期間に異常が検出されたことの決定に応答して、ネットカムモジュール113は、データフローを休止712し、送信ホストに、記録された送信済みネットワークトラフィックを第1のバッファに保存させ、かつ、受信ホストに、記録された受信済みネットワークトラフィックを第2のバッファに保存させる。
【0042】
[0048]
図8は、本開示の実施形態に係る、複数優先度シナリオにおけるネットカム動作を実施するための例示的な処理を示すフローチャートである。処理800は、1つまたは複数のプロセッサによって(例えば、非一時的なコンピュータ可読媒体に保存された、動作を実施するためのコンピュータ可読命令に基づいて)実行され得る。例えば、ネットカムモジュール113、133、および/または、ネットカムシステム140は、幾つかのまたは全ての命令を実行して処理800を実施し得る。処理800は、便宜的に、ネットカムモジュール113について記載するが、あらゆる他のネットカムモジュール、および/または、システムによって実行されてよい。
【0043】
[0049]処理800は、第1の送信ホスト(例えば、送信ホスト110)および受信ホスト(例えば、受信ホスト130)との間の第1のデータフローを識別802することによって開始し、第1のデータフローは、高優先度(例えば、高優先度データフロー511)を有し、送信ホストおよび受信ホストは、共通の基準クロックを使用して同期される。ネットカムモジュール113(例えば、異なる送信ホストの、または送信ホスト110と同じ送信ホストの)は、第2の送信ホストと受信ホストとの間の第2のデータフロー(例えば、低優先度データフロー531)を識別804し、第2のデータフローは、低優先度を有し、ここで、第2の送信ホストは、第1の送信ホストと同じまたは異なるホストであり得る。
【0044】
[0050]ネットカムモジュール113は、高優先度に基づいて第1の遅延閾値を第1のデータフローに、低優先度に基づいて第2の遅延閾値を第2のデータフローに、割り当てる806。第1の遅延閾値は、第2の遅延閾値を超える。ネットカムモジュール113は、第1の遅延閾値に関連して第1のデータフローのデータパケットの第1の片道遅延をモニタ808し、かつ、第2の遅延閾値に関連して第2のデータフローのデータパケットの第2の片道遅延をモニタ810する。第1のデータフローのデータパケットの第1の片道遅延が第1の遅延閾値を超えるとの決定に応答して、ネットカムモジュール113は、第1の送信ホストから受信ホストへの第1のデータフローのデータパケットの送信を第1の時間、休止812する。第1のデータフローのデータパケットの第2の片道遅延が第2の遅延閾値を超えるとの決定に応答して、ネットカムモジュール113は、第2の送信ホストから受信ホストへの第2のデータフローのデータパケットの送信を、第1の時間を超える第2の時間、休止814する。
【国際調査報告】