JP3581238B2 - Real-time packet tracking method and packet matching device - Google Patents
Real-time packet tracking method and packet matching device Download PDFInfo
- Publication number
- JP3581238B2 JP3581238B2 JP25688797A JP25688797A JP3581238B2 JP 3581238 B2 JP3581238 B2 JP 3581238B2 JP 25688797 A JP25688797 A JP 25688797A JP 25688797 A JP25688797 A JP 25688797A JP 3581238 B2 JP3581238 B2 JP 3581238B2
- Authority
- JP
- Japan
- Prior art keywords
- packet
- data
- key
- search
- matching
- 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.)
- Expired - Lifetime
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Description
【0001】
【発明の属する技術分野】
本発明はパケットを伝送するネットワークに関し、特にパケットトラッキング方法に関する。
【0002】
【従来の技術】
情報(パケット)を伝送するネットワーク(ユーザネットワークと呼ぶ)において、図12に例示するように、ネットワーク上を流れるパケットをパケット転送装置101を経てプローブするプローブ(パケットプローブ装置100)を複数の地点に置く。各プローブ100では、パケットをネットワークよりコピーし、そのパケットデータを取り込む。さらに、各プローブは、取り込んだ大量のパケットデータをユーザネットワークもしくは専用ネットワークを通して、連続したストリームとして監視サーバ102に送る。さらに、監視サーバ102上において、複数地点から送られてくる連続したデータより同一のパケットを実時間で探し出し、パケットトラッキングを行う。なお、同一のパケットを探し出す動作をパケットマッチングと呼ぶ。
【0003】
従来、パケットマッチングを行うために、図13に示すように、プローブ100でコピーされたパケットデータを監視サーバ102上に一時保存し、ある一定時間の後に、同一パケット選択装置103を用いてパケットマッチングをまとめて行うという作業を繰り返していた。したがって、同一パケット選択装置103では、実行時間に関係なく、監視サーバ102上に記憶されたパケットデータを比較することによってのみパケットマッチングが可能となった。
【0004】
【発明が解決しようとする課題】
従来の技術では、実時間でのマッチングに関しては、以下の問題があった。
【0005】
・実時間での処理を行わないため、一定時間以上の連続した監視が不可能である。
【0006】
・パケットデータを突き合わせることによって検索を行っていたため、マッチング処理に時間がかかる。
【0007】
・検索テーブルの容量が小さい場合には、検索テーブルへの効率のよい登録方法が必要となる。
【0008】
・検索テーブルを用いたとしても、検索キーが長いと検索テーブルの参照時間が多くなる場合がある。
【0009】
・二つの入力への入力レートが異なる場合には、検索テーブルへの登録量が異なる。検索テーブルが非常に小さい場合には、片側の入力からのパケットが検索テーブルへ登録されず、パケットマッチングを正常に行えない場合がある。
【0010】
・検索に失敗したパケットを出力する機能が実時間で動作しない場合がある。
・パケットマッチングを行うためには、小さな有限のテーブルを用意して、そのテーブルにパケットストリームの断片を取り込み、検索キーをもとにして等しいパケットを探し出すと同時に、短い間隔で、常にテーブルを更新するという動作が必要とされる。ところで、パケットの到着時刻が異なったり、一定の時間を必要とする場合には、この時間がテーブル更新の時間よりも長い場合には、パケットマッチングされるべきパケットが全てのテーブルへ取り込まれず、パケットマッチングが正常に行われない。
【0011】
本発明の目的は、実時間でのパケットマッチングが可能な実時間パケットトラッキング方法およびパケットマッチング装置を提供することにある。
【0012】
【課題を解決するための手段】
本発明の実時間パケットトラッキング方法は、それぞれのパケットストリームの各パケットに対して、パケットのデータの一部を抽出して検索キーを作成し、二つのパケットストリームについて、検索キーが等しいパケットが既に送られているか調べて、送られているならば、それらのパケット対を出力し、一定時間待っても等しい検索キーのパケットが送られてこないパケットを別の出力口に出力するものである。
【0013】
本発明のパケットマッチング装置は、それぞれのパケットストリームの各パケットに対して、パケットのデータの一部を抽出して検索キーを作成するマスキング手段と、二つのパケットストリームについて、検索キーが等しいパケットが既に送られているか調べて、送られているならば、それらのパケット対を出力し、一定時間待っても等しい検索キーのパケットが送られてこないパケットを別の出力口に出力するマッチング手段を有する。
【0014】
したがって、本装置を監視サーバ上で用いることにより、複数の地点から送られてくる連続したデータより実時間でのパケットトラッキングが可能になる。
【0015】
パケットマッチング装置を用いる際に、マッチング手段において、ハッシュを用いることにより、実時間でのパケットマッチングが可能となる。
【0016】
検索テーブル量を多くとれない場合にハッシュを用いると、テーブルへの登録時に衝突が発生する可能性が高くなり、マッチング速度に影響がでる可能性がある。このような場合には、パトリシア木を用いてテーブルに登録することにより、実時間でのパケットマッチングが可能となる。検索キーが長い場合には、テーブルへの登録時に衝突が発生する可能性が高くなり、マッチング速度に影響がでる可能性がある。このような場合には、パトリシア木を用いてテーブルに登録することにより、実時間でのパケットマッチングが可能となる。
【0017】
マッチング手段において、入力口に対してパトリシア木を用いて検索データベースを作ることにより、両方の入力レートが時間によって異なる場合に、検索テーブルに対して、パケットマッチングされるべきパケットを確実にテーブルへ登録することが可能になる。
【0018】
マッチング手段において、2本の入力口において、ハッシュまたはパトリシア木を用いて、片側が1個、他方が3個のテーブルを利用することにより、片側の入力レートが非常に大きい場合に、検索テーブルに対して、パケットマッチングされるべきパケットを確実にテーブルへ登録することが可能となる。
【0019】
マッチング手段が、検索データベース以外に、検索キーと、検索に成功したか失敗したかを表す属性の組からなる配列を保持していることにより、検索テーブルからパケットデータを削除することに非常にコストがかかる場合に、検索に失敗したパケットを出力する機能を実時間で動作させることが可能になる。
【0020】
マッチング手段が、検索キーにより検索に成功した場合には、検索テーブルよりデータを削除することにより、検索テーブル全体を一斉削除することに非常にコストがかかる場合に、検索に失敗したパケットを出力する機能を実時間で動作させることが可能になる。
【0021】
マッチング手段が、パケットとタイムスタンプの組で構成されたデータ列が与えられた場合に、マッチングしたパケットに関してはタイムスタンプを比較する、すなわち、差分等を計算することにより、ストリーム状で送られてくる二つのパケットデータについて、同一パケットデータの時間差や時間差の変動を調べることが可能になる。
【0022】
検索テーブルの数を変えるということは、すなわち、検索テーブルへの一定時間におけるデータ登録数を増やすということとなる。正確にパケットマッチングを行うためには、マッチングされるべきパケット全てが有限の検索テーブルへ登録される必要がある。このために、ストリーム同期装置を組み込むが、この装置を用いても、SIQVヘッダの生成間隔以内で検索テーブルを次々と更新した場合には、マッチングされるべきパケット全てが検索テーブルへ登録されない場合がある。このため、両入力(場合によっては片側の入力)に対応する検索テーブルの大きさを大きくしてこの問題をクリアする(請求項5、6)。
【0023】
検索テーブル更新を行う際には、検索テーブルへ残っているデータをマッチング失敗した(つまり、等しいキーが見つからなかったデータ)として出力する必要がある。したがって、検索テーブルをクリアしないと、常に古いパケットデータが残っていることとなり、そのデータをマッチング失敗したデータとして常に出力することとなる。このようなエラーを避けるためには、検索テーブルからパケットデータを全て削除する方法と、検索テーブルに登録したパケットデータへの情報を参照する方法とが考えられる。どちらの方法を選択するかはトレードオフである。
【0024】
ストリーム同期装置を備えることにより、各プローブから監視サーバへの遅延変動や遅延差が大きい場合に、遅延誤差を最小にし、パケットマッチングされるべきパケットが全てのテーブルへ取り込まれ、パケットマッチングが正常に行われることが可能になる。
【0025】
【発明の実施の形態】
次に、本発明の実施の形態について図面を参照して説明する。
【0026】
本発明の実時間パケットトラッキング方法では、パケットプローブ装置から送られてくるパケットデータストリームを直接受けとり、実時間でパケットマッチングを行い、パケットマッチングに成功したデータと失敗したデータを出力する。
【0027】
これを実現するために、図1に示すように、本実施形態は、ストリーム同期装置30とパケットマッチング装置10を有する。
【0028】
「パケットマッチング装置10」(請求項2,3,4,5,6,7,8):パケットマッチング方法を実行する装置をパケットマッチング装置と呼ぶ。本装置は、図2に示すように、4入力(IA,IB,MA,MB)、3出力(OM,OIA,OIB)のデータポートを持つ。本装置では、入力ポートIA,IBに入力されたデータストリームの個々のパケットについて、マッチングされたものは、データポートOMへ出力する。マッチングしなかったパケットに関しては、入力ポートIAからの入力は出力ポートOIAへ、入力ポートIBからの入力は出力ポートOIBへ出力する。また、データポートMA,MBは、パケットの一部を参照することによって、パケットマッチングを可能とするためのマスク入力端子として用いる。
【0029】
パケットマッチング装置10は、図3に示すように、マスキング機構11とマッチング機構12とタイムスタンプ処理機構13で構成される。それぞれの機構を次に述べる。なお、タイムスタンプ処理機構13は、データストリーム中の個々のデータが、タイムスタンプとパケットデータの組で与えられる際に動作可能となり、タイムスタンプの処理が必要な場合に付与される機構である。
【0030】
「マスキング機構11」(請求項2):パケットマッチングでは、等しいパケットを捜し出すために、パケットデータ領域の中で、書き変わることのない一部分を参照することが必要となる。このため、パケットデータの一部分を切り出すための機構をマスキング機構と呼ぶ。
【0031】
図5において、IPパケットを例にして、マスキング機構11の動作例を示す。ここでは、“1”をdon’t careとしている。IAへの入力データストリームの先頭にパケット(入力データ)Aがあり、IBへの入力データストリームの先頭にパケットBがある。MAのマスクはマスクAとして示され、MBのマスクはマスクBとして示される。この際に、マスキング機構11は、それぞれのマスクを参照してマスクデータを作成し、このデータをマッチング機構12へ渡す。なお、パケットデータについてもマッチング機構12へ渡す。
【0032】
「マッチング機構12」(請求項2,3,4,5,6,7,8):マッチング機構12は、図4に示すように、入出力モジュール21とテーブル管理モジュール22で構成される。本機構12はマスクドデータをキーとして検索テーブルを参照して、同一パケットを捜し出す機能を有する。
【0033】
以降では、HIAはIA側の入力口に対応するハッシュ表(もしくはパトリシア木)により構成される検索テーブルを示す。HIA(key)は、keyにより検索されたデータを示す。HIA(key)→(a,b,c)と表記された場合には、keyによりポイントされるデータは、a,b,cというデータの組であることを示す。また、それぞれのデータは、HIA(key):a,HIA(key):b,HIA(key):cと表現される。ここで、HIA(key):Aは、HIA(key)により検索されたAというデータであることを示す。
【0034】
◎入出力モジュール21(請求項2):ここでは、入力ポートIAからの入力を例にして以下に説明を行う。なお、入力ポートIBからの入力については、以下の文中のIAとIBを入れ換えることにより同様に動作する。
【0035】
1.入力ポートIAへ入力されたデータストリームの先頭のパケットデータaと、aのkeyを取得する。
【0036】
2.入力ポートIAからの入力データであることを示す属性をIAとすると、(a,key,IA)からなるデータをテーブル管理モジュール22へ送る。
【0037】
3.テーブル管理モジュール22からAが帰ってきた場合において、
A=NULLの場合には、
1へ戻る。この際に、IAとIBを入れ換えて動作を行う。
【0038】
A=b(=HIB(key)であるパケットデータ)が帰ってきた場合には、
タイムスタンプ処理機構13を通さない場合にはa(もしくはb)を出力する。タイムスタンプ処理機構13を通す場合には(a,b)をタイムスタンプ処理機構13へ渡す。
【0039】
1へ戻る。この際に、IAとIBを入れ換えて動作を行う。
【0040】
◎テーブル管理モジュール22(請求項2,3,4,5,6,7,8):ここでは検索テーブルにハッシュを用いる例を説明するが、パトリシア木を利用する際でも同様の処理が可能である。
【0041】
○テーブル管理モジュール22(請求項2,3,4,5,7):テーブル管理モジュール22は、パケットマッチング装置10への入力端子別に、入力ポートIAに対する検索テーブルHIA1を管理し、入力ポートIBに対応する検索テーブルHIB1を管理する。また、入力ポートIAとIBのために、それぞれ、keyの配列からなるDIA、DIBを有する。検索テーブルHIA1,HIB1に登録される個々のデータは、HIA1(key)→(パケットデータ、Mbit)の組で構成される。
【0042】
Mbitは、keyに対応したパケットの属性を示す。Mbitの初期値はオフとする。keyに対応するパケットが見つかった際にはMbitはオンとなる。したがって、Mbitを参照することにより、keyに対応するパケットが見つかったかどうかを知ることができる。
【0043】
テーブル管理モジュール22への入力は入出力モジュール21よりTINを通して与えられ、(key,data,attr)の組により構成される。keyは検索キーを示し、dataはパケットデータを示し、attrは、dataがIA側からの入力か、IB側からの入力かを示す。
【0044】
attr=IAとして場合の検索動作を説明する。なお、attr=IBの場合には、AとBが入れ換わった動作となる。
【0045】
・keyをもとにて検索テーブルHIB1を検索する。
【0046】
−検索テーブルHIB1よりデータを取得した場合:
*HIB1(key):Mbit==オフの場合:
1.“HIB1(key):パケットデータ”をTOUTへ出力する。
2.HIB1(key):Mbit=オンとする。
【0047】
HIB1(key):Mbit==オンの場合には、NULLをTOUTへ出力する。
【0048】
−検索テーブルHIB1よりデータを取得できない場合:
1.NULLをTOUTへ出力する。
【0049】
2.HIA1(key)に(パケットデータ、Mbit=オフ)からなるデータを保存する。
【0050】
3.DIA1にkeyを保存する。
【0051】
次に、テーブル管理モジュール22は、検索テーブルHIA1,HIB1と配列DIA,DIBの管理を行う。本機能は、初期動作として、検索テーブルHIA1,HIB1、配列DIA,DIBの領域を確保した後に、削除条件Tを読み込み、tIA=0,tIB=0とする。ここで、tIA、tIBはタイマ(もしくは、カウンタ=パケット数)を示す。その後に以下のように動作する。なお、以下では、入力ポートIA側の動作を説明しているが、入力ポートIB側の動作は、AとBを入れ換えれば同様となる。
【0052】
・tIA=Tとなった場合:
1.配列DIAより順次keyを参照し、HIA1(key):Mbit==オフの場合には、“HIA1(key):パケットデータ”をOIAへ出力する。
【0053】
2.検索テーブルHIA1と配列DIA1の内容をクリアする。
【0054】
3.tIA=0とする。
【0055】
・tIA<Tの場合:
1.本機能は動作しない。
【0056】
○テーブル管理モジュール22(請求項2,3,4,8):テーブル管理モジュール22は、入力ポートIAに対応する検索テーブルHIA1を管理し、入力ポートIBに対応する検索テーブルHIB1を管理する。検索テーブルに登録される個々のデータは、HIA(key)→(パケットデータ)であり、パケットデータのみにより構成される。
【0057】
テーブル管理モジュール22への入力は入出力モジュール21よりTINを通して与えられ、(key,data,attr)の組により構成される。keyは検索キーを示し、dataはパケットデータを示し、attrは、dataが入力ポートIA側からの入力か、入力ポートIB側からの入力かを示す。
【0058】
attr=IAとした場合の検索動作を説明する。なお、attr=IBの場合には、AとBが入れ換わった動作となる。
【0059】
・keyをもとにして、検索テーブルHIB1を検索する。
【0060】
−検索テーブルHIB1よりデータを取得した場合:
1.“HIB1(key):パケットデータ”をTOUTへ出力する。
2.HIB1より“HIB1(key):パケットデータ”を削除す る。
【0061】
−検索テーブルHIB1よりデータを取得できない場合:
1.NULLをTOUTへ出力する。
【0062】
2.HIA1(key)に(パケットデータ)を保存する。
【0063】
次に、テーブル管理モジュール22は検索テーブルHIA1,HIB1の管理を行う。本機能は、初期動作として、検索テーブルHIA1、HIB1の領域を確保した後に、削除条件Tを読み込み、tIA=0,tIB=0とする。ここで、tIA,tIBはタイマ(もしくは、カウンタ=パケット数)を示す。その後に以下のように動作する。なお、以下では、入力ポートIA側の動作を説明しているが、入力ポートIB側の動作は、AとBを入れ換えれば同様となる。
【0064】
・tIA=Tとなった場合:
1.検索テーブルHIA1にパケットデータが存在する場合には、そのデータをOIAへ出力する。
【0065】
2.検索テーブルHIA1の内容をクリアする。
【0066】
3.tIA=0とする。
【0067】
・tIA<Tの場合:
1.本機能は動作しない。
【0068】
○テーブル管理モジュール22(請求項2,3,4,5,7):テーブル管理モジュール22は、パケットマッチング装置10への入力端子別に、入力ポートIAに対応する検索テーブルHIA1,HIA2を管理し、入力ポートIBに対応する検索テーブルHIB1,HIB2を管理する。また、入力ポートIAとIBのために、それぞれ、keyからなる配列DIA1,DIA2,DIB1,DIB2を有する。検索テーブルに登録される個々のデータは,n=1,2とすると、HIAn(key)→(パケットデータ、Mbit)の組で構成される。
【0069】
Mbitは、keyに対応したパケットの属性を示す。Mbitの初期値はオフとする。keyに対応するパケットが見つかった際にはMbitはオンとなる。したがって、Mbitを参照することにより、keyに対応するパケットが見つかったかどうかを知ることができる。
【0070】
テーブル管理モジュール22への入力は入出力モジュール21よりTINを通して与えられ、(key,data,attr)の組により構成される。keyは検索キーを示し、dataはパケットデータを示し、attrは、dataがIA側からの入力か、IB側からの入力かを示す。
【0071】
attr=IAとした場合の検索動作を説明する。なお、attr=IBの場合には、AとBが入れ換わった動作となる。
【0072】
・keyをもとにして、HIBn(n=1,2)を検索する。
【0073】
−HIBm(m:任意のn)よりデータを取得できた場合:
*HIBm(key):Mbit==オフの場合:
1.“HIBm(key)パケットデータ”をOMへ出力する。
【0074】
2.HIBm(key):Mbit=オンとする。
【0075】
*HIBm(key):Mbit==オンの場合には、NULLをTOUTへ出力する。
【0076】
−HIBm(m:任意のn)よりデータを取得できない場合:
1.NULLをTOUTへ出力する。
【0077】
2.HIA1(key)に(パケットデータ、Mbit=オフ)からなるデータを保存する。
【0078】
3.DIA1にkeyを保存する。
【0079】
次に、テーブル管理モジュール22は、検索テーブルHIA1,HIA2,HIB1,HIB2と配列DIA1,DIA2,DIB1,DIB2の管理を行う。本機能は、初期動作として、HA0,HA1,HB0,HB1,DA0,DA1、DB0、DB1を領域を確保した後に、削除条件Tと読み込み、aをa<Tとなる値とすると、tIA=0,tIB=T−a:初期状態1(もしくは、tIA=T−a,tIB=0:初期状態2)とし、hia=0,hib=0とする。また、HIA1→HA0,HIA2→HA1,HIB1→HB0,HIB2→HB1とし、DIA1→DA0,DIA2→DA1、DIB1→DB0,DIB2→DB1とする。ここで、tIA,tIBはタイマ(もしくは、カウンタ=パケット数)を示す。その後に以下のように動作する。以下では、IAの側の動作を説明しているが、IB側の動作は、AとBを入れ換えれば同様となる。
【0080】
・tIA=Tとなった場合:
−その1−1
1.DIA2より順次keyを参照し、HIA2(key):Mbit==オフの場合には、“HIA2(key):バケットデータ”をOIAへ出力する。
【0081】
2.HA2→HAhiaとし、DIA2→DAhiaとする。
【0082】
3.hia=1−hiaとし、HIA1→HAhia,DIA1→DAhiaとする。
【0083】
4.HIA1とDIA1の内容をクリアする。
【0084】
5.tIA=0とする。
【0085】
−その1−2
1.HIA2→HAhiaとし、DIA2→DAhiaとする。
【0086】
2.hia=1−hiaとし、HIA1→HAhia,DIA1→DAhiaとする。
【0087】
3.DIA1より順次keyを参照し、HIA1(key):Mbit==オフの場合には、“HIA1(key):パケットデータ”をOIAへ出力する。
【0088】
4.HIA1とDIA1をクリアする。
【0089】
5.tIA=0とする。
【0090】
−その2
1.DIA2より順次keyを参照し、HIA2(key):Mbit==オフの場合には、“HIA2(key):パケットデータ”をOIAへ出力する。
【0091】
2.HIA2とDIA2の内容をクリアする。
【0092】
3.HIA2→HAhiaとし、DIA2→DAhiaとする。
【0093】
4.hia=1−hiaとする。
【0094】
5.HIA1→HAhiaとし、DIA1→DAhiaとする。
【0095】
6.tIA=0とする。
【0096】
−その3−1
1.DIA2より順次keyを参照し、HIA2(key):Mbit==オフの場合には、“HIA2(key):パケットデータ”をOIAへ出力する。
【0097】
2.HIA2→HAhiaとし、DIA2→DAhiaとする。
【0098】
3.hia=1−hiaとし、HAhiaとDAhiaをクリアする。
【0099】
4.HIA1→HAhia,DIA1→DAhiaとする。
【0100】
5.tIA=0とする。
【0101】
−その3−2
1.HIA2→DAhiaとし、DIA2→DAhiaとする。
【0102】
2.hia=1−hiaとする。
【0103】
3.DAhiaより順次keyを参照し、HAhia:Mbit==オフの場合には、“HAhia(key):パケットデータ”をOLAへ出力する。
【0104】
4.HAhiaとDAhiaをクリアする。
【0105】
5.HIA1→HAhia,DIA1→DAhiaとする。
【0106】
6.tIA=0とする。
【0107】
・tIA<Tの場合:
1.本機能は動作しない。
【0108】
○テーブル管理モジュール22(請求項2,3,4,5,8):テーブル管理モジュール22は、入力ポートIAに対応する検索テーブルHIA1,HIA2を管理し、入力ポートIBに対応する検索テーブルHIB1,HIB2を管理する。検索テーブルに登録される個々のデータは、n=1,2とすると、HIAn(key)→(パケットデータ)であり、パケットデータのみにより構成される。
【0109】
テーブル管理モジュール22への入力は入力モジュール21よりTINを通して与えられ、(key,data,attr)の組により構成される。keyは検索キーを示し、dataはパケットデータを示し、attrは、dataが入力ポートIA側からの入力か、入力ポートIB側からの入力かを示す。
【0110】
attr=IAとした場合の検索動作を説明する。なお、attr=IBの場合には、AとBが入れ換わった動作となる。
【0111】
・keyをもとにして、HIBn(n=1,2)を検索する。
【0112】
−HIBm(m:任意のn)よりデータを取得できた場合:
1.“HIBm(key):パケットデータ”をTOUTへ出力する。
【0113】
2.HIBm(key)より“HIBm(key):パケットデータ”
を削除する。
【0114】
−HIBm(m:任意のn)よりデータを取得できない場合:
1.NULLをTOUTへ出力する。
【0115】
2.HIA1(key)に(パケットデータ)を保存する。
【0116】
次に、テーブル管理モジュール22は、検索テーブルHIA1,HIA2,HIB1,HIB2の管理を行う。本機能は、初期動作として、検索テーブルHA0,HA1,HB0,HB1の領域を確保した後に、削除条件Tを読み込み、aをa<Tなる値とすると、tIA=0,tIB=T−a:初期状態1(もしくは、tIA=T−a,tIB=0:初期状態2)とし、hia=0,hib=0とする。また、HIA1→HA0,HIA2→HA1,HIB1→HB0,HIB2→HIB1とする。ここで、tIA,tIBはタイマ(もしくは、カウンタ=パケット数)を示す。その後に以下のように動作する。なお、以下では、入力ポートIA側の動作を説明しているが、入力ポートIB側の動作はAとBを入れ換えれば同様となる。
【0117】
・tIA=Tとなった場合:
−その1−1
1.検索テーブルHIA2にパケットデータが存在する場合には、それをOIAへ出力する。
【0118】
2.検索テーブルHIA2→HAhiaとする。
【0119】
3.hia=1−hiaとして、HIA1→HAhiaとする。
【0120】
4.検索テーブルHIA1の内容をクリアする。
【0121】
5.tIA=0とする。
【0122】
−その1−2
1.検索テーブルHIA2→HAhiaとする。
【0123】
2.hia=1ーhiaとして、HIA1→HAhiaとする。
【0124】
3.検索テーブルHIA1にパケットデータが存在する場合には、それをOIAへ出力する。
【0125】
4.検索テーブルHIA1の内容をクリアする。
【0126】
5.tIA=0とする。
【0127】
−その2
1.検索テーブルHIA2パケットデータが存在する場合には、それをOIAへ出力する。
【0128】
2.検索テーブルHIA2の内容をクリアする。
【0129】
3.検索テーブルHIA2→HAhiaとする。
【0130】
4.hia=1−hiaとして、HIA1→HAhiaとする。
【0131】
5.tIA=0とする。
【0132】
−その3−1
1.検索テーブルHIA2→HAhiaとする。
【0133】
2.hia=1−hiaとする。
【0134】
3.HAhiaにパケットデータが存在する場合には、それをOIAへ出力する。
【0135】
4.HAhiaをクリアする。
【0136】
5.検索テーブルHIA1→HAhiaとする。
【0137】
6.tIA=0とする。
【0138】
−その3−2
1.検索テーブルHIA2にパケットデータが存在する場合には、それをOIAへ出力する。
【0139】
2.検索テーブルHIA2→HAhiaとする。
【0140】
3.検索テーブルhia=1−hiaとして、HAhiaをクリアする。
4.検索テーブルHIA1→HAhiaとする。
【0141】
5.tIA=0とする。
【0142】
・tIA<Tの場合:
1.本機能は動作しない。
【0143】
○テーブル管理モジュール22:その2(請求項2,3,4,5,7):テーブル管理モジュール22は、パケットマッチング装置10への入力端子別に、入力ポートIAに対応する検索テーブルHIA1,HIA2を管理し、入力ポートIBに対応する検索テーブルHIB1,HIB2を管理する。また、入力ポートIAとIBのために、それぞれ、keyからなる配列DIA1,DIA2,DIB1,DIB2を有する。検索テーブルに登録される個々のデータは、n=1,2とすると、HIAn(key)→(パケットデータ、Mbit)の組で構成される。
【0144】
Mbitはkeyに対応したパケットの属性を示す。Mbitの初期値はオフとする。keyに対応するパケットが見つかった際にはMbitはオンとなる。したがって、Mbitを参照することにより、keyに対応するパケットが見つかったかどうかを知ることができる。
【0145】
テーブル管理モジュール22への入力は入出力モジュール21よりTINを通して与えられ、(key,data,attr)の組により構成される。keyは検索キーを示し、dataはパケットデータを示し、attrは、dataがIA側からの入力か、IB側からの入力かを示す。
【0146】
attr=IAとした場合の検索動作を説明する。なお、attr=IBの場合には、AとBが入れ換わった動作となる。
【0147】
・keyをもとにして、HIBn(n=1,2)を検索する。
【0148】
−HIBm(m:任意のn)よりデータを取得できた場合:
HIBm(key):Mbit==オフの場合:
1.“HIBm(key):パケットデータ”をTOUTへ出力する。
【0149】
2.HIBm(key):Mbit=オンとする。
【0150】
HIBm(key):==オンの場合には、NULLをTOUTへ出力する。
【0151】
−HIBm(m:任意のn)よりデータを取得できない場合:
1.NULLをTOUTへ出力する。
【0152】
2.HIA1(key)に(パケットデータ、Mbit:=オンからなるデータを保存する。1は、次パラグラフを参照。
【0153】
3.DIA1にkeyを保存する。1は、次パラグラフを参照。
【0154】
次に、テーブル管理モジュール22は、検索テーブルHIA1,HIA2,HIB1,HIB2と配列DIA1,DIA2,DIB1,DIB2の管理を行う。本機能は、初期動作として、検索テーブルHA0,HA1,HB0,HB1,配列DA0,DA1,DB0,DB1の領域を確保した後に、削除条件T、条件t(t<=T/2)を読み込み、tIA=tIB=0とする。また、hia=0,hib=0とする。さらに、HIA1→HA0,HIA2→HA1,HIB1→HB0,HIB2→HB1とし、DIA1→DA0、DIA2→DA1、DIB1→DB0,DIB2→DB1とする。ここで、tIA,tIBがタイマ(もしくは、カウンタ=パケット数)を示す。その後に以下のように動作する。以下では、IA側の動作を説明しているが、IB側の動作は、AとBを入れ換えれば同様となる。
【0155】
・その1
−tIA<tの場合:
1.1=hia+1とする。
【0156】
−t≦tIA<Tの場合:
1.1=1と2の両方の値とする。
【0157】
−tIA=Tとなった場合:
1.DAhiaより順次keyを参照し、HAhia(key):Mbit==オフの場合には、“HAhia(key):パケットデータ”をOIAへ出力する。
【0158】
2.HAhiaとDAhiaの内容をクリアする。
【0159】
3.hia=1−hiaとする。
【0160】
4.tIA=0とする。
【0161】
・その2
−tIA<tの場合:
1.1=1とする。
【0162】
−t<=tIA<Tの場合:
1.1=1と2の両方の値とする。
【0163】
−tIA=Tとなった場合:
*その2−1−1
1.DIA2より順次keyを参照し、HIA2(key):Mbit==オフの場合には、“HIA2(key):パケットデータ”を
OIAへ出力する。
【0164】
2.HIA2→HAhiaとし、DIA2→DAhiaとする。
【0165】
3.hia=1−hiaとし、HIA1→HAhia,DIA1→DAhiaとする。
【0166】
4.HIA1とDIA1の内容をクリアする。
【0167】
5.tIA=0とする。
【0168】
*その2−1−2
1.HIA2→HAhiaとし、DIA2→DAhiaとする。
【0169】
2.hia=1−hiaとし、HIA1→HAhia,DIA1→DAhiaとする。
【0170】
3.DIA1より順次keyを参照し、HIA1(key):Mbit==オフの場合には、“HIA1(key):パケットデータ”をOIAへ出力する。
【0171】
4.HIA1とDIA1をクリアする。
【0172】
5.tIA=0とする。
【0173】
*その2−2
1.DIA2より順次keyを参照し、HIA2(key):Mbit==オフの場合には、“HIA2(key):パケットデータ”をOIAへ出力する。
【0174】
2.HIA2とDIA2の内容をクリアする。
【0175】
3.HIA2→HAhiaとし、DIA2→DAhiaとする。
【0176】
4.hia=1−hiaとする。
【0177】
5.HIA1→DIhiaとし、DIA1→DAhiaとする。
【0178】
6.tIA=0とする。
【0179】
*その2−3−1
1.DIA2より順次keyを参照し、HIA2(key):Mbit==オフの場合には、“HIA2(key):パケットデータ”をOIAへ出力する。
【0180】
2.HIA2→HAhiaとし、DIA2→DAhiaとする。
【0181】
3.hia=1−hiaとし、HAhiaとDAhiaをクリアする。
4.HIA1→HAhia,DIA1→DAhiaとする。
【0182】
5.tIA=0とする。
【0183】
*その2−3−2
1.HIA2→DIhiaとし、DIA2→DAhiaとする。
【0184】
2.hia=1−hiaとする。
3.DAhiaより順次keyを参照し、HAhia:Mbit== オフの場合には、“HAhia(key):パケットデータ”をOIAへ出力する。
4.HAhiaとDAhiaをクリアする。
5.HIA1→HAhia,DIA1→DAhiaとする。
6.tIA=0とする。
○テーブル管理モジュール22(請求項2,3,4,5,8):テーブル管理モジュール22は、入力ポートIAに対応する検索テーブルHIA1、HIA2を管理し、入力ポートIBに対応する検索テーブルHIB1,HIB2を管理する。検索テーブルに登録される個々のデータは、n=1,2とすると、HIAn(key)→(パケットデータ)であり、パケットデータのみにより構成される。
【0185】
テーブル管理モジュール22への入力は入出力モジュール21よりTINを通して与えられ、(key,data,attr)の組により構成される。keyは検索キーを示し、dataはパケットデータを示し、atterは、dataがIA側からの入力か、IB側からの入力かを示す。
【0186】
attr=IAとした場合の検索動作を説明する。なお、attr=IBの場合には、AとBが入れ換わった動作となる。
【0187】
・keyをもとにして、HIBn(n=1,2)を検索する。
【0188】
−HIBm(m:任意のn)よりデータを取得できた場合:
1.“HIBm(key)パケットデータ”をTOUTへ出力する。
【0189】
2.HIBm(key)より、“HIBm(key):パケットデータ”を削除する。
【0190】
−HIBm(m:任意のn)よりデータを取得できない場合:
1.NULLをTOUTへ出力する。
【0191】
2.HIA1(key)に(パケットデータ、Mbit=オフ)からなるデータを保存する。1は、次パラグラフを参照。
【0192】
次に、テーブル管理モジュール22は、検索テーブルHIA1,HIA2,HIB1,HIB2の管理を行う。本機能は、初期動作として、HA0,HA1,HB0,HB1の領域を確保した後に、削除条件T、条件t(t<=T/2)を読み込み、tIA=tIB=0とする。また、hia=0,hib=0とする。さらに、HIA1→HA0,HIA2→HA1,HIB1→HB0,HIB2→HB1とする。ここで、tIA,tIBはタイマ(もしくは、カウンタ=パケット数)を示す。その後に以下のように動作する。以下では、入力ポートIA側の動作を説明しているが、入力ポートIB側の動作は、AとBを入れ換えれば同様となる。
【0193】
・その1
−tI<tの場合
1.1=hia+1とする。
【0194】
−t<=tIA<Tの場合:
1.1=hia+1,2−hiaとする。
【0195】
−tIA=Tとなった場合:
1.HAhiaにパケットデータが存在する場合には、それをOIAへ出力する。
【0196】
2.HAhiaの内容をクリアする。
【0197】
3.hia=1−hiaとする。
【0198】
4.tIA=0とする。
【0199】
・その2
−tIA<tの場合
1.1=1とする。
【0200】
−t<=tIA<Tの場合:
1.1=1,2とする。
【0201】
−tIA=Tとなった場合:
*その2−1−1
1.検索テーブルHIA2にパケットデータが存在する場合には、それをOIAへ出力する。
【0202】
2.検索テーブルHIA2→HAhiaとする。
【0203】
3.検索テーブルhia=1−hiaとし、HIA1→HAhiaとする。
【0204】
4.検索テーブルHIA1の内容をクリアする。
【0205】
5.tIA=0とする。
【0206】
*その2−1−2
1.検索テーブルHIA2→HAhiaとする。
【0207】
2.hia=1−hiaとし、HIA1→HAhiaとする。
【0208】
3.検索テーブルHIA1にパケットデータが存在する場合には、それ
をOIAへ出力する。
【0209】
4.検索テーブルHIA1と配列DIA1をクリアする。
【0210】
5.tIA=0とする。
【0211】
*その2−2
1.検索テーブルHIA2にパケットデータが存在する場合には、それ
をOIAへ出力する。
【0212】
2.検索テーブルHIA2の内容をクリアする。
【0213】
3.検索テーブルHIA2→HAhiaとする。
【0214】
4.hia=1−hiaとする。
【0215】
5.検索テーブルHIA1→HAhiaとする。
【0216】
6.tIA=0とする。
【0217】
*その2−3−1
1.検索テーブルHIA2にパケットデータが存在する場合には、それをOIAへ出力する。
【0218】
2.検索テーブルHIA2→HAhiaとする。
【0219】
3.hia=1−hiaとし、HAhiaをクリアする。
【0220】
4.検索テーブルHIA1→HAhiaとする。
【0221】
5.tIA=0とする。
【0222】
*その2−3−2
1.検索テーブルHIA2→HAhiaとする。
【0223】
2.hia=1−hiaとする。
【0224】
3.HAhiaにパケットデータが存在する場合には、それをOIAへ出力する。
【0225】
4.HAhiaをクリアする。
【0226】
5.検索テーブルHIA1→HAhiaとする。
【0227】
6.tIA=0とする。
【0228】
○テーブル管理モジュール22(請求項2,3,4,6.7):テーブル管理モジュール22は、パケットマッチング装置10への入力端子別に入力ポートIAに対応する検索テーブルHIA1を管理し、入力ポートIBに対応する検索テーブルHIB1,HIB2,HIB3を管理する。また、入力ポートIAとIBのために、それぞれ、keyからなる配列DIA1,DIB1,DIB2,DIB3を有する。検索テーブルに登録される個々のデータは(パケットデータ、Mbit)の組で構成される。
【0229】
Mbitはkeyに対応したパケットの属性を示す。Mbitの初期値はオフとする。keyに対応するパケットが見つかった際にはMbitはオンとなる。したがって、Mbitを参照することにより、keyに対応するパケットが見つかったかどうかを知ることができる。
【0230】
テーブル管理モジュール22への入力は入出力モジュール21よりTINを通して与えられ、(key,data,attr)の組により構成される。keyは検索キーを示し、dataはパケットデータを示し、attrは、dataがIA側からの入力か、IB側からの入力かを示す。
【0231】
attr=IAとした場合の検索動作を説明する。nは、n=1,2,3となる整数である。なお、attr=IBの場合には、n=1となり、AとBが入れ換わった動作となる。
【0232】
・keyをもとにして、HIBnを検索する(n>1の場合には全てのnについて調べる)。
【0233】
−HIBm(m:任意のn)よりデータを取得できた場合:
*HIBm(key):Mbit==オフの場合:
1.“HIBm(key):パケットデータ”をTOUTへ出力する。
【0234】
2.HIBm(key):Mbit=オンとする。
【0235】
*HIBm(key):Mbit==オンの場合には、NULLをTOUTへ出力する。
【0236】
−HIBm(m=任意のn)よりデータを取得できない場合:
1.NULLをTOUTへ出力する。
【0237】
2.HIA1(key)に(バケットデータ、Mbit=オフ)からなるデータを保存する。
【0238】
3.DIA1に、keyを保存する。
【0239】
次に、テーブル管理モジュール22は検索テーブルHIA1,HIB1,HIB2,HIB3と配列DIA,DIB1,DIB2,DIB3の管理を行う。本機能は、初期動作として、検索テーブルHIA1,HB0,HB1,HB2,配列DIA,DB0,DB1,DB2を領域確保した後に、削除条件Tを読み込み、tIA=0.tIB=0とする。また、HIB1→HB0,HIB2→HB1,HIB3→HB2とし、DIB1→DB0,DIB2→DB1,DIB3→DB2とする。ここで、tIA,tIBはタイマ(もしくは、カウンタ=パケット数)を示す。その後に以下のように動作する。なお、hibは0で始まり、この値は、2ビットカウンタ(インクリメントすると、0,1,2,0,1,2,・・・と続く)とする。
【0240】
・tIA=Tとなった場合:
1.DIA1より順次keyを参照し、HIA1(key):Mbit==オフの場合には、“HIB3(key):パケットデータ”をOIAへ出力する。
【0241】
2.HIA1とDIA1の内容をクリアする。
【0242】
3.tIA=0とする。
【0243】
・tIA<Tの場合:
1.本機能は動作しない。
【0244】
・tIB=Tとなった場合:
−その1−1
1.DIN3より順次keyを参照し、HIB3(key):Mbit=オフの場合には、“HIB3(key):パケットデータ”をOIAへ出力する。
【0245】
2.a=hib+1とすると、HIB2→HBhib,HIB3→HBaとし、DIB2→HBhib,DIB3→DBaとする。
【0246】
3.hib=hib−1とし、HIB0→HBhib,DIB0→DBhibとする。
【0247】
4.HIB0とDIB0の内容をクリアする。
【0248】
5.tIB=0とする。
【0249】
−その1−2
1.a=hib+1とすると、HIB2→HBhib,HIB3→HBaとし、DIB2→HBhib,DIB3→DBaとする。
【0250】
2.hib=hib−1とし、HIB0→HBhib,DIB0→DBhibとする。
【0251】
3.DIB0より順次keyを参照し、HIB0(key):Mbit=オフの場合には、“HIB0(key):パケットデータ”をOIAへ出力する。
【0252】
4.HIB0とDIB0の内容をクリアする。
【0253】
5.tIB=0とする。
【0254】
−その2
1.DIB3より順次keyを参照し、HIB3(key):Mbit=オフの場合には、“HIB3(key):パケットデータ”をOIAへ出力する。
【0255】
2.HIB3とDIB3の内容をクリアする。
【0256】
3.a=hib+1とすると、HIB2→HBhib,HIB3→HBaとし、DIB2→DBhib,DIB3→DBaとする。
【0257】
4.hib=hib−1とし、HIB0→HBhib,DIB0→DBhibとする。
【0258】
5.tIB=0とする。
【0259】
−その3−1
1.DIB3より順次keyを参照し、HIB3(key):Mbit=オフの場合には、“HIB3(key):パケットデータ”をOIAへ出力する。
【0260】
2.a=hib+1とすると、HIB2→HBhib,HIB3→HBaとし、DIB2→DBhib,DIB3→DBaとする。
【0261】
3.hib=hib−1とし、HBhibとDAhibをクリアする。
【0262】
4.HIB0→HBhib,DIB0→DBhibとする。
【0263】
5.tIB=0とする。
【0264】
−その3−2
1.a=hib+1とすると、HIB2→HBhib,HIB3→HBaとし、DIB2→DBhib,DIB3→DBaとする。
2.hib=hib−1とする。
【0265】
3.DBhibより順次keyを参照し、HBhib(key):Mbit=オフの場合には、“HBhib(key):パケットデータ”をOIAへ出力する。
【0266】
4.HBhibとDAhibをクリアする。
【0267】
5.HIB0→HBhib,DIB0→DBhibとする。
【0268】
6.tIB=0とする。
【0269】
・tIB<Tの場合:
1.本機能は動作しない。
【0270】
○テーブル管理モジュール22(請求項2,3,4,6,8):テーブル管理モジュール22は、入力ポートIAに対応する検索テーブルHIA1を管理し、入力ポートIBに対応する検索テーブルHIB1,HIB2,HIB3を管理する。検索テーブルに登録される個々のデータはパケットデータであり、パケットデータのみにより構成される。
【0271】
テーブル管理モジュール22への入力は入出力モジュール21よりTINを通して与えられ、(key,data,attr)の組により構成される。keyは検索キーを示し、dataはパケットデータを示し、attrは、dataがIA側からの入力か、IB側からの入力かを示す。
【0272】
attr=IAとした場合の検索動作を説明する。なお、attr=IBの場合には、n=1となり、AとBが入れ換わった動作となる。
【0273】
・keyをもとにして、HIBnを検索する(n>1の場合には、全てのnについて調べる)
−HIBm(m:任意のn)よりデータを取得できた場合:
1.HIBm(key):パケットデータをTOUTへ出力する。
【0274】
2.HIBm(key)より、HIBm(key):パケットデータを削除する。
【0275】
−HIBm(m:任意のn)よりデータを取得できない場合:
1.NULLをTOUTへ出力する。
【0276】
2.HIA1(key)に(パケットデータ)を保存する。
【0277】
次に、テーブル管理モジュール22は検索テーブルHIA1,HIB1,HIB2,HIB3の管理を行う。本機能は、初期動作として、検索テーブルHIA1,HB0,HB1,HB2の領域を確保した後に、削除条件Tを読み込み、tIA=0,tIB=0とする。また、HIB1→HB0,HIB2→HB1,HIB3→HB2とする。ここで、tIA,tIBはタイマ(もしくはカウンタ=パケット数)を示す。その後に以下のように動作する。なお、hibは、0で始まり、この値は2ビットカウンタ(インクリメントすると、0,1,2,0,1,2,・・・と続く)とする。
【0278】
・tIA=Tとなった場合:
1.HIA1にパケットデータが存在する場合には、それをOIAへ出力する。
【0279】
2.HIA1の内容をクリアする。
【0280】
3.tIA=0とする。
【0281】
・tIA<Tの場合:
1.本機能は動作しない。
【0282】
・tIB=Tとなった場合:
−その1−1
1.HIB3にパケットデータが存在する場合には、それをOIBへ出力する。
【0283】
2.HIB2→HBhib,a=hib+1とすると、HIB3→HBaとする。
【0284】
3.hib=hib−1とし、HIB0→HBhibとする。
【0285】
4.HIB0の内容をクリアする。
【0286】
5.tIB=0とする。
【0287】
−その1−2
1.HIB2→HBhib,a=hib+1とすると、HIB3→HBaとする。
【0288】
2.hib=hib−1とし、HIB0→HBhibとする。
【0289】
3.HIB0にパケットデータが存在する場合には、それをOIBへ出力する。
【0290】
4.HIB0の内容をクリアする。
【0291】
5.tIB=0とする。
【0292】
−その2
1.HIB3にパケットデータが存在する場合には、それをOIBへ出力する。
【0293】
2.HIB3の内容をクリアする。
【0294】
3.HIB2→HIBhib,a=hib+1とすると、HIB3→HBaとする。
【0295】
4.hib=hib−1とする。
【0296】
5.tIB=0とする。
【0297】
−その3−1
1.HIB3にパケットデータが存在する場合には、それをOIBへ出力する。
【0298】
2.HIB2→HBhib,a=hib+1とすると、HIB3→HBaとする。
【0299】
3.hib=hib−1とし、HBhibとDAhibをクリアする。
【0300】
4.HIB0→HBhibとする。
【0301】
5.tIB=0とする。
【0302】
−その3−2
1.HIB2→HBhib,a=hib1とすると、HIB3→HBaとする。
【0303】
2.hib=hib−1とする。
【0304】
3.HBhibにパケットデータが存在する場合には、それをOIBへ出力する。
【0305】
4.HBhibをクリアする。
【0306】
5.HIB0→HBhibとする。
【0307】
6.tIB=0とする。
【0308】
・tIB<Tの場合:
1.本機能は動作しない。
【0309】
「タイムスタンプ処理機構13」(請求項9):マッチング機構12の入出力モジュール21より(a,b)の組からなるパケットデータのストリームが送られてきたとする。さらに、aは、(Ta,a)といった、タイムスタンプTaとデータaを持ち、bは、(Tb,b)といったタイムスタンプTbとデータbを持つ。この場合に、(a,b)が入力として与えられると、(Ta,Tb,a)(もしくは、(Ta,Tb,b))という組からなるデータをパケットデータストリームとして出力する。
【0310】
ストリーム同期装置30(請求項10):ストリーム同期装置30は、図6に示すように、発火機構31とSIQVヘッダ再生機構32からなる。本装置を用いて同期制御を行うには、プローブにてパケットがコピーされ、そのデータがストリームデータとして監視サーバへ送られる際に、定期的にシーケンス番号を含むパケットが挿入されている必要がある。これに仮に、SIQVヘッダと呼ぶ。
【0311】
SIQVヘッダは、パケットプローブ装置により一定間隔で生成され、シーケンス番号はSIQVヘッダが作成される度にインクリメントされる。ストリーム同期装置30では、シーケンス番号が等しいSIQVヘッダに区切られたストリーム単位で実行を行うことにより、パケットデータストリーム収集時間の誤差を吸収する同期実行制御が可能となる。
【0312】
ストリーム同期装置30が有する発火機構31の基本動作を図7に示す。図7にあるように、等しいシーケンス番号を持つSIQVヘッダが両側の入力に揃った際に、発火が行われる。その後に、SIQVヘッダ以降のデータを随時読み込む。片側の入力にのみSIQVヘッダが現れた場合には、その入力側をロックして、データの読み込みを止める。なお、SIQVヘッダに区切られたストリーム単位で実行を行うということは、各リンクバッファの最大量が算出できるとい利点が生じる。
【0313】
発火機構31では、詳しくは以下のように実行を制御する、動作例を図8に示す。
【0314】
・片側の入力の先頭にのみ同期パケットがある場合
(図8(1),(3),(6)):他方の入力へ同期パケットが到着するのを待つ。
【0315】
・両方の入力の先頭に等しいシーケンス番号を持つ同期パケットが揃った場合(図8(2),(4)):同期パケットを取り除いて、以降のデータストリームを読み込み、検索テーブルへ送る。これを発火と呼ぶ。この際に、同期パケットのシーケンス番号をSequence register と呼ばれる変数に保存する。
【0316】
・両方の入力の先頭に異なるシーケンス番号を持つ同期パケットがある場合(図8(5)):小さなシーケンス番号を持つ同期パケット以降のデータストリームを、同期パケットを取り除いて、以降のデータストリームに読み込み、検索テーブルへ送る。
【0317】
・Sequence register の値より小さなシーケンス番号を持つ同期パケットがある場合:同期パケットを取り除いて、以降のデータストリームを読み込み、検索テーブルへ送る。
【0318】
なお、ストリーム同期装置30は、SIQVヘッダ再生機構32を有する。SIQVヘッダ再生機構32は、発火機構31により取り外された同期パケットを再生する機構である。この機構は、発火機構31により発火が行われた際に、同期パケットを生成して、全ての出力口へ出力する。この際に、発火した同期パケットのシーケンス番号を、本機構が新たに生成する同期パケットのシーケンス番号とする。発火が行われない場合には、検索テーブルより出力されるパケットストリームを出力する。
【0319】
図9に品質監視網と被監視網を例示する。被監視網は、ホスト40とルータ41と試験パケット生成用ホスト42で構成され、これらは、イーサネットとフレームリレーを用いてIP接続される。品質監視網は、パケットプローブ装置43と監視ステーション44(監視サーバ)で構成され、これらはイーサネットやISDNを用いてIP接続される。さらに、パケットプローブ装置43は、ISDNを利用して時計同期が行われており、パケットプローブ装置43と監視ステーション44は非常に正確に時計同期されている。
【0320】
パケットプローブ装置43は、被監視網のイーサネットとフレームリレーをプローブするプローブインタフェースを有する(図の○)。このプローブにより、被監視網のイーサネットとフレームリレーを流れるIPパケットを監視する。プローブされた結果は監視ステーション44に送られて、この監視ステーション44において、実時間パケットトラッキングが行われる。
【0321】
図9に示すようなネットワーク品質監視網において、監視サーバ(Data Collection Server)で利用する分析プログラム(福田晴元、小野諭、高橋直久、“インターネットQoSビジュアライザの設計と実現”信学会論文誌マルチメディアネットワーク/サービス品質特集号、Jul., 1997)のmpfノードでの利用が例として上げられる。パケットデータストリ−ムの同期に必要SIQVヘッダは、パケット収集装置によりパケットデータストリームに挿入され、Pinノードにおいて、SIQVヘッダ形式へと変更される。
【0322】
mpfは図10で例示するように構成される。分析プログラムは、図11として与えられたとする。Pinで生成されるSIQVヘッダにより区切られたデータストリームがmpfの入力に到着する。ストリーム同期装置30の発火機構31により、SIQVヘッダのシーケンス番号にしたがった発火制御が行われ、データが内部に取り込まれる。さらに、パケットマッチング装置10において、マッチング処理が行われる。このようにして処理されたデータは、unmatch,unmatch,match の計3個の出力先へ出力される。SIQVヘッダ再生機構32により、SIQVヘッダが付与されてmpfより出力される。
【0323】
プローブでパケットをコピーした際に、タイムスタンプを付与して監視サーバへデータストリームを送ることが考えられる。mpfへの入力は、(t,p)というように時間を示すタイムスタンプとパケットデータの組からなるストリームとなる。この場合には、タイムスタンプ処理機構13により入力が(t1,p),(t2,p)の場合には、match したデータは、(t1,t2,p)と出力される。このt1,t2を比較することにより、時間差が算出される。
【0324】
このように、mpfノードの処理を実時間で行うことにより、片道遅延等の変動がリアルタイムに算出可能である。さらに、このようにして出力されたデータのタイムスタンプを操作することにより、実時間でのパケットトラッキング、すなわち、ネットワーク上でのパケットの動作が観測可能となる。
【0325】
【発明の効果】
請求項1,3:本発明を監視サーバ上で用いることにより、複数の地点から送られてくる連続したデータより、実時間でのパケットトラッキングが可能となる。さらに、本発明をパケット網に適用して、実時間でのパケットトラッキングを行うことにより、実時間での品質変動把握が可能となる。請求項2を実現したパケットマッチング装置を用いることにより、ストリーム状で送られてくるパケットデータについて、同一パケットデータを選出し、パケットマチングを行うことを実時間で処理することが可能となる。
【0326】
請求項4:パケットマッチング装置を用いる際に、マッチング機構において、ハッシュを用いることにより、実時間でのパケットマッチングが可能になる。
【0327】
請求項5:パトリシア木を用いて検索テーブルに入力データを登録することにより、実時間でのパケットマッチングが可能になる。
【0328】
請求項6:両方の入力レートが時間によって異なる場合に、パケットマッチングされるべきパケットを検索テーブルに確実に登録することが可能になる。
【0329】
請求項7:片側の入力レートが非常に大きい場合に、検索テーブルに対して、パケットマッチングされるべきパケットを確実にテーブルへ登録することが可能になる。
【0330】
請求項8:検索テーブルからパケットデータを削除することに非常にコストがかかる場合に、検索に失敗したパケットを出力する機能を実時間で動作させることが可能になる。
【0331】
請求項9:検索テーブル全体を削除することに非常にコストがかかる場合に、検索に失敗したパケットを出力する機能を実時間で動作させることが可能になる。
【0332】
請求項2、10:差分等を計算することにより、ストリーム状で送られてくる二つのパケットデータについて、同一パケットデータの時間差や時間差の変動を調べることが可能になる。
【0333】
請求項11:各プローブから監視サーバへの遅延変動や遅延差が大きい場合には、請求項4〜9の発明に手を加えることなく、遅延誤差を最小にし、パケットマッチングされるべきパケットが全てのテーブルへ取り込まれ、パケットマッチングが正常に行われることを可能にする。さらに、各プローブから監視サーバへのネットワーク構成を考える際に、データストリームの転送遅延を考慮する必要がなくなる。
【図面の簡単な説明】
【図1】本発明の実時間パケットトラッキング方法を示す図である。
【図2】パケットマッチング装置の入出力ポートを示す図である。
【図3】パケットマッチング装置の構成図である。
【図4】マッチング機構12の構成図である。
【図5】マスキングの実行例を示す図である。
【図6】ストリーム同期装置の構成図である。
【図7】パケットデータストリームの同期方法の例を示す図である。
【図8】シーケンス番号と早期制御を示す図である。
【図9】ネットワーク品質管理網を示す図である。
【図10】mpfノードの構成図である。
【図11】分析プログラムを示す図である。
【図12】パケットネットワークとプローブを示す図である。
【図13】従来のパケットトラッキング方法を示す図である。
【符号の説明】
10 パケットマッチング装置
11 マスキング機構
12 マッチング機構
13 タイムスタンプ機構
21 入出力モジュール
22 テーブル管理モジュール
30 ストリーム同期装置
31 発火機構
32 SIQVヘッダ再生機構
40 ホスト
41 ルータ
42 試験パケット生成用ホスト
43 パケットプローブ装置
44 監視ステーション[0001]
TECHNICAL FIELD OF THE INVENTION
The present invention relates to a network for transmitting packets, and more particularly, to a packet tracking method.
[0002]
[Prior art]
In a network (called a user network) for transmitting information (packets), as shown in FIG. 12, probes (packet probe devices 100) for probing packets flowing on the network via a
[0003]
Conventionally, in order to perform packet matching, as shown in FIG. 13, packet data copied by a
[0004]
[Problems to be solved by the invention]
The conventional technique has the following problems with respect to matching in real time.
[0005]
・ Since processing is not performed in real time, continuous monitoring over a certain period of time is impossible.
[0006]
-Since the search is performed by matching the packet data, it takes a long time for the matching process.
[0007]
-When the capacity of the search table is small, an efficient registration method for the search table is required.
[0008]
-Even if a search table is used, a long search key may increase the reference time of the search table.
[0009]
-When the input rates for the two inputs are different, the amounts registered in the search table are different. If the search table is very small, packets from one side of the input may not be registered in the search table, and packet matching may not be performed properly.
[0010]
-The function to output the packet that failed to search may not work in real time.
-To perform packet matching, prepare a small finite table, fetch packet stream fragments into that table, search for equal packets based on search keys, and always update the table at short intervals Is required. By the way, if the arrival time of the packet is different or a certain time is required, if this time is longer than the time for updating the table, the packet to be subjected to packet matching is not taken in all tables, Matching does not work properly.
[0011]
An object of the present invention is to provide a real-time packet tracking method and a packet matching device capable of real-time packet matching.
[0012]
[Means for Solving the Problems]
According to the real-time packet tracking method of the present invention, for each packet of each packet stream, a search key is created by extracting a part of the data of the packet. It checks whether the packet has been sent, and if so, outputs those packet pairs and outputs to another output port a packet to which no packet with the same search key is sent even after waiting for a certain period of time.
[0013]
The packet matching device according to the present invention includes a masking unit that extracts a part of the data of a packet and creates a search key for each packet of each packet stream, A matching means that checks whether the packet has already been sent, and if so, outputs those packet pairs and outputs to another output port a packet to which no packet with the same search key is sent even after waiting for a certain period of time Have.
[0014]
Therefore, by using this apparatus on a monitoring server, packet tracking can be performed in real time from continuous data transmitted from a plurality of points.
[0015]
When using the packet matching device, the matching means uses a hash, so that packet matching can be performed in real time.
[0016]
If the hash is used when the amount of the search table cannot be obtained, the possibility of occurrence of collision at the time of registration in the table increases, and the matching speed may be affected. In such a case, by registering in a table using a Patricia tree, packet matching can be performed in real time. If the search key is long, there is a high possibility that a collision will occur at the time of registration in the table, and the matching speed may be affected. In such a case, by registering in a table using a Patricia tree, packet matching can be performed in real time.
[0017]
In the matching means, by creating a search database using a Patricia tree for the input port, when both input rates are different depending on time, a packet to be subjected to packet matching with the search table is reliably registered in the table. It becomes possible to do.
[0018]
In the matching means, using one table on one side and three tables on the other side using a hash or Patricia tree at two input ports, if the input rate on one side is very large, On the other hand, a packet to be subjected to packet matching can be reliably registered in the table.
[0019]
Since the matching means holds, in addition to the search database, an array consisting of a search key and an attribute indicating whether the search was successful or unsuccessful, it is very costly to delete packet data from the search table. In such a case, it becomes possible to operate the function of outputting a packet whose search has failed in real time.
[0020]
If the matching means succeeds in the search using the search key, the data is deleted from the search table, and if it is very costly to delete the entire search table at once, a packet that failed to be searched is output. The function can be operated in real time.
[0021]
When a data string composed of a pair of a packet and a time stamp is given, the matching unit compares the time stamp with respect to the matched packet, that is, by calculating a difference or the like, the packet is sent in a stream form. It is possible to examine the time difference between the same two pieces of packet data and the fluctuation of the time difference.
[0022]
Changing the number of search tables means that the number of data registered in the search tables in a certain period of time is increased. In order to perform accurate packet matching, all packets to be matched need to be registered in a finite search table. For this reason, a stream synchronization device is incorporated, but even if this device is used, if the search tables are updated one after another within the generation interval of the SIQV header, all the packets to be matched may not be registered in the search table. is there. For this reason, the problem is solved by increasing the size of the search table corresponding to both inputs (one input in some cases) (
[0023]
When performing a search table update, it is necessary to output data remaining in the search table as a result of the matching failure (that is, data in which an equal key was not found). Therefore, unless the search table is cleared, old packet data always remains, and the data is always output as data for which matching has failed. In order to avoid such an error, a method of deleting all packet data from the search table and a method of referring to information on packet data registered in the search table can be considered. The choice is a trade-off.
[0024]
By providing a stream synchronizer, when the delay fluctuation or delay difference from each probe to the monitoring server is large, the delay error is minimized, the packets to be packet-matched are taken in all tables, and packet matching is performed normally. Will be able to be done.
[0025]
BEST MODE FOR CARRYING OUT THE INVENTION
Next, embodiments of the present invention will be described with reference to the drawings.
[0026]
According to the real-time packet tracking method of the present invention, a packet data stream sent from a packet probe device is directly received, packet matching is performed in real time, and data that has succeeded in packet matching and data that has failed are output.
[0027]
In order to realize this, as shown in FIG. 1, the present embodiment has a
[0028]
"
[0029]
As shown in FIG. 3, the
[0030]
"Masking
[0031]
FIG. 5 shows an operation example of the
[0032]
"
[0033]
Hereinafter, HIA indicates a search table formed by a hash table (or Patricia tree) corresponding to an input port on the IA side. HIA (key) indicates data retrieved by the key. When HIA (key) → (a, b, c) is expressed, it indicates that the data pointed by the key is a data set of a, b, and c. Further, each data is expressed as HIA (key): a, HIA (key): b, HIA (key): c. Here, HIA (key): A indicates that the data is A searched by HIA (key).
[0034]
The input / output module 21 (Claim 2): Here, the input / output module IA will be described as an example. The input from the input port IB operates similarly by exchanging IA and IB in the following text.
[0035]
1. The first packet data a of the data stream input to the input port IA and the key of a are acquired.
[0036]
2. Assuming that an attribute indicating that the data is input data from the input port IA is IA, data consisting of (a, key, IA) is sent to the
[0037]
3. When A returns from the
If A = NULL,
Return to 1. At this time, the operation is performed by exchanging IA and IB.
[0038]
When A = b (= packet data of HIB (key)) returns,
When not passing through the time
[0039]
Return to 1. At this time, the operation is performed by exchanging IA and IB.
[0040]
Table management module 22 (
[0041]
Table management module 22 (
[0042]
Mbit indicates the attribute of the packet corresponding to the key. The initial value of Mbit is off. When a packet corresponding to the key is found, Mbit is turned on. Therefore, by referring to the Mbit, it is possible to know whether or not a packet corresponding to the key has been found.
[0043]
The input to the
[0044]
A search operation when attr = IA is described. Note that when attr = IB, the operation is such that A and B are interchanged.
[0045]
Search the search table HIB1 based on the key.
[0046]
-When data is obtained from the search table HIB1:
* HIB1 (key): When Mbit == Off:
1. “HIB1 (key): packet data” is output to TOUT.
2. HIB1 (key): Mbit = ON.
[0047]
HIB1 (key): When Mbit == ON, outputs NULL to TOUT.
[0048]
-When data cannot be obtained from the search table HIB1:
1. Output NULL to TOUT.
[0049]
2. Data consisting of (packet data, Mbit = off) is stored in HIA1 (key).
[0050]
3. Save the key in DIA1.
[0051]
Next, the
[0052]
When tIA = T:
1. The keys are sequentially referred to from the array DIA, and when HIA1 (key): Mbit == off, “HIA1 (key): packet data” is output to the OIA.
[0053]
2. Clear the contents of the search table HIA1 and the array DIA1.
[0054]
3. It is assumed that tIA = 0.
[0055]
When tIA <T:
1. This function does not work.
[0056]
Table management module 22 (
[0057]
The input to the
[0058]
A search operation when attr = IA is described. Note that when attr = IB, the operation is such that A and B are interchanged.
[0059]
Search the search table HIB1 based on the key.
[0060]
-When data is obtained from the search table HIB1:
1. “HIB1 (key): packet data” is output to TOUT.
2. "HIB1 (key): packet data" is deleted from HIB1.
[0061]
-When data cannot be obtained from the search table HIB1:
1. Output NULL to TOUT.
[0062]
2. (Packet data) is stored in HIA1 (key).
[0063]
Next, the
[0064]
When tIA = T:
1. If packet data exists in the search table HIA1, the data is output to the OIA.
[0065]
2. Clear the contents of the search table HIA1.
[0066]
3. It is assumed that tIA = 0.
[0067]
When tIA <T:
1. This function does not work.
[0068]
Table management module 22 (
[0069]
Mbit indicates the attribute of the packet corresponding to the key. The initial value of Mbit is off. When a packet corresponding to the key is found, Mbit is turned on. Therefore, by referring to the Mbit, it is possible to know whether or not a packet corresponding to the key has been found.
[0070]
The input to the
[0071]
A search operation when attr = IA is described. Note that when attr = IB, the operation is such that A and B are interchanged.
[0072]
Search for HIBn (n = 1, 2) based on the key.
[0073]
-When data can be obtained from HIBm (m: arbitrary n):
* HIBm (key): When Mbit == Off:
1. “HIBm (key) packet data” is output to the OM.
[0074]
2. HIBm (key): Mbit = ON.
[0075]
* HIBm (key): When Mbit == ON, outputs NULL to TOUT.
[0076]
When data cannot be obtained from HIBm (m: arbitrary n):
1. Output NULL to TOUT.
[0077]
2. Data consisting of (packet data, Mbit = off) is stored in HIA1 (key).
[0078]
3. Save the key in DIA1.
[0079]
Next, the
[0080]
When tIA = T:
-Part 1-1
1. The keys are sequentially referred to from DIA2, and if HIA2 (key): Mbit == off, “HIA2 (key): bucket data” is output to OIA.
[0081]
2. HA2 → HAhia, and DIA2 → DAhia.
[0082]
3. hia = 1-hia, and HIA1 → HAhia, DIA1 → DAhia.
[0083]
4. Clear the contents of HIA1 and DIA1.
[0084]
5. It is assumed that tIA = 0.
[0085]
-Part 1-2
1. HIA2 → HAhia, and DIA2 → DAhia.
[0086]
2. hia = 1-hia, and HIA1 → HAhia, DIA1 → DAhia.
[0087]
3. The keys are sequentially referred to from DIA1, and if HIA1 (key): Mbit == OFF, “HIA1 (key): packet data” is output to OIA.
[0088]
4. Clear HIA1 and DIA1.
[0089]
5. It is assumed that tIA = 0.
[0090]
-
1. The keys are sequentially referred to from DIA2, and if HIA2 (key): Mbit == OFF, "HIA2 (key): packet data" is output to OIA.
[0091]
2. Clear the contents of HIA2 and DIA2.
[0092]
3. HIA2 → HAhia, and DIA2 → DAhia.
[0093]
4. hia = 1-hia.
[0094]
5. HIA1 → HAhia, and DIA1 → DAhia.
[0095]
6. It is assumed that tIA = 0.
[0096]
-Part 3-1
1. The keys are sequentially referred to from DIA2, and if HIA2 (key): Mbit == OFF, “HIA2 (key): packet data” is output to OIA.
[0097]
2. HIA2 → HAhia, and DIA2 → DAhia.
[0098]
3. cia = 1-hia, and clears HAhia and DAhia.
[0099]
4. HIA1 → HAhia, DIA1 → DAhia.
[0100]
5. It is assumed that tIA = 0.
[0101]
-Part 3-2
1. HIA2 → DAhia and DIA2 → DAhia.
[0102]
2. hia = 1-hia.
[0103]
3. The keys are sequentially referred to from DAhia, and if HAhia: Mbit == OFF, “HAhia (key): packet data” is output to the OLA.
[0104]
4. Clear HAhia and DAhia.
[0105]
5. HIA1 → HAhia, DIA1 → DAhia.
[0106]
6. It is assumed that tIA = 0.
[0107]
When tIA <T:
1. This function does not work.
[0108]
Table management module 22 (
[0109]
The input to the
[0110]
A search operation when attr = IA is described. Note that when attr = IB, the operation is such that A and B are interchanged.
[0111]
Search for HIBn (n = 1, 2) based on the key.
[0112]
-When data can be obtained from HIBm (m: arbitrary n):
1. “HIBm (key): packet data” is output to TOUT.
[0113]
2. "HIBm (key): packet data" from HIBm (key)
Remove.
[0114]
When data cannot be obtained from HIBm (m: arbitrary n):
1. Output NULL to TOUT.
[0115]
2. (Packet data) is stored in HIA1 (key).
[0116]
Next, the
[0117]
When tIA = T:
-Part 1-1
1. If packet data exists in the search table HIA2, it outputs it to the OIA.
[0118]
2. It is assumed that the search table is HIA2 → HAhia.
[0119]
3. HIA = 1-HIA, and HIA1 → HAHIA.
[0120]
4. Clear the contents of the search table HIA1.
[0121]
5. It is assumed that tIA = 0.
[0122]
-Part 1-2
1. It is assumed that the search table is HIA2 → HAhia.
[0123]
2. HIA = 1-HIA, and HIA1 → HAHIA.
[0124]
3. If there is packet data in the search table HIA1, it outputs it to the OIA.
[0125]
4. Clear the contents of the search table HIA1.
[0126]
5. It is assumed that tIA = 0.
[0127]
-
1. If the search table HIA2 packet data exists, it outputs it to the OIA.
[0128]
2. Clear the contents of the search table HIA2.
[0129]
3. It is assumed that the search table is HIA2 → HAhia.
[0130]
4. HIA = 1-HIA, and HIA1 → HAHIA.
[0131]
5. It is assumed that tIA = 0.
[0132]
-Part 3-1
1. It is assumed that the search table is HIA2 → HAhia.
[0133]
2. hia = 1-hia.
[0134]
3. If there is packet data in HAhia, it outputs it to OIA.
[0135]
4. Clear HAhia.
[0136]
5. It is assumed that the search table is HIA1 → HAhia.
[0137]
6. It is assumed that tIA = 0.
[0138]
-Part 3-2
1. If packet data exists in the search table HIA2, it outputs it to the OIA.
[0139]
2. It is assumed that the search table is HIA2 → HAhia.
[0140]
3. HAhia is cleared by setting the search table hia = 1-hia.
4. It is assumed that the search table is HIA1 → HAhia.
[0141]
5. It is assumed that tIA = 0.
[0142]
When tIA <T:
1. This function does not work.
[0143]
Table management module 22: Part 2 (
[0144]
Mbit indicates the attribute of the packet corresponding to the key. The initial value of Mbit is off. When a packet corresponding to the key is found, Mbit is turned on. Therefore, by referring to the Mbit, it is possible to know whether or not a packet corresponding to the key has been found.
[0145]
The input to the
[0146]
A search operation when attr = IA is described. Note that when attr = IB, the operation is such that A and B are interchanged.
[0147]
Search for HIBn (n = 1, 2) based on the key.
[0148]
-When data can be obtained from HIBm (m: arbitrary n):
HIBm (key): When Mbit == Off:
1. “HIBm (key): packet data” is output to TOUT.
[0149]
2. HIBm (key): Mbit = ON.
[0150]
If HIBm (key): == ON, NULL is output to TOUT.
[0151]
When data cannot be obtained from HIBm (m: arbitrary n):
1. Output NULL to TOUT.
[0152]
2. The data consisting of (packet data, Mbit: = ON) is stored in HIA1 (key).
[0153]
3. Save the key in DIA1. For 1 see the next paragraph.
[0154]
Next, the
[0155]
・
If -tIA <t:
1.1 = hia + 1.
[0156]
-T ≦ tIA <T:
1.1 = values of both 1 and 2.
[0157]
When −tIA = T:
1. The keys are sequentially referred to from DAhia, and if HAhia (key): Mbit == off, “HAhia (key): packet data” is output to OIA.
[0158]
2. Clear the contents of HAhia and DAhia.
[0159]
3. hia = 1-hia.
[0160]
4. It is assumed that tIA = 0.
[0161]
・
If -tIA <t:
1.1 = 1.
[0162]
If -t <= tIA <T:
1.1 = values of both 1 and 2.
[0163]
When −tIA = T:
* Part 2-1-1
1. The keys are sequentially referred to from DIA2, and when HIA2 (key): Mbit == off, “HIA2 (key): packet data” is
Output to OIA.
[0164]
2. HIA2 → HAhia, and DIA2 → DAhia.
[0165]
3. hia = 1-hia, and HIA1 → HAhia, DIA1 → DAhia.
[0166]
4. Clear the contents of HIA1 and DIA1.
[0167]
5. It is assumed that tIA = 0.
[0168]
* Part 2-1-2
1. HIA2 → HAhia, and DIA2 → DAhia.
[0169]
2. hia = 1-hia, and HIA1 → HAhia, DIA1 → DAhia.
[0170]
3. The keys are sequentially referred to from DIA1, and if HIA1 (key): Mbit == OFF, “HIA1 (key): packet data” is output to OIA.
[0171]
4. Clear HIA1 and DIA1.
[0172]
5. It is assumed that tIA = 0.
[0173]
* Part 2-2
1. The keys are sequentially referred to from DIA2, and if HIA2 (key): Mbit == OFF, "HIA2 (key): packet data" is output to OIA.
[0174]
2. Clear the contents of HIA2 and DIA2.
[0175]
3. HIA2 → HAhia, and DIA2 → DAhia.
[0176]
4. hia = 1-hia.
[0177]
5. HIA1 → DIhia, and DIA1 → DAhia.
[0178]
6. It is assumed that tIA = 0.
[0179]
* Part 2-3-1
1. The keys are sequentially referred to from DIA2, and if HIA2 (key): Mbit == OFF, "HIA2 (key): packet data" is output to OIA.
[0180]
2. HIA2 → HAhia, and DIA2 → DAhia.
[0181]
3. cia = 1-hia, and clears HAhia and DAhia.
4. HIA1 → HAhia, DIA1 → DAhia.
[0182]
5. It is assumed that tIA = 0.
[0183]
* Part 2-3-2
1. HIA2 → DIhia, and DIA2 → DAhia.
[0184]
2. hia = 1-hia.
3. The key is sequentially referred to from DAhia, and if HAhia: Mbit == off, “HAhia (key): packet data” is output to OIA.
4. Clear HAhia and DAhia.
5. HIA1 → HAhia, DIA1 → DAhia.
6. It is assumed that tIA = 0.
Table management module 22 (
[0185]
The input to the
[0186]
A search operation when attr = IA is described. Note that when attr = IB, the operation is such that A and B are interchanged.
[0187]
Search for HIBn (n = 1, 2) based on the key.
[0188]
-When data can be obtained from HIBm (m: arbitrary n):
1. “HIBm (key) packet data” is output to TOUT.
[0189]
2. “HIBm (key): packet data” is deleted from HIBm (key).
[0190]
When data cannot be obtained from HIBm (m: arbitrary n):
1. Output NULL to TOUT.
[0191]
2. Data consisting of (packet data, Mbit = off) is stored in HIA1 (key). For 1 see the next paragraph.
[0192]
Next, the
[0193]
・
If -tI <t
1.1 = hia + 1.
[0194]
If -t <= tIA <T:
1.1 = hia + 1,2-hia.
[0195]
When −tIA = T:
1. If there is packet data in HAhia, it outputs it to OIA.
[0196]
2. Clear the contents of HAhia.
[0197]
3. hia = 1-hia.
[0198]
4. It is assumed that tIA = 0.
[0199]
・
If -tIA <t
1.1 = 1.
[0200]
If -t <= tIA <T:
1.1 = 1,2.
[0201]
When −tIA = T:
* Part 2-1-1
1. If packet data exists in the search table HIA2, it outputs it to the OIA.
[0202]
2. It is assumed that the search table is HIA2 → HAhia.
[0203]
3. The search table hia is set to 1-hia, and HIA1 → HAhia.
[0204]
4. Clear the contents of the search table HIA1.
[0205]
5. It is assumed that tIA = 0.
[0206]
* Part 2-1-2
1. It is assumed that the search table is HIA2 → HAhia.
[0207]
2. hia = 1-hia, and HIA1 → HAhia.
[0208]
3. If packet data exists in search table HIA1, it is
To the OIA.
[0209]
4. Clear the search table HIA1 and the array DIA1.
[0210]
5. It is assumed that tIA = 0.
[0211]
* Part 2-2
1. If there is packet data in the search table HIA2,
To the OIA.
[0212]
2. Clear the contents of the search table HIA2.
[0213]
3. It is assumed that the search table is HIA2 → HAhia.
[0214]
4. hia = 1-hia.
[0215]
5. It is assumed that the search table is HIA1 → HAhia.
[0216]
6. It is assumed that tIA = 0.
[0217]
* Part 2-3-1
1. If packet data exists in the search table HIA2, it outputs it to the OIA.
[0218]
2. It is assumed that the search table is HIA2 → HAhia.
[0219]
3. cia = 1-hia to clear HAhia.
[0220]
4. It is assumed that the search table is HIA1 → HAhia.
[0221]
5. It is assumed that tIA = 0.
[0222]
* Part 2-3-2
1. It is assumed that the search table is HIA2 → HAhia.
[0223]
2. hia = 1-hia.
[0224]
3. If there is packet data in HAhia, it outputs it to OIA.
[0225]
4. Clear HAhia.
[0226]
5. It is assumed that the search table is HIA1 → HAhia.
[0227]
6. It is assumed that tIA = 0.
[0228]
Table management module 22 (
[0229]
Mbit indicates the attribute of the packet corresponding to the key. The initial value of Mbit is off. When a packet corresponding to the key is found, Mbit is turned on. Therefore, by referring to the Mbit, it is possible to know whether or not a packet corresponding to the key has been found.
[0230]
The input to the
[0231]
A search operation when attr = IA is described. n is an integer such that n = 1, 2, 3,. When attr = IB, n = 1 and the operation is such that A and B are interchanged.
[0232]
Search for HIBn based on the key (if n> 1, check for all n).
[0233]
-When data can be obtained from HIBm (m: arbitrary n):
* HIBm (key): When Mbit == Off:
1. “HIBm (key): packet data” is output to TOUT.
[0234]
2. HIBm (key): Mbit = ON.
[0235]
* HIBm (key): When Mbit == ON, outputs NULL to TOUT.
[0236]
When data cannot be obtained from HIBm (m = any n):
1. Output NULL to TOUT.
[0237]
2. Data consisting of (bucket data, Mbit = off) is stored in HIA1 (key).
[0238]
3. Save the key in DIA1.
[0239]
Next, the
[0240]
When tIA = T:
1. The keys are sequentially referred to from DIA1, and if HIA1 (key): Mbit == off, “HIB3 (key): packet data” is output to OIA.
[0241]
2. Clear the contents of HIA1 and DIA1.
[0242]
3. It is assumed that tIA = 0.
[0243]
When tIA <T:
1. This function does not work.
[0244]
-When tIB = T:
-Part 1-1
1. The keys are sequentially referred to from DIN3, and when HIB3 (key): Mbit = off, “HIB3 (key): packet data” is output to the OIA.
[0245]
2. If a =
[0246]
3. hib = hib-1, HIB0 → HBhib, DIB0 → DBhib.
[0247]
4. Clear the contents of HIB0 and DIB0.
[0248]
5. It is assumed that tIB = 0.
[0249]
-Part 1-2
1. If a =
[0250]
2. hib = hib-1, HIB0 → HBhib, DIB0 → DBhib.
[0251]
3. The keys are sequentially referred to from DIB0, and when HIB0 (key): Mbit = off, “HIB0 (key): packet data” is output to the OIA.
[0252]
4. Clear the contents of HIB0 and DIB0.
[0253]
5. It is assumed that tIB = 0.
[0254]
-
1. The keys are sequentially referred to from DIB3, and if HIB3 (key): Mbit = off, “HIB3 (key): packet data” is output to OIA.
[0255]
2. Clear the contents of HIB3 and DIB3.
[0256]
3. If a =
[0257]
4. hib = hib-1, HIB0 → HBhib, DIB0 → DBhib.
[0258]
5. It is assumed that tIB = 0.
[0259]
-Part 3-1
1. The keys are sequentially referred to from DIB3, and if HIB3 (key): Mbit = off, “HIB3 (key): packet data” is output to OIA.
[0260]
2. If a =
[0261]
3. hib = hib-1, HBhib and DAhib are cleared.
[0262]
4. HIB0 → HBhib, DIB0 → DBhib.
[0263]
5. It is assumed that tIB = 0.
[0264]
-Part 3-2
1. If a =
2. hib = hib-1.
[0265]
3. The keys are sequentially referred to from the DBhib, and when HBhib (key): Mbit = off, “HBhib (key): packet data” is output to the OIA.
[0266]
4. Clear HBhib and DAhib.
[0267]
5. HIB0 → HBhib, DIB0 → DBhib.
[0268]
6. It is assumed that tIB = 0.
[0269]
When tIB <T:
1. This function does not work.
[0270]
Table management module 22 (
[0271]
The input to the
[0272]
A search operation when attr = IA is described. When attr = IB, n = 1 and the operation is such that A and B are interchanged.
[0273]
Search for HIBn based on key (if n> 1, check for all n)
-When data can be obtained from HIBm (m: arbitrary n):
1. HIBm (key): Outputs packet data to TOUT.
[0274]
2. HIBm (key): deletes packet data from HIBm (key).
[0275]
When data cannot be obtained from HIBm (m: arbitrary n):
1. Output NULL to TOUT.
[0276]
2. (Packet data) is stored in HIA1 (key).
[0277]
Next, the
[0278]
When tIA = T:
1. If packet data exists in HIA1, it outputs it to OIA.
[0279]
2. Clear the contents of HIA1.
[0280]
3. It is assumed that tIA = 0.
[0281]
When tIA <T:
1. This function does not work.
[0282]
-When tIB = T:
-Part 1-1
1. If there is packet data in HIB3, it outputs it to OIB.
[0283]
2. If HIB2 → HBhib, a =
[0284]
3. hib = hib-1, and HIB0 → HBhib.
[0285]
4. Clear the contents of HIB0.
[0286]
5. It is assumed that tIB = 0.
[0287]
-Part 1-2
1. If HIB2 → HBhib, a =
[0288]
2. hib = hib-1, and HIB0 → HBhib.
[0289]
3. If there is packet data in HIB0, it outputs it to OIB.
[0290]
4. Clear the contents of HIB0.
[0291]
5. It is assumed that tIB = 0.
[0292]
-
1. If there is packet data in HIB3, it outputs it to OIB.
[0293]
2. Clear the contents of HIB3.
[0294]
3. If HIB2 → HIBhib, a =
[0295]
4. hib = hib-1.
[0296]
5. It is assumed that tIB = 0.
[0297]
-Part 3-1
1. If there is packet data in HIB3, it outputs it to OIB.
[0298]
2. If HIB2 → HBhib, a =
[0299]
3. hib = hib-1, HBhib and DAhib are cleared.
[0300]
4. HIB0 → HBhib.
[0301]
5. It is assumed that tIB = 0.
[0302]
-Part 3-2
1. If HIB2 → HBhib, a = hib1, then HIB3 → HBa.
[0303]
2. hib = hib-1.
[0304]
3. If the packet data exists in the HBhib, it outputs it to the OIB.
[0305]
4. Clear HBhib.
[0306]
5. HIB0 → HBhib.
[0307]
6. It is assumed that tIB = 0.
[0308]
When tIB <T:
1. This function does not work.
[0309]
"Time
[0310]
Stream synchronizer 30 (Claim 10): The
[0311]
The SIQV header is generated at regular intervals by the packet probe device, and the sequence number is incremented each time the SIQV header is created. The
[0312]
FIG. 7 shows the basic operation of the
[0313]
FIG. 8 shows an operation example in which the
[0314]
-When there is a synchronization packet only at the beginning of one side input
(FIGS. 8 (1), (3), (6)): Wait for a synchronization packet to arrive at the other input.
[0315]
When synchronous packets having the same sequence number as the head of both inputs are prepared (FIGS. 8 (2) and 8 (4)): The synchronous packets are removed, the subsequent data stream is read, and sent to the search table. This is called firing. At this time, the sequence number of the synchronization packet is stored in a variable called Sequence register.
[0316]
When there is a synchronization packet having a different sequence number at the beginning of both inputs (FIG. 8 (5)): The data stream following the synchronization packet having the smaller sequence number is read into the subsequent data stream after removing the synchronization packet. , Send to search table.
[0317]
When there is a synchronous packet having a sequence number smaller than the value of Sequence register: remove the synchronous packet, read the subsequent data stream, and send it to the search table.
[0318]
Note that the
[0319]
FIG. 9 illustrates a quality monitoring network and a monitored network. The monitored network is composed of a host 40, a
[0320]
The
[0321]
An analysis program (Harumoto Fukuda, Satoshi Ono, Naohisa Takahashi, used in a monitoring server (Data Collection Server) in a network quality monitoring network as shown in FIG. 9, "Design and Realization of an Internet QoS Visualizer" IEICE Transactions on Multimedia An example is the use of mpf nodes in the Special Issue on Network / Service Quality, Jul., 1997). The SIQV header required for synchronizing the packet data stream is inserted into the packet data stream by the packet collection device, and is changed to the SIQV header format at the Pin node.
[0322]
The mpf is configured as illustrated in FIG. It is assumed that the analysis program is given as FIG. The data stream delimited by the SIQV header generated at Pin arrives at the input of mpf. The
[0323]
When a packet is copied by the probe, it is conceivable to send a data stream to the monitoring server with a time stamp added. The input to the mpf is a stream composed of a set of packet data and a time stamp indicating time, such as (t, p). In this case, if the input is (t1, p) or (t2, p) by the time
[0324]
As described above, by performing the processing of the mpf node in real time, the fluctuation such as the one-way delay can be calculated in real time. Further, by manipulating the time stamp of the data output in this manner, packet tracking in real time, that is, the operation of the packet on the network can be observed.
[0325]
【The invention's effect】
[0326]
Claim 4 : When using a packet matching apparatus, hashing is used in a matching mechanism, so that packet matching can be performed in real time.
[0327]
Claim 5 : By registering input data in a search table using a Patricia tree, real-time packet matching becomes possible.
[0328]
Claim 6 A: When both input rates differ with time, it is possible to reliably register a packet to be subjected to packet matching in a search table.
[0329]
Claim 7 A: When the input rate on one side is very high, it is possible to reliably register a packet to be subjected to packet matching in the search table.
[0330]
Claim 8 : When it is very costly to delete packet data from the search table, it becomes possible to operate a function of outputting a packet whose search failed in real time.
[0331]
Claim 9 : When it is very costly to delete the entire search table, it becomes possible to operate the function of outputting a packet whose search failed in real time.
[0332]
[0333]
Claim 11 : Claim if delay fluctuation or delay difference from each probe to the monitoring server is large 4 ~ 9 The delay error is minimized, the packet to be packet-matched is fetched into all tables, and the packet matching can be performed normally without modifying the invention. Further, when considering the network configuration from each probe to the monitoring server, it is not necessary to consider the transfer delay of the data stream.
[Brief description of the drawings]
FIG. 1 is a diagram illustrating a real-time packet tracking method of the present invention.
FIG. 2 is a diagram showing input / output ports of a packet matching device.
FIG. 3 is a configuration diagram of a packet matching device.
FIG. 4 is a configuration diagram of a
FIG. 5 is a diagram showing an example of execution of masking.
FIG. 6 is a configuration diagram of a stream synchronization device.
FIG. 7 is a diagram illustrating an example of a method of synchronizing a packet data stream.
FIG. 8 is a diagram showing a sequence number and early control.
FIG. 9 is a diagram showing a network quality management network.
FIG. 10 is a configuration diagram of an mpf node.
FIG. 11 is a diagram showing an analysis program.
FIG. 12 is a diagram showing a packet network and a probe.
FIG. 13 is a diagram showing a conventional packet tracking method.
[Explanation of symbols]
10. Packet matching device
11 Masking mechanism
12 Matching mechanism
13 Timestamp mechanism
21 I / O module
22 Table management module
30 Stream synchronizer
31 Ignition mechanism
32 SIQV header playback mechanism
40 hosts
41 router
42 Host for test packet generation
43 Packet Probe Device
44 monitoring station
Claims (12)
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP25688797A JP3581238B2 (en) | 1997-09-22 | 1997-09-22 | Real-time packet tracking method and packet matching device |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP25688797A JP3581238B2 (en) | 1997-09-22 | 1997-09-22 | Real-time packet tracking method and packet matching device |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPH1198194A JPH1198194A (en) | 1999-04-09 |
| JP3581238B2 true JP3581238B2 (en) | 2004-10-27 |
Family
ID=17298801
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP25688797A Expired - Lifetime JP3581238B2 (en) | 1997-09-22 | 1997-09-22 | Real-time packet tracking method and packet matching device |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JP3581238B2 (en) |
Families Citing this family (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US7451206B2 (en) * | 2002-05-20 | 2008-11-11 | Siemens Communications, Inc. | Send of software tracer messages via IP from several sources to be stored by a remote server |
| JP4068545B2 (en) * | 2003-10-24 | 2008-03-26 | 日本電信電話株式会社 | Packet receiving method and apparatus |
-
1997
- 1997-09-22 JP JP25688797A patent/JP3581238B2/en not_active Expired - Lifetime
Also Published As
| Publication number | Publication date |
|---|---|
| JPH1198194A (en) | 1999-04-09 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN107040326B (en) | The methods, devices and systems of time synchronization for trillion secondary structure | |
| US5546390A (en) | Method and apparatus for radix decision packet processing | |
| Sarin et al. | Discarding obsolete information in a replicated database system | |
| Iannaccone et al. | Monitoring very high speed links | |
| US6252891B1 (en) | System and method to insert timestamp information in a protocol neutral manner | |
| CN103309966B (en) | Based on the data flow point connection query method of time slide window | |
| TWI286425B (en) | A method and apparatus for reassembly of data blocks within a network processor | |
| US8521684B2 (en) | System and method for aligning data frames in time | |
| JP6293283B2 (en) | Offline queries in software-defined networks | |
| US5761440A (en) | System and method utilizing multiple search trees to route data within a data processing network | |
| Ofek | Generating a fault-tolerant global clock using high-speed control signals for the MetaNet architecture | |
| EP0525174A1 (en) | Tracking sequence numbers in packet data communication system. | |
| CN101854391A (en) | A Realization Method of Ares Protocol Analysis System Based on Peer-to-Peer Network | |
| US8055612B2 (en) | System and method for aligning data frames in time | |
| JP4068545B2 (en) | Packet receiving method and apparatus | |
| Tirthapura et al. | Sketching asynchronous streams over a sliding window | |
| JP3581238B2 (en) | Real-time packet tracking method and packet matching device | |
| CN118353860A (en) | Packet reassembly method and device, storage medium, and electronic device | |
| TWI820977B (en) | Packet sorting and reassembly circuit module | |
| Awerbuch et al. | A quantitative approach to dynamic networks | |
| CN116208536B (en) | A lightweight in-band telemetry device and method for high-speed interconnection network | |
| US7899057B2 (en) | Systems for ordering network packets | |
| Fu et al. | Every timestamp counts: Accurate tracking of network latencies using reconcilable difference aggregator | |
| Kutten et al. | Maintenance of a spanning tree in dynamic networks | |
| TWI254529B (en) | Methods and apparatus for using multiple reassembly memories for performing multiple functions |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040331 |
|
| A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040531 |
|
| RD03 | Notification of appointment of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7423 Effective date: 20040531 |
|
| RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20040531 |
|
| 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: 20040707 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20040722 |
|
| R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080730 Year of fee payment: 4 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080730 Year of fee payment: 4 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090730 Year of fee payment: 5 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090730 Year of fee payment: 5 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100730 Year of fee payment: 6 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100730 Year of fee payment: 6 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110730 Year of fee payment: 7 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120730 Year of fee payment: 8 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130730 Year of fee payment: 9 |
|
| 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 |
|
| EXPY | Cancellation because of completion of term |