現在位置: ホーム / ブログ / Agurim : フロー集約によるトラフィックモニタリング

Agurim : フロー集約によるトラフィックモニタリング

 NECOMAプロジェクトでは、異常の把握を容易にするためのトラフィックモニタリングツールの研究開発にも取り組んでいます。このツールは、他のツールで検出した異常の確認のためにも利用されています。

フロー集約

 トラフィックフローは5タプル属性(送信元アドレス、宛先アドレス、送信元ポート、宛先ポート、プロトコル)で表される多次元情報です。一般に、トラフィック中のフローの属性分布には偏りがあり、クラスタリングすることによって特徴的なグループを見つけることができます。つまり、フローを多次元空間で集約すれば、複数の個別フローからなる攻撃やスキャニングをまとめる事ができ、全体の傾向把握も容易になります(図1)。また、集約粒度を変えることで、必要に応じたフローの詳細を知ることができます。同様の考え方を時間方向にも適用することで、時間粒度の集約も可能です(図2)。しかし、多次元空間でのフロー集約には膨大なフロー空間探索が必要となるため、実用的なツールが存在しませんでした。

fig1.png

図1. 二次元空間でのフロー集約
(実際は五次元: src, dst, sport, dport, proto)

fig2.png

図2. 時間方向のフロー集約

Agurim: 二段階集約アルゴリズム

 Agurimは、柔軟で効率の良い多次元フロー集約ツールです。性能と柔軟性を両立させるために、二段階集約アルゴリズムを採用しています。基本となるアイデアは、いちど集約フロー情報を作ってしまえば、それを再集約するのは、フローの探索空間が大幅に減少するので、効率的に実行できるというものです。
 一次集約では、pcap、NetFlow、sFlowなどの生データから、再利用可能な集約フロー情報を生成します。ここでは、膨大なフローを効率良くクラスタリングするために、性能重視の近似アルゴリズムを用いています。
 二次集約では、ユーザの要求に応じてフロー空間の集約粒度と時間方向の集約粒度を調整して、柔軟な再集約を実現しています。さらに、5分、1時間、1日の時間粒度で再集約フロー情報を用意し、これらをさらに再集約することで、Webユーザインターフェイスからのインタラクティブな操作を実現しています。
 Agurimのプロトタイプ実装は、フローパーサ、一次集約エンジン、二次集約エンジン、Webユーザインターフェイスで構成されていて(図3)、オープンソースソフトウェアとして公開しています。



fig3.png

図3. Agurimシステムの構成

Agurim Webユーザインターフェイス

  集約フロー情報はWebブラウザ上でプロット表示されます(図4)。ホーム画面では、過去24時間の集約フロー情報が、バイト数で集約したプロットとパ ケット数で集約したプロットで表示されます。各集約フローの凡例は、集約フローの詳細を表していて、1行目は集約された送信元と宛先アドレスのペアが全体 に占める割合を、2行目以降はその集約フローのプロトコル内訳をやはり集約して示します。「*」はワイルドカードを表します。
 ユーザは、画面下部のボタンでズームや移動操作を行い、プルダウンメニューでデータセットの切り替えとプロトコル表示への切り替えができます。プロトコル表示では、プロトコルでフローを集約し、その内訳を集約アドレスで表示します。
 また、APIによるデータの取得も可能で、他のツールと連携することができます。

fig4.png
図4. Agurim Webユーザインターフェイス

左はバイト数、右はパケット数でのフロー集約

オープンデータセット

 WIDEプロジェクトでは、Agurimを2013年2月から運用していて、そのデータを使ったツールの利用を公開しています。ネットワーク運用者や研究者が、バックボーンのトラフィック状況の詳細をブラウズできるようにすることで、トラフィック情報の共有や研究の促進に貢献します。
 データセットならびにソースコードの情報は以下のサイトをご覧ください。
http://mawi.wide.ad.jp/~agurim/about.html

タグ: