JP4814203B2 - フロー判定方法、通信装置及びプログラム - Google Patents

フロー判定方法、通信装置及びプログラム Download PDF

Info

Publication number
JP4814203B2
JP4814203B2 JP2007304414A JP2007304414A JP4814203B2 JP 4814203 B2 JP4814203 B2 JP 4814203B2 JP 2007304414 A JP2007304414 A JP 2007304414A JP 2007304414 A JP2007304414 A JP 2007304414A JP 4814203 B2 JP4814203 B2 JP 4814203B2
Authority
JP
Japan
Prior art keywords
data
comparison
flow
designated
fields
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2007304414A
Other languages
English (en)
Other versions
JP2009130686A (ja
Inventor
仁志 入野
勝 片山
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Priority to JP2007304414A priority Critical patent/JP4814203B2/ja
Publication of JP2009130686A publication Critical patent/JP2009130686A/ja
Application granted granted Critical
Publication of JP4814203B2 publication Critical patent/JP4814203B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Description

本発明は、インターネット、IPネットワークなどの複数の端末を相互に接続するネットワーク上における複数の拠点間の複数の通信を計測する方法に関し、特には、新規に発生したトラフィックが、既に発生したフローに属するか否かを判定するフロー判定方法、通信装置及びプログラムに関する。
インターネットで使われるIPには、プロトコル、ソースIPアドレス、宛先IPアドレスの情報が含まれ、また、一部のトランスポートプロトコルには、ソースポート、宛先ポートの情報が含まれる。
トラフィック計測技術の中で、これらのパケットが持つ情報を元に通信の種別を分類する方法がフロー計測(フロー判定)である。
フロー計測では、同一のプロトコル、同一のソースIPアドレス、同一の宛先IPアドレス、同一のソースポート、同一の宛先ポートなどの情報を持つパケットを、同一の通信に属するパケットと見なす。同一の通信に属するパケットの集合をフローと呼ぶ。フローのデータ量やパケット量を計測することで、複数の地点間で複数の通信サービスを監視することができる。
インターネット通信では、ルータにより経路制御が行われる。送信元から送出されたパケットは、複数のルータを経由することで送信先に到達する。ルータは、パケットのIPヘッダや場合によってはトランスポートレイヤーのヘッダを参照するため、上述のフローの分類をする機器としては適している。
ルータを通過したパケットのフロー情報を他の機器に通知する方法として、NetFlow(非特許文献1参照)やIPFIX(IP Flow Information Export)(非特許文献2参照)が知られている。
これらの方法では、フロー情報の送信装置の一つとして、ルータが想定されている。送信装置から送信されたフロー情報は、送信装置とネットワーク接続性がある受信装置にて受信される。
フロー情報には、例えば、送信元IPアドレス、宛先IPアドレス、送信元ポート、宛先ポート、プロトコル、フロー開始時間、フロー終了時間、バイトカウンタ、などの情報が含まれる。これらの各情報の項目は、NetFlowではフィールド、IPFIXではInformation Elementと呼ばれる。以下では、NetFlowにおけるフィールドと、IPFIXにおけるInformation Elementを、要素情報と総称する。
フロー情報をパケット化する方式としては、固定フォーマット方式とテンプレート定義方式の2方式がある。固定フォーマット方式では、フロー情報内に常に同一の要素情報が固定された並び方で並ぶ。テンプレート定義方式では、フロー情報に含める要素情報の番号を列挙してフォーマットが決められる。
既存のプロトコルでテンプレート定義方式を採用しているのは、NetFlow Version 9、IPFIXである。一方、NetFlow Version 1,5,8は、固定フォーマット方式を採用している。
テンプレート定義方式では、先ず、テンプレートと呼ばれる要素情報の番号及びその要素情報のサイズを列挙した情報を、送信装置が受信装置に送信する。テンプレートが受信側で受信された後、送信装置は、テンプレートで定義された要素情報の順序でフローのデータをパケット化し、受信装置に送信する。
テンプレート定義方式では、テンプレートの定義によってフロー情報に含める要素情報を変更できるため、個々のネットワーク構成やフロー情報の収集の個々の目的に適したフロー情報を送受信できる。
フローの送信装置では、テンプレートを決定するユーザからの入力によって、フローに含まれる要素情報、またフローを構成する条件となる要素情報が決定される。
フローを構成する条件となる要素情報に基づいて、観測されたパケットの該当するフィールドから情報(データ)が抜き出される。抜き出された情報は、その新規観測パケットが、新規フローか、既存フローかを判定するために、既存のフローの該当するフィールド内の情報と比較される。
一方で、テンプレートは自由に定義できるため、比較しなければならないフィールドは変更される。そのため、各フィールドは個別に比較される必要があった。
[平成19年10月7日検索]、インターネット<http://www.ietf.org/rfc/rfc3954.txt> [平成19年10月7日検索]、インターネット<http://www.ietf.org/internet-drafts/draft-ietf-ipfix-protocol-26.txt>
テンプレート定義方式は、固定フォーマット方式と比較して、情報の柔軟性を有す。その一方で、必要とする処理が増大し、処理効率面、計算機資源量利用効率面において劣る場合が発生する。
フロー情報の送信装置は、観測したパケットからフロー情報を作成し内部に保持する機能と、その内部のフロー情報をプロトコルに準じて送信する機能を有す。
フロー情報を作成し保持する機能において、固定フォーマット方式では、比較するパケットヘッダのフィールドが予め決まっているため、一意の比較処理で複数の要素情報を比較できる。
一方でテンプレート定義方式を採用した技術では、フローを構成するための条件となる要素情報を自由に変更(指定)できる。
この場合、各要素情報に対応したパケットヘッダのフィールド個々に関して比較を行う必要がある。そのため、固定フォーマットの比較処理に比べて処理回数が増大する。
本発明の目的は、テンプレート定義方式を用いたフロー判定において、フロー判定に必要な処理を簡略化することが可能なフロー判定方法、通信装置およびプログラムを提供することである。
本発明のフロー判定方法は、新規に観測されたパケットが既存のフローに属するかを判定する通信装置でのフロー判定方法であって、前記既存のフロー内の、当該既存のフローを規定するために任意に指定された複数の指定フィールドのそれぞれに登録されたデータを、蓄積手段に蓄積する蓄積ステップと、前記蓄積手段に蓄積されたデータと、前記新規に観測されたパケットのヘッダ情報に含まれるデータとを、前記指定フィールドごとに比較すると共に、少なくとも2つの前記指定フィールドでの比較を同時に行う比較ステップと、前記比較の結果に基づいて、前記新規に観測したパケットが前記既存のフローに属するかを判定する判定ステップと、を含む。
本発明の通信装置は、新規に観測されたパケットが既存のフローに属するかを判定する通信装置であって、前記既存のフロー内の、当該既存のフローを規定するために任意に指定された複数の指定フィールドのそれぞれに登録されたデータを蓄積する蓄積手段と、前記蓄積手段に蓄積されたデータと、前記新規に観測されたパケットのヘッダ情報に含まれるデータとを、前記指定フィールドごとに比較すると共に、少なくとも2つの前記指定フィールドでの比較を同時に行い、前記比較の結果に基づいて、前記新規に観測したパケットが前記既存のフローに属するかを判定する比較手段と、を含む。
本発明によれば、蓄積手段に蓄積されたデータと、新規に観測されたパケットのヘッダ情報に含まれるデータと、を比較する際に、既存のフローを規定するために任意に指定された複数の指定フィールドのうち、少なくとも2つの指定フィールドでのデータの比較を同時に行うため、フローの判定に必要な処理を簡略化することが可能になる。
以下、本発明の実施例を、図面を参照して説明する。
図1は、本発明の一実施例である、ネットワークトラヒックをフロー毎に分類して計測を行い、計測されたフロー情報の送信を行う通信装置を示したブロック図である。なお、図1では、パケット処理に関する部分の構成が示されている。
図1において、送信装置100は、ネットワークから観測されたパケットと、蓄積されたフローとを、テンプレート定義方式にしたがって比較し、その比較結果に基づいて、観測パケットが、新規フローか、蓄積されている既存フローかを判断する。
送信装置100は、ネットワークインタフェース(以下「NIC」と称する。)1と、パケット観測部(以下「観測部」と称する。)2と、フロー情報作成部(以下「作成部」と称する。)3と、フロー情報送出部(以下「送出部」と称する。)4とを含む。作成部3は、フロー情報蓄積部(以下「蓄積部」と称する。)3aと、新規観測パケット・既存フロー比較部(以下「比較部」と称する。)3bとを含む。
NIC(受付手段)1は、インターネット等のネットワークからパケットを受け付け、観測部2に提供する。
観測部(観測手段)2は、NIC1からのパケット、または、何らかの処理を経て出力される予定のパケットを受け付ける。観測部2は、受け付けられたパケットに対して、必要に応じてパケットサンプリングやフィルタリングを行い、新規に観測されたパケット(以下「新規観測パケット」と称する。)を抽出する。観測部2は、新規観測パケットを作成部3に提供する。
作成部(作成手段)3は、新規観測パケットに基づいて、フロー情報を作成する。
蓄積部(蓄積手段)3aは、フロー情報を蓄積する。例えば、蓄積部3aは、少なくとも、既存のフロー内の、その既存のフローを規定するために任意に指定された複数の指定フィールドのそれぞれに登録されたデータを、フロー情報として蓄積する。
フロー情報の作成処理は、比較部(比較手段)3bによって行われる。
比較部3bは、蓄積部3a内の既に観測された既存のフローと、観測部2から伝達された新規観測パケットとを、比較して、新規観測パケットが、新規フローか、既存フローかを判定する。
具体的には、既存のフローと新規観測パケットとの比較の結果が一致を示す場合、比較部3bは、新規観測パケットが既存フローであると判定する。また、既存のフローと新規観測パケットとの比較の結果が一致を示さない場合、比較部3bは、新規観測パケットが新規フローであると判定する。
比較部3bは、蓄積部3aに蓄積されたデータと、新規観測パケットのヘッダ情報に含まれるデータとを、既存のフローを規定するために任意に指定された指定フィールド(以下、単に「指定フィールド」と称する。)ごとに比較すると共に、少なくとも2つの指定フィールドでの比較を同時に行う。
また、比較部3bは、その比較の結果に基づいて、新規観測したパケットが既存のフローに属するかを判定する。
なお、蓄積部3aにフロー情報が蓄積されていない場合は、比較部3bは、新規観測パケットを必ず新規フローと判定する。
一方、蓄積部3aにフロー情報が蓄積されている場合、比較部3bは、比較結果に基づいて、新規観測パケットを、新規フローか、既存フローかに振り分ける。
新規観測パケットが新規フローに振り分けられた場合、比較部3bは、蓄積部3aに新たに新規フロー情報を登録する。
一方、新規観測パケットが既存フローに振り分けられた場合、比較部3bは、その既存フローの時間情報(フロー開始・終了時刻)やデータ量情報(バイト量・パケット量)等を更新する。
作成部3は、蓄積部3a内のフロー情報を、一定時間間隔で、または、ユーザの何らかの指示にしたがって、送出部4に提供する。
送出部4は、フロー情報を、プロトコルに準じたフォーマットで適切にパケット化して送信する。
図1には図示していないが、パケット処理に間接的に関連する機能部として、テンプレート設定、及びフロー構成条件の要素情報の設定などに用いるパラメータ等をユーザから受け付け、必要な情報を、図1に図示した各部に伝達する機能部(例えば、入力部)が存在する。
なお、図1に示した送信装置100は、CD−ROM、ハードディスクまたはメモリに記録されたプログラムに従って動作するコンピュータによって実現されてもよい。CD−ROM、ハードディスクまたはメモリは、一般的に、コンピュータにて読み取り可能な記録媒体と呼ぶことができる。この場合、NIC1を搭載したコンピュータは、そのプログラムを記録媒体から読み取り実行することによって、観測部2、作成部3、及び、送出部4として機能し、送信装置100が実現できる。
ここで、送信装置100の動作の概要を説明する。
送信装置100は、テンプレート定義方式を採用する。
ユーザから送信装置100への設定入力などによってフローの構成条件となる要素情報が決定された段階で、比較部3bは、要素情報に対応した、パケットヘッダのフィールドのビットマスク用のビットマップ(以下「マスク用ビットマップ」と称する。)を作成する。
例えば、比較部3bは、フローを構成するための条件となる要素情報に対応したパケットヘッダのフィールドの部分が有値(1)、それ以外の部分が無値(0)であるマスク用ビットマップを作成する。
また、比較部3bは、フローを構成するための条件を構成する複数の要素情報のそれぞれに対応する複数のパケットヘッダのフィールドの中で、先頭のヘッダフィールドの開始位置と、末尾のヘッダフィールドの終了位置を抽出し、その2つから比較対象の範囲を抽出する。
比較部3bは、比較対象の範囲において、新規観測パケットとマスク用ビットマップとの論理積演算を行い、その結果を、蓄積部3aに蓄積されている、既に観測されたパケットから作成された既存フローと比較する。
比較部3bは、その比較の結果に基づいて、新規観測したパケットが既存のフローに属するかを判定する。
図2は、IPFIXを例としてフロー情報のデータ構造を示した説明図である。
フロー情報の送信装置100は、不図示の受信装置に対して、フロー情報のデータよりも先にテンプレート情報を送信する。テンプレート情報は、フロー情報のデータ構造を示すために用いられる。
図2に示すように、テンプレートには、要素情報(Information Element)IDと、要素情報の長さが列挙される。
要素情報IDの各番号は、予め設定された意味を持つ。例えば、ID=8番は、sourceIPv4Addressとなり、送信元IPv4アドレスを意味する。
このIDは、テンプレートの定義では2バイトで表現され、続く2バイトにそのIDに対応するデータ長の情報が表現される。
図2で示した例では、例えば、ID=8:sourceIPv4Addressに対応するデータの長さは4バイトであり、ID=2:packetDeltaCount(パケット増分量)に対応するデータの長さは8バイトであることを示している。
要素情報の列挙順序は、フロー情報を送る際のデータの順序に相当する。即ち、フロー情報は、sourceIPv4Addressに対応するデータ、destinationIPv4Addressに対応するデータから始まり、flowStartSysUpTimeに対応するデータ、flowEndSysUpTimeに対応するデータで終わることを示している。
フロー情報のデータは、作成部3にて作成され、その後、送出部4にて、テンプレートの情報に基づいてパケット化されて送信される。
フローの構成条件となる要素情報の明示化は、付加的な情報(オプションテンプレートとオプションデータ)の付与によって可能となる。オプションテンプレートとオプションデータの関係は、通常のテンプレートとデータの関係に相当する。
図2の例では、flowKeyIndicatorという要素情報を用いて、フローの構成条件となる要素情報を示している。
図2のオプションデータでは、flowKeyIndicatorに対応するデータは1,2,3,4,8bit目が1(有値)になっているため、1,2,3,4,8番目の要素情報が、フローを構成する要素情報であることを示している。
即ち、この例では、先頭から1,2,3,4,8番目のsourceIPv4Address,destinationIPv4Address,sourceTransportPort,destinationTransportPort,protocolIdentifierが、フローを構成する要素情報であり、比較部3bは、これらの情報が同一のパケットを同一フローとしてみなす。
なお、フロー構成条件となる要素情報は、IPFIXの定義によるとFlow Keyと呼ばれる。
上述の通り、フロー構成条件となる要素情報をフロー毎に定義することが可能である。フロー構成条件となる要素情報は、比較部3bにおける比較対象の要素情報となり、フロー構成条件とならない要素情報は、その情報が収集されるだけとなる。
比較部3bは、観測されたパケットが新規フローか既存フローかを判定する場合に、観測されたパケットと蓄積部3a内のフロー情報について、フロー構成条件となる要素情報を全て比較していく必要がある。
従来は、この要素情報を、個別に順番に比較していた。
これに対して、本実施例では、比較部3bは、予め、新規観測パケットから、比較する部分(データ)を抽出するためのマスク用ビットマップを作成しておく。
比較部3bは、新規観測パケットにマスク用ビットマップをかけて、比較する複数の部分を抽出し、その抽出された複数の部分からなるデータを作成する。
比較部3bは、その作成されたデータと、蓄積部3a内のフロー情報と、を比較することにより、複数の要素情報のデータ(少なくとも、2つの要素情報のデータ)を同時に比較する。
本実施例の方式を適用する例を図3に示す。
なお、図3(a)、図3(b)及び図4の左側は、テンプレートに含まれる要素情報の列挙を示す。太線で囲まれた部分が、フロー構成条件となる要素情報である。右側は対応するパケットのフィールドを示す。太線で囲まれた部分が、フロー構成条件となる要素情報に対応するパケットフィールドとなる。以降の説明では、IPヘッダの先頭位置を0バイトと表記する。実際には、データリンク層プロトコルなどを監視の対象とする場合、この限りではない。
本実施例では、説明のためにIPヘッダのみを用いているが、実際にはIPヘッダより低位のレイヤ、高位のレイヤが含まれる。
また本方式では、比較部3bは、蓄積部3aにフロー情報として各要素情報内のデータを保持する場合に、パケットのヘッダフィールドの値をデータとしてそのまま用いる要素情報であれば、その要素情報のデータをヘッダのフォーマットに準じて保持する。一方、パケットヘッダに含まれない情報(時間・データ量等)を表す要素情報のデータの保持方法に関しては規定しない。
この領域は、フローデータ毎に確保される。
マスク用ビットマップも蓄積部3aに蓄積される。つまり、蓄積部3aには、マスク用ビットマップを保持するために必要な領域として、1フローを格納するために必要な領域と同等の領域が確保される。マスク用ビットマップは、比較部3bで利用され、テンプレート毎に必要となる。
フロー構成条件とならない要素情報は比較対象とならないため、比較部3bは、ヘッダフォーマットの構造のままフィールドを保持する場合に、フロー構成条件とならない要素情報に対応するフィールドを0(無値)とする。
但し、フロー構成条件とならない要素情報でも、収集対象となるパケットのヘッダに含まれるフィールドに対応する要素情報が存在する。これは、テンプレートの定義によって、あるテンプレート情報に含まれるが、構成条件として指定されなかった、パケットのヘッダに含まれるフィールドに対応する要素情報が該当する。
この場合、IPFIX定義によると、最初に観測されたパケットの該当フィールドの値を利用することが定義されている。そのため、その場合には、蓄積部3aは、別途フロー保持領域を確保し、最初に観測されたパケットのみ別途保持する。
本実施例の方式は先ず、比較部3bが、マスク用のビットマップを作成する。
マスク用のビットマップでは、フロー構成条件となる要素情報に対応するフィールドのビットに全て1が立てられる。
図3(a)の場合、構成条件として指定された要素情報は、IPヘッダの先頭から4バイト目までにのみ含まれている。このため、比較部3bは、マスク用のビットマップのうち、IPヘッダの先頭の4バイト目までに対応する部分を、0xf0ffffffとする。また、その開始オフセットは0バイト、終了オフセットは4バイトとなる。
ユーザからの入力において、テンプレート及び、フロー構成条件となる要素情報が決定された時点で、比較部3bは、マスク用ビットマップを作成する。
比較部3bは、新規観測パケットとマスク用ビットマップとの論理積を取る。比較部3bは、この論理積演算を行うことによって、新規観測パケットから、フロー構成条件となる要素情報のデータを抽出する。マスク用ビットマップ範囲外は比較対象にならない。従って、図3(a)の場合、比較対象となるのは、0バイトから4バイトになる。
例として、versionが4(0x4)、IHLが5(0x5)、ToSフィールドが0(0x00)、Total Lengthが20(0x0014)だった場合、0x45000014と0xf0ffffffの論理積により、0x40000014が算出される。
比較部3bは、この算出された値を、ヘッダフォーマットのまま蓄積されているフロー情報において、新規観測パケットの比較対象部分と同じ位置にあるフィールド(本例では0バイトから4バイト)と比較する。
既に蓄積されているフローは、ヘッダフォーマットを保持しており、かつ比較対象となっているフィールドのみ有値であり、それ以外は無値になっているため、比較部3bは、複数のフィールドのデータを、1回の比較において比較することができる。
1回の論理積演算及び比較に用いる範囲は、各アーキテクチャによって異なるが、そのアーキテクチャにおける最大のレジスタ幅に準じるのが効率が良い。
一般的には、32bitのCPUならば、32bitレジスタ、64bitのCPUならば、64bitレジスタとなる。
但し、SIMD演算用にレジスタが拡張されている場合(例:xmmレジスタ)などを含め、よりレジスタ幅の広いレジスタを持つ場合は、その限りでなく、演算可能な最大長のレジスタを用いるべきである。
但し、本方式を高級言語において、任意の範囲を比較することのできるデータ列比較関数等を利用して実装した場合は、関数呼び出しにかかるオーバーヘッドがあるため、必ずしも1回の比較範囲をレジスタ長に限定するわけではない。この場合は、複数回の呼び出しに対して1回の呼び出しに集約した方が効率が良い可能性が高い。
本実施例では、32bitのCPUアーキテクチャを前提とし、4バイトを1回の論理積演算及び比較に用いる範囲として説明する。また以降、1回の論理積演算及び比較に用いる範囲を1比較単位と表記する。
このため、本実施例では、比較部3bは、新規観測パケットを4バイト(1比較単位)ごとに分割して複数の分割データを生成し、分割データごとに、論理積演算及び比較を行う。
なお、マスク用ビットマップ作成及びその領域(オフセット値)の算出を行う際に、上記の開始オフセット及び終了オフセットが1比較単位で割り切れない場合、処理系の仕様によっては、開始オフセットは小数点以下切り捨て、終了オフセットは小数点以下切り上げてデータ演算の境界を調整する場合もある。
例えば、開始オフセットが3バイト目、終了オフセットが5バイト目ならば、1比較単位が4バイトで、新規観測パケットのデータ、既存フローのデータ、マスク用ビットマップがそれぞれデータ境界に合わせて開始しているとすると、比較部3bは、開始オフセットを0バイト、終了オフセットを8バイトのように変更する。
図3(b)の場合、比較対象開始位置が0バイト、終了位置が20バイトとなる。
この場合、比較部3bは、マスク用ビットマップを、4バイト(1比較単位)ごとに、0xf0ff0000,0x00000000,0x00000000,0x00000000,0xffffffffとする。
この場合、比較対象が存在しない4〜16バイトの部分は、比較を行う必要がなく、比較部3bは、マスク用ビットマップを作成した時に無値(0)となる部分に対応する新規観測パケットの分割データついては、論理積演算と比較の処理を行わない。これによって本方式の処理回数の軽減ができる。
図4に示す例の場合、1回の比較可能範囲において1つの要素情報しか存在しない。
この場合、従来の1つずつ要素情報を比較する方式と比べて比較の処理回数の軽減ができない。逆に、本方式は比較前に論理積演算を行うため、論理積演算を行う処理が増加する。従って図4の場合は、従来の方式を利用した方が効率が良い。
本発明比較方式と、従来の個別に比較する比較方式との、利用すべき方式の判断は、テンプレートが設定された時点で判断可能である。
テンプレートが設定された時点で、フロー構成条件となる要素情報の数が決定し、マスク用ビットマップを作成でき、何回比較を行うかが算出できる。
要素情報数が、比較回数を超えた場合は、本発明の比較方式を利用し、そうでない場合は従来の比較方式を利用すればよい。
図5は、本比較方式を説明するためのフローチャートである。
このフローチャートは、新規観測パケットと1フローとの比較処理を示しており、新規観測パケットが、新規フローか、既存フローかを判定するためには、個々の既存フローとの比較を繰り返す必要がある。この繰り返し回数は、既存フローの保持方法に依存する。例えばバランスの取れた平衡2分木で保持されている場合は、最大で木の深さと同等になるためlog2N(Nは既存フロー蓄積数)となる。繰り返しの最中で新規観測パケットが既存フローに属することが判定できた場合は、その時点で繰り返しは中断される。
以下、図5を参照して、本比較方式の動作例を説明する。
なお、蓄積部3aには、マスク用ビットマップを用いた論理積の演算結果にて示されたフロー情報が蓄積されているものとする。
ステップ501では、比較部3bは、ユーザからの入力に基づいて、テンプレート、及びフロー構成条件となる要素情報を決定する(例えば、図3及び図4参照)。
続いて、ステップ502では、比較部3bは、要素情報の数を算出する。なお、図3(a)の場合、要素情報の数は「3」である。図3(b)の場合、要素情報の数は「3」である。図4の場合、要素情報の数は「3」である。
続いて、ステップ503では、比較部3bは、テンプレート及び要素情報に基づいて、マスク用ビットマップを作成し、開始オフセット及び終了オフセットを算出する。なお、図3(a)の場合、開始オフセットは0バイト、終了オフセットは4バイトとなる。図3(b)の場合、開始オフセットは0バイト、終了オフセットは20バイトとなる。図4の場合、開始オフセットは0バイト、終了オフセットは20バイトとなる。
続いて、ステップ504では、比較部3bは、マスク用ビットマップおよび1比較単位(4バイト)に基づいて、比較回数を算出する。なお、図3(a)の場合、比較回数は「1」である。図3(b)の場合、比較回数は「2」である。図4の場合、比較回数は「3」である。
続いて、ステップ505では、比較部3bは、要素情報数が比較回数よりも大きいか判断する。要素情報数が比較回数以下である場合、比較部3bは、ステップ506を実行し、一方、要素情報数が比較回数よりも大きい場合、比較部3bは、ステップ507を実行する。
よって、図3(a)及び図3(b)の場合、比較部3bは、ステップ507を実行し、一方、図4の場合、比較部3bは、ステップ506を実行する。
ステップ506では、比較部3bは、従来の個別比較方式を実行する。なお、従来の個別比較方式についての詳細な説明は省略する。
ステップ507では、比較部3bは、オフセットに、開始オフセットを代入する。
続いて、ステップ508では、比較部3bは、オフセットが終了オフセットよりも小さいかを判断する。オフセットが終了オフセット以上である場合、比較部3bは、ステップ509を実行し、一方、オフセットが終了オフセットよりも小さい場合、比較部3bは、ステップ510を実行する。
ステップ509では、比較部3bは、新規観測パケットと既存の1フローとの比較を終了する。
ステップ510では、比較部3bは、新規観測パケットの比較位置を、新規観測パケットの先頭からオフセット分ずらした位置に設定する。
続いて、ステップ511では、比較部3bは、既存フローの比較位置を、既存フローの先頭からオフセット分ずらした位置に設定する。
続いて、ステップ512では、比較部3bは、マスク用ビットマップの論路積演算位置を、マスク用ビットマップの先頭からオフセット分ずらした位置に設定する。
続いて、ステップ513では、比較部3bは、マスク用ビットマップの比較位置から1比較単位分の部分(演算位置)が全て0でないか判断する。マスク用ビットマップの演算位置が全て0である場合、比較部3bは、ステップ514を実行し、一方、マスク用ビットマップの演算位置が全て0でない場合、比較部3bは、ステップ515を実行する。
ステップ514では、比較部3bは、オフセット値を1比較単位分増加する。比較部3bは、ステップ514を終了すると、処理をステップ508に戻す。
ステップ515では、比較部3bは、新規観測パケットのうち比較位置から1比較単位までの部分と、マスク用ビットマップのうち比較位置から1比較単位までの部分と、の論理積を実行し、その実行結果を、新規観測パケットのうち比較位置から1比較単位までの部分に代入する。この処理によって、新規観測パケットの1比較単位から、フローを構成する条件に相当する構成要素のデータが抽出される。
続いて、ステップ516では、比較部3bは、観測パケットと既存フローを比較する。この場合、1比較単位での比較となる。観測パケットと既存フローが一致すると、比較部3bは、ステップ514を実行し、一方、観測パケットと既存フローが一致しないと、比較部3bは、ステップ509を実行する。
図5に示した比較方式においてステップ516の判定の最終状態が「一致する」であった場合、新規観測パケットは、比較した既存フローに属することが判定できる。「一致しない」であった場合は、比較した既存フローに属さないため前記の通り本比較処理が繰り返される。
本実施例によれば、新規にパケットが観測されたときの動作として、論理積演算が増加するが、複数の要素情報の比較処理を1回の比較処理に集約することが可能になる。
これによって、低級(低水準)言語利用時には、同一レジスタで保持できるデータ内に複数の比較すべきヘッダフィールドが含まれる場合に、命令数が従来の個別比較方式と同値か少なくなる。
C言語等の高級言語において任意の範囲を比較することのできるデータ列比較関数等を利用した場合は、複数回の呼び出しが1回の呼び出しに減少する。
上述の論理積演算で利用するマスク用ビット列の作成とその比較対象範囲は、テンプレートによって決定されるため、テンプレートが変更または追加された場合のみ作成される。
従って、フロー情報の作成回数よりも非常に少なく、本実施例によって追加される初期動作(マスク用ビット列の作成と比較対象範囲の決定)にかかる時間は相対的に、無視できるほどに小さくなる。特にフロー量が多いネットワークほどその傾向にある。
以上からフローの構成条件となる要素情報が複数存在する場合に、フロー情報の作成に関わる処理回数が低減化され、処理が高速化可能となる。
本実施例によれば、比較部3bは、既存フローと新規観測パケットとのデータの比較において、既存のフローを規定するために任意に指定された複数の指定フィールドのうち、少なくとも2つの指定フィールドでのデータの比較を同時に行う。
このため、指定フィールドごとに、順番にデータを比較する場合よりも、フローの判定に必要な処理を簡略化することが可能になる。
また、本実施例では、比較部3bは、マスク用ビットマップと新規観測パケットとの論理積演算を行って、新規観測パケットから複数の指定フィールドのそれぞれのデータを抽出する。比較部3bは、その抽出結果と、蓄積部3aに蓄積された複数の指定フィールドのそれぞれのデータとを、指定フィールドごとに比較すると共に、少なくとも2つの指定フィールドでの比較を同時に行う。
この場合、マスク用ビットマップを用いることによって、新規観測パケットから複数の指定フィールドのそれぞれのデータを容易に抽出することが可能になる。
また、本実施例では、蓄積部3aは、既存のフローに含まれる複数の指定フィールドのそれぞれのデータのみを、パケット内でのフォーマットに準じて蓄積する。
この場合、蓄積部3a内のデータのフォーマットを、新規観測パケット内のデータのフォーマットと同じにできる。このため、データの比較を容易にすることが可能になる。
また、本実施例では、マスク用ビットマップは、複数の指定フィールドに対応するビットが全て1であり、他のビットが全て0である。
この場合、論理積演算が実行されることによって、新規観測パケットから複数の指定フィールドのデータのみを容易に抽出することが可能になる。
また、本実施例では、比較部3bは、新規観測パケットを1比較単位ごとに複数の分割データに分割し、各分割データのうち、マスク用ビットマップ中の対応箇所が全て0である分割データについては、論理積演算と比較を省略する。
この場合、新規観測パケットのうち、比較する必要のない部分について、不要な論理積演算と比較を省略することが可能になる。
以上説明した実施例において、図示した構成は単なる一例であって、本発明はその構成に限定されるものではない。
本発明の一実施例であるフロー情報の送信を行う通信装置を示したブロック図である。 IPFIXを例としてフロー情報のデータ構造を示した説明図である。 本実施例の方式を適用するテンプレート例を示した説明図である。 他のテンプレート例を示した説明図である。 本実施例の動作を説明するためのフローチャートである。
符号の説明
1 NIC
2 パケット観測部
3 フロー情報作成部
3a フロー情報蓄積部
3b 新規観測パケット・既存フロー比較部
4 フロー情報送出部
100 送信装置

Claims (5)

  1. 新規に観測されたパケットが既存のフローに属するかを判定する通信装置でのフロー判定方法であって、
    前記既存のフロー内の、当該既存のフローを規定するために任意に指定された複数の指定フィールドのそれぞれに登録されたデータを、蓄積手段に蓄積する蓄積ステップと、
    前記蓄積手段に蓄積されたデータと、前記新規に観測されたパケットのヘッダ情報に含まれるデータとを、前記指定フィールドごとに比較すると共に、少なくとも2つの前記指定フィールドでの比較を同時に行う比較ステップと、
    前記比較の結果に基づいて、前記新規に観測したパケットが前記既存のフローに属するかを判定する判定ステップと、を含み、
    前記比較ステップでは、前記複数の指定フィールドのそれぞれに登録されたデータを抽出するためのマスク用ビットマップと、前記新規に観測したパケットと、の論理積演算を行って、前記新規に観測したパケットから前記複数の指定フィールドのそれぞれに登録されたデータを抽出し、その抽出結果と、前記蓄積手段に蓄積された前記複数の指定フィールドのそれぞれのデータとを、前記指定フィールドごとに比較すると共に、少なくとも2つの前記指定フィールドでの比較を同時に行い、
    前記マスク用ビットマップは、前記複数の指定フィールドに対応するビットが全て1であり、他のビットが全て0であり
    前記比較ステップでは、前記新規に観測したパケットを複数の分割データに分割し、各分割データのうち、前記マスク用ビットマップ中の対応箇所が全て0である分割データについては、前記論理積演算と前記比較を省略する、フロー判定方法。
  2. 前記比較ステップでは、
    前記複数の指定フィールドの数が、前記複数の分割データのうち前記指定フィールドを含む分割データの数である比較回数よりも大きい場合には、前記論理積演算を行って、前記新規に観測したパケットから前記複数の指定フィールドのそれぞれに登録されたデータを抽出し、その抽出結果と、前記蓄積手段に蓄積された前記複数の指定フィールドのそれぞれのデータとを、前記指定フィールドごとに比較すると共に、少なくとも2つの前記指定フィールドでの比較を同時に行い、
    前記複数の指定フィールドの数が、前記比較回数以下である場合には、前記論理積演算を行うことなく、前記蓄積手段に蓄積されたデータと、前記新規に観測されたパケットのヘッダ情報に含まれるデータとを、前記指定フィールドごとに個別に比較する、請求項1に記載のフロー判定方法。
  3. 新規に観測されたパケットが既存のフローに属するかを判定する通信装置であって、
    前記既存のフロー内の、当該既存のフローを規定するために任意に指定された複数の指定フィールドのそれぞれに登録されたデータを蓄積する蓄積手段と、
    前記蓄積手段に蓄積されたデータと、前記新規に観測されたパケットのヘッダ情報に含まれるデータとを、前記指定フィールドごとに比較すると共に、少なくとも2つの前記指定フィールドでの比較を同時に行い、前記比較の結果に基づいて、前記新規に観測したパケットが前記既存のフローに属するかを判定する比較手段と、を含み、
    前記比較手段は、前記複数の指定フィールドのそれぞれに登録されたデータを抽出するためのマスク用ビットマップと、前記新規に観測したパケットと、の論理積演算を行って、前記新規に観測したパケットから前記複数の指定フィールドのそれぞれに登録されたデータを抽出し、その抽出結果と、前記蓄積手段に蓄積された前記複数の指定フィールドのそれぞれのデータとを、前記指定フィールドごとに比較すると共に、少なくとも2つの前記指定フィールドでの比較を同時に行い
    前記マスク用ビットマップは、前記複数の指定フィールドに対応するビットが全て1であり、他のビットが全て0であり、
    前記比較手段は、前記新規に観測したパケットを複数の分割データに分割し、各分割データのうち、前記マスク用ビットマップ中の対応箇所が全て0である分割データについては、前記論理積演算と前記比較を省略する、通信装置。
  4. 前記比較手段は、
    前記複数の指定フィールドの数が、前記複数の分割データのうち前記指定フィールドを含む分割データの数である比較回数よりも大きい場合には、前記論理積演算を行って、前記新規に観測したパケットから前記複数の指定フィールドのそれぞれに登録されたデータを抽出し、その抽出結果と、前記蓄積手段に蓄積された前記複数の指定フィールドのそれぞれのデータとを、前記指定フィールドごとに比較すると共に、少なくとも2つの前記指定フィールドでの比較を同時に行い、
    前記複数の指定フィールドの数が、前記比較回数以下である場合には、前記論理積演算を行うことなく、前記蓄積手段に蓄積されたデータと、前記新規に観測されたパケットのヘッダ情報に含まれるデータとを、前記指定フィールドごとに個別に比較する、請求項3に記載の通信装置。
  5. 請求項3または4に記載の通信装置をコンピュータで実現するためのプログラムであって、
    前記コンピュータを、
    前記通信装置が有する全手段として機能させるプログラム。
JP2007304414A 2007-11-26 2007-11-26 フロー判定方法、通信装置及びプログラム Active JP4814203B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007304414A JP4814203B2 (ja) 2007-11-26 2007-11-26 フロー判定方法、通信装置及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007304414A JP4814203B2 (ja) 2007-11-26 2007-11-26 フロー判定方法、通信装置及びプログラム

Publications (2)

Publication Number Publication Date
JP2009130686A JP2009130686A (ja) 2009-06-11
JP4814203B2 true JP4814203B2 (ja) 2011-11-16

Family

ID=40821160

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007304414A Active JP4814203B2 (ja) 2007-11-26 2007-11-26 フロー判定方法、通信装置及びプログラム

Country Status (1)

Country Link
JP (1) JP4814203B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5727058B1 (ja) * 2014-01-24 2015-06-03 エヌ・ティ・ティ・コミュニケーションズ株式会社 パケット転送装置、パケット処理方法、及びプログラム

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3381687B2 (ja) * 1999-11-25 2003-03-04 日本電気株式会社 フロー識別装置、フロー処理装置、フロー識別方法及びフロー処理方法

Also Published As

Publication number Publication date
JP2009130686A (ja) 2009-06-11

Similar Documents

Publication Publication Date Title
JP7035227B2 (ja) データパケット検出方法、デバイス、及びシステム
JP6571883B2 (ja) フロー情報解析装置、フロー情報解析方法及びフロー情報解析プログラム
JP4658098B2 (ja) フロー情報制限装置および方法
TWI683587B (zh) 用於唯一枚舉解析樹中的路徑的裝置和方法
US20120182891A1 (en) Packet analysis system and method using hadoop based parallel computation
JP5660198B2 (ja) ネットワークシステム、及びスイッチ方法
JP2007336512A (ja) 統計情報収集システム及び統計情報収集装置
JP2011146920A (ja) トポロジーツリー作成装置、プログラム、及び方法
JP6290849B2 (ja) トラフィック解析システムおよびトラフィック解析方法
US10523536B2 (en) Length control for packet header sampling
WO2020228527A1 (zh) 数据流的分类方法和报文转发设备
JP4814203B2 (ja) フロー判定方法、通信装置及びプログラム
CN102480503B (zh) P2p流量识别方法和装置
JP2007228217A (ja) トラフィック判定装置、トラフィック判定方法、及びそのプログラム
JP6662812B2 (ja) 計算装置及び計算方法
JP4729389B2 (ja) パターン照合装置、パターン照合方法、パターン照合プログラム及び記録媒体
WO2021095179A1 (ja) 振り分け装置、振り分け方法、振り分けプログラム
JP4871330B2 (ja) フロー判定方法、通信装置及びプログラム
Rosay et al. Study of Network IDS in IoT devices
JP7396368B2 (ja) 方法、システム及び変換装置
JP4669453B2 (ja) フロー情報処理装置および方法
Henke et al. Evaluation of header field entropy for hash-based packet selection
JP2015095768A (ja) 情報伝送装置、及びプログラム
JP5108816B2 (ja) フローサンプリング方法およびフローサンプリングシステム
JP3669683B2 (ja) フロー測定装置、フロー測定方法及び記録媒体

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100118

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110615

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110622

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110727

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110817

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110825

R150 Certificate of patent or registration of utility model

Ref document number: 4814203

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140902

Year of fee payment: 3

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350