IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 日本電信電話株式会社の特許一覧

特許7396469トラフィックモニタリング装置、方法及びプログラム
<>
  • 特許-トラフィックモニタリング装置、方法及びプログラム 図1
  • 特許-トラフィックモニタリング装置、方法及びプログラム 図2
  • 特許-トラフィックモニタリング装置、方法及びプログラム 図3
  • 特許-トラフィックモニタリング装置、方法及びプログラム 図4
  • 特許-トラフィックモニタリング装置、方法及びプログラム 図5
  • 特許-トラフィックモニタリング装置、方法及びプログラム 図6
  • 特許-トラフィックモニタリング装置、方法及びプログラム 図7
  • 特許-トラフィックモニタリング装置、方法及びプログラム 図8
  • 特許-トラフィックモニタリング装置、方法及びプログラム 図9
  • 特許-トラフィックモニタリング装置、方法及びプログラム 図10
  • 特許-トラフィックモニタリング装置、方法及びプログラム 図11
  • 特許-トラフィックモニタリング装置、方法及びプログラム 図12
  • 特許-トラフィックモニタリング装置、方法及びプログラム 図13
  • 特許-トラフィックモニタリング装置、方法及びプログラム 図14
  • 特許-トラフィックモニタリング装置、方法及びプログラム 図15
  • 特許-トラフィックモニタリング装置、方法及びプログラム 図16
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-12-04
(45)【発行日】2023-12-12
(54)【発明の名称】トラフィックモニタリング装置、方法及びプログラム
(51)【国際特許分類】
   H04L 43/0876 20220101AFI20231205BHJP
【FI】
H04L43/0876
【請求項の数】 6
(21)【出願番号】P 2022514890
(86)(22)【出願日】2020-04-14
(86)【国際出願番号】 JP2020016372
(87)【国際公開番号】W WO2021210056
(87)【国際公開日】2021-10-21
【審査請求日】2022-09-30
(73)【特許権者】
【識別番号】000004226
【氏名又は名称】日本電信電話株式会社
(74)【代理人】
【識別番号】100119677
【弁理士】
【氏名又は名称】岡田 賢治
(74)【代理人】
【識別番号】100160495
【弁理士】
【氏名又は名称】畑 雅明
(74)【代理人】
【識別番号】100115794
【弁理士】
【氏名又は名称】今下 勝博
(72)【発明者】
【氏名】間野 暢
(72)【発明者】
【氏名】築島 幸男
(72)【発明者】
【氏名】日比 智也
(72)【発明者】
【氏名】市川 潤紀
【審査官】大石 博見
(56)【参考文献】
【文献】特開2013-207748(JP,A)
【文献】特開2006-5402(JP,A)
【文献】特開2010-50600(JP,A)
【文献】米国特許出願公開第2014/0153571(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 43/0876
(57)【特許請求の範囲】
【請求項1】
ネットワークにおけるトラフィックをモニタリングする装置であって、
ネットワーク内のフローごとに、計測に用いるメタデータ及びフロー情報を記録するメモリを備え、
ネットワーク内を流れるパケットを用いてトラフィックの状況を予測し、
前記メモリにおける前記メタデータ及び前記フロー情報の記録対象領域を、予測したトラフィックの状況に基づいて設定する、
トラフィックモニタリング装置。
【請求項2】
パケットを受信し、受信したパケットから前記メタデータ及び前記フロー情報を抽出するパケット受信部と、
前記フロー情報から前記メモリの記録対象領域を検索し、検索した記録対象領域に前記メタデータ及び前記フロー情報を記録するフローデータ記録部と、
前記メモリに記録されている前記メタデータ及び前記フロー情報を外部に出力し、前記メモリに記録されている前記メタデータ及び前記フロー情報を初期化するフローデータ出力部と、
前記パケット受信部の受信したパケットから取得可能な情報を用いて、未来のトラフィックの状況を予測するトラフィック特徴量計算部と、
前記メモリにおける前記記録対象領域を、前記トラフィック特徴量計算部の予測したトラフィックの状況に基づいて設定するフローデータ配置方法決定部と、
を備え、
前記フローデータ記録部は、前記フローデータ配置方法決定部の設定に従い、フロー情報から前記メモリの記録対象領域を検索し、
前記フローデータ出力部は、前記フローデータ配置方法決定部の設定に従い、前記メモリに記録されている前記メタデータ及び前記フロー情報を読み出す、
請求項1に記載のトラフィックモニタリング装置。
【請求項3】
前記メモリの記録対象領域は、キャッシュメモリ上に構築されているハッシュテーブルであり、
前記フローデータ配置方法決定部は、
(i)前記メタデータ及び前記フロー情報を、フローごとに異なるキャッシュラインに配置する第1の配置方法、
(ii)前記メタデータ及び前記フロー情報を、各キャッシュラインに隙間なく敷き詰める第2の配置方法、
(iii)前記メタデータ及び前記フロー情報を、2つのキャッシュラインに分離して配置されるフローよりも1つのキャッシュラインに配置されるフローが多くなるように配置する第3の配置方法、
のいずれかのなかから、キャッシュラインのアクセス回数が最小になるものを選択する、
請求項2に記載のトラフィックモニタリング装置。
【請求項4】
ネットワークにおけるトラフィックをモニタリングするトラフィックモニタリング装置が実行するトラフィックモニタリング方法であって、
前記トラフィックモニタリング装置は、ネットワーク内のフローごとに、計測に用いるメタデータ及びフロー情報を記録するメモリを備え、
ネットワーク内を流れるパケットを用いてトラフィックの状況を予測し、
前記メモリにおける前記メタデータ及び前記フロー情報の記録対象領域を、予測したトラフィックの状況に基づいて設定する、
トラフィックモニタリング方法。
【請求項5】
前記トラフィックモニタリング装置は、
一定時間間隔で、前記メモリに記録されている前記メタデータ及び前記フロー情報を外部に出力し、前記メモリに記録されている前記メタデータ及び前記フロー情報を初期化し、
前記メモリに記録されている前記メタデータ及び前記フロー情報の初期化を契機に、前記メモリにおける前記メタデータ及び前記フロー情報の記録対象領域を、予測したトラフィックの状況に基づいて設定する、
請求項4に記載のトラフィックモニタリング方法。
【請求項6】
ネットワークにおけるトラフィックをモニタリングするトラフィックモニタリング装置が実行するトラフィックモニタリングプログラムであって、
前記トラフィックモニタリング装置は、ネットワーク内のフローごとに、計測に用いるメタデータ及びフロー情報を記録するメモリを備え、
ネットワーク内を流れるパケットを用いてトラフィックの状況を予測し、
前記メモリにおける前記メタデータ及び前記フロー情報の記録対象領域を、予測したトラフィックの状況に基づいて設定する、
各ステップを前記トラフィックモニタリング装置に実行させるためのトラフィックモニタリングプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、単位時間当たりの多量なトラフィックに対するIPフローの計測を高速に処理するための技術である。
【背景技術】
【0002】
IP(Internet Protocol)ネットワークにおいてトラフィック計測は日々の管理、運用、課金に必要な技術であるとともに設備計画、収容設計、トラフィックエンジニアリングやセキュリティ対応に必要な情報を提供する重要なタスクである。IPフロー計測は代表的なIPトラフィック計測のひとつである。フロー毎のパケット数やバイト数などの統計量を計測する。例えば、NetFlow、sFlow、ipfixなどである。ここでフローとは観測の粒度でありIPアドレスペア(送信元アドレス、宛先アドレス)であったり、IP5タプル(送信元IPアドレス、宛先IPアドレス、プロトコル番号、送信元ポート、宛先ポート)などである。IP5タプルは、5Tupleと表記することがある。
【0003】
IPフロー計測では受信パケット毎にパケットがどのフローに属するかを識別し対応するカウンタを更新する。高速なトラフィックに対しては、このカウンタ更新も高速に処理する必要がある。
【先行技術文献】
【非特許文献】
【0004】
【文献】Pat Jr, Morin. “Open Data Structures.” AU Press Athabasca University, 2013. http://www.aupress.ca/index.php/books/120226
【発明の概要】
【発明が解決しようとする課題】
【0005】
IPネットワークのトラフィック計測である、IPフローの計測では、一定時間間隔でフローごとの統計量を計測し、メモリ上のハッシュテーブルに記録した後にハードディスクに格納し、次の一定時間間隔のフローを計測することを繰り返して行う。パケットを受信してハッシュテーブルにフロー情報を記録するためには、メモリ上のハッシュテーブルの記録対象となる領域を検索する必要がある。この検索の際のCPU(Central Processing Unit)とメモリの間のデータ転送は、ハッシュテーブルの複数byteの領域単位であるキャッシュラインごとに行われるため、ハッシュテーブルに格納されるデータのメモリ配置およびメモリの占有率によってはデータ転送回数が多くなりIPフローの記録に時間がかかる場合がある。このようなIPフロー計測の処理速度がパケットの到着速度よりも遅い場合にはパケットの記録漏れが発生し、正しいフロー情報が計測できないという問題があった。
【0006】
本開示は、時系列的に変化する高速なトラヒックに対応したIPフローを計測可能にすることを目的とする。
【課題を解決するための手段】
【0007】
本開示に係るトラフィックモニタリング装置は、パケット受信部、フローデータ記録部、フローデータ出力部に加えて、過去に計測されたフロー数の時系列データから次の計測区間でのトラフィックの状況を予測するトラフィック特徴量計算部と、予測されたトラフィックの状況からメモリアクセス数が小さくなるメモリ配置方法を選定するフローデータ配置方法決定部と、を備える。
【0008】
具体的には、本開示に係るトラフィックモニタリング装置は、
ネットワークにおけるトラフィックをモニタリングする装置であって、
ネットワーク内のフローごとに、計測に用いるメタデータ及びフロー情報を記録するメモリを備え、
ネットワーク内を流れるパケットを用いてトラフィックの状況を予測し、
前記メモリにおける前記メタデータ及び前記フロー情報の記録対象領域を、予測したトラフィックの状況に基づいて設定する。
【0009】
具体的には、本開示に係るトラフィックモニタリング方法は、
ネットワークにおけるトラフィックをモニタリングするトラフィックモニタリング装置が実行するトラフィックモニタリング方法であって、
前記トラフィックモニタリング装置は、ネットワーク内のフローごとに、計測に用いるメタデータ及びフロー情報を記録するメモリを備え、
ネットワーク内を流れるパケットを用いてトラフィックの状況を予測し、
前記メモリにおける前記メタデータ及び前記フロー情報の記録対象領域を、予測したトラフィックの状況に基づいて設定する。
【0010】
具体的には、本開示に係るトラフィックモニタリングプログラムは、本開示に係るトラフィックモニタリング装置に備わる各機能部をコンピュータに実現させるためのプログラムであり、本開示に係るトラフィックモニタリング方法に備わる各ステップをコンピュータに実行させるためのプログラムである。
【発明の効果】
【0011】
本開示によれば、過去のIPフローの履歴に基づいて次の計測区間での最適なメモリ配置を決定してIPフローの計測を行うため、時系列的に変化する高速なトラヒックに対応したIPフロー計測を実現することができる。
【図面の簡単な説明】
【0012】
図1】IPv4ペアをキーにもつハッシュテーブルの一例である。
図2】線形探索によるオープンアドレス法によるハッシュ値の衝突の解決の一例である。
図3】ハッシュテーブルにおける課題の説明図である。
図4】IPv4 5Tuple 毎のパケット数(8Byte)を配置する際のキャッシュラインと要素サイズの一例である。
図5】キャッシュライン単位でのデータ配置の一例である。
図6】メモリ領域に敷き詰める配置の一例である。
図7】本開示に係る装置構成の一例である。
図8】中間的な配置の一例である。
図9】IPv4 5Tuple計測のメモリアクセス回数の一例である。
図10】IPv6 Pair の Unpackedな配置の一例である。
図11】IPv6 Pair の Packedな配置の一例である。
図12】IPv6 Pair の PartialPackedな配置の一例である。
図13】IPv6 Pair 計測のメモリアクセス回数の一例である。
図14】IPv6 5Tuple の Unpackedな配置の一例である。
図15】IPv6 5Tuple の Packedな配置の一例である。
図16】IPv6 5Tuple 計測のメモリアクセス回数の一例である。
【発明を実施するための形態】
【0013】
以下、本開示の実施形態について、図面を参照しながら詳細に説明する。なお、本開示は、以下に示す実施形態に限定されるものではない。これらの実施の例は例示に過ぎず、本開示は当業者の知識に基づいて種々の変更、改良を施した形態で実施することができる。なお、本明細書及び図面において符号が同じ構成要素は、相互に同一のものを示すものとする。
【0014】
(概要)
代表的なIPトラフィック計測であるIPフローの計測を高速トラフィックに対して実現するにはパケット受信毎にカウンタを高速に更新する必要がある。汎用サーバで高速なIPフロー計測の実現には、カウンタ更新処理のメモリアクセス回数の削減が必要である。IPフロー計測で用いるフロー情報を記録するデータ構造においてメモリ配置をトラヒック状況に応じて変更することでメモリアクセス回数を削減する手法を提案する。本開示ではメモリへの記録に際してハッシュテーブルを用いる例を示すが、本開示はカウンタ更新処理を行う任意のメモリに適用可能である。
【0015】
1.ハッシュテーブル
ハッシュテーブル[例えば非特許文献1参照。]は高速なIPフロー計測に用いられるデータ構造である。ハッシュテーブルは、key及びvalueのペアを効率良く保存、更新するデータ構造を有する。ハッシュテーブルは、フローをkeyに、カウンタをvalueとしてハッシュテーブルを利用することでフロー情報を記録、更新する。ハッシュテーブルは、検索、挿入、更新がO(1)で実現できるため高速な記録、更新ができる。ハッシュテーブルの処理を高速化することでIPフローの計測が高速に実現できる。
【0016】
ハッシュテーブルはkeyのハッシュ値を計算し、対応するメモリアドレスにvalueを保存する(図1)。ハッシュ値はハッシュ関数によって計算される。ハッシュ関数は入力を固定長の0-1ビット列に変換する関数である。ハッシュ関数の例は、Cyclic redundancy check(CRC)、SHA-1、MurmurHash などである。
【0017】
図1はIPv4で定められる送信元アドレスと宛先アドレスのペアをキーにもつハッシュテーブルの例である。異なるkeyが同じハッシュ値をもつこと(ハッシュ値の衝突)があるので、ハッシュテーブルにはvalueとともにkeyを保存しておく。
【0018】
ハッシュ値の衝突が発生した場合の対処方法はおおきく2つ存在する。具体的には、オープンアドレス法及びチェイン法である。チェイン法は、各ハッシュ値に対応したリストを用意しておき、ハッシュ衝突の際にはそのリストに追加する。
【0019】
オープンアドレス法は、各ハッシュ値に固定長配列を用意し、ここに直接keyとvalueのペアを格納する。ハッシュ衝突の際には配列の中の空き要素に格納する。空き要素がない場合の処理は様々な手法が提案されているが、線形探索によるオープンアドレス法では、次のハッシュ値に対応する配列の空き要素に格納する(図2)。もし、ここにも空き要素がない場合はさらに次のハッシュ値に対応する配列を調べる。
このように隣接する配列から空き要素を線形に探索していく。
【0020】
図2では要素Aと要素Bが同じハッシュ値をもちハッシュ値の衝突が発生している要素Bの本来の格納場所には既に要素Aが格納されている。次のハッシュ値(2進数表記では10)に対応する場所に要素Bが格納されている。
【0021】
2.課題
高速なIPフロー計測を実現するためには、使用可能なメモリ量に限りがあるなかで、キャッシュラインを考慮したメモリアクセス回数が小さくなるようなハッシュテーブルが必要である。
【0022】
高速なIPフロー計測を実現するためには、ハッシュテーブルにおける性能ボトルネックであるメモリアクセスを削減する必要がある。これはCPUの処理速度に比べてメモリアクセス速度が相対的に遅いためである。汎用サーバは階層的なメモリ構成となっており、複数のキャッシュメモリとメインメモリから構成されている。キャッシュメモリは容量が小さいが高速、メインメモリは容量が大きいが低速である。
【0023】
本開示では以下の状況を想定する。
・ハッシュテーブルのkeyとvalueのペアはいずれもキャッシュメモリ上に存在せず、それ以外のデータは全てキャッシュメモリ上に存在する。
・大量のIPフローを計測する。
・キャッシュメモリの容量が小さく、大量のIPフローにそれぞれに対応する大量のkeyとvalueペアは大部分がキャッシュメモリに格納することができない。
・メインメモリへのアクセスをメモリアクセス回数とする。
・キャッシュメモリは高速にアクセスできるためメインメモリアクセスが処理時間の大部分を占める。
【0024】
ハッシュ値の衝突がなければカウンタ更新はひとつのkeyとvalueのペアを取得するためのメモリアクセスで十分である。例えば、挿入時ハッシュ値が衝突しなければ、ハッシュ値に対応するkeyとvalueのペアは空であるから、そのペアに記録して挿入処理は終了である。
【0025】
一方でハッシュ値が衝突した場合は空のkeyとvalueペアを探すために、2つ以上のkeyとvalueペアにアクセスする必要がある。例えば、図2では要素Aと要素Bが同じハッシュ値1をもち、ハッシュ値が衝突している。要素Aが挿入された後に要素Bを挿入する際はハッシュ値1に対応するkeyとvalueのペアとその隣りのハッシュ値2に対応するkeyとvalueのペアに2つにアクセスする必要がある。
【0026】
したがって、ハッシュ値の衝突回数や衝突時の処理に必要なメモリアクセスを削減する必要がある。
【0027】
メモリアクセスを削減する際には次の2点を考慮する必要がある。
(1)使用可能なメモリには限りがある。
ハッシュ空間のサイズが大きいほどハッシュ値の衝突確率は小さくなるが使用可能なメモリ量には限界があるためハッシュ空間を際限なく大きくすることはできない。
【0028】
(2)メモリアクセス回数はByte数から計算するのではなく、アクセスしたキャッシュラインの数となる。
CPUとメモリの間のデータ転送は1bit単位ではなく複数byteからなる領域単位で実行される(図3)。この単位はキャッシュラインまたはキャッシュブロックと呼ばれる。汎用サーバで利用されるIntel(登録商標)やAMD(Advanced Micro Devices)(登録商標)のCPUでは、この領域のサイズは64byteである。
【0029】
例えばデータが2つのキャッシュラインにまたがり格納されていた場合、そのデータを取得するのに必要なメモリアクセス回数は2回となる。図3はデータAが3行目のキャッシュライン、データBが3行目と4行目のキャッシュラインにまたがって格納されている。また、データC,Dが5行目のキャッシュラインに格納されている。データAにアクセスするにはキャッシュラインの転送は1回で十分だが、データBにアクセスするにはキャッシュラインの転送が2回必要となる。データCとデータDの両方にアクセスする場合でもキャッシュラインの転送は1回で十分となる。
【0030】
そこで、使用可能なメモリ量のなかでハッシュ衝突によるメモリアクセス回数を削減するようにkeyとvalueのペアを配置する手法が必要となる。
【0031】
3.開発技術の具体的な説明
開発技術はIPフロー計測で用いるフロー情報を記録するハッシュテーブルのメモリ配置をトラヒック状況に応じて変更することでメモリアクセス回数を削減する。トラフィックの状況は、メモリへの負荷に影響する任意の情報を考慮することが可能である。例えば、フロー情報を取得したパケットの数や観測した相異なるフローの数が例示できる。このほか、パケット長などのパケットから取得可能な任意の情報を用いてもよい。
【0032】
開発技術を説明するためにまず、ハッシュテーブルのデータのメモリ配置により、メモリアクセス回数、つまりキャッシュラインのアクセス回数が変化することを説明する。次に開発技術の全体像を説明する。最後に具体例として次のフロー毎にIPトラフィックを計測する場合のメモリ配置の変更方法について説明する。
・IPv4 5Tuple
・IPv6 Pair
・IPv6 5tuple
【0033】
ここで、IPv4 5Tupleは、IPv4で定められる5Tupleである。IPv4での送信元IPアドレスを「IPv4 src」と表記し、IPv4での宛先IPアドレスを「IPv4 dst」と表記し、送信元ポート番号を「Source port」と表記し、宛先ポート番号を「Destination port」と表記することがある。IPv6 5Tupleについても同様である。IPv6 Pairは、IPv6で定められる送信元アドレスと宛先アドレスのペアである。
【0034】
3.1 メモリ配置方法とメモリアクセス回数
ハッシュテーブルのデータのメモリ配置により、メモリアクセス回数、つまりキャッシュラインのアクセス回数が変化することを説明する。IPv4 5Tuple毎のパケット数を計測するIPフロー計測を考える(図4)。
【0035】
ハッシュテーブルのkeyとvalueは次のようになる。keyはフロー情報すなわちIPv4 5Tupleであり、16Byteの領域に記録する。valueはパケット数、ここでは64bit(8Byte)整数に記録するとする。このときkeyとvalueのサイズ合計は24Byteである。
【0036】
少なくとも、次の2通りのデータの配置方法がある。
第1の配置方法:キャッシュラインアクセスを小さくするためのキャッシュライン単位の配置方法(図5
第2の配置方法:メモリ領域を有効活用するために使用可能なメモリ領域に敷き詰める配置方法(図6
【0037】
3.1.1 第1の配置方法の説明(図5
64byteのキャッシュラインに対し、keyとvalueのサイズ合計は24Byteである。そこで、キャッシュラインアクセスを小さくするためのキャッシュライン単位の配置方法では、各キャッシュラインの先頭領域から2つの要素を配置する。これにより、どの要素も一つのキャッシュラインにアクセスすることで要素へアクセスできる。
各キャッシュラインの後方領域が未使用となっている。
使用可能なメモリ量がキャッシュラインに換算してN行の場合、ハッシュ空間は最大Nで、格納可能な要素数は最大2Nとなる。
【0038】
3.1.2 第2の配置方法の説明(図6
使用可能なメモリ領域に敷き詰める配置方法では、使用可能なメモリ領域に隙間なく要素を配置する。各キャッシュラインに未使用となっている領域はない。
複数のキャッシュラインにまたがって配置されている要素が存在するため、要素アクセスに複数回のメモリアクセスが必要となる場合がある。
使用可能なメモリ量がキャッシュラインに換算してN行の場合、ハッシュ空間は最大N/3で、格納可能な要素数は最大8N/3となる。
【0039】
3.1.3 メモリ配置とアクセス回数
例えば3番目の要素にアクセスするには、
第1の配置方法では2行目のキャッシュラインにのみアクセスすれば良い(図5)が、
第2の配置方法では1行目と2行目のキャッシュラインにアクセスする必要がある(図6)。
また、
ハッシュ空間は第1の配置方法が第2の配置方法より大きく、
格納できる要素数では第2の配置方法が第1の配置方法より大きい。
これらの理由から、同じ要素集合を挿入した場合でもメモリアクセス回数が異なる。定量的な差については後述する。
【0040】
3.2 開発技術の全体像
通常のIPフロー計測器が、パケットを受信し、フローデータを記録し、フローデータを出力するのに対して、本開示はトラヒック特徴量計算部とフローデータ配置決定部をさらに備える(図7)。まず、通常のIPフロー計測器の動作について説明し、その差分として開発技術の動作を説明する。
【0041】
3.2.1 従来技術の構成及び動作
通常のIPフロー計測器は、パケット受信部11、フローデータ記録部12、フローデータ出力部13から構成される。すなわち、図7においてトラフィック特徴量計算部14とフローデータ配置決定部15を備えない構成に相当する。ここでIPフロー計測とは一定時間間隔でフロー毎の統計量を計測、記録することとする。例えばIPv4ペア毎の通信量(バイト数)を計測し、10秒毎に直近10秒間に計測されたフロー情報を記録することなどである。また、フロー種別や統計量、時間間隔はネットワーク運用者が、管理するネットワークの特性、状況やそのとき必要としている情報などから決定する。
【0042】
パケット受信部11は、外部からパケットを受信する。そして受信したパケット毎にパケットヘッダを読み、フロー情報とパケットのメタデータを抽出する。抽出したフロー情報とメタデータをフローデータ記録部12に入力する。
【0043】
ここで、フロー情報は、パケットのフローを表す情報であり、パケットヘッダから取得可能な任意の情報を含む。フロー情報は、計測対象のフロー種別に応じて異なる。例えば、フロー種別がIPv4ペアである場合、フロー情報はIPv4の送信元アドレス及び宛先アドレスである。
【0044】
メタデータは、計測に用いるデータであり、パケットヘッダから取得可能な1以上の任意のデータを含む。例えば、フロー毎のデータ量を計測する場合、メタデータはパケットの長さである。
【0045】
フローデータ記録部12は、フロー情報とメタデータを受け取り、ハッシュテーブルからフローに対応するカウンタを更新する。具体的にはフローに対応するカウンタを検索し、存在する場合は対応するカウンタを更新し、存在しない場合はエントリを作成し、カウンタ値をメタデータに基づき設定する。例えばカウンタが通信量(バイト数)である場合、エントリが存在するときは以前のカウンタ値に現在のパケット長を加算し、エントリが存在しない場合はエントリを作成し、カウンタ値を受信したパケット長の値に設定する。このカウンタ更新処理速度がパケット到着速度よりも遅いとパケットの記録漏れが発生するため正しいフロー情報を計測できない。
【0046】
フローデータ出力部13は一定時間間隔でハッシュテーブルの全てのフローのエントリを読み取り、その内容を外部のデータベースやローカルの不揮発ディスクに書き込み永続化させる。これはハッシュテーブルが揮発メモリ上に保存されており、IPフローを計測するアプリケーションが終了すると不揮発メモリ上から削除されるためである。ハッシュテーブルが揮発メモリ上に保存されている理由は揮発メモリのほうが不揮発メモリに比べ高速だからである(例えばメインメモリとハードディスクのアクセス速度など)。フローデータ出力部13はフローデータを永続化後、ハッシュテーブルの全てのエントリをゼロクリア(初期化)し、次の計測に備える。
【0047】
3.2.2 本開示技術の構成及び動作
図7に、本開示に係るシステム構成の一例を示す。IPフロー計測器10は、本開示に係るトラフィックモニタリング装置として機能し、パケット受信部11、フローデータ記録部12、フローデータ出力部13、トラフィック特徴量計算部14、フローデータ配置決定部15を備える。本開示の装置はコンピュータとプログラムによっても実現でき、プログラムを記録媒体に記録することも、ネットワークを通して提供することも可能である。
【0048】
従来の方法ではハッシュテーブル上でのエントリ配置方法は一通りであったが、本開示のIPフロー計測器10は、トラフィック状況に応じて配置方法を変える。トラフィック特徴量計算部14は、トラフィックの状況を把握する。その結果に従い、フローデータ配置決定部15がハッシュテーブルのエントリ配置方法を決定する。その決定された配置方法に従い、フローデータ記録部12はハッシュテーブル上にエントリを配置する。またフローデータ出力部13も、決定された配置方法に従い、ハッシュテーブルのエントリを読出す。
【0049】
トラフィック特徴量計算部14における具体的な特徴量の計算方法は次節で説明する。次節ではフローの特徴量としてフロー数を採用し、次の計測間隔でのフロー数を予測し、その数に従いエントリの配置方法を決定している。以下ではIPv6 Pair毎の計測の場合を例として、トラフィック特徴量計算部14及びフローデータ配置方法決定部15の動作について説明する。
【0050】
トラフィック特徴量計算部14は、それぞれの計測間隔(例えば10秒毎など)でフローデータ出力部13によりハッシュテーブルがリセットされる直前にエントリ数を記録することで、それぞれの計測間隔中に計測されたフロー数のデータを蓄積する。このフロー数の時系列データから次のような典型的な統計的時系列予測手法を用いて、次の計測で出現するフロー数を予測する。予測結果であるフロー数をフローデータ配置決定部15に入力する。
【0051】
統計的時系列予測手法は、例えば、以下を用いることができる。
・直前の値を利用
・自己回帰モデル (autoregressive model)
・移動平均モデル (moving average model)
・自己回帰移動平均モデル (autoregressive and moving average model)
・自己回帰和分移動平均モデル (autoregressive, integrated and moving average model)
【0052】
フローデータ配置決定部15は、予測されるフロー数とUnpackedな配置方法が収容できる最大のフロー数を比較して、図13からメモリアクセス回数が小さくなる配置方法を決定する。Unpackedな配置方法が収容できる最大のフロー数は利用可能なメモリ量から計算できる。
【0053】
図13により、予測されるフロー数が『Unpackedな配置方法が収容できる最大のフロー数』の4割以下の場合はUnpackedな配置方法を選択し、それ以外の場合は PartialPackedな配置方法を選択する。この選択された配置方法をフローデータ記録部12とフローデータ出力部13に渡す。フローデータ記録部12では配置方法に従いエントリを配置し、フローデータ出力部13でも、同様に配置方法に従いエントリを読み取る。
【0054】
このようにトラヒックの特徴量にもとづいてハッシュテーブルのフローデータのハッシュテーブル上での配置方法を決定する。これらトラフィック特徴量計算部14及びフローデータ配置決定部15の追加により、トラヒック状況に応じてメモリ配置を変更することでメモリアクセス数を削減する。その他の場合の具体的なデータ配置方法については次節で説明する。
【0055】
3.3 具体的なデータ配置方法の決定
IPフロー計測におけるメモリ配置の決定方法について説明する。次の3種類のフロー毎に64bit整数に保存できる値(パケット数やバイト数など)を計測する場合について説明する。なお計測結果は一定時間毎に外部に出力し、その際計測データはゼロクリアされるものとする。
・IPv4 5Tuple
・IPv6 Pair
・IPv6 5tuple
【0056】
3.3.1 Ipv4 5Tuple毎の計測の場合
まず、3つのデータ配置方法について説明する。次に各配置の定量的なメモリアクセス回数比較について説明する。最後に、以上をふまえてデータ配置の決定方法について説明する。
【0057】
(データ配置方法)
メモリの配置方法として、前述した次の2つの方法に加えて、それらの中間的な方法を加え3つの配置方法について考える。
・第1の配置方法:キャッシュライン単位でのデータ配置(図5)。この場合、フローデータ記録部12は、各フローのフロー情報及びメタデータを、フロー情報ごとに異なるキャッシュラインに配置する。
・第2の配置方法:メモリ領域に敷き詰める配置(図6)。この場合、フローデータ記録部12は、各フローのフロー情報及びメタデータを隙間なく配置する。
・第3の配置方法:第1の配置方法と第2の配置方法の中間的な配置(図8)。この場合、フローデータ記録部12は、2つのキャッシュラインに分離して配置されるフローよりも1つのキャッシュラインに配置されるフローが多くなるように、各フローのフロー情報及びメタデータを配置する。
以降、簡単のため、第1の配置方法をUnpacked、第2の配置方法をPacked、第3の配置方法をPartialPackedと書く。
【0058】
(メモリアクセス回数)
図9は利用可能なメモリ領域が1GiB(1024Byte)の場合、つまりキャッシュラインの数に換算すると224行のキャッシュラインが利用可能な場合に相異なる一様ランダムな要素を連続でハッシュテーブルに挿入した際のキャッシュラインの追加アクセス回数である。挿入操作では必ず1回のキャッシュラインにアクセスするため、その1回を引いた値をプロットした。縦軸がキャッシュラインのアクセス回数で横軸は追加した要素数である。追加した要素数はUnpackedなメモリ配置で最大格納できる要素数を1とした割合で表記してある。Unpackedな配置が格納できる要素数が3つの配置方法のなかで最小であるためである。
【0059】
ここで、フロー情報の記録時には、(1)処理すべきパケットのIPに対応する要素がすでに記録されているかどうかの検索と、(2)記録されていない新たなIPの場合にハッシュテーブルの空いている領域を検索して記録する、という2つの処理を行う。そのため、ハッシュテーブルに記録されている要素が比較的少ない場合は(1)の検索を少ないアクセス回数で行えるUnpackedの方が有利である。一方、記録されている要素が多くなり、ハッシュテーブルの占有率が大きくなると、Unpackedでは(1)および(2)の処理においてより多くのキャッシュラインを検索する必要があるため、Packed又はPartial packedの方が検索するライン数が少なくなり有利になる。したがって、処理すべきパケットが増えるほどUnpackedの方がアクセス回数が増える。
【0060】
図9より挿入する要素数がUnpackedで格納できる最大数の7割以下の場合はUnpackedな配置が、それ以上ではPartialPackedな配置がメモリアクセス数を最小化していることが確認できる。
【0061】
(データ配置の決定方法)
過去のトラフィック特徴量の履歴から次の計測区間(計測結果出力から次の結果出力までの間)に観測されるフロー数を予測し、その値とUnpackedな配置で格納できる最大数と比較することでメモリアクセス数が最小となる配置を選択する。
【0062】
フロー数の予測には一般的な時系列予測が利用でき、例えば次のような方法が使用できる。
・直前の値を利用
・自己回帰モデル(autoregressive model)
・移動平均モデル(moving average model)
・自己回帰移動平均モデル(autoregressive and moving average model)
・自己回帰和分移動平均モデル(autoregressive, integrated and moving average model)
【0063】
図9より、予測結果がUnpackedで格納できる最大数の7割以下の場合はUnpackedな配置を利用して、それ以上の場合はPartialPackedな配置を利用する。
【0064】
3.3.2 IPv6 Pair毎の計測の場合
IPv4 5Tupleと同様に、まず、3つのデータ配置方法について説明する。次に各配置の定量的なメモリアクセス回数比較について説明する。最後に、以上をふまえてデータ配置の決定方法について説明する。
【0065】
(データ配置方法)
メモリの配置方法として、IPv4 5Tupleと同様に次の3つの配置方法について考える。
・第1の配置方法:キャッシュライン単位でのデータ配置、すなわちUnpackedな配置(図10
・第2の配置方法:メモリ領域に敷き詰める配置、すなわちPackedな配置(図11
・第3の配置方法:第1の配置方法と第2の配置方法の中間的な配置、すなわちPartialPackedな配置(図12
【0066】
(メモリアクセス回数)
図13は利用可能なメモリ領域が1GiB(1024Byte)の場合、つまりキャッシュラインの数に換算すると224行のキャッシュラインが利用可能な場合に相異なる一様ランダムな要素を連続でハッシュテーブルに挿入した際のキャッシュラインの追加アクセス回数である。挿入操作では必ず1回のキャッシュラインにアクセスするため、その1回を引いた値をプロットした。縦軸がキャッシュラインのアクセス回数で横軸は追加した要素数である。追加した要素数はUnpackedなメモリ配置で最大格納できる要素数を1とした割合で表記してある。Unpackedな配置が格納できる要素数が3つの配置方法のなかで最小であるためである。
【0067】
図13より挿入する要素数がUnpackedで格納できる最大数の4割以下の場合はUnpackedな配置が、それ以上ではPartialPackedな配置がメモリアクセス数を最小化していることが確認できる。
【0068】
(データ配置の決定方法)
過去のトラフィック特徴量の履歴から次の計測区間(計測結果出力から次の結果出力までの間)に観測されるフロー数を予測し、その値とUnpackedな配置で格納できる最大数と比較することでメモリアクセス数が最小となる配置を選択する。
【0069】
フロー数の予測には一般的な時系列予測が利用でき、例えば次のような方法が使用できる。
・直前の値を利用
・自己回帰モデル(autoregressive model)
・移動平均モデル(moving average model)
・自己回帰移動平均モデル(autoregressive and moving average model)
・自己回帰和分移動平均モデル(autoregressive, integrated and moving average model)
【0070】
図13より、予測結果がUnpackedで格納できる最大数の4割以下の場合はUnpackedな配置を利用して、それ以上の場合はPartialPackedな配置を利用する。
【0071】
3.3.3 IPv6 5Tuple毎の計測の場合
IPv4 5Tupleと同様に、まず、2つのデータ配置方法について説明する。次に各配置の定量的なメモリアクセス回数比較について説明する。最後に、以上をふまえてデータ配置の決定方法について説明する。
【0072】
(データ配置方法)
メモリの配置方法として次の2つの配置方法について考える。
・第1配置方法:キャッシュライン単位でのデータ配置、すなわちUnpackedな配置(図14
・第2配置方法:メモリ領域に敷き詰める配置、すなわちPackedな配置(図15
なお、IPv4 5Tuple及びIPv6 PairでのPartialPackedに相当する配置は、要素のサイズがキャッシュラインサイズに比べ大きいため、そのように配置することができない。
【0073】
(メモリアクセス回数)
図16は利用可能なメモリ領域が3GiB(3×1024Byte)の場合、つまりキャッシュラインの数に換算すると3×224行のキャッシュラインが利用可能な場合に相異なる一様ランダムな要素を連続でハッシュテーブルに挿入した際のキャッシュラインの追加アクセス回数である。挿入操作では必ず1回のキャッシュラインにアクセスするため、その1回を引いた値をプロットした。縦軸がキャッシュラインのアクセス回数で横軸は追加した要素数である。追加した要素数はUnpackedなメモリ配置で最大格納できる要素数を1とした割合で表記してある。Unpackedな配置が格納できる要素数が2つの配置方法のなかで最小であるためである。
【0074】
図16より挿入する要素数がUnpackedで格納できる最大数の4.5割以下の場合はUnpackedな配置が、それ以上ではPackedな配置がメモリアクセス数を最小化していることが確認できる。
【0075】
(データ配置の決定方法)
過去のトラフィック特徴量の履歴から次の計測区間(計測結果出力から次の結果出力までの間)に観測されるフロー数を予測し、その値とUnpackedな配置で格納できる最大数と比較することでメモリアクセス数が最小となる配置を選択する。
【0076】
フロー数の予測には一般的な時系列予測が利用でき、例えば次のような方法が使用できる。
・直前の値を利用
・自己回帰モデル(autoregressive model)
・移動平均モデル(moving average model)
・自己回帰移動平均モデル(autoregressive and moving average model)
・自己回帰和分移動平均モデル(autoregressive, integrated and moving average model)
【0077】
図16より、予測結果がUnpackedで格納できる最大数の4.5割以下の場合はUnpackedな配置を利用して、それ以上の場合はPackedな配置を利用する。
【0078】
4.本開示技術によって生じる効果
代表的なIPトラフィック計測であるIPフローの計測を高速トラフィックに対して実現するにはパケット受信毎にカウンタを高速に更新する必要がある。本開示技術により、カウンタ更新処理中のメモリアクセス回数が削減され、高速に処理が完了するため高速なトラフィックに対してもIPフロー計測が実現できる。
【0079】
(発明のポイント)
汎用サーバで高速なIPフロー計測を実現には、カウンタ更新処理のメモリアクセス回数を削減が必要である。これはCPUでの演算速度に比べメモリアクセス速度が相対的に遅いためである。フロー情報及びメタデータの配置方法には自由度があり、その配置方法と格納する要素数によりメモリアクセス回数が異なる。到着するフロー数を予測し、メモリ配置方法を変更することでメモリアクセス回数を削減することができる。
【0080】
(付記1)
受信したパケットからフロー情報とメタデータを抽出するパケット受信部と、
フロー情報からメモリのハッシュテーブルの記録対象領域を検索してフロー情報とメタデータを記録するフローデータ記録部と、
一定時間間隔でメモリのハッシュテーブルのすべてのエントリを読み取り、外部の記録媒体に書き込み永続化させるとともにメモリのハッシュテーブルを初期化するフローデータ出力部と、
過去に計測されたフロー数の時系列データから次の計測区間でのフロー数を予測するトラヒック特徴量計算部と、
フロー種別と予測された次の計測区間のフロー数からメモリアクセス数が最小となるメモリ配置方法を選定するフローデータ配置方法決定部と、
を備え、
フローデータ記録部とフローデータ出力部は、フローデータ配置方法決定部が選定したメモリ配置方法に従い機能することを特徴とするトラフィックモニタリング装置。
【0081】
(付記2)
パケット受信部が、受信したパケットからフロー情報とメタデータを抽出し、
フローデータ記録部が、フロー情報からメモリのハッシュテーブルの記録対象領域を検索してフロー情報とメタデータを記録し、
フローデータ出力部が、一定時間間隔でメモリのハッシュテーブルのすべてのエントリを読み取り、外部の記録媒体に書き込み永続化させるとともにメモリのハッシュテーブルを初期化するトラフィックモニタリング方法であって、
トラヒック特徴量計算部が、過去に計測されたフロー数の時系列データから次の計測区間でのフロー数を予測し、
フローデータ配置方法決定部が、フロー種別と予測された次の計測区間のフロー数からメモリアクセス数が最小となるメモリ配置方法を選定し、
前記フローデータ記録部及び前記フローデータ出力部は、前記フローデータ配置方法決定部が選定したメモリ配置方法に従い機能することを特徴とするトラフィックモニタリング方法。
【0082】
(付記3)
パケット受信部が、受信したパケットからフロー情報とメタデータを抽出し、
フローデータ記録部が、フロー情報からメモリのハッシュテーブルの記録対象領域を検索してフロー情報とメタデータを記録し、
フローデータ出力部が、一定時間間隔でメモリのハッシュテーブルのすべてのエントリを読み取り、外部の記録媒体に書き込み永続化させるとともにメモリのハッシュテーブルを初期化する、
トラフィックモニタリング装置としてコンピュータを機能させるためのトラフィックモニタリングプログラムであって、
トラヒック特徴量計算部が、過去に計測されたフロー数の時系列データから次の計測区間でのフロー数を予測し、
フローデータ配置方法決定部が、フロー種別と予測された次の計測区間のフロー数からメモリアクセス数が最小となるメモリ配置方法を選定し、
前記フローデータ記録部及び前記フローデータ出力部は、前記フローデータ配置方法決定部が選定したメモリ配置方法に従い機能する、
各ステップをコンピュータに実行させることを特徴とするトラフィックモニタリングプログラム。
【産業上の利用可能性】
【0083】
本開示は情報通信産業に適用することができる。
【符号の説明】
【0084】
10:トラフィックモニタリング装置
11:パケット受信部
12:フローデータ記録部
13:フローデータ出力部
14:トラフィック特徴量計算部
15:フローデータ配置決定部
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16