以下、本発明の実施形態を図面を参照して説明する。
実施形態1.
図1は、本発明のループ検出システムの第1の実施形態の例を示すブロック図である。本発明のループ検出システムは、計測装置100と、ループ検出装置200とを備える。計測装置100は、ネットワーク内でパケットを転送するスイッチ300間に配置され、スイッチ300間で送受信されるパケットから情報を抽出する。また、計測装置100がスイッチ300により実現されていてもよい。すなわち、スイッチ300が、計測装置100としての動作も行う構成であってもよい。
複数のスイッチ300によりネットワークが形成され、複数のフローのパケットが各スイッチを経由して、宛先の装置まで転送される。ただし、ループフローが生じる場合もある。各スイッチ300は、パケットを転送するパケット転送装置と称してもよい。
計測装置100は、フローの計測を行う。ここで、「計測」とは、パケットから情報を抽出することを意味する。すなわち、計測装置100は、自身を通過するパケットから情報を抽出する。従って、計測装置100は、パケット情報抽出装置と称することもできる。計測装置100は、例えば、ルータによって実現される。
本実施形態において、ループ検出装置200は、計測装置100に接続され、計測装置100が抽出した情報に基づいてループパケットまたはループフローを検出する。以下の説明では、説明を簡単にするために、ループ検出装置200がループパケットを検出する場合を例に説明する。ループ検出装置200は、例えば、サーバコンピュータによって実現される。ループ検出装置200は、複数の計測装置100に接続されていてもよい。その場合、ループ検出装置200は、個々の計測装置100毎に処理を行う。また、ループ検出装置200と計測装置100とが同一の装置で実現されていてもよい。
ここで、各フローを識別する情報(以下、フロー識別子と記す。)について説明する。各フローは、例えば、送信側IPアドレス、受信側IPアドレス、送信側ポート番号、受信側ポート番号、送信側MAC(Media Access Control)アドレス、受信側MACアドレス、プロトコルID(プロトコルの識別情報)等のパラメータによって識別することができる。従って、上記の例示したパラメータのうちの1つ以上のパラメータの組み合わせをフロー識別子として用いることができる。なお、例示したパラメータの名称において、「送信側」とは「送信元」を意味し、「受信側」とは、「宛先」を意味する。以下の説明では、「送信側MACアドレスと受信側MACアドレスとの組」をフロー識別子とする場合を例示するが、他のパラメータの組み合わせをフロー識別子としてもよい。また、一つのパラメータをフロー識別子としてもよい。また、例示したパラメータ以外のパラメータをフロー識別子としてもよい。共通のフロー識別子を有するパケットは、同じフローのパケットである。
図2は、第1の実施形態における動作を示すフローチャートである。
計測装置100は、自身を通過するフローを計測する。すなわち、計測装置100は、自身を通過するパケットから情報を抽出する。そして、計測装置100は、抽出した情報をループ検出装置200に送信する(ステップS100)。このとき、計測装置100は、抽出した情報を、ループ検出装置200が受信可能なフォーマットに変換し、変換後の情報をループ検出装置200に送信する。
パケットから抽出され、ループ検出装置200で受信可能なフォーマットに変換された情報を計測情報と記し、符号MSRで表す。計測装置100は、sFlow,NetFlow,PSAMP,IPFIX等のxFlow技術のフォーマットに従って、パケットから抽出した情報に対してフォーマット変換を行う。計測装置100は、フルキャプチャでダンプした情報を用いて、計測情報MSRを作成してもよい。
計測情報MSRには、フロー識別子およびパケットのペイロードが含まれる。ただし、後述する第1の実施形態の変形例のように、フロー識別子およびパケットのTTL(Time-To-Live)を含むように計測情報MSRを作成してもよい。
本実施形態では、計測装置100がsFlowのフォーマットに従って計測情報MSRを作成する場合を例にして説明する。この場合、計測装置100は、受信したパケットの先頭128バイトの情報を抽出する。この情報には、フロー識別子およびパケットのペイロードが含まれる。
また、計測装置100は、計測情報MSRを周期的にループ検出装置100に送信する。
ループ検出装置200は、計測装置100から計測情報MSRを受信し、計測情報MSRに基づいて、ループパケットの有無を調査する。そして、ループ検出装置200は、ループパケットであると判定されるパケットがあるならば、そのパケットをループパケットとして検出する(ステップS200)。ステップS200において、ループ検出装置200は、計測情報MSRに含まれるフロー識別子を利用して、ループパケットの可能性のあるパケットを特定する。そして、ループ検出装置200は、そのパケットを対象として、計測情報MSRに含まれるフロー識別子およびペイロードを利用して、ループパケットであるか否かを判定する。
より詳細には、ループパケットの可能性のあるパケットを特定する処理で、ループ検出装置200は、受信した計測情報MSRに含まれるフロー識別子(本例では、送信側MACアドレスと受信側MACアドレスとの組)により、そのフロー識別子の抽出元のパケットを分類し、フロー識別子毎に、分類したパケットの数をカウントする。このフロー識別子毎のカウント結果は、計測装置100が観測したフロー毎のパケット数(すなわち、各フローの観測回数)を意味する。ループパケットは、ネットワーク内に滞留し続けているパケットであるので、ループパケットは計測装置100で複数回観測される可能性が高い。そのため、ループ検出装置200は、カウント結果の値が、予め定めた閾値(以下、候補特定用閾値と記す。)以上となったフローのパケットを、ループパケットの可能性があるパケットとして特定する。以下、ループパケットの可能性があるパケットを、ループパケット候補と記す。また、カウント結果の値が、候補特定用閾値以上になったフローは、ループフロー候補であるということができる。なお、ループフローは、ループパケットのフロー識別子によって特定されるフローである。
そして、ループ検出装置200は、ループパケット候補を対象として、ループパケットであるか否かを判定する処理では、ループパケット候補から抽出された計測情報MSRに含まれるフロー識別子およびペイロードを参照して、フロー識別子およびペイロードの組毎に、ループパケット候補を分類し、分類したループパケット候補の数をカウントする。このカウント結果は、計測装置100によるパケット毎(ループパケット候補毎)の観測回数を意味する。ループ検出装置200は、このカウント結果が、予め定めた閾値(以下、ループパケット判定用閾値と記す。)以上となっているループパケット候補を、ループパケットであると判定する。
このように、ステップS200において、まず、ループパケット候補を特定し、そのループパケット候補を対象にして、同じフロー識別子およびペイロードを含むループパケット候補の観測回数をカウントし、そのカウント結果からループパケットであるか否かを判定する。ループパケット候補(すなわち、フロー識別子およびペイロードを用いてパケット観測回数をカウントする対象)を定め、そのループパケット候補に関してのみペイロードの調査を行うので、全パケットに対してペイロードを調査する場合と比較して、メモリ使用量や計算量等の処理負荷を軽減することができる。
以下、各装置の構成例や動作例を詳しく説明する。
図3は、計測装置100の構成例を示すブロック図である。計測装置100は、計測を行う処理装置101を備える。処理装置101は、計測装置100自身を通過するパケットから情報をキャプチャするキャプチャ部110と、キャプチャ部110によってキャプチャされた情報に対してフォーマット変換を行うことによって計測情報MSRを作成する計測情報作成部120とを含む。キャプチャ部110および計測情報作成部120は、例えば、プログラムに従って動作するコンピュータのCPUによって実現される。この場合、計測装置100のプログラム記憶部(図示せず)がプログラムを記憶し、計測装置100のCPUがそのプログラムに従って、キャプチャ部110および計測情報作成部120として動作する。キャプチャ部110と計測情報作成部120がそれぞれ別のユニットで実現されていてもよい。
ステップS100(図2参照)において、キャプチャ部110は、計測装置100を通過するパケットから先頭の128バイトの情報をキャプチャする。すなわち、パケットから先頭の128バイトの情報を抽出する。この情報には、フロー識別子(送信側MACアドレスおよび受信側MACアドレス)とペイロードとが含まれている。なお、キャプチャ部110は、周期的にパケットから情報をキャプチャしてもよい。あるいは、ランダムにパケットを選び、そのパケットから情報をキャプチャしてもよい。
そして、計測情報作成部120は、キャプチャ部110がキャプチャした情報を、sFlowのフォーマットに変換することにより、計測情報MSRを作成する。計測情報作成部120は、作成した計測情報MSRを、一定期間毎にループ検出装置200に送信する。
本実施形態では、計測装置110とループ検出装置200との間の計測情報MSRの送受信にsFlowを適用する場合を例にしているが、NetFlow,PSAMP,IPFIX等の他の技術を適用してもよい。sFlow以外の技術を適用する場合、パケットから抽出される情報は、先頭の128バイトに限定されない。
図4は、ループ検出装置200の構成例を示すブロック図である。ループ検出装置200は、ループパケット候補の特定やループケットの判定を行う処理装置201と、記憶装置202とを備える。
処理装置201は、記憶装置202に対して書き込みや読み込みを行って、処理を進める。処理装置201は、受信部210と、分類部220と、検出部230とを含む。受信部210は、計測装置110が送信した計測情報MSRを受信する。分類部220は、ループパケット候補を特定する。検出部230は、ループパケット候補がループパケットであるか否かを判定し、ループパケットを検出する。
受信部210、分類部220および検出部230は、例えば、ループ検出プログラムに従って動作するコンピュータのCPUによって実現される。この場合、ループ検出装置200のプログラム記憶部(図示せず)がループ検出プログラムを記憶し、ループ検出装置200のCPUがそのループ検出プログラムに従って、受信部210、分類部220および検出部230として動作すればよい。この場合、処理装置201がCPUに相当する。また、受信部210、分類部220および検出部230が別々のユニットで実現されていてもよい。
記憶装置202は、例えば、RAM(Random Access Memory)やHDD(Hard Disk Drive)によって実現される。記憶装置202は、計測情報MSRと、フロー毎の観測回数情報OBFLOWと、パケット毎の観測回数情報OBPKTと、コンフィグ情報CONFとを記憶する。
計測情報MSRは、計測装置110から受信した受信した情報であり、計測情報MSRの元となったパケットのフロー識別子およびペイロードを含んでいる。
フロー毎の観測回数情報OBFLOWは、計測装置100における各フローの観測回数を示す情報である。本実施形態では、フロー毎の観測回数情報OBFLOWのデータ構造に、ブルームフィルタの一種であるカウンティングフィルタを用いる。図5は、フロー毎の観測回数情報OBFLOWの一例を概念的に示す説明図である。記憶装置202は、フロー毎のフィールドに、フロー識別子毎のパケット観測回数(換言すれば、各フローの観測回数)のカウント結果を記憶する。フローの分類には、計測情報MSRに含まれるパケットヘッダ内のフロー識別子が用いられ、ペイロードは考慮されない。分類部220は、計測装置100から受信した計測情報MSR内のフロー識別子を参照し、そのフロー識別子に対応するフィールドのカウント値を1増加させる。分類部220は、カウント値が候補特定用閾値以上となったフローのパケットをループパケット候補と判定する。この処理は、カウント値が候補特定用閾値以上となったフローをループフロー候補と判定する処理であるということもできる。
パケット毎の観測回数OBPKTは、計測装置100における各パケット(より詳しくは、ループパケット候補)の観測回数を示す情報である。本実施形態では、パケット毎の観測回数OBPKTのデータ構造として、ブルームフィルタの一種であるカウンティングフィルタを用いる。図6はパケット毎の観測回数情報OBPKTの一例を概念的に示す説明図である。記憶装置202は、パケット毎のフィールドに、計測装置100によるパケット観測回数を記憶する。パケットの分類には、計測情報MSRに含まれるパケットヘッダ内のフロー識別子とペイロードが用いられる。検出部230は、計測装置100から受信した計測情報MSR内のフロー識別子およびペイロードを参照し、そのフロー識別子およびペイロードの組に対応するフィールドのカウント値を1増加させる。検出部230は、カウント値がループパケット判定用閾値以上になったフィールドに該当するループパケット候補をループパケットと判定する。
なお、ここでは、フロー毎の観測回数情報OBFLOWやパケット毎の観測回数OBPKTのデータ構造にカウンティングフィルタを用いる場合を示すが、他のデータ構造を用いてもよい。
コンフィグ情報CONFは、フロー毎の観測回数情報OBFLOWおよびパケット毎の観測回数OBPKTをリフレッシュする周期や、候補特定用閾値、ループパケット判定用閾値等の、ループ検出装置200に関する各種設定値を含む情報である。
図7は、ループ検出装置200が行うループパケット検出処理(ステップS200、図2参照)の処理経過の例を示すフローチャートである。また、図8は、ループ検出装置200が行う処理を模式的に示す概念図である。
受信部210は、計測装置100が送信する計測情報MSRを受信し、その計測情報MSRを記憶装置202に格納する(ステップS210)。この計測情報MSRは、計測装置100が観測したパケットのヘッダおよびペイロードを含んでいる。ヘッダは、フロー識別子(送信側MACアドレスおよび受信側MACアドレス)を含んでいる。
分類部220は、ステップS210で受信した計測情報MSRに基づいて、その計測情報MSRの元となるパケットのフローを分類する(ステップS220)。分類部220は、計測情報MSRに含まれているヘッダ内のフロー識別子(送信側MACアドレスおよび受信側MACアドレス)によりフローを分類する。ただし、分類部220は、フロー識別子をハッシュ値に変換し、そのハッシュ値でフローを分類する。分類部220は、フロー毎の観測回数情報OBFLOWにおいて、フロー識別子を変換したハッシュ値に対応するフィールドのカウント値を1増加させる。
図9は、ステップS220の処理経過を示す説明図である。ステップS220において、分類部220は、ステップS210で受信した計測情報MSRに含まれるフロー識別子をKEYとしてハッシュ値を算出する(ステップS221)。本例では、分類部220は、送信側MACアドレスおよび受信側MACアドレスをKEYとしてハッシュ関数に代入することによって、ハッシュ値を計算すればよい。ハッシュ関数としては、一般的に用いられているSHA−1やMD2等を用いればよいが、他のハッシュ関数を用いてもよい。
次に、分類部220は、フロー毎の観測回数情報OBFLOWにおいて、ステップS221で計算したハッシュ値に対応するフィールドのカウント値を1増加させる(ステップS222)。この値は、ステップS221でKEYとしたフロー識別子が示すフローのパケット観測回数であり、フローの観測回数であるとも言える。
ステップS221において、分類部220は、複数のハッシュ関数に関して、それぞれフロー識別子のハッシュ値を計算してもよい。そして、分類部220は、ハッシュ関数毎に別々の観測回数情報OBFLOWを用意しておき、ステップS222では、ハッシュ関数毎にカウント値を更新してもよい。この場合、一つのフロー識別子に対して、ハッシュ関数の種類分のカウント値が得られるが、そのカウント値のうち、最小の値をフロー観測回数として採用すればよい。このように複数のハッシュ関数を用いることで、ハッシュ値の衝突によるカウントのミスを軽減することができる。また、計算量やメモリ使用量をより少なくする場合には、一つのハッシュ関数を用いればよい。
ステップS222の次に、分類部220は、ステップS222で更新したカウント値と、コンフィグ情報CONFに含まれている候補特定用閾値とを比較する(ステップS223)。カウント値が候補特定用閾値以上であれば(ステップS223におけるYes)、分類部220は、そのカウント値に対応するフロー識別子と、そのフロー識別子とともにパケットから抽出されたペイロードに関して、検出部230にステップS230(図7参照)の処理を開始させる。このことは、候補特定用閾値以上となったカウント値に対応するフロー識別子が抽出されたパケットをループパケット候補としていることを意味する。また、フロー識別子が示すフローをループフロー候補としていることを意味する。一方、カウント値が候補特定用閾値未満であれば(ステップS223におけるNo)、そのカウント値に対応するフロー識別子に関して、処理を終了する。
分類部220は、計測装置100から受信した情報における各フロー識別子について、それぞれステップS221以降の処理を実行する。
検出部230は、フロー毎の観測回数情報OBFLOWにおいて、候補特定用閾値以上になったカウント値に対応するフロー識別子と、そのフロー識別子とともにパケットから抽出されたペイロードとを用いて、そのフロー識別子およびペイロードを含むループパケット候補が、ループパケットに該当するか否かを判定する(ステップS230)。検出部230は、ステップS230において、フロー識別子とペイロードとの組をハッシュ値に変換し、パケット毎の観測回数情報OBPKTにおいて、そのハッシュ値に対応するフィールドのカウント値を1増加させる。検出部230は、そのカウント値とループパケット判定用閾値とを比較し、ループパケット判定用閾値以上となったカウント値に対応するフロー識別子とペイロードとの組を含むパケットを、ループパケットとして検出する。
図10は、ステップS230の処理経過を示す説明図である。図9に示すステップS223において、分類部220が候補特定用閾値以上のカウント値に対応するフロー識別子を特定したならば、検出部230は、そのフロー識別子と、そのフロー識別子とともにパケットから抽出されたペイロードとを計測情報MSRから読み出す。そして、検出部230は、そのフロー識別子およびペイロードの組をKEYとしてハッシュ値を算出する(ステップS231)。本例では、検出部230は、送信側MACアドレスおよび受信側MACアドレスとペイロードとをKEYとしてハッシュ関数に代入することによって、ハッシュ値を計算すればよい。ハッシュ関数としては、一般的に用いられているSHA−1やMD2等を用いればよいが、他のハッシュ関数を用いてもよい。
次に、検出部230は、パケット毎の観測回数情報OBPKTにおいて、ステップS231で計算したハッシュ値に対応するフィールドのカウント値を1増加させる(ステップS232)。この値は、ステップS231でKEYとしたフロー識別子およびペイロードを含むループパケット候補の観測回数である。
ステップS231において、検出部230は、複数のハッシュ関数に関して、それぞれフロー識別子およびペイロードの組のハッシュ値を計算してもよい。そして、検出部230は、ハッシュ関数毎に別々の観測回数情報OBPKTを用意しておき、ステップS232では、ハッシュ関数毎にカウント値を更新してもよい。この場合、フロー識別子とペイロードの一つの組に対して、ハッシュ関数の種類分のカウント値が得られるが、そのカウント値のうち、最小の値をパケット観測回数として採用すればよい。このように複数のハッシュ関数を用いることで、ハッシュ値の衝突によるカウントのミスを軽減することができる。また、計算量やメモリ使用量をより少なくする場合には、一つのハッシュ関数を用いればよい。
ステップS232の次に、検出部230は、ステップS232で更新したカウント値と、コンフィグ情報CONFに含まれているループパケット判定用閾値とを比較する(ステップS233)。カウント値がループパケット判定用閾値以上であれば(ステップS233におけるYes)、検出部230は、そのカウント値に対応するフロー識別子およびペイロードの組を含むループパケット候補をループパケットであると判定する。また、カウント値がループパケット判定用閾値未満であれば(ステップS233におけるNo)、検出部230は、そのループパケット候補をループパケットとして検出せずに、そのループパケット候補に関する処理を終了する。
また、分類部220は、コンフィグ情報CONFで規定されているリフレッシュの周期で、フロー毎の観測回数情報OBFLOWを定期的にリフレッシュする。同様に、検出部230も、コンフィグ情報CONFで規定されている周期で、パケット毎の観測回数OBPKTをリフレッシュする。リフレッシュにより、各カウント値は0に初期化される。
上記の説明では、ステップS230でフロー識別子およびペイロードを用いる場合を例にして説明したが、検出部230は、ステップS230で、フロー識別子と、エンドツーエンド(End-to-End)で変化しないフィールドであって同一フローであってもパケット毎に変化するフィールドの情報とを用いて処理を行えばよい。ペイロードは、「エンドツーエンドで変化しないフィールドであって、同一フローであってもパケット毎に変化するフィールドの情報」の一例である。「エンドツーエンドで変化しないフィールドであって、同一フローであってもパケット毎に変化するフィールドの情報」の他の例として、TCP(Transmission Control Protocol )シーケンス番号、IDフィールドの情報、RTP(Real-time Transport Protocol)シーケンス番号もある。よって、ステップS230では、フロー識別子とTCPシーケンス番号とを用いてもよい。また、フロー識別子とIDフィールドの情報とを用いてもよい。また、フロー識別子とRTPシーケンス番号とを用いてもよい。
すなわち、計測装置100のキャプチャ部110は、エンドツーエンドで変化しないフィールドであって同一フローであってもパケット毎に変化するフィールドの情報と、フロー識別子とを含む情報をパケットから抽出し、計測情報作成部120は、そのフィールドの情報とフロー識別子を計測情報MSRに含めればよい。そして、検出部230は、フロー識別子と、「エンドツーエンドで変化しないフィールドであって、同一フローであってもパケット毎に変化するフィールドの情報」とを用いて、上記のステップS230と同様の処理を行えばよい。
本実施形態によれば、分類部220が、フロー識別子毎に計測装置100におけるフロー観測回数をカウントし、そのカウント値が候補特定用閾値以上になったフロー識別子を特定する。そして、検出部230は、そのフロー識別子のみを対象として、フロー識別子と、フロー識別子とともにパケットから抽出されたペイロードとの組毎の計測装置100におけるパケット観測回数をカウントする。そして、そのカウント値がループパケット判定用閾値以上になったフロー識別子とペイロードの組を含むパケットを、ループパケットとして検出する。このように、分類部220がパケットをスクリーニングし、スクリーニングされたパケット(ループパケット候補)のみに関して、フロー識別子とペイロードの組毎にパケット観測回数をカウントすればよいので、ループパケット検出のための計算量やメモリ使用量を抑えることができる。
フロー識別子と、フロー識別子およびペイロードの組とを比較すると、後者の方がデータ量が多い。よって、スクリーニングせずに、計測情報MSRの元となる全パケットを、フロー識別子とペイロードの組毎に分類して観測回数をカウントしていくと計算量やメモリ使用量が多くなってしまう。また、フロー識別子とペイロードの組の種類が増加するので、ハッシュ値の計算を行うときにハッシュ値の衝突確率も増加してしまう。本発明では、分類部220のスクリーニングにより、フロー識別子とペイロードの組毎に分類して観測回数をカウントする対象を絞り込んでいるので、処理負荷を抑えることができる。また、ハッシュ値の衝突確率の増加を防止することができる。
また、上記の実施形態では、ループ検出システムが、ループパケットを検出する場合を例にして説明したが、ループフローを検出してもよい。ループフローを検出する場合においても、計測装置100の動作は上記の動作と同様である。また、ループ検出装置200の検出部230は、ステップS233において、ループパケット判定用閾値以上になっている観測回数情報OBPKTのカウント値があるならば、そのカウント値に対応するフロー識別子およびペイロードの組を特定し、そのフロー識別子によって特定されるフローをループフローと判定すればよい。他の動作は、上記の実施形態と同様である。ループフローを検出する場合にも、処理負荷を抑えるという効果が得られる。
次に、第1の実施形態の変形例として、計測処理100が、フロー識別子およびパケットのTTLを含むように計測情報MSRを作成し、ループ検出装置200がその計測情報MSRを参照してループフローを検出する実施形態を説明する。なお、第1の実施形態と同様の処理については説明を省略する。本変形例では、ループフローが検出対象となる。本変形例においても、計測装置100およびループ検出装置200は、それぞれ図3、図4に例示する構成要素を含む。
TTLは、パケットに格納されているパラメータであり、パケットの送信元で初期値が設定され、パラメータがスイッチ300(図1参照)を経由する毎に、スイッチ300によって1ずつ減算される。なお、TTLのバイト数は1バイトである。
本変形例においても、計測装置100は、図3に例示する構成要素を含み、計測情報MSRを作成する。ただし、計測装置100のキャプチャ部110(図3参照)は、計測装置100を通過するパケットからフロー識別子およびTTLを含む情報を抽出する。そして、計測情報作成部120が、キャプチャ部110によって抽出された情報に対してフォーマット変換を行い、計測情報MSRを作成する。計測情報作成部120は、フロー識別子およびTTLを含む計測情報MSRをループ検出装置200に送信する。
また、本変形例においても、ループ検出装置200は、図4に例示する構成要素を含む。ただし、記憶装置202は、パケット毎の観測回数情報OBPKTの代わりに、各フローにおけるTTL毎の観測回数情報を記憶する。以下、この情報をTTL観測回数情報と記す。TTL観測回数情報のデータ構造にも、例えば、カウンティングフィルタが用いられる。ただし、個々のフローに関してそれぞれ、TTL毎の計測回数がカウントされる。従って、本変形例では、フロー毎にそれぞれカウンティングフィルタが保持される。
また、コンフィグ情報CONFは、ループパケット判定用閾値の代わりに、TTL観測回数情報に含まれるTTLのカウント値と比較されるループフロー判定用閾値を含む。
ループ検出装置200の受信部210および分類部220は、第1の実施形態と同様であり、図7に示すステップS210およびステップS220(具体的には図9に示すステップS221〜S223)を実行する。
ステップS223(図9参照)において、更新後のカウント値が候補特定用閾値以上であるならば、分類部220は、そのカウント値に対応するフロー識別子に関し、そのフロー識別子とともに検出されたTTLの観測回数を更新し、そのフロー識別子が示すフローがループフローであるか否かを判定する処理(ループフロー判定処理)を検出部230に開始させる。従って、本変形例では、検出部230は、図7に示すステップS230の代わりに、ループフロー判定処理を行う。
図11は、ループフロー判定処理の処理経過を示すフローチャートである。図9に示すステップS223において、分類部220が候補特定用閾値以上のカウント値に対応するフロー識別子を特定したならば、検出部230は、そのフロー識別子とともにパケットから抽出されたTTLを計測情報MSRから読み出す。なお、このフロー識別子を、以下、「着目しているフロー識別子」と記す。検出部は、読み出したTTLをKEYとしてハッシュ値を算出する(ステップS241)。検出部230は、TTLをKEYとしてハッシュ関数に代入することによってTTLのハッシュ値を計算すればよい。
次に、検出部230は、TTL観測回数情報において、着目しているフロー識別子に関する各TTLのカウント値のうち、ステップS241で計算したハッシュ値に対応するカウント値を1増加させる(ステップS242)。すなわち、着目しているフロー識別子が示すフローにおいて、ステップS241で計測情報MSRから読み出したTTLの観測回数を1増やす。
TTLのハッシュ値に対応するカウント値の初期値は0であり、TTLが観測されると、そのTTLに関するカウント値は1増加される。よって、着目しているフロー識別子に関する各TTLのうち、カウント値が1以上になっているTTLは、観測されたTTLである。検出部230は、着目しているフロー識別子に関して、カウント値が1以上になっているフィールドの数(すなわち、観測されたTTLの種類の数)と、ループフロー判定用閾値とを比較する(ステップS243)。観測されたTTLの種類の数がループフロー判定用閾値以上であれば(ステップS243におけるYes)、検出部230は、着目しているフロー識別子が示すフローをループフロート判定する。また、観測されたTTLの種類の数がループフロー判定用閾値未満であれば(ステップS243におけるNo)、検出部230は、ループフローを検出せずに、着目しているフロー識別子に関する処理を終了する。
一般に、ネットワークにおいて、送信元から送信先までの経路は頻繁に変動しない。そのため、ネットワーク内に配置された計測装置100を通過するパケットのうち、同一フローの各パケットは同じ経路を通過してきたと考えられ、その各パケットのTTLは同じ値である確率が高い。
しかし、ループフローのパケットは、計測装置100を通過して、ネットワーク内を循環し、再度計測装置100を通過することを繰り返す。同じパケットであっても、計測装置100に到着したときのTTLは、前回計測装置100に到着したときのTTLとは異なっている。よって、着目しているフローに関して、観測されるTTLの種類が多ければ、そのフローがループフローであると判定できる。本変形例では、このことを利用して、ループフローを検出している。
また、この変形例においても、第1の実施形態と同様に、処理負荷を軽減してループフローを検出することができる。
また、上記の変形例では、ステップS241〜S243でTTLを用いる場合を例に説明したが、検出部230は、パケットが転送される毎に変化するフィールドの情報を用いてステップS241〜S243の処理を行えばよい。TTLは、「パケットが転送される毎に変化するフィールドの情報」の一例である。
すなわち、計測装置100のキャプチャ部110は、パケットが転送される毎に変化するフィールドの情報と、フロー識別子とを含む情報をパケットから抽出し、計測情報作成部120は、そのフィールドの情報とフロー識別子を計測情報MSRに含めればよい。そして、検出部230は、フロー識別子と、「パケットが転送される毎に変化するフィールドの情報」とを用いて、上記のステップS241〜S243と同様の処理を行えばよい。
「パケットが転送される毎に変化するフィールドの情報」の例として、TTLの他に、インプットポート(InputPort )の情報が挙げられる。よって、検出部230は、インプットポートの情報を用いてステップS241〜S243の処理を行ってもよい。
実施形態2.
本発明は、ある制御装置(図示略)が、ネットワーク上のパケット転送装置(例えば、図1に示すスイッチ300)を集中管理するネットワークシステムにも適用可能である。第2の実施形態は、そのようなネットワークシステムおいて実現される実施形態である。なお、ネットワークシステムは、制御装置が各パケット転送装置(図1に示すスイッチ300)を制御する態様であれば、特に限定されないが、ここではオープンフロー技術を例にして説明する。
オープンフローは、通信をエンドツーエンドのフローとして捉え、フロー単位での経路制御、障害回復、負荷分散、最適化を実現する。パケット転送装置として機能するオープンフロースイッチは、制御装置(オープンフローコントローラ)とセキュアチャネルを介して通信を行う。また、オープンフロースイッチは、フロー毎に分類情報とアクションとフロー統計情報とを定義したフローテーブルを保持する。分類情報は、パケットのヘッダと照合され、そのパケットが分類情報に対応するフローのパケットであるか否かを判断するための情報である。アクションは、そのアクション情報に対応するフローのパケットに対する処理内容を規定した情報である。
オープンフロースイッチは、パケットを受信すると、そのパケットと、フローテーブルの各エントリにおける分類情報とを照合して、そのパケットがどのフローのパケットであるかを判断する。そして、そのフローのアクションで定められた処理を、そのパケットに対して実行する。例えば、アクションで定められたオープンフロースイッチにそのパケットを転送する。
また、オープンフロースイッチは、フローテーブルにおける各エントリと照合してもパケットのフローを特定できない場合には、セキュアチャネルを介してそのパケットをオープンフローコントローラに送信し、そのパケットのフローに対応する分類情報、アクションの決定を要求する。なお、フローテーブルにおける各エントリと照合してもフローを特定できないパケットをファーストパケット(First Packet)と呼ぶ。オープンフローコントローラは、この要求に応じて、例えば、ファーストパケットの経路を決定し、経路上の各オープンフロースイッチに、新規フローの分類情報およびアクションを設定する。この設定により、経路上の各オープンフロースイッチは、新たなパケットを、決定された経路に沿って順次転送していくことができる。
第2の実施形態のループ検出システムも、図1に示すように、計測装置100と、ループ検出装置200とを備える。以下に示す説明では、図1に示す各スイッチ300が、オープンフロースイッチである場合を例にして説明する。以下、オープンフロースイッチを単にスイッチと記す。
オープンフローでは、以下のパラメータを自由に組み合わせてフローを定義してよい。すなわち、入力ポート(Ingress Port)、MAC DA(MACディスティネーションアドレス、すなわち受信側MACアドレス)、MAC SA(MACソースアドレス、すなわち送信側MACアドレス)、Ethernet(登録商標)タイプ(TPID)、VLAN ID(Virtual LAN ID)、VLAN TYPE(優先度)、IP SA(IPソースアドレス)、IP DA(IPディスティネーションアドレス)、IPプロトコル、ソースポート(TCP/UDP(User Datagram Protocol) Source Port)、ICMP(Internet Control Message Protocol ) Type、ディスティネーションポート(TCP/UDP Destination Port)、あるいは、ICMP Codeを自由に組み合わせることで、フロー識別子を定義してよい。ここでは、送信側MACアドレスと受信側MACアドレスとの組をフロー識別子とする場合を例にして説明するが、他のパラメータの組み合わせをフロー識別子としてもよい。
計測装置100(図1参照)は、スイッチ300間に配置され、スイッチ300間で送受信されるパケットから情報を抽出する。計測装置100は、例えば、ルータによって実現される。ループ検出装置200は、計測装置100が抽出した情報に基づいてループパケットまたはループフローを検出する。ループ検出装置200は、例えば、サーバコンピュータによって実現される。これらの点は、第1の実施形態またはその変形例と同様である。第2の実施形態では、ループパケットまたはループフローの検出処理に加え、ループ検出装置200が、計測装置100にループパケットの削除を指示し、計測装置100が、その指示に従って、検出されたループパケット、あるいは、検出されたループフローのフロー識別子を有するパケットを削除する。
また、ループ検出装置200は、複数の計測装置100に接続されていてもよい。その場合、ループ検出装置200は、個々の計測装置100毎に処理を行う。また、ループ検出装置200と計測装置100とが同一の装置で実現されていてもよい。また、ループ検出装置200がオープンフローコントローラ(図示略)と同一の装置で実現されていてもよい。
計測装置100は、第1の実施形態で説明したように、パケットからフロー識別子およびペイロードを含む情報を抽出し、フロー識別子およびペイロードを含む計測情報MSRを作成する。また、以下の説明では、説明を簡単にするために、ループ検出装置200が、ループパケットを検出する場合を例にして説明する。
図12は、第2の実施形態における動作を示すフローチャートである。第2の実施形態と同様の処理については、図2と同一の符号を付し、詳細な説明を省略する。
計測装置100は、自身を通過するパケットからフロー識別子およびペイロードを含む情報を抽出し、その情報をフォーマット変換して計測情報MSRを作成する。そして、計測装置100は、計測情報MSRを周期的にループ検出装置100に送信する(ステップS100)。
ループ検出装置200は、計測情報MSRを参照し、ループパケットの可能性のあるパケット(ループパケット候補)を特定する。そして、そのループパケット候補を対象として、フロー識別子およびペイロードを利用して、ループパケットであるか否かを判定する(ステップS200)。
ステップS100,S200の動作は、第1の実施形態と同様である。従って、ループパケットを特定する際におけるメモリ使用量や計算量の増加を抑えることができる。
第2の実施形態では、ループ検出装置200は、ループパケットに対する処理を規定する制御情報を作成し、その制御情報を計測情報100に送信する(ステップS300)。ループパケットに対する処理とは、具体的には、廃棄処理である。例えば、ループ検出装置200は、ループパケットのフロー識別子を指定し、そのフロー識別子を含むパケットを廃棄する旨の制御情報を作成し、計測情報100に送信する。
また、ループ検出装置200は、フロー毎の経路情報(PATと記す。)を保持しておき、ステップS300では、ループパケットのフロー識別子と経路情報PATとから、ループパケットが通過するスイッチ300を特定してもよい。そして、ループ検出装置200は、制御情報を、ループパケットが通過する経路上の各スイッチに送信してもよい。
制御情報を受信した計測装置100は、自身を通過するパケットのうち、その制御情報に定められた条件に合致するパケットを廃棄する(ステップS400)。例えば、制御情報に定められたフロー識別子を含むパケットが計測装置100に到着したときに、計測装置100は、そのパケットを廃棄する。
また、ループ検出装置200がステップS300で、ループパケットが通過する各スイッチ300に対して制御情報を送信した場合、その各スイッチ300も、自身に転送されたパケットのうち、制御情報に定められた条件に合致するパケットを廃棄する。
このように、ループ検出装置200は、ループパケットを検出したときに、そのループパケットを廃棄するように、計測装置100またはスイッチ300を制御し、計測装置100やスイッチ300は、その制御に従ってループパケットを廃棄する。従って、第2の実施形態では、第1の実施形態の効果に加えて、ネットワーク内に滞留するループパケットを廃棄して、ネットワーク資源を有効に使用できるという効果も得られる。
オープンフローが適用されないネットワークでは、例えば、ポートレベルでフロー制御を行う。そのため、例えば、1つのポートを複数のフローが通過する場合、その複数のフローのうち1つのフローがループフローであると検出されると、ループフロー以外のフローがそのポートと通過していても、そのポートを遮断してしまうことがあり得る。これに対し、本発明をオープンフローネットワークに適用した場合には、フロー毎の制御が可能であるので、上記のような場合でも、ポートごと遮断する必要はなく、資源を有効に使うことが可能となる。
以下、各装置の構成例や動作例を詳しく説明する。
図13は、第2の実施形態における計測装置100の構成例を示すブロック図である。第2の実施形態における計測装置100は、処理装置101と、制御情報CONを記憶する記憶装置102とを備える。記憶装置102は、ループ検出装置200から受信した制御情報CONを記憶する。制御情報CONは、ループパケットを識別するための条件(例えば、ループパケットのフロー識別子)と、その条件に合致するパケットに対するアクションの指示とを含む。以下に示す説明では、アクションの内容が、パケットの廃棄である場合を例にして説明するが、パケットに対する制御の指示内容は、パケットの廃棄に限定されない。例えば、制御情報CONは、条件に合致するパケットに対してQoS(Quality of Service)制御を指示するものであってもよい。また、例えば、制御情報CONは、条件に合致するパケットに対して帯域制御を指示するものであってもよい。
また、第2の実施形態では、処理装置101は、キャプチャ部110と、計測情報作成部120と、フロー制御部130とを備える。キャプチャ部110および計測情報作成部120は、第1の実施形態と同様であり、説明を省略する。
フロー制御部130は、ループ検出装置200が送信した制御情報CONを受信し、記憶装置102に記憶させる。また、フロー制御部130は、計測装置100を通過するパケットが、制御情報CONに含まれる条件に合致するか否かを判定し、合致していれば、制御情報CONに従って廃棄する。パケットが条件に合致していなければ、フロー制御部130は、そのパケットを通過させる。
キャプチャ部110、計測情報作成部120およびフロー制御部130は、例えば、プログラムに従って動作するコンピュータのCPUによって実現される。
また、フロー計測機能(キャプチャ部110および計測情報作成部120)と、フロー制御機能(フロー制御部130)とが一台の装置で実現されている必要はなく、それぞれ別の装置で実現されていてもよい。例えば、フロー計測機能がプローブで実現され、フロー制御機能がルータで実現されていてもよい。この場合、プローブとルータとをまとめたものが計測装置100に相当する。
なお、スイッチも制御情報を受信して制御情報に従ってパケットを破棄する態様では、各スイッチも、上述のフロー制御装置130および記憶装置102を備える。
図14は、第2の実施形態におけるループ検出装置200の構成例を示すブロック図である。第1の実施形態と同様の構成要素に関しては、図4と同一の符号を付し、説明を省略する。ループ検出装置200は、処理装置201と、記憶装置202とを備える。
処理装置201は、受信部210と、分類部220と、検出部230と、制御情報作成部240とを備える。受信部210、分類部220および検出部230は、第1の実施形態と同様である。
制御情報作成部240は、検出部230がループパケットを判定した場合、そのループパケットを識別するための条件と、その条件に合致するパケットを廃棄する旨の指示とを含む制御情報CONを作成する。制御情報作成部240は、ループパケットを識別するための条件として、ループパケットが含まれるフローのフロー識別子を制御情報CONに含めればよい。また、フロー識別子だけでなくペイロードも、ループパケットを識別するための条件として制御情報CONに含めてもよい。
制御情報作成部240は、作成した制御情報CONを計測装置100に送信する。制御情報作成部240は、その制御情報CONを記憶装置202に記憶させてもよい。
また、制御情報作成部240は、ループパケットのフロー識別子が示すフローの経路を特定し、その経路上の各スイッチ300に対して制御情報CONを送信してもよい。あるいは、制御情報作成部240は、特定した経路上のスイッチのうち、個別に選択したスイッチに制御情報CONを送信してもよい。例えば、経路上のスイッチのうち、ネットワークの入り口のスイッチに対してだけ制御情報CONを送信してもよい。
受信部210、分類部220、検出部230および制御情報作成部240は、例えば、ループ検出プログラムに従って動作するコンピュータのCPUによって実現される。この場合、CPUが、ループ検出プログラムに従って、受信部210、分類部220、検出部230および制御情報作成部240として動作すればよい。また、 受信部210、分類部220、検出部230および制御情報作成部240が別々のユニットで実現されていてもよい。
記憶装置202は、第1の実施形態と同様に、計測情報MSR、フロー毎の観測回数情報OBFLOW、パケット毎の観測回数情報OBKT、およびコンフィグ情報CONFを記憶する。第2の実施形態では、記憶装置202は、さらに、経路情報PATと、制御情報CONとを記憶していてもよい。
経路情報PATは、各フローの経路を示す情報である。図15は、経路情報PATの一例を概念的に示す説明図である。図15に示すように、経路情報PATは、フロー毎に、フロー識別子と、経路上のリンクを表す情報とを対応付けている。図15に示す例では、経路上のリンクを表す情報として、個々のリンク毎に、経路上のリンクであるか否かを「1」または「0」で表している。経路上のリンクに該当する場合は、「1」と記述され、経路上のリンクに該当する場合には「0」と記述される。なお、図15に示す例では、フロー識別子として、送信側IPアドレスおよび受信側IPアドレスを用いる場合を例示しているが、フロー識別子としては、ループ検出装置20が処理に用いるフロー識別子を用いることが好ましい。また、各リンクは、例えば、リンクの両端のスイッチの識別情報の組み合わせによって識別されていればよい。
ループ検出装置200は、例えば、オープンフローコントローラ(図示略)から経路情報PATを受信し、記憶装置202に記憶すればよい。例えば、オープンフローコントローラが、スイッチからファーストパケットを受信して、ファーストパケットのフローに対する経路を決定したときに、そのフローのフロー識別子と経路とを対応付けてループ検出装置200に送信すればよい。ループ検出装置200は、その情報を受信し、経路情報PATとして記憶装置202に記憶させればよい。
また、ループ検出装置200とオープンフローコントローラとが同一の装置で実現され、ループ検出装置200がオープンフローコントローラとしても動作する場合には、ループ検出装置200が、スイッチからファーストパケットを受信して、ファーストパケットのフローに対する経路を決定したときに、そのフローのフロー識別子と経路とを対応付け、経路情報PATとして記憶装置202に記憶させればよい。
図12、図13および図14を参照して、第2の実施形態の動作を詳しく説明する。ただし、図12に示すステップS100,S200の動作は、第1の実施形態と同様であり、説明を省略する。ここでは、ステップS200でループパケットが検出された後のステップS300,S400について説明する。
検出部230がループパケットを検出すると、制御情報作成部240は、そのループパケットを識別するための条件として、そのループパケットのフローのフロー識別子を含む制御情報CONを作成する。また、そのループパケットを識別するための条件として、フロー識別子だけでなくペイロードを含む制御情報CONを作成してもよい。このフロー識別子やペイロードは、具体的には、パケット毎の観測回数情報において、ループパケット判定用閾値以上にカウントアップされたカウント値に対応するフロー識別子やペイロードである。また、制御情報作成部240は、制御情報に、条件に合致したパケットを廃棄することを指示する旨の情報も含める。制御情報作成部240は、作成した制御情報CONを計測装置100に送信する(ステップS300)。制御情報作成部240は、例えば、TCPやUDP等の既存の通信プロトコルに従って制御情報を計測装置100に送信すればよい。
また、制御情報作成部240は、経路情報PATを参照して、オープンフローネットワーク内のスイッチのうち、ループパケットのフロー識別子に対応する経路上のスイッチを特定し、その各スイッチに制御情報を送信してもよい。また、制御情報作成部240は、経路上のスイッチのうち、個別に選択したスイッチ(例えば、ネットワークの入り口のスイッチ)に対してだけ、制御情報を送信してもよい。
計測装置100のフロー制御部130(図13参照)は、ループ検出装置200から制御情報CONを受信すると、その制御情報CONを記憶装置102に記憶させる。そして、フロー制御部130は、計測装置100を通過するパケットを、制御情報CONに従って処理する。すなわち、フロー制御部130は、制御情報CONに含まれる条件(例えば、フロー識別子)と、計測装置100に到着したパケットとを照合し、そのパケットが条件に合致していれば、そのパケットを制御情報CONに従い廃棄する。条件に合致するパケットは、ループフローのパケットであるので、ネットワーク内に滞留し続けるパケットが廃棄されることになる。なお、既に説明したように、制御情報CONに含まれる条件は、フロー識別子とペイロードの組み合わせであってもよい。
また、以上の説明では、ループ検出装置200の検出部230がループパケットを検出する場合を例に説明したが、第1の実施形態で説明したように、ループ検出装置200の検出部230がループフローを検出してもよい。この場合におけるステップS300,S400の動作は、検出部230がループパケットを検出する場合の動作と同様である。この場合においても、制御情報作成部240は、ループフローのフロー識別子を制御情報に含めればよい。
また、第2の実施形態においても、ループパケットまたはループフローを特定する際にペイロードを用いる場合を例にして説明した。第1の実施形態で説明したように、ループパケットまたはループフローを特定する際には、ループ検出装置200は、フロー識別子と、エンドツーエンドで変化しないフィールドであって同一フローであってもパケット毎に変化するフィールドの情報とを用いて処理を行えばよい。ペイロードは、そのようなフィールドの情報の一例である。「エンドツーエンドで変化しないフィールドであって、同一フローであってもパケット毎に変化するフィールドの情報」の他の例として、TCPシーケンス番号、IDフィールドの情報、RTPシーケンス番号もある。よって、ループ検出装置200は、これらの情報を用いてもよい。
また、第1の実施形態の変形例と同様に、計測処理100が、フロー識別子およびパケットのTTLを含むように計測情報MSRを作成し、ループ検出装置200がTTLを利用して、ループフローを検出してもよい。この場合、計測処理100が、フロー識別子およびパケットのTTLを含むように計測情報MSRを作成する動作は、第1の実施形態の変形例と同様である。また、検出部230がTTLを利用してループフローを検出する動作も、第1の実施形態の変形例と同様である。すなわち、ステップS200では、受信部210がステップS210(図7参照。)の処理を行い、分類部220がステップS220(図7参照。より具体的には図9に示すステップS221〜S223)の処理を行う。そして、検出部230は、図11に示すステップS241〜S243の処理を行えばよい。なお、この場合、ループフローが検出されるので、制御情報作成部240は、ステップS300(図12参照)において、ループパケットを識別するための条件として、ループフローのフロー識別子を制御情報に含める。その他の点に関しては、既に説明した第2の実施形態の動作と同様である。
第1の実施形態の変形例で説明したように、ステップS241〜S243で用いる情報はTTLに限定されず、「パケットが転送される毎に変化するフィールドの情報」であればよい。このような情報の例として、TTLの他に、インプットポートの情報が挙げられる。
また、上記の各実施形態やその変形例では、パケットから抽出したフロー識別子を用いてループパケット候補を特定し、パケットから抽出したペイロードまたはTTLを用いてループパケットまたはループフローを特定した。ループパケット候補の特定に用いる情報は、フロー識別子以外の情報であってもよい。また、ループパケットまたはループフローの特定に用いる情報は、ペイロード等でなくてもよい。
例えば、分類部220は、パケットから抽出されたペイロードを用いてパケットを分類し、ループパケット候補を特定してもよい。そして、検出部230は、パケットから抽出されたフロー識別子またはTTLを用いて、ループパケットまたはループフローを検出してもよい。この場合、計測装置100は、ペイロードとTTLを含む計測情報MSRを作成して、ループ検出装置200に送信したり、あるいは、ペイロードとフロー識別子を含む計測情報MSRを作成して、ループ検出装置200に送信したりすればよい。
なお、上記の説明で述べたTTLは、IPヘッダにおけるTTLに限定されず、MPLS(Multiprotocol Label Switching)シムヘッダにおけるTTLであってもよい。
次に、本発明の最小構成について説明する。図16は、本発明のループ検出装置の最小構成の例を示す説明図である。また、図17は、本発明のループ検出システムの最小構成の例を示す説明図である。
本発明のループ検出システムは、パケット情報抽出装置70と、ループ検出装置80とを備える(図17参照)。パケット情報抽出装置70(例えば、計測装置100)は、パケット転送装置(例えば、スイッチ300)間で送受信されるパケットから情報を抽出する。また、ループ検出装置80(例えば、ループ検出装置200)は、パケット情報抽出装置70が抽出した情報を用いてループパケットまたはループフローを検出する。
また、パケット情報抽出装置70は、抽出手段71と、送信手段72とを含む。抽出手段71(例えば、キャプチャ部110)は、パケット情報抽出装置70を通過するパケットから、パケット内の第1の所定の情報(例えば、フロー識別子)およびパケット内の第2の所定の情報(例えば、ペイロードまたはTTL)を含むパケット情報(例えば、パケットの先頭128バイトの情報)を抽出する。送信手段72(例えば、計測情報作成部120)は、パケット情報をループ検出装置80に送信する。
本発明のループ検出装置80(図16、図17参照)は、受信手段81と、分類手段82と、判定手段83とを含む。受信手段81(例えば、受信部210)は、パケット情報抽出装置からパケット情報を受信する。
分類手段82(例えば、分類部220)は、パケット情報に含まれる第1の所定の情報に基づいて、パケット情報抽出装置に情報を抽出されたパケットを分類し、分類したパケットの数を第1の所定の情報毎にカウントし、カウント結果が第1の閾値(例えば、候補特定用閾値)以上になった第1の所定の情報を特定する。
判定手段83(例えば、検出部230)は、分類手段82によって特定された第1の所定の情報を対象とし、受信手段81が受信したパケット情報に含まれる第2の所定の情報を利用して、分類手段82に特定された第1の所定の情報を有するパケットがループパケットであるか否か、または、その第1の所定の情報で特定されるフローがループフローであるか否かを判定する。
そのような構成により、ループパケットまたはループフローを特定することができる。そして、分類手段82が、第1の所定の情報を絞り込み、判定手段83が、絞り込まれた第1の所定の情報を対象として処理を行うので、ループパケットまたはループフローを特定する処理における処理負荷を軽減することができる。
上記の実施形態の一部または全部は、以下の付記のようにも記載されうるが、以下には限られない。
(付記1)パケット転送装置間で送受信されるパケットから情報を抽出するパケット情報抽出装置から、前記パケット内の第1の所定の情報および前記パケット内の第2の所定の情報を含むパケット情報を受信する受信手段と、前記パケット情報に含まれる第1の所定の情報に基づいて、パケット情報抽出装置に情報を抽出されたパケットを分類し、分類したパケットの数を第1の所定の情報毎にカウントし、カウント結果が第1の閾値以上になった第1の所定の情報を特定する分類手段と、分類手段によって特定された第1の所定の情報を対象とし、受信手段が受信したパケット情報に含まれる前記第2の所定の情報を利用して、分類手段に特定された前記第1の所定の情報を有するパケットがループパケットであるか否か、または、前記第1の所定の情報で特定されるフローがループフローであるか否かを判定する判定手段とを備えることを特徴とするループ検出装置。
(付記2)受信手段は、第1の所定の情報として、パケットのフローを識別するフロー識別子を含み、第2の所定の情報として、エンドツーエンドで変化しないフィールドであって同一フローであってもパケット毎に変化するフィールドの情報を含むパケット情報を受信する付記1に記載のループ検出装置。
(付記3)受信手段は、第1の所定の情報として、パケットのフローを識別するフロー識別子を含み、第2の所定の情報として、少なくともパケットのペイロード、TCPシーケンス番号、IDフィールドの情報、RTPシーケンス番号のいずれかを含むパケット情報を受信する付記1または付記2に記載のループ検出装置。
(付記4)判定手段は、フロー識別子と第2の所定の情報との組に基づいて、分類手段によって特定されたフロー識別子を有するパケットを分類し、分類したパケットの数をフロー識別子と第2の所定の情報との組毎にカウントし、カウント結果と第2の閾値とを比較することによって、分類手段に特定されたフロー識別子を有するパケットがループパケットであるか否か、または、前記フロー識別子で特定されるフローがループフローであるか否かを判定する付記2または付記3に記載のループ検出装置。
(付記5)受信手段は、第1の所定の情報として、パケットのフローを識別するフロー識別子を含み、第2の所定の情報として、パケットが転送される毎に変化するフィールドの情報を含むパケット情報を受信する付記1に記載のループ検出装置。
(付記6)受信手段は、第1の所定の情報として、パケットのフローを識別するフロー識別子を含み、第2の所定の情報として、TTLまたはインプットポートの情報を含むパケット情報を受信する付記1または付記5に記載のループ検出装置。
(付記7)判定手段は、分類手段によって特定されたフロー識別子毎に、第2の所定の情報を分類し、分類された第2の所定の情報の種類の数と第3の閾値とを比較することによって、分類手段に特定されたフロー識別子で特定されるフローがループフローであるか否かを判定する付記5または付記6に記載のループ検出装置。
(付記8)少なくとも、判定手段によって判定されたループパケットまたはループフローのフロー識別子を制御対象パケットの条件として含み、前記条件に合致するパケットに対する制御を指示する制御情報を作成し、前記制御情報をパケット情報抽出装置に送信する制御情報作成手段を備える付記1から付記7のうちのいずれか1項に記載のループ検出装置。
(付記9)フロー識別子毎にフローの経路を表す経路情報を記憶する経路情報記憶手段と、少なくとも、判定手段によって判定されたループパケットまたはループフローのフロー識別子を制御対象パケットの条件として含み、前記条件に合致するパケットに対する制御を指示する制御情報を作成し、前記経路情報に基づいて前記フロー識別子に対応する経路上のパケット転送装置を特定し、当該パケット転送装置に前記制御情報を送信する制御情報作成手段を備える付記1から付記8のうちのいずれか1項に記載のループ検出装置。
(付記10)制御情報作成手段は、少なくとも、パケットの廃棄、QoS制御、帯域制御のいずれかを指示する制御情報を作成する付記8または付記9に記載のループ検出装置。
(付記11)パケット転送装置間で送受信されるパケットから情報を抽出するパケット情報抽出装置と、パケット情報抽出装置が抽出した情報を用いてループパケットまたはループフローを検出するループ検出装置とを備え、パケット情報抽出装置は、当該パケット情報抽出装置を通過するパケットから、前記パケット内の第1の所定の情報および前記パケット内の第2の所定の情報を含むパケット情報を抽出する抽出手段と、前記パケット情報をループ検出装置に送信する送信手段とを含み、ループ検出装置は、パケット情報抽出装置から前記パケット情報を受信する受信手段と、前記パケット情報に含まれる第1の所定の情報に基づいて、パケット情報抽出装置に情報を抽出されたパケットを分類し、分類したパケットの数を第1の所定の情報毎にカウントし、カウント結果が第1の閾値以上になった第1の所定の情報を特定する分類手段と、分類手段によって特定された第1の所定の情報を対象とし、受信手段が受信したパケット情報に含まれる前記第2の所定の情報を利用して、分類手段に特定された前記第1の所定の情報を有するパケットがループパケットであるか否か、または、前記第1の所定の情報で特定されるフローがループフローであるか否かを判定する判定手段とを含むことを特徴とするループ検出システム。
(付記12)抽出手段は、第1の所定の情報として、パケットのフローを識別するフロー識別子を含み、第2の所定の情報として、エンドツーエンドで変化しないフィールドであって同一フローであってもパケット毎に変化するフィールドの情報を含むパケット情報を抽出する付記11に記載のループ検出システム。
(付記13)パケット転送装置間で送受信されるパケットから情報を抽出するパケット情報抽出装置から、前記パケット内の第1の所定の情報および前記パケット内の第2の所定の情報を含むパケット情報を受信し、前記パケット情報に含まれる第1の所定の情報に基づいて、パケット情報抽出装置に情報を抽出されたパケットを分類し、分類したパケットの数を第1の所定の情報毎にカウントし、カウント結果が第1の閾値以上になった第1の所定の情報を特定し、特定した第1の所定の情報を対象とし、受信したパケット情報に含まれる前記第2の所定の情報を利用して、特定した前記第1の所定の情報を有するパケットがループパケットであるか否か、または、前記第1の所定の情報で特定されるフローがループフローであるか否かを判定することを特徴とするループ検出方法。
(付記14)第1の所定の情報として、パケットのフローを識別するフロー識別子を含み、第2の所定の情報として、エンドツーエンドで変化しないフィールドであって同一フローであってもパケット毎に変化するフィールドの情報を含むパケット情報を受信する付記13に記載のループ検出方法。
(付記15)コンピュータに、パケット転送装置間で送受信されるパケットから情報を抽出するパケット情報抽出装置から、前記パケット内の第1の所定の情報および前記パケット内の第2の所定の情報を含むパケット情報を受信する受信処理、前記パケット情報に含まれる第1の所定の情報に基づいて、パケット情報抽出装置に情報を抽出されたパケットを分類し、分類したパケットの数を第1の所定の情報毎にカウントし、カウント結果が第1の閾値以上になった第1の所定の情報を特定する分類処理、および、分類処理で特定した第1の所定の情報を対象とし、受信処理で受信したパケット情報に含まれる前記第2の所定の情報を利用して、分類処理で特定した前記第1の所定の情報を有するパケットがループパケットであるか否か、または、前記第1の所定の情報で特定されるフローがループフローであるか否かを判定する判定処理を実行させるためのループ検出プログラム。
(付記16)コンピュータに、受信処理で、第1の所定の情報として、パケットのフローを識別するフロー識別子を含み、第2の所定の情報として、エンドツーエンドで変化しないフィールドであって同一フローであってもパケット毎に変化するフィールドの情報を含むパケット情報を受信させる付記15に記載のループ検出プログラム。
(付記17)パケット転送装置間で送受信されるパケットから情報を抽出するパケット情報抽出装置から、前記パケット内の第1の所定の情報および前記パケット内の第2の所定の情報を含むパケット情報を受信する受信部と、前記パケット情報に含まれる第1の所定の情報に基づいて、パケット情報抽出装置に情報を抽出されたパケットを分類し、分類したパケットの数を第1の所定の情報毎にカウントし、カウント結果が第1の閾値以上になった第1の所定の情報を特定する分類部と、分類部によって特定された第1の所定の情報を対象とし、受信部が受信したパケット情報に含まれる前記第2の所定の情報を利用して、分類部に特定された前記第1の所定の情報を有するパケットがループパケットであるか否か、または、前記第1の所定の情報で特定されるフローがループフローであるか否かを判定する判定部とを備えることを特徴とするループ検出装置。
(付記18)受信部は、第1の所定の情報として、パケットのフローを識別するフロー識別子を含み、第2の所定の情報として、エンドツーエンドで変化しないフィールドであって同一フローであってもパケット毎に変化するフィールドの情報を含むパケット情報を受信する付記17に記載のループ検出装置。
(付記19)受信部は、第1の所定の情報として、パケットのフローを識別するフロー識別子を含み、第2の所定の情報として、少なくともパケットのペイロード、TCPシーケンス番号、IDフィールドの情報、RTPシーケンス番号のいずれかを含むパケット情報を受信する付記17に記載のループ検出装置。
(付記20)判定部は、フロー識別子と第2の所定の情報との組に基づいて、分類部によって特定されたフロー識別子を有するパケットを分類し、分類したパケットの数をフロー識別子と第2の所定の情報との組毎にカウントし、カウント結果と第2の閾値とを比較することによって、分類部に特定されたフロー識別子を有するパケットがループパケットであるか否か、または、前記フロー識別子で特定されるフローがループフローであるか否かを判定する付記18に記載のループ検出装置。
(付記21)受信部は、第1の所定の情報として、パケットのフローを識別するフロー識別子を含み、第2の所定の情報として、パケットが転送される毎に変化するフィールドの情報を含むパケット情報を受信する付記17に記載のループ検出装置。
(付記22)受信部は、第1の所定の情報として、パケットのフローを識別するフロー識別子を含み、第2の所定の情報として、TTLまたはインプットポートの情報を含むパケット情報を受信する付記17に記載のループ検出装置。
(付記23)判定部は、分類部によって特定されたフロー識別子毎に、第2の所定の情報を分類し、分類された第2の所定の情報の種類の数と第3の閾値とを比較することによって、分類部に特定されたフロー識別子で特定されるフローがループフローであるか否かを判定する付記21に記載のループ検出装置。
(付記24)パケット転送装置間で送受信されるパケットから情報を抽出するパケット情報抽出装置と、パケット情報抽出装置が抽出した情報を用いてループパケットまたはループフローを検出するループ検出装置とを備え、パケット情報抽出装置は、当該パケット情報抽出装置を通過するパケットから、前記パケット内の第1の所定の情報および前記パケット内の第2の所定の情報を含むパケット情報を抽出する抽出部と、前記パケット情報をループ検出装置に送信する送信部とを含み、ループ検出装置は、パケット情報抽出装置から前記パケット情報を受信する受信部と、前記パケット情報に含まれる第1の所定の情報に基づいて、パケット情報抽出装置に情報を抽出されたパケットを分類し、分類したパケットの数を第1の所定の情報毎にカウントし、カウント結果が第1の閾値以上になった第1の所定の情報を特定する分類部と、分類部によって特定された第1の所定の情報を対象とし、受信部が受信したパケット情報に含まれる前記第2の所定の情報を利用して、分類部に特定された前記第1の所定の情報を有するパケットがループパケットであるか否か、または、前記第1の所定の情報で特定されるフローがループフローであるか否かを判定する判定部とを含むことを特徴とするループ検出システム。
以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
この出願は、2010年2月19日に出願された日本特許出願2010−035096を基礎とする優先権を主張し、その開示の全てをここに取り込む。
産業上の利用の可能性
本発明は、ループパケットまたはループフローを検出するループ検出システムに好適に適用される。