本出願の実施形態は、リソースオーバーヘッドを低減し、ネットワークスループットを改善するためのトラフィック測定方法、デバイス、およびシステムを提供する。
上記の目的を達成するために、以下の技術的な解決策が本出願の実施形態において使用される。
第1の態様によれば、本出願の一実施形態は、パケット処理デバイスに適用されるトラフィック測定方法を提供し、パケット処理デバイスはバッファを備え、本方法は以下のステップ、すなわち、パケット処理デバイスによって、測定対象パケットをまず取得するステップと、バッファ内の占有記憶空間が事前設定閾値未満である場合、パケット処理デバイスによって、測定対象パケットの測定対象情報をバッファに書き込むステップであって、測定対象情報が、測定対象パケットのフロー識別子および測定対象パケットのトラフィック量を含む、ステップと、パケット処理デバイスによって、バッファから測定対象情報を次いで読み取るステップと、パケット処理デバイスによって、測定対象情報および第1のアルゴリズムに基づいて、第1の測定データにおける測定対象パケットに対応するa個のデータをさらに変更するステップであって、aが正の整数である、ステップとを含む、またはバッファ内の占有記憶空間が事前設定閾値以上である場合、測定対象情報および第2のアルゴリズムに基づいて、第2の測定データにおける測定対象パケットに対応するw個のデータを変更するステップであって、wが正の整数であり、wがa未満である、ステップとを含む。
このように、wはa未満であるため、測定対象パケットを処理するために第2のアルゴリズムが使用される場合、第1のアルゴリズムが使用される場合よりも少ない個数だけ、測定データにおける測定対象パケットに対応するデータを変更すれば済む。したがって、第2のアルゴリズムを使用することにより測定対象パケットを処理することは、より高速かつ効率的であり、より小さいリソースオーバーヘッドをもたらす。パケット処理デバイスは、第1のアルゴリズムに基づいて測定対象パケットを処理する際のパケット処理デバイスの負荷が比較的重いか否かを判定するために、バッファが比較的いっぱいであるか否かを判定し、その結果、第1のアルゴリズムに基づいて測定対象パケットを処理する際のパケット処理デバイスの負荷が比較的重い場合、パケット処理デバイスは、より高速な第2のアルゴリズムを使用することにより測定対象パケットを処理するように切り替え、これにより、正常なパケット転送サービスを確保し、ネットワークスループットを改善する。
第1の態様に関連して、可能な実装形態では、a個のデータはa個のカウンタの値であり、w個のデータはw個のカウンタの値である。
このように、測定対象パケットの処理中に、パケット処理デバイスによって変更される第1の測定データおよび第2の測定データにおけるデータは、具体的にはカウンタの値である。
第1の態様および上述の可能な実装形態に関連して、別の可能な実装形態では、第1のアルゴリズムはハッシュ関数を含み、第1の測定データはc個の場所におけるデータを含み、cは正の整数である。パケット処理デバイスによって、測定対象情報および第1のアルゴリズムに基づいて、第1の測定データにおける測定対象パケットに対応するa個のデータを変更するステップは、パケット処理デバイスによって、測定対象パケットのフロー識別子およびハッシュ関数に基づいて、c個の場所からu個の場所を判定するステップであって、uが正の整数であり、uがc以下である、ステップと、パケット処理デバイスによって、測定対象パケットのトラフィック量に基づいて、u個の場所におけるa個のデータを変更するステップであって、uがa以下である、ステップとを含む。
換言すれば、測定対象パケットの処理中に、パケット処理デバイスは、u個の場所におけるa個のデータを変更する。
第1の態様および上述の可能な実装形態に関連して、別の可能な実装形態では、バッファから測定対象情報を読み取るステップの後、本方法は、バッファから測定対象パケットの測定対象情報を削除するステップをさらに含む。
このように、バッファは、新しく取得された測定対象パケットの測定対象情報を格納するために空間を解放することができる。
第1の態様および上述の可能な実装形態に関連して、別の可能な実装形態では、フローテーブルがパケット処理デバイスに格納され、第2の測定データはフローテーブルにおけるデータを含み、フローテーブルはフロー識別子と第1のデータrとの間の対応関係を含む。パケット処理デバイスによって、測定対象情報および第2のアルゴリズムに基づいて、第2の測定データにおける測定対象パケットに対応するw個のデータを変更するステップは、測定対象情報および第2のアルゴリズムに基づいて、測定対象パケットに対応し、かつ第2の測定データにある第1のデータrfを変更するステップを含む。
この場合、パケット処理デバイスは、測定対象パケットに対応し、かつ第2の測定データにあるデータを変更する。
第1の態様および上述の可能な実装形態に関連して、別の可能な実装形態では、パケット処理デバイスによって、測定対象情報および第2のアルゴリズムに基づいて、測定対象パケットに対応し、かつ第2の測定データにある第1のデータrfを変更するステップは、フローテーブルが測定対象パケットのフロー識別子fを含む場合、測定対象パケットに対応し、かつフローテーブルにある第1のデータrfを、測定対象パケットに対応する第1のデータrfと測定対象パケットのトラフィック量との和に更新するステップを含む。
第1の態様および上述の可能な実装形態に関連して、別の可能な実装形態では、フローテーブルがパケット処理デバイスに格納され、フローテーブルはフロー識別子と第1のデータrおよび第2のデータdのそれぞれとの間の対応関係を含む。フローテーブルが測定対象パケットのフロー識別子fを含まず、フローテーブルがいっぱいである場合、パケット処理デバイスによって、測定対象情報および第2のアルゴリズムに基づいて、第2の測定データにおける測定対象パケットに対応するw個のデータを変更するステップの前に、本方法は、デクリメント値
を計算するステップと、フローテーブルに含まれる各フロー識別子に対応する第1のデータrを、第1のデータrとデクリメント値
との差に更新するステップと、フローテーブルに含まれる各フロー識別子に対応する第2のデータdを、第2のデータdとデクリメント値
との和に更新するステップと、第1の事前設定条件を満たすフロー識別子と第1のデータrおよび第2のデータdのそれぞれとの間の対応関係をフローテーブルから削除するステップであって、第1の事前設定条件を満たすフロー識別子が、対応する更新された第1のデータrが0以下であるフロー識別子である、ステップとをさらに含む。
第1のデータrの値は、フロー識別子に対応するデータフローのトラフィック量を示し得る。フローテーブルが測定対象パケットのフロー識別子fを含まず、かつフローテーブルがいっぱいである場合、パケット処理デバイスは、対応する第1のデータrが比較的小さい1つまたは複数のフロー識別子をフローテーブルから削除し得る。フローテーブルの空間は、比較的トラフィック量の多いデータフローのフロー識別子を格納するために使用されるように削除動作によって解放される。
第1の態様および上述の可能な実装形態に関連して、別の可能な実装形態では、フローテーブルはフロー識別子と第1のデータr、第2のデータd、および第3のデータeのそれぞれとの間の対応関係を含む。フローテーブルが測定対象パケットのフロー識別子fを含まず、フローテーブルがいっぱいである場合、パケット処理デバイスによって、測定対象情報および第2のアルゴリズムに基づいて、第2の測定データにおける測定対象パケットに対応するw個のデータを変更するステップは、測定対象パケットのトラフィック量がデクリメント値
よりも大きい場合、測定対象パケットのトラフィック量とデクリメント値
との差を、測定対象パケットに対応する第1のデータr
fに設定するステップと、デクリメント値
を、測定対象パケットに対応する第2のデータd
fに設定するステップと、総デクリメントトラフィック量Eを、測定対象パケットに対応する第3のデータe
fに設定するステップと、測定対象パケットのフロー識別子fと、測定対象パケットに対応する第1のデータr
f、測定対象パケットに対応する第2のデータd
f、および測定対象パケットに対応する第3のデータe
fのそれぞれとの間の対応関係をフローテーブルに挿入するステップとを含む。
フローテーブルが測定対象パケットのフロー識別子fを含まず、かつフローテーブルがいっぱいである場合、パケット処理デバイスは、削除動作を実行した後、測定対象パケットのフロー識別子をフローテーブルに挿入し得る。
第1の態様および上述の可能な実装形態に関連して、別の可能な実装形態では、本方法は、パケット処理デバイスによって、総デクリメントトラフィック量Eを、総デクリメントトラフィック量Eとデクリメント値
との和に更新するステップをさらに含む。
削除動作の後、デクリメント値は総デクリメントトラフィック量Eに加えられ得る。
第1の態様および上述の可能な実装形態に関連して、別の可能な実装形態では、パケット処理デバイスによって、デクリメント値
を計算するステップは、測定対象パケットのトラフィック量およびフローテーブルに含まれるフロー識別子に対応する第1のデータrを値の順に並べ替え、並べ替えた後の最初の2つの値をR
1およびR
2として、また並べ替えた後の最後の値をR
kとして示す、ステップと、デクリメント値
をR
1、R
2、R
k、および次式
に基づいて計算するステップであって、
であり、δは定数を表す、ステップとを含む。
このように、すべての第1のデータrの値に基づいてフィッティングによりロングテール分布が取得され、フィッティングにより取得された分布から閾値(つまり、デクリメント値)を選択することによりロングテール部分が削除される。
第1の態様および上述の可能な実装形態に関連して、別の可能な実装形態では、フローテーブルがパケット処理デバイスに格納され、フローテーブルはフロー識別子と第1のデータrおよび第3のデータeのそれぞれとの間の対応関係を含む。フローテーブルが測定対象パケットのフロー識別子fを含まず、フローテーブルがいっぱいではない場合、パケット処理デバイスによって、測定対象情報および第2のアルゴリズムに基づいて、第2の測定データにおける測定対象パケットに対応するw個のデータを変更するステップは、測定対象パケットのトラフィック量を、測定対象パケットに対応する第1のデータrfに設定するステップと、総デクリメントトラフィック量Eを、測定対象パケットに対応する第3のデータefに設定するステップと、測定対象パケットのフロー識別子fと、測定対象パケットに対応する第1のデータrfおよび測定対象パケットに対応する第3のデータefのそれぞれとの間の対応関係をフローテーブルに挿入するステップとを含む。
フローテーブルが測定対象パケットのフロー識別子fを含まず、かつフローテーブルがいっぱいではない場合、測定対象パケットに対応するフロー識別子はフローテーブルに挿入され得る。
第1の態様および上述の可能な実装形態に関連して、別の可能な実装形態では、フローテーブルはエントリを含み、エントリは、フロー識別子と第1のデータr、第2のデータd、および第3のデータeのそれぞれとの間の対応関係を含み、第1のデータr、第2のデータd、および第3データeはそれぞれ3つのカウンタの値である。
このように、フロー識別子に対応する第1のデータr、第2のデータd、および第3のデータeは、具体的にはカウンタの値であり得る。
第1の態様および上述の可能な実装形態に関連して、別の可能な実装形態では、第2の測定データはローカルな総トラフィック量を含み、バッファ内の占有記憶空間が事前設定閾値以上である場合、本方法は、パケット処理デバイスによって、ローカルな総トラフィック量を、ローカルな総トラフィック量と測定対象パケットのトラフィック量との和に更新するステップをさらに含む。
換言すれば、新しい測定対象パケットが取得されるたびに、パケット処理デバイスは、新しい測定対象パケットのトラフィック量をローカルな総トラフィック量に加え得る。
第1の態様および上述の可能な実装形態に関連して、別の可能な実装形態では、フロー識別子は5タプルであり、5タプルは、送信元インターネットプロトコル(internet protocol、IP)アドレスと、送信元ポートと、宛先IPアドレスと、宛先ポートと、トランスポート層プロトコルとを含む、またはフロー識別子は2タプルであり、2タプルは、送信元IPアドレスと宛先IPアドレスとを含む。
このように、データフローを識別するために使用されるフロー識別子は比較的柔軟であり得る。
第1の態様および上述の可能な実装形態に関連して、別の可能な実装形態では、本方法は、パケット処理デバイスによって、第1の測定データおよび/または第2の測定データをネットワークコントローラに送信するステップであって、第1の測定データおよび/または第2の測定データが、目的の測定データを計算するためにネットワークコントローラによって使用される、ステップをさらに含む。
このように、ネットワークコントローラは、受信した第1の測定データおよび/または第2の測定データに基づいて目的の測定データを計算し、他の何らかの処理を実行することができる。
第1の態様および上述の可能な実装形態に関連して、別の可能な実装形態では、パケット処理デバイスによって、第1の測定データおよび/または第2の測定データをネットワークコントローラに送信するステップは、事前設定期間に基づいて、第1の測定データおよび/または第2の測定データをネットワークコントローラに送信するステップ、またはパケット処理デバイスによって、ネットワークコントローラによって送信された測定データ要求メッセージを受信し、測定データ要求メッセージに応じて、第1の測定データおよび/または第2の測定データをネットワークコントローラに送信する、ステップを含む。
このように、パケット処理デバイスは、ネットワークコントローラに測定データを周期的に送信してもよいし、ネットワークコントローラから命令を受信した後にネットワークコントローラに測定データを送信してもよい。
第1の態様および上述の可能な実装形態に関連して、別の可能な実装形態では、測定対象パケットのフロー識別子が目的のフロー識別子であり、測定対象パケットを取得するステップの前に、本方法は、ネットワークコントローラによって送信された命令メッセージを受信するステップであって、命令メッセージが目的のフロー識別子を含む、ステップをさらに含む。
このように、パケット処理デバイスは、目的のフロー識別子を持つ測定対象パケットのみについてトラフィック測定を実行する。
第1の態様および上述の可能な実装形態に関連して、別の可能な実装形態では、フローテーブルに対応するデータ構造はハッシュテーブルまたはバイナリツリーである。
このように、フローテーブルは、ハッシュテーブルまたはバイナリツリーの形式で特に実装され得る。
第1の態様および上述の可能な実装形態に関連して、別の可能な実装形態では、ソフトウェア定義ネットワーク(software defined network、SDN)ソフトウェアスイッチがパケット処理デバイス上に構成される。
このように、パケット処理デバイスは、具体的にはソフトウェア定義ネットワークSDNのデータプレーン上のデバイスであり得る。
第2の態様によれば、本出願の一実施形態は、ネットワークコントローラによって、m個のパケット処理デバイスによってそれぞれ送信されたm個の第1の測定データと、n個のパケット処理デバイスによってそれぞれ送信されたn個の第2の測定データとを受信するステップであって、第1の測定データが第1のアルゴリズムに基づいて取得され、第2の測定データが第2のアルゴリズムに基づいて取得され、mとnとは両方とも非負の整数である、ステップと、ネットワークコントローラによって、グローバルな第1の測定データを取得するためにm個の第1の測定データを組み合わせるステップと、ネットワークコントローラによって、グローバルな第2の測定データを取得するためにn個の第2の測定データを組み合わせるステップと、ネットワークコントローラによって、グローバルな第1の測定データおよびグローバルな第2の測定データに基づいて目的の測定データを計算するステップとを含む、トラフィック測定方法を提供する。
このように、ネットワークコントローラは、パケット処理デバイスによって報告された第1の測定データおよび第2の測定データに基づいて、ネットワーク内のトラフィックデータを包括的に計算できる。
第2の態様に関連して、可能な実装形態では、目的の測定データおよびグローバルな第1の測定データは同じデータ構造を有する。
このように、ネットワークコントローラによって取得された目的の測定データ、第1のアルゴリズムに基づいて取得された第1の測定データ、およびグローバルな第1の測定データは同じデータ構造を有する。ネットワークコントローラは、第2のアルゴリズムの削除動作で失われたトラフィック情報を回復するために、第2のアルゴリズムに基づいて取得されたグローバルな第2の測定データをグローバルな第1の測定データの形式に変換し、その結果、グローバルな第1の測定データおよびグローバルな第2の測定データに基づいて取得された目的の測定データは、第1のアルゴリズムに対応する測定精度と同等の測定精度を有することができると理解できる。
第2の態様および上述の可能な実装形態に関連して、別の可能な実装形態では、第1の測定データのそれぞれがp行q列の要素を含む。ネットワークコントローラによって、グローバルな第1の測定データを取得するためにm個の第1の測定データを組み合わせるステップは、グローバルな第1の測定データを取得するために、m個の第1の測定データのものであり、かつ対応する場所にある各m個の要素を組み合わせるステップであって、グローバルな第1の測定データがp行q列の要素を含む、ステップを含む。
第2の態様および上述の可能な実装形態に関連して、別の可能な実装形態では、第2の測定データのそれぞれがローカルな総トラフィック量およびフローテーブルを含み、フローテーブルは少なくとも1つのエントリを含み、エントリはフロー識別子と1対1の対応関係にある。ネットワークコントローラによって、グローバルな第2の測定データを取得するためにn個の第2の測定データを組み合わせるステップは、グローバルな総トラフィック量を取得するために、n個の第2の測定データにおけるn個のローカルな総トラフィック量を加えるステップと、グローバルなフローテーブルを取得するためにn個の第2の測定データに対応するn個のフローテーブルのエントリを組み合わせるステップであって、グローバルなフローテーブルにおいて、フロー識別子はエントリと1対1の対応関係にある、ステップとを含む。グローバルな総トラフィック量およびグローバルなフローテーブルは、グローバルな第2の測定データである。
第2の態様および上述の可能な実装形態に関連して、別の可能な実装形態では、エントリはフロー識別子とフロー識別子に対応するトラフィックデータとを含む。ネットワークコントローラによって、n個の第2の測定データに対応するn個のフローテーブルのエントリを組み合わせるステップは、n個の第2の測定データに対応するn個のフローテーブルのエントリにおいて、同じフロー識別子を有する複数のエントリについて、複数のエントリをグローバルなフローテーブルの1つのエントリに組み合わせるために、複数のエントリにおけるトラフィックデータを加えるステップと、異なるフロー識別子を有するエントリのそれぞれをグローバルなフローテーブルの1つのエントリとして使用するステップとを含む。
このように、グローバルなフローテーブルにおいて、フロー識別子は同じエントリに対応する。
第2の態様および上述の可能な実装形態に関連して、別の可能な実装形態では、ネットワークコントローラによって、グローバルな第1の測定データおよびグローバルな第2の測定データに基づいて目的の測定データを計算するステップは、グローバルな第1の測定データおよびグローバルな第2の測定データに基づいて最適化目的関数を構築するステップと、凸最適化アルゴリズムおよび最適化目的関数に基づいて目的の測定データを計算するステップであって、最適化目的関数の式が、minimize
であり、最適化目的関数が次の制約、すなわち、制約1:T=N+sk(x+y)、制約2:|x|
1+|y|
1=V、および制約3:∀s∈H、r
s+d
s≦x
s≦r
s+d
s+e
sを満たし、「minimize」は最適化目的関数を最小化する独立変数値の計算を表し、Tは目的の測定データを表し、Nはグローバルなフローテーブルを表し、Vはグローバルな総トラフィック量を表し、Hはグローバルな第1の測定データを表し、xはHに含まれるフロー識別子に対応するデータフローのトラフィック量を表し、x
sはフロー識別子sに対応するデータフローのトラフィック量を表し、yは、Hに含まれないデータフローのものであり、かつ第2のアルゴリズムに基づいて測定されたデータフローのトラフィック量にあるトラフィック量を表し、x+yは第2のアルゴリズムに基づいて測定されたデータフローのトラフィック量を表し、sk(x+y)は入力としてx+yを使用することにより、また第1のアルゴリズムを呼び出すことにより取得された結果を表す。|T|
*は、Tの核型ノルムを表し、かつ行列のすべての特異値の和として定義され、|x|
1は、ベクトルxのL
1ノルムを表し、かつxのすべてのデータの絶対値の和として定義され、
は、ベクトルyのフロベニウスノルムを表し、かつxのすべてのデータの二乗和として定義され、α、β、およびγの計算式はそれぞれ、
およびγ=10σ
yであり、P
NおよびQ
Nはそれぞれ行列Nの長さおよび幅を表し、η(N)はNのデータの平均を表し、m
xおよびn
xはそれぞれベクトルxの長さおよび幅を表し、σ
yはyのすべてのデータの標準偏差を表す、ステップとを含む。
一般的な凸最適化問題に対する閉形式の解はない、つまり、出力と入力との間の関数関係の式を明示的に与えることはできない。この解を見つける仕方においては、予想されるグローバルな最適解の代わりに使用するために、制約規則に基づいて特定の範囲内で探索することにより、近似的な局所最適解を見つけるための近似法が使用される。
第2の態様および上述の可能な実装形態に関連して、別の可能な実装形態では、凸最適化アルゴリズムは、内点法、交互方向乗数法(alternating direction method of multipliers、ADMM)、または劣勾配アルゴリズムを含む。
第2の態様および上述の可能な実装形態に関連して、別の可能な実装形態では、ネットワークコントローラによって、グローバルな第1の測定データおよびグローバルな第2の測定データに基づいて目的の測定データを計算するステップは、グローバルな第1の測定データ、グローバルな第2の測定データ、および次式:T=N+sk(x)に基づいて目的の測定データを計算するステップであって、Tは目的の測定データを表し、Nはグローバルなフローテーブルを表し、xはHに含まれるフロー識別子に対応するデータフローのトラフィック量を表し、xは第2のアルゴリズムに基づいて測定されたデータフローのトラフィック量を表し、sk(x)は、入力としてxを使用することにより、かつ第1のアルゴリズムを呼び出すことにより取得された結果を表す、ステップを含む。
このように、ネットワークコントローラは、xおよびNに基づいた簡単な計算によって目的の測定データを取得できる。
第2の態様および上述の可能な実装形態に関連して、別の可能な実装形態では、グローバルなフローテーブルはエントリを含み、エントリはフロー識別子と第1のデータrおよび第2のデータdのそれぞれとの間の対応関係を含み、xに対応するデータフローのトラフィック量は、データフローのフロー識別子に対応する第1のデータrと第2のデータdとの和である。
このように、ネットワークコントローラは、rおよびdに基づいてxを取得し、xおよびNに基づいた簡単な計算によって目的の測定データを取得できる。
第2の態様および上述の可能な実装形態に関連して、別の可能な実装形態では、グローバルなフローテーブルはエントリを含み、エントリはフロー識別子と第1のデータr、第2のデータd、および第3のデータeのそれぞれとの間の対応関係を含み、xに対応するデータフローのトラフィック量は、データフローのフロー識別子に対応する第1のデータrと第2のデータdと第3のデータeとの和である。
このように、ネットワークコントローラは、r、d、およびeに基づいてxを取得し、xおよびNに基づいた簡単な計算によって目的の測定データを取得できる。
第2の態様および上述の可能な実装形態に関連して、別の可能な実装形態では、ネットワークコントローラによって、m個のパケット処理デバイスによってそれぞれ送信されたm個の第1の測定データと、n個のパケット処理デバイスによってそれぞれ送信されたn個の第2の測定データとを受信するステップは、m個のパケット処理デバイスによってそれぞれ送信されたm個の第1の測定データと、n個のパケット処理デバイスによってそれぞれ送信されたn個の第2の測定データとを周期的に受信するステップを含む。あるいは、ネットワークコントローラによって、m個のパケット処理デバイスによってそれぞれ送信されたm個の第1の測定データと、n個のパケット処理デバイスによってそれぞれ送信されたn個の第2の測定データとを受信するステップの前に、本方法は、各パケット処理デバイスに測定データ要求メッセージを送信するステップをさらに含む。
このように、ネットワークコントローラは、パケット処理デバイスによって送信された測定データを周期的に受信してもよいし、測定データを収集する必要があるときにパケット処理デバイスのそれぞれに測定データ要求メッセージを送信してもよい。
第2の態様および上述の可能な実装形態に関連して、別の可能な実装形態では、ネットワークコントローラによって、m個のパケット処理デバイスによってそれぞれ送信されたm個の第1の測定データと、n個のパケット処理デバイスによってそれぞれ送信されたn個の第2の測定データとを受信するステップの前に、本方法は、各パケット処理デバイスに命令メッセージを送信するステップであって、命令メッセージが、測定対象パケット処理デバイスに対応する目的のフロー識別子を運ぶ、ステップをさらに含む。測定対象パケット処理デバイスが目的のフロー識別子に対応するということは以下を意味する、すなわち、測定対象パケット処理デバイスが目的のフロー識別子に対応するデータフローのラストホップデバイスである、または測定対象パケット処理デバイスが目的のフロー識別子に対応するデータフローのファーストホップデバイスである、または測定対象パケット処理デバイスが目的のフロー識別子に対応するデータフローの受信エンドデバイスである、または測定対象パケット処理デバイスが目的のフロー識別子に対応するデータフローの送信エンドデバイスであることを意味する。
このように、ネットワークコントローラは、構成ポリシーを使用することによりパケット処理デバイスと目的のフロー識別子との間の対応関係を事前構成することができ、その結果、ネットワーク内の1つのパケットのトラフィック量が、複数のパケット処理デバイスによって測定および報告される代わりに、ネットワーク内の1つのパケット処理デバイスのみによって測定および報告される。したがって、ネットワーク内のパケット処理デバイスによって個別に測定されたパケットは互いに重複せず、これにより、測定の繰り返しを避け、正確なネットワークトラフィックの測定を実現する。
第2の態様および上述の可能な実装形態に関連して、別の可能な実装形態では、ソフトウェア定義ネットワークSDNコントローラがネットワークコントローラ上に構成される。
このように、ネットワークコントローラは、具体的にはソフトウェア定義ネットワークSDNの制御プレーン上のコントローラであり得る。
第3の態様によれば、本出願の一実施形態は、少なくとも1つのプロセッサと、メモリと、バッファと、通信インターフェースと、バスとを備えるパケット処理デバイスを提供し、少なくとも1つのプロセッサ、メモリ、およびバッファはバスを使用することにより互いに接続される。通信インターフェースは、パケット処理デバイスがパケット転送デバイスまたはパケット受信デバイスであるときに、測定対象パケットを取得するように構成される。メモリは、命令を格納するように構成される。プロセッサは、以下の動作、すなわち、パケット処理デバイスがパケット送信デバイスである場合、測定対象パケットを取得する動作と、バッファ内の占有記憶空間が事前設定閾値未満である場合、測定対象パケットの測定対象情報をバッファに書き込む動作であって、測定対象情報が、測定対象パケットのフロー識別子および測定対象パケットのトラフィック量を含む、動作と、バッファから測定対象情報を読み取る動作と、測定対象情報および第1のアルゴリズムに基づいて、第1の測定データにおける測定対象パケットに対応するa個のデータを変更する動作であって、aが正の整数である、動作とを実施する、またはバッファ内の占有記憶空間が事前設定閾値以上である場合、測定対象情報および第2のアルゴリズムに基づいて、第2の測定データにおける測定対象パケットに対応するw個のデータを変更する動作であって、wが正の整数であり、wがa未満である、動作とを実施するためにメモリに格納された命令を呼び出すように構成される。バッファは、プロセッサが測定対象パケットの測定対象情報をバッファに書き込んだ後、測定対象情報を格納するように構成される。
第3の態様に関連して、可能な実装形態では、a個のデータはa個のカウンタの値であり、w個のデータはw個のカウンタの値である。
第3の態様および上述の可能な実装に関して、別の可能な実装では、第1のアルゴリズムはハッシュ関数を含み、第1の測定データはc個の場所におけるデータを含み、cは正の整数であり、プロセッサは、測定対象パケットのフロー識別子およびハッシュ関数に基づいて、c個の場所からu個の場所を判定し、uが正の整数であり、uがc以下であり、測定対象パケットのトラフィック量に基づいて、u個の場所におけるa個のデータを変更し、uがa以下である、ように特に構成される。
第3の態様および上述の可能な実装形態に関連して、別の可能な実装形態では、通信インターフェースは、第1の測定データおよび/または第2の測定データをネットワークコントローラに送信し、第1の測定データおよび/または第2の測定データが、目的の測定データを計算するためにネットワークコントローラによって使用される、ようにさらに構成される。
第3の態様および上述の可能な実装形態に関連して、別の可能な実装形態では、測定対象パケットのフロー識別子が目的のフロー識別子であり、通信インターフェースは、測定対象パケットを取得する前に、ネットワークコントローラによって送信された命令メッセージを受信し、命令メッセージが目的のフロー識別子を含む、ようにさらに構成される。
第4の態様によれば、本出願の一実施形態は、少なくとも1つのプロセッサと、メモリと、通信インターフェースと、バスとを備えるネットワークコントローラを提供し、少なくとも1つのプロセッサおよびメモリはバスを使用することにより互いに接続される。通信インターフェースは、m個のパケット処理デバイスによってそれぞれ送信されたm個の第1の測定データと、n個のパケット処理デバイスによってそれぞれ送信されたn個の第2の測定データとを受信し、第1の測定データが第1のアルゴリズムに基づいて取得され、第2の測定データが第2のアルゴリズムに基づいて取得され、mとnとは両方とも非負の整数である、ように構成される。メモリは、命令を格納するように構成される。プロセッサは、以下の動作、すなわち、グローバルな第1の測定データを取得するためにm個の第1の測定データを組み合わせる動作と、グローバルな第2の測定データを取得するためにn個の第2の測定データを組み合わせる動作と、グローバルな第1の測定データおよびグローバルな第2の測定データに基づいて目的の測定データを計算する動作とを実施するためにメモリに格納された命令を呼び出すように構成される。
第4の態様に関連して、可能な実装形態では、目的の測定データおよびグローバルな第1の測定データは同じデータ構造を有する。
第4の態様および上述の可能な実装形態に関連して、別の可能な実装形態では、第1の測定データのそれぞれがp行q列の要素を含み、プロセッサは、グローバルな第1の測定データを取得するために、m個の第1の測定データのものであり、かつ対応する場所にある各m個の要素を組み合わせ、グローバルな第1の測定データがp行q列の要素を含む、ように特に構成される。
第4の態様および上述の可能な実装形態に関連して、別の可能な実装形態では、第2の測定データのそれぞれがローカルな総トラフィック量およびフローテーブルを含み、フローテーブルは少なくとも1つのエントリを含み、エントリはフロー識別子と1対1の対応関係にあり、プロセッサは、グローバルな総トラフィック量を取得するために、n個の第2の測定データにおけるn個のローカルな総トラフィック量を加え、グローバルなフローテーブルを取得するためにn個の第2の測定データに対応するn個のフローテーブルのエントリを組み合わせ、グローバルなフローテーブルにおいて、フロー識別子はエントリと1対1の対応関係にあり、グローバルな総トラフィック量およびグローバルなフローテーブルはグローバルな第2の測定データである、ように特に構成される。
第4の態様および上述の可能な実装形態に関連して、別の可能な実装形態では、通信インターフェースは、m個のパケット処理デバイスによってそれぞれ送信されたm個の第1の測定データと、n個のパケット処理デバイスによってそれぞれ送信されたn個の第2の測定データとを受信する前に、各パケット処理デバイスに命令メッセージを送信し、命令メッセージが、測定対象パケット処理デバイスに対応する目的のフロー識別子を運ぶ、ようにさらに構成される。測定対象パケット処理デバイスが目的のフロー識別子に対応するということは以下を意味する、すなわち、測定対象パケット処理デバイスが目的のフロー識別子に対応するデータフローのラストホップデバイスである、または測定対象パケット処理デバイスが目的のフロー識別子に対応するデータフローのファーストホップデバイスである、または測定対象パケット処理デバイスが目的のフロー識別子に対応するデータフローの受信エンドデバイスである、または測定対象パケット処理デバイスが目的のフロー識別子に対応するデータフローの送信エンドデバイスであることを意味する。
第5の態様によれば、本出願の一実施形態は、バッファと、取得ユニットと、書き込みユニットと、読み取りユニットと、第1の変更ユニットと、第2の変更ユニットとを備えるパケット処理デバイスを提供する。取得ユニットは、測定対象パケットを取得するように構成される。書き込みユニットは、バッファ内の占有記憶空間が事前設定閾値未満である場合、測定対象パケットの測定対象情報をバッファに書き込み、測定対象情報が測定対象パケットのフロー識別子と測定対象パケットのトラフィック量とを含む、ように構成される。バッファは、書き込みユニットが測定対象情報をバッファに書き込んだ後、測定対象情報を格納するように構成される。読み取りユニットは、バッファから測定対象情報を読み取るように構成される。第1の変更ユニットは、測定対象情報および第1のアルゴリズムに基づいて、第1の測定データにおける測定対象パケットに対応するa個のデータを変更し、aは正の整数である、ように構成される。第2の変更ユニットは、バッファ内の占有記憶空間が事前設定閾値以上である場合、測定対象情報および第2のアルゴリズムに基づいて、第2の測定データにおける測定対象パケットに対応するw個のデータを変更し、wは正の整数であり、wはa未満である、ように構成される。
第5の態様に関連して、可能な実装形態では、a個のデータはa個のカウンタの値であり、w個のデータはw個のカウンタの値である。
第5の態様および上述の可能な実装に関して、別の可能な実装では、第1のアルゴリズムはハッシュ関数を含み、第1の測定データはc個の場所におけるデータを含み、cは正の整数であり、第1の変更ユニットは、測定対象パケットのフロー識別子およびハッシュ関数に基づいて、c個の場所からu個の場所を判定し、uが正の整数であり、uがc以下であり、測定対象パケットのトラフィック量に基づいて、u個の場所におけるa個のデータを変更し、uがa以下である、ように特に構成される。
第5の態様および上述の可能な実装形態に関連して、別の可能な実装形態では、本デバイスは、読み取りユニットがバッファから測定対象情報を読み取った後、バッファから測定対象パケットの測定対象情報を削除するように構成された削除ユニットをさらに備える。
第5の態様および上述の可能な実装形態に関連して、別の可能な実装形態では、フローテーブルがパケット処理デバイスに格納され、第2の測定データはフローテーブルにおけるデータを含み、フローテーブルはフロー識別子と第1のデータrとの間の対応関係を含み、第2の変更ユニットは、測定対象情報および第2のアルゴリズムに基づいて、測定対象パケットに対応し、かつ第2の測定データにある第1のデータrfを変更するように特に構成される。
第5の態様および上述の可能な実装形態に関連して、別の可能な実装形態では、第2の変更ユニットは、フローテーブルが測定対象パケットのフロー識別子fを含む場合、測定対象パケットに対応し、かつフローテーブルにある第1のデータrfを、測定対象パケットに対応する第1のデータrfと測定対象パケットのトラフィック量との和に更新するように特に構成される。
第5の態様および上述の可能な実装形態に関連して、別の可能な実装形態では、フローテーブルは、フロー識別子と第1のデータrおよび第2のデータdのそれぞれとの間の対応関係を含み、本デバイスは、フローテーブルが測定対象パケットのフロー識別子fを含まず、かつフローテーブルがいっぱいである場合、第2の変更ユニットが測定対象情報および第2のアルゴリズムに基づいて第2の測定データにおける測定対象パケットに対応するw個のデータを変更するステップの前に、デクリメント値
を計算し、フローテーブルに含まれる各フロー識別子に対応する第1のデータrを、第1のデータrとデクリメント値
との差に更新し、フローテーブルに含まれる各フロー識別子に対応する第2のデータdを、第2のデータdとデクリメント値
との和に更新し、第1の事前設定条件を満たすフロー識別子と第1のデータrおよび第2のデータdのそれぞれとの間の対応関係をフローテーブルから削除する、ように構成された処理ユニットをさらに備える。第1の事前設定条件を満たすフロー識別子は、対応する更新された第1のデータrが0以下であるフロー識別子である。
第5の態様および上述の可能な実装形態に関連して、別の可能な実装形態では、フローテーブルは、フロー識別子と第1のデータr、第2のデータd、および第3のデータeのそれぞれとの間の対応関係を含み、第2の変更ユニットは、フローテーブルが測定対象パケットのフロー識別子fを含まず、かつフローテーブルがいっぱいである場合、測定対象パケットのトラフィック量がデクリメント値
よりも大きい場合、測定対象パケットのトラフィック量とデクリメント値
との差を、測定対象パケットに対応する第1のデータr
fに設定し、デクリメント値
を、測定対象パケットに対応する第2のデータd
fに設定し、総デクリメントトラフィック量Eを、測定対象パケットに対応する第3のデータe
fに設定し、測定対象パケットのフロー識別子fと、測定対象パケットに対応する第1のデータr
f、測定対象パケットに対応する第2のデータd
f、および測定対象パケットに対応する第3のデータe
fのそれぞれとの間の対応関係をフローテーブルに挿入する、ように特に構成される。
第5の態様および上述の可能な実装形態に関連して、別の可能な実装形態では、本デバイスは、総デクリメントトラフィック量Eを、総デクリメントトラフィック量Eとデクリメント値
との和に更新するように構成された更新ユニットをさらに備える。
第5の態様および上述の可能な実装形態に関連して、別の可能な実装形態では、処理ユニットは、測定対象パケットのトラフィック量およびフローテーブルに含まれるフロー識別子に対応する第1のデータrを値の順に並べ替え、並べ替えた後の最初の2つの値をR
1およびR
2として、また並べ替えた後の最後の値をR
kとして示し、デクリメント値
をR
1、R
2、R
k、および次式
に基づいて計算し、
であり、δは定数を表す、ように特に構成される。
第5の態様および上述の可能な実装形態に関連して、別の可能な実装形態では、フローテーブルは、フロー識別子と第1のデータrおよび第3のデータeのそれぞれとの間の対応関係を含み、第2の変更ユニットは、フローテーブルが測定対象パケットのフロー識別子fを含まず、かつフローテーブルがいっぱいではない場合、測定対象パケットのトラフィック量を、測定対象パケットに対応する第1のデータrfに設定し、総デクリメントトラフィック量Eを、測定対象パケットに対応する第3のデータefに設定し、測定対象パケットのフロー識別子fと、測定対象パケットに対応する第1のデータrfおよび測定対象パケットに対応する第3のデータefのそれぞれとの間の対応関係をフローテーブルに挿入する、ように特に構成される。
第5の態様および上述の可能な実装形態に関連して、別の可能な実装形態では、フローテーブルはエントリを含み、エントリは、フロー識別子と第1のデータr、第2のデータd、および第3のデータeのそれぞれとの間の対応関係を含み、第1のデータr、第2のデータd、および第3データeはそれぞれ3つのカウンタの値である。
第5の態様および上述の可能な実装形態に関連して、別の可能な実装形態では、第2の測定データはローカルな総トラフィック量を含み、更新ユニットは、ローカルな総トラフィック量を、ローカルな総トラフィック量と測定対象パケットのトラフィック量との和に更新するようにさらに構成される。
第5の態様および上述の可能な実装形態に関連して、別の可能な実装形態では、フロー識別子は5タプルであり、5タプルは、送信元インターネットプロトコルIPアドレスと、送信元ポートと、宛先IPアドレスと、宛先ポートと、トランスポート層プロトコルとを含む、またはフロー識別子は2タプルであり、2タプルは、送信元IPアドレスと宛先IPアドレスとを含む。
第5の態様および上述の可能な実装形態に関連して、別の可能な実装形態では、本デバイスは、第1の測定データおよび/または第2の測定データをネットワークコントローラに送信し、第1の測定データおよび/または第2の測定データが、目的の測定データを計算するためにネットワークコントローラによって使用される、ように構成された送信ユニットをさらに備える。
第5の態様および上述の可能な実装形態に関連して、別の可能な実装形態では、送信ユニットは、事前設定期間に基づいて第1の測定データおよび/または第2の測定データをネットワークコントローラに送信するように特に構成される。
第5の態様および上述の可能な実装形態に関連して、別の可能な実装形態では、本デバイスは、ネットワークコントローラによって送信された測定データ要求メッセージを受信するように構成された受信ユニットをさらに備える。送信ユニットは、受信ユニットによって受信された測定データ要求メッセージに応じて、第1の測定データおよび/または第2の測定データをネットワークコントローラに送信するように特に構成される。
第5の態様および上述の可能な実装形態に関連して、別の可能な実装形態では、測定対象パケットのフロー識別子が目的のフロー識別子であり、受信ユニットは、取得ユニットが測定対象パケットを取得する前に、ネットワークコントローラによって送信された命令メッセージを受信し、命令メッセージが目的のフロー識別子を含む、ようにさらに構成される。
第6の態様によれば、本出願の一実施形態は、m個のパケット処理デバイスによってそれぞれ送信されたm個の第1の測定データと、n個のパケット処理デバイスによってそれぞれ送信されたn個の第2の測定データとを受信し、第1の測定データが第1のアルゴリズムに基づいて取得され、第2の測定データが第2のアルゴリズムに基づいて取得され、mとnとは両方とも非負の整数である、ように構成された受信ユニットと、グローバルな第1の測定データを取得するためにm個の第1の測定データを組み合わせるように構成された第1の組み合わせユニットと、グローバルな第2の測定データを取得するためにn個の第2の測定データを組み合わせるように構成された第2の組み合わせユニットと、グローバルな第1の測定データおよびグローバルな第2の測定データに基づいて目的の測定データを計算するように構成された計算ユニットとを備える、ネットワークコントローラを提供する。
第6の態様に関連して、可能な実装形態では、目的の測定データおよびグローバルな第1の測定データは同じデータ構造を有する。
第6の態様および上述の可能な実装形態に関連して、別の可能な実装形態では、第1の測定データのそれぞれがp行q列の要素を含み、第1の組み合わせユニットは、グローバルな第1の測定データを取得するために、m個の第1の測定データのものであり、かつ対応する場所にある各m個の要素を組み合わせ、グローバルな第1の測定データがp行q列の要素を含む、ように特に構成される。
第6の態様および上述の可能な実装形態に関連して、別の可能な実装形態では、第2の測定データのそれぞれがローカルな総トラフィック量およびフローテーブルを含み、フローテーブルは少なくとも1つのエントリを含み、エントリはフロー識別子と1対1の対応関係にあり、第2の組み合わせユニットは、グローバルな総トラフィック量を取得するために、n個の第2の測定データにおけるn個のローカルな総トラフィック量を加え、グローバルなフローテーブルを取得するためにn個の第2の測定データに対応するn個のフローテーブルのエントリを組み合わせ、グローバルなフローテーブルにおいて、フロー識別子はエントリと1対1の対応関係にあり、グローバルな総トラフィック量およびグローバルなフローテーブルはグローバルな第2の測定データである、ように特に構成される。
第6の態様および上述の可能な実装形態に関連して、別の可能な実装形態では、エントリはフロー識別子とフロー識別子に対応するトラフィックデータとを含み、第2の組み合わせユニットは、n個の第2の測定データに対応するn個のフローテーブルのエントリにおいて、同じフロー識別子を有する複数のエントリについて、複数のエントリをグローバルなフローテーブルの1つのエントリに組み合わせるために、複数のエントリにおけるトラフィックデータを加え、異なるフロー識別子を有するエントリのそれぞれをグローバルなフローテーブルの1つのエントリとして使用する、ように特に構成される。
第6の態様および上述の可能な実装形態に関連して、別の可能な実装形態では、計算ユニットは、グローバルな第1の測定データおよびグローバルな第2の測定データに基づいて最適化目的関数を構築し、凸最適化アルゴリズムおよび最適化目的関数に基づいて目的の測定データを計算する、ように特に構成される。最適化目的関数の式が、minimize
であり、最適化目的関数が次の制約、すなわち、制約1:T=N+sk(x+y)、制約2:|x|
1+|y|
1=V、および制約3:∀s∈H、r
s+d
s≦x
s≦r
s+d
s+e
sを満たし、「minimize」は最適化目的関数を最小化する独立変数値の計算を表し、Tは目的の測定データを表し、Nはグローバルなフローテーブルを表し、Vはグローバルな総トラフィック量を表し、Hはグローバルな第1の測定データを表し、xはHに含まれるフロー識別子に対応するデータフローのトラフィック量を表し、x
sはフロー識別子sに対応するデータフローのトラフィック量を表し、yは、Hに含まれないデータフローのものであり、かつ第2のアルゴリズムに基づいて測定されたデータフローのトラフィック量にあるトラフィック量を表し、x+yは第2のアルゴリズムに基づいて測定されたデータフローのトラフィック量を表し、sk(x+y)は入力としてx+yを使用することにより、また第1のアルゴリズムを呼び出すことにより取得された結果を表し、|T|
*は、Tの核型ノルムを表し、かつ行列のすべての特異値の和として定義され、|x|
1は、ベクトルxのL
1ノルムを表し、かつxのすべてのデータの絶対値の和として定義され、
は、ベクトルyのフロベニウスノルムを表し、かつxのすべてのデータの二乗和として定義され、α、β、およびγの計算式はそれぞれ、
およびγ=10σ
yであり、P
NおよびQ
Nはそれぞれ行列Nの長さおよび幅を表し、η(N)はNのデータの平均を表し、m
xおよびn
xはそれぞれベクトルxの長さおよび幅を表し、σ
yはyのすべてのデータの標準偏差を表す。
第6の態様および上述の可能な実装形態に関連して、別の可能な実装形態では、計算ユニットは、グローバルな第1の測定データ、グローバルな第2の測定データ、および次式:T=N+sk(x)に基づいて目的の測定データを計算し、Tは目的の測定データを表し、Nはグローバルなフローテーブルを表し、xはHに含まれるフロー識別子に対応するデータフローのトラフィック量を表し、xは第2のアルゴリズムに基づいて測定されたデータフローのトラフィック量を表し、sk(x)は、入力としてxを使用することにより、かつ第1のアルゴリズムを呼び出すことにより取得された結果を表す、ように特に構成される。
第6の態様および上述の可能な実装形態に関連して、別の可能な実装形態では、グローバルなフローテーブルはエントリを含み、エントリはフロー識別子と第1のデータrおよび第2のデータdのそれぞれとの間の対応関係を含み、xに対応するデータフローのトラフィック量は、データフローのフロー識別子に対応する第1のデータrと第2のデータdとの和である。
第6の態様および上述の可能な実装形態に関連して、別の可能な実装形態では、エントリはフロー識別子と第1のデータr、第2のデータd、および第3のデータeのそれぞれとの間の対応関係を含み、xに対応するデータフローのトラフィック量は、データフローのフロー識別子に対応する第1のデータrと第2のデータdと第3のデータeとの和である。
第6の態様および上述の可能な実装形態に関連して、別の可能な実装形態では、受信ユニットは、m個のパケット処理デバイスによってそれぞれ送信されたm個の第1の測定データと、n個のパケット処理デバイスによってそれぞれ送信されたn個の第2の測定データとを周期的に受信するように特に構成される。
第6の態様および上述の可能な実装形態に関連して、別の可能な実装形態では、ネットワークコントローラは、測定データ要求メッセージを各パケット処理デバイスに送信するように構成された送信ユニットをさらに備える。
第6の態様および上述の可能な実装形態に関連して、別の可能な実装形態では、送信ユニットは、m個のパケット処理デバイスによってそれぞれ送信されたm個の第1の測定データと、n個のパケット処理デバイスによってそれぞれ送信されたn個の第2の測定データとを受信ユニットが受信する前に、各パケット処理デバイスに命令メッセージを送信し、命令メッセージが、測定対象パケット処理デバイスに対応する目的のフロー識別子を運ぶ、ようにさらに構成される。測定対象パケット処理デバイスが目的のフロー識別子に対応するということは以下を意味する、すなわち、測定対象パケット処理デバイスが目的のフロー識別子に対応するデータフローのラストホップデバイスである、または測定対象パケット処理デバイスが目的のフロー識別子に対応するデータフローのファーストホップデバイスである、または測定対象パケット処理デバイスが目的のフロー識別子に対応するデータフローの受信エンドデバイスである、または測定対象パケット処理デバイスが目的のフロー識別子に対応するデータフローの送信エンドデバイスであることを意味する。
第7の態様によれば、本出願の一実施形態は、1つまたは複数のプロセッサと1つまたは複数のメモリとを備えるパケット処理デバイスを提供する。1つまたは複数のメモリは、1つまたは複数のプロセッサに接続される。1つまたは複数のメモリはコンピュータプログラムコードを格納するように構成され、コンピュータプログラムコードはコンピュータ命令を含む。1つまたは複数のプロセッサがコンピュータ命令を実行すると、パケット処理デバイスは、第1の態様および第1の態様の実装形態のいずれか1つによるトラフィック測定方法を実行する。
第8の態様によれば、本出願の一実施形態は、1つまたは複数のプロセッサと1つまたは複数のメモリとを備えるネットワークコントローラを提供する。1つまたは複数のメモリは、1つまたは複数のプロセッサに接続される。1つまたは複数のメモリはコンピュータプログラムコードを格納するように構成され、コンピュータプログラムコードはコンピュータ命令を含む。1つまたは複数のプロセッサがコンピュータ命令を実行すると、ネットワークコントローラは、第2の態様および第2の態様の実装形態のいずれか1つによるトラフィック測定方法を実行する。
第9の態様によれば、本出願の一実施形態は、命令を含むコンピュータ可読記憶媒体を提供し、命令がパケット処理デバイスで実行されると、パケット処理デバイスは、第1の態様および第1の態様の実装形態のいずれか1つによるトラフィック測定方法を実行する。
第10の態様によれば、本出願の一実施形態は、命令を含むコンピュータ可読記憶媒体を提供し、命令がネットワークコントローラで実行されると、ネットワークコントローラは、第2の態様および第2の態様の実装形態のいずれか1つによるトラフィック測定方法を実行する。
第11の態様によれば、本出願の一実施形態は、命令を含むコンピュータプログラム製品を提供し、製品がパケット処理デバイスで実行されると、パケット処理デバイスは、第1の態様および第1の態様の実装形態のいずれか1つによるトラフィック測定方法を実行する。
第12の態様によれば、本出願の一実施形態は、命令を含むコンピュータプログラム製品を提供し、製品がネットワークコントローラで実行されると、ネットワークコントローラは、第2の態様および第2の態様の実装形態のいずれか1つによるトラフィック測定方法を実行する。
第13の態様によれば、本出願の一実施形態はシステムを提供し、本システムはネットワークコントローラと少なくとも1つのパケット処理デバイスとを備え、パケット処理デバイスは、第1の態様および第1の態様の実装形態のいずれか1つによるトラフィック測定方法を実行するように構成され、ネットワークコントローラは、第2の態様および第2の態様の実装形態のいずれか1つによるトラフィック測定方法を実行するように構成される。
第3の態様から第13の態様の有益な効果については、第1の態様および第2の態様の対応する説明を参照されたい。ここでは細部を繰り返し説明しない。
理解を容易にするために、本出願の実施形態に関連するいくつかの概念の説明は、参考のための例として与えられている。詳細を以下に示す。
ローカルエリアネットワークは、エリア内の複数のコンピュータを相互接続することにより形成されるコンピュータグループである。
パケット送信エンドデバイスは、パケットを生成して送信するデバイスである。
パケット転送デバイスは、あるデバイスによって送信されたパケットを受信し、そのパケットを別のデバイスに転送するデバイスである。
パケット受信エンドデバイスは、パケットの宛先エンド受信デバイスである。
キューは、テーブルの前方(front)での削除動作およびテーブルの後方(rear)での挿入動作のみを許可する特別な線形テーブルである。
ソフトウェア定義ネットワークは、ネットワークデバイスの制御プレーンとデータプレーンとがネットワークトラフィックを柔軟に制御するために分離され、ネットワークをパイプラインとしてよりインテリジェントにすることを意味する。
以下、本出願の実施形態の技術的解決策を、本出願の実施形態における添付の図面を参照して説明する。本出願の実施形態の説明において、別段の指定のない限り、「/」は「または」を意味する。例えば、A/BはAまたはBを意味し得る。本明細書における「および/または」は、関連する対象を記述するための関連関係のみを記述し、3つの関係が含まれ得ることを表している。例えば、Aおよび/またはBは、以下の3つの場合、すなわちAのみが含まれる場合と、AとBとの両方が含まれる場合と、Bのみが含まれる場合とを表し得る。加えて、本出願の実施形態の説明において、「複数」とは、2つ以上を意味する。
本出願の実施形態におけるネットワークシステムの基本的な概略的なアーキテクチャ図については、図2を参照されたい。ネットワークシステム01は、少なくとも1つのパケット処理デバイス100とネットワークコントローラ200とを備え得る。例えば、ネットワークシステム01は、具体的にはローカルエリアネットワーク(例えば、企業ネットワークまたはキャンパスネットワーク)またはデータセンタネットワークであってもよいし、ワイドエリアネットワークなどの通信ネットワークであってもよい。パケット処理デバイス100は、パケットを送信、受信、または転送するように構成され、具体的には、ホスト、ルータ、またはスイッチなどのデバイスであり得る。ネットワークコントローラ200は、パケット処理デバイスおよびネットワーク内の別のデバイスを制御および管理するように構成される。
例えば、パケット処理デバイス100はスイッチである。図3aは、スイッチ10の概略構成図を提示している。スイッチ10は、ラインカードと転送モジュールとを備え得る。ラインカードは、ネットワーク回線とスイッチとの間のインターフェースであり得る。転送モジュールは、ラインカード間でパケットを送信するように構成される。
図3bは、ネットワークコントローラ200の概略構成図を提示している。ネットワークコントローラ200は、インターフェースと、ネットワーク機能モジュールと、命令転送モジュールと、ネットワーク監視および管理モジュールとを備え得る。ネットワークインターフェースは、ネットワーク管理者がネットワーク機能、例えば、リソース管理、経路計算、および制御ポリシーをデプロイおよび開発することを可能にする。ネットワーク機能モジュールは、様々なネットワーク管理および制御プログラムを含む。転送命令配信モジュールは、様々な管理および制御プログラムに対応する命令を、データプレーン上のスイッチおよびルータに配信する。ネットワーク監視および管理モジュールは、ネットワークの状態を監視するように構成され得る。
本出願の一実施形態はトラフィック測定方法を提供し、本方法は、図2に示されるネットワークシステムにおけるパケット処理デバイスおよびネットワークコントローラに関する。バッファがパケット処理デバイスに配置される。図4を参照すると、本方法は以下のステップを含み得る。
101.パケット処理デバイスは測定対象パケットを取得する。
測定対象パケットは、トラフィック量が測定されるパケットである。トラフィック量は、ネットワークでのパケットの送信中に生成されるトラフィックの量であり、具体的にはパケットのサイズ、例えばパケットのバイト数であり得る。パケットは、任意の形式または任意の定義のパケット、例えば、IPパケット、媒体アクセス制御(media access control、MAC)パケット、インターネット・コントロール・メッセージ・プロトコル(internet control message protocol、ICMP)パケット、伝送制御プロトコル(transmission control protocol、TCP)パケット、またはユーザ・データグラム・プロトコル(user datagram protocol、UDP)パケットを含み得る。
パケット処理デバイスが異なるデバイスである場合、パケット処理デバイスにより測定対象パケットを取得する方式も異なる。例えば、パケット処理デバイスがパケット送信エンドデバイスである場合、パケット処理デバイスは、具体的にはパケットを生成するホストであり得る。この場合、パケット処理デバイスは、ホスト上のプログラムによって生成されたネットワークパケットを直接取得できる。パケット処理デバイスがパケット受信エンドデバイスまたはパケット転送デバイスである場合、パケット処理デバイスが測定対象パケットを取得することは、パケット処理デバイスが別のデバイスから測定対象パケットを受信することを意味する。
ステップ101の後、処理を実行するために、すなわち測定対象パケットのトラフィック量を測定するために、ステップ102またはステップ105に進む。
102.バッファ内の占有記憶空間が事前設定閾値未満である場合、パケット処理デバイスは、測定対象パケットの測定対象情報をバッファに書き込み、測定対象情報が測定対象パケットのフロー識別子と測定対象パケットのトラフィック量とを含む。
フロー識別子は、測定対象パケットに対応するデータフローを識別するために使用される。異なるフロー識別子は、測定対象パケットの(測定対象パケットに対応する)異なるデータフローを示す。各測定対象パケットは1つのフロー識別子に対応していてもよく、各フロー識別子は複数の測定対象パケットに対応していてもよい。同様に、各測定対象パケットは1つのデータフローに対応していてもよく、各データフローは複数の測定対象パケットに対応していてもよい。
測定対象パケットの測定対象情報は、測定対象パケットのトラフィック量と、測定対象パケットに対応するフロー識別子とを含み得る。例えば、測定対象情報は、具体的には測定対象パケットにあり、かつトラフィック量を表すために使用されるフィールド、および測定対象パケットにあり、かつフロー識別子を表すために使用されるフィールドであり得る。あるいは、測定対象情報は、具体的には測定対象パケットのヘッダ情報であってもよく、ヘッダ情報は、トラフィック量を表すために使用されるフィールドと、フロー識別子を表すために使用されるフィールドとを含む。あるいは、測定対象情報は、具体的には測定対象パケットであってもよく、測定対象パケットは、トラフィック量を表すために使用されるフィールドと、フロー識別子を表すために使用されるフィールドとを含む。
事前設定閾値は、実際の要件に応じて設定されてよく、例えば90%であり得る。ステップ101の後、バッファ内の占有記憶空間が事前設定閾値未満である場合、すなわちバッファが完全にいっぱいではない場合、パケット処理デバイスは、測定対象パケットの測定対象情報を一時的に格納するために、測定対象パケットの測定対象情報をバッファに書き込むことができる。
例えば、バッファは数十または数百の測定対象パケットの測定対象情報を収容できる。バッファのサイズは、測定対象情報によって占有される空間のサイズの整数倍に設定され得る。例えば、測定対象情報が測定対象パケットのヘッダ情報であり、ヘッダ情報のサイズが17バイトである場合、バッファのサイズは17バイトの整数倍に設定されてよく、例えば1700バイトであり得る。このように、バッファは整数の数の完全な測定対象情報を収容できる。
現在の測定対象パケットが測定対象パケット1である場合、測定対象パケット1の測定対象情報がバッファに書き込まれる前に、バッファは空であってもよいし、バッファは別の測定対象パケットの測定対象情報を格納していてもよいことに留意されたい。
103.パケット処理デバイスはバッファから測定対象情報を読み取る。
ステップ102において測定対象パケット1の測定対象情報をバッファに書き込んだ後、パケット処理デバイスは、ステップ102においてバッファに書き込まれた測定対象パケット1の測定対象情報をバッファから読み取ることができる。
測定対象パケット1の測定対象情報がバッファに書き込まれる前にバッファが空である場合、パケット処理デバイスは、測定対象パケット1の測定対象情報をバッファに書き込んだ後、測定対象パケット1の測定対象情報を直接読み取ってもよい。あるいは、測定対象パケット1がバッファに書き込まれる前にバッファが別の測定対象パケットの測定対象情報を格納している場合、測定対象パケット1の測定対象情報をバッファに書き込んだ後、パケット処理デバイスは、別の測定対象パケットの測定対象情報をまず読み取り、測定対象パケット1の測定対象情報を次いで読み取ることができる。
例えば、一実装形態では、バッファにおけるデータ構造は具体的には先入れ先出しキューであり得る。このように、パケット処理デバイスは、測定対象パケットの測定対象情報がバッファに書き込まれる順に測定対象パケットを測定し得る。
104.パケット処理デバイスは、測定対象情報および第1のアルゴリズムに基づいて、第1の測定データにおける測定対象パケットに対応するa個のデータを変更し、aは正の整数である。
第1の測定データは第1のアルゴリズムに対応している。第1の測定データは、第1のアルゴリズムに基づいて測定される少なくとも1つの測定対象パケットのトラフィック量を保存するために使用される。パケット処理デバイスが測定対象パケット1の測定対象情報をバッファから読み取った後、パケット処理デバイスは、第1のアルゴリズムならびに測定対象パケット1の測定対象情報にあるフロー識別子およびトラフィック量に基づいて、第1の測定データにおける測定対象パケット1に対応するa個のデータを変更することができる。
105.バッファ内の占有記憶空間が事前設定閾値以上である場合、パケット処理デバイスは、測定対象情報および第2のアルゴリズムに基づいて、第2の測定データにおける測定対象パケットに対応するw個のデータを変更し、wは正の整数であり、wはa未満である。
第2の測定データは第2のアルゴリズムに対応している。第2の測定データは、第2のアルゴリズムに基づいて測定される少なくとも1つの測定対象パケットのトラフィック量を保存するために使用される。ステップ101の後、バッファ内の占有記憶空間が事前設定閾値以上である場合、すなわちバッファが比較的いっぱいである場合、パケット処理デバイスは、第2のアルゴリズムならびに測定対象パケット1の測定対象情報にあるフロー識別子およびトラフィック量に基づいて、第2の測定データにおける測定対象パケット1に対応するw個のデータを変更することができる。
本出願の本実施形態では、wはa未満であることに留意されたい。具体的には、測定対象パケットを処理するために第2のアルゴリズムが使用される場合、第1のアルゴリズムが使用される場合よりも少ない個数だけ、測定データにおける測定対象パケットに対応するデータを変更すれば済む。したがって、第2のアルゴリズムを使用することにより測定対象パケットを処理することは、より高速かつ効率的であり、より小さいリソースオーバーヘッドをもたらす。したがって、本出願の本実施形態では、バッファおよび第1のアルゴリズムを使用することにより測定対象パケットを処理する方式は、低速チャネル処理方式と呼ばれ、第2のアルゴリズムを使用することにより測定対象パケットを処理する方式は、高速チャネル処理方式と呼ばれ得る。
本出願の本実施形態における「測定対象パケットを処理すること」における「処理すること」は、測定対象パケットのフロー識別子に基づいて測定対象パケットのトラフィック量を収集または測定することであることに留意されたい。
具体的には、本出願の本実施形態では、測定対象パケットが取得された後、バッファが完全にいっぱいでない場合、パケット処理デバイスは、第1のアルゴリズムに基づいて測定対象パケットを処理し得る。しかしながら、バッファが比較的いっぱいである場合、このことは、測定対象パケットが第1のアルゴリズムに基づいて処理されるときに測定対象パケットが蓄積され、その結果、測定対象パケットを処理するタスクが第1のアルゴリズムに基づいて適時完了できないことを意味し得る。この場合、パケット処理デバイスは、第1のアルゴリズムが測定対象パケットを処理するために継続的に使用されるために大量の測定対象パケットが蓄積するのを防ぐために、高速の第2のアルゴリズムに基づいて測定対象パケットを測定することができ、それにより、占有リソースの過剰なオーバーヘッドを回避し、パケット処理デバイスの正常なパケット転送サービスへの影響とネットワークスループットへの影響とを回避する。
したがって、本出願の本実施形態において提供されるトラフィック測定方法によれば、第1のアルゴリズムに基づいて測定対象パケットを処理する際のパケット処理デバイスの負荷が比較的重いか否かを判定するために、バッファが比較的いっぱいであるか否かが判定され、その結果、第1のアルゴリズムに基づいて測定対象パケットを処理する際のパケット処理デバイスの負荷が比較的重い場合、パケット処理デバイスは、より高速な第2のアルゴリズムを使用することにより測定対象パケットを処理するように切り替え、これにより、正常なパケット転送サービスを確保し、ネットワークスループットを改善する。
本出願の本実施形態では、図5を参照すると、バッファに対応するデータ構造はロックフリー循環キューであり得る。リーダ(ライタ)は、それぞれの読み取り(書き込み)場所を記録する。読み取り(書き込み)動作が完了するたびに、場所は1ビットずつ前方に移動する。別の形式のバッファでは、通常、ロックを保持する動作を実行でき、ロックを保持しない動作を実行できない。別の動作がロックを解除するまで動作を実行できない。したがって、通常、読み取り動作と書き込み動作とをバッファで同時に実行することはできない。しかしながら、本出願の本実施形態で提供される図5に示されるロックフリー循環キューでは、通常、読み取り動作と書き込み動作とは同時に実行することができ、読み取り動作と書き込み動作とは、読み取り場所と書き込み場所とが互いに比較的近い場合にのみ同時に実行することはできない。したがって、ロックフリーの循環キューを使用することは、処理効率を向上させることができる。
本出願の本実施形態では、第1のアルゴリズムはハッシュ関数を含むことができ、第1の測定データはc個の場所におけるデータを含むことができ、ここでcは正の整数である。図6に示されるマッピング関係を参照すると、ステップ104において、パケット処理デバイスが、測定対象情報および第1のアルゴリズムに基づいて、第1の測定データにおける測定対象パケットに対応するa個のデータを変更することは、以下のステップを含み得る。
1041.パケット処理デバイスは、測定対象パケットのフロー識別子およびハッシュ関数に基づいて、c個の場所からu個の場所を判定し、uは正の整数であり、uはc以下である。
1042.パケット処理デバイスは、測定対象パケットのトラフィック量に基づいて、u個の場所におけるa個のデータを変更する。
本明細書では、uはa以下である。具体的には、u個の場所のそれぞれがa個のデータの少なくとも1つに対応し得る。
本出願の本実施形態では、特定の実装形態は次のようになり得る、すなわち、ステップ104の第1のアルゴリズムに対応する第1の測定データにおけるa個のデータは、具体的にはa個のカウンタの値であり得、ステップ105の第2のアルゴリズムに対応する第2の測定データにおけるw個のデータは、具体的にはw個のカウンタの値であり得る。この場合、測定対象パケットの処理中に、第1のアルゴリズムを使用するにはa個のカウンタの値を更新する必要があり、第2のアルゴリズムを使用するにはw個のカウンタの値を更新する必要があり、wはa未満である。
本出願の本実施形態における第1のアルゴリズムは、比較的高い測定精度を有するアルゴリズムであり得、例えばsketch-basedアルゴリズムであり得る。具体的には、複数のタイプのsketch-basedアルゴリズムがあり得、例えばFlowRadarアルゴリズム、RevSketchアルゴリズム、UnivMonアルゴリズム、Deltoidアルゴリズム、TwoLevelアルゴリズム、FMアルゴリズム、kMinアルゴリズム、LCアルゴリズム、およびMRACアルゴリズムがあり得る。このように、従来技術と比較して、本出願の本実施形態で提供されるトラフィック測定方法によれば、sketch-basedアルゴリズムを使用することにより測定対象パケットを処理するタスクを適時完了できないとバッファを使用することにより判定された場合、測定対象パケットはより高速な処理速度の第2のアルゴリズムを使用することにより処理され、それにより、大量の測定対象パケットが蓄積するのを防ぎ、ネットワークスループットを改善する。
以下では説明のために、第1のアルゴリズムがsketch-basedアルゴリズムである例が使用される。
第1のアルゴリズムがsketch-basedアルゴリズムである場合、第1の測定データはsketchデータ構造に対応し得る。sketchデータ構造の概略図については、図6を参照されたい。sketchデータ構造における第1の測定データは、行列形式で表され得る。sketch-basedアルゴリズムでは、測定対象パケットのフロー識別子が抽出され、ハッシュ結果を取得するために複数のハッシュ関数に基づいて測定対象パケットのフロー識別子に対して計算が実行され、複数のセルが行列から選択され、選択されたセルのそれぞれにおけるデータが測定対象パケットのトラフィック量に基づいて更新される。一実装形態では、行列内の各セルが1つまたは複数のカウンタを含む。通常、セルにおけるカウンタの初期値は、変更されない限り0であり得る。別の実装形態では、行列内の各セルは、例えば、ビットデータ構造またはキー値マッピング構造にあり得る。
行列内の各セルが1つまたは複数のカウンタを含む場合、ステップ104でパケット処理デバイスによって変更されるa個のデータは、行列内の少なくとも1つのセルに対応するa個のカウンタの値であり得、aは通常は4以上である。
加えて、本出願の本実施形態で提供される測定アルゴリズムでは、パケット処理デバイスにデプロイされた複数の第1のアルゴリズムがあり得、すなわち、複数のsketch-basedアルゴリズムがパケット処理デバイスに同時にデプロイされ得、各sketch-basedアルゴリズムが1つのsketchデータ構造に対応しているため、1つの第1の測定データに対応している。ステップ104において、sketch-basedアルゴリズムごとに、パケット処理デバイスは、このsketch-basedアルゴリズムに対応する第1の測定データにおけるa個のデータを個別に変更することができる。異なるsketch-basedアルゴリズムは、aの異なる特定の値に対応し得る。
さらに、図7を参照すると、ステップ104の後、トラフィック測定方法は以下のステップを含み得る。
106.パケット処理デバイスは、測定対象パケットの測定対象情報をバッファから削除する。
測定対象パケットの測定対象情報を読み取った後、パケット処理デバイスは、新しく取得された別の測定対象パケットの測定対象情報を書き込むために記憶空間を解放するために、測定対象パケットの測定対象情報をバッファから削除し得る。
本出願の本実施形態では、第2の測定データはフローテーブルに対応し、フローテーブルはパケット処理デバイスに格納され、第2の測定データはフローテーブルにおけるデータを含み得る。例えば、フローテーブルに対応するデータ構造は、具体的にはハッシュテーブルまたはバイナリツリーであり得る。フローテーブルにより占有される記憶空間は比較的小さく、例えば数キロバイトであり得る。
ある場合では、フローテーブルは、フロー識別子と第1のデータrとの間の対応関係を含む、すなわち、フロー識別子に対応するデータフローと第1のデータrとの間の対応関係を含む。ステップ105において、パケット処理デバイスが、測定対象情報および第2のアルゴリズムに基づいて、第2の測定データにおける測定対象パケットに対応するw個のデータを変更することは、以下のステップを特に含み得る。
1051.パケット処理デバイスは、測定対象情報および第2のアルゴリズムに基づいて、測定対象パケットに対応し、かつ第2の測定データにある第1のデータrfを変更する。
この場合、第2の測定データは、フロー識別子と第1のデータrとの間の対応関係を含む。パケット処理デバイスは、測定対象情報における測定対象パケットのフロー識別子および第2のアルゴリズムに基づいて、測定対象パケットのフロー識別子fに対応する第1のデータrを判定することができ、測定対象情報における測定対象パケットのトラフィック量に基づいて、第1のデータrを変更する。この場合、wは1であり得る。具体的には、パケット処理デバイスは、1つのデータ、すなわち、測定対象パケットに対応し、かつ第2の測定データにある第1のデータrfを変更する。
フローテーブルはカウンタを含むことができ、測定対象パケットに対応する第1のデータrfは、具体的にはカウンタの値であり得る。具体的には、パケット処理デバイスは、1つのカウンタの値を更新できる。この場合、wは1である。
具体的には、ステップ1051は次のステップを含み得る。
1052.フローテーブルが測定対象パケットのフロー識別子fを含む場合、測定対象パケットに対応し、かつフローテーブルにある第1のデータrfを、測定対象パケットに対応する第1のデータrfと測定対象パケットのトラフィック量との和に更新する。
測定対象パケットのフロー識別子fがフローテーブルに既に存在し、測定対象パケットに対応するフロー識別子fと測定対象パケットに対応する第1のデータrfとの間の対応関係もフローテーブルに存在する場合、パケット処理デバイスは、測定対象パケットに対応する第1のデータrfを、測定対象パケットに対応する第1のデータrfと測定対象パケットのトラフィック量との和に更新し得る。したがって、1つのデータのみ、すなわち測定対象パケットに対応する第1のデータrfのみが、測定対象パケットの処理中に変更される。
別の例では、フローテーブルは、フロー識別子と第1のデータrおよび第2のデータdのそれぞれとの間の対応関係を含む、すなわち、フロー識別子に対応するデータフローと第1のデータrおよび第2のデータdのそれぞれとの間の対応関係を含む。フローテーブルが測定対象パケットのフロー識別子fを含まず、かつフローテーブルがいっぱいである場合、パケット処理デバイスは、比較的小さいトラフィック量を有するデータフローに対応するフロー識別子、第1のデータr、および第2のデータdをフローテーブルから削除し得る。具体的には、ステップ105の前に、本方法は以下のステップをさらに含み得る。
201.パケット処理デバイスはデクリメント値
を計算する。
202.パケット処理デバイスは、フローテーブルに含まれる各フロー識別子に対応する第1のデータrを、第1のデータrとデクリメント値
との差に更新する。
203.パケット処理デバイスは、フローテーブルに含まれる各フロー識別子に対応する第2のデータdを、第2のデータdとデクリメント値
との和に更新する。
204.パケット処理デバイスは、第1の事前設定条件を満たすフロー識別子と、第1のデータrおよび第2のデータdのそれぞれとの間の対応関係を削除する。
第1の事前設定条件を満たすフロー識別子は、対応する更新された第1のデータrが0以下であるフロー識別子である。
ステップ201から204に対応する動作は削除動作と呼ばれ得る。削除動作により一部のトラフィック情報が失われる。削除動作において、パケット処理デバイスは、対応する第1のデータrがデクリメント値
未満であるデータフローに対応するフロー識別子、第1のデータr、および第2のデータdを削除し得る。換言すれば、パケット処理デバイスは、第1のデータrが比較的小さいデータフローをフローテーブルから削除し、その結果、フローテーブルは、第1のデータrが比較的大きいデータフローに対応するフロー識別子を保存できる。
さらに、フローテーブルは、フロー識別子と第1のデータr、第2のデータd、および第3のデータeのそれぞれとの間の対応関係を含み得る。フローテーブルが測定対象パケットのフロー識別子fを含まず、かつフローテーブルがいっぱいである場合、ステップ201から204に基づいて、ステップ105は以下のステップを特に含み得る。
1053.測定対象パケットのトラフィック量がデクリメント値
よりも大きい場合、パケット処理デバイスは、測定対象パケットのトラフィック量とデクリメント値
との差を、測定対象パケットに対応する第1のデータr
fに設定する。
1054.パケット処理デバイスは、デクリメント値
を、測定対象パケットに対応する第2のデータd
fに設定する。
1055.パケット処理デバイスは、総デクリメントトラフィック量Eを、測定対象パケットに対応する第3のデータefに設定する。
1056.パケット処理デバイスは、測定対象パケットのフロー識別子fと測定対象パケットに対応する第1のデータrf、測定対象パケットに対応する第2のデータdf、および測定対象パケットに対応する第3のデータefのそれぞれとの間の対応関係をフローテーブルに挿入する。
測定対象パケットのトラフィック量がデクリメント値
よりも大きい場合、このことは、測定対象パケットのデータフローのトラフィック量が比較的大きいことを示すことができ、データフローに対応するフロー識別子、第1のデータr、および第2のデータdがフローテーブルに保存され得る。したがって、測定対象パケットのフロー識別子fと測定対象パケットに対応する第1のデータr
f、測定対象パケットに対応する第2のデータd
f、および測定対象パケットに対応する第3のデータe
fのそれぞれとの間の対応関係がフローテーブルに挿入され得る。
この場合、パケット処理デバイスは、ステップ105において測定対象パケットに対応する第1のデータrf、第2のデータdf、および第3のデータefを変更することができる、すなわちw=3個のデータを変更する必要がある。
本出願の本実施形態では、第1のデータrは、削除動作後の対応するデータフローの残りのトラフィック量として理解され得る。削除動作がゼロ回実行される場合、第1のデータrは測定対象パケットのトラフィック量であり得、測定対象パケットに対応するデータフローのフロー識別子は第1のデータrに対応する。第2のデータdは、削除動作中の対応するデータフローの失われたトラフィック量として理解され得る。第3のデータeは、対応するフロー識別子が今回フローテーブルに挿入される前の最大トラフィック損失の推定値として理解され得る。
ステップ1055において、パケット処理デバイスは、総デクリメントトラフィック量Eを、測定対象パケットに対応する第3のデータefに設定する。具体的には、フロー識別子fのフローテーブルへの挿入中、フロー識別子fが今回フローテーブルに挿入される前の最大トラフィック損失の推定値は、総デクリメントトラフィック量Eである。
ステップ201から204およびステップ1056の後、本方法は以下のステップをさらに含み得る。
205.パケット処理デバイスは、総デクリメントトラフィック量Eを、総デクリメントトラフィック量Eとデクリメント値
との和に更新する。
削除動作を実行した後、パケット処理デバイスは、デクリメント値
を総デクリメントトラフィック量Eにさらに加え、その結果、次回のフロー識別子のフローテーブルへの挿入中、フロー識別子に対応する第3のデータeは、総デクリメントトラフィック量Eに設定され得る。総デクリメントトラフィック量Eは、具体的にはカウンタの値であり得る。
具体的には、総デクリメントトラフィック量Eは、パケット処理デバイスが削除動作を実行するたびに失われるデクリメント値
の和である。フロー識別子fのフローテーブルへの挿入中、フロー識別子fが今回フローテーブルに挿入される前の最大トラフィック損失の推定値は、パケット処理デバイスが削除動作を実行するたびに失われるデクリメント値
の和である。
ステップ201において、パケット処理デバイスがデクリメント値
を計算することは、以下のステップを含み得る。
2011.パケット処理デバイスは、測定対象パケットのトラフィック量およびフローテーブルに含まれるフロー識別子に対応する第1のデータrを値の順に並べ替え、並べ替えた後の最初の2つの値をR1およびR2として、また並べ替えた後の最後の値をRkとして示す。
2012.パケット処理デバイスは、デクリメント値
をR
1、R
2、R
k、および次の式
に基づいて計算し、
であり、δは定数を表す。
ステップ2011および2012の主な原則は、フローテーブルにおけるすべての第1のデータrの値をフィッティングすることによりロングテール分布を取得し、フィッティングにより取得された分布からロングテール部分を、閾値(つまり、デクリメント値
)を選択することにより削除することである。
別の場合では、フローテーブルが測定対象パケットのフロー識別子fを含まず、かつフローテーブルがいっぱいではない場合、ステップ105において、パケット処理デバイスが、測定対象情報および第2のアルゴリズムに基づいて、第2の測定データにおける測定対象パケットに対応するw個のデータを変更することは、以下のステップを含み得る。
1057.パケット処理デバイスは、測定対象パケットのトラフィック量を、測定対象パケットに対応する第1のデータrfに設定する。
1058.パケット処理デバイスは、総デクリメントトラフィック量Eを、測定対象パケットに対応する第3のデータefに設定する。
1059.パケット処理デバイスは、測定対象パケットのフロー識別子fと測定対象パケットに対応する第1のデータrfおよび測定対象パケットに対応する第3のデータefのそれぞれとの間の対応関係をフローテーブルに挿入する。
この場合、パケット処理デバイスは、2つのデータ、すなわち測定対象パケットに対応する第1のデータrfおよび第3のデータefを変更することができ、つまりw=2である。加えて、パケット処理デバイスは、測定対象パケットのフロー識別子fと測定対象パケットに対応する第1のデータrfおよび測定対象パケットに対応する第3のデータefのそれぞれとの間の対応関係をフローテーブルに挿入する。
加えて、本出願の本実施形態では、図8を参照すると、フローテーブルはエントリを特に含むことができ、エントリは、フロー識別子と第1のデータr、第2のデータd、および第3のデータeのそれぞれとの間の対応関係を含み得る。加えて、エントリ内の第1のデータr、第2のデータd、および第3のデータeは、具体的にはそれぞれ3つのカウンタの値であり得る。具体的には、各測定対象パケットについて、パケット処理デバイスは、第2のアルゴリズムに基づいて、1つのカウンタの値(r)、2つのカウンタの値(eおよびr)、または3つのカウンタの値(e、r、およびd)を変更し得る。通常、フローテーブルにおけるカウンタの初期値は0に設定され得る。
ステップ105の具体的な実施プロセスについては、図9を参照されたい。
さらに、第2の測定データは、ローカルな総トラフィック量を含み得る。図7と参照すると、バッファ内の占有記憶空間が事前設定閾値以上である場合、本方法は以下のステップをさらに含み得る。
107.パケット処理デバイスは、ローカルな総トラフィック量を、ローカルな総トラフィック量と測定対象パケットのトラフィック量との和に更新する。
本出願の本実施形態では、パケット処理デバイスは、各測定対象パケットの取得されたトラフィック量をローカルな総トラフィック量に加えることができる。具体的には、ローカルな総トラフィック量は、第2のアルゴリズムに基づいて測定される必要があるトラフィック量、つまり高速チャネルに入る総トラフィック量として理解され得る。具体的には、ローカルな総トラフィック量はまたカウンタの値であり得る。
ステップ107とステップ105との間に特定の順序関係はない。つまり、ステップ107は、ステップ105の前であってもステップ105の後であってもよい。
本出願の上述の実施形態で提供される第2のアルゴリズムの内容は、ステップ105、ステップ1051から1059、ステップ201から205、ステップ2011および2012、ならびにステップ107の対応する内容を特に含み得ることに留意されたい。
加えて、従来技術の測定方法が使用される場合に、各パケットが4つのsketch-basedアルゴリズム、すなわちFlowRadarアルゴリズム、RevSketchアルゴリズム、UnivMonアルゴリズム、およびDeltoidアルゴリズムにより処理されるときに使用される対応する中央処理装置(central processing unit、CPU)クロックサイクルを示す実験データが図10に示され得る。sketch-basedアルゴリズムを使用することにより1つのパケットを処理することは、数千の、または数万にもなるCPUクロックサイクルに対応することが図10からわかる。しかしながら、本出願の本実施形態において提供される第2のアルゴリズムを使用することにより、1つのパケットを処理するのに必要とされるのは数十のCPUクロックサイクルだけである。本出願で提供される第2のアルゴリズムの処理効率がより高いことがわかる。本出願の本実施形態では、sketch-basedアルゴリズムと第2のアルゴリズムとの間で切り替えが実行され、それにより、リソースオーバーヘッドを低減し、パケット処理デバイスの全体的な処理効率を改善する。
本出願の本実施形態では、データフローを識別するために使用され、かつ測定対象パケットに対応するフロー識別子は、複数の特定の形式にあり得る。例えば、フロー識別子は5タプルであってよく、5タプルは、送信元インターネットプロトコルIPアドレスと、送信元ポートと、宛先IPアドレスと、宛先ポートと、トランスポート層プロトコルとを含む。あるいは、フロー識別子は2タプルであり、2タプルは送信元IPアドレスと宛先IPアドレスとを含む。あるいは、測定対象パケットがIPパケットである場合、フロー識別子はTOSフィールドの最初の3文字であり得る。あるいは、測定対象パケットがマルチプロトコル・ラベル・スイッチング(multi-protocol label switching、MPLS)パケットである場合、フロー識別子はEXPフィールドであり得る。あるいは、フロー識別子はイーサネット送信元アドレスとイーサネット宛先アドレスとを含み得る。
さらに、ステップ105の後、図11を参照すると、本出願の本実施形態において提供されるトラフィック測定方法は、以下のステップをさらに含み得る。
108.パケット処理デバイスは、第1の測定データおよび/または第2の測定データをネットワークコントローラに送信し、第1の測定データおよび/または第2の測定データが、目的の測定データを計算するためにネットワークコントローラによって使用される。
パケット処理デバイスは、第1の測定データおよび/または第2の測定データをネットワークコントローラに報告することができ、その結果、ネットワークコントローラは、トラフィックに関する統計値を収集したり、ネットワーク管理を実行したりなどするために、第1の測定データおよび/または第2の測定データに基づいて目的の測定データを計算することができる。
具体的には、可能な実装形態では、ステップ108は以下のステップを含み得る。
1081.パケット処理デバイスは、事前設定期間に基づいて、第1の測定データおよび/または第2の測定データをネットワークコントローラに送信する。
本実装形態では、報告期間が到来すると、パケット処理デバイスは、取得した第1の測定データおよび/または第2の測定データをネットワークコントローラに報告することができる。
別の可能な実装形態では、ステップ108は以下のステップを含み得る。
1082.パケット処理デバイスは、ネットワークコントローラによって送信された測定データ要求メッセージを受信する。
1083.パケット処理デバイスは、測定データ要求メッセージに応じて、第1の測定データおよび/または第2の測定データをネットワークコントローラに送信する。
本実装形態では、パケット処理デバイスは、ネットワークコントローラによって送信された測定データ要求メッセージを受信した後に、取得した第1の測定データおよび/または第2の測定データをネットワークコントローラに報告することができる。
具体的には、第1の測定データは第1のアルゴリズムおよび低速チャネルに対応し、第2の測定データは第2のアルゴリズムおよび高速チャネルに対応する。パケット処理デバイスが、測定データが最後に報告された後に第1のアルゴリズムのみに基づいて測定対象パケットを処理する場合、パケット処理デバイスは第1の測定データのみを報告する。パケット処理デバイスが、測定データが最後に報告された後に第2のアルゴリズムのみに基づいて測定対象パケットを処理する場合、パケット処理デバイスは第2の測定データのみを報告する。パケット処理デバイスが、測定データが最後に報告された後に、第1のアルゴリズムおよび第2のアルゴリズムに基づいて測定対象パケットを処理する場合、パケット処理デバイスは第1の測定データおよび第2の測定データの両方を報告する。換言すれば、パケット処理デバイスは、報告の各時点で第1の測定データおよび第2の測定データの少なくとも一方を報告することができる。
さらに、ステップ108の後、パケット処理デバイスは、今回報告された第1の測定データおよび/または第2の測定データをさらに削除し得る。例えば、第1の測定データがsketchデータ構造に対応する行列内のデータであり、第2の測定データがフローテーブル内のデータであり、行列セルおよびフローテーブルがそれぞれ1つまたは複数のカウンタを含む場合、第1の測定データおよび/または第2の測定データを周期的に報告した後、パケット処理デバイスは、行列セルおよびフローテーブル内のカウンタの値、ならびにローカルな総トラフィック量に対応するカウンタの値を初期値にさらにリセットすることができ、例えば、第1の測定データおよび/または第2の測定データを削除するために、すべての値を0にリセットすることができる。加えて、総デクリメントトラフィック量Eのカウンタの値も初期値にリセットされ得る。
あるいは、ステップ108の後、パケット処理デバイスは、第1の測定データおよび/または第2の測定データを削除しないが、今回報告された第1の測定データおよび/または第2の測定データを記録してもよく、その結果、次回の報告時に、パケット処理デバイスは、新しい第1の測定データおよび/または第2の測定データ、ならびに今回報告された第1の測定データおよび/または第2の測定データに基づいて、2つの報告期間中に実際のトラフィック値を取得することができる。あるいは、ネットワークコントローラは、パケット処理デバイスによって2回報告された第1の測定データおよび/または第2の測定データに基づいて、2つの報告期間中に実際のトラフィック値を取得することができる。
上述のプロセスは、例として図2に示されるアーキテクチャにおける1つのパケット処理デバイスを使用することによって説明されていることに留意されたい。図2に示されるアーキテクチャにおける別のパケット処理デバイスの処理プロセスは、上述のプロセスと同様である。つまり、複数のパケット処理デバイスはそれぞれ、第1の測定データおよび/または第2の測定データをネットワークコントローラに送信することができる。
複数のパケット処理デバイスの報告プロセスに対応して、ネットワークコントローラは、複数のパケット処理デバイスによって送信された第1の測定データおよび/または第2の測定データを受信し得る。これは、次のステップを特に含み得る。
109.ネットワークコントローラは、m個のパケット処理デバイスによってそれぞれ送信されたm個の第1の測定データと、n個のパケット処理デバイスによってそれぞれ送信されたn個の第2の測定データとを受信し、第1の測定データが第1のアルゴリズムに基づいて取得され、第2の測定データが第2のアルゴリズムに基づいて取得され、mとnとは両方とも非負の整数である。
ここで、m個のパケット処理デバイスおよびn個のパケット処理デバイスは、図2に示されるアーキテクチャにおけるパケット処理デバイスであり、m個のパケット処理デバイスとn個のパケット処理デバイスとは、異なるパケット処理デバイスであってもよいし、同じパケット処理デバイスであってもよいし、部分的に重複してもよい。例えば、ここでのm個のパケット処理デバイスは、パケット処理デバイス1およびパケット処理デバイス2であってもよく、ここでのn個のパケット処理デバイスは、パケット処理デバイス3およびパケット処理デバイス4であってもよい。別の例として、ここでのm個のパケット処理デバイスは、パケット処理デバイス1およびパケット処理デバイス2であってもよく、ここでのn個のパケット処理デバイスは、パケット処理デバイス2、パケット処理デバイス3、およびパケット処理デバイス4であってもよい。別の例として、ここで、m=nであり、m個のパケット処理デバイスおよびn個のパケット処理デバイスの両方ともパケット処理デバイス1、パケット処理デバイス2、パケット処理デバイス3、およびパケット処理デバイス4である。
図2に示されるアーキテクチャにおける各パケット処理デバイスは、第1の測定データおよび第2の測定データの少なくとも一方をネットワークコントローラに報告することができ、これは、2つの報告期間中にパケット処理デバイスが、第1の測定データを更新するために第1のアルゴリズムのみに基づいて測定対象パケットを処理するため、または第2の測定データを更新するために第2のアルゴリズムのみに基づいて測定対象パケットを処理するため、または第1のアルゴリズムおよび第2のアルゴリズムに基づいて第1の測定データおよび第2の測定データの両方を更新するためである。
具体的には、図2に示されるアーキテクチャにおけるすべてのパケット処理デバイスが第1の測定データおよび第2の測定データをネットワークコントローラに報告できる、または図2に示されるアーキテクチャにおけるいくつかのパケット処理デバイスが第1の測定データをネットワークコントローラに報告でき、図2に示されるアーキテクチャにおけるいくつかのパケット処理デバイスが第2の測定データをネットワークコントローラに報告できる。図2に示されるアーキテクチャにおけるすべてのパケット処理デバイスが第1の測定データのみをネットワークコントローラに報告する場合、nは0であり得る。図2に示されるアーキテクチャにおけるすべてのパケット処理デバイスが第2の測定データのみをネットワークコントローラに報告する場合、mは0であり得る。
110.ネットワークコントローラは、グローバルな第1の測定データを取得するためにm個の第1の測定データを組み合わせる。
m個のパケット処理デバイスによって報告されたm個の第1の測定データを受信した後、ネットワークコントローラは、グローバルな第1の測定データと呼ばれる第1の測定データの合計を取得するために、m個の第1の測定データを組み合わせることができる。
111.ネットワークコントローラは、グローバルな第2の測定データを取得するためにn個の第2の測定データを組み合わせる。
n個のパケット処理デバイスによって報告されたn個の第2の測定データを受信した後、ネットワークコントローラは、グローバルな第2の測定データと呼ばれる第2の測定データの合計を取得するために、n個の第2の測定データを組み合わせることができる。
112.ネットワークコントローラは、グローバルな第1の測定データおよびグローバルな第2の測定データに基づいて目的の測定データを計算する。
グローバルな第1の測定データおよびグローバルな第2の測定データを取得した後、ネットワークコントローラは、グローバルな第1の測定データおよびグローバルな第2の測定データに基づいて目的の測定データを計算し得る。
このように、ネットワークコントローラは、パケット処理デバイスによって報告された第1の測定データおよび第2の測定データに基づいて、ネットワーク内のトラフィックデータに関する統計値、すなわち目的の測定データを包括的に収集できる。
ステップ112において計算された目的の測定データは、グローバルな第1の測定データと同じデータ構造を有し得る。具体的には、ネットワークコントローラによって取得された目的の測定データ、第1のアルゴリズムに基づいて取得された第1の測定データ、およびグローバルな第1の測定データは同じデータ構造を有する。ネットワークコントローラは、第2のアルゴリズムの削除動作で失われたトラフィック情報を回復するために、第2のアルゴリズムに基づいて取得されたグローバルな第2の測定データをグローバルな第1の測定データの形式に変換し、その結果、グローバルな第1の測定データおよびグローバルな第2の測定データに基づいて取得された目的の測定データは、第1のアルゴリズムに対応する測定精度と同等の測定精度を有することができると理解できる。
したがって、本出願の本実施形態において提供される測定方法では、第1のアルゴリズムに基づく測定対象パケットの処理の負荷が比較的大きい場合、より高速な処理速度の第2のアルゴリズムに基づく処理への切り替えがバッファを使用することにより実行され、それによりネットワークスループットを改善し得る。加えて、第1のアルゴリズムおよび第2のアルゴリズムに基づいて取得された目的の測定データは、第1のアルゴリズムに基づいて取得された第1の測定データと同じデータ構造を有し、それにより、第1のアルゴリズムに対応する測定精度と同等の比較的高い測定精度を維持することができる。
例えば、第1のアルゴリズムはsketch-basedアルゴリズムであり、第1の測定データはsketchデータ構造であり、第2の測定データはハッシュテーブル構造である。この場合、グローバルな第1の測定データもsketchデータ構造であり、グローバルな第2の測定データもハッシュテーブル構造であり、計算によって取得された目的の測定データはsketchデータ構造である。
具体的には、ステップ1081から1083の送信方式に対応して、ステップ109は次のステップを特に含み得る。
1091.ネットワークコントローラは、m個のパケット処理デバイスによってそれぞれ送信されたm個の第1の測定データと、n個のパケット処理デバイスによってそれぞれ送信されたn個の第2の測定データとを周期的に受信する。
あるいは、別の実装形態では、ステップ109の前に、本方法は以下のステップをさらに含み得る。
1092.ネットワークコントローラは、測定データ要求メッセージを各パケット処理デバイスに送信する。
ステップ1092において、ネットワークコントローラは、図2に示されるアーキテクチャにおける各パケット処理デバイスに測定データ要求メッセージを実際に送信することができる。図2に示されるアーキテクチャがA個のパケット処理デバイスを含むとき、Aはmとnとの和以下である。
本出願の本実施形態では、第1の測定データのそれぞれがp行q列の要素を含む場合、ステップ110は以下のステップを特に含み得る。
1100.ネットワークコントローラは、グローバルな第1の測定データを取得するために、m個の第1の測定データのものであり、かつ対応する場所にある各m個の要素を組み合わせ、グローバルな第1の測定データがp行q列の要素を含む。
グローバルな第1の測定データは、m個の第1の測定データのそれぞれと同じデータ構造および同じ量の要素を有する。ネットワークコントローラは、グローバルな第1の測定データを取得するために、p×q個の場所のそれぞれに対応するm個の第1の測定データであるm個の要素を単に加える。p行q列の要素はp×q行列として理解され、組み合わせプロセスは行列加算として理解され得る。本明細書における要素は場所に対応し、各場所に対応する要素は、1つまたは複数のデータを特に含み得ることに留意されたい。例えば、第1の測定データのデータ構造が図6に示されるsketchデータ構造である場合、第1の測定データは4×5行列として表され、各セルのデータは1つの要素を参照し、各セルは複数のデータを含み得る。
本出願の本実施形態では、第2の測定データのそれぞれがローカルな総トラフィック量およびフローテーブルを含む。フローテーブルが少なくとも1つのエントリを含み、かつエントリがフロー識別子と1対1の対応関係にある場合、ステップ111は次のステップを特に含み得る。
1111.ネットワークコントローラは、グローバルな総トラフィック量を取得するために、n個の第2の測定データにおけるn個のローカルな総トラフィック量を加える。
1112.ネットワークコントローラは、グローバルなフローテーブルを取得するためにn個の第2の測定データに対応するn個のフローテーブルのエントリを組み合わせ、グローバルなフローテーブルにおいて、フロー識別子はエントリと1対1の対応関係にある。
1113.ネットワークコントローラによって取得されたグローバルな総トラフィック量およびグローバルなフローテーブルは、グローバルな第2の測定データである。
ステップ1112において、エントリは、フロー識別子とフロー識別子に対応するトラフィックデータとを特に含むことができ、n個の第2の測定データに対応するn個のフローテーブルのエントリを組み合わせるステップは以下のステップを含む。
301.n個の第2の測定データに対応するn個のフローテーブルのエントリにおいて、同じフロー識別子を有する複数のエントリについて、ネットワークコントローラは、複数のエントリをグローバルなフローテーブルの1つのエントリに組み合わせるために、複数のエントリにおけるトラフィックデータを加える。
302.ネットワークコントローラは、グローバルなフローテーブルの1つのエントリとして、異なるフロー識別子を有するエントリのそれぞれを使用する。
例えば、次の表1を参照すると、フローテーブル1がエントリ1およびエントリ2を含む場合、エントリ1はフロー識別子1に対応し、エントリ2はフロー識別子2に対応し、フローテーブル2がエントリ3およびエントリ4を含み、エントリ3はフロー識別子2に対応し、エントリ4はフロー識別子3に対応し、エントリ2およびエントリ3は同じフロー識別子2に対応する。したがって、組み合わされたグローバルなフローテーブルでは、エントリ2およびエントリ3が1つのエントリに組み合わされ、エントリ1およびエントリ4はそれぞれグローバルなフローテーブルの1つのエントリである。
本出願の本実施形態は、パケット処理デバイスに1つの第1のアルゴリズムのみがデプロイされる例を使用することにより説明されていることに留意されたい。複数の第1のアルゴリズムがパケット処理デバイスにデプロイされる場合、各第1のアルゴリズムは1つの第1の測定データに対応し、したがって1つのグローバルな第1の測定データに対応する。したがって、ネットワークコントローラは、複数の第1のアルゴリズムに基づいて複数のグローバルな第1の測定データを取得することができ、複数の目的の測定データを取得するために、複数のグローバルな第1の測定データのそれぞれをグローバルな第2の測定データと組み合わせることができる。
本出願の本実施形態では、グローバルな第1の測定データおよびグローバルな第2の測定データを取得した後、ネットワークコントローラは、圧縮センシングベースの最適化問題を構築することにより、第1の測定データと同じデータ構造を有する目的の測定データを取得し得る。具体的には、ステップ112は次のステップを含み得る。
1121.ネットワークコントローラは、グローバルな第1の測定データおよびグローバルな第2の測定データに基づいて、最適化目的関数を構築する。
1122.ネットワークコントローラは、凸最適化アルゴリズムおよび最適化目的関数に基づいて目的の測定データを計算する。
最適化目的関数の式が、
minimize
であり、
最適化目的関数が次の制約、すなわち、
制約1:T=N+sk(x+y)、
制約2:|x|
1+|y|
1=V、および
制約3:∀s∈H、r
s+d
s≦x
s≦r
s+d
s+e
sを満たし、
「minimize」は最適化目的関数を最小化する独立変数値の計算を表し、Tは目的の測定データを表し、Nはグローバルなフローテーブルを表し、Vはグローバルな総トラフィック量を表し、Hはグローバルな第1の測定データを表し、xはHに含まれるフロー識別子に対応するデータフローのトラフィック量を表し、x
sはフロー識別子sに対応するデータフローのトラフィック量を表し、yは、Hに含まれないデータフローのものであり、かつ第2のアルゴリズムに基づいて測定されたデータフローのトラフィック量にあるトラフィック量を表し、x+yは第2のアルゴリズムに基づいて測定されたデータフローのトラフィック量を表し、sk(x+y)は入力としてx+yを使用することにより、また第1のアルゴリズムを呼び出すことにより取得された結果を表し、r
sは、フロー識別子sに対応する第1のデータrを表し、d
sは、フロー識別子sに対応する第2のデータdを表し、e
sは、フロー識別子sに対応する第3のデータeを表し、
|T|
*は、Tの核型ノルムを表し、かつ行列のすべての特異値の和として定義され、|x|
1は、ベクトルxのL
1ノルムを表し、かつxのすべてのデータの絶対値の和として定義され、
は、ベクトルyのフロベニウスノルムを表し、かつxのすべてのデータの二乗和として定義され、
α、β、およびγの計算式はそれぞれ、
および
γ=10σ
yであり、
P
NおよびQ
Nはそれぞれ行列Nの長さおよび幅を表し、η(N)はNのデータの平均を表し、m
xおよびn
xはそれぞれベクトルxの長さおよび幅を表し、σ
yはyのすべてのデータの標準偏差を表す。
ここで、xおよびyはベクトルとして表されてもよく、ベクトルの第iのデータはフロー識別子iのトラフィック量である。フロー識別子iがxまたはyにない場合、第iのデータx[i]またはy[i]は0である。例えば、フロー識別子が5タプルの場合、合計2104の異なる5タプルの可能性があり、グローバルなフローテーブルNは合計2104個のデータを有し、mxおよびnxの値はそれぞれ2104と1であり、xおよびyは両方とも長さが2104の5タプルベクトルである。
ここでは、複数の凸最適化アルゴリズムがある。例えば、凸最適化アルゴリズムは、内点法、交互方向乗数法ADMM、または劣勾配法であり得る。
一般的な凸最適化問題に対する閉形式の解はない、つまり、出力と入力との間の関数関係の式を明示的に与えることはできない。したがって、ステップ1121および1122では、予想されるグローバルな最適解の代わりに使用するために、制約規則に基づいて特定の範囲内で探索することにより、近似的な局所最適解を見つけるための近似法が使用され得る。
sk(x+y)は入力としてx+yを使用することにより、また第1のアルゴリズムを呼び出すことにより取得された結果を表す。したがって、sk(x+y)は、第1のアルゴリズムに基づいて取得されたグローバルな第1の測定データNと同じデータ構造を持ち、sk(x+y)、N、およびこれら2つの和、すなわち目的の測定関数も同じデータ構造を有する。このように、計算された目的の測定データは、第1のアルゴリズムの精度と同等の高い精度によって特徴付けられる。
目的の測定データが取得された後、目的の測定データは、ネットワーク例外検出、ネットワークトラフィック分布統計値、ネットワークトモグラフィ、分散型サービス妨害(distributed denial of service、DDoS)攻撃検出などのうちの少なくとも1つに使用され得る。異なる第1のアルゴリズムでは、計算された目的の測定データの機能も異なり得る。例えば、第1のアルゴリズムがDeltoid、RevSketch、またはFlowRadarである場合、計算された目的の測定データはエレファントフロー検出に使用され、第1のアルゴリズムがTwoLevelである場合、計算された目的の測定データはDDoS検出に使用され、第1のアルゴリズムがLC、kMin、またはFMの場合、計算された目的の測定データはフロー量統計に使用され得る、などである。
さらに、本出願の本実施形態では、ステップ101で取得された測定対象パケットのフロー識別子は、目的のフロー識別子であり得る。換言すれば、測定対象パケットは、目的のフロー識別子を有するパケットである。パケット処理デバイスが複数のパケットを受信する場合、目的のフロー識別子を有するパケットが測定対象パケットであり、目的のフロー識別子を持たないパケットのトラフィックは測定されない。したがって、図12を参照すると、ステップ101の前に、本方法は以下のステップをさらに含み得る。
113.ネットワークコントローラは、各パケット処理デバイスに命令メッセージを送信し、命令メッセージは、測定対象パケット処理デバイスに対応する目的のフロー識別子を運ぶ。
114.パケット処理デバイスは、ネットワークコントローラによって送信された命令メッセージを受信し、命令メッセージは目的のフロー識別子を含む。
具体的には、ネットワークコントローラは、パケット処理デバイスが目的のフロー識別子に対応するパケットのトラフィック量を測定および報告することを規定するために、目的のフロー識別子を送信し得る。
加えて、ネットワークコントローラは、構成ポリシーを使用することによりパケット処理デバイスと目的のフロー識別子との間の対応関係を事前構成することができ、その結果、ネットワーク内の1つのパケットのトラフィック量が、複数のパケット処理デバイスによって測定および報告される代わりに、ネットワーク内の1つのパケット処理デバイスのみによって測定および報告される。したがって、ネットワーク内のパケット処理デバイスによって測定されたパケットは互いに重複せず、これにより、測定の繰り返しを避け、正確なネットワークトラフィックの測定を実現する。
例えば、測定対象パケット処理デバイスが目的のフロー識別子に対応するということは以下を含み得る、すなわち、測定対象パケット処理デバイスが目的のフロー識別子に対応するデータフローのラストホップデバイスである、または測定対象パケット処理デバイスが目的のフロー識別子に対応するデータフローのファーストホップデバイスである、または測定対象パケット処理デバイスが目的のフロー識別子に対応するデータフローの受信エンドデバイスである、または測定対象パケット処理デバイスが目的のフロー識別子に対応するデータフローの送信エンドデバイスであることを含み得る。当然のことながら、パケット処理デバイスと目的のフロー識別子との間には別の対応関係もあるが、ここでは細部を繰り返し説明しない。
加えて、本出願の本実施形態の特定の実装形態では、図2に示されるネットワークシステムはSDNネットワークであり得、ネットワークコントローラはSDNネットワーク内のSDNコントローラであり得、パケット処理デバイスはSDNソフトウェアスイッチと共に配置されたSDNネットワーク内のデバイスであり得る。
加えて、本出願の上述の実施形態は、第2のアルゴリズムが、本明細書において第1のフローテーブルアルゴリズムと呼ばれるフローテーブルベースのアルゴリズムである例を使用することにより主に説明されていることに留意されたい。本出願の本実施形態の別の実装形態では、第2のアルゴリズムは、代替的に、第2のフローテーブルアルゴリズム、すなわちMisraGriesアルゴリズムであってもよい。第2のフローテーブルアルゴリズムの主な原則は、フロー識別子を1つのフローテーブルに記録することであり、各エントリは現在のトラフィック量を表すカウンタが1つしかない。フローテーブルがいっぱいになると、トラフィック量が最小のエントリが削除される。本出願の本実施形態において提供される第1のフローテーブルアルゴリズムと比較して、第2のフローテーブルアルゴリズムでは、毎回1つのエントリのみが削除されるため、削除の量が非常に多く、大量のリソースを必要とし、アルゴリズムの効率に影響を与える。加えて、各フローテーブルエントリにはカウンタが1つしかないため、削除動作により起因するエラーは記録できないため、最終結果の精度は比較的低くなる。
本明細書では、従来技術におけるsketch-basedアルゴリズムのみに基づくトラフィック測定方法が方法1と呼ばれ、sketch-basedアルゴリズムが第1のアルゴリズムとして使用され、第2のフローテーブルアルゴリズムが第2のアルゴリズムとして使用される測定方法が方法2と呼ばれ、sketch-basedアルゴリズムが第1のアルゴリズムとして使用され、第1のフローテーブルアルゴリズムが第2のアルゴリズムとして使用される測定方法が方法3と呼ばれる。この場合、sketch-basedアルゴリズムであるDeltoid、UnivMon、TwoLevel、RevSketch、FlowRadar、FM、kMin、LC、およびMRACを個別に使用すると、実験により取得され、かつ方法1、方法2、および方法3にそれぞれ対応するネットワークスループットが図13に示される。図13において、縦線で塗りつぶされた部分は方法1に対応し、斜線で塗りつぶされた部分は方法2に対応し、格子で塗りつぶされた部分は方法3に対応する。図13の実験データは、方法3を使用することでより高いネットワークスループットに到達できることを示し得る。
加えて、ステップ112において、ステップ1121および1122は、凸最適化アルゴリズムを使用することにより目的の測定関数Tを解くための特定の実装形態を提供する。ステップ112の別の実装形態では、ネットワークコントローラは、処理の複雑さを低減するために、凸最適化アルゴリズムの代わりに単純な計算により目的の測定関数Tを解くことができる。例えばT=N+sk(x)であり、Nはグローバルなフローテーブルを表し、xはHに含まれるフロー識別子に対応するデータフローのトラフィック量を表し、sk(x)は入力としてxを使用することにより、また第1のアルゴリズムを呼び出すことにより取得された結果を表す。特定の実装形態では、xの各フロー識別子に対応するデータフローのトラフィック量は、フロー識別子に対応する第1のデータrと第2のデータdとの和であり得る。別の特定の実装形態では、xの各フロー識別子に対応するデータフローのトラフィック量は、フロー識別子に対応する第1のデータrと第2のデータdと第3のデータeとの和であり得る。実験データは、ステップ1121および1122において提供される目的の測定関数を計算するためのアルゴリズムを使用すると、より良好なパフォーマンスが達成され得ることを示している。
例えば、ネットワーク例外検出の精度が説明のための例として使用される。従来技術におけるsketch-basedアルゴリズムのみに基づくトラフィック測定方法が方法Aと呼ばれ、sketch-basedアルゴリズムが第1のアルゴリズムとして使用され、第1のフローテーブルアルゴリズムが第2のアルゴリズムとして使用され、目的の測定関数が式T=N+sk(x)に基づいて計算され、xはrとdとの和である、対応するトラフィック測定方法が方法Bと呼ばれ、sketch-basedアルゴリズムが第1のアルゴリズムとして使用され、第1のフローテーブルアルゴリズムが第2のアルゴリズムとして使用され、目的の測定関数が式T=N+sk(x)に基づいて計算され、xがrとdとeとの和である、対応するトラフィック測定方法が方法Cと呼ばれ、sketch-basedアルゴリズムが第1のアルゴリズムとして使用され、第1のフローテーブルアルゴリズムが第2のアルゴリズムとして使用され、目的の測定関数が上述の凸最適化アルゴリズムを使用することにより計算されるトラフィック測定方法が方法Dと呼ばれると仮定される。この場合、heavy hitterフローまたはheavy changerフローに基づいてネットワーク例外を検出するためにsketch-basedアルゴリズムであるFlowRadar、RevSketch、UnivMon、およびDeltoidが個別に使用されるときに、再現(recall)率、誤検出率(precision)、および相対誤差(relative error)の観点から方法Aから方法Dまでの場合および理想的な精度の場合が図14aから図14fに示されている。図14aから図14fにおいて、縦線で塗りつぶされた部分は方法Aに対応し、横線で塗りつぶされた部分は方法Bに対応し、点で塗りつぶされた部分は方法Cに対応し、格子で塗りつぶされた部分は方法Dに対応し、バックスラッシュで塗りつぶされた部分は、理想的な精度値を表す。加えて、図14aから図14cはheavy hitterフローに対応しており、図14dから図14fはheavy changerフローに対応している。図14aから図14fにより、方法Dに対応する検出精度がより高く、理想的な精度値に近いことがわかる。
上記は、ネットワーク要素間の相互作用の観点から、本出願の実施形態で提供される解決策を主に説明している。上述の機能を実施するために、各ネットワーク要素、例えばパケット処理デバイスまたはネットワークコントローラは、機能を実行するための対応するハードウェア構造および/またはソフトウェアモジュールを含むことが理解できる。当業者であれば、本明細書で開示した各実施形態に関連して説明した例におけるアルゴリズムステップは、本出願において、ハードウェアまたはハードウェアとコンピュータソフトウェアとの組み合わせを使用することによって実施され得ることを容易に承知するはずである。機能がハードウェアで行われるかコンピュータソフトウェアによって駆動されるハードウェアで行われるかは、技術的解決策の具体的な応用形態および設計制約によって決まる。当業者は、それぞれの具体的な応用形態に対して説明された機能を実施するために、異なる方法を使用することができるが、こうした実施が、本出願の範囲を超えるものであると見なされるべきではない。
本出願の実施形態では、パケット処理デバイスおよびネットワークコントローラは、上述の方法例に基づいて機能モジュールに分割されてもよい。例えば、機能モジュールは、各機能の分割によって取得されてもよいし、2つ以上の機能が1つの処理モジュールに統合されてもよい。統合されたモジュールはハードウェアの形態で実施されてもよいし、ソフトウェア機能モジュールの形態で実施されてもよい。本出願の実施形態におけるモジュール分割は一例であり、単に論理的な機能分割であり、実際の実装では他の分割であってもよいことに留意されたい。
本出願の一実施形態は、パケット処理デバイス1500をさらに提供する。図15を参照すると、パケット処理デバイス1500は、少なくとも1つのプロセッサ1501と、メモリ1502と、バッファ1503と、通信インターフェース1504と、バス1505とを備え、少なくとも1つのプロセッサ1501、メモリ1502、およびバッファ1503はバス1505を使用することにより互いに接続される。通信インターフェース1504は、パケット処理デバイス1500がパケット転送デバイスまたはパケット受信エンドデバイスであるときに、測定対象パケットを取得するように構成される。メモリ1502は、命令を格納するように構成される。プロセッサ1501は、以下の動作、すなわち、パケット処理デバイス1500がパケット送信エンドデバイスである場合、測定対象パケットを取得する動作と、バッファ1503内の占有記憶空間が事前設定閾値未満である場合、測定対象パケットの測定対象情報をバッファ1503に書き込む動作であって、測定対象情報が、測定対象パケットのフロー識別子および測定対象パケットのトラフィック量を含む、動作と、バッファ1503から測定対象情報を読み取る動作と、測定対象情報および第1のアルゴリズムに基づいて、第1の測定データにおける測定対象パケットに対応するa個のデータを変更する動作であって、aが正の整数である、動作とを実施するために、またはバッファ1503内の占有記憶空間が事前設定閾値以上である場合、測定対象情報および第2のアルゴリズムに基づいて、第2の測定データにおける測定対象パケットに対応するw個のデータを変更する動作であって、wが正の整数であり、wがa未満である、動作とを実施するためにメモリ1502に格納された命令を呼び出すように構成される。バッファ1503は、プロセッサ1501が測定対象パケットの測定対象情報をバッファ1503に書き込んだ後、測定対象情報を格納するように構成される。
本明細書のバッファ1503およびメモリ1502は、2つの独立したハードウェアモジュールであってもよいし、1つのハードウェアモジュールに統合されてもよいことに留意されたい。
プロセッサ1501は、図4、図7、および図11のステップ101から105、図7のステップ106および107、図9のステップ1052および1059を実行する際にパケット処理デバイス1500をサポートするように構成されてもよい。通信インターフェース1504は、図4および図7のステップ101(パケット処理デバイス1500がパケット転送デバイスまたはパケット受信エンドデバイスである場合)、図11のステップ108、ならびに図12のステップ114を実行する際にパケット処理デバイス1500をサポートするように構成される。加えて、図15の構成要素は、本明細書で説明される技術の別のプロセスを実行する際にパケット処理デバイス1500をサポートするようにさらに構成され得る。
本出願の一実施形態は、ネットワークコントローラ1600をさらに提供する。図16を参照すると、ネットワークコントローラ1600は、少なくとも1つのプロセッサ1601と、メモリ1602と、通信インターフェース1603と、バス1604とを備えることができ、少なくとも1つのプロセッサ1601およびメモリ1602はバス1604を使用することにより互いに接続される。通信インターフェース1603は、m個のパケット処理デバイスによってそれぞれ送信されたm個の第1の測定データと、n個のパケット処理デバイスによってそれぞれ送信されたn個の第2の測定データとを受信し、第1の測定データが第1のアルゴリズムに基づいて取得され、第2の測定データが第2のアルゴリズムに基づいて取得され、mとnとは両方とも非負の整数である、ように構成される。メモリ1602は、命令を格納するように構成される。プロセッサ1601は、以下の動作、すなわち、グローバルな第1の測定データを取得するためにm個の第1の測定データを組み合わせる動作と、グローバルな第2の測定データを取得するためにn個の第2の測定データを組み合わせる動作と、グローバルな第1の測定データおよびグローバルな第2の測定データに基づいて目的の測定データを計算する動作とを実施するためにメモリ1602に格納された命令を呼び出すように構成される。
プロセッサ1601は、図11および図12のステップ110から112を実行する際にネットワークコントローラ1600をサポートするように構成されてもよい。通信インターフェース1603は、図11および図12のステップ109ならびに図12のステップ113を実行する際にネットワークコントローラ1600をサポートするように構成される。加えて、図16の構成要素は、本明細書で説明される技術の別のプロセスを実行する際にネットワークコントローラ1600をサポートするようにさらに構成され得る。
図15および図16のプロセッサは、それぞれ異なるタイプのプロセッサを含むことも同じタイプのプロセッサを含むこともでき、具体的には、計算処理能力を備えた次のデバイス、すなわち中央処理装置CPU、ARMプロセッサ、フィールドプログラマブルゲートアレイ(field programmable gate array、FPGA)、および専用プロセッサのいずれか1つであり得る。あるいは、プロセッサはメニーコアプロセッサとして統合されてもよい。
図15および図16のメモリは、それぞれ以下の記憶媒体、すなわちランダムアクセスメモリ(random access memory、RAM)、読み取り専用メモリ(read only memory、ROM)、不揮発性メモリ(non-volatile memory、NVM)、ソリッドステートドライブ(solid state drive、SSD)、機械的ハードディスク、磁気ディスク、ディスクアレイなどのいずれか1つまたは任意の組み合わせであり得る。
図15および図16の通信インターフェースはそれぞれ別のデバイスとデータを交換するように構成される。通信インターフェースは、ネットワークアクセス機能を備えた次のデバイス、すなわちネットワークインターフェース(例えば、イーサネットインターフェース)、ワイヤレスネットワークインターフェースカードなどのいずれか1つまたは任意の組み合わせであり得る。
図15および図16のバスはそれぞれ、アドレスバス、データバス、制御バスなどを含むことができる。表現を簡単にするため、図10ではバスを表すために太線が使用されている。バスは、有線データ伝送に使用される次のデバイス、すなわち、インダストリ・スタンダード・アーキテクチャ(industry standard architecture、ISA)バス、ペリフェラル・コンポーネント・インターコネクト(peripheral component interconnect、PCI)バス、エクステンデッド・インダストリ・スタンダード・アーキテクチャ(extended industry standard architecture、EISA)バスなどのいずれか1つまたは任意の組み合わせであり得る。
本出願の一実施形態は、パケット処理デバイス1700をさらに提供する。図17を参照すると、パケット処理デバイス1700は、バッファ1701と、取得ユニット1702と、書き込みユニット1703と、読み取りユニット1704と、第1の変更ユニット1705と、第2の変更ユニット1706と、削除ユニット1707と、更新ユニット1708と、処理ユニット1709と、送信ユニット1710と、受信ユニット1711とを備え得る。取得ユニット1702は、測定対象パケットを取得するように構成される。書き込みユニット1703は、バッファ内の占有記憶空間が事前設定閾値未満である場合、測定対象パケットの測定対象情報をバッファに書き込み、測定対象情報が測定対象パケットのフロー識別子と測定対象パケットのトラフィック量とを含む、ように構成される。バッファ1701は、書き込みユニット1703が測定対象情報をバッファ1701に書き込んだ後、測定対象情報を格納するように構成される。読み取りユニット1704は、バッファ1701から測定対象情報を読み取るように構成される。第1の変更ユニット1705は、測定対象情報および第1のアルゴリズムに基づいて、第1の測定データにおける測定対象パケットに対応するa個のデータを変更し、aは正の整数である、ように構成される。第2の変更ユニット1706は、バッファ1701内の占有記憶空間が事前設定閾値以上である場合、測定対象情報および第2のアルゴリズムに基づいて、第2の測定データにおける測定対象パケットに対応するw個のデータを変更し、wは正の整数であり、wはa未満である、ように構成される。
送信ユニット1710および受信ユニット1711は、図15に示される通信インターフェース1504の機能に対応し得る。書き込みユニット1703、読み取りユニット1704、第1の変更ユニット1705、第2の変更ユニット1706、削除ユニット1707、処理ユニット1709、および更新ユニット1708は、プロセッサ1501の機能に対応し得る。取得ユニット1702は、図15に示される通信インターフェース1504またはプロセッサ1501のいくつかの機能に対応し得る。ここでは細部を繰り返し説明しない。
本出願の一実施形態は、ネットワークコントローラ1800をさらに提供する。図18を参照すると、ネットワークコントローラ1800は、受信ユニット1801と、第1の組み合わせユニット1802と、第2の組み合わせユニット1803と、計算ユニット1804と、送信ユニット1805とを備え得る。受信ユニット1801は、m個のパケット処理デバイスによってそれぞれ送信されたm個の第1の測定データと、n個のパケット処理デバイスによってそれぞれ送信されたn個の第2の測定データとを受信し、第1の測定データが第1のアルゴリズムに基づいて取得され、第2の測定データが第2のアルゴリズムに基づいて取得され、mとnとは両方とも非負の整数である、ように構成される。第1の組み合わせユニット1802は、グローバルな第1の測定データを取得するためにm個の第1の測定データを組み合わせるように構成される。第2の組み合わせユニット1803は、グローバルな第2の測定データを取得するためにn個の第2の測定データを組み合わせるように構成される。計算ユニット1804は、グローバルな第1の測定データおよびグローバルな第2の測定データに基づいて目的の測定データを計算するように構成される。
送信ユニット1805および受信ユニット1801は、図16に示される通信インターフェース1603の機能に対応し得る。第1の組み合わせユニット1802、第2の組み合わせユニット1803、および計算ユニット1804は、図16に示されるプロセッサ1601の機能に対応し得る。ここでは細部を繰り返し説明しない。
上述の方法の実施形態におけるステップのすべての関連する内容が、対応する機能モジュールの機能の説明において記載され得ることに留意されたい。ここでは細部を繰り返し説明しない。
実装形態に関する上の説明を通して、説明を簡便にする目的で上記機能モジュールの分割が説明のための一例として使用されているに過ぎないことを当業者は明確に知ることができる。実際の適用においては、上記各機能を、異なる機能モジュールに割り振り、要件に従って実装することができる、すなわち、装置の内部構造が上記の各機能の全部または一部を実装するための異なる機能モジュールに分割される。
本出願の一実施形態は、上述のパケット処理デバイスによって使用されるコンピュータソフトウェア命令を格納するように構成されたコンピュータ記憶媒体をさらに提供する。命令がパケット処理デバイスで実行されると、パケット処理デバイスは、上述の実施形態のトラフィック測定方法を実行する。例えば、記憶媒体は具体的には上述のメモリであってもよい。
本出願の一実施形態は、上述のネットワークコントローラによって使用されるコンピュータソフトウェア命令を格納するように構成されたコンピュータ記憶媒体をさらに提供する。命令がネットワークコントローラで実行されると、ネットワークコントローラは、上述の実施形態のトラフィック測定方法を実行する。
本出願の一実施形態は、命令を含むコンピュータプログラム製品をさらに提供し、製品が上述のパケット処理デバイスで実行されると、パケット処理デバイスは、上述の実施形態のトラフィック測定方法を実行する。
本出願の一実施形態は、命令を含むコンピュータプログラム製品をさらに提供し、製品が上述のネットワークコントローラで実行されると、ネットワークコントローラは、上述の実施形態のトラフィック測定方法を実行する。
本出願の一実施形態は、システムをさらに提供する。システムの基本アーキテクチャについては、図2を参照されたい。システムは、ネットワークコントローラと少なくとも1つのパケット処理デバイスとを備え得る。システム内のネットワークコントローラおよびパケット処理デバイスは、本出願の上述の実施形態で提供されるトラフィック測定方法を実行し得る。
パケット処理デバイスは、測定対象パケットを取得し、バッファ内の占有記憶空間が事前設定閾値未満である場合、測定対象パケットの測定対象情報をバッファに書き込み、測定対象情報が、測定対象パケットのフロー識別子および測定対象パケットのトラフィック量を含み、バッファから測定対象情報を読み取り、測定対象情報および第1のアルゴリズムに基づいて、第1の測定データにおける測定対象パケットに対応するa個のデータを変更し、aが正の整数である、ように構成され得る、またはバッファ内の占有記憶空間が事前設定閾値以上である場合、測定対象情報および第2のアルゴリズムに基づいて、第2の測定データにおける測定対象パケットに対応するw個のデータを変更し、wが正の整数であり、wがa未満である、ように構成され得る。
ネットワークコントローラは、m個のパケット処理デバイスによってそれぞれ送信されたm個の第1の測定データと、n個のパケット処理デバイスによってそれぞれ送信されたn個の第2の測定データとを受信し、第1の測定データが第1のアルゴリズムに基づいて取得され、第2の測定データが第2のアルゴリズムに基づいて取得され、mとnとは両方とも非負の整数であり、グローバルな第1の測定データを取得するためにm個の第1の測定データを組み合わせ、グローバルな第2の測定データを取得するためにn個の第2の測定データを組み合わせ、グローバルな第1の測定データおよびグローバルな第2の測定データに基づいて目的の測定データを計算する、ように構成され得る。
システムの1つの分割方式では、システムは制御プレーンとデータプレーンとを含み得る。少なくとも1つのパケット処理デバイスは、データプレーンの機能に対応していてもよく、ネットワークコントローラは、制御プレーンの機能に対応していてもよい。
上記の実施形態の全部または一部は、ソフトウェア、ハードウェア、ファームウェア、またはそれらの任意の組み合わせを使用することによって実施されてもよい。ソフトウェアプログラムが実施形態を実施するために使用される場合、実施形態は、コンピュータプログラム製品の形態で完全にまたは部分的に実施されてもよい。コンピュータプログラム製品は、1つまたは複数のコンピュータ命令を含む。コンピュータプログラム命令がコンピュータにロードされて実行されると、本出願の実施形態による手順または機能がすべてまたは部分的に生成される。コンピュータは、汎用コンピュータ、専用コンピュータ、コンピュータネットワーク、または他のプログラマブル装置であってもよい。コンピュータ命令は、コンピュータ可読記憶媒体に格納されてもよいし、あるコンピュータ可読記憶媒体から別のコンピュータ可読記憶媒体に送信されてもよい。例えば、コンピュータ命令は、ウェブサイト、コンピュータ、サーバ、またはデータセンタから別のウェブサイト、コンピュータ、サーバ、またはデータセンタに、有線(例えば、同軸ケーブル、光ファイバ、またはデジタル加入者線(digital subscriber line、DSL))または無線(例えば、赤外線、電波、またはマイクロ波)方式で送信され得る。コンピュータ可読記憶媒体は、コンピュータによってアクセス可能な任意の使用可能な媒体であってもよく、または1つまたは複数の使用可能な媒体を一体化するサーバまたはデータセンタなどのデータ記憶装置であってもよい。使用可能な媒体は、磁気媒体(例えば、フロッピーディスク、ハードディスク、または磁気テープ)、光学媒体(例えば、DVD)、半導体媒体(例えば、ソリッドステートディスク(solid state disk(SSD)))などであってもよい。
本出願を実施形態に関連して説明したが、保護を請求する本出願を実施する過程において、当業者であれば、添付の図面、開示内容、および添付の特許請求の範囲を検討することにより本開示の実施形態の他の変形を理解し実施することができる。特許請求の範囲において、「含む」(comprising)は別の構成要素または別のステップを排除せず、「a」または「one」は「複数の」場合を排除しない。単一のプロセッサまたは別のユニットが、特許請求の範囲に列挙されたいくつかの機能を実装することができる。一部の手段が互いに異なる従属請求項に記録されているが、このことは、より良い効果を生み出すためにこれらの手段を組み合わせることができないことを意味しない。
上記の説明は、単に本出願の具体的な実装形態に過ぎず、本出願の保護範囲を限定することを意図するものではない。本出願において開示された技術的範囲内のあらゆる変形や置き換えは、本出願の保護範囲内に含まれるものとする。したがって、本出願の保護範囲は、特許請求の範囲の保護範囲に属する。