不通検出装置、方法、及びプログラム
【課題】ネットワーク通信システムの導通確認技術に関し、データパケットとACKパケットの対応関係がとれないパケットシーケンスにおいても、疎通及び不通確認を行えるようにする。
【解決手段】入力部101は、ネットワーク上を流れるパケットを受信する。パケット情報取得部102−1は、受信パケットから、送信元アドレス情報、宛先アドレス情報、順序制御情報(シーケンス番号)、及び承認応答情報(ACKフラグ、確認応答番号)を含むパケット情報を取得する。不通・疎通検出部102−2は、そのパケット情報に基づいて、受信パケットの送信元のホストと宛先のホストの間の不通又は疎通を含む導通状態を検出する。順序制御情報の変化傾向と承認応答情報を組み合わせることにより、受信パケットの送信元のホストと自装置間又は自装置と受信パケットの宛先のホスト間の何れにおいて不通が発生したかを検出する。出力部104は、その導通状態を出力する。
【解決手段】入力部101は、ネットワーク上を流れるパケットを受信する。パケット情報取得部102−1は、受信パケットから、送信元アドレス情報、宛先アドレス情報、順序制御情報(シーケンス番号)、及び承認応答情報(ACKフラグ、確認応答番号)を含むパケット情報を取得する。不通・疎通検出部102−2は、そのパケット情報に基づいて、受信パケットの送信元のホストと宛先のホストの間の不通又は疎通を含む導通状態を検出する。順序制御情報の変化傾向と承認応答情報を組み合わせることにより、受信パケットの送信元のホストと自装置間又は自装置と受信パケットの宛先のホスト間の何れにおいて不通が発生したかを検出する。出力部104は、その導通状態を出力する。
【発明の詳細な説明】
【技術分野】
【0001】
開示する技術は、ネットワーク通信システムの導通確認技術に関する。
【背景技術】
【0002】
IPネットワークにおける疎通確認にはpingコマンドがよく利用される。pingでは、検査対象のホストに対してICMP EChoリクエストと呼ばれる応答要求パケットが送信され、それに応答するICMP EChoリプライが受信されれば、検査対象のホストは疎通していると判断できる。
【0003】
これに対して、データ通信で広く使われるTCP(トランスミッションコントロールプロトコール:Transmission Control Protocol)を使っても同等の疎通確認が可能である。具体的には検査対象のホストに対して1バイト以上のデータパケットが送信され、これに対する承認応答情報が格納されるACK(ACKnowledgement)パケットが応答されれば、対象ホストを含めた通信経路は疎通していると判断できる。なお、典型的な通信形態では、送信されるデータパケットの2つに対して、1つのACKパケットが応答される。
【発明の開示】
【発明が解決しようとする課題】
【0004】
今、図15に示されるように、上述のような疎通確認を目的とする不通検出装置1501を、ネットワークの中継地点、即ち、送信ホスト1502と受信ホスト1503の間に、タップ等の手段を用いて設置することを考える。
【0005】
この場合、受信ホスト1503に対する疎通確認は、データパケットDATA1,DATA2等に対するACKパケットACK2を受信することにより、確認することができる。
【0006】
一方、送信ホスト1502に対する疎通確認において、送信ホスト1502から不通検出装置1501に向かう方向の疎通については、送信ホスト1502からデータパケットDATA1,DATA2が受信されるため確認できる。しかしながら、不通検出装置1501から送信ホスト1502に向かう方向の疎通については、受信ホスト1503から不通検出装置1501を経由して送信ホスト1502に向かうACK2パケットに対する応答はないため、確認できないという問題点を有していた。なお、送信ホスト1502は通常、受信ホスト1503からのACK2パケットを待たずに、送信データパケットを送信することができる。このため、不通検出装置1501が検出する送信データパケットは、ACK2パケットに対する応答とはなり得ない。
【0007】
また、送信ホスト1502と受信ホスト1503が上りと下りで異なる経路で通信する場合には、1つの経路上の中継地点に置かれた不通検出装置だけでは、受信ホスト1503及び送信ホスト1502の双方ともに、疎通確認を行えないという問題点を有していた。
【0008】
そこで、開示する技術の課題は、データパケットとACKパケットの対応関係がとれないパケットシーケンスにおいても、疎通及び不通確認を行えるようにすることにある。
【課題を解決するための手段】
【0009】
以下に開示する態様は、ネットワーク上を流れるパケットデータの導通状態を検出する
ための不通検出装置、方法、又はプログラムを前提とする。
入力部は、ネットワーク上を流れるパケットを受信する。
【0010】
パケット情報取得部は、入力部により受信される受信パケットから、受信パケットの送信元アドレス情報、宛先アドレス情報、順序制御情報(シーケンス番号)、及び承認応答情報(ACKフラグ、確認応答番号)を含むパケット情報を取得する。
【0011】
不通・疎通検出部は、そのパケット情報に基づいて、受信パケットの送信元のホストと宛先のホストの間の不通又は疎通を含む導通状態を検出する。この不通・疎通検出部は例えば、受信パケットの順序制御情報の変化傾向を検出することにより、受信パケットの送信元のホストと宛先のホストの間の不通又は疎通を含む導通状態を検出する。また、不通・疎通検出部は例えば、受信パケットの承認応答情報を更に判定することにより、受信パケットの送信元のホストと自装置間又は自装置と受信パケットの宛先のホスト間の何れにおいて不通が発生したかを検出する。
出力部は、その導通状態を出力する。
【発明の効果】
【0012】
開示した態様の構成によれば、不通検出装置がTCPのようなシーケンス番号をベースに動作するパケットをモニタすることで、上下パケットの経路が違う場合でも、或いは、要求に対する応答パケットが存在しないホストに対しても疎通か不通を判断することが可能となる。
これにより、ネットワークやホストの障害に関する診断精度が向上する効果が得られる。
【発明を実施するための最良の形態】
【0013】
以下、図面を参照しながら、最良の実施形態について詳細に説明する。
図1は、不通検出装置の実施形態の構成図である。
不通検出装置100は、送信ホストと受信ホストを接続するネットワーク上でタップ又はスイッチのモニタポートなど、パケットをモニタする装置を経由してネットワークに接続されており、送信ホストから受信ホストに送信されるパケットをモニタできる。
【0014】
図1において、処理部102は、パケット情報取得部102−1と不通・疎通検出部102−2を備え、記憶部103は、通信状態記憶部103−1とモニタ結果記憶部103−2を備える。
【0015】
入力部101は、ネットワーク上を流れるパケットを受信する。
パケット情報取得部102−1は、受信パケットのIPヘッダ及びTCPヘッダから、以下の情報を取得する。即ち、パケット情報取得部102−1は、TCPコネクションID、即ち、送信元IPアドレス(SA)、送信元ポート番号(SP)、宛先IPアドレス(DA)、宛先ポート番号(DP)の4つの情報組と、TCPのシーケンス番号(SEQ)値を取得する。
【0016】
図2に示されるように、送信元IPアドレス及び宛先IPアドレスは、受信パケットのIPヘッダ部に格納されている情報である。また、送信元ポート番号、宛先ポート番号、及びシーケンス番号は、IPパケットに格納される上位プロトコルのTCPパケット内のTCPヘッダに格納されている情報である。送信元ポート番号は、送信元アプリケーションのプロセスを特定するための番号である。宛先ポート番号は、宛先アプリケーションのプロセスを特定するための番号である。
【0017】
受信ホストは、TCPパケットを正常に受信すると、送信ホストへのACKパケットの返信において、宛先ポート番号と送信元ポート番号を逆に設定する。つまり、元の宛先ポート番号が送信元ポート番号、送信元ポート番号が宛先ポート番号になるように設定される。
【0018】
シーケンス番号は、TCPパケットが正しい順番で並ぶように制御するための情報である。シーケンス番号としては、各TCPパケットのTCPデータ長を順次加算して得られる値が設定される。TCPデータ長は、各パケットの図2に示されるIPヘッダ内のパケット長からヘッダ長を減算した値として計算できる。パケット長は、ヘッダをはじめ一切合切を含めたパケット全体のサイズをオクテット単位で示したものである。
【0019】
受信ホストは、受信したTCPパケットに問題がなかったときには、送信ホストにACKパケットを返信する際に、図2に示されるTCPヘッダ内の確認応答番号として、受信したパケットのシーケンス番号に受信したTCPパケット長を加算して得た番号をセットして返信する。また、ACKパケットにおいては、図2に示されるTCPヘッダ内のコードビットの1つであるACKフラグがONされる(1がセットされる)。送信ホスは、このACKフラグがONのパケットを受信すると、そのパケットのTCPヘッダ内の確認応答番号を識別して、ACKパケットによる承認の対象がどの送信データであるかを確認した後、バッファ内に保持していたその送信データを破棄する。
【0020】
また、パケット情報取得部102−1は、入力部101がパケットを取得したときの時刻を、パケット受信時刻として取得する。
パケット情報取得部102−1は、上記取得情報を、不通・疎通検出部102−2へ通知する。ここで、TCPコネクションIDは、パケットの送受信方向によらず一意である。
【0021】
不通・疎通検出部102−2は、パケット情報取得部102−1から通知されたTCPTCPコネクションIDをキーに、通信状態記憶部103−1に記憶されたコネクションテーブル及び不通・疎通テーブルを検索する。そして、不通・疎通検出部102−2は、検索された各テーブルのエントリ内容とパケット情報取得部102−1から通知されたパケット情報とに基づいて、コネクションテーブル及び不通・疎通テーブルを更新する。
【0022】
また、不通・疎通検出部102−2は、コネクションテーブル及び不通・疎通テーブルの記録内容から、疎通、不通、無通信を判定し、判定結果をモニタ結果記憶部103−2に格納する。
【0023】
通信状態記憶部103−1は、不通・疎通検出部102−2での判断結果を記録する。
モニタ結果記憶部103−2は、ネットワーク管理者や監視装置に通知するためのモニタ結果を記憶する機能を持ち、例えばTCPコネクション毎の送信パケット数、ロス数、及び送信ホストの遅延時間などを統計情報として記憶する。
【0024】
出力部104は、モニタ結果記憶部103−2で保存されている情報の一部若しくは全てを取得して、モニタ結果を出力するインタフェースである。出力部104は、ネットワーク管理者に統計情報を表示するための画面表示部であってもよく、或いは、ネットワーク管理装置(NMS:Network Management System)に送信するための通信プロトコルをサポートするネットワークインタフェース部であってもよい。
【0025】
図3は、上述の構成を有する不通検出装置100を使った実施形態の基本的な動作の説明図である。
本実施形態では、不通検出装置100が、TCPのデータパケットとACKパケットのシーケンス番号をモニタする。
【0026】
そして、TCPTCPコネクションID毎に、受信されるデータパケット又はACKパケットのシーケンス番号が単調増加していることが検出された時間帯は、そのTCPコネクションに対応する送信ホスト301及び受信ホスト302の両側の通信は疎通していると判定される。
【0027】
一方、TCPTCPコネクションID毎に、受信されるデータパケット又はACKパケットのシーケンス番号が重複している時間帯は、そのTCPコネクションの通信は不通であると判定される。
上記以外の時間帯は、そのTCPコネクションの通信は無通信であると判定される。
【0028】
なお、不通検出装置100がデータパケットとACKパケットの両方をモニタできる場合は、上記判定に加えて、不通がどちら側で発生したかを検出できる。
以上の基本動作により、上り下りで別経路を通る箇所に不通検出装置100が設置されても、或いは、一方向へのデータ送信であっても、正確に正常・不通時間を計測することが可能となる。
【0029】
以下に、本実施形態の具体的な動作について説明する。
まず、第1の実施形態として、図1に示される不通検出装置100が、データパケットとACKパケットの両方をモニタできない場合の動作について説明する。
【0030】
図4は、第1の実施形態における不通検出装置100の全体制御動作を示す動作フローチャートである。
図5は、第1の実施形態において通信状態記憶部103−1に記憶されるコネクションテーブルの一例を示す図である。同図において、TCPコネクションIDや送信元IPアドレスは、説明を簡単にするために、A、B、ア、イなどと省略して記述してある。異なる送信元IPアドレスア、イに対して、同一のTCPコネクションIDであるAが割り当てられているが、これは、TCPコネクションを利用するIPアドレスは、送信ホスト301と受信ホスト302(図3参照)のペアに対応して、常に2つのIPアドレスの組合せであるためである。
【0031】
また、図6は、第1の実施形態において通信状態記憶部103−1に記憶される不通・疎通テーブルの一例を示す図である。TCPコネクションID毎に、不通時刻と疎通時刻が順次記憶される。
【0032】
以下、図4の動作フローチャートと、図5及び図6のテーブル構成に従って説明する。
まず、入力部101が、パケットを受信する(ステップS401)。
次に、パケット情報取得部102−1は、受信パケットのIPヘッダ及びTCPヘッダ内の送信元IPアドレス、送信元ポート番号、宛先IPアドレス、宛先ポート番号の4つの情報組から、TCPコネクションIDを作成する。また、パケット情報取得部102−1は、TCPデータ長とSEQを取得する(ステップS402)。パケット情報取得部102−1は、これらの情報を、不通・疎通検出部102−2に通知する。
【0033】
続いて、不通・疎通検出部102−2は、TCPコネクションIDが通信状態記憶部103−1内のコネクションテーブル(図5参照)に存在しているか否かを判定する(ステップS403)。
【0034】
受信パケットが或るTCPコネクションの先頭パケットで、TCPコネクションIDが
コネクションテーブルに存在していない場合には、不通・疎通検出部102−2は、以下の動作を実行する(ステップS403の判定がNO)。
【0035】
即ち、不通・疎通検出部102−2は、通信状態記憶部103−1内のコネクションテーブル(図5参照)及び不通・疎通テーブル(図6参照)に、TCPコネクションのエントリを新規に作成する(ステップS404)。
【0036】
その後、不通・疎通検出部102−2は、不通・疎通テーブルの新規エントリ(図6参照)に、疎通時刻として、パケット情報取得部102−1から通知された受信パケットの受信時刻を記録する(ステップS408)。
【0037】
更に、不通・疎通検出部102−2は、コネクションテーブルの新規エントリ(図5参照)において、前回SEQ=0にステップS402にて取得された受信パケットのTCPデータ長を加算して得られる値を、新たな前回SEQとして更新する(ステップS411)。その後、次のパケットの受信処理に戻る(ステップS411→S401)。
【0038】
一方、受信パケットが或るTCPコネクションの2番目以降のパケットで、TCPコネクションIDがコネクションテーブルに存在している場合には、不通・疎通検出部102−2は、以下の動作を実行する(ステップS403の判定がYES)。
【0039】
まず、不通・疎通検出部102−2は、TCPデータ長が0よりも大きいか否かを判定する(ステップS405)。
TCPデータ長が0である場合には(ステップS405の判定がNO)、次のパケットの受信処理に戻る(ステップS405→S401)。
【0040】
TCPデータ長が0よりも大きい場合には(ステップS405の判定がYES)、不通・疎通検出部102−2は、以下の疎通処理を実行する。
不通・疎通検出部102−2はまず、ステップS402にて受信パケットから取得されたSEQが、コネクションテーブル(図5)の該当するエントリに記憶されている前回SEQ以上であるか否かを判定する(ステップS406)。これは、SEQが単調増加しているか否かの判定になる。
【0041】
次に、SEQが単調増加している場合には(ステップS406の判定がYES)、不通・疎通検出部102−2は、コネクションテーブル(図5)の該当するエントリに、不通開始時刻が記録されているか否かを判定する(ステップS407)。
【0042】
不通開始時刻が記録されていないときには(ステップS407の判定がNO)、不通・疎通検出部102−2は、ステップS408の処理に進む。
不通開始時刻が記録されているときには(ステップS407の判定がYES)、不通・疎通検出部102−2は、その不通開始時刻から受信パケットの受信時刻までを不通時刻として、不通・疎通テーブルの該当するエントリに記録する(ステップS409)。
【0043】
続いて、不通・疎通検出部102−2は、コネクションテーブルの該当するエントリの不通開始時刻をリセットする(ステップS410)。
その後、不通・疎通検出部102−2は、ステップS408の処理に進む。
【0044】
ステップS408では、不通・疎通検出部102−2は、不通・疎通テーブルの該当するエントリ(図6参照)に、疎通時刻として、パケット情報取得部102−1から通知された受信パケットの受信時刻を記録する。
【0045】
更に、不通・疎通検出部102−2は、コネクションテーブルの該当するエントリ(図5参照)において、前回SEQにステップS402にて取得された受信パケットのTCPデータ長を加算して得られる値を、新たな前回SEQとして更新する(ステップS411)。その後、次のパケットの受信処理に戻る(ステップS411→S401)。
【0046】
一方、前述したステップS406において、SEQが単調増加していないと判定された場合には(ステップS406の判定がNO)、不通・疎通検出部102−2は不通処理として、コネクションテーブル(図5参照)の該当するエントリに不通開始時刻を記録する(ステップS412)。不通開始時刻は、パケット情報取得部102−1から通知された受信パケットの受信時刻である。ただし、該当エントリに既に不通開始時刻が記録されているときには、不通開始時刻の新たな記録は行われない。その後、次のパケットの受信処理に戻る(ステップS412→S401)。
【0047】
上記一連の制御動作の具体例について説明する。
今、図5に示されるコネクションテーブルの記録状態において、SEQが680、データ長が20で、送信元IPアドレスがア、宛先IPアドレスがイであり、TCPコネクションIDがAに属するデータパケットが受信されたとする。この場合、図4において、ステップS401→S402→S403→S405→S406→S407→S408→S411の順に、各処理が実行される。この結果、SEQが単調増加して疎通を確認できるパケットとして、疎通時刻としてパケット受信時刻T1が不通・疎通テーブル(図6)の該当するエントリに記録される。また、コネクションテーブル(図5)の該当するエントリにおいて、前回SEQが、680から700に更新される。
【0048】
次に、送信元IPアドレスがア、宛先IPアドレスがイ、TCPコネクションIDがAに属し、SEQが680、データ長が20のパケットが受信されたとする。この場合、図4において、ステップS401→S402→S403→S405→S406→S412の順に、各処理が実行される。この結果、SEQが単調増加していないと判定されるため、不通時刻が記録されるべきパケットとして、コネクションテーブルの該当エントリに、不通開始時刻T2が記録される。
【0049】
続いて、30秒経過した後、送信元IPアドレスがア、宛先IPアドレスがイ、TCPコネクションIDがAであり、SEQが700、データ長が100のパケットが受信されたとする。この場合、図4において、ステップS401→S402→S403→S405→S406→S407→S409→S410→S408→S411の順に、各処理が実行される。この結果、SEQが再び単調増加して疎通を確認できるパケットとして、コネクションテーブルの該当するエントリの不通開始時刻からパケット受信時刻T3までが、今までの不通時刻として、不通・疎通テーブル(図6)の該当するエントリに記録される。また、パケット受信時刻T3が疎通時刻として、不通・疎通テーブル(図6)の該当するエントリに記録される。更に、コネクションテーブル(図5)の該当するエントリにおいて、前回SEQが、700から800に更新される。
【0050】
以上の処理をパケットが受信されるごとに繰り返すことで、コネクション毎の不通、疎通時刻が算出される。
不通・疎通検出部102−2は、上述のようにして更新されるコネクションテーブル及び不通・疎通テーブルの記録内容から、一定時間毎に、疎通、不通、無通信を判定し、判定結果をモニタ結果記憶部103−2に格納する。
【0051】
図7は、不通・疎通検出部102−2が実行する疎通、不通、無通信の判定処理を示す動作フローチャートである。
まず、不通・疎通検出部102−2は、通信状態記憶部103−1内のコネクションテ
ーブルに、未処理のエントリがあるか否かを判定する(ステップS701)。なお、TCPコネクションIDが処理済みのものと同じである場合は、処理済みとされる。
【0052】
コネクションテーブルに未処理のエントリがある場合(ステップS701の判定がYES)、不通・疎通検出部102−2は、コネクションテーブル上の未処理の1エントリの内容を取得する(ステップS702)。
【0053】
次に、不通・疎通検出部102−2は、上記エントリに属する送信元IPアドレスが、特には図示しない手段により障害判定対象として設定されているか否かを判定する(ステップS703)。
【0054】
上記送信元IPアドレスが障害判定対象として設定されていないときには(ステップS703の判定がNO)、不通・疎通検出部102−2は、次のエントリの処理に進む(ステップS703→S701)。
【0055】
上記送信元IPアドレスが障害判定対象として設定されているときには(ステップS703の判定がYES)、不通・疎通検出部102−2は、上記エントリに対応するTCPコネクションをキーとして、通信状態記憶部103−1内の不通・疎通テーブルを検索する。そして、不通・疎通検出部102−2は、検索された不通・疎通テーブルのエントリから、当該TCPコネクションの不通時刻及び疎通時刻を取得する(ステップS704)。
【0056】
続いて、不通・疎通検出部102−2は、現在監視を行っているネットワーク経路に対応する疎通時刻を、現在までに得られている疎通時刻とステップS704にて取得した現在処理しているTCPコネクションの疎通時刻とのオア演算結果として算出する(ステップS705)。即ち、少なくとも1つのTCPコネクションにおいて疎通となっている時刻が全体の疎通時刻として算出される。
【0057】
更に、不通・疎通検出部102−2は、現在監視を行っているネットワーク経路に対応する不通時刻を、現在までに得られている不通時刻とステップS704にて取得した現在処理しているTCPコネクションの不通時刻とのオア演算結果であって、ステップS705にて算出されている疎通時刻ではない時間帯として算出する(ステップS706)。即ち、疎通時刻ではない時間帯において、少なくとも1つのTCPコネクションにおいて不通となっている時刻が全体の不通時刻として検出される。
【0058】
以上の処理が、コネクションテーブルから抽出される全てのTCPコネクションについて実行された後、ステップS701の判定がNOとなった時点で、不通・疎通検出部102−2は、現在までに得られた不通時刻及び疎通時刻を、記憶部103内のモニタ結果記憶部103−2に出力する(ステップS707)。
【0059】
上記一連の制御動作の具体例について説明する。
今、TCPコネクションID=A,B,Cの記録がコネクションテーブルに存在し、不通・疎通テーブルの記録内容が図8(a)に示されるごとくであるとする。この場合、それぞれ同一のアドレス10の受信ホスト302(図3参照)に対して、アドレス1,2,3の各送信ホスト301(図3参照)が通信している。
【0060】
今、図8(b)に示されるように、ステップS705にて、コネクションAの疎通記録であるTA0〜TA1,TA2〜TA3,TA4〜TA5に対して、コネクションBの疎通記録であるTB0〜TB1,TB2〜TB3がオア演算される。この結果、疎通時刻として、TB0〜TB1,TB2〜TB3が得られる。
【0061】
次に、図8(b)に示されるように、ステップS706にて、TA1〜TA2及びTA3〜TA4と、TB0〜TB1及びTB2〜TB3が反転されたものとのアンド演算が実行され、結果としてTB1〜TB2が不通時刻として得られる。
【0062】
上記と同様の処理がコネクションCに対しても実行される結果、図8(b)に示されるように、TB1〜TB2が、コネクションA,B,Cに共通する不通時刻として出力される。
【0063】
今、上記各ホストが図9に示される接続状態を有している場合、障害箇所として最も可能性が高いのはアドレス1,2,3が共通して利用するリンクL1で、その不通時刻はTB1〜TB2であることが推測できる。
【0064】
コネクションテーブル及び不通・疎通テーブルのエントリの削除動作については、次のような制御動作を採用できる。即ち、例えば1分に1回、不通・疎通テーブル全体が検索されて、最終疎通時刻から5分以上経過しているTCPコネクションIDに関して、コネクション・テーブルと不通・疎通テーブルの該当するエントリが削除される。これにより、容量が有限であるテーブルを効率よく使うことができる。
【0065】
次に、第2の実施形態として、図1の不通検出装置100がデータパケットとACKパケットの両方をモニタできる場合の制御動作について、説明する。
図10は、第2の実施形態における不通検出装置100の全体制御動作を示す動作フローチャートである。
【0066】
また、図11は、第2の実施形態において通信状態記憶部103−1に記憶されるコネクションテーブルの構成例を示した図である。第2の実施形態では、不通・疎通テーブルは設けられず、コネクションテーブルのみで制御が実行される。
【0067】
まず、入力部101が、パケットを受信する(ステップS1001)。
次に、パケット情報取得部102−1は、受信パケットのIPヘッダ及びTCPヘッダ内の送信元IPアドレス、送信元ポート番号、宛先IPアドレス、宛先ポート番号の4つの情報組から、TCPコネクションIDを作成する。また、パケット情報取得部102−1は、TCPデータ長とSEQを取得する(ステップS1002)。パケット情報取得部102−1は、これらの情報を、不通・疎通検出部102−2に通知する。
【0068】
続いて、不通・疎通検出部102−2は、TCPコネクションIDが通信状態記憶部103−1内のコネクションテーブル(図11参照)に存在しているか否かを判定する(ステップS1003)。
【0069】
受信パケットが或るTCPコネクションの先頭パケットで、TCPコネクションIDがコネクションテーブルに存在していない場合には、不通・疎通検出部102−2は、以下の動作を実行する(ステップS1003の判定がNO)。
【0070】
即ち、不通・疎通検出部102−2は、通信状態記憶部103−1内のコネクションテーブル(図11参照)に、TCPコネクションのエントリを新規に作成する。このとき、不通・疎通検出部102−2は、コネクションテーブルの新規エントリに、疎通時刻として、パケット情報取得部102−1から通知された受信パケットの受信時刻を記録する。また、不通・疎通検出部102−2は、コネクションテーブルの新規エントリにおいて、ステップS1002にて取得された受信パケットのTCPデータ長を前回SEQとして設定する(以上、ステップS1004)。その後、次のパケットの受信処理に戻る(ステップS1004→S1001)。
【0071】
一方、受信パケットが或るTCPコネクションの2番目以降のパケットで、TCPコネクションIDが通信状態記憶部103−1内のコネクションテーブルに存在している場合には、不通・疎通検出部102−2は、以下の動作を実行する(ステップS1003の判定がYES)。
【0072】
まず、不通・疎通検出部102−2は、コネクションテーブル(図11参照)の該当するエントリに、不通開始時刻が記録されているか否かを判定する(ステップS1005)。なお、コネクションテーブル上では、1つのTCPコネクションIDに対応するエントリは、送信元IPアドレスが、送信ホスト301である場合と受信ホスト302(共に図3参照)である場合の2つのエントリが存在する。そして、第2の実施形態においては、どちらの送信元IPアドレスのコネクションにおいて不通が発生するかまで区別して検出される。この場合、ステップS1005では、対象となるTCPコネクションIDに対応する2つのエントリのうち、少なくとも何れか一方において不通開始時刻が記録されているか否かが判定される。
【0073】
不通開始時刻が記録されていないときには(ステップS1005の判定がNO)、不通・疎通検出部102−2は、ステップS1002にて受信パケットから取得されたSEQが、コネクションテーブル(図11)の該当するエントリに記憶されている前回SEQ以上であるか否かを判定する(ステップS1006)。これは、SEQが単調増加しているか否かの判定になる。
【0074】
次に、SEQが単調増加している場合には(ステップS1006の判定がYES)、不通・疎通検出部102−2は、TCPデータ長が0よりも大きいか否かを判定する(ステップS1007)。
【0075】
TCPデータ長が0よりも大きい場合には(ステップS1007の判定がYES)、不通・疎通検出部102−2は、後述するステップ1017の処理に進む。
TCPデータ長が0である場合には(ステップS1007の判定がNO)、不通・疎通検出部102−2は更に、TCPヘッダ内のコードビットのACKフラグ(図2参照)がONであるか否か、即ち、受信パケットがACKパケットであるか否かを判定する(ステップS1008)。
【0076】
受信パケットがACKパケットでACKフラグがONである場合には(ステップS1008の判定がYES)、不通・疎通検出部102−2は、後述するステップ1017の処理に進む。
【0077】
受信パケットがACKパケットではなくACKフラグがONではない場合には(ステップS1008の判定がNO)、不通・疎通検出部102−2は、次のパケットの受信処理に戻る(ステップS1008→S1001)。
【0078】
一方、前述したステップS1005において、不通開始時刻が記録されていると判定されたときには、不通・疎通検出部102−2は、TCPデータ長が0よりも大きいか否かを判定する(ステップS1013)。
【0079】
TCPデータ長が0よりも大きい場合には(ステップS1013の判定がYES)、不通・疎通検出部102−2は更に、ステップS1002にて受信パケットから取得されたSEQが、コネクションテーブル(図11)の該当するエントリに記憶されている前回SEQ以上であるか否かを判定する(ステップS1014)。これは、SEQが単調増加し
ているか否かの判定になる。
【0080】
SEQが単調増加していない場合には(ステップS1014の判定がNO)、不通・疎通検出部102−2は、現在の不通状態をそのまま維持し、次のパケットの受信処理に戻る(ステップS1014→S1001)。
SEQが単調増加している場合には(ステップS1014の判定がYES)、不通・疎通検出部102−2は、ステップS1016の処理に進む。
【0081】
また、前述のステップS1013において、TCPデータ長が0であると判定された場合には(ステップS1013の判定がNO)、不通・疎通検出部102−2は更に、その受信パケットが不通アドレス発のものであるか否かを判定する(ステップS1015)。即ち、不通・疎通検出部102−2は、受信パケットが、コネクションテーブル上で検索されている2つのエントリのうち、不通開始時刻が設定されているほうのエントリに記憶されている送信元IPアドレス(図11参照)のホストから来ているものであるか否かを判定する。この場合の受信パケットは、TCPデータ長が0であるから、ACKパケットである。
【0082】
受信パケットがTCPデータ長≠0かつSEQが単調増加の場合(ステップS1014の判定がYES)又はTCPデータ長=0かつ不通アドレス発の場合(ステップS1015の判定がYES)は、ステップS1016の処理が実行される。これは、送信ホスト301側又は受信ホスト302側(図3参照)の何れかの不通状態が解消される状態を示している。即ち、不通・疎通検出部102−2は、コネクションテーブルの該当するエントリに記録されている不通開始時刻から受信パケットの受信時刻までを不通時刻として、コネクションテーブルの該当エントリに記録する。また、不通・疎通検出部102−2は、コネクションテーブルの該当するエントリの不通開始時刻をリセットする(以上、ステップS1016)。
【0083】
上記ステップS1016の処理の後、前述したステップS1007の判定がYESの場合、又は前述したステップS1008の判定がYESの場合には、以下のステップS1017とS1018の処理が実行される。これは、疎通状態を設定するための処理である。
【0084】
まず、不通・疎通検出部102−2は、不通・疎通テーブルの該当するエントリ(図11参照)に、疎通時刻として、パケット情報取得部102−1から通知された受信パケットの受信時刻を記録する(ステップS1017)。
【0085】
次に、不通・疎通検出部102−2は、コネクションテーブルの該当するエントリ(図11参照)において、前回SEQにステップS1002にて取得された受信パケットのTCPデータ長を加算して得られる値を、新たな前回SEQとして更新する(ステップS1018)。
【0086】
上記ステップS1018で処理された受信パケットがACKパケットである場合、又は前述したステップS1015にて受信パケットがTCPデータ長=0かつ不通アドレス発ではないACKパケットであると判定された場合には、ステップS1019が判定される。即ち、不通・疎通検出部102−2は、受信パケットのTCPヘッダ内の確認応答番号(ACK番号)(図2参照)が、コネクションテーブルの該当するエントリに記録されている前回ACK番号よりも大きいか否かを判定する(ステップS1019)。
【0087】
受信パケットのACK番号が前回ACK番号より大きい場合には(ステップS1019の判定がYES)、コネクションテーブルの該当するエントリに記録されている前回ACK番号が受信パケットのACK番号で置き換えられ更新される(ステップS1020)。
【0088】
ステップS1020の処理の後又はステップS1019の判定がNOである場合には、不通・疎通検出部102−2は、次のパケットの受信処理に戻る。
一方、ステップS1005にてコネクションテーブルの該当するエントリに不通開始時刻が未記録と判定され、かつステップS1006にて受信パケットのSEQが単調増加なしと判定された場合には、不通・疎通検出部102−2は、以下の不通処理を実行する。
【0089】
即ち、不通・疎通検出部102−2は、受信パケットのSEQ(シーケンス番号)が、それとは逆経路のACK番号(逆側ACK番号)以上であるか否かを判定する(ステップS1009)。逆側ACK番号は、コネクションテーブル上で検索されている2つのエントリのうち、受信パケットから抽出された送信元IPアドレスとは異なるアドレスが送信元IPアドレスとして記録されているエントリに記録されている前回ACK番号である(図11参照)。
【0090】
受信パケットのSEQが逆側ACK番号以上である場合は、受信ホスト302が送信ホスト301からのデータパケットを受け取れずACKパケットを返信できない状態であることを示している。即ち、送信ホスト301から受信ホスト302に向かう経路で不通が発生している状態が推定される。従って、この場合には(ステップS1009の判定がYES)、不通・疎通検出部102−2は、自装置から見て不通と推定される側にある受信ホスト302のIPアドレスを不通アドレスと決定する。つまり、不通・疎通検出部102−2は、受信パケットの宛先IPアドレスを不通アドレスとして決定する。そして、不通・疎通検出部102−2は、そのアドレスが送信元IPアドレスとして記録されているエントリを、不通処理の対象として選択する(ステップS1010)。
【0091】
一方、受信パケットのSEQが逆側ACK番号よりも小さい場合は、上述の場合とは逆に送信ホスト301が受信ホスト302からのACKパケットを正しく受け取れず、送信するデータパケットのSEQを更新できない状態である。即ち、受信ホスト302から送信ホスト301に向かう経路で不通が発生している状態であると推定できる。従って、この場合には(ステップS1009の判定がNO)、不通・疎通検出部102−2は、自装置から見て不通と推定される側にある送信ホスト301のIPアドレスを不通アドレスと決定する。つまり、不通・疎通検出部102−2は、受信パケットの送信元IPアドレスを不通アドレスとして決定する。そして、不通・疎通検出部102−2は、そのアドレスが送信元IPアドレスとして記録されているエントリを、不通処理の対象として選択する(ステップS1011)。
【0092】
上記ステップS1010又はS1011の後、不通・疎通検出部102−2は、コネクションテーブル(図11参照)の上記選択したエントリに、不通開始時刻を記録する(ステップS1012)。不通開始時刻は、パケット情報取得部102−1から通知された受信パケットの受信時刻である。その後、次のパケットの受信処理に戻る(ステップS1012→S1001)。
【0093】
上記一連の制御動作の具体例について説明する。
第1のケースについて、例えば図12の動作シーケンス図と、図10の動作フローチャート及び図11のコネクションテーブルの例に基づいて説明する。
【0094】
今、図12の時刻T1において、SEQが20500,ACKが600、データ長が100で、送信元IPアドレスがイ、宛先IPアドレスがアであり、TCPコネクションIDがAに属するパケットを、不通検出装置100が受信したとする。
【0095】
この状態では、図11に示されるように、該当するエントリには、不通開始時刻の記録
が無く、「前回SEQ≦SEQ」が成り立ち、TCPデータ長が100である。従って、図10において、ステップS1001→S1002→S1003→S1005→S1006→S1007→S1017→S1018→S1019の各処理が順次実行され、ステップS1019の判定はNOとなる。この結果、疎通時刻としてパケット受信時刻T1、前回SEQとして20600、前回ACKとして600が、コネクションテーブルの該当するエントリに記録される。
【0096】
以下同様に、図12の時刻T4まで該当エントリの内容が更新されるが、時刻T5において、「前回SEQ≦SEQ」が成り立たないシーケンスとなる。この結果、図10において、ステップS1001→S1002→S1003→S1005→S1006→S1009の各処理が順次実行される。ここで、受信パケットのSEQは20700、逆側ACK番号は図11の送信元IPアドレスがアであるエントリの前回ACK番号であり20500である。従って、ステップS1009の判定は、YESとなり、ステップS1010→S1012の各処理が更に実行される。これにより、不通開始時刻T5が、コネクションテーブルの送信元IPアドレスがア側であるエントリ(図11参照)に記録される。
【0097】
この状態は図12の時刻T7まで続く。この場合、図10において、ステップS1001→S1002→S1003→S1005→S1013→S1014→S1001の各処理が繰り返し実行される。
【0098】
その後、図12の時刻T8でアが発側アドレスとなるACKパケットが受信されると、図10において、ステップS1001→S1002→S1003→S1005→S1013→S1015の各処理が実行される。そして、ステップS1015の判定がYESとなり、不通解消の処理であるステップS1016が実行され、ア側の不通時刻がT5からT8までと記録される。
【0099】
次に、第2のケースについて、例えば図13の動作シーケンス図と、図10の動作フローチャート及び図11のコネクションテーブルの例に基づいて説明する。
今、図13において、送信ホスト301=イから受信ホスト302=アへのパケット送信処理において、時刻T1からT4までは、ステップS1001→S1002→S1003→S1005→S1006→S1007→S1017→S1018→S1019→S1001の各処理が実行される。また、時刻T5とT6では、ステップS1001→S1002→S1003→S1005→S1006→S1007→S1008→S1017→S1018→S1019→S1020→S1001の各処理が実行される。これにより、不通検出装置100において、疎通状態が推定されている。
【0100】
しかし、図13の時刻T7では、SEQ=20700のパケットが再送されているため、「前回SEQ≦SEQ」が成り立たず、ステップS1006の判定がNOとなる。かつ、受信パケットのSEQは20700、逆側ACK番号は20900となっているため、ステップS1009の判定もNOとなる。この結果、ステップS1011→S1012の各処理が更に実行される。これにより、不通開始時刻T7が、コネクションテーブルの送信元IPアドレスがイ側であるエントリ(図11参照)に記録される。
【0101】
この状態は図13の時刻T10まで続く。この場合、図10で、受信パケットが送信ホスト301から受信ホスト302へ向かう場合は、ステップS1001→S1002→S1003→S1005→S1013→S1014→S1001の各処理が実行される。また、受信パケットが受信ホスト302から送信ホスト301へ向かう場合は、ステップS1001→S1002→S1003→S1005→S1013→S1015→S1019→S1001の各処理が繰り返し実行される。
【0102】
その後、図13の時刻T10で受信ホスト302から送信ホスト301へのACKが疎通し、時刻T11でイが発側アドレスとなるデータパケットが受信されると、図10において、ステップS1014にて「前回SEQ≦SEQ」が成立する。これにより、ステップS1014の判定がYESとなり、不通解消の処理であるステップS1016が実行され、イ側の不通時刻がT7からT11までと記録される。
【0103】
図14は、上述した第1の実施形態又は第2の実施形態の動作を実現する図1の不通検出装置100を実現できるコンピュータのハードウェア構成の一例を示す図である。
図14に示されるコンピュータは、CPU1401、メモリ1402、入力装置1403、出力装置1404、外部記憶装置1405、可搬記録媒体1409が挿入される可搬記録媒体駆動装置1406、及びネットワーク接続装置1407を有し、これらがバス1408によって相互に接続された構成を有する。同図に示される構成は上記システムを実現できるコンピュータの一例であり、そのようなコンピュータはこの構成に限定されるものではない。
【0104】
CPU1401は、当該コンピュータ全体の制御を行う。メモリ1402は、プログラムの実行、データ更新等の際に、外部記憶装置1405(或いは可搬記録媒体1409)に記憶されているプログラム又はデータを一時的に格納するRAM等のメモリである。CUP1401は、プログラムをメモリ1402に読み出して実行することにより、全体の制御を行う。
【0105】
入力装置1403は、例えば、キーボード、マウス等及びそれらのインタフェース制御装置とからなる。入力装置1403は、ユーザによるキーボードやマウス等による入力操作を検出し、その検出結果をCPU1401に通知する。
【0106】
出力装置1404は、表示装置、印刷装置等及びそれらのインタフェース制御装置とからなる。出力装置1404は、CPU1401の制御によって送られてくるデータを表示装置や印刷装置に出力する。
【0107】
外部記憶装置1405は、例えばハードディスク記憶装置である。主に各種データやプログラムの保存に用いられる。
可搬記録媒体駆動装置1406は、光ディスクやSDRAM、コンパクトフラッシュ(登録商標)等の可搬記録媒体1409を収容するもので、外部記憶装置1405の補助の役割を有する。
【0108】
ネットワーク接続装置1407は、例えばLAN(ローカルエリアネットワーク)又はWAN(ワイドエリアネットワーク)の通信回線を接続するための装置であり、タップ等に接続される。
【0109】
図1の実施形態による不通検出装置100は、それに必要な処理機能を搭載したプログラムをCPU1401が実行することで実現される。そのプログラムは、例えば外部記憶装置1405や可搬記録媒体1409に記録して配布してもよく、或いはネットワーク接続装置1407によりネットワークから取得できるようにしてもよい。
【0110】
以上説明した実施形態は、TCPだけに利用を限定するものではなく、同じようにシーケンス番号を使うプロトコルであればどのようなプロトコルでも共通して利用できる。例えば、L4(レイヤ4)プロトコルであるSCTPや、L3(レイヤ3)プロトコルであるICMPなども利用可能である。
【図面の簡単な説明】
【0111】
【図1】不通検出装置の実施形態の構成図である。
【図2】TCP/IPパケットのデータフォーマットを示す図である。
【図3】不通検出装置100を使った実施形態の基本的な動作の説明図である。
【図4】第1の実施形態における不通検出装置100の全体制御動作を示す動作フローチャートである。
【図5】第1の実施形態において通信状態記憶部103−1に記憶されるコネクションテーブルの一例を示す図である。
【図6】第1の実施形態において通信状態記憶部103−1に記憶される不通・疎通テーブルの一例を示す図である。
【図7】不通・疎通検出部102−2が実行する疎通、不通、無通信の判定処理を示す動作フローチャートである。
【図8】第1の実施形態の動作説明図(その1)である。
【図9】第1の実施形態の動作説明図(その2)である。
【図10】第2の実施形態における不通検出装置100の全体制御動作を示す動作フローチャートである。
【図11】第2の実施形態において通信状態記憶部103−1に記憶されるコネクションテーブルの構成例を示した図である。
【図12】第2の実施形態を説明するための動作シーケンス図(その1)である。
【図13】第2の実施形態を説明するための動作シーケンス図(その2)である。
【図14】実施形態を実現するコンピュータのハードウェア構成図である。
【図15】従来技術の問題点の説明図である。
【符号の説明】
【0112】
100、1501 不通検出装置
101 入力部
102 処理部
102−1 パケット情報取得部
102−2 不通・疎通検出部
103 記憶部
103−1 通信状態記憶部
103−2 モニタ結果記憶部
104 出力部
301、1502 送信ホスト
302、1503 受信ホスト
【技術分野】
【0001】
開示する技術は、ネットワーク通信システムの導通確認技術に関する。
【背景技術】
【0002】
IPネットワークにおける疎通確認にはpingコマンドがよく利用される。pingでは、検査対象のホストに対してICMP EChoリクエストと呼ばれる応答要求パケットが送信され、それに応答するICMP EChoリプライが受信されれば、検査対象のホストは疎通していると判断できる。
【0003】
これに対して、データ通信で広く使われるTCP(トランスミッションコントロールプロトコール:Transmission Control Protocol)を使っても同等の疎通確認が可能である。具体的には検査対象のホストに対して1バイト以上のデータパケットが送信され、これに対する承認応答情報が格納されるACK(ACKnowledgement)パケットが応答されれば、対象ホストを含めた通信経路は疎通していると判断できる。なお、典型的な通信形態では、送信されるデータパケットの2つに対して、1つのACKパケットが応答される。
【発明の開示】
【発明が解決しようとする課題】
【0004】
今、図15に示されるように、上述のような疎通確認を目的とする不通検出装置1501を、ネットワークの中継地点、即ち、送信ホスト1502と受信ホスト1503の間に、タップ等の手段を用いて設置することを考える。
【0005】
この場合、受信ホスト1503に対する疎通確認は、データパケットDATA1,DATA2等に対するACKパケットACK2を受信することにより、確認することができる。
【0006】
一方、送信ホスト1502に対する疎通確認において、送信ホスト1502から不通検出装置1501に向かう方向の疎通については、送信ホスト1502からデータパケットDATA1,DATA2が受信されるため確認できる。しかしながら、不通検出装置1501から送信ホスト1502に向かう方向の疎通については、受信ホスト1503から不通検出装置1501を経由して送信ホスト1502に向かうACK2パケットに対する応答はないため、確認できないという問題点を有していた。なお、送信ホスト1502は通常、受信ホスト1503からのACK2パケットを待たずに、送信データパケットを送信することができる。このため、不通検出装置1501が検出する送信データパケットは、ACK2パケットに対する応答とはなり得ない。
【0007】
また、送信ホスト1502と受信ホスト1503が上りと下りで異なる経路で通信する場合には、1つの経路上の中継地点に置かれた不通検出装置だけでは、受信ホスト1503及び送信ホスト1502の双方ともに、疎通確認を行えないという問題点を有していた。
【0008】
そこで、開示する技術の課題は、データパケットとACKパケットの対応関係がとれないパケットシーケンスにおいても、疎通及び不通確認を行えるようにすることにある。
【課題を解決するための手段】
【0009】
以下に開示する態様は、ネットワーク上を流れるパケットデータの導通状態を検出する
ための不通検出装置、方法、又はプログラムを前提とする。
入力部は、ネットワーク上を流れるパケットを受信する。
【0010】
パケット情報取得部は、入力部により受信される受信パケットから、受信パケットの送信元アドレス情報、宛先アドレス情報、順序制御情報(シーケンス番号)、及び承認応答情報(ACKフラグ、確認応答番号)を含むパケット情報を取得する。
【0011】
不通・疎通検出部は、そのパケット情報に基づいて、受信パケットの送信元のホストと宛先のホストの間の不通又は疎通を含む導通状態を検出する。この不通・疎通検出部は例えば、受信パケットの順序制御情報の変化傾向を検出することにより、受信パケットの送信元のホストと宛先のホストの間の不通又は疎通を含む導通状態を検出する。また、不通・疎通検出部は例えば、受信パケットの承認応答情報を更に判定することにより、受信パケットの送信元のホストと自装置間又は自装置と受信パケットの宛先のホスト間の何れにおいて不通が発生したかを検出する。
出力部は、その導通状態を出力する。
【発明の効果】
【0012】
開示した態様の構成によれば、不通検出装置がTCPのようなシーケンス番号をベースに動作するパケットをモニタすることで、上下パケットの経路が違う場合でも、或いは、要求に対する応答パケットが存在しないホストに対しても疎通か不通を判断することが可能となる。
これにより、ネットワークやホストの障害に関する診断精度が向上する効果が得られる。
【発明を実施するための最良の形態】
【0013】
以下、図面を参照しながら、最良の実施形態について詳細に説明する。
図1は、不通検出装置の実施形態の構成図である。
不通検出装置100は、送信ホストと受信ホストを接続するネットワーク上でタップ又はスイッチのモニタポートなど、パケットをモニタする装置を経由してネットワークに接続されており、送信ホストから受信ホストに送信されるパケットをモニタできる。
【0014】
図1において、処理部102は、パケット情報取得部102−1と不通・疎通検出部102−2を備え、記憶部103は、通信状態記憶部103−1とモニタ結果記憶部103−2を備える。
【0015】
入力部101は、ネットワーク上を流れるパケットを受信する。
パケット情報取得部102−1は、受信パケットのIPヘッダ及びTCPヘッダから、以下の情報を取得する。即ち、パケット情報取得部102−1は、TCPコネクションID、即ち、送信元IPアドレス(SA)、送信元ポート番号(SP)、宛先IPアドレス(DA)、宛先ポート番号(DP)の4つの情報組と、TCPのシーケンス番号(SEQ)値を取得する。
【0016】
図2に示されるように、送信元IPアドレス及び宛先IPアドレスは、受信パケットのIPヘッダ部に格納されている情報である。また、送信元ポート番号、宛先ポート番号、及びシーケンス番号は、IPパケットに格納される上位プロトコルのTCPパケット内のTCPヘッダに格納されている情報である。送信元ポート番号は、送信元アプリケーションのプロセスを特定するための番号である。宛先ポート番号は、宛先アプリケーションのプロセスを特定するための番号である。
【0017】
受信ホストは、TCPパケットを正常に受信すると、送信ホストへのACKパケットの返信において、宛先ポート番号と送信元ポート番号を逆に設定する。つまり、元の宛先ポート番号が送信元ポート番号、送信元ポート番号が宛先ポート番号になるように設定される。
【0018】
シーケンス番号は、TCPパケットが正しい順番で並ぶように制御するための情報である。シーケンス番号としては、各TCPパケットのTCPデータ長を順次加算して得られる値が設定される。TCPデータ長は、各パケットの図2に示されるIPヘッダ内のパケット長からヘッダ長を減算した値として計算できる。パケット長は、ヘッダをはじめ一切合切を含めたパケット全体のサイズをオクテット単位で示したものである。
【0019】
受信ホストは、受信したTCPパケットに問題がなかったときには、送信ホストにACKパケットを返信する際に、図2に示されるTCPヘッダ内の確認応答番号として、受信したパケットのシーケンス番号に受信したTCPパケット長を加算して得た番号をセットして返信する。また、ACKパケットにおいては、図2に示されるTCPヘッダ内のコードビットの1つであるACKフラグがONされる(1がセットされる)。送信ホスは、このACKフラグがONのパケットを受信すると、そのパケットのTCPヘッダ内の確認応答番号を識別して、ACKパケットによる承認の対象がどの送信データであるかを確認した後、バッファ内に保持していたその送信データを破棄する。
【0020】
また、パケット情報取得部102−1は、入力部101がパケットを取得したときの時刻を、パケット受信時刻として取得する。
パケット情報取得部102−1は、上記取得情報を、不通・疎通検出部102−2へ通知する。ここで、TCPコネクションIDは、パケットの送受信方向によらず一意である。
【0021】
不通・疎通検出部102−2は、パケット情報取得部102−1から通知されたTCPTCPコネクションIDをキーに、通信状態記憶部103−1に記憶されたコネクションテーブル及び不通・疎通テーブルを検索する。そして、不通・疎通検出部102−2は、検索された各テーブルのエントリ内容とパケット情報取得部102−1から通知されたパケット情報とに基づいて、コネクションテーブル及び不通・疎通テーブルを更新する。
【0022】
また、不通・疎通検出部102−2は、コネクションテーブル及び不通・疎通テーブルの記録内容から、疎通、不通、無通信を判定し、判定結果をモニタ結果記憶部103−2に格納する。
【0023】
通信状態記憶部103−1は、不通・疎通検出部102−2での判断結果を記録する。
モニタ結果記憶部103−2は、ネットワーク管理者や監視装置に通知するためのモニタ結果を記憶する機能を持ち、例えばTCPコネクション毎の送信パケット数、ロス数、及び送信ホストの遅延時間などを統計情報として記憶する。
【0024】
出力部104は、モニタ結果記憶部103−2で保存されている情報の一部若しくは全てを取得して、モニタ結果を出力するインタフェースである。出力部104は、ネットワーク管理者に統計情報を表示するための画面表示部であってもよく、或いは、ネットワーク管理装置(NMS:Network Management System)に送信するための通信プロトコルをサポートするネットワークインタフェース部であってもよい。
【0025】
図3は、上述の構成を有する不通検出装置100を使った実施形態の基本的な動作の説明図である。
本実施形態では、不通検出装置100が、TCPのデータパケットとACKパケットのシーケンス番号をモニタする。
【0026】
そして、TCPTCPコネクションID毎に、受信されるデータパケット又はACKパケットのシーケンス番号が単調増加していることが検出された時間帯は、そのTCPコネクションに対応する送信ホスト301及び受信ホスト302の両側の通信は疎通していると判定される。
【0027】
一方、TCPTCPコネクションID毎に、受信されるデータパケット又はACKパケットのシーケンス番号が重複している時間帯は、そのTCPコネクションの通信は不通であると判定される。
上記以外の時間帯は、そのTCPコネクションの通信は無通信であると判定される。
【0028】
なお、不通検出装置100がデータパケットとACKパケットの両方をモニタできる場合は、上記判定に加えて、不通がどちら側で発生したかを検出できる。
以上の基本動作により、上り下りで別経路を通る箇所に不通検出装置100が設置されても、或いは、一方向へのデータ送信であっても、正確に正常・不通時間を計測することが可能となる。
【0029】
以下に、本実施形態の具体的な動作について説明する。
まず、第1の実施形態として、図1に示される不通検出装置100が、データパケットとACKパケットの両方をモニタできない場合の動作について説明する。
【0030】
図4は、第1の実施形態における不通検出装置100の全体制御動作を示す動作フローチャートである。
図5は、第1の実施形態において通信状態記憶部103−1に記憶されるコネクションテーブルの一例を示す図である。同図において、TCPコネクションIDや送信元IPアドレスは、説明を簡単にするために、A、B、ア、イなどと省略して記述してある。異なる送信元IPアドレスア、イに対して、同一のTCPコネクションIDであるAが割り当てられているが、これは、TCPコネクションを利用するIPアドレスは、送信ホスト301と受信ホスト302(図3参照)のペアに対応して、常に2つのIPアドレスの組合せであるためである。
【0031】
また、図6は、第1の実施形態において通信状態記憶部103−1に記憶される不通・疎通テーブルの一例を示す図である。TCPコネクションID毎に、不通時刻と疎通時刻が順次記憶される。
【0032】
以下、図4の動作フローチャートと、図5及び図6のテーブル構成に従って説明する。
まず、入力部101が、パケットを受信する(ステップS401)。
次に、パケット情報取得部102−1は、受信パケットのIPヘッダ及びTCPヘッダ内の送信元IPアドレス、送信元ポート番号、宛先IPアドレス、宛先ポート番号の4つの情報組から、TCPコネクションIDを作成する。また、パケット情報取得部102−1は、TCPデータ長とSEQを取得する(ステップS402)。パケット情報取得部102−1は、これらの情報を、不通・疎通検出部102−2に通知する。
【0033】
続いて、不通・疎通検出部102−2は、TCPコネクションIDが通信状態記憶部103−1内のコネクションテーブル(図5参照)に存在しているか否かを判定する(ステップS403)。
【0034】
受信パケットが或るTCPコネクションの先頭パケットで、TCPコネクションIDが
コネクションテーブルに存在していない場合には、不通・疎通検出部102−2は、以下の動作を実行する(ステップS403の判定がNO)。
【0035】
即ち、不通・疎通検出部102−2は、通信状態記憶部103−1内のコネクションテーブル(図5参照)及び不通・疎通テーブル(図6参照)に、TCPコネクションのエントリを新規に作成する(ステップS404)。
【0036】
その後、不通・疎通検出部102−2は、不通・疎通テーブルの新規エントリ(図6参照)に、疎通時刻として、パケット情報取得部102−1から通知された受信パケットの受信時刻を記録する(ステップS408)。
【0037】
更に、不通・疎通検出部102−2は、コネクションテーブルの新規エントリ(図5参照)において、前回SEQ=0にステップS402にて取得された受信パケットのTCPデータ長を加算して得られる値を、新たな前回SEQとして更新する(ステップS411)。その後、次のパケットの受信処理に戻る(ステップS411→S401)。
【0038】
一方、受信パケットが或るTCPコネクションの2番目以降のパケットで、TCPコネクションIDがコネクションテーブルに存在している場合には、不通・疎通検出部102−2は、以下の動作を実行する(ステップS403の判定がYES)。
【0039】
まず、不通・疎通検出部102−2は、TCPデータ長が0よりも大きいか否かを判定する(ステップS405)。
TCPデータ長が0である場合には(ステップS405の判定がNO)、次のパケットの受信処理に戻る(ステップS405→S401)。
【0040】
TCPデータ長が0よりも大きい場合には(ステップS405の判定がYES)、不通・疎通検出部102−2は、以下の疎通処理を実行する。
不通・疎通検出部102−2はまず、ステップS402にて受信パケットから取得されたSEQが、コネクションテーブル(図5)の該当するエントリに記憶されている前回SEQ以上であるか否かを判定する(ステップS406)。これは、SEQが単調増加しているか否かの判定になる。
【0041】
次に、SEQが単調増加している場合には(ステップS406の判定がYES)、不通・疎通検出部102−2は、コネクションテーブル(図5)の該当するエントリに、不通開始時刻が記録されているか否かを判定する(ステップS407)。
【0042】
不通開始時刻が記録されていないときには(ステップS407の判定がNO)、不通・疎通検出部102−2は、ステップS408の処理に進む。
不通開始時刻が記録されているときには(ステップS407の判定がYES)、不通・疎通検出部102−2は、その不通開始時刻から受信パケットの受信時刻までを不通時刻として、不通・疎通テーブルの該当するエントリに記録する(ステップS409)。
【0043】
続いて、不通・疎通検出部102−2は、コネクションテーブルの該当するエントリの不通開始時刻をリセットする(ステップS410)。
その後、不通・疎通検出部102−2は、ステップS408の処理に進む。
【0044】
ステップS408では、不通・疎通検出部102−2は、不通・疎通テーブルの該当するエントリ(図6参照)に、疎通時刻として、パケット情報取得部102−1から通知された受信パケットの受信時刻を記録する。
【0045】
更に、不通・疎通検出部102−2は、コネクションテーブルの該当するエントリ(図5参照)において、前回SEQにステップS402にて取得された受信パケットのTCPデータ長を加算して得られる値を、新たな前回SEQとして更新する(ステップS411)。その後、次のパケットの受信処理に戻る(ステップS411→S401)。
【0046】
一方、前述したステップS406において、SEQが単調増加していないと判定された場合には(ステップS406の判定がNO)、不通・疎通検出部102−2は不通処理として、コネクションテーブル(図5参照)の該当するエントリに不通開始時刻を記録する(ステップS412)。不通開始時刻は、パケット情報取得部102−1から通知された受信パケットの受信時刻である。ただし、該当エントリに既に不通開始時刻が記録されているときには、不通開始時刻の新たな記録は行われない。その後、次のパケットの受信処理に戻る(ステップS412→S401)。
【0047】
上記一連の制御動作の具体例について説明する。
今、図5に示されるコネクションテーブルの記録状態において、SEQが680、データ長が20で、送信元IPアドレスがア、宛先IPアドレスがイであり、TCPコネクションIDがAに属するデータパケットが受信されたとする。この場合、図4において、ステップS401→S402→S403→S405→S406→S407→S408→S411の順に、各処理が実行される。この結果、SEQが単調増加して疎通を確認できるパケットとして、疎通時刻としてパケット受信時刻T1が不通・疎通テーブル(図6)の該当するエントリに記録される。また、コネクションテーブル(図5)の該当するエントリにおいて、前回SEQが、680から700に更新される。
【0048】
次に、送信元IPアドレスがア、宛先IPアドレスがイ、TCPコネクションIDがAに属し、SEQが680、データ長が20のパケットが受信されたとする。この場合、図4において、ステップS401→S402→S403→S405→S406→S412の順に、各処理が実行される。この結果、SEQが単調増加していないと判定されるため、不通時刻が記録されるべきパケットとして、コネクションテーブルの該当エントリに、不通開始時刻T2が記録される。
【0049】
続いて、30秒経過した後、送信元IPアドレスがア、宛先IPアドレスがイ、TCPコネクションIDがAであり、SEQが700、データ長が100のパケットが受信されたとする。この場合、図4において、ステップS401→S402→S403→S405→S406→S407→S409→S410→S408→S411の順に、各処理が実行される。この結果、SEQが再び単調増加して疎通を確認できるパケットとして、コネクションテーブルの該当するエントリの不通開始時刻からパケット受信時刻T3までが、今までの不通時刻として、不通・疎通テーブル(図6)の該当するエントリに記録される。また、パケット受信時刻T3が疎通時刻として、不通・疎通テーブル(図6)の該当するエントリに記録される。更に、コネクションテーブル(図5)の該当するエントリにおいて、前回SEQが、700から800に更新される。
【0050】
以上の処理をパケットが受信されるごとに繰り返すことで、コネクション毎の不通、疎通時刻が算出される。
不通・疎通検出部102−2は、上述のようにして更新されるコネクションテーブル及び不通・疎通テーブルの記録内容から、一定時間毎に、疎通、不通、無通信を判定し、判定結果をモニタ結果記憶部103−2に格納する。
【0051】
図7は、不通・疎通検出部102−2が実行する疎通、不通、無通信の判定処理を示す動作フローチャートである。
まず、不通・疎通検出部102−2は、通信状態記憶部103−1内のコネクションテ
ーブルに、未処理のエントリがあるか否かを判定する(ステップS701)。なお、TCPコネクションIDが処理済みのものと同じである場合は、処理済みとされる。
【0052】
コネクションテーブルに未処理のエントリがある場合(ステップS701の判定がYES)、不通・疎通検出部102−2は、コネクションテーブル上の未処理の1エントリの内容を取得する(ステップS702)。
【0053】
次に、不通・疎通検出部102−2は、上記エントリに属する送信元IPアドレスが、特には図示しない手段により障害判定対象として設定されているか否かを判定する(ステップS703)。
【0054】
上記送信元IPアドレスが障害判定対象として設定されていないときには(ステップS703の判定がNO)、不通・疎通検出部102−2は、次のエントリの処理に進む(ステップS703→S701)。
【0055】
上記送信元IPアドレスが障害判定対象として設定されているときには(ステップS703の判定がYES)、不通・疎通検出部102−2は、上記エントリに対応するTCPコネクションをキーとして、通信状態記憶部103−1内の不通・疎通テーブルを検索する。そして、不通・疎通検出部102−2は、検索された不通・疎通テーブルのエントリから、当該TCPコネクションの不通時刻及び疎通時刻を取得する(ステップS704)。
【0056】
続いて、不通・疎通検出部102−2は、現在監視を行っているネットワーク経路に対応する疎通時刻を、現在までに得られている疎通時刻とステップS704にて取得した現在処理しているTCPコネクションの疎通時刻とのオア演算結果として算出する(ステップS705)。即ち、少なくとも1つのTCPコネクションにおいて疎通となっている時刻が全体の疎通時刻として算出される。
【0057】
更に、不通・疎通検出部102−2は、現在監視を行っているネットワーク経路に対応する不通時刻を、現在までに得られている不通時刻とステップS704にて取得した現在処理しているTCPコネクションの不通時刻とのオア演算結果であって、ステップS705にて算出されている疎通時刻ではない時間帯として算出する(ステップS706)。即ち、疎通時刻ではない時間帯において、少なくとも1つのTCPコネクションにおいて不通となっている時刻が全体の不通時刻として検出される。
【0058】
以上の処理が、コネクションテーブルから抽出される全てのTCPコネクションについて実行された後、ステップS701の判定がNOとなった時点で、不通・疎通検出部102−2は、現在までに得られた不通時刻及び疎通時刻を、記憶部103内のモニタ結果記憶部103−2に出力する(ステップS707)。
【0059】
上記一連の制御動作の具体例について説明する。
今、TCPコネクションID=A,B,Cの記録がコネクションテーブルに存在し、不通・疎通テーブルの記録内容が図8(a)に示されるごとくであるとする。この場合、それぞれ同一のアドレス10の受信ホスト302(図3参照)に対して、アドレス1,2,3の各送信ホスト301(図3参照)が通信している。
【0060】
今、図8(b)に示されるように、ステップS705にて、コネクションAの疎通記録であるTA0〜TA1,TA2〜TA3,TA4〜TA5に対して、コネクションBの疎通記録であるTB0〜TB1,TB2〜TB3がオア演算される。この結果、疎通時刻として、TB0〜TB1,TB2〜TB3が得られる。
【0061】
次に、図8(b)に示されるように、ステップS706にて、TA1〜TA2及びTA3〜TA4と、TB0〜TB1及びTB2〜TB3が反転されたものとのアンド演算が実行され、結果としてTB1〜TB2が不通時刻として得られる。
【0062】
上記と同様の処理がコネクションCに対しても実行される結果、図8(b)に示されるように、TB1〜TB2が、コネクションA,B,Cに共通する不通時刻として出力される。
【0063】
今、上記各ホストが図9に示される接続状態を有している場合、障害箇所として最も可能性が高いのはアドレス1,2,3が共通して利用するリンクL1で、その不通時刻はTB1〜TB2であることが推測できる。
【0064】
コネクションテーブル及び不通・疎通テーブルのエントリの削除動作については、次のような制御動作を採用できる。即ち、例えば1分に1回、不通・疎通テーブル全体が検索されて、最終疎通時刻から5分以上経過しているTCPコネクションIDに関して、コネクション・テーブルと不通・疎通テーブルの該当するエントリが削除される。これにより、容量が有限であるテーブルを効率よく使うことができる。
【0065】
次に、第2の実施形態として、図1の不通検出装置100がデータパケットとACKパケットの両方をモニタできる場合の制御動作について、説明する。
図10は、第2の実施形態における不通検出装置100の全体制御動作を示す動作フローチャートである。
【0066】
また、図11は、第2の実施形態において通信状態記憶部103−1に記憶されるコネクションテーブルの構成例を示した図である。第2の実施形態では、不通・疎通テーブルは設けられず、コネクションテーブルのみで制御が実行される。
【0067】
まず、入力部101が、パケットを受信する(ステップS1001)。
次に、パケット情報取得部102−1は、受信パケットのIPヘッダ及びTCPヘッダ内の送信元IPアドレス、送信元ポート番号、宛先IPアドレス、宛先ポート番号の4つの情報組から、TCPコネクションIDを作成する。また、パケット情報取得部102−1は、TCPデータ長とSEQを取得する(ステップS1002)。パケット情報取得部102−1は、これらの情報を、不通・疎通検出部102−2に通知する。
【0068】
続いて、不通・疎通検出部102−2は、TCPコネクションIDが通信状態記憶部103−1内のコネクションテーブル(図11参照)に存在しているか否かを判定する(ステップS1003)。
【0069】
受信パケットが或るTCPコネクションの先頭パケットで、TCPコネクションIDがコネクションテーブルに存在していない場合には、不通・疎通検出部102−2は、以下の動作を実行する(ステップS1003の判定がNO)。
【0070】
即ち、不通・疎通検出部102−2は、通信状態記憶部103−1内のコネクションテーブル(図11参照)に、TCPコネクションのエントリを新規に作成する。このとき、不通・疎通検出部102−2は、コネクションテーブルの新規エントリに、疎通時刻として、パケット情報取得部102−1から通知された受信パケットの受信時刻を記録する。また、不通・疎通検出部102−2は、コネクションテーブルの新規エントリにおいて、ステップS1002にて取得された受信パケットのTCPデータ長を前回SEQとして設定する(以上、ステップS1004)。その後、次のパケットの受信処理に戻る(ステップS1004→S1001)。
【0071】
一方、受信パケットが或るTCPコネクションの2番目以降のパケットで、TCPコネクションIDが通信状態記憶部103−1内のコネクションテーブルに存在している場合には、不通・疎通検出部102−2は、以下の動作を実行する(ステップS1003の判定がYES)。
【0072】
まず、不通・疎通検出部102−2は、コネクションテーブル(図11参照)の該当するエントリに、不通開始時刻が記録されているか否かを判定する(ステップS1005)。なお、コネクションテーブル上では、1つのTCPコネクションIDに対応するエントリは、送信元IPアドレスが、送信ホスト301である場合と受信ホスト302(共に図3参照)である場合の2つのエントリが存在する。そして、第2の実施形態においては、どちらの送信元IPアドレスのコネクションにおいて不通が発生するかまで区別して検出される。この場合、ステップS1005では、対象となるTCPコネクションIDに対応する2つのエントリのうち、少なくとも何れか一方において不通開始時刻が記録されているか否かが判定される。
【0073】
不通開始時刻が記録されていないときには(ステップS1005の判定がNO)、不通・疎通検出部102−2は、ステップS1002にて受信パケットから取得されたSEQが、コネクションテーブル(図11)の該当するエントリに記憶されている前回SEQ以上であるか否かを判定する(ステップS1006)。これは、SEQが単調増加しているか否かの判定になる。
【0074】
次に、SEQが単調増加している場合には(ステップS1006の判定がYES)、不通・疎通検出部102−2は、TCPデータ長が0よりも大きいか否かを判定する(ステップS1007)。
【0075】
TCPデータ長が0よりも大きい場合には(ステップS1007の判定がYES)、不通・疎通検出部102−2は、後述するステップ1017の処理に進む。
TCPデータ長が0である場合には(ステップS1007の判定がNO)、不通・疎通検出部102−2は更に、TCPヘッダ内のコードビットのACKフラグ(図2参照)がONであるか否か、即ち、受信パケットがACKパケットであるか否かを判定する(ステップS1008)。
【0076】
受信パケットがACKパケットでACKフラグがONである場合には(ステップS1008の判定がYES)、不通・疎通検出部102−2は、後述するステップ1017の処理に進む。
【0077】
受信パケットがACKパケットではなくACKフラグがONではない場合には(ステップS1008の判定がNO)、不通・疎通検出部102−2は、次のパケットの受信処理に戻る(ステップS1008→S1001)。
【0078】
一方、前述したステップS1005において、不通開始時刻が記録されていると判定されたときには、不通・疎通検出部102−2は、TCPデータ長が0よりも大きいか否かを判定する(ステップS1013)。
【0079】
TCPデータ長が0よりも大きい場合には(ステップS1013の判定がYES)、不通・疎通検出部102−2は更に、ステップS1002にて受信パケットから取得されたSEQが、コネクションテーブル(図11)の該当するエントリに記憶されている前回SEQ以上であるか否かを判定する(ステップS1014)。これは、SEQが単調増加し
ているか否かの判定になる。
【0080】
SEQが単調増加していない場合には(ステップS1014の判定がNO)、不通・疎通検出部102−2は、現在の不通状態をそのまま維持し、次のパケットの受信処理に戻る(ステップS1014→S1001)。
SEQが単調増加している場合には(ステップS1014の判定がYES)、不通・疎通検出部102−2は、ステップS1016の処理に進む。
【0081】
また、前述のステップS1013において、TCPデータ長が0であると判定された場合には(ステップS1013の判定がNO)、不通・疎通検出部102−2は更に、その受信パケットが不通アドレス発のものであるか否かを判定する(ステップS1015)。即ち、不通・疎通検出部102−2は、受信パケットが、コネクションテーブル上で検索されている2つのエントリのうち、不通開始時刻が設定されているほうのエントリに記憶されている送信元IPアドレス(図11参照)のホストから来ているものであるか否かを判定する。この場合の受信パケットは、TCPデータ長が0であるから、ACKパケットである。
【0082】
受信パケットがTCPデータ長≠0かつSEQが単調増加の場合(ステップS1014の判定がYES)又はTCPデータ長=0かつ不通アドレス発の場合(ステップS1015の判定がYES)は、ステップS1016の処理が実行される。これは、送信ホスト301側又は受信ホスト302側(図3参照)の何れかの不通状態が解消される状態を示している。即ち、不通・疎通検出部102−2は、コネクションテーブルの該当するエントリに記録されている不通開始時刻から受信パケットの受信時刻までを不通時刻として、コネクションテーブルの該当エントリに記録する。また、不通・疎通検出部102−2は、コネクションテーブルの該当するエントリの不通開始時刻をリセットする(以上、ステップS1016)。
【0083】
上記ステップS1016の処理の後、前述したステップS1007の判定がYESの場合、又は前述したステップS1008の判定がYESの場合には、以下のステップS1017とS1018の処理が実行される。これは、疎通状態を設定するための処理である。
【0084】
まず、不通・疎通検出部102−2は、不通・疎通テーブルの該当するエントリ(図11参照)に、疎通時刻として、パケット情報取得部102−1から通知された受信パケットの受信時刻を記録する(ステップS1017)。
【0085】
次に、不通・疎通検出部102−2は、コネクションテーブルの該当するエントリ(図11参照)において、前回SEQにステップS1002にて取得された受信パケットのTCPデータ長を加算して得られる値を、新たな前回SEQとして更新する(ステップS1018)。
【0086】
上記ステップS1018で処理された受信パケットがACKパケットである場合、又は前述したステップS1015にて受信パケットがTCPデータ長=0かつ不通アドレス発ではないACKパケットであると判定された場合には、ステップS1019が判定される。即ち、不通・疎通検出部102−2は、受信パケットのTCPヘッダ内の確認応答番号(ACK番号)(図2参照)が、コネクションテーブルの該当するエントリに記録されている前回ACK番号よりも大きいか否かを判定する(ステップS1019)。
【0087】
受信パケットのACK番号が前回ACK番号より大きい場合には(ステップS1019の判定がYES)、コネクションテーブルの該当するエントリに記録されている前回ACK番号が受信パケットのACK番号で置き換えられ更新される(ステップS1020)。
【0088】
ステップS1020の処理の後又はステップS1019の判定がNOである場合には、不通・疎通検出部102−2は、次のパケットの受信処理に戻る。
一方、ステップS1005にてコネクションテーブルの該当するエントリに不通開始時刻が未記録と判定され、かつステップS1006にて受信パケットのSEQが単調増加なしと判定された場合には、不通・疎通検出部102−2は、以下の不通処理を実行する。
【0089】
即ち、不通・疎通検出部102−2は、受信パケットのSEQ(シーケンス番号)が、それとは逆経路のACK番号(逆側ACK番号)以上であるか否かを判定する(ステップS1009)。逆側ACK番号は、コネクションテーブル上で検索されている2つのエントリのうち、受信パケットから抽出された送信元IPアドレスとは異なるアドレスが送信元IPアドレスとして記録されているエントリに記録されている前回ACK番号である(図11参照)。
【0090】
受信パケットのSEQが逆側ACK番号以上である場合は、受信ホスト302が送信ホスト301からのデータパケットを受け取れずACKパケットを返信できない状態であることを示している。即ち、送信ホスト301から受信ホスト302に向かう経路で不通が発生している状態が推定される。従って、この場合には(ステップS1009の判定がYES)、不通・疎通検出部102−2は、自装置から見て不通と推定される側にある受信ホスト302のIPアドレスを不通アドレスと決定する。つまり、不通・疎通検出部102−2は、受信パケットの宛先IPアドレスを不通アドレスとして決定する。そして、不通・疎通検出部102−2は、そのアドレスが送信元IPアドレスとして記録されているエントリを、不通処理の対象として選択する(ステップS1010)。
【0091】
一方、受信パケットのSEQが逆側ACK番号よりも小さい場合は、上述の場合とは逆に送信ホスト301が受信ホスト302からのACKパケットを正しく受け取れず、送信するデータパケットのSEQを更新できない状態である。即ち、受信ホスト302から送信ホスト301に向かう経路で不通が発生している状態であると推定できる。従って、この場合には(ステップS1009の判定がNO)、不通・疎通検出部102−2は、自装置から見て不通と推定される側にある送信ホスト301のIPアドレスを不通アドレスと決定する。つまり、不通・疎通検出部102−2は、受信パケットの送信元IPアドレスを不通アドレスとして決定する。そして、不通・疎通検出部102−2は、そのアドレスが送信元IPアドレスとして記録されているエントリを、不通処理の対象として選択する(ステップS1011)。
【0092】
上記ステップS1010又はS1011の後、不通・疎通検出部102−2は、コネクションテーブル(図11参照)の上記選択したエントリに、不通開始時刻を記録する(ステップS1012)。不通開始時刻は、パケット情報取得部102−1から通知された受信パケットの受信時刻である。その後、次のパケットの受信処理に戻る(ステップS1012→S1001)。
【0093】
上記一連の制御動作の具体例について説明する。
第1のケースについて、例えば図12の動作シーケンス図と、図10の動作フローチャート及び図11のコネクションテーブルの例に基づいて説明する。
【0094】
今、図12の時刻T1において、SEQが20500,ACKが600、データ長が100で、送信元IPアドレスがイ、宛先IPアドレスがアであり、TCPコネクションIDがAに属するパケットを、不通検出装置100が受信したとする。
【0095】
この状態では、図11に示されるように、該当するエントリには、不通開始時刻の記録
が無く、「前回SEQ≦SEQ」が成り立ち、TCPデータ長が100である。従って、図10において、ステップS1001→S1002→S1003→S1005→S1006→S1007→S1017→S1018→S1019の各処理が順次実行され、ステップS1019の判定はNOとなる。この結果、疎通時刻としてパケット受信時刻T1、前回SEQとして20600、前回ACKとして600が、コネクションテーブルの該当するエントリに記録される。
【0096】
以下同様に、図12の時刻T4まで該当エントリの内容が更新されるが、時刻T5において、「前回SEQ≦SEQ」が成り立たないシーケンスとなる。この結果、図10において、ステップS1001→S1002→S1003→S1005→S1006→S1009の各処理が順次実行される。ここで、受信パケットのSEQは20700、逆側ACK番号は図11の送信元IPアドレスがアであるエントリの前回ACK番号であり20500である。従って、ステップS1009の判定は、YESとなり、ステップS1010→S1012の各処理が更に実行される。これにより、不通開始時刻T5が、コネクションテーブルの送信元IPアドレスがア側であるエントリ(図11参照)に記録される。
【0097】
この状態は図12の時刻T7まで続く。この場合、図10において、ステップS1001→S1002→S1003→S1005→S1013→S1014→S1001の各処理が繰り返し実行される。
【0098】
その後、図12の時刻T8でアが発側アドレスとなるACKパケットが受信されると、図10において、ステップS1001→S1002→S1003→S1005→S1013→S1015の各処理が実行される。そして、ステップS1015の判定がYESとなり、不通解消の処理であるステップS1016が実行され、ア側の不通時刻がT5からT8までと記録される。
【0099】
次に、第2のケースについて、例えば図13の動作シーケンス図と、図10の動作フローチャート及び図11のコネクションテーブルの例に基づいて説明する。
今、図13において、送信ホスト301=イから受信ホスト302=アへのパケット送信処理において、時刻T1からT4までは、ステップS1001→S1002→S1003→S1005→S1006→S1007→S1017→S1018→S1019→S1001の各処理が実行される。また、時刻T5とT6では、ステップS1001→S1002→S1003→S1005→S1006→S1007→S1008→S1017→S1018→S1019→S1020→S1001の各処理が実行される。これにより、不通検出装置100において、疎通状態が推定されている。
【0100】
しかし、図13の時刻T7では、SEQ=20700のパケットが再送されているため、「前回SEQ≦SEQ」が成り立たず、ステップS1006の判定がNOとなる。かつ、受信パケットのSEQは20700、逆側ACK番号は20900となっているため、ステップS1009の判定もNOとなる。この結果、ステップS1011→S1012の各処理が更に実行される。これにより、不通開始時刻T7が、コネクションテーブルの送信元IPアドレスがイ側であるエントリ(図11参照)に記録される。
【0101】
この状態は図13の時刻T10まで続く。この場合、図10で、受信パケットが送信ホスト301から受信ホスト302へ向かう場合は、ステップS1001→S1002→S1003→S1005→S1013→S1014→S1001の各処理が実行される。また、受信パケットが受信ホスト302から送信ホスト301へ向かう場合は、ステップS1001→S1002→S1003→S1005→S1013→S1015→S1019→S1001の各処理が繰り返し実行される。
【0102】
その後、図13の時刻T10で受信ホスト302から送信ホスト301へのACKが疎通し、時刻T11でイが発側アドレスとなるデータパケットが受信されると、図10において、ステップS1014にて「前回SEQ≦SEQ」が成立する。これにより、ステップS1014の判定がYESとなり、不通解消の処理であるステップS1016が実行され、イ側の不通時刻がT7からT11までと記録される。
【0103】
図14は、上述した第1の実施形態又は第2の実施形態の動作を実現する図1の不通検出装置100を実現できるコンピュータのハードウェア構成の一例を示す図である。
図14に示されるコンピュータは、CPU1401、メモリ1402、入力装置1403、出力装置1404、外部記憶装置1405、可搬記録媒体1409が挿入される可搬記録媒体駆動装置1406、及びネットワーク接続装置1407を有し、これらがバス1408によって相互に接続された構成を有する。同図に示される構成は上記システムを実現できるコンピュータの一例であり、そのようなコンピュータはこの構成に限定されるものではない。
【0104】
CPU1401は、当該コンピュータ全体の制御を行う。メモリ1402は、プログラムの実行、データ更新等の際に、外部記憶装置1405(或いは可搬記録媒体1409)に記憶されているプログラム又はデータを一時的に格納するRAM等のメモリである。CUP1401は、プログラムをメモリ1402に読み出して実行することにより、全体の制御を行う。
【0105】
入力装置1403は、例えば、キーボード、マウス等及びそれらのインタフェース制御装置とからなる。入力装置1403は、ユーザによるキーボードやマウス等による入力操作を検出し、その検出結果をCPU1401に通知する。
【0106】
出力装置1404は、表示装置、印刷装置等及びそれらのインタフェース制御装置とからなる。出力装置1404は、CPU1401の制御によって送られてくるデータを表示装置や印刷装置に出力する。
【0107】
外部記憶装置1405は、例えばハードディスク記憶装置である。主に各種データやプログラムの保存に用いられる。
可搬記録媒体駆動装置1406は、光ディスクやSDRAM、コンパクトフラッシュ(登録商標)等の可搬記録媒体1409を収容するもので、外部記憶装置1405の補助の役割を有する。
【0108】
ネットワーク接続装置1407は、例えばLAN(ローカルエリアネットワーク)又はWAN(ワイドエリアネットワーク)の通信回線を接続するための装置であり、タップ等に接続される。
【0109】
図1の実施形態による不通検出装置100は、それに必要な処理機能を搭載したプログラムをCPU1401が実行することで実現される。そのプログラムは、例えば外部記憶装置1405や可搬記録媒体1409に記録して配布してもよく、或いはネットワーク接続装置1407によりネットワークから取得できるようにしてもよい。
【0110】
以上説明した実施形態は、TCPだけに利用を限定するものではなく、同じようにシーケンス番号を使うプロトコルであればどのようなプロトコルでも共通して利用できる。例えば、L4(レイヤ4)プロトコルであるSCTPや、L3(レイヤ3)プロトコルであるICMPなども利用可能である。
【図面の簡単な説明】
【0111】
【図1】不通検出装置の実施形態の構成図である。
【図2】TCP/IPパケットのデータフォーマットを示す図である。
【図3】不通検出装置100を使った実施形態の基本的な動作の説明図である。
【図4】第1の実施形態における不通検出装置100の全体制御動作を示す動作フローチャートである。
【図5】第1の実施形態において通信状態記憶部103−1に記憶されるコネクションテーブルの一例を示す図である。
【図6】第1の実施形態において通信状態記憶部103−1に記憶される不通・疎通テーブルの一例を示す図である。
【図7】不通・疎通検出部102−2が実行する疎通、不通、無通信の判定処理を示す動作フローチャートである。
【図8】第1の実施形態の動作説明図(その1)である。
【図9】第1の実施形態の動作説明図(その2)である。
【図10】第2の実施形態における不通検出装置100の全体制御動作を示す動作フローチャートである。
【図11】第2の実施形態において通信状態記憶部103−1に記憶されるコネクションテーブルの構成例を示した図である。
【図12】第2の実施形態を説明するための動作シーケンス図(その1)である。
【図13】第2の実施形態を説明するための動作シーケンス図(その2)である。
【図14】実施形態を実現するコンピュータのハードウェア構成図である。
【図15】従来技術の問題点の説明図である。
【符号の説明】
【0112】
100、1501 不通検出装置
101 入力部
102 処理部
102−1 パケット情報取得部
102−2 不通・疎通検出部
103 記憶部
103−1 通信状態記憶部
103−2 モニタ結果記憶部
104 出力部
301、1502 送信ホスト
302、1503 受信ホスト
【特許請求の範囲】
【請求項1】
ネットワーク上を流れるパケットデータの導通状態を検出するための不通検出装置であって、
前記ネットワーク上を流れるパケットを受信する入力部と、
該入力部により受信される受信パケットから、該受信パケットの送信元アドレス情報、宛先アドレス情報、順序制御情報、及び承認応答情報を含むパケット情報を取得するパケット情報取得部と、
該パケット情報に基づいて、前記受信パケットの送信元のホストと宛先のホストの間の不通又は疎通を含む導通状態を検出する不通・疎通検出部と、
該導通状態を出力する出力部と、
を含むことを特徴とする不通検出装置。
【請求項2】
前記不通・疎通検出部は、前記受信パケットの順序制御情報の変化傾向を検出することにより、前記受信パケットの送信元のホストと宛先のホストの間の不通又は疎通を含む導通状態を検出する、
ことを特徴とする請求項1に記載の不通検出装置。
【請求項3】
前記不通・疎通検出部は、前記受信パケットの承認応答情報を更に判定することにより、前記受信パケットの送信元のホストと自装置間又は自装置と前記受信パケットの宛先のホスト間の何れにおいて不通が発生したかを検出する、
ことを特徴とする請求項2に記載の不通検出装置。
【請求項4】
ネットワーク上を流れるパケットデータの導通状態を検出するための不通検出方法であって、
前記ネットワーク上を流れるパケットを受信する入力ステップと、
該入力部により受信される受信パケットから、該受信パケットの送信元アドレス情報、宛先アドレス情報、順序制御情報、及び承認応答情報を含むパケット情報を取得するパケット情報取得ステップと、
該パケット情報に基づいて、前記受信パケットの送信元のホストと宛先のホストの間の不通又は疎通を含む導通状態を検出する不通・疎通検出ステップと、
該導通状態を出力する出力ステップと、
を含むことを特徴とする不通検出方法。
【請求項5】
ネットワーク上を流れるパケットデータの導通状態を検出するためのコンピュータに、
前記ネットワーク上を流れるパケットを受信する入力ステップと、
該入力部により受信される受信パケットから、該受信パケットの送信元アドレス情報、宛先アドレス情報、順序制御情報、及び承認応答情報を含むパケット情報を取得するパケット情報取得ステップと、
該パケット情報に基づいて、前記受信パケットの送信元のホストと宛先のホストの間の不通又は疎通を含む導通状態を検出する不通・疎通検出ステップと、
該導通状態を出力する出力ステップと、
を実行させるためのプログラム。
【請求項1】
ネットワーク上を流れるパケットデータの導通状態を検出するための不通検出装置であって、
前記ネットワーク上を流れるパケットを受信する入力部と、
該入力部により受信される受信パケットから、該受信パケットの送信元アドレス情報、宛先アドレス情報、順序制御情報、及び承認応答情報を含むパケット情報を取得するパケット情報取得部と、
該パケット情報に基づいて、前記受信パケットの送信元のホストと宛先のホストの間の不通又は疎通を含む導通状態を検出する不通・疎通検出部と、
該導通状態を出力する出力部と、
を含むことを特徴とする不通検出装置。
【請求項2】
前記不通・疎通検出部は、前記受信パケットの順序制御情報の変化傾向を検出することにより、前記受信パケットの送信元のホストと宛先のホストの間の不通又は疎通を含む導通状態を検出する、
ことを特徴とする請求項1に記載の不通検出装置。
【請求項3】
前記不通・疎通検出部は、前記受信パケットの承認応答情報を更に判定することにより、前記受信パケットの送信元のホストと自装置間又は自装置と前記受信パケットの宛先のホスト間の何れにおいて不通が発生したかを検出する、
ことを特徴とする請求項2に記載の不通検出装置。
【請求項4】
ネットワーク上を流れるパケットデータの導通状態を検出するための不通検出方法であって、
前記ネットワーク上を流れるパケットを受信する入力ステップと、
該入力部により受信される受信パケットから、該受信パケットの送信元アドレス情報、宛先アドレス情報、順序制御情報、及び承認応答情報を含むパケット情報を取得するパケット情報取得ステップと、
該パケット情報に基づいて、前記受信パケットの送信元のホストと宛先のホストの間の不通又は疎通を含む導通状態を検出する不通・疎通検出ステップと、
該導通状態を出力する出力ステップと、
を含むことを特徴とする不通検出方法。
【請求項5】
ネットワーク上を流れるパケットデータの導通状態を検出するためのコンピュータに、
前記ネットワーク上を流れるパケットを受信する入力ステップと、
該入力部により受信される受信パケットから、該受信パケットの送信元アドレス情報、宛先アドレス情報、順序制御情報、及び承認応答情報を含むパケット情報を取得するパケット情報取得ステップと、
該パケット情報に基づいて、前記受信パケットの送信元のホストと宛先のホストの間の不通又は疎通を含む導通状態を検出する不通・疎通検出ステップと、
該導通状態を出力する出力ステップと、
を実行させるためのプログラム。
【図1】
【図2】
【図4】
【図5】
【図6】
【図7】
【図8】
【図10】
【図11】
【図14】
【図3】
【図9】
【図12】
【図13】
【図15】
【図2】
【図4】
【図5】
【図6】
【図7】
【図8】
【図10】
【図11】
【図14】
【図3】
【図9】
【図12】
【図13】
【図15】
【公開番号】特開2010−119053(P2010−119053A)
【公開日】平成22年5月27日(2010.5.27)
【国際特許分類】
【出願番号】特願2008−292540(P2008−292540)
【出願日】平成20年11月14日(2008.11.14)
【出願人】(000005223)富士通株式会社 (25,993)
【Fターム(参考)】
【公開日】平成22年5月27日(2010.5.27)
【国際特許分類】
【出願日】平成20年11月14日(2008.11.14)
【出願人】(000005223)富士通株式会社 (25,993)
【Fターム(参考)】
[ Back to top ]