(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-10-17
(45)【発行日】2022-10-25
(54)【発明の名称】パケットキャプチャ装置および方法
(51)【国際特許分類】
H04L 41/069 20220101AFI20221018BHJP
H04L 43/12 20220101ALI20221018BHJP
【FI】
H04L41/069
H04L43/12
(21)【出願番号】P 2021519098
(86)(22)【出願日】2019-05-14
(86)【国際出願番号】 JP2019019123
(87)【国際公開番号】W WO2020230265
(87)【国際公開日】2020-11-19
【審査請求日】2021-09-06
(73)【特許権者】
【識別番号】000004226
【氏名又は名称】日本電信電話株式会社
(74)【代理人】
【識別番号】100098394
【氏名又は名称】山川 茂樹
(74)【代理人】
【識別番号】100153006
【氏名又は名称】小池 勇三
(74)【代理人】
【識別番号】100064621
【氏名又は名称】山川 政樹
(74)【代理人】
【識別番号】100121669
【氏名又は名称】本山 泰
(72)【発明者】
【氏名】吉田 周平
(72)【発明者】
【氏名】右近 祐太
(72)【発明者】
【氏名】大輝 晶子
(72)【発明者】
【氏名】池田 奈美子
(72)【発明者】
【氏名】新田 高庸
【審査官】安藤 一道
(56)【参考文献】
【文献】特開2003-087356(JP,A)
【文献】特開2004-088289(JP,A)
【文献】国際公開第2008/129641(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 41/00
H04L 43/00
(57)【特許請求の範囲】
【請求項1】
ネットワークからパケットを受信するように構成されたパケット受信部と、
受信したパケットをメモリに格納して一時的に保持するように構成されたパケット保持部と、
受信したパケットの情報を基に前記ネットワークに通信障害が発生しているかどうかを判定するように構成された障害検知部と、
前記障害検知部によって通信障害が検知されたときに、前記通信障害の検知時点の前後期間のパケットの保持が保証されるように動作停止アドレスを決定するように構成されたキャプチャ制御部と、
前記メモリのパケットの格納先アドレスが前記動作停止アドレスに到達したとき、または前記通信障害の検知時点から所定の待ち時間以上が経過したときに、前記メモリに格納されたパケットをキャプチャデータとして出力するように構成されたキャプチャデータ生成部とを備え
、
前記キャプチャ制御部は、前記通信障害の検知時点における前記格納先アドレスと、前記通信障害の検知前のパケットの保持を保証する予め設定された保証期間の長さとに基づいて、前記動作停止アドレスを決定することを特徴とするパケットキャプチャ装置。
【請求項2】
ネットワークからパケットを受信するように構成されたパケット受信部と、
受信したパケットをメモリに格納して一時的に保持するように構成されたパケット保持部と、
受信したパケットの情報を基に前記ネットワークに通信障害が発生しているかどうかを判定するように構成された障害検知部と、
前記障害検知部によって通信障害が検知されたときに、前記通信障害の検知時点の前後期間のパケットの保持が保証されるように動作停止アドレスを決定するように構成されたキャプチャ制御部と、
前記メモリのパケットの格納先アドレスが前記動作停止アドレスに到達したとき、または前記通信障害の検知時点から所定の待ち時間以上が経過したときに、前記メモリに格納されたパケットをキャプチャデータとして出力するように構成されたキャプチャデータ生成部とを備え、
前記キャプチャ制御部は、前記通信障害の検知時点における前記格納先アドレスと、前記通信障害の検知前のパケットの保持を保証する予め設定された保証期間の長さとに基づいて、前記動作停止アドレスを決定し、
前記キャプチャデータ生成部は、前記動作停止アドレスを開始アドレスとして、前記キャプチャデータを出力する時点の前記格納先アドレスから1引いたアドレスまでの前記メモリの領域に格納されたパケットを前記キャプチャデータとして出力することを特徴とするパケットキャプチャ装置。
【請求項3】
請求項1
または2記載のパケットキャプチャ装置において、
前記パケット保持部は、リングバッファ構成の前記メモリを有し、前記パケット受信部によってパケットが受信されたときに、前記通信障害の検知前の場合、または前記格納先アドレスが前記動作停止アドレスに到達せず、前記通信障害の検知時点からの経過時間が前記待ち時間未満の場合に、前記パケット受信部によって受信されたパケットを前記メモリの格納先アドレスの領域に格納して、前記格納先アドレスを更新することを特徴とするパケットキャプチャ装置。
【請求項4】
請求項1乃至3のいずれか1項に記載のパケットキャプチャ装置において、
前記障害検知部は、前記パケット受信部によって受信されたパケットの一定周期あたりの累積パケット数が累積パケット数上限閾値を超えた場合、または前記パケット受信部によって受信されたパケットの一定周期あたりの累積バイト数が累積バイト数上限閾値を超えた場合に、前記ネットワークに通信障害が発生していると判定することを特徴とするパケットキャプチャ装置。
【請求項5】
請求項1乃至3のいずれか1項に記載のパケットキャプチャ装置において、
前記パケット受信部によって受信されたパケットが属するフローを識別するように構成されたフロー識別部と、
前記パケット受信部によって受信されたパケットの累積パケット数および累積バイト数をフロー毎に保持するように構成された累積情報保持部とをさらに備え、
前記障害検知部は、一定周期あたりのフロー毎の前記累積パケット数が累積パケット数上限閾値を超えた場合、または一定周期あたりのフロー毎の前記累積バイト数が累積バイト数上限閾値を超えた場合に、前記ネットワークに通信障害が発生していると判定することを特徴とするパケットキャプチャ装置。
【請求項6】
請求項1乃至
5のいずれか1項に記載のパケットキャプチャ装置において、
前記待ち時間を設定可能なように構成されたパラメータ設定部をさらに備えることを特徴とするパケットキャプチャ装置。
【請求項7】
ネットワークからパケットを受信する第1のステップと、
受信したパケットの情報を基に前記ネットワークに通信障害が発生しているかどうかを判定する第2のステップと、
前記第2のステップで通信障害を検知したときに、前記通信障害の検知時点の前後期間のパケットの保持が保証されるように動作停止アドレスを決定する第3のステップと、
前記第1のステップで受信したパケットをメモリに格納して一時的に保持する第4のステップと、
前記メモリのパケットの格納先アドレスが前記動作停止アドレスに到達したとき、または前記通信障害の検知時点から所定の待ち時間以上が経過したときに、前記メモリに格納されたパケットをキャプチャデータとして出力する第5のステップとを含
み、
前記第3のステップは、前記通信障害の検知時点における前記格納先アドレスと、前記通信障害の検知前のパケットの保持を保証する予め設定された保証期間の長さとに基づいて、前記動作停止アドレスを決定するステップを含むことを特徴とするパケットキャプチャ方法。
【請求項8】
ネットワークからパケットを受信する第1のステップと、
受信したパケットの情報を基に前記ネットワークに通信障害が発生しているかどうかを判定する第2のステップと、
前記第2のステップで通信障害を検知したときに、前記通信障害の検知時点の前後期間のパケットの保持が保証されるように動作停止アドレスを決定する第3のステップと、
前記第1のステップで受信したパケットをメモリに格納して一時的に保持する第4のステップと、
前記メモリのパケットの格納先アドレスが前記動作停止アドレスに到達したとき、または前記通信障害の検知時点から所定の待ち時間以上が経過したときに、前記メモリに格納されたパケットをキャプチャデータとして出力する第5のステップとを含み、
前記第3のステップは、前記通信障害の検知時点における前記格納先アドレスと、前記通信障害の検知前のパケットの保持を保証する予め設定された保証期間の長さとに基づいて、前記動作停止アドレスを決定するステップを含み、
前記第5のステップは、前記動作停止アドレスを開始アドレスとして、前記キャプチャデータを出力する時点の前記格納先アドレスから1引いたアドレスまでの前記メモリの領域に格納されたパケットを前記キャプチャデータとして出力するステップを含むことを特徴とするパケットキャプチャ方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ネットワークにおける通信障害発生の前後期間のパケットを採取するパケットキャプチャ装置および方法に関するものである。
【背景技術】
【0002】
データセンタ内のネットワークやクラウドサービスを提供するネットワークなどのIP(Internet Protocol)ネットワークでは、パケットロスやバーストトラフィックなどの通信障害が発生するとサービス品質の低下を招く。このため、IPネットワークでは、障害発生原因を特定し、迅速に障害復旧を行うことが重要である。
【0003】
一般的なネットワーク障害解析の方法としては、通信障害が発生しているネットワークを流れるパケットをキャプチャ装置を用いて取り込んで保存し、保存した各パケットデータのヘッダのフィールド情報をワイヤシャーク(Wireshark)などの解析ツールを用いて確認することで、どのフローのトラフィックが通信障害の原因となっているかを特定する方法が挙げられる。ここで、フローとは、送信元IPアドレスや宛先IPアドレスなどの、パケットヘッダのフィールド情報の組み合わせで定義されるパケットのグループのことを言う。
【0004】
上記の障害解析の方法を人手で行う場合、ネットワークに通信障害が発生していることを何らかの手段で確認した後に、通信障害が発生しているネットワークのトラフィックをキャプチャ装置を用いて一定期間取り込んで保存し、保存したデータの中に障害発生箇所が含まれているか否かを確認するという手順が一般的である。この手順において、保存したデータの中に障害発生箇所が含まれているか否かを確認する工程には時間を要する。また、再現性の低い通信障害の場合には保存したデータの中に障害発生時のトラフィックが含まれているとは限らず、上記の手順を複数回繰り返す必要がある可能性があるため、障害解析には更なる時間を要する可能性がある。
【0005】
このような従来の障害解析の方法の問題を解決することを目的とした技術が提案されている(非特許文献1,2参照)。例えば非特許文献1では、侵入検知システムとトラフィックモニタリングシステムとを組み合わせることで、異常トラヒックの自動保存を実現する方法が提案されている。また、非特許文献2では、SNMP(Simple Network Management Protocol)トラップ受信をトリガとして、そのトリガの前後一定期間のパケットを取り込んで保存する機能が搭載されたパケットキャプチャ製品が紹介されている。
【0006】
非特許文献1,2に開示された方法では、ネットワークの通信障害を検知したときに自動的にパケット保存を開始するので、通信障害を検知した後で改めてパケットを取り込んで保存する必要が無い。このため、上記で述べた再現性が低い通信障害の解析を行う場合に、パケットの保存を複数回繰り返す必要があるという、解析の効率化を妨げる問題を解消することが可能である。
【0007】
また、非特許文献1,2に開示された方法では、SNMPトラップなどの、ネットワーク経由の通知を受信したタイミングの前後期間のパケットを取り込んで保存することを可能としている。具体的には、非特許文献1,2に開示された方法では、ネットワークの通信障害を検知する以前からパケットの取り込みを開始しておき、取り込んだパケットデータを随時PCAP(packet capture)形式のファイルとして出力している。そして、SNMPトラップを受信すると、障害検知時刻の前後期間(例えば前後数分)のパケットデータが記録されたPCAP形式ファイルを上書き禁止とする。以上により、非特許文献1,2に開示された方法では、SNMPトラップを受信したタイミングの前後期間のパケットが保存される。
【0008】
しかしながら、ネットワーク経由で通知を行うSNMPでは、実際の障害発生タイミングからSNMPトラップを受信するまでに遅延が生じる可能性がある。このため、遅延時間を考慮して、パケットを保持するバッファの容量を余分に確保する必要がある。データセンタ内ネットワークのような高帯域なネットワークを監視対象とする場合、例え数秒の遅延時間であったとしても、余分に確保しなければならないバッファの容量は膨大となる。
【0009】
また、非特許文献2のように、取り込んだパケットデータをファイルとして随時出力する場合、HDD(Hard Disk Drive)/SSD(Solid State Drive)などのストレージの容量を十分に確保する必要がある。例えば、マイクロバーストトラフィック(マイクロ秒オーダの時間幅で急激に増加するデータ)のような、障害発生期間が極めて短い通信障害を検知してパケットを取り込みたい場合は、ファイルとして出力されるパケットデータの内、解析に必要な障害発生期間が含まれるパケットデータの割合は極めて小さくなり、ストレージ容量の利用効率が極めて低くなる。
【0010】
ストレージの容量増大の回避策としては、障害検知機能とキャプチャ機能とを同一のキャプチャ装置内に搭載するなどして、キャプチャ装置側で障害を検知できるようにすることで、障害検知タイミングからパケット取り込みの開始タイミングまでの遅延時間を削減することが考えられる。
【0011】
しかしながら、非特許文献2に開示された装置と同様に、通信障害を検知する以前からパケットの取り込みを開始しておき、障害検知後一定期間パケットの取り込みを継続することで、障害検知の前後期間のパケットを保存する方法を、省メモリな構成で実現しようとすると、以下のような課題がある。
すなわち、省メモリな構成では、バーストトラフィックのように一時的に入力レートが増加した際に、バッファメモリが障害検知後のパケットデータで埋め尽くされてしまい、障害検知前のパケットを取り込めない可能性があった。
【先行技術文献】
【非特許文献】
【0012】
【文献】中村豊他,“侵入検知とモニタリングシステムを組み合わせた異常トラヒックの自動保存”,情報処理学会研究報告,Vol.2011-IOT-12,No.38,2011/3/1
【文献】“100GbE S2D フルレートパケットキャプチャ/解析装置 Synesis(登録商標)”,株式会社東陽テクニカ,インターネット<http://www.kyoei-ele.com/products/index.php/prod/info/299/file/7.pdf>
【発明の概要】
【発明が解決しようとする課題】
【0013】
本発明は、上記課題を解決するためになされたもので、必要最小限のメモリ構成で障害発生の前後期間のパケットの採取を保証することが可能なパケットキャプチャ装置および方法を提供することを目的とする。
【課題を解決するための手段】
【0014】
本発明のパケットキャプチャ装置は、ネットワークからパケットを受信するように構成されたパケット受信部と、受信したパケットをメモリに格納して一時的に保持するように構成されたパケット保持部と、受信したパケットの情報を基に前記ネットワークに通信障害が発生しているかどうかを判定するように構成された障害検知部と、前記障害検知部によって通信障害が検知されたときに、前記通信障害の検知時点の前後期間のパケットの保持が保証されるように動作停止アドレスを決定するように構成されたキャプチャ制御部と、前記メモリのパケットの格納先アドレスが前記動作停止アドレスに到達したとき、または前記通信障害の検知時点から所定の待ち時間以上が経過したときに、前記メモリに格納されたパケットをキャプチャデータとして出力するように構成されたキャプチャデータ生成部とを備え、前記キャプチャ制御部は、前記通信障害の検知時点における前記格納先アドレスと、前記通信障害の検知前のパケットの保持を保証する予め設定された保証期間の長さとに基づいて、前記動作停止アドレスを決定することを特徴とするものである。
また、本発明のパケットキャプチャ装置は、ネットワークからパケットを受信するように構成されたパケット受信部と、受信したパケットをメモリに格納して一時的に保持するように構成されたパケット保持部と、受信したパケットの情報を基に前記ネットワークに通信障害が発生しているかどうかを判定するように構成された障害検知部と、前記障害検知部によって通信障害が検知されたときに、前記通信障害の検知時点の前後期間のパケットの保持が保証されるように動作停止アドレスを決定するように構成されたキャプチャ制御部と、前記メモリのパケットの格納先アドレスが前記動作停止アドレスに到達したとき、または前記通信障害の検知時点から所定の待ち時間以上が経過したときに、前記メモリに格納されたパケットをキャプチャデータとして出力するように構成されたキャプチャデータ生成部とを備え、前記キャプチャ制御部は、前記通信障害の検知時点における前記格納先アドレスと、前記通信障害の検知前のパケットの保持を保証する予め設定された保証期間の長さとに基づいて、前記動作停止アドレスを決定し、前記キャプチャデータ生成部は、前記動作停止アドレスを開始アドレスとして、前記キャプチャデータを出力する時点の前記格納先アドレスから1引いたアドレスまでの前記メモリの領域に格納されたパケットを前記キャプチャデータとして出力することを特徴とするものである。
また、本発明のパケットキャプチャ装置の1構成例において、前記パケット保持部は、リングバッファ構成の前記メモリを有し、前記パケット受信部によってパケットが受信されたときに、前記通信障害の検知前の場合、または前記格納先アドレスが前記動作停止アドレスに到達せず、前記通信障害の検知時点からの経過時間が前記待ち時間未満の場合に、前記パケット受信部によって受信されたパケットを前記メモリの格納先アドレスの領域に格納して、前記格納先アドレスを更新することを特徴とするものである。
【0015】
また、本発明のパケットキャプチャ装置の1構成例において、前記障害検知部は、前記パケット受信部によって受信されたパケットの一定周期あたりの累積パケット数が累積パケット数上限閾値を超えた場合、または前記パケット受信部によって受信されたパケットの一定周期あたりの累積バイト数が累積バイト数上限閾値を超えた場合に、前記ネットワークに通信障害が発生していると判定することを特徴とするものである。
また、本発明のパケットキャプチャ装置の1構成例は、前記パケット受信部によって受信されたパケットが属するフローを識別するように構成されたフロー識別部と、前記パケット受信部によって受信されたパケットの累積パケット数および累積バイト数をフロー毎に保持するように構成された累積情報保持部とをさらに備え、前記障害検知部は、一定周期あたりのフロー毎の前記累積パケット数が累積パケット数上限閾値を超えた場合、または一定周期あたりのフロー毎の前記累積バイト数が累積バイト数上限閾値を超えた場合に、前記ネットワークに通信障害が発生していると判定することを特徴とするものである。
また、本発明のパケットキャプチャ装置の1構成例は、前記待ち時間を設定可能なように構成されたパラメータ設定部をさらに備えることを特徴とするものである。
【0016】
また、本発明のパケットキャプチャ方法は、ネットワークからパケットを受信する第1のステップと、受信したパケットの情報を基に前記ネットワークに通信障害が発生しているかどうかを判定する第2のステップと、前記第2のステップで通信障害を検知したときに、前記通信障害の検知時点の前後期間のパケットの保持が保証されるように動作停止アドレスを決定する第3のステップと、前記第1のステップで受信したパケットをメモリに格納して一時的に保持する第4のステップと、前記メモリのパケットの格納先アドレスが前記動作停止アドレスに到達したとき、または前記通信障害の検知時点から所定の待ち時間以上が経過したときに、前記メモリに格納されたパケットをキャプチャデータとして出力する第5のステップとを含み、前記第3のステップは、前記通信障害の検知時点における前記格納先アドレスと、前記通信障害の検知前のパケットの保持を保証する予め設定された保証期間の長さとに基づいて、前記動作停止アドレスを決定するステップを含むことを特徴とするものである。
また、本発明のパケットキャプチャ方法は、ネットワークからパケットを受信する第1のステップと、受信したパケットの情報を基に前記ネットワークに通信障害が発生しているかどうかを判定する第2のステップと、前記第2のステップで通信障害を検知したときに、前記通信障害の検知時点の前後期間のパケットの保持が保証されるように動作停止アドレスを決定する第3のステップと、前記第1のステップで受信したパケットをメモリに格納して一時的に保持する第4のステップと、前記メモリのパケットの格納先アドレスが前記動作停止アドレスに到達したとき、または前記通信障害の検知時点から所定の待ち時間以上が経過したときに、前記メモリに格納されたパケットをキャプチャデータとして出力する第5のステップとを含み、前記第3のステップは、前記通信障害の検知時点における前記格納先アドレスと、前記通信障害の検知前のパケットの保持を保証する予め設定された保証期間の長さとに基づいて、前記動作停止アドレスを決定するステップを含み、前記第5のステップは、前記動作停止アドレスを開始アドレスとして、前記キャプチャデータを出力する時点の前記格納先アドレスから1引いたアドレスまでの前記メモリの領域に格納されたパケットを前記キャプチャデータとして出力するステップを含むことを特徴とするものである。
【発明の効果】
【0017】
本発明によれば、ネットワークの通信障害を検知したときに、通信障害の検知時点の前後期間のパケットの保持が保証されるように動作停止アドレスを決定し、メモリのパケットの格納先アドレスが動作停止アドレスに到達したとき、または通信障害の検知時点から所定の待ち時間以上が経過したときに、メモリに格納されたパケットをキャプチャデータとして出力することにより、省メモリなシステム構成で障害発生の前後期間のパケットの採取を保証することが可能となる。
【図面の簡単な説明】
【0018】
【
図1】
図1は、本発明のパケットキャプチャ装置の動作の概要を説明する図である。
【
図2】
図2は、本発明の第1の実施例に係るパケットキャプチャ装置の構成を示すブロック図である。
【
図3】
図3は、本発明の第1の実施例に係るパケット格納メモリの物理構成を示す図である。
【
図4】
図4は、本発明の第1の実施例に係るパケット格納メモリの論理構成を示す図である。
【
図5】
図5は、本発明の第1の実施例に係るパケット格納メモリへのパケットの格納方法の1例を説明する図である。
【
図6】
図6は、本発明の第1の実施例に係るパケット格納メモリへのパケットの格納方法の別の例を説明する図である。
【
図7】
図7は、本発明の第1の実施例に係るパケットキャプチャ装置の動作を説明するフローチャートである。
【
図8】
図8は、本発明の第1の実施例に係るパケットキャプチャ装置の障害検知部の動作を説明するフローチャートである。
【
図9】
図9は、本発明の第2の実施例に係るパケットキャプチャ装置の構成を示すブロック図である。
【
図10】
図10は、本発明の第2の実施例に係るパケットキャプチャ装置のフロー情報保持部で保持されるフロー情報の詳細を示す図である。
【
図11】
図11は、本発明の第2の実施例に係るパケットキャプチャ装置の累積情報保持部で保持される累積情報の詳細を示す図である。
【
図12】
図12は、本発明の第2の実施例に係るパケットキャプチャ装置の動作を説明するフローチャートである。
【
図13】
図13は、本発明の第2の実施例に係るパケットキャプチャ装置の動作を説明するフローチャートである。
【
図14】
図14は、本発明の第2の実施例に係るパケットキャプチャ装置の障害検知部の動作を説明するフローチャートである。
【
図15】
図15は、本発明の第1、第2の実施例に係るパケットキャプチャ装置を実現するコンピュータの構成例を示すブロック図である。
【発明を実施するための形態】
【0019】
[本発明の概要]
図1は本発明のパケットキャプチャ装置の動作の概要を説明する図である。本発明のパケットキャプチャ装置では、通信量が閾値THを超えたときに、ネットワークに通信障害が発生したと判定する。
図1のDPは通信障害の検知時点を示している。また、
図1の50は通信障害の検知時点DPよりも前の期間のうちパケットの保持が保証される期間を示し、101は検知時点DPよりも後の期間のうちパケットの保持が保証される期間を示している。検知時点DPよりも後の期間のうちパケットの保持が保証される期間は、最大でα秒である。
【0020】
[第1の実施例]
以下、本発明の第1の実施例について詳細に説明する。
図2は本発明の第1の実施例に係るパケットキャプチャ装置の構成を示すブロック図である。パケットキャプチャ装置は、接続されたネットワークからパケット11を受信するパケット受信部12と、受信したパケットをメモリに格納して一時的に保持するパケット保持部13と、受信したパケットの情報を基にネットワークに通信障害が発生しているかどうかを一定周期毎に判定する障害検知部14と、受信パケットの累積パケット数と累積バイト数とを保持する累積情報保持部15と、障害検知部14によって通信障害が検知されたときに、通信障害の検知時点の前後期間のパケットの保持が保証されるように動作停止アドレスを決定するキャプチャ制御部16と、各種パラメータを設定するパラメータ設定部17と、パケット保持部13に保持されたパケットを例えばPCAP形式などのキャプチャデータとしてファイル出力するキャプチャデータ生成部18とから構成される。
【0021】
パケット保持部13は、受信したパケットを一時的に保持するリングバッファとして機能するパケット格納メモリ130を内部に有する。
パケット格納メモリ130の物理構成を
図3に示す。
図3に示したパケット格納メモリ130の末尾と先頭を繋げた論理構成を
図4に示す。
【0022】
また、パケット格納メモリ130へのパケットの格納方法の概要を
図5、
図6に示す。上記のように、パケット格納メモリ130は、リングバッファとして機能する。パケット保持部13は、パケット格納メモリ130の先頭アドレスから順にパケットを格納し、パケット格納メモリ130の最後尾アドレスまでパケットを格納した場合は、パケット格納メモリ130の先頭アドレスに戻って格納済みのデータを上書きするようにパケットを格納する。
【0023】
パケット保持部13の動作は、通信障害が検知されるまで継続される。パケット保持部13は、通信障害が検知された後に、以下の2つの終了条件のうちいずれかが成立した場合に動作を終了する。第1の条件は、通信障害の検知時点DPから所定の待ち時間α秒が経過したという条件である。第2の条件は、パケット格納メモリ130の格納先アドレスが後述する動作停止アドレスSAに達したという条件である。動作停止アドレスSAの決定方法については後述する。
【0024】
図5は第1の条件で停止する例を示している。この場合、パケット保持部13は、パケット格納メモリ130の格納先アドレスが動作停止アドレスSAに到達する前に、通信障害の検知時点DPから待ち時間αが経過したため、その時点(アドレスが0xXXX3の時点)で動作を停止している。
【0025】
図6は第2の条件で停止する例を示している。
図6の例では、パケット保持部13は、通信障害の検知時点DPから待ち時間αが経過する前に、パケット格納メモリ130の格納先アドレスが動作停止アドレスSA(アドレス0x0002)に到達したため、その時点で動作を停止している。
【0026】
なお、
図5、
図6の100は通信障害の検知時点DPよりも前の期間を示し、101は検知時点DPよりも後の期間を示している。また、
図5、
図6の102は、通信障害の検知時点DPよりも前の期間のうち、パケットが保持されていることを保証するキャプチャ保証期間を示している。
【0027】
次に、本実施例のパケットキャプチャ装置の動作を
図7、
図8を用いて説明する。なお、
図7、
図8は、あくまで本実施例の制御動作を分り易く説明するためのものであり、本発明の制御手順や実装方法を制限するものでは無い。
【0028】
まず、パケット受信部12は、パケットキャプチャ装置が接続されたネットワークからパケット11を受信する(
図7ステップS20)。
次に、パケット保持部13は、パケット受信部12におけるパケット受信に応じて、パケット格納メモリ130のパケットの格納先アドレスを1増やす(
図7ステップS21)。
【0029】
障害検知部14は、パケット受信部12におけるパケット受信に応じて、累積情報保持部15に保持されている累積パケット数を1増やし、累積情報保持部15に保持されている累積バイト数を受信パケットのバイト数分だけ増やす(
図7ステップS22)。
【0030】
また、障害検知部14は、累積情報保持部15に保持されている累積パケット数と累積パケット数上限閾値PHとを一定周期毎に比較することにより、あるいは累積情報保持部15に保持されている累積バイト数と累積バイト数上限閾値BHとを一定周期毎に比較することにより、ネットワークに通信障害が発生しているかどうかを判定する(
図8ステップS32)。
【0031】
ユーザは、任意の累積パケット数上限閾値PH、累積バイト数上限閾値BHをパケットキャプチャ装置に対して設定することが可能である。ユーザによって入力された累積パケット数上限閾値PH、累積バイト数上限閾値BHは、パラメータ設定部17によって設定される。
【0032】
障害検知部14は、累積パケット数が累積パケット数上限閾値PHを超えている場合、あるいは累積バイト数が累積バイト数上限閾値BHを超えている場合、ネットワークに通信障害が発生していると判定し(
図8ステップS33においてYes)、キャプチャ制御部16に対して障害検知通知信号を出力する(
図8ステップS34)。
【0033】
そして、障害検知部14は、累積パケット数が累積パケット数上限閾値PH以下、かつ累積バイト数が累積バイト数上限閾値BH以下で、ネットワークに通信障害が発生していないと判定した場合(ステップS33においてNo)、あるいは障害検知通知信号を出力した場合(ステップS34)、累積情報保持部15に保持されている累積パケット数および累積バイト数を0に初期化する(
図8ステップS35)。
【0034】
なお、通信障害の検知方法は、上記の方法以外であっても構わない。例えば、障害検知部14は、累積情報保持部15に保持されている累積パケット数が累積パケット数下限閾値PLを下回る場合、あるいは累積情報保持部15に保持されている累積バイト数が累積バイト数下限閾値BLを下回る場合、ネットワークに通信障害が発生していると判定するようにしてよい(ステップS33)。
【0035】
累積パケット数下限閾値PL、累積バイト数下限閾値BLを用いる場合、障害検知部14は、累積パケット数が累積パケット数下限閾値PL以上で累積パケット数上限閾値PH以下、かつ累積バイト数が累積バイト数下限閾値BL以上で累積バイト数上限閾値BH以下であれば、ネットワークに通信障害が発生していないと判定する。
【0036】
ユーザは、任意の累積パケット数下限閾値PL、累積バイト数下限閾値BLをパケットキャプチャ装置に対して設定することが可能である。ユーザによって入力された累積パケット数下限閾値PL、累積バイト数下限閾値BLは、パラメータ設定部17によって設定される。
障害検知部14は、以上のステップS32~S35の処理を一定周期毎に行う。
【0037】
次に、キャプチャ制御部16は、障害検知部14から障害検知通知信号を受信したかどうかを判定する(
図7ステップS23)。キャプチャ制御部16は、障害検知通知信号を受信したときに、動作停止アドレスSAを決定する(
図7ステップS24)。
【0038】
具体的には、キャプチャ制御部16は、障害検知通知信号を受信した時点でのパケット格納メモリ130の格納先アドレスPAから、予め設定されたキャプチャ保証期間分のアドレス数Nを引いた値(PA-N)を動作停止アドレスSAとする。
【0039】
このとき、キャプチャ制御部16は、現時点の格納先アドレスPAからキャプチャ保証期間分のアドレス数Nを引いた減算結果(PA-N)が負となる場合(
図5、
図6における先頭アドレス0x0000より前のアドレス値になる場合)、パケット格納メモリ130の最後尾のアドレス(
図5、
図6における0xXXX4)から、減算結果(PA-N)の絶対値を更に引いた値を動作停止アドレスSAとする。
【0040】
ユーザは、任意のキャプチャ保証期間の長さをパケットキャプチャ装置に対して設定することが可能である。ユーザによって入力されたキャプチャ保証期間(アドレス数)は、パラメータ設定部17によって設定される。キャプチャ保証期間は、アドレス数でなく、全体のメモリ容量に対する割合で定義するようにしてよい。
なお、動作停止アドレスSAの決定は、通信障害が検知された時点で1回だけ行われることは言うまでもない。
【0041】
次に、キャプチャ制御部16は、通信障害の検知後か否かを判定する(
図7ステップS25)。キャプチャ制御部16は、障害検知部14から既に障害検知通知信号を受信しているときには通信障害の検知後と判定し、障害検知通知信号を受信していないときには通信障害の検知前と判定する。
【0042】
パケット保持部13は、キャプチャ制御部16が通信障害の検知前と判定した場合、パケット受信部12によって受信されたパケットを、パケット格納メモリ130の現時点の格納先アドレスPAの領域に格納し(
図7ステップS26)、ステップS20に戻る。
【0043】
また、キャプチャ制御部16は、通信障害の検知後と判定した場合、パケット格納メモリ130の現時点の格納先アドレスPAが動作停止アドレスSAに到達しているかどうかを判定する(
図7ステップS27)。
【0044】
キャプチャデータ生成部18は、格納先アドレスPAが動作停止アドレスSAに到達していると判定された場合(PA=SA)、パケット格納メモリ130の動作停止アドレスSAを出力開始アドレスとして、出力開始アドレスから(PA-1)までの領域に格納されたパケットを、このSAから(PA-1)までの並び順で例えばPCAP形式のファイルに変換し、PCAP形式のファイルをキャプチャデータ19として出力する(
図7ステップS28)。キャプチャデータ19の出力後、パケットキャプチャ装置はステップS20に戻る。
【0045】
また、キャプチャ制御部16は、パケット格納メモリ130の現時点の格納先アドレスPAが動作停止アドレスSAに到達していない場合(PA≠SA)、障害検知通知信号を受信した時点(通信障害の検知時点DP)から待ち時間α以上経過しているかどうかを判定する(
図7ステップS29)。
【0046】
ユーザは、任意の待ち時間αをパケットキャプチャ装置に対して設定することが可能である。ユーザによって入力された待ち時間αの値は、パラメータ設定部17によって設定される。
なお、待ち時間αに相当するアドレス数とキャプチャ保証期間に相当するアドレス数の合計は、パケット格納メモリ130の先頭アドレスから最後尾アドレスまでのアドレス数以下である必要がある。
【0047】
キャプチャデータ生成部18は、通信障害の検知時点DPから待ち時間α以上経過していると判定された場合、パケット格納メモリ130の動作停止アドレスSAを出力開始アドレスとして、出力開始アドレスから(PA-1)までの領域に格納されたパケットを、このSAから(PA-1)までの並び順で例えばPCAP形式のファイルに変換し、PCAP形式のファイルをキャプチャデータ19として出力する(ステップS28)。
【0048】
また、パケット保持部13は、通信障害の検知時点DPからの経過時間が待ち時間α未満の場合、パケット受信部12によって受信されたパケットを、パケット格納メモリ130の現時点の格納先アドレスPAの領域に格納し(
図7ステップS29)、ステップS20に戻る。
【0049】
こうして、本実施例では、必要最小限のメモリ構成で障害発生の前後期間のパケットの採取を保証することができる。
【0050】
[第2の実施例]
次に、本発明の第2の実施例について詳細に説明する。本実施例では、トラフィックのフロー毎に障害を検知する。ここで、フローとは、送信元IPアドレスや宛先IPアドレスなどの、パケットヘッダのフィールド情報の組み合わせで定義されるパケットのグループのことを言う。第1の実施例では、トラフィック全体に対して障害判定を行っていたが、本実施例では、受信したパケットのヘッダを解析してフローを識別した後、フロー毎に障害が発生しているか否かの判定を行う。
【0051】
図9は本実施例に係るパケットキャプチャ装置の構成を示すブロック図である。本実施例のパケットキャプチャ装置は、接続されたネットワークからパケット31を受信するパケット受信部32と、受信したパケットのヘッダを抽出するヘッダ解析部33と、ヘッダ解析部33によって抽出されたヘッダの情報を基にパケットが属するフローを識別するフロー識別部34と、フロー情報を保持するフロー情報保持部35と、受信したパケットをメモリに格納して一時的に保持する保持するパケット保持部36と、受信したパケットのフロー単位の情報を基にネットワークに通信障害が発生しているかどうかを一定周期毎に判定する障害検知部37と、フロー毎の累積パケット数と累積バイト数とを保持する累積情報保持部38と、障害検知部37によって通信障害が検知されたときに、通信障害の検知時点の前後期間のパケットの保持が保証されるように動作停止アドレスを決定するキャプチャ制御部39と、各種パラメータを設定するパラメータ設定部310と、パケット保持部36に保持されたパケットを例えばPCAP形式などのキャプチャデータとしてファイル出力するキャプチャデータ生成部311とから構成される。
【0052】
フロー情報保持部35で保持されるフロー情報の詳細を
図10に示す。
図10に示すように、フロー情報は、各フローに割り当てられた固有の識別番号であるフローIDと、送信元MAC(Media Access Control)アドレスと、宛先MACアドレスと、送信元IPアドレスと、宛先IPアドレスとをフロー毎に記録したものである。
【0053】
なお、フロー情報保持部35で保持されるフロー情報は、
図10に示したもの以外であっても構わない。
図10に示した例以外に、例えば送信元ポート番号、宛先ポート番号、プロトコル種別、VLAN ID(Virtual Local Area Network IDentifier)、VXLAN ID(Virtual eXtensible Local Area Network IDentifier)などのヘッダフィールド情報をフロー情報としてもよい。
【0054】
累積情報保持部38で保持される累積情報の詳細を
図11に示す。累積情報保持部38は、第1の実施例の累積情報保持部15と同様に累積パケット数および累積バイト数を保持するが、受信したトラフィック全体の累積パケット数および累積バイト数の他に、フロー単位での累積パケット数および累積バイト数も併せて保持する。
パケット保持部36は、第1の実施例のパケット保持部13と同様にパケット格納メモリ130を内部に有する。
【0055】
次に、本実施例のパケットキャプチャ装置の動作を
図12~
図14を用いて説明する。なお、
図12~
図14は、あくまで本実施例の制御動作を分り易く説明するためのものであり、本発明の制御手順や実装方法を制限するものでは無い。
【0056】
まず、パケット受信部32は、パケットキャプチャ装置が接続されたネットワークからパケット31を受信する(
図12ステップS40)。
次に、ヘッダ解析部33は、パケット受信部12によって受信されたパケットのヘッダを解析して、ヘッダのフィールド情報を抽出する(
図12ステップS41)。
【0057】
フロー識別部34は、ヘッダ解析部33によって抽出されたヘッダのフィールド情報に基づいて、パケット受信部12によって受信されたパケットが属するフローを識別する(
図12ステップS42)。具体的には、フロー識別部34は、受信パケットが属するフローの情報がフロー情報保持部35に既に登録されているかどうかを検索し、該当するフローの情報が登録されている場合には、このフローのIDをフロー情報保持部35から取得する。
【0058】
例えば
図10の例では、フロー識別部34は、受信パケットの送信元MACアドレスと宛先MACアドレスと送信元IPアドレスと宛先IPアドレスとがフロー情報保持部35に登録済みのフローの情報と一致すれば、受信パケットを登録済みのフローに属するものと判定して、このフローのIDを取得する。
【0059】
また、フロー識別部34は、受信パケットが属するフローの情報がフロー情報保持部35に登録されていない場合、すなわち受信パケットの送信元MACアドレスと宛先MACアドレスと送信元IPアドレスと宛先IPアドレスとに一致するフローの情報がフロー情報保持部35に登録されていない場合、受信パケットを新規のフローに属するものと判定する。
【0060】
フロー識別部34は、受信パケットを新規のフローに属するものと判定した場合(
図12ステップS43においてYes)、この新規のフローに割り当てるIDを決定し、決定したIDと受信パケットの送信元MACアドレスと宛先MACアドレスと送信元IPアドレスと宛先IPアドレスとを新規のフローの情報としてフロー情報保持部35に登録する(
図12ステップS44)。
【0061】
パケット保持部36は、フロー識別部34によるフローの識別後に、パケット格納メモリ130のパケットの格納先アドレスを1増やす(
図12ステップS45)。
次に、フロー識別部34は、受信パケットが属するフローのIDと受信パケットのバイト数とを障害検知部37に対して通知する。
【0062】
障害検知部37は、フロー識別部34から通知されたフローIDが累積情報保持部38に登録されているかどうかを検索し、該当するフローIDが登録されている場合には(
図12ステップS46においてNo)、累積情報保持部38に保持されている該当するフローIDの累積パケット数を1増やし、累積情報保持部38に保持されている該当するフローIDの累積バイト数をフロー識別部34から通知された受信パケットのバイト数分だけ増やす(
図12ステップS47)。
【0063】
さらに、障害検知部37は、累積情報保持部38に保持されているトラフィック全体の累積パケット数を1増やし、累積情報保持部38に保持されているトラフィック全体の累積バイト数をフロー識別部34から通知された受信パケットのバイト数分だけ増やす(ステップS47)。
【0064】
また、障害検知部37は、フロー識別部34から通知されたフローIDが累積情報保持部38に登録されていない場合(ステップS46においてYes)、受信パケットを新規のフローに属するものと判定し、フローの累積パケット数を1とし、フローの累積バイト数をフロー識別部34から通知された受信パケットのバイト数とする。そして、障害検知部37は、この累積パケット数と累積バイト数とをフロー識別部34から通知されたフローIDと対応付けて累積情報保持部38に新規に登録する(
図12ステップS48)。
【0065】
さらに、障害検知部37は、累積情報保持部38に保持されているトラフィック全体の累積パケット数を1増やし、累積情報保持部38に保持されているトラフィック全体の累積バイト数をフロー識別部34から通知された受信パケットのバイト数分だけ増やす(ステップS48)。
【0066】
障害検知部37は、累積情報保持部38に保持されているフロー毎の累積パケット数と累積パケット数上限閾値FPHとを一定周期毎に比較することにより、あるいは累積情報保持部38に保持されているフロー毎の累積バイト数と累積バイト数上限閾値FBHとを一定周期毎に比較することにより、ネットワークに通信障害が発生しているかどうかを判定する(
図14ステップS62)。
【0067】
ユーザは、フロー単位の累積パケット数上限閾値FPHおよびフロー単位の累積バイト数上限閾値FBHをパケットキャプチャ装置に対して設定することが可能である。ユーザによって入力された累積パケット数上限閾値FPHおよび累積バイト数上限閾値FBHは、パラメータ設定部310によって設定される。
【0068】
障害検知部37は、フロー毎の累積パケット数のうち少なくとも1つのフローの累積パケット数が累積パケット数上限閾値FPHを超えている場合、あるいはフロー毎の累積バイト数のうち少なくとも1つのフローの累積バイト数が累積バイト数上限閾値FBHを超えている場合、ネットワークに通信障害が発生していると判定し(
図14ステップS63においてYes)、キャプチャ制御部39に対して障害検知通知信号を出力する(
図14ステップS64)。
【0069】
そして、障害検知部37は、フロー毎の累積パケット数の全てが累積パケット数上限閾値FPH以下、かつフロー毎の累積バイト数の全てが累積バイト数上限閾値FBH以下で、ネットワークに通信障害が発生していないと判定した場合(ステップS63においてNo)、あるいは障害検知通知信号を出力した場合(ステップS64)、累積情報保持部38に保持されている全ての累積パケット数および全ての累積バイト数を0に初期化する(
図14ステップS65)。
【0070】
なお、通信障害の検知方法は、上記の方法以外であっても構わない。例えば、障害検知部37は、累積情報保持部38に保持されているフロー毎の累積パケット数のうち少なくとも1つのフローの累積パケット数が累積パケット数下限閾値FPLを下回る場合、あるいは累積情報保持部38に保持されているフロー毎の累積バイト数のうち少なくとも1つのフローの累積バイト数が累積バイト数下限閾値FBLを下回る場合、ネットワークに通信障害が発生していると判定するようにしてよい(ステップS63)。
【0071】
累積パケット数下限閾値FPL、累積バイト数下限閾値FBLを用いる場合、障害検知部37は、フロー毎の累積パケット数が累積パケット数下限閾値FPL以上で累積パケット数上限閾値FPH以下、かつフロー毎の累積バイト数が累積バイト数下限閾値FBL以上で累積バイト数上限閾値FBH以下であれば、ネットワークに通信障害が発生していないと判定する。
【0072】
ユーザは、フロー単位の累積パケット数下限閾値FPLおよびフロー単位の累積バイト数下限閾値FBLをパケットキャプチャ装置に対して設定することが可能である。ユーザによって入力された累積パケット数下限閾値FPLおよび累積バイト数下限閾値FBLは、パラメータ設定部310によって設定される。
障害検知部37は、以上のステップS62~S65の処理を一定周期毎に行う。
【0073】
次に、キャプチャ制御部39は、障害検知部37から障害検知通知信号を受信したかどうかを判定する(
図12ステップS49)。キャプチャ制御部39は、障害検知通知信号を受信したときに、動作停止アドレスSAを決定する(
図12ステップS50)。動作停止アドレスSAの決定方法は、第1の実施例と同じである。第1の実施例と同様に、キャプチャ保証期間(アドレス数)は、予めパラメータ設定部310によって設定される。
【0074】
次に、キャプチャ制御部39は、通信障害の検知後か否かを判定する(
図13ステップS51)。キャプチャ制御部39は、障害検知部37から既に障害検知通知信号を受信しているときには通信障害の検知後と判定し、障害検知通知信号を受信していないときには通信障害の検知前と判定する。
【0075】
パケット保持部36は、キャプチャ制御部39が通信障害の検知前と判定した場合、パケット受信部32によって受信されたパケットを、パケット格納メモリ130の現時点の格納先アドレスPAの領域に格納し(
図13ステップS52)、ステップS40に戻る。
【0076】
また、キャプチャ制御部39は、通信障害の検知後と判定した場合、パケット格納メモリ130の現時点の格納先アドレスPAが動作停止アドレスSAに到達しているかどうかを判定する(
図13ステップS53)。
【0077】
キャプチャデータ生成部311は、格納先アドレスPAが動作停止アドレスSAに到達していると判定された場合、パケット格納メモリ130の動作停止アドレスSAを出力開始アドレスとして、出力開始アドレスから(PA-1)までの領域に格納されたパケットを、このSAから(PA-1)までの並び順で例えばPCAP形式のファイルに変換し、PCAP形式のファイルをキャプチャデータ312として出力する(
図13ステップS54)。キャプチャデータ312の出力後、パケットキャプチャ装置はステップS40に戻る。
【0078】
また、キャプチャ制御部39は、パケット格納メモリ130の現時点の格納先アドレスPAが動作停止アドレスSAに到達していない場合、障害検知通知信号を受信した時点(通信障害の検知時点DP)から待ち時間α以上経過しているかどうかを判定する(
図13ステップS55)。第1の実施例と同様に、待ち時間αは、予めパラメータ設定部310によって設定される。
【0079】
キャプチャデータ生成部311は、通信障害の検知時点DPから待ち時間α以上経過していると判定された場合、パケット格納メモリ130の動作停止アドレスSAを出力開始アドレスとして、出力開始アドレスから(PA-1)までの領域に格納されたパケットを、このSAから(PA-1)までの並び順で例えばPCAP形式のファイルに変換し、PCAP形式のファイルをキャプチャデータ19として出力する(ステップS54)。
【0080】
また、パケット保持部36は、通信障害の検知時点DPからの経過時間が待ち時間α未満の場合、パケット受信部32によって受信されたパケットを、パケット格納メモリ130の現時点の格納先アドレスPAの領域に格納し(
図13ステップS56)、ステップS40に戻る。
こうして、本実施例では、フロー毎に通信障害を検知することができる。
【0081】
第1、第2の実施例で説明したパケットキャプチャ装置は、CPU(Central Processing Unit)、記憶装置及びインターフェースを備えたコンピュータと、これらのハードウェア資源を制御するプログラムによって実現することができる。このコンピュータの構成例を
図15に示す。
【0082】
コンピュータは、CPU200と、記憶装置201と、インターフェース装置(以下、I/Fと略する)202とを備えている。I/F202には、パケット受信部12,32の回路とキャプチャデータの出力先の装置等が接続される。このようなコンピュータにおいて、本発明のパケットキャプチャ方法を実現させるためのプログラムは記憶装置201に格納される。CPU200は、記憶装置201に格納されたプログラムに従って第1、第2の実施例で説明した処理を実行する。
また、第1、第2の実施例で説明したパケットキャプチャ装置の一部をASIC(application specific integrated circuit)あるいはFPGA(field-programmable gate array)などのハードウェアロジックで構成してもよい。
【産業上の利用可能性】
【0083】
本発明は、IPネットワークにおけるバーストトラフィックなどの通信障害の原因を解析する技術に適用することができる。
【符号の説明】
【0084】
11,31…パケット、12,32…パケット受信部、13,36…パケット保持部、14,37…障害検知部、15,38…累積情報保持部、16,39…キャプチャ制御部、17,310…パラメータ設定部、18,311…キャプチャデータ生成部、19,312…キャプチャデータ、33…ヘッダ解析部、34…フロー識別部、35…フロー情報保持部、130…パケット格納メモリ。