(57)【要約】【課題】監視対象であるすべてのパケットを収集しつつ、監視する装置への負荷を抑えてトラフィックを監視する。【解決手段】入力制御手段１ａは、通信装置１によって受信されたパケットの入力を制御する。一時記憶手段１ｂは、受信されたパケットを一時的に記憶する。出力制御手段１ｃは、受信されたパケットの出力を制御する。ミラー出力制御手段１ｄは、受信されたパケットに基づくミラーパケットの出力を制御する。入力制御手段１ａは、受信されたパケットを一時記憶手段１ｂに書き込む制御を行う。ミラー出力制御手段１ｄは、一時記憶手段１ｂに書き込まれたパケットの一部のみを抽出し、抽出したパケットの一部を有するミラーパケットを出力する制御を行う。【選択図】図１
2010011382.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークのトラフィックを監視する通信装置において、
前記通信装置によって受信されたパケットの入力を制御する入力制御手段と、
受信された前記パケットを一時的に記憶する一時記憶手段と、
受信された前記パケットの出力を制御する出力制御手段と、
受信された前記パケットに基づくミラーパケットの出力を制御するミラー出力制御手段と、
を有し、
前記入力制御手段は、受信された前記パケットを前記一時記憶手段に書き込む制御を行い、
前記ミラー出力制御手段は、前記一時記憶手段に書き込まれた前記パケットの一部のみを抽出し、抽出した前記パケットの前記一部を有する前記ミラーパケットを出力する制御を行うことを特徴とする通信装置。
【請求項２】
前記ミラー出力制御手段は、前記パケットから前記一部としてヘッダ部を抽出する制御を行うことを特徴とする請求項１記載の通信装置。
【請求項３】
前記ミラー出力制御手段は、
前記パケットから抽出された前記一部を記憶する蓄積記憶手段と、
前記一時記憶手段に記憶されている前記パケットを読み出し、読み出した前記パケットから前記一部を抽出し、抽出した前記パケットの前記一部を前記蓄積記憶手段に書き込む制御を行う一時記憶読み出し制御手段と、
前記蓄積記憶手段に書き込まれた前記パケットの前記一部を読み出し、読み出した前記パケットの前記一部を複数個結合して前記ミラーパケットに含め、結合された前記一部を有する前記ミラーパケットを出力する制御を行う蓄積記憶読み出し制御手段と、
を有することを特徴とする請求項１記載の通信装置。
【請求項４】
前記ミラー出力制御手段は、経過時間を計測するタイマ手段を有し、
前記蓄積記憶読み出し制御手段は、前記タイマ手段による計測の結果、所定時間が経過する毎に、前記パケットから抽出された前記一部を複数個結合し、前記結合した前記一部を有する前記ミラーパケットを出力する制御を行うことを特徴とする請求項３記載の通信装置。
【請求項５】
前記ミラー出力制御手段は、前記蓄積記憶手段に書き込まれた前記パケットの前記一部を計数する蓄積数カウント手段を有し、
前記蓄積記憶読み出し制御手段は、前記蓄積数カウント手段による計数の結果、前記パケットの前記一部の個数が所定個数に達する毎に、前記パケットから抽出された前記一部を複数個結合し、前記結合した前記一部を有する前記ミラーパケットを出力する制御を行うことを特徴とする請求項３記載の通信装置。
【請求項６】
ネットワークのトラフィックを監視する通信方法において、
入力制御手段が、通信装置によって受信されたパケットの入力を制御する入力制御ステップと、
ミラー出力制御手段が、受信された前記パケットに基づくミラーパケットの出力を制御するミラー出力制御ステップと、
を有し、
前記入力制御ステップでは、前記入力制御手段が、受信された前記パケットを一時的に記憶する一時記憶手段に書き込む制御を行い、
前記ミラー出力制御ステップでは、前記ミラー出力制御手段が、前記一時記憶手段に書き込まれた前記パケットの一部のみを抽出し、抽出した前記パケットの前記一部を有する前記ミラーパケットを出力する制御を行うことを特徴とする通信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信装置および通信方法に関し、特に、ネットワークのトラフィックを監視する通信装置および通信方法に関する。
【背景技術】
【０００２】
従来、ネットワークスイッチやルータ（router）などの通信装置によってネットワークのトラフィックを監視する技術として、ｓＦｌｏｗ、ポートミラーリングを始めとする、ネットワーク内を流れるパケット（packet）を収集する方法が知られている。このような監視方法は、監視対象のポートからパケットをサンプリングし、そのサンプルのうちの指定した領域の情報や、そのポートに関する統計情報などをパケットにして、トラフィックを監視する装置に転送するものである。
【特許文献１】特開２００４−３０４７５２号公報
【特許文献２】特開２００５−２８６６８４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかし、ｓＦｌｏｗでは、サンプリングを行うことでトラフィックを監視する装置の負荷を抑えつつ、抜き打ち的なトラフィック収集機能でネットワークの監視を行うことができる。一方で、詳細なネットワークの監視を行うためにすべてのパケットの情報を得たい場合もあるが、このような場合について、ｓＦｌｏｗでは想定されていないため、ネットワークのトラフィックの詳細について監視する場合には適さない。
【０００４】
したがって、詳細なネットワーク監視を行いたい場合には、一般的にポートミラーリングが行われる。ポートミラーリングでは、パケットのサンプリングは行わず、監視ポートのすべてのパケットがトラフィックを監視する装置のポートに転送される。
【０００５】
しかし、ポートミラーリングでは、すべてのトラフィックを監視することによってプライバシーが侵害される可能性があるという問題点がある。
また、ポートミラーリングでは、トラフィックを監視する装置として全トラフィックを受信できるだけの能力をもった装置を用意しなければならないという問題点がある。
【０００６】
本件はこのような点に鑑みてなされたものであり、監視対象であるすべてのパケットを収集しつつ、装置への負荷を抑えたトラフィックの監視が可能な通信装置および通信方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
開示のネットワークのトラフィックを監視する通信装置は、前記通信装置によって受信されたパケットの入力を制御する入力制御手段と、受信された前記パケットを一時的に記憶する一時記憶手段と、受信された前記パケットの出力を制御する出力制御手段と、受信された前記パケットに基づくミラーパケットの出力を制御するミラー出力制御手段と、を有し、前記入力制御手段は、受信された前記パケットを前記一時記憶手段に書き込む制御を行い、前記ミラー出力制御手段は、前記一時記憶手段に書き込まれた前記パケットの一部のみを抽出し、抽出した前記パケットの前記一部を有する前記ミラーパケットを出力する制御を行う。
【０００８】
開示の通信装置によれば、入力制御手段により、受信されたパケットの入力が制御され、一時記憶手段により、受信されたパケットが一時的に記憶され、出力制御手段により、受信されたパケットの出力が制御され、ミラー出力制御手段により、ミラーパケットの出力が制御される。ここで、入力制御手段により、受信されたパケットが一時記憶手段に書き込まれる制御が行われ、ミラー出力制御手段により、一時記憶手段に書き込まれたパケットの一部のみが抽出され、抽出されたパケットの一部を有するミラーパケットが出力される制御が行われる。
【発明の効果】
【０００９】
開示の通信装置および通信方法によれば、パケット収集時における装置の負荷を減らすことができる。
【発明を実施するための最良の形態】
【００１０】
以下、実施の形態について、図面を参照して説明する。
図１は、本実施の形態の概要を示す図である。図１に示す通信装置１は、ネットワークのトラフィックを監視する通信装置である。
【００１１】
通信装置１は、ネットワークのトラフィックを監視するために、入力制御手段１ａ、一時記憶手段１ｂ、出力制御手段１ｃおよびミラー出力制御手段１ｄを有する。
入力制御手段１ａは、通信装置１によって受信された入力パケット２の入力を制御する。このとき、入力制御手段１ａは、受信された入力パケット２を一時記憶手段１ｂに書き込む制御を行う。これにより、通信装置１に入力された入力パケット２は、入力制御手段１ａによって一時記憶手段１ｂに書き込まれる。ここで、入力パケット２は、例えば、宛て先などを示すヘッダ部２ａと、ユーザデータなどの転送されるデータを示すペイロード部２ｂとを有する。
【００１２】
一時記憶手段１ｂは、受信された入力パケット２を一時的に記憶する。これにより、一時記憶手段１ｂに書き込まれたパケットが出力制御手段１ｃの制御により読み出されるとともに、ミラー出力制御手段１ｄの制御により読み出される。
【００１３】
出力制御手段１ｃは、受信された入力パケット２の出力を制御する。この出力制御手段１ｃの制御により、通信装置１から入力パケット２が出力パケット３として出力される。これにより、一時記憶手段１ｂに書き込まれた入力パケット２は、出力制御手段１ｃから読み出され、適切な宛て先のポートなどの図示しない出力手段から通信装置１の外部に出力される。ここで、出力パケット３は、例えば、入力パケット２と同様、ヘッダ部３ａと、ペイロード部３ｂとを有する。
【００１４】
ミラー出力制御手段１ｄは、受信された入力パケット２に基づくミラーパケット４の出力を制御する。このとき、ミラー出力制御手段１ｄは、一時記憶手段１ｂに書き込まれた入力パケット２の一部であるヘッダ部２ａのみを抽出する。次に、ミラー出力制御手段１ｄは、抽出した入力パケット２の一部であるヘッダ部２ａをコピーしてヘッダ部４ａとし、このヘッダ部４ａを有するミラーパケット４を出力する制御を行う。
【００１５】
このような通信装置１によれば、入力制御手段１ａにより、受信された入力パケット２の入力が制御され、一時記憶手段１ｂにより、受信された入力パケット２が一時的に記憶され、出力制御手段１ｃにより、受信された入力パケット２のコピーである出力パケット３の出力が制御され、ミラー出力制御手段１ｄにより、ミラーパケット４の出力が制御される。ここで、入力制御手段１ａにより、受信された入力パケット２が一時記憶手段１ｂに書き込まれる制御が行われ、ミラー出力制御手段１ｄにより、一時記憶手段１ｂに書き込まれた入力パケット２の一部であるヘッダ部２ａのみが抽出され、抽出されたパケットの一部であるヘッダ部２ａを有するミラーパケット４が出力される制御が行われる。
【００１６】
これにより、ミラーリングを行う場合には、ミラーパケット４を収集してトラフィックを監視する図示しない観測装置が接続されたミラー出力制御手段１ｄが、一時記憶手段１ｂより、出力制御手段１ｃから出力される出力パケット３と同じパケットデータを読み出し、出力する。
【００１７】
すなわち、ミラー出力制御手段１ｄによって一時記憶手段１ｂから読み出される入力パケット２のデータは、パケット全部のデータではなく、パケットの一部のデータ（例えば、ヘッダ部２ａ）とする。また、このパケットの一部のデータは、ユーザが指定した、または予め決められた特定のサイズを上限として読み出される。
【００１８】
これによって、ミラー出力制御手段１ｄが、一時記憶手段１ｂに書き込まれた入力パケット２の一部であるヘッダ部２ａのみを抽出して、抽出したヘッダ部を有するミラーパケット４を出力する制御を行うことにより、パケット収集時における装置の負荷を減らすことが可能になる。
【００１９】
次に、上記の通信装置のさらに具体的な実施の態様について説明する。なお、以下の実施の形態では通信装置をスイッチとして、特にレイヤ２スイッチを念頭に置いて説明するが、これに制限されない。また、ＯＳＩ（Open Systems Interconnection）参照モデルにおけるレイヤ２のデータの単位を、フレーム（frame）と呼ぶこともあるが、以下の実施の形態では、説明の便宜上、すべてパケットに統一して表現する。
【００２０】
［第１の実施の形態］
図２は、通信システムの全体構成を示す図である。本実施の形態の通信システムは、端末装置間でデータの送受信を行えるように、複数のレイヤ２スイッチがデータリンク層のパケットを中継するものである。
【００２１】
図２に示す通信システムは、スイッチ１００，１００ａ，１００ｂ，１００ｃ，１００ｄと端末装置４０，６１，６２，６３，６４，６５，６６とで構成される。スイッチ１００，１００ａ，１００ｂ，１００ｃ，１００ｄは、レイヤ２スイッチである。端末装置６１，６２，６３，６４，６５，６６は、ユーザが使用する端末装置である。端末装置４０は、スイッチ１００の管理者が使用する端末装置である。スイッチ１００ａ，１００ｂ，１００ｃ，１００ｄは、スイッチ１００と同様に構成されており、同等の機能を有する。
【００２２】
スイッチ１００は、スイッチ１００ａ，１００ｂと接続されている。スイッチ１００ｂは、スイッチ１００ｃ，１００ｄと接続されている。端末装置６１，６２は、スイッチ１００ａと接続されている。端末装置６３，６４は、スイッチ１００ｃと接続されている。端末装置６５，６６は、スイッチ１００ｄと接続されている。端末装置４０は、スイッチ１００と接続されている。２つのスイッチ間またはスイッチと端末装置の間は、１つ以上の物理リンク（ネットワークケーブル）で接続されている。
【００２３】
スイッチ１００，１００ａ，１００ｂ，１００ｃ，１００ｄは、パケットに含まれるアドレスに従って、送信元の端末装置から宛て先の端末装置まで、パケットを中継する。例えば、端末装置６１が端末装置６３へパケットを送信する場合、スイッチ１００ａ、スイッチ１００、スイッチ１００ｂ、スイッチ１００ｃの順にパケットが中継される。
【００２４】
図３は、スイッチのハードウェア構成を示す図である。図３は、スイッチ１００の内部構成を示したものであるが、スイッチ１００ａ，１００ｂ，１００ｃ，１００ｄも同様の構成で実現できる。スイッチ１００は、ＣＰＵ（Central Processing Unit）１０１、インタフェースカード１０２ａ，１０２ｂ，１０２ｃ，１０２ｄ、スイッチカード１０３、テーブル記憶メモリ１０４、ポート監視部１０５、バス１０６を有している。
【００２５】
ＣＰＵ１０１は、スイッチ１００全体を制御している。ＣＰＵ１０１は、プログラムによる処理を実行する。ＣＰＵ１０１は、図示しないメモリに保持されたデータを用いて、同じくメモリに保持されたプログラムを実行する。ＣＰＵ１０１は、図示しない通信インタフェースを介して、管理者が使用する端末装置４０から送信されるコマンドを受信するとともに、コマンドに対する実行結果を端末装置４０に応答する。
【００２６】
テーブル記憶メモリ１０４は、複数のテーブルを記憶している。テーブル記憶メモリ１０４に記憶されるテーブルには、論理リンクの構成を管理するテーブル、論理リンク内でのパケットの転送先を決定するためのテーブル、パケットの転送先を示す情報を格納するテーブルが含まれる。
【００２７】
バス１０６には、ＣＰＵ１０１、インタフェースカード１０２ａ，１０２ｂ，１０２ｃ，１０２ｄ、スイッチカード１０３、テーブル記憶メモリ１０４、ポート監視部１０５が接続されている。
【００２８】
インタフェースカード１０２ａ，１０２ｂ，１０２ｃ，１０２ｄは、それぞれ複数個（例えば、８個）の通信ポートを有している。それぞれの通信ポートには、１つの物理リンクを接続できる。インタフェースカード１０２ａ，１０２ｂ，１０２ｃ，１０２ｄは、それぞれの通信ポートを監視してパケットを取得する。なお、インタフェースカード１０２ａ，１０２ｂ，１０２ｃ，１０２ｄは、複数の通信ポートに同時にパケットが到来した場合に備えて、パケットを一時的に保持するバッファを内部に有している。そして、インタフェースカード１０２ａ，１０２ｂ，１０２ｃ，１０２ｄは、取得したパケットをスイッチカード１０３に送る。
【００２９】
スイッチカード１０３は、図示しない学習テーブルを有している。スイッチカード１０３は、学習テーブルに、過去に受信したパケットの送信元アドレスと、そのパケットが到来した通信ポートまたは論理リンクの識別情報とを対応付けて記憶している。この学習テーブルは、スイッチカード１０３によって随時更新される。
【００３０】
そして、スイッチカード１０３は、インタフェースカード１０２ａ，１０２ｂ，１０２ｃ，１０２ｄのいずれかからパケットを受け取ると、学習テーブルを参照して、そのパケットの転送先を決定する。ここで、決定した転送先が論理リンクである場合、スイッチカード１０３は、テーブル記憶メモリ１０４に記憶されたテーブルを参照して、転送に使用する具体的なインタフェースカード１０２ａ，１０２ｂ，１０２ｃ，１０２ｄおよび通信ポートを決定する。その後、スイッチカード１０３は、パケットを、決定したインタフェースカード１０２ａ，１０２ｂ，１０２ｃ，１０２ｄに送る。
【００３１】
パケットを受け取ったインタフェースカード１０２ａ，１０２ｂ，１０２ｃ，１０２ｄは、受け取ったパケットを、決定された通信ポートから送信先に送出する。
ポート監視部１０５は、インタフェースカード１０２ａ，１０２ｂ，１０２ｃ，１０２ｄの通信ポートを監視する。そして、ポート監視部１０５は、インタフェースカード１０２ａ，１０２ｂ，１０２ｃ，１０２ｄの通信ポートに接続された物理リンクの故障や復旧を検出すると、ＣＰＵ１０１にその旨を通知する。
【００３２】
図４は、パケットのデータ構造例を示す図である。図４に示すパケット３０が、インタフェースカード１０２ａ，１０２ｂ，１０２ｃ，１０２ｄの通信ポートを介して、スイッチ１００ａ，１００ｂ等との間で送受信される。
【００３３】
パケット３０は、プリアンブル（preamble）、宛て先ＭＡＣアドレス（ＭＡＣ  ＤＡ：Media Access Control address Destination Address）、送信元ＭＡＣアドレス、ＴＰＩＤ（Tag Protocol Identifier：タグ・プロトコル識別子）、ＶＬＡＮ（Virtual Local Area Network）タグ、タイプ、ペイロードおよびＦＣＳ（Frame Check Sequence）で構成される。また、パケット３０は、プリアンブルを有するプリアンブル部、宛て先ＭＡＣアドレス、送信元ＭＡＣアドレス、ＴＰＩＤ、ＶＬＡＮタグ、タイプを有するヘッダ部、ペイロードを有するペイロード部およびＦＣＳを有するＦＣＳ部に分けることもできる。
【００３４】
プリアンブルは、パケットの送信の開始を知らせるとともに、同期をとるタイミングを与えるためのビット列である。宛て先ＭＡＣアドレスは、送信先の端末装置が有する通信インタフェースを一意に識別するアドレスである。送信元ＭＡＣアドレスは、送信元の端末装置が有する通信インタフェースを一意に識別するアドレスである。ＴＰＩＤは、当該パケットの種類（例えば、ＶＬＡＮのパケットであるか通常のパケットであるか）を示す値である。ＶＬＡＮタグは、１つのネットワークを複数の論理的なネットワークに分割して運用する場合に、個々の論理的なネットワークに割り当てられる一意に定められた値である。タイプは、使用するプロトコルを指定するフィールドである。ペイロードは、送受信するデータ本体であり、例えば、ＩＰパケットを所定のデータ長に分割したものである。ＦＣＳは、受信したパケットの誤りを検出するために用いられる値である。
【００３５】
なお、パケットのデータ構造は、ネットワークの運用形態等に応じて、種々の変形例が考えられる。例えば、ＶＬＡＮタグが省略される場合がある。また、図４に示したもの以外の情報が付加される場合もある。
【００３６】
図５は、第１の実施の形態におけるスイッチの構成を示すブロック図である。図５に示すスイッチ１００は、ネットワークのトラフィックを監視するために、入力されたパケットのヘッダ部を有するミラーパケットを出力する機能を有するレイヤ２スイッチである。
【００３７】
スイッチ１００は、ネットワークのトラフィックを監視するために、入力制御部１１０、共有メモリ１２０、出力制御部１３０およびミラー出力制御部１４０を有する。
入力制御部１１０は、スイッチ１００によって受信された入力パケットの入力を制御する。このとき、入力制御部１１０は、受信された入力パケットを共有メモリ１２０に書き込む制御を行う。これにより、スイッチ１００に入力された入力パケットは、入力制御部１１０によって共有メモリ１２０に書き込まれる。ここで、入力パケットは、例えば、宛て先などを示すヘッダ部およびユーザデータなどの、転送されるデータを示すペイロード部を有する。
【００３８】
共有メモリ１２０は、受信された入力パケットを一時的に記憶する。これにより、共有メモリ１２０に書き込まれたパケットが出力制御部１３０の制御により読み出されるとともに、ミラー出力制御部１４０の制御により読み出される。
【００３９】
出力制御部１３０は、受信された入力パケットの出力を制御する。この出力制御部１３０の制御により、スイッチ１００から入力パケットが出力パケットとして出力される。これにより、共有メモリ１２０に書き込まれた入力パケットは、出力制御部１３０から読み出され、適切な宛て先の出力ポートなどの図示しない出力部からスイッチ１００の外部に出力される。ここで、出力パケットは、例えば、入力パケットと同様、ヘッダ部およびペイロード部を有する。
【００４０】
ミラー出力制御部１４０は、受信された入力パケットに基づくミラーパケットの出力を制御する。このとき、ミラー出力制御部１４０は、共有メモリ１２０に書き込まれた入力パケットから、入力パケットの一部であるヘッダ部のみを抽出する。次に、ミラー出力制御部１４０は、抽出した入力パケットの一部であるヘッダ部をコピーして、このヘッダ部を有するミラーパケットを出力する制御を行う。
【００４１】
このようなスイッチ１００によれば、入力制御部１１０により、受信されたパケットの入力が制御され、共有メモリ１２０により、受信されたパケットが一時的に記憶され、出力制御部１３０により、受信されたパケットの出力が制御され、ミラー出力制御部１４０により、ミラーパケットの出力が制御される。ここで、入力制御部１１０により、受信されたパケットが共有メモリ１２０に書き込まれる制御が行われ、ミラー出力制御部１４０により、共有メモリ１２０に書き込まれたパケットの一部のみが抽出され、抽出されたパケットの一部を有するミラーパケットが出力される制御が行われる。
【００４２】
これにより、ミラーリングを行う場合には、ミラーパケットを収集してトラフィックを監視する図示しない観測装置が接続されたミラー出力制御部１４０が、共有メモリ１２０より、出力制御部１３０から出力される出力パケットと同じパケットデータを読み出し、出力する。
【００４３】
すなわち、ミラー出力制御部１４０によって共有メモリ１２０から読み出されるパケットのデータは、パケット全部のデータではなく、パケットの一部のデータとする。また、ユーザが指定した、または予め決められた特定のサイズを上限として読み出される。
【００４４】
なお、スイッチ１００は、レイヤ２スイッチであるが、これに限らず、ルータなどのデータの中継機能を有する通信装置でもよい。
図６は、第１の実施の形態における入力制御部の構成を示すブロック図である。
【００４５】
入力制御部１１０は、スイッチ１００によって受信された入力パケットの入力を制御するために、パケット書き込み部１１１および制御データ書き込み部１１２を有する。
パケット書き込み部１１１は、スイッチ１００に入力された入力パケットにおけるヘッダ部およびペイロード部のデータなどのパケットデータを共有メモリ１２０に書き込む制御を行う。
【００４６】
制御データ書き込み部１１２は、スイッチ１００に入力された入力パケットが入力された入力ポートを示す入力ポート番号、入力パケットが共有メモリ１２０に書き込まれる際のデータサイズ、入力パケットから、例えばヘッダ部などのパケットの一部を切り出す切り出しを行う際のパケットの位置（例えば、先頭からのサイズなど）の情報など、入力パケットの転送およびミラーリングを制御するための制御データを共有メモリ１２０に書き込む制御を行う。
【００４７】
このようにして、スイッチ１００に入力された入力パケットは、パケット書き込み部１１１によって共有メモリ１２０に書き込まれるとともに、書き込まれる際のデータサイズおよび入力ポート番号などの制御データも、制御データ書き込み部１１２によって共有メモリ１２０に書き込まれる。
【００４８】
図７は、第１の実施の形態におけるミラー出力制御部の構成を示すブロック図である。
ミラー出力制御部１４０は、共有メモリ１２０からデータを読み出す共有メモリ読み出し制御部１４１を有する。この共有メモリ読み出し制御部１４１は、制御データ処理部１４１ａ、パケットデータ処理部１４１ｂ、サイズカウンタ部１４１ｃおよびＦＣＳ計算部１４１ｄを有する。
【００４９】
制御データ処理部１４１ａは、共有メモリ１２０から入力パケットの制御データを読み出し、これに基づいてミラーパケットの出力制御を行う。
パケットデータ処理部１４１ｂは、サイズカウンタ部１４１ｃによるサイズのカウント結果に基づいて、共有メモリ１２０からパケットのヘッダ部を読み出してミラーパケットとし、このミラーパケットにＦＣＳ計算部１４１ｄが計算したミラーパケットのＦＣＳを付加する。次に、パケットデータ処理部１４１ｂは、ＦＣＳが付加されたミラーパケットを出力する。
【００５０】
サイズカウンタ部１４１ｃは、読み込んだデータのサイズをカウントし、先頭からのサイズを認識する。これにより、サイズカウンタ部１４１ｃは、パケットデータ処理部１４１ｂによる共有メモリ１２０より読み出されたパケットからのヘッダ部の切り出しを制御する。
【００５１】
ＦＣＳ計算部１４１ｄは、ミラーパケットのエラーを検出するためのＦＣＳを計算する。このＦＣＳ計算部１４１ｄによるＦＣＳの計算では、パケットデータ処理部１４１ｂによって共有メモリ１２０から読み出されたパケットのヘッダ部のコピーがミラーパケットとされ、このミラーパケットのＦＣＳがＦＣＳ計算部１４１ｄによって計算される。
【００５２】
図８は、第１の実施の形態におけるスイッチの動作を示す図である。図８では、スイッチ１００にパケットが入力される場合のスイッチ１００の動作について説明する。ここで、パケット３１，３２は、既にスイッチ１００に入力された後に出力されたものとし、パケット３３はこれから入力される。また、ミラーパケット５１，５２は、それぞれパケット３１，３２に基づいてミラーリングされたパケットである。
【００５３】
また、パケット３１，３２，３３は、それぞれプリアンブル部３１ａ，３２ａ，３３ａ、ヘッダ部３１ｂ，３２ｂ，３３ｂ、ペイロード部３１ｃ，３２ｃ，３３ｃおよび図示しないＦＣＳを有する。
【００５４】
図８に示すように、スイッチ１００にパケット３１，３２が順に入力されると、これに応じて対応するミラーパケット５１，５２がそれぞれ順に出力される。このとき、パケット３１に対応するミラーパケット５１のヘッダ部５１ｂは、パケット３１のヘッダ部３１ｂがコピーされたものである。同様に、パケット３２に対応するミラーパケット５２のヘッダ部５２ｂは、パケット３２のヘッダ部３２ｂがコピーされたものである。
【００５５】
すなわち、ミラーパケット５１は、スイッチ１００により、パケット３１のペイロード部３１ｃおよびＦＣＳが除去されたヘッダ部のコピーであるヘッダ部５１ｂに、プリアンブル部５１ａおよびミラーパケット５１のＦＣＳが付加されて出力される。同様に、ミラーパケット５２は、パケット３２のペイロード部３２ｃおよびＦＣＳが除去されたヘッダ部のコピーであるヘッダ部５２ｂに、プリアンブル部５２ａおよびミラーパケット５２のＦＣＳが付加されて出力される。
【００５６】
図９は、第１の実施の形態における入力制御処理の手順を示すフローチャートである。この入力制御処理は、スイッチ１００がパケットの入力を受け付け、入力を受け付けたパケットを共有メモリ１２０（図５参照）に書き込む処理である。入力制御処理は、スイッチ１００の起動時に、ＣＰＵ１０１（図３参照）によって実行される。
【００５７】
［ステップＳ１１１］ＣＰＵ１０１は、スイッチ１００にパケットが入力されたか否かを判定する。パケットが入力されていれば、ＣＰＵ１０１は、ステップＳ１１２に処理を進める。一方、パケットが入力されていなければ、ＣＰＵ１０１は、ステップＳ１１１に処理を進める。
【００５８】
［ステップＳ１１２］ＣＰＵ１０１は、共有メモリ１２０に空きがあるか否かを判定する。共有メモリ１２０に空きがあれば、ＣＰＵ１０１は、ステップＳ１１３に処理を進める。一方、共有メモリ１２０に空きがなければ、ＣＰＵ１０１は、ステップＳ１１４に処理を進める。
【００５９】
［ステップＳ１１３］ＣＰＵ１０１は、共有メモリ１２０に、パケット、パケットの制御データを書き込む。その後、ＣＰＵ１０１は、ステップＳ１１１に処理を進める。
［ステップＳ１１４］ＣＰＵ１０１は、スイッチ１００に入力されたパケットを共有メモリ１２０に書き込むことなく廃棄する。その後、ＣＰＵ１０１は、ステップＳ１１１に処理を進める。
【００６０】
図１０は、第１の実施の形態におけるミラー出力制御処理の手順を示すフローチャートである。このミラー出力制御処理は、スイッチ１００が入力を受け付けて共有メモリ１２０（図５参照）に書き込んだパケットのヘッダ部分を読み出し、読み出したヘッダ部分をミラーパケットとして出力する処理である。ミラー出力制御処理は、スイッチ１００の起動時に、ＣＰＵ１０１（図３参照）によって実行される。
【００６１】
［ステップＳ１２１］ＣＰＵ１０１は、ミラーパケット出力をするか否かおよび切り出されるパケットのヘッダ部のサイズである切り出しサイズを設定する。第１の実施の形態では、スイッチ１００により、この切り出しサイズに基づいてパケットのヘッダ部が抽出される。
【００６２】
［ステップＳ１２２］ＣＰＵ１０１は、共有メモリ１２０に書き込まれたパケットがあるか否かを判定する。パケットがあれば、ＣＰＵ１０１は、ステップＳ１２３に処理を進める。一方、パケットがなければ、ＣＰＵ１０１は、ステップＳ１２２に処理を進める。
【００６３】
［ステップＳ１２３］ＣＰＵ１０１は、ＦＣＳを計算するＦＣＳ計算部１４１ｄ（図７参照）が有するＦＣＳレジスタ（図示省略）を初期化する。
［ステップＳ１２４］ＣＰＵ１０１は、共有メモリ１２０に書き込まれているパケットのヘッダ部を切り出して出力するヘッダミラーリングを行うか否かを判定する。ヘッダミラーリングを行う場合には、ＣＰＵ１０１は、ステップＳ１２５に処理を進める。一方、ヘッダミラーリングを行わない場合には、ＣＰＵ１０１は、ステップＳ１２７に処理を進める。
【００６４】
［ステップＳ１２５］ＣＰＵ１０１は、共有メモリ１２０に書き込まれているパケットのヘッダ部を読み出し、読み出したパケットのヘッダ部のＦＣＳを計算する。
［ステップＳ１２６］ＣＰＵ１０１は、ステップＳ１２５で読み出したヘッダ部にステップＳ１２５で計算したＦＣＳを付加し、パケットとして出力する。また、ＣＰＵ１０１は、このとき読み出したパケットのヘッダ部以外の不要な部分を廃棄する。その後、ＣＰＵ１０１は、ステップＳ１２２に処理を進める。
【００６５】
［ステップＳ１２７］ＣＰＵ１０１は、共有メモリ１２０に書き込まれているパケット全体を読み出し、読み出したパケットの全体のＦＣＳを計算する。
［ステップＳ１２８］ＣＰＵ１０１は、ステップＳ１２７で読み出したパケット全体にステップＳ１２７で計算したＦＣＳを付加し、ミラーパケットとして出力する。その後、ＣＰＵ１０１は、ステップＳ１２２に処理を進める。
【００６６】
以上のようにして、第１の実施の形態では、ミラー出力制御部１４０が、共有メモリ１２０に書き込まれた入力パケットの一部であるヘッダ部のみを抽出して、抽出したヘッダ部を有するミラーパケットを出力する制御を行うことにより、パケット収集時における装置の負荷を減らすことが可能になる。
【００６７】
また、ミラー出力制御部１４０がペイロード部を廃棄することにより、プライバシーの保護および通信の秘密に配慮しながら、ネットワークのトラフィックの詳細な監視を行うことができる。
【００６８】
［第２の実施の形態］
次に、第２の実施の形態について説明する。上記の第１の実施の形態との相違点を中心に説明し、同様の事項については同一の符号を用いるとともに説明を省略する。
【００６９】
第２の実施の形態は、スイッチ２００のミラー出力制御部２４０が、抽出したパケットのヘッダ部を結合することにより、複数のパケットのヘッダ部をまとめて出力する点で、第１の実施の形態と異なる。
【００７０】
以下に、本実施の形態におけるスイッチ２００について説明する。
図１１は、第２の実施の形態におけるミラー出力制御部の構成を示すブロック図である。
【００７１】
ミラー出力制御部２４０は、受信された入力パケットに基づくミラーパケットの出力を制御する。このとき、ミラー出力制御部２４０は、共有メモリ２２０に書き込まれた入力パケットから、入力パケットの一部であるヘッダ部のみを抽出する。次に、ミラー出力制御部２４０は、抽出した入力パケットの一部であるヘッダ部をコピーして、蓄積バッファ２４３に書き込む。次に、ミラー出力制御部２４０は、蓄積バッファ２４３に書き込まれたパケットのヘッダ部を読み出し、読み出したパケットのヘッダ部を複数個結合してミラーパケットに含め、ヘッダ部を結合したミラーパケットを出力する制御を行う。
【００７２】
ミラー出力制御部２４０は、共有メモリ２２０からデータを読み出す共有メモリ読み出し制御部２４１、蓄積バッファ書き込み制御部２４２、蓄積バッファ２４３および蓄積バッファ読み出し制御部２４４を有する。
【００７３】
共有メモリ読み出し制御部２４１は、サイズカウンタ部２４１ｃによるサイズのカウント結果に基づいて、共有メモリ２２０に記憶されているパケットを読み出し、読み出したパケットからヘッダ部を抽出し、抽出したパケットのヘッダ部を蓄積バッファ２４３に書き込む制御を行う。この共有メモリ読み出し制御部２４１は、制御データ処理部２４１ａ、パケットデータ処理部２４１ｂ、サイズカウンタ部２４１ｃ、ＦＣＳ計算部２４１ｄ、タイマ部２４１ｅ、蓄積数カウンタ部２４１ｆおよび蓄積サイズカウンタ部２４１ｇを有する。
【００７４】
制御データ処理部２４１ａは、共有メモリ２２０から入力パケットの制御データを読み出し、これに基づいてミラーパケットの出力制御を行う。
パケットデータ処理部２４１ｂは、共有メモリ２２０からパケットのヘッダ部を読み出す。このパケットデータ処理部２４１ｂによって読み出されたパケットのヘッダ部が、蓄積バッファ書き込み制御部２４２によって蓄積バッファ２４３に書き込まれる。
【００７５】
サイズカウンタ部２４１ｃは、共有メモリ２２０から読み込まれ、蓄積バッファ２４３に書き込まれるパケットのヘッダ部のサイズを計測して、パケットの先頭からのサイズを認識する。これにより、サイズカウンタ部２４１ｃは、パケットデータ処理部２４１ｂによる共有メモリ２２０より読み出されたパケットからのヘッダ部の切り出しを制御する。
【００７６】
ＦＣＳ計算部２４１ｄは、ミラーパケットのエラーを検出するためのＦＣＳを計算する。このＦＣＳ計算部２４１ｄによるＦＣＳの計算では、蓄積バッファ読み出し制御部２４４によって蓄積バッファ２４３から読み出されたパケットのヘッダ部のコピーを有するミラーパケットのＦＣＳがＦＣＳ計算部２４１ｄによって計算される。
【００７７】
具体的には、蓄積バッファ読み出し制御部２４４によって蓄積バッファ２４３からのヘッダ部の読み出しを行うと判定されると、ＦＣＳ計算部２４１ｄによって蓄積バッファ２４３に記憶されているパケットのヘッダ部から生成されるミラーパケットのＦＣＳが計算される。また、このＦＣＳ計算部２４１ｄによるＦＣＳの計算結果は、続いて蓄積バッファ書き込み制御部２４２によって蓄積バッファ２４３に書き込む制御が行われる。
【００７８】
タイマ部２４１ｅは、経過時間を計測する。蓄積数カウンタ部２４１ｆは、蓄積バッファ２４３に書き込まれたパケットのヘッダ部の個数を計数する。蓄積サイズカウンタ部２４１ｇは、蓄積バッファ２４３に書き込まれたパケットのヘッダ部のサイズを合計する。
【００７９】
詳しくは後述するが、これらのタイマ部２４１ｅによる経過時間の計測結果、蓄積数カウンタ部２４１ｆによるパケットのヘッダ部の個数の計数結果、蓄積数カウンタ部２４１ｆによるパケットのヘッダ部のサイズの合計に基づいて、蓄積バッファ読み出し制御部２４４によりミラーパケットの出力が制御される。
【００８０】
蓄積バッファ書き込み制御部２４２は、蓄積バッファ２４３に対する、パケットデータ処理部２４１ｂによってパケットから抽出されたヘッダ部およびＦＣＳ計算部２４１ｄによって計算されたＦＣＳの書き込みを制御する。また、蓄積バッファ書き込み制御部２４２は、サイズカウンタ部２４１ｃによって計測されたパケットのヘッダ部のサイズが、所定量より少ない場合には、パディングによりパケットのヘッダ部のサイズを所定量に揃える制御を行う。
【００８１】
蓄積バッファ２４３は、パケットデータ処理部２４１ｂによってパケットから抽出されたヘッダ部およびＦＣＳ計算部２４１ｄによって計算されたＦＣＳを記憶するバッファである。
【００８２】
蓄積バッファ読み出し制御部２４４は、蓄積バッファ２４３に書き込まれたパケットのヘッダ部を読み出し、読み出したパケットのヘッダ部を複数個結合してミラーパケットに含め、結合されたヘッダ部を有するミラーパケットを出力する制御を行う。
【００８３】
このとき、蓄積バッファ読み出し制御部２４４は、蓄積数カウンタ部２４１ｆによる計数の結果、パケットのヘッダ部の個数が所定個数に達する毎に、パケットから抽出されたヘッダ部を複数個結合し、結合したヘッダ部を有するミラーパケットを出力する制御を行う。
【００８４】
また、蓄積バッファ読み出し制御部２４４は、蓄積数カウンタ部２４１ｆによる計数の結果、パケットのヘッダ部の個数が所定個数に達していなくても、タイマ部２４１ｅによる計時の結果、複数のヘッダ部のうちの最初のヘッダ部が蓄積されてから所定時間が経過した場合には、その時までに蓄積されているパケットから抽出されたヘッダ部を複数個結合し、結合したヘッダ部を有するミラーパケットを出力する制御を行う。
【００８５】
さらに、蓄積バッファ読み出し制御部２４４は、蓄積サイズカウンタ部２４１ｇによる合計の結果、蓄積バッファ２４３に記憶されているパケットのヘッダ部のサイズの合計が所定量に達する毎に、パケットから抽出されたヘッダ部を複数個結合し、結合したヘッダ部を有するミラーパケットを出力する制御を行うこともできる。
【００８６】
この場合にも、蓄積バッファ読み出し制御部２４４は、蓄積バッファ２４３に記憶されているパケットのヘッダ部のサイズの合計が所定量に達していなくても、タイマ部２４１ｅによる計時の結果、複数のヘッダ部のうちの最初のヘッダ部が蓄積されてから所定時間が経過した場合には、その時までに蓄積されているパケットから抽出されたヘッダ部を複数個結合し、結合したヘッダ部を有するミラーパケットを出力する制御を行う。
【００８７】
蓄積バッファ読み出し制御部２４４は、ミラーパケットを出力する制御を行う場合、蓄積バッファ２４３に記憶されているパケットのヘッダ部を読み出して結合することによりミラーパケットとし、ＦＣＳ計算部２４１ｄにこのミラーパケットのＦＣＳを計算させる制御を行う。次に、蓄積バッファ読み出し制御部２４４は、ＦＣＳ計算部２４１ｄによって計算されたＦＣＳを蓄積バッファ２４３から読み出し、ミラーパケットにＦＣＳ計算部２４１ｄが計算したミラーパケットのＦＣＳを付加する。次に、パケットデータ処理部２４１ｂは、ＦＣＳが付加されたミラーパケットを出力する。
【００８８】
なお、蓄積バッファ読み出し制御部２４４は、タイマ部２４１ｅによる経過時間の計測のみをミラーパケット出力の基準としてもよい。この場合、蓄積バッファ読み出し制御部２４４は、タイマ部２４１ｅによる計測の結果、所定時間が経過する毎に、パケットから抽出されたヘッダ部を複数個結合し、結合したヘッダ部を有するミラーパケットを出力する制御を行う。
【００８９】
図１２は、第２の実施の形態におけるスイッチの動作を示す図である。図１２では、スイッチ２００にパケットが入力される場合のスイッチ２００の動作について説明する。ここで、パケット３１，３２は、第１の実施の形態と同様、既にスイッチ２００に入力された後に出力されたものとし、パケット３３はこれから入力される。また、ミラーパケット２５０は、パケット３１，３２におけるそれぞれのヘッダ部３１ｂ，３２ｂが結合されたパケットである。
【００９０】
また、パケット３１，３２，３３は、それぞれプリアンブル部３１ａ，３２ａ，３３ａ、ヘッダ部３１ｂ，３２ｂ，３３ｂ、ペイロード部３１ｃ，３２ｃ，３３ｃおよび図示しないＦＣＳを有する。
【００９１】
図１２に示すように、スイッチ２００にパケット３１，３２が順に入力されると、これに応じて対応するミラーパケット２５０が出力される。このとき、ミラーパケット２５０のヘッダ部２５１ｂは、パケット３１のヘッダ部３１ｂがコピーされたものである。同様に、ミラーパケット２５０のヘッダ部２５２ｂは、パケット３２のヘッダ部３２ｂがコピーされたものである。
【００９２】
すなわち、ミラーパケット２５０は、スイッチ２００により、パケット３１のペイロード部３１ｃが除去されたヘッダ部３１ｂのコピーであるヘッダ部２５１ｂと、パケット３２のペイロード部３２ｃおよびＦＣＳが除去されたヘッダ部３２ｂのコピーであるヘッダ部２５１ｂとが結合され、さらに、プリアンブル部２５０ａおよびミラーパケットのＦＣＳが付加されて出力される。
【００９３】
図１３および図１４は、第２の実施の形態におけるミラーパケットのデータ構造例を示す図である。図１３に、第２の実施の形態において、パディングが行われない場合のミラーパケット２５０を示す。また、図１４に、第２の実施の形態において、パディングが行われた場合のミラーパケット２６０を示す。
【００９４】
まず、図１３にしたがってパディングが行われない場合のミラーパケット２５０について説明する。
プリアンブル部３１ａ、ヘッダ部３１ｂ、ペイロード部３１ｃおよびＦＣＳ３１ｄを有するパケット３１がスイッチ２００に入力されると、スイッチ２００においてパケット３１のヘッダ部３１ｂのみがコピーされて蓄積される。
【００９５】
続いてプリアンブル部３２ａ、ヘッダ部３２ｂ、ペイロード部３２ｃおよびＦＣＳ３２ｄを有するパケット３２がスイッチ２００に入力されると、スイッチ２００においてパケット３２のヘッダ部３２ｂのみがコピーされて蓄積される。
【００９６】
その後、スイッチ２００により、パケット３１およびパケット３２のヘッダ部が結合されたミラーパケット２５０が出力される。このミラーパケット２５０は、パケット３１のヘッダ部３１ｂのコピーであるヘッダ部２５１ｂ、パケット３２のヘッダ部３２ｂのコピーであるヘッダ部２５２ｂ、新たに付加されたプリアンブル部２５０ａ、新に計算されたＦＣＳ２５０ｄを有する。
【００９７】
次に、図１４にしたがってパディングが行われる場合のミラーパケット２６０について説明する。本実施の形態のスイッチ２００は、詳しくは図１５および図１６において後述するが、入力されたパケットのヘッダ部が予め定められた切り出しサイズよりも短い場合、パディングを行ってヘッダ部のサイズを調整する。以下に、このパディングについて説明する。ここで、パケット３１は図１３と異なり、ヘッダ部３１ｂのサイズが、予め定められた切り出しサイズより短いものとする。
【００９８】
プリアンブル部３１ａ、ヘッダ部３１ｂ、ペイロード部３１ｃおよびＦＣＳ３１ｄを有するパケット３１がスイッチ２００に入力されると、スイッチ２００においてパケット３１のヘッダ部３１ｂのみがコピーされて蓄積される。このとき、上記のようにヘッダ部３１ｂのサイズは切り出しサイズよりも短いので、スイッチ２００においてコピーされたヘッダ部には、図示しないパディング部が付加されて蓄積される。
【００９９】
続いて、図１３と同様、プリアンブル部３２ａ、ヘッダ部３２ｂ、ペイロード部３２ｃおよびＦＣＳ３２ｄを有するパケット３２がスイッチ２００に入力されると、スイッチ２００においてパケット３２のヘッダ部３２ｂのみがコピーされて蓄積される。
【０１００】
その後、スイッチ２００により、パケット３１およびパケット３２のヘッダ部が結合されたミラーパケット２６０が出力される。このミラーパケット２６０は、パケット３１のヘッダ部３１ｂのコピーであるヘッダ部２６１ｂおよびサイズを調整するためにヘッダ部２６１ｂに付加されたパディング部２６１ｅ、パケット３２のヘッダ部３２ｂのコピーであるヘッダ部２６２ｂ、新たに付加されたプリアンブル部２６０ａ、新に計算されたＦＣＳ２６０ｄを有する。
【０１０１】
このように、ヘッダ部のサイズが短い場合にパディング部を付加することによって、ヘッダ部などのサイズが不揃いであるときにも、パケットに含まれるヘッダ部などの位置を一定間隔に揃えることができる。
【０１０２】
図１５および図１６は、第２の実施の形態におけるミラー出力制御処理の手順を示すフローチャートである。このミラー出力制御処理は、スイッチ２００が入力を受け付けて共有メモリ２２０（図１１参照）に書き込んだパケットのヘッダ部分を読み出し、読み出したヘッダ部分をミラーパケットとして出力する処理である。ミラー出力制御処理は、スイッチ２００の起動時に、ＣＰＵ１０１（図３参照）によって実行される。
【０１０３】
［ステップＳ２２１］ＣＰＵ１０１は、ミラーパケット出力をするか否かおよび切り出されるパケットのヘッダ部のサイズを示す切り出しサイズを設定する。第２の実施の形態では、この切り出しサイズに基づいて、ミラーパケットに含まれるヘッダ部のサイズが決定される。ヘッダ部のサイズが切り出しサイズよりも短い場合には、パディングによってヘッダ部のサイズが調整される。
【０１０４】
［ステップＳ２２２］ＣＰＵ１０１は、ＦＣＳを計算するＦＣＳ計算部２４１ｄ（図１１参照）が有するＦＣＳレジスタ（図示省略）を初期化する。
［ステップＳ２２３］ＣＰＵ１０１は、共有メモリ２２０に書き込まれたパケットがあるか否かを判定する。パケットがあれば、ＣＰＵ１０１は、ステップＳ２２４に処理を進める。一方、パケットがなければ、ＣＰＵ１０１は、ステップＳ２２２に処理を進める。
【０１０５】
［ステップＳ２２４］ＣＰＵ１０１は、入力されたパケットのヘッダ部のサイズを測定するサイズカウンタ部２４１ｃ（図１１参照）が有するサイズカウンタ（図示省略）を初期化する。
【０１０６】
［ステップＳ２２５］ＣＰＵ１０１は、共有メモリ２２０に書き込まれているパケットのヘッダ部を切り出して出力するヘッダミラーリングを行うか否かを判定する。ヘッダミラーリングを行う場合には、ＣＰＵ１０１は、ステップＳ２３１（図１６参照）に処理を進める。一方、ヘッダミラーリングを行わない場合には、ＣＰＵ１０１は、ステップＳ２２６に処理を進める。
【０１０７】
［ステップＳ２２６］ＣＰＵ１０１は、共有メモリ２２０に書き込まれているパケット全体を読み出し、読み出したパケットの全体のＦＣＳを計算する。
［ステップＳ２２７］ＣＰＵ１０１は、ステップＳ２２６で読み出したパケット全体にステップＳ２２６で計算したＦＣＳを付加し、ミラーパケットとして出力する。その後、ＣＰＵ１０１は、ステップＳ２２２に処理を進める。
【０１０８】
［ステップＳ２３１］ＣＰＵ１０１は、蓄積バッファ２４３（図１１参照）に書き込まれているパケットのヘッダ部の数が０であるか否かを判定する。０であれば、ＣＰＵ１０１は、ステップＳ２３３に処理を進める。一方、０でなければ、ＣＰＵ１０１は、ステップＳ２３２に処理を進める。
【０１０９】
［ステップＳ２３２］ＣＰＵ１０１は、蓄積バッファ２４３に蓄積されているパケットのヘッダ部のうち最も古いものが蓄積されてからの経過時間を測定するタイマ部２４１ｅ（図１１参照）が有するタイマ（図示省略）を初期化する。このとき、タイマにタイマが完了となる設定時間を示す設定値が設定される。
【０１１０】
［ステップＳ２３３］ＣＰＵ１０１は、共有メモリ２２０に書き込まれているパケットのヘッダ部を読み出し、読み出したパケットのヘッダ部を蓄積バッファ２４３に書き込む。このときＣＰＵ１０１は、ステップＳ２２４で初期化したサイズカウンタ部２４１ｃから、パケットのヘッダ部のサイズを取得する。ＣＰＵ１０１は、パケットのヘッダ部のサイズが予め定められた切り出しサイズよりも短い場合、ヘッダ部のサイズが切り出しサイズと同一になるようにパディング部を付加してヘッダ部のサイズの調整を行う。また、ＣＰＵ１０１は、このとき読み出したパケットのヘッダ部以外の不要な部分を廃棄する。
【０１１１】
［ステップＳ２３４］ＣＰＵ１０１は、読み出したパケットのヘッダ部に基づいて、蓄積数カウンタ部２４１ｆ（図１１参照）が有する蓄積数カウンタ（図示省略）および蓄積サイズカウンタ部２４１ｇ（図１１参照）が有する蓄積サイズカウンタ（図示省略）の値を更新する。
【０１１２】
ここで、蓄積数カウンタは、このパケットのヘッダ部の蓄積バッファ２４３に対する書き込みに基づく更新によって１が加算される。また、蓄積サイズカウンタは、このパケットのヘッダ部の蓄積バッファ２４３に対する書き込みに基づく更新によって、このパケットのヘッダ部のサイズを示す値が加算される。
【０１１３】
［ステップＳ２３５］ＣＰＵ１０１は、判定の対象であるカウンタの値が予定値に達しているか否かを判定する。予定値に達していれば、ＣＰＵ１０１は、ステップＳ２３７に処理を進める。一方、予定値に達していなければ、ＣＰＵ１０１は、ステップＳ２３６に処理を進める。
【０１１４】
ここで、判定の対象であるカウンタとは、蓄積されたヘッダ部を結合してミラーパケットとして出力するか否かを判定するためのカウンタであり、蓄積数カウンタまたは蓄積サイズカウンタのいずれかが、スイッチ２００の設計段階、ユーザの設定などによって予め定められる。
【０１１５】
例えば、判定の対象であるカウンタが蓄積数カウンタである場合には、蓄積数カウンタの値が予定値に達するとき、すなわち、蓄積バッファ２４３に予定された数のパケットのヘッダ部が書き込まれているとき、ステップＳ２３７でミラーパケットが出力される。
【０１１６】
また、判定の対象であるカウンタが蓄積サイズカウンタである場合には、蓄積サイズカウンタの値が予定値に達するとき、すなわち、蓄積バッファ２４３に書き込まれているパケットのヘッダ部のサイズの合計が予定されている量に達するとき、ステップＳ２３７でミラーパケットが出力される。
【０１１７】
［ステップＳ２３６］ＣＰＵ１０１は、タイマが完了したか否か、すなわち、ステップＳ２３２で初期化されたタイマが設定値に達し、設定時間を経過したか否かを判定する。タイマが完了していれば、ＣＰＵ１０１は、ステップＳ２３７に処理を進める。一方、タイマが完了していなければ、ＣＰＵ１０１は、ステップＳ２２３（図１５参照）に処理を進める。
【０１１８】
［ステップＳ２３７］ＣＰＵ１０１は、ステップＳ２３３で蓄積バッファ２４３に書きこまれたヘッダ部をすべて読み出し、読み出したパケットのヘッダ部を結合し、結合したヘッダ部のＦＣＳを計算する。また、ＣＰＵ１０１は、読み出したヘッダ部に計算したＦＣＳを付加し、パケットとして出力する。その後、ＣＰＵ１０１は、ステップＳ２２２（図１５参照）に処理を進める。
【０１１９】
以上のようにして、第２の実施の形態では、第１の実施の形態に加えて、ミラー出力制御部２４０が、複数のヘッダ部を結合して１つのミラーパケットとして出力することにより、パケット収集時およびネットワークのトラフィックの監視時のスイッチ１００およびスイッチ１００から出力されたミラーパケットを収集する装置の負荷を、より軽減することができる。
【０１２０】
［第３の実施の形態］
次に、第３の実施の形態について説明する。上記の第１の実施の形態、第２の実施の形態との相違点を中心に説明し、同様の事項については同一の符号を用いるとともに説明を省略する。
【０１２１】
第３の実施の形態は、スイッチ３００の入力制御部３１０が、共有メモリ３２０に入力されたパケットの制御データを書き込み、ミラー出力制御部３４０が、共有メモリ３２０に書き込まれた制御データの一部を、ミラーパケットに含める付加情報として読み出して、読み出した付加情報をミラーパケットに含めて出力する点で、第１の実施の形態および第２の実施の形態と異なる。
【０１２２】
以下に、本実施の形態におけるスイッチ３００について説明する。
図１７は、第３の実施の形態における入力制御部の構成を示すブロック図である。
第３の実施の形態の入力制御部３１０は、スイッチ３００によって受信された入力パケットの入力を制御するために、パケット書き込み部３１１および制御データ書き込み部３１２を有する。
【０１２３】
パケット書き込み部３１１は、スイッチ３００に入力された入力パケットにおけるヘッダ部およびペイロード部のデータなどのパケットデータを共有メモリ３２０に書き込む制御を行う。
【０１２４】
制御データ書き込み部３１２は、スイッチ３００に入力された入力パケットが入力された入力ポートを示す入力ポート番号、入力パケットが共有メモリ３２０に書き込まれる際のデータサイズ、入力パケットから、例えばヘッダ部などのパケットの一部を切り出す切り出しを行う際のパケットの位置（例えば、先頭からのサイズなど）の情報など、入力パケットの転送およびミラーリングを制御するための制御データを共有メモリ３２０に書き込む制御を行う。ここで、この共有メモリ３２０に書き込まれる制御データのうちの一部が、付加情報としてミラーパケットに含まれてスイッチ３００から出力される。
【０１２５】
このようにして、スイッチ３００に入力された入力パケットは、パケット書き込み部３１１によって共有メモリ３２０に書き込まれるとともに、書き込まれる際のデータサイズおよび入力ポート番号などの制御データも、一部に付加情報を含みながら、制御データ書き込み部３１２によって共有メモリ３２０に書き込まれる。
【０１２６】
図１８は、第３の実施の形態におけるミラー出力制御部の構成を示すブロック図である。
ミラー出力制御部３４０は、受信された入力パケットに基づくミラーパケットの出力を制御する。このとき、ミラー出力制御部３４０は、共有メモリ３２０に書き込まれた入力パケットから、入力パケットの一部であるヘッダ部のみを抽出する。次に、ミラー出力制御部３４０は、抽出した入力パケットの一部であるヘッダ部をコピーして、蓄積バッファ３４３に書き込む。次に、ミラー出力制御部３４０は、蓄積バッファ３４３に書き込まれたパケットのヘッダ部を読み出し、読み出したパケットのヘッダ部を複数個結合してミラーパケットに含め、ヘッダ部を結合したミラーパケットを出力する制御を行う。
【０１２７】
ミラー出力制御部３４０は、共有メモリ３２０からデータを読み出す共有メモリ読み出し制御部３４１、蓄積バッファ書き込み制御部３４２、蓄積バッファ３４３および蓄積バッファ読み出し制御部３４４を有する。
【０１２８】
共有メモリ読み出し制御部３４１は、サイズカウンタ部３４１ｃによるサイズのカウント結果に基づいて、共有メモリ３２０に記憶されているパケットを読み出し、読み出したパケットからヘッダ部を抽出し、抽出したパケットのヘッダ部を蓄積バッファ３４３に書き込む制御を行う。この共有メモリ読み出し制御部３４１は、制御データ処理部３４１ａ、パケットデータ処理部３４１ｂ、サイズカウンタ部３４１ｃ、ＦＣＳ計算部３４１ｄ、タイマ部３４１ｅ、蓄積数カウンタ部３４１ｆおよび蓄積サイズカウンタ部３４１ｇを有する。
【０１２９】
制御データ処理部３４１ａは、共有メモリ３２０から入力パケットの制御データを読み出し、これに基づいてミラーパケットの出力制御を行う。また、制御データ処理部３４１ａは、共有メモリ３２０から付加情報を読み出す。この制御データ処理部３４１ａによって読み出された付加情報が、蓄積バッファ書き込み制御部３４２によって蓄積バッファ３４３に書き込まれる。
【０１３０】
パケットデータ処理部３４１ｂは、共有メモリ３２０からパケットのヘッダ部を読み出す。このパケットデータ処理部３４１ｂによって読み出されたパケットのヘッダ部が、蓄積バッファ書き込み制御部３４２によって蓄積バッファ３４３に書き込まれる。
【０１３１】
サイズカウンタ部３４１ｃは、共有メモリ３２０から読み込まれ、蓄積バッファ３４３に書き込まれるパケットのヘッダ部のサイズを計測して、パケットの先頭からのサイズを認識する。これにより、サイズカウンタ部３４１ｃは、パケットデータ処理部３４１ｂによる共有メモリ３２０より読み出されたパケットからのヘッダ部の切り出しを制御する。
【０１３２】
ＦＣＳ計算部３４１ｄは、ミラーパケットのエラーを検出するためのＦＣＳを計算する。このＦＣＳ計算部３４１ｄによるＦＣＳの計算では、蓄積バッファ読み出し制御部３４４によって蓄積バッファ３４３から読み出されたパケットのヘッダ部のコピーを有するミラーパケットのＦＣＳがＦＣＳ計算部３４１ｄによって計算される。
【０１３３】
具体的には、蓄積バッファ読み出し制御部３４４によって蓄積バッファ３４３からのヘッダ部の読み出しを行うと判定されると、ＦＣＳ計算部３４１ｄによって蓄積バッファ３４３に記憶されているパケットのヘッダ部から生成されるミラーパケットのＦＣＳが計算される。また、このＦＣＳ計算部３４１ｄによるＦＣＳの計算結果は、続いて蓄積バッファ書き込み制御部３４２によって蓄積バッファ３４３に書き込む制御が行われる。
【０１３４】
タイマ部３４１ｅは、経過時間を計測する。蓄積数カウンタ部３４１ｆは、蓄積バッファ３４３に書き込まれたパケットのヘッダ部の個数を計数する。蓄積サイズカウンタ部３４１ｇは、蓄積バッファ３４３に書き込まれたパケットのヘッダ部のサイズを合計する。
【０１３５】
詳しくは後述するが、これらのタイマ部３４１ｅによる経過時間の計測結果、蓄積数カウンタ部３４１ｆによるパケットのヘッダ部の個数の計数結果、蓄積数カウンタ部３４１ｆによるパケットのヘッダ部のサイズの合計に基づいて、蓄積バッファ読み出し制御部３４４によりミラーパケットの出力が制御される。
【０１３６】
蓄積バッファ書き込み制御部３４２は、蓄積バッファ３４３に対する、パケットデータ処理部３４１ｂによってパケットから抽出されたヘッダ部、ＦＣＳ計算部３４１ｄによって計算されたＦＣＳおよびミラーパケットに含められる情報であり、パケットに関する情報である付加情報の書き込みを制御する。ここで、付加情報には、例えば、パケットのサイズを示す情報、スイッチ３００に入力された入力パケットが入力された入力ポートを示す入力ポート番号、ミラーパケットでない出力パケットが出力される出力ポートを示す出力ポート番号などがある。
【０１３７】
また、蓄積バッファ書き込み制御部３４２は、サイズカウンタ部３４１ｃによって計測されたパケットのヘッダ部のサイズが、所定量より少ない場合には、パディングによりパケットのヘッダ部のサイズを所定量に揃える制御を行う。
【０１３８】
蓄積バッファ３４３は、パケットデータ処理部３４１ｂによってパケットから抽出されたヘッダ部および制御データ処理部３４１ａによって共有メモリ３２０から読み出された付加情報ならびにＦＣＳ計算部３４１ｄによって計算されたＦＣＳを記憶するバッファである。
【０１３９】
蓄積バッファ読み出し制御部３４４は、蓄積バッファ３４３に書き込まれたパケットのヘッダ部および付加情報を読み出し、読み出したパケットのヘッダ部および付加情報を複数個結合してミラーパケットに含め、結合されたヘッダ部および付加情報を有するミラーパケットを出力する制御を行う。この蓄積バッファ読み出し制御部３４４は、ミラーパケットに含まれるヘッダ部同士の間に付加情報を格納するための領域である付加情報格納領域を設け、この付加情報格納領域に付加情報を格納してミラーパケットを生成する。
【０１４０】
ここで、この付加情報格納領域をミラーパケットに含まれるヘッダ部同士の間に設けた場合には、付加情報格納領域の個数は、ミラーパケットに含まれるヘッダ部の個数よりも１つ少ない。したがって、１つの入力パケットに対する付加情報のサイズは、「付加情報格納領域のサイズ」×「ミラーパケットに含まれるヘッダ部の数−１」÷「ミラーパケットに含まれるヘッダ部の数」以下となる。
【０１４１】
また、蓄積バッファ読み出し制御部３４４は、蓄積数カウンタ部３４１ｆによる計数の結果、パケットのヘッダ部の個数が所定個数に達する毎に、パケットから抽出されたヘッダ部および付加情報を複数個結合し、結合したヘッダ部および付加情報を有するミラーパケットを出力する制御を行う。
【０１４２】
また、蓄積バッファ読み出し制御部３４４は、蓄積数カウンタ部３４１ｆによる計数の結果、パケットのヘッダ部の個数が所定個数に達していなくても、タイマ部３４１ｅによる計時の結果、複数のヘッダ部のうちの最初のヘッダ部が蓄積されてから所定時間が経過した場合には、その時までに蓄積されているパケットから抽出されたヘッダ部および付加情報を複数個結合し、結合したヘッダ部および付加情報を有するミラーパケットを出力する制御を行う。
【０１４３】
さらに、蓄積バッファ読み出し制御部３４４は、蓄積サイズカウンタ部３４１ｇによる合計の結果、蓄積バッファ３４３に記憶されているパケットのヘッダ部および付加情報のサイズの合計が所定量に達する毎に、パケットから抽出されたヘッダ部および付加情報を複数個結合し、結合したヘッダ部および付加情報を有するミラーパケットを出力する制御を行うこともできる。
【０１４４】
この場合にも、蓄積バッファ読み出し制御部３４４は、蓄積バッファ３４３に記憶されているパケットのヘッダ部および付加情報のサイズの合計が所定量に達していなくても、タイマ部３４１ｅによる計時の結果、複数のヘッダ部のうちの最初のヘッダ部が蓄積されてから所定時間が経過した場合には、その時までに蓄積されているパケットから抽出されたヘッダ部および付加情報を複数個結合し、結合したヘッダ部および付加情報を有するミラーパケットを出力する制御を行う。
【０１４５】
蓄積バッファ読み出し制御部３４４は、ミラーパケットを出力する制御を行う場合、蓄積バッファ３４３に記憶されているパケットのヘッダ部および付加情報を読み出して結合することによりミラーパケットとし、ＦＣＳ計算部３４１ｄにこのミラーパケットのＦＣＳを計算させる制御を行う。次に、蓄積バッファ読み出し制御部３４４は、ＦＣＳ計算部３４１ｄによって計算されたＦＣＳを蓄積バッファ３４３から読み出し、ミラーパケットにＦＣＳ計算部３４１ｄが計算したミラーパケットのＦＣＳを付加する。次に、パケットデータ処理部３４１ｂは、ＦＣＳが付加されたミラーパケットを出力する。
【０１４６】
なお、蓄積バッファ読み出し制御部３４４は、タイマ部３４１ｅによる経過時間の計測のみをミラーパケット出力の基準としてもよい。この場合、蓄積バッファ読み出し制御部３４４は、タイマ部３４１ｅによる計測の結果、所定時間が経過する毎に、パケットから抽出されたヘッダ部および付加情報を複数個結合し、結合したヘッダ部および付加情報を有するミラーパケットを出力する制御を行う。
【０１４７】
図１９は、第３の実施の形態におけるミラーパケットのデータ構造例を示す図である。図１９に示すミラーパケット３５０は、パケットの付加情報が、パケットのヘッダ部の間に付加情報が挟まれるように付されている。
【０１４８】
プリアンブル部３１ａ、ヘッダ部３１ｂ、ペイロード部３１ｃおよびＦＣＳ３１ｄを有するパケット３１がスイッチ３００に入力されると、スイッチ３００においてパケット３１のヘッダ部３１ｂのみがコピーされて蓄積される。
【０１４９】
続いてプリアンブル部３２ａ、ヘッダ部３２ｂ、ペイロード部３２ｃおよびＦＣＳ３２ｄを有するパケット３２がスイッチ３００に入力されると、スイッチ３００においてパケット３２のヘッダ部３２ｂのみがコピーされて蓄積される。
【０１５０】
その後、スイッチ２００により、パケット３１およびパケット３２のヘッダ部が結合されたミラーパケット３５０が出力される。このミラーパケット３５０は、パケット３１のヘッダ部３１ｂのコピーであるヘッダ部３５１ｂ、パケット３２のヘッダ部３２ｂのコピーであるヘッダ部３５２ｂ、新たに付加されたプリアンブル部３５０ａ、新に計算されたＦＣＳ３５０ｄ、パケット３１の付加情報が示された付加情報部３５１ｆ、パケット３２の付加情報が示された付加情報部３５２ｆを有する。
【０１５１】
ここで、付加情報部３５１ｆは、プリアンブル部３５０ａとヘッダ部３５１ｂとの間に配置される。同様に、付加情報部３５２ｆは、ヘッダ部３５１ｂとヘッダ部３５２ｂとの間に配置される。
【０１５２】
このように、ミラーリングされたヘッダ部の付近に元のパケットの付加情報を配置して、ヘッダ部とともにミラーパケットによって出力することで、収集したパケットに関して付随する情報を同時に通知することができ、ネットワークのトラフィックのより詳細かつ高度な監視を行うことができる。
【０１５３】
図２０から図２２は、第３の実施の形態におけるミラー出力制御処理の手順を示すフローチャートである。このミラー出力制御処理は、スイッチ３００が入力を受け付けて共有メモリ３２０（図１７参照）に書き込んだパケットのヘッダ部分および付加情報を読み出し、読み出したヘッダ部分および付加情報をミラーパケットとして出力する処理である。ミラー出力制御処理は、スイッチ３００の起動時に、ＣＰＵ１０１（図３参照）によって実行される。
【０１５４】
［ステップＳ３２１］ＣＰＵ１０１は、ミラーパケット出力をするか否か、切り出されるパケットのヘッダ部のサイズを示す切り出しサイズ、付加情報の項目を設定する。第３の実施の形態では、この切り出しサイズに基づいて、ミラーパケットに含まれるヘッダ部のサイズが決定される。ヘッダ部のサイズが切り出しサイズよりも短い場合には、パディングによってヘッダ部のサイズが調整される。また、付加情報の項目の設定に基づいて、設定された項目に応じた付加情報がミラーパケットに含まれて出力されることになる。
【０１５５】
［ステップＳ３２２］ＣＰＵ１０１は、ＦＣＳを計算するＦＣＳ計算部３４１ｄ（図１８参照）が有するＦＣＳレジスタ（図示省略）を初期化する。
［ステップＳ３２３］ＣＰＵ１０１は、共有メモリ２２０に書き込まれたパケットがあるか否かを判定する。パケットがあれば、ＣＰＵ１０１は、ステップＳ３２４に処理を進める。一方、パケットがなければ、ＣＰＵ１０１は、ステップＳ３２２に処理を進める。
【０１５６】
［ステップＳ３２４］ＣＰＵ１０１は、入力されたパケットのヘッダ部のサイズを測定するサイズカウンタ部３４１ｃ（図１８参照）が有するサイズカウンタ（図示省略）を初期化する。
【０１５７】
［ステップＳ３２５］ＣＰＵ１０１は、共有メモリ２２０に書き込まれているパケットのヘッダ部を切り出して出力するヘッダミラーリングを行うか否かを判定する。ヘッダミラーリングを行う場合には、ＣＰＵ１０１は、ステップＳ３３１（図２１参照）に処理を進める。一方、ヘッダミラーリングを行わない場合には、ＣＰＵ１０１は、ステップＳ３２６に処理を進める。
【０１５８】
［ステップＳ３２６］ＣＰＵ１０１は、共有メモリ２２０に書き込まれているパケット全体を読み出し、読み出したパケットの全体のＦＣＳを計算する。
［ステップＳ３２７］ＣＰＵ１０１は、ステップＳ３２６で読み出したパケット全体にステップＳ３２６で計算したＦＣＳを付加し、ミラーパケットとして出力する。その後、ＣＰＵ１０１は、ステップＳ３２２に処理を進める。
【０１５９】
［ステップＳ３３１］ＣＰＵ１０１は、蓄積バッファ３４３（図１８参照）に書き込まれているパケットのヘッダ部の数が０であるか否かを判定する。０であれば、ＣＰＵ１０１は、ステップＳ３３３に処理を進める。一方、０でなければ、ＣＰＵ１０１は、ステップＳ３３２に処理を進める。
【０１６０】
［ステップＳ３３２］ＣＰＵ１０１は、蓄積バッファ３４３に蓄積されているパケットのヘッダ部のうち最も古いものが蓄積されてからの経過時間を測定するタイマ部３４１ｅ（図１８参照）が有するタイマ（図示省略）を初期化する。このとき、タイマにタイマが完了となる設定時間を示す設定値が設定される。
【０１６１】
［ステップＳ３３３］ＣＰＵ１０１は、共有メモリ３２０に書き込まれているパケットのヘッダ部を読み出し、読み出したパケットのヘッダ部を蓄積バッファ３４３に書き込む。このときＣＰＵ１０１は、ステップＳ３２４で初期化したサイズカウンタ部３４１ｃから、パケットのヘッダ部のサイズを取得する。ＣＰＵ１０１は、パケットのヘッダ部のサイズが予め定められた切り出しサイズよりも短い場合、ヘッダ部のサイズが切り出しサイズと同一になるようにパディング部を付加してヘッダ部のサイズの調整を行う。また、ＣＰＵ１０１は、このとき読み出したパケットのヘッダ部以外の不要な部分を廃棄する。
【０１６２】
［ステップＳ３３４］ＣＰＵ１０１は、制御データ処理部３４１ａ（図１８参照）が抽出した付加情報に基づいて付加情報を生成し、蓄積バッファ３４３に書き込む。その後、ＣＰＵ１０１は、ステップＳ３４１（図２２参照）に処理を進める。
【０１６３】
［ステップＳ３４１］ＣＰＵ１０１は、読み出したパケットのヘッダ部に基づいて、蓄積数カウンタ部３４１ｆ（図１８参照）が有する蓄積数カウンタ（図示省略）および蓄積サイズカウンタ部３４１ｇ（図１８参照）が有する蓄積サイズカウンタ（図示省略）の値を更新する。
【０１６４】
ここで、蓄積数カウンタは、第２の実施の形態と同様、このパケットのヘッダ部の蓄積バッファ３４３に対する書き込みに基づく更新によって１が加算される。また、蓄積サイズカウンタは、このパケットのヘッダ部の蓄積バッファ３４３に対する書き込みに基づく更新によって、このパケットのヘッダ部のサイズを示す値が加算される。
【０１６５】
［ステップＳ３４２］ＣＰＵ１０１は、判定の対象であるカウンタの値が予定値に達しているか否かを判定する。予定値に達していれば、ＣＰＵ１０１は、ステップＳ３４４に処理を進める。一方、予定値に達していなければ、ＣＰＵ１０１は、ステップＳ３４３に処理を進める。
【０１６６】
ここで、判定の対象であるカウンタとは、第２の実施の形態と同様、蓄積されたヘッダ部を結合してミラーパケットとして出力するか否かを判定するためのカウンタであり、蓄積数カウンタまたは蓄積サイズカウンタのいずれかが、スイッチ３００の設計段階、ユーザの設定などによって予め定められる。
【０１６７】
例えば、判定の対象であるカウンタが蓄積数カウンタである場合には、蓄積数カウンタの値が予定値に達するとき、すなわち、蓄積バッファ３４３に予定された数のパケットのヘッダ部が書き込まれているとき、ステップＳ３４４でミラーパケットが出力される。
【０１６８】
また、判定の対象であるカウンタが蓄積サイズカウンタである場合には、蓄積サイズカウンタの値が予定値に達するとき、すなわち、蓄積バッファ３４３に書き込まれているパケットのヘッダ部のサイズの合計が予定されている量に達するとき、ステップＳ３４４でミラーパケットが出力される。
【０１６９】
［ステップＳ３４３］ＣＰＵ１０１は、タイマが完了したか否か、すなわち、ステップＳ３３２で初期化されたタイマが設定値に達し、設定時間を経過したか否かを判定する。タイマが完了していれば、ＣＰＵ１０１は、ステップＳ３４４に処理を進める。一方、タイマが完了していなければ、ＣＰＵ１０１は、ステップＳ３２３（図２０参照）に処理を進める。
【０１７０】
［ステップＳ３４４］ＣＰＵ１０１は、ステップＳ３３３（図２１参照）で蓄積バッファ３４３に書きこまれたヘッダ部をすべて読み出し、読み出したパケットのヘッダ部を結合し、結合したヘッダ部のＦＣＳを計算する。また、ＣＰＵ１０１は、読み出したヘッダ部に計算したＦＣＳを付加し、パケットとして出力する。その後、ＣＰＵ１０１は、ステップＳ３２２（図２０参照）に処理を進める。
【０１７１】
以上のようにして、第３の実施の形態では、第１の実施の形態、第２の実施の形態に加えて、ミラー出力制御部３４０がミラーパケットに付加情報を含めて出力することにより、付加情報を用いてネットワークのトラフィックの、より詳細な監視を行うことが可能になる。
【０１７２】
［第４の実施の形態］
次に、第４の実施の形態について説明する。上記の第１の実施の形態、第２の実施の形態、第３の実施の形態との相違点を中心に説明し、同様の事項については同一の符号を用いるとともに説明を省略する。
【０１７３】
第４の実施の形態は、スイッチ４００が有する入力ポートおよび出力ポートのうち監視対象に定めたポートを使用するパケットを収集し、収集結果をミラーパケットとして出力する点で、第１の実施の形態、第２の実施の形態、第３の実施の形態と異なる。
【０１７４】
以下に、本実施の形態におけるスイッチ４００について説明する。
図２３は、第４の実施の形態におけるスイッチの構成を示すブロック図である。図２３に示すスイッチ４００は、ネットワークのトラフィックを監視するために、入力されたパケットのヘッダ部を有するミラーパケットを出力する機能を有するレイヤ２スイッチである。
【０１７５】
スイッチ４００は、ネットワークのトラフィックを監視するために、入力制御部４１０、共有メモリ４２０、出力制御部４３０およびミラー出力制御部４４０を有する。
入力制御部４１０は、スイッチ４００によって受信された入力パケットの入力を制御する。このとき、入力制御部４１０は、受信された入力パケットを共有メモリ４２０に書き込む制御を行う。これにより、スイッチ４００に入力された入力パケットは、入力制御部４１０によって共有メモリ４２０に書き込まれる。ここで、入力パケットは、例えば、宛て先などを示すヘッダ部およびユーザデータなどの、転送されるデータを示すペイロード部を有する。
【０１７６】
共有メモリ４２０は、受信された入力パケットを一時的に記憶する。これにより、共有メモリ４２０に書き込まれたパケットが出力制御部４３０の制御により読み出されるとともに、ミラー出力制御部４４０の制御により読み出される。
【０１７７】
出力制御部４３０は、受信された入力パケットの出力を制御する。この出力制御部４３０の制御により、スイッチ４００から入力パケットが出力パケットとして出力される。これにより、共有メモリ４２０に書き込まれた入力パケットは、出力制御部４３０から読み出され、適切な宛て先の出力ポートなどの図示しない出力部からスイッチ４００の外部に出力される。ここで、出力パケットは、例えば、入力パケットと同様、ヘッダ部およびペイロード部を有する。
【０１７８】
ミラー出力制御部４４０は、受信された入力パケットに基づくミラーパケットの出力を制御する。このとき、ミラー出力制御部４４０は、共有メモリ４２０に書き込まれた入力パケットから、入力パケットの一部であるヘッダ部のみを抽出する。次に、ミラー出力制御部４４０は、抽出した入力パケットの一部であるヘッダ部をコピーして、このヘッダ部を有するミラーパケットを出力する制御を行う。
【０１７９】
このようなスイッチ４００によれば、入力制御部４１０により、受信されたパケットの入力が制御され、共有メモリ４２０により、受信されたパケットが一時的に記憶され、出力制御部４３０により、受信されたパケットの出力が制御され、ミラー出力制御部４４０により、ミラーパケットの出力が制御される。ここで、入力制御部４１０により、受信されたパケットが共有メモリ４２０に書き込まれる制御が行われ、ミラー出力制御部４４０により、共有メモリ４２０に書き込まれたパケットの一部のみが抽出され、抽出されたパケットの一部を有するミラーパケットが出力される制御が行われる。
【０１８０】
これにより、ミラーリングを行う場合には、ミラーパケットを収集してトラフィックを監視する図示しない観測装置が接続されたミラー出力制御部４４０が、共有メモリ４２０より、出力制御部４３０から出力される出力パケットと同じパケットデータを読み出し、出力する。
【０１８１】
すなわち、ミラー出力制御部４４０によって共有メモリ４２０から読み出されるパケットのデータは、パケット全部のデータではなく、パケットの一部のデータとする。また、ユーザが指定した、または予め決められた特定のサイズを上限として読み出される。
【０１８２】
なお、スイッチ４００は、レイヤ２スイッチであるが、これに限らず、ルータなどのデータの中継機能を有する通信装置でもよい。
また、スイッチ４００は、入力ポートａ，ｂ，・・・のように、パケットが入力される入力ポートを複数する。ミラー出力制御部４４０は、複数の入力ポートのうちの所定の入力ポートに入力されたパケットのミラーパケットを出力する制御を行う。
【０１８３】
付加情報は、パケットのミラーリングが行われた箇所を示す情報を有する。スイッチ４００は、パケットが入力される入力ポートを複数有している。付加情報は、ミラー出力制御部４４０によるミラーパケットの出力が行われたパケットが、入力された入力ポートを示す情報を有する。
【０１８４】
また、スイッチ４００がパケットが出力される出力ポートを複数有している場合、ミラー出力制御部４４０は、パケットを出力する出力ポートから出力されるパケットのミラーパケットを出力する制御を行う。この場合、付加情報に、ミラー出力制御部４４０によるミラーパケットの出力が行われたパケットが出力される出力ポートを示す情報を含めてもよい。
【０１８５】
図２４および図２５は、第４の実施の形態におけるスイッチの動作を示す図である。図２４に、第４の実施の形態において、入力ポートを監視対象に設定した場合のスイッチ４００の動作を示す。また、図２５に、出力ポートを監視対象に設定した場合のスイッチ４００の動作を示す。
【０１８６】
図２４では、入力ポートａが監視対象である場合のスイッチ４００の動作について説明する。ここで、パケット３１は、入力ポートａによってスイッチ４００に入力されるパケットである。パケット３２は、入力ポートｂによってスイッチ４００に入力されるパケットである。ミラーパケット４５０は、監視対象である入力ポートａから入力されたパケット３１に基づいてミラーリングされたパケットである。
【０１８７】
また、パケット３１，３２は、それぞれプリアンブル部３１ａ，３２ａ、ヘッダ部３１ｂ，３２ｂ、ペイロード部３１ｃ，３２ｃおよび図示しないＦＣＳを有する。
図２４に示すように、スイッチ４００にパケット３１，３２が順に入力されると、これに応じて監視対象である入力ポートａから入力されたパケット３１に対応するミラーパケット４５０が出力される。このとき、ミラーパケット４５０のヘッダ部４５１ｂは、パケット３１のヘッダ部３１ｂがコピーされたものである。
【０１８８】
すなわち、ミラーパケット４５０は、スイッチ４００により、パケット３１のペイロード部３１ｃおよびＦＣＳが除去されたヘッダ部のコピーであるヘッダ部４５１ｂに、プリアンブル部４５０ａおよびミラーパケットのＦＣＳが付加されて出力される。一方、監視対象でない入力ポートｂから入力されたパケット３２に対応するミラーパケットは出力されない。
【０１８９】
図２５では、出力ポートａが監視対象である場合のスイッチ４００の動作について説明する。ここで、パケット３１は、入力ポートａによってスイッチ４００に入力され、出力ポートａから出力されるパケットである。パケット３２は、入力ポートｂによってスイッチ４００に入力され、出力ポートａから出力されるパケットである。ミラーパケット４６０は、監視対象である出力ポートａから出力されるパケット３１，３２に基づいてミラーリングされたパケットである。
【０１９０】
また、パケット３１，３２は、それぞれプリアンブル部３１ａ，３２ａ、ヘッダ部３１ｂ，３２ｂ、ペイロード部３１ｃ，３２ｃおよび図示しないＦＣＳを有する。
図２５に示すように、スイッチ４００にパケット３１，３２が順に入力されると、これに応じて監視対象である出力ポートａから出力されるパケット３１，３２に対応するミラーパケット４６０が出力される。このとき、ミラーパケット４６０のヘッダ部４６１ｂは、パケット３１のヘッダ部３１ｂがコピーされたものである。
【０１９１】
すなわち、ミラーパケット４６０は、スイッチ４００により、監視対象である出力ポートａから出力されるパケット３１のペイロード部３１ｃおよびＦＣＳが除去されたヘッダ部のコピーであるヘッダ部４６１ｂ、パケット３２のペイロード部３２ｃおよびＦＣＳが除去されたヘッダ部のコピーであるヘッダ部４６２ｂに、プリアンブル部４６０ａおよびミラーパケットのＦＣＳが付加されて出力される。
【０１９２】
以上のようにして、第４の実施の形態では、第１の実施の形態、第２の実施の形態、第３の実施の形態に加えて、ミラー出力制御部４４０が監視対象の入力ポートおよび出力ポートを通過したパケットのヘッダ部を収集したミラーパケットを出力することで、各ポート毎のパケットの入出力状況を収集でき、より詳細なトラフィックの監視を行うことが可能になる。
【０１９３】
以上、開示の通信装置および通信方法を、図示の実施の形態に基づいて説明したが、上記については単に本発明の原理を示すものである。また、上記で説明した正確な構成および応用例に限定されるものではなく、さらに、多数の変形、変更が当業者にとって可能であり、対応するすべての変形例および均等物は、添付の請求項およびその均等物による開示の範囲とみなされ、各部の構成は同様の機能を有する任意の構成のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。また、前述した実施の形態のうちの任意の２以上の構成を組み合わせたものであってもよい。
【０１９４】
（付記１）  ネットワークのトラフィックを監視する通信装置において、
前記通信装置によって受信されたパケットの入力を制御する入力制御手段と、
受信された前記パケットを一時的に記憶する一時記憶手段と、
受信された前記パケットの出力を制御する出力制御手段と、
受信された前記パケットに基づくミラーパケットの出力を制御するミラー出力制御手段と、
を有し、
前記入力制御手段は、受信された前記パケットを前記一時記憶手段に書き込む制御を行い、
前記ミラー出力制御手段は、前記一時記憶手段に書き込まれた前記パケットの一部のみを抽出し、抽出した前記パケットの前記一部を有する前記ミラーパケットを出力する制御を行うことを特徴とする通信装置。
【０１９５】
（付記２）  前記ミラー出力制御手段は、前記パケットから前記一部としてヘッダ部を抽出する制御を行うことを特徴とする付記１記載の通信装置。
（付記３）  前記ミラー出力制御手段は、
前記パケットから抽出された前記一部を記憶する蓄積記憶手段と、
前記一時記憶手段に記憶されている前記パケットを読み出し、読み出した前記パケットから前記一部を抽出し、抽出した前記パケットの前記一部を前記蓄積記憶手段に書き込む制御を行う一時記憶読み出し制御手段と、
前記蓄積記憶手段に書き込まれた前記パケットの前記一部を読み出し、読み出した前記パケットの前記一部を複数個結合して前記ミラーパケットに含め、結合された前記一部を有する前記ミラーパケットを出力する制御を行う蓄積記憶読み出し制御手段と、
を有することを特徴とする付記１記載の通信装置。
【０１９６】
（付記４）  前記ミラー出力制御手段は、経過時間を計測するタイマ手段を有し、
前記蓄積記憶読み出し制御手段は、前記タイマ手段による計測の結果、所定時間が経過する毎に、前記パケットから抽出された前記一部を複数個結合し、前記結合した前記一部を有する前記ミラーパケットを出力する制御を行うことを特徴とする付記３記載の通信装置。
【０１９７】
（付記５）  前記ミラー出力制御手段は、前記蓄積記憶手段に書き込まれた前記パケットの前記一部を計数する蓄積数カウント手段を有し、
前記蓄積記憶読み出し制御手段は、前記蓄積数カウント手段による計数の結果、前記パケットの前記一部の個数が所定個数に達する毎に、前記パケットから抽出された前記一部を複数個結合し、前記結合した前記一部を有する前記ミラーパケットを出力する制御を行うことを特徴とする付記３記載の通信装置。
【０１９８】
（付記６）  前記ミラー出力制御手段は、経過時間を計測するタイマ手段を有し、
前記蓄積記憶読み出し制御手段は、前記蓄積数カウント手段による計数の結果、前記パケットの前記一部の前記個数が前記所定個数に達していなくても、前記タイマ手段による計時の結果、複数の前記一部のうちの最初の前記一部が蓄積されてから所定時間が経過した場合には、その時までに蓄積されている前記パケットから抽出された前記一部を複数個結合し、前記結合した前記一部を有する前記ミラーパケットを出力する制御を行うことを特徴とする付記５記載の通信装置。
【０１９９】
（付記７）  前記ミラー出力制御手段は、前記蓄積記憶手段に書き込まれた前記パケットの前記一部のサイズを合計する蓄積サイズカウント手段を有し、
前記蓄積記憶読み出し制御手段は、前記蓄積サイズカウント手段による合計の結果、前記パケットの前記一部の前記サイズの合計が所定量に達する毎に、前記パケットから抽出された前記一部を複数個結合し、前記結合した前記一部を有する前記ミラーパケットを出力する制御を行うことを特徴とする付記３記載の通信装置。
【０２００】
（付記８）  前記ミラー出力制御手段は、経過時間を計測するタイマ手段を有し、
前記蓄積記憶読み出し制御手段は、前記蓄積サイズカウント手段による合計の結果、前記パケットの前記一部の前記サイズの合計が前記所定量に達していなくても、前記タイマ手段による計時の結果、複数の前記一部のうちの最初の前記一部が蓄積されてから所定時間が経過した場合には、その時までに蓄積されている前記パケットから抽出された前記一部を複数個結合し、前記結合した前記一部を有する前記ミラーパケットを出力する制御を行うことを特徴とする付記７記載の通信装置。
【０２０１】
（付記９）  前記ミラー出力制御手段は、前記蓄積記憶手段に書き込まれる前記パケットの前記一部のサイズを計測するサイズカウント手段を有し、
前記蓄積記憶書き込み制御手段は、前記サイズカウント手段によって計測された前記パケットの前記一部の前記サイズが、所定量より少ない場合には、パディングにより前記パケットの前記一部のサイズを所定量に揃える制御を行うことを特徴とする付記３記載の通信装置。
【０２０２】
（付記１０）  前記ミラーパケットは、前記パケットに関する付加情報を有することを特徴とする付記１記載の通信装置。
（付記１１）  前記付加情報は、前記パケットのサイズを示す情報を有することを特徴とする付記１０記載の通信装置。
【０２０３】
（付記１２）  前記通信装置は、前記パケットが入力される入力手段を複数有し、
前記付加情報は、前記ミラー出力制御手段による前記ミラーパケットの出力が行われた前記パケットが、入力された前記入力手段を示す情報を有することを特徴とする付記１０記載の通信装置。
【０２０４】
（付記１３）  前記通信装置は、前記パケットが出力される出力手段を複数有し、
前記付加情報は、前記ミラー出力制御手段による前記ミラーパケットの出力が行われた前記パケットが出力される前記出力手段を示す情報を有することを特徴とする付記１０記載の通信装置。
【０２０５】
（付記１４）  前記通信装置は、前記パケットが入力される入力手段を複数有し、
前記ミラー出力制御手段は、複数の前記入力手段のうちの所定の前記入力手段に入力された前記パケットの前記ミラーパケットを出力する制御を行うことを特徴とする付記１記載の通信装置。
【０２０６】
（付記１５）  前記ミラー出力制御手段は、前記パケットを出力する出力手段から出力される前記パケットの前記ミラーパケットを出力する制御を行うことを特徴とする付記１記載の通信装置。
【０２０７】
（付記１６）  前記ミラー出力制御手段は、前記ミラーパケットに前記ミラーパケットのエラーを検出するためのエラー検出情報を付加するエラー情報付加手段を有することを特徴とする付記１記載の通信装置。
【０２０８】
（付記１７）  前記通信装置は、レイヤ２スイッチであることを特徴とする付記１記載の通信装置。
（付記１８）  前記通信装置は、ルータであることを特徴とする付記１記載の通信装置。
【０２０９】
（付記１９）  ネットワークのトラフィックを監視する通信方法において、
入力制御手段が、通信装置によって受信されたパケットの入力を制御する入力制御ステップと、
ミラー出力制御手段が、受信された前記パケットに基づくミラーパケットの出力を制御するミラー出力制御ステップと、
を有し、
前記入力制御ステップでは、前記入力制御手段が、受信された前記パケットを一時的に記憶する一時記憶手段に書き込む制御を行い、
前記ミラー出力制御ステップでは、前記ミラー出力制御手段が、前記一時記憶手段に書き込まれた前記パケットの一部のみを抽出し、抽出した前記パケットの前記一部を有する前記ミラーパケットを出力する制御を行うことを特徴とする通信方法。
【図面の簡単な説明】
【０２１０】
【図１】本実施の形態の概要を示す図である。
【図２】通信システムの全体構成を示す図である。
【図３】スイッチのハードウェア構成を示す図である。
【図４】パケットのデータ構造例を示す図である。
【図５】第１の実施の形態におけるスイッチの構成を示すブロック図である。
【図６】第１の実施の形態における入力制御部の構成を示すブロック図である。
【図７】第１の実施の形態におけるミラー出力制御部の構成を示すブロック図である。
【図８】第１の実施の形態におけるスイッチの動作を示す図である。
【図９】第１の実施の形態における入力制御処理の手順を示すフローチャートである。
【図１０】第１の実施の形態におけるミラー出力制御処理の手順を示すフローチャートである。
【図１１】第２の実施の形態におけるミラー出力制御部の構成を示すブロック図である。
【図１２】第２の実施の形態におけるスイッチの動作を示す図である。
【図１３】第２の実施の形態におけるミラーパケットのデータ構造例を示す図である。
【図１４】第２の実施の形態におけるミラーパケットのデータ構造例を示す図である。
【図１５】第２の実施の形態におけるミラー出力制御処理の手順を示すフローチャートである。
【図１６】第２の実施の形態におけるミラー出力制御処理の手順を示すフローチャートである。
【図１７】第３の実施の形態における入力制御処理の構成を示すブロック図である。
【図１８】第３の実施の形態におけるミラー出力制御部の構成を示すブロック図である。
【図１９】第３の実施の形態におけるミラーパケットのデータ構造例を示す図である。
【図２０】第３の実施の形態におけるミラー出力制御処理の手順を示すフローチャートである。
【図２１】第３の実施の形態におけるミラー出力制御処理の手順を示すフローチャートである。
【図２２】第３の実施の形態におけるミラー出力制御処理の手順を示すフローチャートである。
【図２３】第４の実施の形態におけるスイッチの構成を示すブロック図である。
【図２４】第４の実施の形態におけるスイッチの動作を示す図である。
【図２５】第４の実施の形態におけるスイッチの動作を示す図である。
【符号の説明】
【０２１１】
１  通信装置
１ａ  入力制御手段
１ｂ  一次記憶手段
１ｃ  出力制御手段
１ｄ  ミラー出力制御手段
【図１】
2010011382.tif 000003
【図２】
2010011382.tif 000004
【図３】
2010011382.tif 000005
【図４】
2010011382.tif 000006
【図５】
2010011382.tif 000007
【図６】
2010011382.tif 000008
【図７】
2010011382.tif 000009
【図８】
2010011382.tif 000010
【図９】
2010011382.tif 000011
【図１０】
2010011382.tif 000012
【図１１】
2010011382.tif 000013
【図１２】
2010011382.tif 000014
【図１３】
2010011382.tif 000015
【図１４】
2010011382.tif 000016
【図１５】
2010011382.tif 000017
【図１６】
2010011382.tif 000018
【図１７】
2010011382.tif 000019
【図１８】
2010011382.tif 000020
【図１９】
2010011382.tif 000021
【図２０】
2010011382.tif 000022
【図２１】
2010011382.tif 000023
【図２２】
2010011382.tif 000024
【図２３】
2010011382.tif 000025
【図２４】
2010011382.tif 000026
【図２５】
2010011382.tif 000027