本願の実施形態は、エレファントフローを識別する精度を改善しかつネットワークサービスの転送性能を改善するよう、フローを識別する方法、及び装置を提供する。
上記の目的を達成するために、以下の技術的解決法が本願の実施形態で使用される。
第1の態様に従って、フローを識別する方法が提供される。方法は、通信デバイスが、ターゲットフローの最初のパケットから第1フィルタリング方式で受信パケットをカウントすることを含む。ターゲットフローの受信パケットの数量が第1閾値以上であると決定する場合に、通信デバイスは、第1閾値を超えるパケットから開始して、カウントがmの倍数であるパケットをマークし、このとき、mは2以上の整数である。代替的に、ターゲットフローの受信パケットの数量が第2閾値以上であると決定する場合に、通信デバイスは、第2フィルタリング方式で、引き続き受信されるパケットをカウントする。代替的に、ターゲットフローの受信パケットの数量が第3閾値λ4以上であると決定する場合に、通信デバイスは、ターゲットフローがエレファントフローであると決定し、引き続き受信されるパケットをマークする。通信デバイスはスイッチであってよい。
このように、本願では、エレファントフローのパケットは、2層フィルタリング方法を使用することによって識別可能であり、エレファントフロー内の一部のパケットがマークされ得る。このように、レート制限又は破棄は、マークされたパケットに対して実行され得、マークされていないパケットは、通常通り転送され得る。パケットが第2段階のフィルタリングに入り、第2段階のフィルタリングで設定されている第3閾値に達する場合に、パケットは連続的にマークされる。フローが大きいほど、フローにおけるパケットの総量のうち、マークされたパケットの総量が多いことを示す。このように、エレファントフローパケットは、スイッチのエントリ記憶空間の利用を改善するよう、サンプリングされ、階層的な処理はハッシュ衝突を減らすことができる。更に、エレファントフローパケットを識別する精度が改善可能であり、マウスフローを転送する成功率が向上する。
可能な設計において、方法は、ネットワーク輻輳が起こることを決定する場合に、通信デバイスは、マークされたパケットの転送レートを更新し、更新された転送レートは、更新されていない転送レートを下回る。代替的に、ネットワーク輻輳が起こることを決定する場合に、通信デバイスは、ターゲットフロー内のマークされたパケットを破棄する。ここでの破棄は、優先的な破棄としても理解され得る。
本願で提供される、フローを識別する方法に従って、2層フィルタリングに基づいたエレファントフロー識別方法は、マウスフローをバイパスし、エレファントフローのパケットのみをマークすることができる。実際に、レート制限又は破棄は、マークされたパケットに対してのみ実行される。フローの総バイト数が第1段階のフィルタリングで設定されている閾値に満たない場合には、パケットのうちの最大1/8がマークされ、ほとんどのパケットが通常通りに元のレートで転送される。パケットが第2段階のフィルタリングに入り、第2段階のフィルタリングで設定されている閾値λ4に達する場合、パケットは連続的にマークされる。フローが大きいほど、パケットの総バイト数のうち、マークされたパケットの総量が多いことを示す。このように、リンクのネットワーク輻輳は緩和され得る。
可能な設計において、第1フィルタリング方式で使用されるデータ構造はブルームフィルタである。第1フィルタリング方式で受信パケットをカウントすることは、ハッシュ関数とブルームフィルタに対応するベクトルとが、ターゲットフローの受信パケットをターゲットフローに対応するベクトル位置に一対一でマッピングするために使用されることを含み、このとき、各マッピング中の対応するベクトル位置のカウントは1ずつ増える。ここでのブルームフィルタはブルームフィルタとして理解され得る。言い換えると、ハッシュ関数とブルームフィルタに対応するベクトルとは、ターゲットフローの受信パケットをターゲットフローに対応するベクトル位置に一対一でマッピングするために使用されることを含み、このとき、各マッピング中の対応するベクトル位置のカウントは1ずつ増える。
可能な設計において、ターゲットフローの受信パケットの数量が第1閾値以上であると決定する場合に、通信デバイスが、第1閾値を超えるパケットから開始して、カウントがmの倍数であるパケットをマークすることは、ターゲットフローの受信パケットの数量が第1閾値以上であると決定する場合に、通信デバイスが、ターゲットフローがエレファントフローの候補であると決定することを含む。通信デバイスは、第1閾値を超えるパケットから開始して、カウントが2pであるパケットをマークし、ここで、m=2pであり、pは1以上の数である。例えば、p=3であるとき、カウントが104、112、120、128、などであるパケットがマークされてよく、つまり、スイッチは、受信された104番目のパケット、112番目のパケット、120番目のパケット、128番目のパケット、などをマークすると理解され得る。
可能な設計において、第2フィルタリング方式で使用されるデータ構造はスケッチデータ構造である。第2フィルタリング方式で、引き続き受信されるパケットをカウントすることは、第2フィルタリング方式が、引き続き受信されるパケットを、d個のハッシュ関数を使用することによってw×d個のカウンタにマッピングするために使用され、wd個のカウンタのカウント結果の中の最小値が、現在受信されているパケットの数量として決定されることを含み、ここで、w及びdは1よりも大きい整数である。具体的に言えば、スイッチによって受信されるパケットの数量が第2閾値以上であるならば、第2層のフィルタリングが実行され、第2フィルタリング方式が第2層フィルタリングで使用される。このようにして、パケットが第2段階のフィルタリングに入り、第2段階のフィルタリングで設定されている第3閾値に達する場合に、パケットは連続的にマークされる。フローが大きいほど、フローにおけるパケットの総量のうち、マークされたパケットの総量が多いことを示す。このように、エレファントフローパケットは、スイッチのエントリ記憶空間の利用を改善するよう、サンプリングされ、階層的な処理はハッシュ衝突を減らすことができる。
可能な設計において、方法は、通信デバイスが、通信デバイスによってパケットを受信することの精度と偽陽性率とに基づき、第3閾値を更新することを更に含む。パラメータ、つまり、第3閾値がこの次に調整される必要があるならば、パケットサンプリング、識別、パケットキャプチャ処理は、再更新された第3閾値を決定するために、新しい精度を計算するよう新しいパラメータを使用することによって再び実行されてもよい。
第2の態様に従って、通信デバイスが提供される。通信デバイスは、ターゲットフローの最初のパケットから開始して、第1フィルタリング方式で受信パケットをカウントするよう構成されるカウントユニットと、ターゲットフローの受信パケットの数量が第1閾値以上であることが決定される場合に、第1閾値を超えるパケットから開始して、カウントが2以上の整数mの倍数であるパケットをマークするよう構成されるマーキングユニットとを含む。カウントユニットは、ターゲットフローの受信パケットの数量が第2閾値以上であることが決定される場合に、第2フィルタリング方式で、引き続き受信されるパケットをカウントするよう更に構成される。マーキングユニットは、ターゲットフローの受信パケットの数量が第3閾値以上であることが決定される場合に、ターゲットフローがエレファントフローであると決定し、引き続き受信されるパケットをマークするよう更に構成される。
可能な設計において、デバイスは、ネットワーク輻輳が起こることが決定される場合に、マークされたパケットの転送レートを更新し、更新された転送レートが更新されていない転送レートを下回る、よう、又はネットワーク輻輳が起こることが決定される場合に、ターゲットフロー内のマークされたパケットを破棄するよう構成される輻輳処理ユニットを更に含む。
可能な設計において、第1フィルタリング方式で使用されるデータ構造はブルームフィルタである。カウントユニットは特に、ハッシュ関数とブルームフィルタに対応するベクトルとを使用することによって、ターゲットフローの受信パケットをターゲットフローに対応するベクトル位置に一対一でマッピングするよう構成され、このとき、各マッピング中の前記対応するベクトル位置のカウントは1ずつ増える。
可能な設計において、マーキングユニットは特に、ターゲットフローの受信パケットの数量が第1閾値に等しいことが決定される場合に、ターゲットフローがエレファントフローの候補であると決定し、第1閾値を超えるパケットから開始して、カウントが2pであるパケットをマークするよう構成され、ここで、m=2pであり、pは1以上の数である。
可能な設計において、第2フィルタリング方式で使用されるデータ構造はスケッチデータ構造である。カウントユニットは特に、第2フィルタリング方式で、引き続き受信されるパケットを、d個のハッシュ関数を使用することによってw×d個のカウンタにマッピングし、wd個のカウンタのカウント結果の中の最小値を現在受信されているパケットの数量として決定するよう構成され、ここで、w及びdは1よりも大きい整数である。
可能な設計において、デバイスは、通信デバイスによってパケットを受信することの精度と偽陽性率とに基づき、第3閾値を更新するよう構成される更新ユニットを更に含む。
第3の態様に従って、通信装置が提供される。装置は少なくとも1つのプロセッサを含む。少なくとも1つのプロセッサはメモリへ接続される。少なくとも1つのプロセッサは、装置が第1の態様又は第1の態様のいずれか1つに従う方法を実行することを可能にするように、メモリに記憶されているプログラムを読み出して実行するよう構成される。
第4の態様に従って、チップが提供される。チップはメモリへ結合され、第1の態様又は第1の態様のいずれか1つに従う方法を実装するように、メモリに記憶されているプログラム命令を読み出して実行するよう構成される。
第5の態様に従って、通信デバイスが提供される。通信デバイスはメモリ及びプロセッサを含む。メモリはプロセッサへ結合される。メモリは、コンピュータプログラムコードを記憶するよう構成される。コンピュータプログラムコードはコンピュータ命令を含む。トランシーバは、データを受信しかつデータを送信するよう構成される。プロセッサがコンピュータ命令を実行する場合に、クラウドセンターは、第1の態様又は第1の態様の対応する可能な設計のいずれか1つに従う、フローを識別する方法を実行することができる。
第6の態様に従って、本願はチップシステムを提供する。チップシステムはクラウドセンターに適用される。チップシステムは、1つ以上のインターフェース回路及び1つ以上のプロセッサを含む。インターフェース回路及びプロセッサはラインを通じて相互接続される。インターフェース回路は、クラウドセンターのメモリから信号を受信し、信号をプロセッサへ送信するよう構成される。信号は、メモリに記憶されているコンピュータ命令を含む。プロセッサがコンピュータ命令を実行する場合に、クラウドセンターは、第1の態様又は第1の態様の対応する可能な設計に従う、フローを識別する方法を実行する。
第7の態様に従って、本願の実施形態は通信装置を提供する。装置は電子デバイスに含まれる。装置は、上記の態様及びいずれかの可能な実施のうちのいずれか1つにおける電子デバイスの挙動を実装する機能を備えている。機能は、ハードウェアによって実装されてよく、あるいは、ハードウェアが対応するソフトウェアを実行することによって実装されてもよい。ハードウェア又はソフトウェアは、上記の機能に対応する1つ以上のモジュール又はユニット、例えば、カウントモジュール又はユニット、マーキングモジュール又はユニット、輻輳処理モジュール又はユニット、あるいは、更新モジュール又はユニットを含む。
第8の態様に従って、本願の実施形態はスイッチを提供する。スイッチは、1つ以上のプロセッサ及び1つ以上のメモリを含む。1つ以上のメモリは1つ以上のプロセッサへ結合される。1つ以上のメモリは、コンピュータプログラムコードを記憶するよう構成される。コンピュータプログラムコードはコンピュータ命令を含む。1つ以上のプロセッサがコンピュータ命令を実行する場合に、電子デバイスは、上記の態様及びいずれかの可能な実施のうちのいずれか1つに従う、フローを識別する方法を実行することができる。
第9の態様に従って、本願の実施形態は、コンピュータ命令を含むコンピュータ可読記憶媒体を提供する。コンピュータ命令が電子デバイスで実行される場合に、電子デバイスは、上記の態様及びいずれかの可能な実施のうちのいずれか1つに従う、フローを識別する方法を実行することができる。
第10の態様に従って、本願の実施形態はコンピュータプログラム製品を提供する。コンピュータプログラム製品がコンピュータ又はプロセッサで実行される場合に、コンピュータ又はプロセッサは、上記の態様及びいずれかの可能な実施のうちのいずれか1つに従う、フローを識別する方法を実行することができる。
上記で提供されている通信デバイス、スイッチ、チップシステム、コンピュータ可読記憶媒体、コンピュータプログラム製品、などのうちのいずれか1つは、上記で提供されている対応する方法に適用されてよいことが理解され得る。従って、通信デバイス、スイッチ、チップシステム、コンピュータ可読記憶媒体、コンピュータプログラム製品、などによって達成可能な有利な効果については、対応する方法における有利な効果を参照されたい。詳細はここで再び記載されない。
本願のこれらの態様又は他の態様は、以下の記載においてより簡潔であり理解しやすい。
理解を容易にするために、本願の実施形態に関するいくつかの概念の例となる記載が、参照のために与えられている。詳細は次の通りに記載される。
データセンターは、情報及びデータの中央保管場所であり、情報を記憶し、管理し、拡散するために、周囲のネットワーク化された企業又は組織によって使用されてよい。
データセンターネットワークは、データセンター内のリソースを接続する。
キャッシュは、データ交換のためのバッファエリアである。
優先順位は、障害、問題、又は変更の相対的な重要性を決定するために使用されるカテゴリである。
キューは、パケットを受信するための有限なキャッシュ空間である。パケットは、優先順位に基づき異なるキューに入り、順に転送される。
輻輳は、ネットワークサービス効率を低下させる余分なネットワーク内又はネットワーク間トラフィックであwる。
マウスフローは、ネットワークリンクを通じて短時間に少量のデータを伝送するプロセスである。
エレファントフローは、ネットワークリンクを通じて大量のデータを連続的に伝送するプロセスである。
エントリ仕様は、エントリ記憶空間のサイズである。
コアスイッチは、コアレイヤと呼ばれる、ネットワークのバックボーン部分である。コアレイヤは、高速な転送及び信頼できるバックボーン伝送インターフェースの提供を目指す。従って、コアスイッチは、より高い信頼性、性能、及びスループットを備えている。
ハッシュ関数は、如何なる長さのデータセットも固定長にマッピングするために使用される。
ハッシュアルゴリズムは、入力データの任意のグループを計算して固定長出力を取得するために使用され、出力をハッシュテーブル内の対応する位置に埋める。同じ入力であれば必ず同じ出力が得られる。入力が異なれば異なる出力が得られる可能性が高い。
偽陽性率は、全データパケットの中でマークされるべきデータパケットに対するマークされたデータパケットの比である。
偽陰性率は、全データパケットの中でマークされるべきデータパケットに対するマークされていないデータパケットの比である。
ハッシュ輻輳は、異なる入力データが同じハッシュアルゴリズムによって処理され、同じハッシュ値にマッピングされることを意味する。
DiffServコードポイント(Differentiated Services Code Point,DSCP)は、Diff-Serv(Differentiated Service)のクオリティ・オブ・サービス(Quality of Service,QoS)分類標準に従って、各データパケットのインターネットプロトコル(Internet Protocol,IP)ヘッダのタイプ・オブ・サービス(Type of Service,TOS)バイトにおいて、使用済みの6ビットを使用し、未使用の2ビットは、コード値を使用することによって優先順位を区別するために使用される。DSCPは、TOSバイトにおける使用済みの6ビットの識別子であり、“IPプレシデンス”フィールドと“タイプ・オブ・サービス”フィールドとの組み合わせである。“IPプレシデンス”しかサポートしない古いルータを使用するために、DSCP値が使用される。これは、DSCP値が“IPプレシデンス”フィールドと互換性があるからである。各DSCPコード値は、定義されたPHB(Per-Hop Behavior)識別コードにマッピングされる。端末デバイスは、DSCP値を入力することによってトラフィックを識別し得る。
以下は、本願の実施形態における添付の図面を参照して、本願の実施形態における技術的解決法について記載する。本願の実施形態における記載において、「/」は、別段特定されない限りは「又は」を意味する。例えば、A/Bは、A又はBを表すことができる。本明細書中、「及び/又は」は、関連するオブジェクトについて記載するための関連付け関係のみを記述し、3つの関係が存在する可能性があることを表す。例えば、A及び/又はBは、次の3つの場合:Aのみ存在、AとBの両方が存在、Bのみが存在、を表すことができる。加えて、本願の実施形態における記載において、「複数の~」は、2つ以上を意味する。
後述される「第1」及び「第2」という用語は、単に説明の目的を意図され、指示されている技術的特徴の相対的な重要性の指示若しくは暗示又はその数量の暗黙的な指示として理解されるべきではない。従って、「第1」又は「第2」によって限定されている特徴は、1つ以上のそのような特徴を明示的又は暗黙的に含む可能性がある。実施形態の記載において、別なふうに述べられない限りは、「複数の~」は、2つ又は2つよりも多くを意味する。
確かに、デバイス、例えば、スイッチのエントリ空間を節約し、探索効率を改善するために、ハッシュアルゴリズムに基づいた複数のエレファントフロー識別技術が存在する。具体的に、それらのハッシュアルゴリズムでは、ハッシュ関数が、受信されたパケットをベクトルの位置にマッピングするために使用され、対応するベクトル位置のカウントがチェックされ、カウントは、エレファントフローを決定するための基礎として使用される。ハッシュアルゴリズムで使用される種々のデータ構造に基づき、ハッシュアルゴリズムに基づいたエレファントフロー識別方法は、ブルームフィルタ(Bloom filter)法及びスケッチ法に分類され得る。
ブルームフィルタを使用することによってエレファントフローを識別する考えは単純である。アルゴリズムにおいて、ハッシュ関数及びベクトルが使用され得、ベクトル位置の初期カウントは全て0である。ハッシュ関数は、フローのパケットをベクトル位置に1つずつマッピングし、カウントは各マッピング中に1ずつ増える。同じフローのパケットは同じベクトル位置にマッピングされる。従って、累積カウントが選択された閾値を超えると、フローはエレファントフローとしてマークされ得る。従って、ブルームフィルタを使用することによってカウントを通じてエレファントフローを識別する方法は単純であり、操作するのが容易である。
ブルームフィルタのアップグレードされたバージョンでは、フローのパケットは、複数のハッシュ関数を使用することによって、及び多段階ブルームフィルタを使用することによって、複数のベクトルにマッピングされ得る。全ての段階での対応するベクトル位置のカウンタの値が閾値よりも大きくなる場合にのみ、フローはエレファントフローとして識別される。
図1は、多段階ブルームフィルタアルゴリズムの処理プロシージャの概略図である。フローのキーワードはFであると、と仮定される。スイッチはフローのパケットを受信し、1つのパケットを受信するたびに1回ハッシュ演算を実行する。図1に示される多段階ブルームフィルタは3段階ブルームフィルタ、つまり、第1段階ブルームフィルタ(図1の第1段階のフィルタリング)、第2段階ブルームフィルタ(図1の第2段階のフィルタリング)、及び第3段階ブルームフィルタ(図1の段3段階のフィルタリング)であり、3段階ブルームフィルタに夫々対応しているハッシュ関数は、h1(F)、h2(F)、及びh3(F)である。各段階のブルームフィルタは複数のベクトル位置を含み、あるハッシュ関数を使用することによって各段階のブルームフィルタにおいてフローのパケットがマッピングされるベクトル位置の位置は、同じである。フローの各パケットのキーワードは、h1(F)及び第1段階のブルームフィルタのベクトルを使用することによってベクトル位置(1)にマッピングされ、h2(F)及び第2段階のブルームフィルタのベクトルを使用することによってベクトル位置(2)にマッピングされ、h3(F)及び段3段階ブルームフィルタのベクトルを使用することによってベクトル位置(3)にマッピングされる、と仮定される。この場合に、ベクトル位置(1)、ベクトル位置(2)、及びベクトル位置(3)の中のカウントの最小値が使用され得る。最小値が閾値Tよりも大きいならば、フローはエレファントフローであると決定される。輻輳が起こると、エレファントフローパケットのエンキューイングレートは制御され得る。例えば、エンキューイングされるべきエレファントフローパケットは、好ましくは、ネットワーク輻輳を緩和するよう破棄され得る。
しかし、いくつかのシナリオで、ブルームフィルタを使用することによってカウントによりエレファントフローを識別する方法では、ハッシュ衝突が起こりやすい。具体的に言えば、2つのフローが同じベクトル位置にマッピングされる。このようにして、マウスフローも誤ってエレファントフローとしてマークされる場合に、マウスフローのパケットも誤って破棄される。これは、偽陽性の誤判断と理解され得る。たとえ段階の数が増やされるとしても、偽陽性の誤判断は依然として存在する。具体的に言えば、閾値に満たないフローがエレファントフローと誤判断される。
もう1つのスケッチ法については、図2に示されるCount-min(CM)スケッチにおいて、d個のハッシュ関数(h1、h2、・・・、hd)がw×d個のカウンタにマッピングされ得る。ここでのCMスケッチは、実際には、d行及びw列を有する行列である。行列の各行はハッシュ関数に対応し、その場合に、全てのカウント結果の中の最小値が最終的な決定値として使用される。w及びdは1よりも大きい整数である。図2で、itはフローを示し、ctは各行のカウント結果を示す。カウントモデルが使用される場合に、フローはwd個のマッピング結果を有する。これにより、フロー間の衝突を減らすことができる。従って、CMスケッチカウント法は、大量のフローが存在するシナリオでのエレファントフロー識別に適用可能である。
ブルームフィルタと同様に、CMスケッチに基づいたエレファントフロー識別技術はハッシュ衝突を依然として有しており、つまり、偽陽性の誤判断が存在する。加えて、CMスケッチカウント法は、空間複雑性が高く、実施中に複雑である。
従って、本願は、エレファント及びマウスフロー識別シナリオに適用可能であり、特に、ネットワークデバイス、例えば、スイッチのエントリ仕様リソースが限られているシナリオでのエレファントフロー識別問題を有効に解消して、ネットワークデバイス、例えば、スイッチの記憶空間の利用を改善することができる、2つの簡単で操作が容易なエレファントフロー識別方法を提供する。
第1の方法では、本願は、2段階フィルタリングに基づいた適応的なエレファントフロー識別方法を提供する。例えば、フローの最初のパケットが受信される場合に、第1段階のフィルタリングは、閾値を超え、ある値の倍数であるパケットをマークするよう、ブルームフィルタを使用してよい。この場合に、フローはエレファントフローの候補である、と見なされ得る。パケットのカウントが上限を超える場合に、パケットは第2段階のフィルタリングであるCMスケッチに入る。第2段階のパケットのカウントが閾値を超えると、この場合に、フローはエレファントフローである、と見なされる。フローの、引き続き受信されるパケットは、マークされる。
第2の方法では、本願は、ビットマップ(bitmap)エレファントフロー識別方法を提供する。この方法では、ハッシュ計算が、フローのパケットのクインタプルに対して実行されてよい。ハッシュ値はビットに対応し、確率値は確率計算により0又は1に設定される。ビットマップ値が全て1である場合に、フローはエレファントフローとしてマークされ得る。図3に示されるように、3つのハッシュ関数が使用される、と仮定される。ハッシュ計算が各パケットに対して実行される場合に、計算された値カウンタに対応するビットのみが対応して見つけられる必要がある。この場合に、1つのフローは3ビットの記憶空間しか必要としない。ハッシュテーブルと比較して、記憶空間利用の効率が向上する。
2つの方法は複数のシナリオに適用されてよい。例えば、シナリオ1で、ネットワーク内のリンク出口にあるキャッシュが満杯である場合に、従来の技術では、フローがエレファントフローであるか、それともマウスフローであるかにかかわらず、フローの新たに到着したパケットはまとめて破棄される。しかし、本願のエレファントフロー識別方法を使用することによって、エレファントフローに属するパケットは識別され得、高い優先度で破棄されるパケット(カラー)はマークされ得る。このように、エレファントフロー内のマークされたパケットは破棄され得、マウスフローのパケットが破棄される場合は起こらない。
図4に示されるように、エレファントフローのパケットがエンキューイングされる場合に、エレファントフロー内のマークされたパケットは、キャッシュのキューに入る前に破棄される。
シナリオ2で、ネットワークデバイスのパケット損失率を下げるために、レート制限がネットワークデバイスのフローに対して実行される必要がある。本願では、エレファントフロー識別方法が使用され、それにより、レート制限ポリシーはエレファントフローにのみ適用され得、マウスフローのパケットはレートを制限されず、通常通りに転送され得ることが保証される。
図5に示されるように、エレファントフローが識別される前、すなわち、レート制限が実行される前には、フローのパケットのうちの4つのマークされたパケットが、t0からt1までの期間にエンキューイングされ得る。エレファントフローが識別された後、すなわち、レート制限が実行された後では、フローのパケットのうちの2つのマークされたパケットが、t0からt1までの期間にエンキューイングされ得る。
2つのシナリオに加えて、本願の、エレファントフローを識別する方法は、他のシナリオに更に適用されてもよい。
本願の、エレファントフローを識別する方法は、ネットワークデバイス、例えば、スイッチに適用されてもよい。スイッチは一例として使用される。図6に示されるように、スイッチにおいてエレファントフローを識別する装置は、受信モジュール、マッピングモジュール、レジスタ(例えば、ハードウェア高速レジスタ)、レジスタクリアモジュール、決定モジュール、及び送信モジュールを含み得る。受信モジュールは、スイッチに到着するフローのパケットを受信するよう構成されてよい。マッピングモジュールは、パケットのデータに基づきハッシュ計算を実行するよう、例えば、パケットをベクトル位置又はビットにマッピングするよう構成されてよい。レジスタは、マッピング回数をカウントするよう構成されてよい。決定モジュールは、レジスタのカウントに基づき、パケットがマークされる必要があるかどうかを決定するよう構成されてよい。送信モジュールは、パケットをリンクへ出力するよう構成されてよい。レジスタクリアモジュールは、間隔を置いてレジスタのカウントをクリアするよう構成されてよい。
以下は最初に、本願の第1の方法について記載する。
本願の実施形態は、フローを識別する方法を提供する。図7に示されるように、方法は次のステップを含む。
701:通信デバイスは、ターゲットフローの最初のパケットから第1フィルタリング方式で受信パケットをカウントする。
本願では、通信デバイススイッチが説明のための例として使用される。
ターゲットフローはフローfと表記される、と仮定される。フローfの最初のパケット、つまり、1番目のパケットを受信する場合に、スイッチは、1番目のパケットから第1フィルタリング方式でパケットをカウントし得る。ここでのカウントは、第1層のフィルタリングとして理解され得る。
いくつかの実施形態で、第1フィルタリング方式で使用されるデータ構造はブルームフィルタ、つまり、上記のブルームフィルタである。
第1フィルタリング方式で受信パケットをカウントすることは、
ハッシュ関数とブルームフィルタに対応するベクトルとが、ターゲットフローの受信パケットをターゲットフローに対応するベクトル位置に一対一でマッピングするために使用されることを含み、このとき、各マッピング中の対応するベクトル位置のカウントは1ずつ増える。
ここで、単段階のブルームフィルタがカウントのために使用されてもよく、あるいは、図1に示される多段階のブルームフィルタがカウントのために使用されてもよい。ブルームフィルタがカウントのために使用される場合に、複数の段階のカウントの中の最小値が第1閾値λ1と比較され、最小値が第1閾値λ1以上であるかどうかが決定される。
単段階のブルームフィルタがカウントのために使用される場合に、w1個のカウンタを含むカウントベクトルAが存在するならば、ハッシュ関数hはフローfの各パケットをフローIDに基づき[0,w1-1]に均一にマッピングしてよく、カウントは各マッピング中に1ずつ増える、と仮定される。次いで、各マッピングにより得られたカウントは、第1閾値λ1と比較される。
図8に示されるように、例えば、ハッシュ関数h及びカウントベクトルAを使用することによってフローfの各パケットに1を加える演算は、A[h(f)]+=1である。
702:ターゲットフローの受信パケットの数量が第1閾値以上であると決定する場合に、通信デバイスは、第1閾値を超えるパケットから開始して、カウントがm、つまり(λ2)の倍数であるパケットをマークし、このとき、mは2以上の整数である。
いくつかの実施形態で、ターゲットフローの受信パケットの数量が第1閾値λ1以上であると決定する場合に、通信デバイスは、ターゲットフローがエレファントフローの候補であると決定する。
mが2の累乗、つまり2pであると仮定して、スイッチは、第1閾値を超えるパケットから開始して、カウントが2pの倍数であるパケットをマークしてもよく、ここで、m=2pであり、pは1以上の整数である。
例えば、λ1=100であると仮定して、フローfの100番目のパケットを受信する場合に、スイッチは、フローfがエレファントフローの候補であると決定する。スイッチがフローfのパケットを受信し続け、つまり、[h(f)]≧λ1である場合に、スイッチは、受信されたパケットのうち、現在のカウントが2pの倍数であるパケットをマークしてよい。例えば、p=3であるとき、カウントが104、112、120、128などであるパケットがマークされてよく、つまり、スイッチは、受信された104番目のパケット、112番目のパケット、120番目のパケット、128番目のパケットなどをマークすると理解され得る。スイッチがパケットのシーケンス番号に基づきパケットを受信する場合には、スイッチは、シーケンス番号が104、112、120、128などであるパケットをマークするとも理解され得る。
図8に示されるように、例えば、mはλ2であると仮定して、ステップ702でパケットをマークする条件は、例えば、A[h(f)]≧λ1かつA[h(f)]modλ2=0であってよい。具体的に言えば、101番目の受信パケットから開始して、条件を満足しないパケットはマークされない。
703:ターゲットフローの受信パケットの数量が第2閾値以上であると決定する場合に、通信デバイスは、第2フィルタリング方式で、引き続き受信されるパケットをカウントする。
いくつかの実施形態で、スイッチによって受信されたパケットの数量が第2閾値λ3以上であるならば、第2層のフィルタリングが実行され、第2フィルタリング方式は第2層のフィルタリングで使用される。
例えば、第2フィルタリング方式で使用されるデータ構造はスケッチデータ構造であり、上記のCMスケッチとして理解され得る。
従って、第2フィルタリング方式で、引き続き受信されるパケットをカウントすることは、
第2フィルタリング方式が、引き続き受信されるパケットを、d個のハッシュ関数を使用することによってw×d個のカウンタにマッピングするために使用され、wd個のカウンタのカウント結果の中の最小値が、現在受信されているパケットの数量として決定されることを含んでよく、ここで、w及びdは1よりも大きい整数である。
例えば、第2閾値λ3は500であり、ここでのCMスケッチはCMスケッチCと表記され、d個のカウントベクトルを含む、と仮定される。各カウントベクトルCi(C1、C2、・・・、又はCd)はw2個のカウンタを含む。パケットは、501番目のパケットから開始して、ハッシュ関数グループgiを使用することによってフローfのフローIDに基づき[0,w2-1]に均一にマッピングされる。D=1、2、・・・及びw2≦w1である。図8に示されるように、パケットをカウントするプロセスは、501番目のパケットから開始して、ハッシュ関数グループgi及びカウントベクトルCiを使用することによって、例えば、Ci[gt(f)]+1=1であってよく、ここで、i=1、2、・・・、dである。
704:ターゲットフローの受信パケットの数量が第3閾値以上であると決定する場合に、通信デバイスは、ターゲットフローがエレファントフローであると決定し、引き続き受信されるパケットをマークする。次いで、ステップ705又はステップ706が実行される。
501番目のパケットからスイッチによって引き続き受信されるパケットのカウントが第3閾値λ4以上であるならば、フローfはエレファントフローであると決定され得る。
例えば、スイッチが第2層のフィルタリングを実行し始め、d個のベクトルCに対して501番目のパケットから始まる各パケットの計算結果の中の最小値が第3閾値λ4と比較され得る、と仮定される。計算により得られた最小値がmin(C1[g1(f)]、C2[g2(f)、・・・、Cd[gd(f)]]であるならば、min(C1[g1(f)]、C2[g2(f)、・・・、Cd[gd(f)]]≧λ4である場合に、そのパケットの後でその後に引き続き受信されたパケットは、図8に示されるように、マークされ得る。
例えば、501番目のパケットから開始して、501番目のパケットが1番目の受信パケットと見なされる場合に、引き続き受信されるパケットは、CMスケッチを使用することによってカウントされる。パケットの計算結果の中で、min(C1[g1(f)]、C2[g2(f)、・・・、Cd[gd(f)]]であるならば、min(C1[g1(f)]、C2[g2(f)、・・・、Cd[gd(f)]]≧λ4かつλ4=50であるならば、引き続き受信されるパケットは、50番目のパケットからマークされてよい。実際に、受信されるパケットは550番目のパケットから連続的にマークされ得るとも理解することができる。
705:ネットワーク輻輳が起きると決定する場合に、通信デバイスは、マークされたパケットの転送レートを更新し、このとき、更新された転送レートは、更新されていない転送レートを下回る。
いくつかの実施形態で、ネットワーク輻輳が起こること、例えば、スイッチのキャッシュの記憶空間に残りスペースがないことをスイッチが決定する場合に、スイッチは、決定されたエレファントフロー内のマークされたパケットのレートを制限してよい。ここでのレート制限は、エレファントフロー内のマークされたパケットがエンキューイングされるレートを下げることとして理解され得る。原理は図5のそれと同様である。
706:ネットワーク輻輳が起こると決定する場合に、通信デバイスは、ターゲットフロー内のマークされたパケットを破棄する。
いくつかの実施形態で、ネットワーク輻輳が起こること、例えば、スイッチのキャッシュの記憶空間に残りスペースがないことをスイッチが決定する場合に、スイッチ内のキャッシュの圧力を緩和し、マウスフローの伝送の成功率を上げるために、スイッチは、エレファントフローパケット、つまり、フローf内のマークされたパケットを破棄してよい。
このように、本願では、エレファントフローのパケットは、2層フィルタリング方法を使用することによって識別可能であり、エレファントフロー内の一部のパケットがマークされ得る。このように、レート制限又は破棄は、マークされたパケットに対して実行され得、マークされていないパケットは、通常通り転送され得る。パケットが第2段階のフィルタリングに入り、第2段階のフィルタリングで設定されている第3閾値に達する場合に、パケットは連続的にマークされる。フローが大きいほど、フローにおけるパケットの総量のうち、マークされたパケットの総量が多いことを示す。このように、エレファントフローパケットは、スイッチのエントリ記憶空間の利用を改善するよう、サンプリングされ、階層的な処理はハッシュ衝突を減らすことができる。更に、エレファントフローパケットを識別する精度が改善可能であり、マウスフローを転送する成功率が向上する。
本願で提供される2層フィルタリング法によってもたらされる効果を説明するために、マーキング比率テストモデルが提供される。フローの固定総量は400であり、パケットの総量の総バイト数に対するマークされたパケットの総バイト数のパーセンテージは、異なるバイト数でフローの夫々を送信するためにバイト数(例えば、80KB、200KB、又は10MB)を変更することによって、計算される。
上記のパラメータは次の通りに設定される、と仮定される:λ1=100、λ2=8、λ3=256、及びλ4=50。
カウンタのエージングレートは、カウントが1ミリ秒ごとに1ずつ減少することである。
マークされていないパケットのDSCPはCS1であり、マークされているパケットのDSCPはAF13である。
表1からは、(1)マウスフローはマークされず、例えば、バイト数が80KBであるマウスフローにはマークされているパケットが存在しない、こと、及び(2)100KBを超えるフローについて、送信フローのバイト数が大きいほど、マークされたパケットの比率は高くなることを示す、ことが分かる。より大きいフロー、例えば、10MBフローについては、マークされたパケットの確率は100%に近い。
従って、本願で提供される、フローを識別する方法に従って、2層フィルタリングに基づいたエレファントフロー識別方法はマウスフローをバイパスし、エレファントフロー内のパケットのみをマークし得る。実際に、レート制限又は破棄は、マークされたパケットに対してのみ実行される。フローの総バイト数が第1段階のフィルタリングで設定されている閾値に満たない場合には、最大1/8のパケットがマークされ、ほとんどのパケットは通常通りに元のレートで転送される。パケットが第2段階のフィルタリングに入り、第2段階のフィルタリングで設定されている閾値λ4に達する場合に、パケットは連続的にマークされる。フローが大きいほど、パケットの総バイト数のうち、マークされたパケットの総量が多いことを示す。
加えて、本願は、精度及びパケットの偽陽性率に基づきパラメータを適応的に調整するよう、適応的パラメータ調整方法を更に提供する。ここでのパラメータは、例えば、上記のλ1、λ2、λ3、及びλ4であってよい。
本願は、ここでは2つの適応的パラメータ調整ソリューションを提供する。可能な方法において、パラメータλ1、λ2、及びλ3は固定であってよく、パラメータλ4は調整されてよい。この場合に、本願のこの実施形態は、707(図7に図示せず)を更に含み得る:通信デバイスは、通信デバイスによってパケットを受信する精度と偽陽性率とに基づき、第3閾値λ4を更新する。
精度の計算は、パケットの偽陽性率fwrong及び偽陰性率flossに基づき決定され得る。
例えば、スイッチは、フローに対してパケットのキャプチャ及びカウントを実行し、エレファントフローのパケットの総量をNeとして、マウスフローのパケットの総量をNmとして記録し得る。エレファントフロー内のマークされたパケットの数量はNe’であり、マウスフロー内のマークされたパケットの数量はNm’である。偽陽性率fwrong及び偽陰性率flossは、偽陽性率の定義、つまり、全データパケット内でマークされるべきでなかったデータパケットに対するマークされたデータパケットの比率と、偽陰性率の定義、つまり、全データパケット内でマークされるべきであったデータパケットに対するマークされていないデータパケットの比率とに基づき、求められ得る:
fwrong=Nm’/Nm、及びfloss=(Ne-Ne’)/Ne
次いで、精度frightの計算方法、つまり、1-(偽陽性率+偽陰性率)/2に基づき、次が求められ得る:
fright=1-(fwrong+floss)/2
偽陰性は、マークされるべきであったエレファントフローパケットがマークされていないこととして理解され得る。具体的に言えば、偽陰性率=マークされていないエレファントフローのパケットの数量/エレファントフローパケットの総量。
偽陽性は、マウスフロー内のマウスフローパケットがエレファントフローパケットとして誤ってマークされることとして理解され得る。具体的に言えば、偽陽性率=エレファントフローパケットとして誤ってマークされているマウスフローパケットの数量/マウスフローパケットの総量。
これに基づき、本願では、λ1は、パケットをマークするために使用される閾値であり、λ1よりも大きい場合に、フローはエレファントフローの候補として分類され得る、と理解されてよい。
λ2は、パケットのサンプリングレートとして理解されてよく、2の累乗に設定される。λ2の値が大きいほど、偽陽性率は低く、偽陰性率は高いことを示す。
パケットの数がλ3を超える場合に、パケットは第2層のフィルタリングに入る必要がある。λ3の値が大きいほど、偽陽性率は低く、偽陰性率は高いことを示す。
λ4は、パケットをマークするために使用される閾値として理解されてよい。λ4の値が大きいほど、偽陽性率は低く、偽陰性率は高いことを示す。
従って、本願は、第3閾値λ4を調整するための2つのソリューションを提供する。
ソリューション1:パラメータ:λ1=100、λ2=8、λ3=256、及びλ4=nを初期化する。
(1)サービスのフローfのパケットは知られている、と仮定される。frightは、サンプリング後に計算され、パケット捕捉は、フローfのパケットに対して実行される。
(2)閾値εf∈(1/2-1/2λ2,1/2+1/2λ2)が与えられる。
fright≧εf、又はλ4=n/2である場合に、λ4は変更されないままであり、調整は終了し、λ4が返される。
fright<εfである場合に、λ4の値は、λ4=m(n/2,(1-δf)×λ4)に更新されてよく、このとき、δf∈(0,0.5)である。
次いで、(1)が引き続き実行される。言い換えると、fright<εfである場合には、パケットサンプリング、識別、及びパケットキャプチャ処理が、再び更新されるλ4を決定するために、新しいパラメータを使用して新しいfrightを計算することによって、再び実行され得る。fright≧εf、又はλ4=n/2である場合には、調整は終了する。
ソリューション2:パラメータ:λ1=100、λ2=8、λ3=256、及びλ4=nを初期化する。
(1)サービスのフローfのパケットは知られている、と仮定される。frightは、サンプリング後に計算され、パケット捕捉は、フローfのパケットに対して実行される。
(2)閾値εf∈(0,1/2λ2)が与えられる。
fright≦εf、又はλ4=n/2である場合に、λ4は変更されないままであり、調整は終了し、λ4が返される。
fright>εfである場合に、λ4の値は、λ4=m(n/2,(1-δf)×λ4)に更新されてよく、このとき、δf∈(0,0.5)である。
次いで、(1)が引き続き実行される。言い換えると、fright<εfである場合には、パケットサンプリング、識別、及びパケットキャプチャ処理が、再び更新されるλ4を決定するために、新しいパラメータを使用して新しいfrightを計算することによって、再び実行され得る。fright≧εf、又はλ4=n/2である場合には、調整は終了する。
いくつかの実施形態で、本願では、代替的に、ソリューション1又はソリューション2を参照して、種々の訓練サンプルが、パラメータλ4を訓練するためにスイッチに入力され、全ての訓練結果の平均値が最終的なλ4の値として使用される。
以下は更に、本願で提供される第2の方法、つまり、ビットマップエレファントフロー識別方法について記載する。
本願の実施例1では、エレファントフロー及びマウスフローは、ターゲットフローのパケットをカウントする方法において識別されることが理解されるべきである。スイッチのカウンタ又はレジスタは、一般的に、16ビット又は32ビットデータ構造を使用することによってカウントを実行する。これは依然として、レジスタの記憶空間の特定の量を占有する。本願では、ターゲットフローについて、ターゲットフローがエレファントフローであるか、それともマウスフローであるかのみがクエリされる必要があり、特定のフローサイズは重要ではないことが理解され得る。従って、理論上、ターゲットフローがエレファントフローであるか、それともマウスフローであるかは、1ビットを使用することによって識別され得る。例えば、0はマウスフローを表し、1はエレファントフローを表す。ターゲットフローのパケットの数はカウントされ得ないので、1ビットが0から1に変化する様態が確率マーキングであってもよい。具体的に言えば、フローの各パケットが通信デバイスに到着する場合に、パケットがエレファントフローパケットとしてマークされる必要があるかどうかは、特定の確率pに従って決定されてよい。統計的に、フローが十分に大きく、通信デバイスに到着するパケットの数量が十分に多い場合には、フローは確実にエレファントフローとして識別される。
この理論に基づき、本願の実施形態は、フローを識別する方法を提供する。図9に示されるように、方法は次のステップを含む。
901:通信デバイスは、ターゲットフローの最初のパケットから、各受信パケット内の5タプルに基づきN回のハッシュ計算を実行して、各パケットに対して実行されたN回のハッシュ計算の結果であるビットシーケンス内のN個のビットを決定し、このとき、ビットシーケンスは、通信デバイスの記憶空間に基づいた統合により得られる。
ここでのビットシーケンスは、通信デバイスの記憶空間に基づいた統合により得られる。通信デバイスは、通信デバイスの全記憶空間を連続的なビットシーケンスに統合することが理解され得る。
連続的なビットシーケンスを生成するために、本願は生成方法を提供するが、その生成方法に限られない。
方法において、記憶空間はX個のデータ構造を含み、各データ構造はYビットであり、目標は、X×Yサイズのビットシーケンスを生成することであり、オペレーションクエリのために使用されてよい、と仮定される。例えば、通信デバイスには4K使用のエントリ空間があり、エントリ空間内のエントリは64ビットを占有する。この場合に、X=4,000であり、ここでY=64であり、4,000×64の連続的なビットシーケンスが得られる。
これに基づき通信デバイスが各受信パケット内の5タプルに基づきN回のハッシュ計算を実行することは、次のように理解され得る:N個のハッシュ関数が通信デバイスにおいて前もって設定され、例えば、Nは3、4又は5であり、各ハッシュ関数の入力(キー)はパケット内の5タプルであり、ハッシュ計算の後に求められる計算結果(値)は、ビットシーケンス内の位置として理解され得る。このように、N個のビットが求められる。
ターゲットフロー内の各パケットを受信する場合に、通信デバイスは、N個のハッシュ関数に基づきパケットに対してN回のハッシュ計算を実行して、N個のハッシュ計算結果を取得し得る。次いで、通信デバイスは、N個のハッシュ計算結果に基づきビットシーケンス内のN個の異なるビットを決定し得る。
いくつかの実施形態で、各パケットに対して実行されたN回のハッシュ計算の結果であるビットシーケンス内のN個のビットが決定される場合に、パケットごとに求められたハッシュ計算結果の値が2つの部分に分けられ得るならば、値の一部は、データ構造を決定するために1乃至Xにマッピングされ、値の他の方法は、データ構造内のビットを決定するために1乃至Yにマッピングされる。
5タプルは、パケットで運ばれる送信元IPアドレス、あて先IPアドレス、送信元ポート番号、あて先ポート番号、及びプロトコル番号を含む。
ステップ901に対応して、図10参照すると、スイッチはターゲットフローfのパケットを受信し始め、N個のハッシュ関数に基づき計算を実行する、と仮定される。iはi番目のハッシュ関数を表し、iの初期値は1であり、値は1からNまでの範囲をとる。gi(f)のiは、i番目のハッシュ関数を表し、gi(f)は、i番目のハッシュ関数に基づいてターゲットフローf内のパケットに対して計算が実行されることを示し、Ci[gi(f)]は、ハッシュ関数gi(f)を使用することによってターゲットフローf内のパケットがビットにマッピングされるビット値を表し、ビット値は0又は1である。
902:通信デバイスは、各パケットに対してハッシュマッピングを実行することによって得られるN個のビットに夫々対応する確率計算様式に基づき、N個のビットに夫々対応するビット値を決定する。
ビットシーケンスに対応する各パケットのN個のビットが決定される場合に、各ビットの独立した確率Pに基づき、ビットのビット値が0又は1であることが決定され得る。N個のビットのうちのいずれか1つの値が既に1である場合には、通信デバイスは、そのビットの値には如何なる演算も実行しなくてよい。N個のビットのうちのいずれか1つの値が0である場合には、通信デバイスはそのビットの値を0から1に更新してもよい。
例えば、確率計算様式において、データ構造内のy番目のビットの値が0から1に更新される必要があると決定される場合に(1≦y≦Y)、データ構造は、2のy乗としてマークされてよい。例えば、上記の64ビットエントリについては、15番目のビットの値が0から1に更新される必要がある場合に、エントリは要件を満足するよう215=32768だけ増える必要がある。
図10のプロセスに基づき、Ci[gi(f)]=1?は、i番目のハッシュ関数に基づき計算される、現在受信されているパケットのビット値が、1であるかどうかが決定されることを示す。Ci[gi(f)]=1である場合に、処理は実行されず、次のハッシュ関数に従って計算が続けて実行される。つまり、i=i+1が実行される。Ci[gi(f)]≠1である場合には、確率Pに従って計算が実行される必要があり、Ci[gi(f)]の値は0又は1に設定される。
次いで、確率計算後に求められた値が1であるかどうかが引き続き決定され、つまり、Ci[gi(f)]=1?が引き続き実行あれ、確率計算後に求められた値が依然として0である場合には、パケットはマークされない。確率計算後に求められた値が依然として1である場合には、次のハッシュ関数に従って計算が続けて実行される。つまり、i=i+1が実行される。
この場合に、i<m+1?が決定され、N番目のハッシュ関数が実行されたかどうかを示し、mはNに相当する。N番目のハッシュ関数が実行されている場合に、i<m+1であるならば、次のハッシュ関数の計算が続けて実行される。i≧m+1であり、N個のビットの値が全て1であるならば、パケットはエレファントフローパケットとしてマークされる。
903:通信デバイスは、ターゲットフローの第1パケットに対応するN個のビットのビット値が全て1であると決定し、第1パケットをエレファントフローパケットとしてマークする。ターゲットフローの第2パケットに対応するN個のビットのビット値が全て1であるわけではないと決定する場合には、通信デバイスは第2パケットをマークしない。
例えば、Nが3である場合に、3回のハッシュ計算が第1パケットの5タプルに従って実行された後に求められる3つのビットの値が全て1であるならば、第1パケットはエレファントフローパケットである。代替的に、3回のハッシュ計算が第2パケットの5タプルに従って実行された後に求められる3つのビットの値が全て1であるわけではないならば、第2パケットはマークされない。
904:ネットワーク輻輳が起きると決定する場合に、通信デバイスは第1パケットの転送レートを更新し、このとき、更新された転送レートは、更新されていない転送レートを下回る。代替的に、ネットワーク輻輳が起きると決定する場合に、通信デバイスは第1パケットを破棄する。
このステップの実施は、ステップ706のそれと同様である。
従って、本願では、フローのパケットがビットシーケンス様式においてマークされる場合に、連続的なビットシーケンスが構成され、動作は、既存のデータ構造でビットシーケンスに実行され、エレファントフロー及びマウスフロー識別が、確率マーキング及び多重ハッシュ方式でパケットに実行される。ハッシュテーブルの使用におけるそれと比較して、記憶に必要なエントリ空間はより効率的に使用され、処理可能なフローの量の上限は増え、エレファントフロー及びマウスフローを識別する効率は優れている。
実施例2によってもたらされる有利な効果を更に説明するために、本願は、説明のためのマーキング比率テストモデルを提供する。
このモデルでは、400個のエレファントフロー及び8,000個のマウスフローが存在する、と仮定される。通信デバイスでのビットシーケンスは、2K×16sビット=32,000ビットである。
パケットをマークするために使用される確率Pは0.005であり、ハッシュの回数Nは5である、と仮定される。通信デバイスは、受信されたフロー内の全てのパケットをカウントし、それらのパケットに対する、エレファントフローパケットとしてマークされるパケットの比率をテストし得る。表2はテスト結果を示す。
表2から、エレファントフローでは、エレファントフローパケットのマーキング比率は80%を超え、マウスフローでは、エレファントフローパケットのマーキング比率は0.3%に満たない、ことが分かる。
従って、本願では、エレファントフロー及びマウスフローは、限られたリソースの場合には、ビットシーケンス様式で区別され得る。8,400個のフローの識別において、ほんの32,000ビットの空間が使用される。平均して、フローごとに5ビットに満たない空間が使用され、識別効果は良好である。
上記の機能を実装するために、通信デバイスは、機能を実行するための対応するハードウェア及び/又はソフトウェアモジュールを含むことが理解され得る。本明細書で開示される実施形態を参照して説明される例の中のアルゴリズムステップは、本願ではハードウェア又はハードウェアとコンピュータソフトウェアとの組み合わせによって実装され得る。機能がハードウェア又はコンピュータソフトウェアによって駆動されたハードウェアによって実行されるかどうかは、技術的解決法の特定のアプリケーション及び設計制約に依存する。当業者は、記載されている機能を、実施形態を参照して特定のアプリケーションごとに実装するために、異なる方法を使用し得るが、実施が本願の範囲を越えることは考えられるべきではない。
この実施形態では、通信デバイスは、上記の方法の例に基づき機能モジュールに分割されてもよい。例えば、各機能モジュールは、各対応する機能に基づき分割により取得されてもよく、あるいは、2つ以上の機能が1つの処理モジュールに一体化されてもよい。上記の一体化されたモジュールは、ハードウェアの形で実装されてもよい。留意すべきは、この実施形態では、モジュールへの分割は例であり、論理的な機能分割にすぎない点である。実際の実施では、他の分割方法が使用されてもよい。
各機能モジュールが各対応する機能に基づき分割により取得される場合に、図11は、上記の実施形態における通信デバイス110の可能な構成の概略図である。図11に示されるように、通信デバイス110は、カウントユニット1101、マーキングユニット1102、輻輳処理ユニット1103、及び更新ユニット1104を含み得る。
カウントユニット1101は、通信デバイス110がステップ701、ステップ702、など、及び/又は本明細書で記載される技術の他のプロセスを実行するのをサポートするよう構成されてよい。
マーキングユニット1102は、通信デバイス110がステップ702、ステップ704、など、及び/又は本明細書で記載される技術の他のプロセスを実行するのをサポートするよう構成されてよい。
輻輳処理ユニット1103は、通信デバイス110がステップ705、706、など、及び/又は本明細書で記載される技術の他のプロセスを実行するのをサポートするよう構成されてよい。
更新ユニット1104は、通信デバイス110がステップ707、など、及び/又は本明細書で記載される技術の他のプロセスを実行するのをサポートするよう構成されてよい。
留意すべきは、上記の方法の実施形態におけるステップの全部の関連する内容が、対応する機能モジュールの機能説明で引用されてもよい点である。詳細はここで再び記載されない。
この実施形態で提供される通信デバイス110は、フローを識別するための上記の方法を実行するよう構成されるので、上記の実施方法と同じ効果を達成することができる。
集積ユニットが使用される場合に、通信デバイス110は処理モジュール、記憶モジュール、及び通信モジュールを含み得る。処理モジュールは、通信デバイス110の動作を制御及び管理するよう構成されてよく、例えば、通信デバイス110がカウントユニット1101、マーキングユニット1102、輻輳処理ユニット1103、及び更新ユニット1104によって実行されるステップを実行するのをサポートするよう構成されてよい。記憶モジュールは、通信デバイス110がプログラムコード、データなどを記憶するのをサポートするよう構成されてよい。通信モジュールは、通信デバイス110が他のデバイスと通信する、例えば、端末デバイスと通信し、端末デバイスからパケットを受信することをサポートするよう構成されてよい。
処理モジュールはプロセッサ又はコントローラであってよい。プロセッサは、本願で開示される内容を参照して記載される様々な例示的な論理ブロック、モジュール、及び回路を実装又は実行してよい。プロセッサは、代替的に、コンピューティング機能を実装するプロセッサの組み合わせ、例えば、1つ以上のマイクロプロセッサの組み合わせ又はデジタル信号プロセッサ(digital signal processing,DSP)とマイクロプロセッサとの組み合わせであってもよい。記憶モジュールはメモリであってよい。通信モジュールは、具体的に、無線周波数回路、Bluetoothチップ、又はWi-Fiチップなどの、他の電子デバイスと相互作用するデバイスであってよい。
実施形態において、処理モジュールがプロセッサであり、記憶モジュールがメモリであり、通信モジュールがトランシーバである場合に、この実施形態の電子デバイスは、図12に示される構造を備えているスイッチであってよい。
各機能モジュールが各対応する機能に基づき分割により取得される場合に、図13は、上記の実施形態における通信デバイス130の可能な構成の概略図である。図13に示されるように、通信デバイス130は、ビット決定ユニット1301、ビット値決定ユニット1302、マーキングユニット1303、及び輻輳処理ユニット1304を含み得る。
ビット決定ユニット1101は、通信デバイス130がステップ901、及び/又は本明細書で記載される技術の他のプロセスを実行するのをサポートするよう構成されてよい。
ビット値決定ユニット1302は、通信デバイス130がステップ902、など、及び/又は本明細書で記載される技術の他のプロセスを実行するのをサポートするよう構成されてよい。
マーキングユニット1303は、通信デバイス130がステップ903、など、及び/又は本明細書で記載される技術の他のプロセスを実行するのをサポートするよう構成されてよい。
輻輳処理ユニット1304は、通信デバイス130がステップ904、など、及び/又は本明細書で記載される技術の他のプロセスを実行するのをサポートするよう構成されてよい。
留意すべきは、上記の方法の実施形態におけるステップの全部の関連する内容が、対応する機能モジュールの機能説明で引用されてもよい点である。詳細はここで再び記載されない。
この実施形態で提供される通信デバイス130は、フローを識別するための上記の方法を実行するよう構成されるので、上記の実施方法と同じ効果を達成することができる。
集積ユニットが使用される場合に、通信デバイス130は処理モジュール、記憶モジュール、及び通信モジュールを含み得る。処理モジュールは、通信デバイス130の動作を制御及び管理するよう構成されてよく、例えば、通信デバイス130がビット決定ユニット1301、ビット値決定ユニット1302、マーキングユニット1303、及び輻輳処理ユニット1304によって実行されるステップを実行するのをサポートするよう構成されてよい。記憶モジュールは、通信デバイス130がプログラムコード、データなどを記憶するのをサポートするよう構成されてよい。通信モジュールは、通信デバイス130が他のデバイスと通信する、例えば、端末デバイスと通信し、端末デバイスからパケットを受信することをサポートするよう構成されてよい。
処理モジュールはプロセッサ又はコントローラであってよい。プロセッサは、本願で開示される内容を参照して記載される様々な例示的な論理ブロック、モジュール、及び回路を実装又は実行してよい。プロセッサは、代替的に、コンピューティング機能を実装するプロセッサの組み合わせ、例えば、1つ以上のマイクロプロセッサの組み合わせ又はDSPとマイクロプロセッサとの組み合わせであってもよい。記憶モジュールはメモリであってよい。通信モジュールは、具体的に、無線周波数回路、Bluetoothチップ、又はWi-Fiチップなどの、他の電子デバイスと相互作用するデバイスであってよい。
実施形態において、処理モジュールがプロセッサであり、記憶モジュールがメモリであり、通信モジュールがトランシーバである場合に、この実施形態の通信デバイス130も、図12に示される構造を備えているスイッチであってよい。
本願の実施形態は、1つ以上のプロセッサ及び1つ以上のメモリを含む電子デバイスを更に提供する。1つ以上のメモリは1つ以上のプロセッサへ結合される。1つ以上のメモリは、コンピュータプログラムコードを記憶するよう構成される。コンピュータプログラムコードはコンピュータ命令を含む。1つ以上のプロセッサがコンピュータ命令を実行する場合に、電子デバイスは、上記の実施形態における、フローを識別する方法を実装するように、上記の関連する方法ステップを実行することができる。
本願の実施形態は、コンピュータ可読媒体を更に提供する。コンピュータ可読記憶媒体はコンピュータ命令を記憶している。コンピュータ命令が電子デバイスで実行される場合に、電子デバイスは、上記の実施形態における、フローを識別する方法を実装するように、上記の関連する方法ステップを実行することができる。
本願の実施形態は、コンピュータプログラム製品を更に提供する。コンピュータプログラム製品がコンピュータで実行される場合に、コンピュータは、電子デバイスによって実行される上記の実施形態における、フローを識別する方法を実装するように、上記の関連する方法ステップを実行することができる。
加えて、本願の実施形態は装置を更に提供する。装置は具体的に、チップ、コンポーネント、又はモジュールであってよい。装置は、接続されているプロセッサ及びメモリを含み得る。メモリは、コンピュータ実行可能命令を記憶するよう構成される。装置が作動する場合に、プロセッサは、チップが、電子デバイスによって実行される上記の方法の実施形態における、フローを識別する方法を実行することを可能にするように、メモリに記憶されているコンピュータ実行可能命令を実行してよい。
実施形態で提供される通信デバイス、コンピュータ可読記憶媒体、コンピュータプログラム製品、又はチップは、上記の対応する方法を実行するよう構成される。従って、通信デバイス、コンピュータ可読記憶媒体、コンピュータプログラム製品、又はチップによって達成可能な有利な効果については、上記の対応する方法での有利な効果を参照されたい。詳細はここで再び記載されない。
上記の実施の記載に基づき、記載の容易さ及び簡潔さのために、上記の機能モジュールの分割は記載のための例にすぎないことが、当業者によって理解され得る。実際のアプリケーションでは、上記の機能は、要件に従った実施のために異なる機能モジュールに割り当てられてもよく、つまり、装置の内部構造は、上記の機能の全部又は一部を実装するために、異なる機能モジュールに分割される。
本願で提供されるいくつかの実施形態では、開示されている装置及び方法は他の様態で実装されてもよいことが理解されるべきである。例えば、記載されてる装置の実施形態は一例にすぎない。例えば、モジュール又はユニットへの分割は論理的な機能分割にすぎず、実際の実施の間には他の分割であってもよい。例えば、複数のユニット又はコンポーネントが他の装置に結合又は一体化されてもよく、あるいは、いくつか機能は無視されても又は実行されなくてもよい。その上、表示または議論されている相互の結合又は直接的な結合若しくは通信接続は、何らかのインターフェースを通じて実装されてもよい。装置またはユニット間の間接的な結合又は通信接続は、電気的な、機械的な又は他の形式で実装されてもよい。
別個の部分として記載されているユニットは、物理的に分離していてもいなくてもよく、ユニットとして表示されている部分は、1つ以上の物理的ユニットであってもよく、1つの場所に位置付けられてもよく、あるいは、複数の異なる場所に分散されてもよい。ユニットの一部又は全部は、実施形態の解決法の目的を達成するために実際の要件に基づき選択されてよい。
その上、本願の実施形態における機能ユニットは1つの処理ユニットに一体化されてもよく、ユニットの夫々は物理的に単独で存在してもよく、あるいは、2つ以上のユニットが1つのユニットに一体化されてもよい。上記の一体化されたユニットは、ハードウェアの形で実装されてよく、あるいは、ソフトウェア機能ユニットの形で実装されてもよい。
ソフトウェア機能ユニットの形で実装されて、独立した製品として販売又は使用される場合に、一体化されたユニットは、読み出し可能な記憶媒体に記憶されてもよい。そのような理解に基づき、本願の実施形態における技術的解決法は本質的に、あるいは、従来技術に寄与する部分、又は技術的解決法の全部若しくは一部は、ソフトウェア製品の形で実装されてもよい。ソフトウェア製品は、記憶媒体に記憶され、デバイス(単一チップマイクロコンピュータ、チップ、などであってよい)又はプロセッサ(processor)に、本願の実施形態における方法のステップの全部又は一部を実行するように指示するための複数の命令を含む。上記の記憶媒体は、USBフラッシュドライブ、リムーバブルハードディスク、リードオンリーメモリ(read only memory,ROM)、ランダムアクセスメモリ(random access memory,RAM)、磁気ディスク、又は光ディスクなどの、プログラムコードを記憶することができる如何なる媒体も含む。
上記の内容は、本願の具体的な実施にすぎず、本願の保護範囲を制限する意図はない。本願で開示されている技術的範囲内で当業者が容易に考え付く如何なる変形又は置換も、本願の保護範囲に入るべきである。従って、本願の保護範囲は、特許請求の範囲の保護範囲に従うべきである。
可能な設計において、ターゲットフローの受信パケットの数量が第1閾値以上であると決定する場合に、通信デバイスが、第1閾値を超えるパケットから開始して、カウントがmの倍数であるパケットをマークすることは、ターゲットフローの受信パケットの数量が第1閾値に等しいと決定する場合に、通信デバイスが、ターゲットフローがエレファントフローの候補であると決定することを含む。通信デバイスは、第1閾値を超えるパケットから開始して、カウントが2pであるパケットをマークし、ここで、m=2pであり、pは1以上の数である。例えば、p=3であるとき、カウントが104、112、120、128、などであるパケットがマークされてよく、つまり、スイッチは、受信された104番目のパケット、112番目のパケット、120番目のパケット、128番目のパケット、などをマークすると理解され得る。
可能な設計において、第2フィルタリング方式で使用されるデータ構造はスケッチデータ構造である。第2フィルタリング方式で、引き続き受信されるパケットをカウントすることは、第2フィルタリング方式が、引き続き受信されるパケットを、d個のハッシュ関数を使用することによってw×d個のカウンタにマッピングするために使用され、w×d個のカウンタのカウント結果の中の最小値が、現在受信されているパケットの数量として決定されることを含み、ここで、w及びdは1よりも大きい整数である。具体的に言えば、スイッチによって受信されるパケットの数量が第2閾値以上であるならば、第2層のフィルタリングが実行され、第2フィルタリング方式が第2層フィルタリングで使用される。このようにして、パケットが第2段階のフィルタリングに入り、第2段階のフィルタリングで設定されている第3閾値に達する場合に、パケットは連続的にマークされる。フローが大きいほど、フローにおけるパケットの総量のうち、マークされたパケットの総量が多いことを示す。このように、エレファントフローパケットは、スイッチのエントリ記憶空間の利用を改善するよう、サンプリングされ、階層的な処理はハッシュ衝突を減らすことができる。
可能な設計において、第2フィルタリング方式で使用されるデータ構造はスケッチデータ構造である。カウントユニットは特に、第2フィルタリング方式で、引き続き受信されるパケットを、d個のハッシュ関数を使用することによってw×d個のカウンタにマッピングし、w×d個のカウンタのカウント結果の中の最小値を現在受信されているパケットの数量として決定するよう構成され、ここで、w及びdは1よりも大きい整数である。
第3の態様に従って、通信装置が提供される。装置は少なくとも1つのプロセッサを含む。少なくとも1つのプロセッサはメモリへ接続される。少なくとも1つのプロセッサは、装置が第1の態様又は第1の態様の可能な設計のいずれか1つに従う方法を実行することを可能にするように、メモリに記憶されているプログラムを読み出して実行するよう構成される。
702:ターゲットフローの受信パケットの数量が第1閾値以上であると決定する場合に、通信デバイスは、第1閾値を超えるパケットから開始して、カウントがm、つまり(λ
2 )の倍数であるパケットをマークし、このとき、mは2以上の整数である。
例えば、501番目のパケットから開始して、501番目のパケットが1番目の受信パケットと見なされる場合に、引き続き受信されるパケットは、CMスケッチを使用することによってカウントされる。パケットの計算結果の中で、min(C1[g1(f)]、C2[g2(f)]、・・・、Cd[gd(f)]]であるならば、min(C1[g1(f)]、C2[g2(f)、・・・、Cd[gd(f)]]≧λ4かつλ4=50であるならば、引き続き受信されるパケットは、50番目のパケットからマークされてよい。実際に、受信されるパケットは550番目のパケットから連続的にマークされ得るとも理解することができる。