(57)【要約】【課題】受信パケットをパケットロスせずに全て書き込み保存でき、同時に保存したパケットを読み出しできること。【解決手段】受信したパケットを一時的に記憶するメモリ１０２と、メモリ１０２に記憶されたパケットを第１バス１０６ａ、第２バス１０６ｂ経由の転送により記憶する記憶装置１０４と、記憶装置１０４に記憶されたパケットを第２バス１０６ｂを経由して読み出すＣＰＵ１０１と、を有し、ＣＰＵ１０１は、第２バス１０６ｂの使用率を監視し、使用率が所定の閾値よりも小さい場合、記憶装置１０４からパケットの読み出しを行う。【選択図】図１
2016225765.tif 000002
【特許請求の範囲】
【請求項１】
受信したパケットを一時的に記憶する一時記憶装置と、
前記一時記憶装置に記憶された前記パケットをバス経由の転送により記憶する記憶装置と、
前記記憶装置に記憶された前記パケットを前記バスを経由して読み出す制御部と、を有し、
前記制御部は、前記バスの使用率を監視し、前記バスの使用率が所定の閾値よりも小さい場合、前記記憶装置から前記パケットの読み出しを行う、
ことを特徴とする通信装置。
【請求項２】
前記制御部は、前記バスの使用率が前記閾値よりも大きい場合、前記一時記憶装置に所定の閾値以上の空き領域がある期間、前記一時記憶装置から前記記憶装置への前記バスの転送レートを一時的に低下させ、前記記憶装置に記憶された前記パケットを前記バスを経由して読み出すことを特徴とする請求項１に記載の通信装置。
【請求項３】
前記制御部は、前記バスの使用率を前記一時記憶装置から前記パケットを複数回読み出したときのアドレスの差分に基づき算出することを特徴とする請求項１または２に記載の通信装置。
【請求項４】
前記パケットを所定の受信レートで受信する受信部を有し、
前記バスは、前記受信部と前記一時記憶装置との間を接続し、前記受信レートに対応した転送レートを有する第１バスと、
前記一時記憶装置と前記記憶装置との間を接続し、前記受信レートに対応した転送レートを有する第２バスと、を含み、
前記制御部は、前記受信部から前記一時記憶装置に前記第１バスを経由して前記パケットを転送し、かつ、前記一時記憶装置から読み出した前記パケットを前記記憶装置に前記第２バスを経由して書き込み処理し、
前記記憶装置への前記書き込み時の前記第２バスの使用率が所定の閾値よりも小さい期間は、前記第２バスを経由して前記記憶装置から所定の転送レートで前記パケットの読み出しを行う、
ことを特徴とする請求項１〜３のいずれか一つに記載の通信装置。
【請求項５】
前記記憶装置から前記第２バスを経由して前記パケットを読み出す期間中、前記記憶装置に転送する前記パケットは、前記一時記憶装置に溜め込まれることを特徴とする請求項４に記載の通信装置。
【請求項６】
前記制御部は、前記一時記憶装置の記憶領域の空き容量が低下した場合、前記記憶装置から前記第２バスを経由して前記パケットを読み出す転送レートを下げる、または停止させることを特徴とする請求項４または５に記載の通信装置。
【請求項７】
前記制御部は、前記第２バスを介して前記記憶装置に対する前記パケットの書き込みを複数のスレッド実行で行い、前記第２バスの使用率の低下分に対応するスレッド数で前記記憶装置から前記パケットの読み出しを行うことを特徴とする請求項４〜６のいずれか一つに記載の通信装置。
【請求項８】
前記制御部は、前記一時記憶装置に所定の閾値以上の空き領域がない場合において、前記バスの使用率が前記閾値よりも大きければ前記記憶装置に記憶された前記パケットの読み出しを実行しないことを特徴とする請求項１〜７のいずれか一つに記載の通信装置。
【請求項９】
前記制御部は、外部装置からの前記パケットの読み出し要求に対応して、前記記憶装置に記憶された前記パケットの読み出しの可否を応答することを特徴とする請求項１〜８のいずれか一つに記載の通信装置。
【請求項１０】
ネットワーク上の対象機器のミラーポートに接続され、前記対象機器が受信した前記パケットの複製を受信することを特徴とする請求項１〜８のいずれか一つに記載の通信装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、受信したデータを保存する通信装置に関する。
【背景技術】
【０００２】
ネットワークを流れるパケット（データ）を取得し、保存しておくことにより、保存しておいたパケットを後ほど用いて、通信品質等を解析することができる。例えば、通信装置は、ＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒd）により受信したパケットを大容量の記憶装置に保存することで、後ほど読み出して解析できる。
【０００３】
また、装置内におけるデータ転送時に特定の装置によるバス占有時にバス開放させ、他の装置に割り当てるバス制御を行う技術が開示されている（例えば、下記特許文献１，２参照。）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平１０−２１１８３号公報
【特許文献２】特開平２−１８１２５０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ネットワークの高速化に伴いＮＩＣは高速伝送が可能であり、現在、ＮＩＣは１０Ｇｂｐｓ×２の２０Ｇｂｐｓでパケットを受信できる。一方、現在のバス性能（帯域）は最大２０Ｇｂｐｓである。このため、ネットワーク上で流れるパケット数が多い状態でパケットロス（パケットの消失、損失）することなく全てキャプチャ（収集、保存）しようとした場合、通信装置内では、記憶装置への書き込み処理にバス性能を全て使うことになる。
【０００６】
したがって、パケットの書き込み処理中は、記憶装置に保存してあるパケットの読み出しを実施できない。また、バス制御により書き込みと同時に読み出しを行った場合、読み出しの帯域分だけ書き込みのバスの帯域が削減され、パケットロスが生じる。
【０００７】
一つの側面では、本発明は、受信パケットをパケットロスせずに全て書き込み保存でき、同時に保存したパケットを読み出しできることを目的とする。
【課題を解決するための手段】
【０００８】
一つの案では、通信装置は、受信したパケットを一時的に記憶する一時記憶装置と、前記一時記憶装置に記憶された前記パケットをバス経由の転送により記憶する記憶装置と、前記記憶装置に記憶された前記パケットを前記バスを経由して読み出す制御部と、を有し、前記制御部は、前記バスの使用率を監視し、前記バスの使用率が所定の閾値よりも小さい場合には、前記記憶装置から前記パケットの読み出しを行う、ことを要件とする。
【発明の効果】
【０００９】
一つの実施形態によれば、受信パケットをパケットロスせずに全て書き込み保存でき、同時に保存したパケットを読み出しできるという効果を奏する。
【図面の簡単な説明】
【００１０】
【図１】図１は、実施の形態にかかる通信装置のハードウェア構成例を示す図である。
【図２】図２は、実施の形態にかかる通信装置のＣＰＵの内部構成を示す機能ブロック図である。
【図３】図３は、実施の形態にかかる通信装置が実施する動作処理例を示すフローチャートである。
【図４】図４は、実施の形態にかかる通信装置の具体的構成例を示す図である。
【図５】図５は、実施の形態にかかる通信装置のメモリ残量監視テーブルの内容例を示す図表である。
【図６】図６は、実施の形態にかかる通信装置のバス使用率監視テーブルの内容例を示す図表である。
【図７】図７は、実施の形態にかかる通信装置のスレッド制御テーブルの内容例を示す図表である。
【図８】図８は、実施の形態にかかる通信装置のスレッド制御テーブルの設定変更状態を示す図表である。
【図９】図９は、実施の形態にかかる通信装置のバス使用率監視テーブルの内容変更例を示す図表である。
【図１０】図１０は、実施の形態にかかる通信装置のスレッド制御テーブルの設定変更例を示す図表である。（その１）
【図１１】図１１は、実施の形態にかかる通信装置のメモリ残量監視テーブルの状態変化を示す図表である。
【図１２】図１２は、実施の形態にかかる通信装置のスレッド制御テーブルの設定変更例を示す図表である。（その２）
【図１３】図１３は、実施の形態にかかる通信装置が実施する動作処理の他の例を示すフローチャートである。
【発明を実施するための形態】
【００１１】
図１は、実施の形態にかかる通信装置のハードウェア構成例を示す図である。実施の形態の通信装置（パケットキャプチャ装置）１００は、ネットワークの通信回線に接続されている対象機器（中継器、例えばルータ等）が受信した全てのパケットを取得し、装置内部に保存するパケットキャプチャ機能を有する。対象機器は、ミラーポートを介して受信したパケットを複製し、複製したパケットを通信装置１００に出力する。
【００１２】
通信装置１００は、制御部としてのＣＰＵ１０１と、一時記憶装置としてのメモリ１０２と、パケット受信部（ＮＩＣ）１０３と、受信したパケットを最終的に記憶保存する記憶装置１０４と、ＬＡＮＩ／Ｆ１０５と、これら各部を接続するバス１０６と、を含む。
【００１３】
ＣＰＵ１０１は、通信装置１００の全体の制御を司る。メモリ１０２は、例えば、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）およびフラッシュＲＯＭなどを有する。
【００１４】
具体的には、例えば、フラッシュＲＯＭやＲＯＭが各種プログラムを記憶し、ＲＡＭがＣＰＵ１０１のワークエリアとして使用される。メモリ１０２に記憶されるプログラムは、ＣＰＵ１０１にロードされることで、コーディングされている処理をＣＰＵ１０１に実行させる。
【００１５】
ＮＩＣ１０３は、通信回線上に設けた対象機器としての中継器１１０のミラーポート１１０ａに接続され、ネットワーク上の中継器１１０が受信したパケットを複製したパケットを受信する。ＮＩＣ１０３は、例えば、イーサネット（登録商標）の通信を行うネットワークカードを２枚用いて１０Ｇｂｐｓ×２＝２０Ｇｂｐｓの伝送速度を有する。
【００１６】
実施の形態では、例えば、ＮＩＣ１０３が受信した全てのパケットは、メモリ１０２のＲＡＭに一時的に記憶保持され、パケットは、メモリ１０２から記憶装置１０４に転送制御される。これにより、ＮＩＣ１０３が受信した全てのパケットは、キャプチャパケットファイル１０７として記憶装置１０４に記憶保存される。
【００１７】
以下の説明では、メモリ１０２として、記憶装置１０４に転送するまでの間パケットを一時的に記憶保持するＲＡＭの構成例を用いて説明する。
【００１８】
記憶装置１０４は、ＣＰＵ１０１の制御に従って記憶媒体に対するデータのリード／ライトを制御する。記憶媒体としては、ＨＤＤやＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）を用いることができ、例えば、１ＴＢｙｔｅの大容量のデータの記憶領域を有する。記憶装置１０４の内部バス１０４ａは、実測値２０Ｇｂｐｓの転送速度を有する。
【００１９】
ＬＡＮＩ／Ｆ１０５は、通信装置１００に外部接続されるコンソールＰＣ１２０との間の通信を行う。ＬＡＮＩ／Ｆ１０５は、例えばＣＰＵ１０１やメモリ１０２が搭載されたマザーボード（図示略）上にオンボード搭載して設けることができる。
【００２０】
バス１０６は、図１に示すように、第１バス１０６ａと、第２バス１０６ｂとを含む。第１バス１０６ａは、ＮＩＣ１０３が受信したパケットをメモリ１０２にＤＭＡ転送する。第２バス１０６ｂは、メモリ１０２に記憶されたパケットを記憶装置１０４に転送する。これら第１バス１０６ａと、第２バス１０６ｂは、それぞれ２０Ｇｂｐｓの転送速度を有し、ＮＩＣ１０３の受信レート（伝送速度）と同様の転送速度（転送レート）を有する。
【００２１】
コンソールＰＣ１２０は、ソフトウェアアプリケーションとしてＧＵＩ（Ｇｒａｐｈｉｃａｌ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）１２１を有する、ユーザは、ＧＵＩ１２１を用いて通信装置１００でパケットを収集（キャプチャ）させる操作、通信装置１００が収集したパケットを後ほど読み出す操作等を行う。このため、通信装置１００は、コンソールＰＣ１２０の操作に基づき、収集（キャプチャ）したパケットをコンソールＰＣ１２０に対して出力する。
【００２２】
ＧＵＩ１２１は、読み出したパケットを解析することで、対象機器１１０が受信したパケットそのものを解析することができる。例えば、ＧＵＩ１２１は、パケットの解析を表示する。これにより、コンソールＰＣ１２０上のＧＵＩ１２１の表示内容により、パケットを使って、ネットワーク側で流れている通信の通信品質を解析（分析）できる。
【００２３】
実施の形態の通信装置１００は、対象機器１１０が受信した全てのパケットを保持し、コンソールＰＣ１２０からの読み出し要求に応じて記憶装置１０３から読み出し、コンソールＰＣ１２０に出力する。すなわち、通信装置１００は、対象機器１１０が受信したパケットをパケットロスせずに全てのパケットを保持してコンソールＰＣ１２０に出力できる。
【００２４】
これにより、コンソールＰＣ１２０では、パケットキャプチャ時に起こるパケットロスに影響されることなく、ネットワーク側で流れている通信の通信品質（例えば、通信で発生するロスや遅延）を解析（分析）できるようになる。また、対象機器１１０でのエラー等の問題発生時等には、コンソールＰＣ１２０のＧＵＩ１２１の表示内容により、対象機器１１０が有する問題であるか、あるいはパケット（ネットワーク）側が有する問題であるかを切り分ける等の対策を施すこともできる。
【００２５】
実施の形態では、ＮＩＣ１０３は、中継器１１０と同様の伝送速度（２０Ｇｂｐｓ）を有し、中継器１１０が受信する全てのパケットを受信できる。また、ＮＩＣ１０３と、メモリ１０２との間の第１バス１０６ａの転送速度（２０Ｇｂｐｓ）は、ＮＩＣ１０３の伝送速度と同様である。これにより、ＮＩＣ１０３が受信した全てのパケットを受信できる。また、メモリ１０２と記憶装置１０４との間の第２バス１０６ｂ、および記憶装置１０４の内部バス１０４ａの転送速度も２０Ｇｂｐｓであるため、メモリ１０２から転送された全てのパケットを記憶装置１０４の記憶媒体に書き込むことができる。
【００２６】
このように、実施の形態の通信装置１００は、中継器１１０がフルワイヤ（２０Ｇｂｐｓ）で受信した全てのパケットをパケットロスすることなく、記憶装置１０４に書き込むことができ、記憶保持することができる。この際、バス１０６（第１バス１０６ａ，第２バス１０６ｂ）は１００％のバス使用率となる。
【００２７】
また、実施の形態の通信装置１００は、バス１０６のバス帯域を監視し、バス１０６の使用率（帯域状況の空き）に基づいて、パケット読み出し処理を実行する制御を行う。
さらに、フルワイヤ（２０Ｇｂｐｓ）で受信中、すなわち、バス１０６のバス使用率が１００％でデータ書き込み状態が続く場合においても、バス帯域（書き込みと読み出し）を制御する。これにより、パケットロスを生じることなく、書き込み処理と同時に読み出し処理が実行できる構成とする。
【００２８】
図２は、実施の形態にかかる通信装置のＣＰＵの内部構成を示す機能ブロック図である。ＣＰＵ１０１は、ＧＵＩ用処理部２０１、ＤＭＡ設定管理部２０２、記憶装置書き込み部２０３、記憶装置読み出し部２０４を有する。また、読み出しメインルーチン部２０５、メモリ残量監視部２０６、記憶装置内部バス使用率制御部２０７、記憶装置書き込みスレッド制御部２０８、記憶装置内部バス使用率監視部２０９を含む。
【００２９】
このほか、ＣＰＵ１０１は、メモリ書き込みアドレス（保持部）２１０、メモリ読み出しアドレス（保持部）２１１、メモリ残量監視テーブル２１２、記憶装置書き込みスレッド制御テーブル２１３、バス使用率監視テーブル２１４を含む。
【００３０】
ＧＵＩ用処理部２０１は、コンソールＰＣ１２０による操作指示、例えば、パケットの書き込み（保持）、読み出し等の操作指示を解析する。例えば、コンソールＰＣ１２０から読み出し要求を受けると、記憶装置１０４に記憶保持したパケット（キャプチャパケットファイル１０７）の読み出しに関する制御を開始する。ＧＵＩ用処理部２０１は、記憶装置１０４から読み出したパケットをコンソールＰＣ１２０に出力する。
【００３１】
ＤＭＡ設定管理部２０２は、ＮＩＣ１０３とメモリ（ＲＡＭ）１０２との間の第１バス１０６ａに対するＤＭＡ設定（アドレスセット等）を行う。
【００３２】
記憶装置書き込み部２０３は、メモリ１０２に一時的に記憶されたパケットを記憶装置１０４に書き込む制御を行う。記憶装置読み出し部２０４は、記憶装置１０４に記憶保持されたパケット（キャプチャパケットファイル１０７）を読み出す制御を行う。
【００３３】
読み出しメインルーチン部２０５は、ＧＵＩ用処理部２０１からの読み出し要求に基づき、記憶装置１０４に記憶保持されたパケット（キャプチャパケットファイル１０７）を読み出すための各機能部に対するシーケンス処理を行う。そして、読み出しメインルーチン部２０５は、記憶装置１０４から読み出したパケット（キャプチャパケットファイル１０７）をＧＵＩ処理部２０１を介してコンソールＰＣ１２０に出力する。
【００３４】
メモリ残量監視部２０６は、メモリ１０２の残量を監視する。メモリ１０２の残量は、メモリ書き込みアドレス（保持部）２１０と、メモリ読み出しアドレス（保持部）２１１との差分に基づき算出する。具体的には、メモリ残量監視部２０６は、ＮＩＣ１０３がＤＭＡでメモリ１０２に書き込む際のメモリ書き込みアドレス２１０と、記憶装置書き込み部（スレッド）２０３がメモリ１０２から読み出す際のメモリ読み出しアドレス２１１とに基づき残量を求める。
【００３５】
記憶装置内部バス使用率制御部２０７は、記憶装置１０４の内部バス１０４ａの使用率を制御する。この記憶装置内部バス使用率制御部２０７は、記憶装置１０４からのパケットの読み出し時に必要なバス帯域の空きを作るため、記憶装置書き込みスレッド制御部２０８に対し、スレッド停止制御、再開始制御等の指示を出す。
【００３６】
記憶装置書き込みスレッド制御部２０８は、記憶装置書き込み部２０３のスレッド制御を行う。記憶装置書き込みスレッド制御部２０８は、記憶装置内部バス使用率制御部２０７の指示に従い、該当スレッドの一時停止処理や、再開始等の制御を行う。
【００３７】
記憶装置内部バス使用率監視部２０９は、記憶装置１０４の内部バス１０４ａの使用率を監視する。直接、記憶装置１０４の内部バス１０４ａの使用率を監視するのは技術的に困難である。このため、記憶装置内部バス使用率監視部２０９は、記憶装置書き込み部２０３がメモリ１０２からパケットを複数読み出した際の読み出し速度（転送速度、ｂｐｓ）の差分に基づき記憶装置１０４の内部バス１０４ａの使用率を推定する（詳細は後述する）。
【００３８】
メモリ残量監視テーブル２１２は、メモリ残量監視部２０６がメモリ残量監視のために用いるテーブルであり、上述したメモリ１０２のＤＭＡ書き込みアドレス、読み出し（済）アドレス、および書き込みアドレスと読み出しアドレスとの差分に基づき算出されたメモリ使用量、メモリ空き残量等を格納する。
【００３９】
記憶装置書き込みスレッド制御テーブル２１３は、記憶装置書き込み部２０３および記憶装置読み出し部２０４がそれぞれのスレッド制御を行う際に参照するテーブルである。バス使用率監視テーブル２１４は、記憶装置内部バス使用率監視部２０９が推定した記憶装置１０４の内部バス１０４ａの使用率を格納するテーブルである。
【００４０】
図３は、実施の形態にかかる通信装置が実施する動作処理例を示すフローチャートである。主に、通信装置１００のＣＰＵ１０１が実行する処理内容について説明する。通信装置１００は、上述したパケットキャプチャにより対象機器１１０が受信したパケット全てを受信し、パケットロスすることなく記憶装置１０４に保存する。そして、以下に説明する処理により、通信装置１００は、受信した全てのパケットをパケットロスすることなく収集しつつ、同時に読み出し（コンソールＰＣ１２０へのパケット出力）を可能としている。
【００４１】
コンソールＰＣ１２０のＧＵＩ１２１が通信装置１００に対してパケットの読み出し要求を発行する（ステップＳ３０１）。これにより、通信装置１００は、以下の処理を実行する。
【００４２】
はじめに、ＧＵＩ処理部２０１によりコンソールＰＣ１２０からのパケットの読み出し要求を解析する（ステップＳ３０２）。この解析により、ＧＵＩ処理部２０１は、読み出しメインルーチン部２０５に対し、パケット読み出しの処理開始を指示する。
【００４３】
次に、読み出しメインルーチン部２０５は、メモリ残量監視部２０６が監視するメモリ残量により、メモリ残量があるかを確認する（ステップＳ３０３）。
【００４４】
そして、読み出しメインルーチン部２０５は、メモリ残量監視部２０６が監視しているメモリ残量に余裕がある場合には（ステップＳ３０３：Ｙｅｓ）、ステップＳ３０４に移行する。一方、メモリ残量に余裕がない場合には（ステップＳ３０３：Ｎｏ）、読み出しメインルーチン部２０５は、今回のパケット読み出しの要求に対応した読み出し処理を実行せず、読み出し不可の旨を、ＧＵＩ用処理部２０１を介してコンソールＰＣ１２０に通知し（ステップＳ３１１）、処理を終了する。
【００４５】
ステップＳ３０４では、読み出しメインルーチン部２０５は、記憶装置内部バス使用率制御部２０７に対し、記憶装置１０４の書き込み処理負荷（第２バス１０６ｂの書き込み負荷）を下げる制御を行う（ステップＳ３０４）。具体的には、記憶装置内部バス使用率制御部２０７は、記憶装置書き込みスレッド制御部２０８に対し、記憶装置書き込み部２０３が行う書き込みに使用する全１０スレッドのうち、一部のスレッド（例えば１スレッド）を停止させる。これにより、第２バス１０６ｂは、記憶装置１０４からのパケットの読み出し時に必要なバス帯域の空きを１スレッド分使用可能となる。
【００４６】
ステップＳ３０４の実行により、メモリ１０２から記憶装置１０４に対するパケットの転送は、１スレッド分削減され、この１スレッド分のパケットは、メモリ１０２の空き領域に溜め込まれる（バッファリングされる）ことになる。例えば、１０スレッドで２０Ｇｂｐｓの帯域を使用する場合、１スレッドあたり２Ｇｂｐｓの帯域を使用するため、メモリ１０２から記憶装置１０４に対する書き込みは、９スレッドを使用して１８Ｇｂｐｓの転送速度に低下する。対応して、記憶装置内部バス使用率監視部２０９は、記憶装置１０４の内部バス１０４ａのバス使用率の低下を検出する（ステップＳ３０５）。
【００４７】
次に、読み出しメインルーチン部２０５は、記憶装置読み出し部２０４に対し、記憶装置１０４に記憶保持されたパケットの読み出しアクセスを実行させる（ステップＳ３０６）。この際、記憶装置読み出し部２０４は、１スレッドあたり２Ｇｂｐｓの転送速度を有して、パケットを読み出す。
【００４８】
次に、読み出しメインルーチン部２０５は、メモリ残量監視部２０６にメモリ残量の継続監視を行わせる（ステップＳ３０７）。上記のように、記憶装置１０４に対する書き込みを１スレッド分削減させた分、メモリ１０２に溜め込まれるパケットが増えることになるため、メモリ残量不足によるパケットロスが生じないよう、メモリ残量監視部２０６にメモリ残量の継続監視を行わせる。
【００４９】
そして、読み出しメインルーチン部２０５は、メモリ残量監視部２０６によりメモリ残量が低下していない場合（ステップＳ３０８：Ｎｏ）には、ステップＳ３０７に戻りメモリ残量を継続監視する。
【００５０】
一方、読み出しメインルーチン部２０５は、メモリ残量監視部２０６によりメモリ残量が低下した場合（ステップＳ３０８：Ｙｅｓ）、記憶装置内部バス使用率制御部２０７に対し、記憶装置１０４の書き込み処理負荷（第２バス１０６ｂの書き込み負荷）を戻す制御を行う（ステップＳ３０９）。
【００５１】
具体的には、記憶装置内部バス使用率制御部２０７は、記憶装置書き込みスレッド制御部２０８に対し、記憶装置書き込み部２０３が行う書き込みに使用している９個のスレッドを１０個のスレッド数に戻す（停止されていた書き込み用の１スレッドの再開）。これにより、第２バス１０６ｂは、記憶装置１０４に対するパケットの書き込みをバス帯域全て（１０スレッド、２０Ｇｂｐｓ）を使用する当初の状態に戻る。
【００５２】
そして、ステップＳ３０６により記憶装置１０４から読み出されたパケットは、ＧＵＩ用処理部２０１を介してコンソールＰＣ１２０のＧＵＩ１２１に出力され、ＧＵＩ上で解析用に画面表示される（ステップＳ３１０）。以上により、コンソールＰＣ１２０からの１度のパケット読み出し要求に対する処理が終了する。
【００５３】
なお、ステップＳ３０３の判断（ステップＳ３０３：Ｎｏ）により、今回の読み出し要求が処理実行されなかった場合、読み出しメインルーチン部２０５は、以後の読み出し可能な時期にパケット読み出しを自動実行することもできる。すなわち、対象機器１１０がパケットを受信しない時期が不定期に生じ、このパケットを受信しない期間は、フルワイヤ（２０Ｇｂｐｓ）での受信から開放され、対応してバス１０６の使用率が低下する。これにより、読み出しメインルーチン部２０５は、記憶装置１０４からのパケット読み出しを自動的にあるいはコンソールＰＣ１２０への問い合わせ後に実行し、コンソールＰＣ１２０にパケットを出力することができる。
【００５４】
（通信装置の具体的構成例）
次に、上述した通信装置１００の各部の具体的構成例を説明する。図４は、実施の形態にかかる通信装置の具体的構成例を示す図である。図４には、図１，図２に記載した主要な構成を抽出して記載してある。
【００５５】
対象機器１１０は、１０Ｇネットワークに接続された中継器であり、ポートに接続されたＰＣ等の外部機器とネットワークとの間でパケットを送受信する。対象機器１１０は、ミラーポート１１０ａを介して受信したパケットを複製したパケットを通信装置１００に２０Ｇｂｐｓの伝送速度で出力する。
【００５６】
通信装置１００は、対象機器１１０が受信するパケット全てを装置内部に記憶保持し、２０Ｇｂｐｓの伝送速度のパケットを定常的に収集（キャプチャ）する。このため、通信装置１００は、パケットを受信するＮＩＣ１０３を１０Ｇｂｐｓの伝送特性を有するＩＦカードを２枚用い、対象機器１１０の２つのミラーポート１１０ａとの間にそれぞれ接続して２０Ｇｂｐｓの伝送速度を得る。
【００５７】
また、装置内部のバス１０６である第１バス１０６ａと、第２バス１０６ｂ、さらには、記憶装置１０４の内部バス１０４ａの実効転送速度はいずれも２０Ｇｂｐｓの特性を有するものを用いる。
【００５８】
また、各部の設定値や特性は下記の値を有する。
メモリ（ＲＡＭ）１０２の物理メモリ容量：５１２ＧＢｙｔｅ
メモリ１０２上で受信したパケットを一時記憶する領域の容量（パケット領域１０２ａ）：４８０ＧＢｙｔｅ
記憶装置１０４全体の記憶容量：１ＴＢｙｔｅ
記憶装置１０４へのパケットの書き込み（メモリ１０２読み出し）スレッド数：１０
（１スレッドあたり転送速度２Ｇｂｐｓ）
記憶装置１０４からのパケットの読み出しスレッド数：１
なお、ＣＰＵ１０１は、全て異なるコアで動作し、スレッドは割り当てコアを独占して動作するものとする。
【００５９】
以下、受信パケットの収集（キャプチャ）について、通信装置１００の各部の動作を具体的に順次説明する。通信装置１００は、２０Ｇｂｐｓの伝送速度でパケットを受信する際の処理ルートは、まず、ＮＩＣ１０３でパケットを受信し、ＮＩＣ１０３は、メモリ１０２へパケットをＤＭＡ転送する。
【００６０】
記憶装置書き込み部２０３は、スレッド数１０でメモリ１０２からパケットを読み出し、記憶装置１０４へパケットを書き込む。この一連の処理を第１バス１０６ａおよび第２バス１０６ｂが有する最大の転送速度２０Ｇｂｐｓで転送処理する。このときの各テーブルの値を以下に示す。
【００６１】
図５は、実施の形態にかかる通信装置のメモリ残量監視テーブルの内容例を示す図表である。メモリ残量監視部２０６は、一定時間（例えば１ｍｓｅｃ毎）にメモリ残量監視テーブル２１２に、メモリ１０２上のパケット領域１０２ａに対するメモリ書き込みアドレス２１０と、メモリ読み出しアドレス２１１を格納する。そして、メモリ残量監視部２０６は、これらメモリ書き込みアドレス２１０とメモリ読み出しアドレス２１１との差分に基づくパケット領域１０２ａのメモリ使用量と、メモリ空き残量とを算出し、それぞれメモリ残量監視テーブル２１２に格納する。
【００６２】
図６は、実施の形態にかかる通信装置のバス使用率監視テーブルの内容例を示す図表である。記憶装置内部バス使用率監視部２０９は、一定時間（例えば、上記１ｍｓｅｃ毎）に記憶装置１０４の内部バス１０４ａの使用率を監視し、バス使用率監視テーブル２１４にこの使用率を格納する。
【００６３】
記憶装置１０４の内部バス１０４ａの使用率は、下記により推定する。記憶装置書き込み部２０３は、メモリ１０２（パケット領域１０２ａ）からパケットを読み出し、記憶装置１０４へ書き込みを行う。このため、記憶装置内部バス使用率監視部２０９は、定期的にメモリ読み出しアドレス２１１を取得することで、前回読み出した際のメモリ読み出しアドレス２１１と、今回読み出した際のメモリ読み出しアドレス２１１との差分に基づき、読み出しレートを算出する。そして、記憶装置１０４へ書き込む際の、記憶装置１０４の内部バス１０４ａの使用帯域（使用率）と、空き帯域とをそれぞれ推定し、バス使用率監視テーブル２１４に格納する。
【００６４】
記憶装置内部バス使用率監視部２０９は、図６に示すバス使用帯域の推定値、および空き帯域の推定値を、例えば、以下の式により算出する。
メモリ読み出しサイズ［ｂｉｔ］＝（時刻Ｂメモリ読み出しアドレス−時刻Ａメモリ読み出しアドレス）×８
取得間隔［ｓ］＝時刻Ｂ−時刻Ａ
推定バス使用帯域［ｂｐｓ］＝メモリ読み出しサイズ［ｂｉｔ］／採取間隔［ｓ］
推定バス空き帯域［ｂｐｓ］＝（バス使用最大値：２０Ｇｂｐｓ）−推定バス使用帯域［ｂｐｓ］
【００６５】
記憶装置１０４の内部バス１０４ａの使用率は直接検出できないが、上記のように、定期的にメモリ読み出しアドレス２１１を取得することで、前回分と今回分の読み出しアドレスの差分に基づき、読み出しレートを算出して、使用率を推定できる。図６の例では、推定した内部バス１０４ａの使用帯域が２０Ｇｂｐｓであり、空き帯域がない状態を示している。
【００６６】
図７は、実施の形態にかかる通信装置のスレッド制御テーブルの内容例を示す図表である。記憶装置書き込みスレッド制御部２０８は、記憶装置１０４に対するパケットの読み書きの状態を記憶装置書き込みスレッド制御テーブル２１３に保持する。
【００６７】
図７に示すように、記憶装置書き込みスレッド制御テーブル２１３には、記憶装置１０４に対する書き込み（メモリ１０２からの読み出し）を実行するスレッド毎（０〜９の１０スレッド）の動作状態が格納される。値が「１」のときスレッドが動作中であり、図７に示す例では、０〜９の１０スレッド全てが書き込み中であり値が「１」である。書き込み停止したスレッドは値が「０」に変わる。図７の例では、読み出しスレッドはなく唯一のスレッド（０スレッド）の値は「０」であり、読み出し停止中を示す。
【００６８】
次に、図４〜図７を用いた具体的処理例を説明する。上記図３の各処理に沿って各部の動作状態を説明する。
［０］パケット読み出し要求
まず、コンソールＰＣ１２０のＧＵＩ１２１が「パケット読み出し要求」を通信装置１００に発行する（ステップＳ３０１）。通信装置１００のＧＵＩ用処理部２０１は、受信した「パケット読み出し要求」を解析して（ステップＳ３０２）、読み出しメインルーチン部２０５へ読み出し要求を出力する。
［１］メモリ残量確認
読み出しメインルーチン部２０５は、メモリ残量監視部２０６に問い合わせて、メモリ残量を確認する（ステップＳ３０３）。メモリ残量監視部２０６は、定期的（１ｍｓ間隔）にメモリ１０２（パケット領域１０２ａ）へのメモリ書き込みアドレス（ＤＭＡ書き込みアドレス）２１０と、メモリ１０２（パケット領域１０２ａ）からのメモリ読み出しアドレス２１１を取得する。そして、メモリ残量監視部２０６は、記憶装置書き込み部２０３のメモリ読み出しアドレス２１１を取得し、メモリ残量を算出し、メモリ残量監視テーブル２１２へ結果を保存する（図５参照）。
【００６９】
例えば、メモリ残量監視部２０６は、メモリ１０２（４８０ＧＢｙｔｅのパケット領域１０２ａ）の残量が４００ＧＢｙｔｅ以上であることを確認する（ステップＳ３０３：Ｙｅｓ）。一方、メモリ１０２（パケット領域１０２ａ）の残量が４００ＧＢｙｔｅ未満の場合には（ステップＳ３０３：Ｎｏ）、メモリ残量不足のため、今回要求された読み出し処理は実行しないことをコンソールＰＣ１２０に通知する（ステップＳ３１１）。
【００７０】
［２］バス使用率低下施策
次に、読み出しメインルーチン部２０５は、記憶装置１０４からのパケットの読み出し処理を行うために、記憶装置内部バス使用率制御部２０７に依頼し、第２バス１０６ｂおよび内部バス１０４ａのバス使用率低下施策を行う。この処理は、記憶装置１０４に対する書き込み処理負荷を下げる処理に相当する（ステップＳ３０４）。具体的には、記憶装置内部バス使用率制御部２０７は、記憶装置書き込みスレッド制御テーブル２１３の一つの書き込みスレッドを書き込み停止の状態「０」にセットする。
【００７１】
図８は、実施の形態にかかる通信装置のスレッド制御テーブルの設定変更状態を示す図表である。記憶装置書き込みスレッド制御部２０８は、記憶装置書き込みスレッド制御テーブル２１３の設定変更に従い、記憶装置書き込み部２０３に対し、１スレッド（２Ｇｂｐｓ相当）の停止処理を行う。
【００７２】
図７では、記憶装置書き込みスレッドのスレッド９が動作中の値「１」であったのに対し、図８では、停止中の値「０」に変更されている。この制御により、第２バス１０６ｂ、および記憶装置１０４の内部バス１０４ａのバス使用帯域（使用率）が２０Ｇｂｐｓ（１００％）から１８Ｇｂｐｓ（９０％）へ低下することになる。
【００７３】
［３］バス使用帯域低下確認
次に、読み出しメインルーチン部２０５は、記憶装置内部バス使用率監視部２０９に問い合わせて、記憶装置１０４の内部バス１０４ａのバス使用帯域を確認する（ステップＳ３０５）。具体的には、記憶装置内部バス使用率監視部２０９は、バス使用率監視テーブル２１４を参照し、２Ｇｂｐｓ以上の空きが発生していることを確認する。
【００７４】
図９は、実施の形態にかかる通信装置のバス使用率監視テーブルの内容変更例を示す図表である。図９に示すように、記憶装置１０４への書き込みが１スレッド分停止することにより、時期ｔ３になると、２Ｇｂｐｓ以上の空きが生じることが確認できたとする。
【００７５】
［４］読み出しアクセス実行
次に、読み出しメインルーチン部２０５は、記憶装置書き込みスレッド制御テーブル２１３の一つの読み出しスレッドを読み出し動作状態「１」にセットし、パケット読み出し処理を実行する（ステップＳ３０６）。
【００７６】
図１０は、実施の形態にかかる通信装置のスレッド制御テーブルの設定変更例を示す図表である。図８では、記憶装置読み出しスレッドのスレッド０が停止中の値「０」であったのに対し、図１０では、読み出し動作中の値「１」に変更されている。この制御により、記憶装置読み出し部２０４は、記憶装置１０４から１スレッド（２Ｇｂｐｓ）の読み出し帯域を有してパケットの読み出しを開始する。
【００７７】
［５］読み出しパケット転送
次に、読み出しメインルーチン部２０５はＧＵＩ用処理部２０１へ記憶装置読み出し部２０４が記憶装置１０４から読み出したパケットを出力する（ステップＳ３１０）。ＧＵＩ用処理部２０１は、コンソールＰＣ１２０に転送する。最終的に、コンソールＰＣ１２０の画面上に、読み出しパケットが表示される。
【００７８】
［６］メモリ残量確認
ところで、上記［４］読み出しアクセス実行中において、読み出しメインルーチン部２０５は、メモリ残量監視部２０６に問い合わせて、メモリ残量を定期的（１ｍｓ間隔）に確認する（ステップＳ３０７）。
【００７９】
図１１は、実施の形態にかかる通信装置のメモリ残量監視テーブルの状態変化を示す図表である。記憶装置１０４から１スレッドを用いた読み出しにより、記憶装置１０４に対する書き込みが１スレッド分削減する。これにより、記憶装置１０４に書き込む１スレッド分のパケットがメモリ１０２に溜め込まれることになり、図１１に示すように、メモリ空き残量は徐々に減っていく。このため、メモリ残量監視部２０６によってメモリ残量の継続監視を行い、メモリ１０２のメモリ残量不足によるパケットロスを防ぐ。
【００８０】
［７］読み出し終了（全スレッドでの記憶装置書き込み（メモリ読み出し）再開）
上記［６］メモリ残量確認の処理にて、メモリ残量が所定の値（例えば、１００ＧＢ以下）となった場合（図１１の時期ｔ５）、記憶装置１０４からのパケット読み出しの停止処理を行う（ステップＳ３０８：Ｙｅｓ）。
【００８１】
図１２は、実施の形態にかかる通信装置のスレッド制御テーブルの設定変更例を示す図表である。読み出しメインルーチン部２０５は、記憶装置１０４からのパケット読み出しの停止のために、記憶装置書き込みスレッド制御テーブル２１３を設定変更する。具体的には、図１２に示すように、記憶装置読み出しのスレッド（スレッド０）を読み出し停止の値「０」に変更し、記憶装置書き込みのスレッド（スレッド９）を書き込み動作の値「１」に変更する。
【００８２】
これにより、記憶装置読み出し部２０４は、記憶装置１０４からのパケット読み出し処理を停止する。また、記憶装置書き込み部２０３は、全スレッド（１０スレッド）による記憶装置１０４へのパケットの書き込み（メモリ１０２からの読み出し）処理を再開（通常状態へ戻るリスタートに相当）する（ステップＳ３０９）。
【００８３】
以上の説明では、通信装置１００が継続的にフルワイヤ（２０Ｇｂｐｓ）でパケットを受信した場合に、記憶装置１０４に対するパケットの書き込みと並行して（同時に）パケットの読み出しを行う処理について説明した。
【００８４】
通信装置１００（対象機器である中継器１１０）は、実動作においてネットワークからの受信レートは揺らぎ、常にフルワイヤでの受信ではなく一時的にパケットを受信しない期間があり、受信レートは２０Ｇｂｐｓより下がる期間が生じる。この場合、通信装置１００は、受信レートの低下に伴いメモリ１０２の残量も下がる。このような場合、以下のように、記憶装置１０４からの読み出しが可能となる。
【００８５】
具体的には、メモリ残量確認でメモリ１０２に所定の残量（上記残量４００ＧＢ以上）が確認できれば、書き込みスレッドを一部停止させて、パケット書き込みレートが低下し、メモリ１０２へのパケット溜め込みを行う。この際、受信レートの低下に対応した数分のスレッド数を用いて記憶装置１０４への書き込みを行う。例えば、受信レートが１８Ｇｂｐｓであれば第２バス１０６ｂを用いた記憶装置１０４に対する書き込みスレッド数は９にでき、読み出しスレッド数として１確保でき、読み出しスレッドを起動させ、読み出し要求に従い、パケット読み出しを行い、読み出したパケットをコンソールＰＣ１２０に出力できる。
【００８６】
例えば、コンソールＰＣ１２０の総合的なＧＵＩ１２１の動作としては、パケットの読み出し要求を通信装置１００に出力した時点では、一時的にキャプチャ済パケットが表示されないが、時間経過すると表示されることになる。但し、通信装置１００は、対象機器１１０が受信する全てのパケットをパケットロスすることなく収集して装置内部に保持しておくことができるため、後ほど収集したパケットの読み出しを行える。
【００８７】
（バス調停と実施の形態との対比）
上述した実施の形態では、特にバス調停について説明を行わなかったが、図２に記載した記憶装置書き込みスレッド制御部２０８が汎用のバス調停部に相当する動作を行う。ここで汎用のバス調停と実施の形態との対比を説明する。
【００８８】
ネットワークからのトラフィック（パケット）を２０Ｇｂｐｓで受信し、書き込みスレッドからの書き込み要求に従い、記憶装置１０４への書き込みを２０Ｇｂｐｓ（バス使用率１００％）、メモリ１０２のメモリ残量が０の状態を想定する。ここで、従来の構成においても、ＮＩＣ１０３が受信したパケットをメモリ１０２で一時記憶し、メモリ１０２からパケットを記憶装置１０４に転送する構成であるとする。
【００８９】
汎用のバス調停による制御では、コンソールＰＣ１２０からパケットの読み出しスレッドで記憶装置１０４からの読み出し要求を発行し、バス調停を行うことで、パケット読み出しを行うことができる。但し、パケット読み出しを行っている期間、書き込みレートが低下するため、メモリ１０２でパケット溢れが生じて、パケットロスする問題が生じる。
【００９０】
なお、通信装置が、ＮＩＣ１０３とメモリ１０２と記憶装置１０４が同一（単一）のバスでバス接続された構成とした場合には、バス調停を行うこと自体で、フルワイヤで受信したＮＩＣ１０３からメモリ１０２への転送箇所でパケットロスが生じることになる。
【００９１】
この点、実施の形態では、ＮＩＣ１０３が受信したパケットは第１バス１０６ａにより、常にフルワイヤ（２０Ｇｂｐｓ）でメモリ１０２に一時記憶され、パケットロスを生じることがない。また、メモリ１０２と記憶装置１０４との間は、異なる第２バス１０６ｂにより接続されている。第２バス１０６ｂもフルワイヤに対応してパケットを転送できる。加えて、上述したように、メモリ１０２に残量があれば、一時的に第２バス１０６ｂ（および内部バス１０４ａ）の転送レートを低下（スレッド数削減）させることで、この低下分を用いて読み出しを行う。
【００９２】
図１３は、実施の形態にかかる通信装置が実施する動作処理の他の例を示すフローチャートである。まず、コンソールＰＣ１２０のＧＵＩ１２１が通信装置１００に対してパケットの読み出し要求を発行する（ステップＳ１３０１）。これにより、通信装置１００は、以下の処理を実行する。
【００９３】
はじめに、ＧＵＩ用処理部２０１によりコンソールＰＣ１２０からのパケットの読み出し要求を解析する（ステップＳ１３０２）。ＧＵＩ用処理部２０１は、コンソールＰＣ１２０からの要求を解析して、読み出しメインルーチン部２０５に対し、パケット読み出しの処理開始を指示する。
【００９４】
次に、読み出しメインルーチン部２０５がメモリ残量監視部２０６が監視するメモリ残量により、メモリ残量があるかを確認する（ステップＳ１３０３）。
【００９５】
そして、読み出しメインルーチン部２０５は、メモリ残量監視部２０６が監視しているメモリ残量に余裕がある場合には（ステップＳ１３０３：Ｙｅｓ）、ステップＳ１３０４に移行する。一方、メモリ残量に余裕がない場合には（ステップＳ１３０３：Ｎｏ）、ステップＳ１３１１に移行する。
【００９６】
ステップＳ１３０４では、読み出しメインルーチン部２０５は、記憶装置内部バス使用率制御部２０７に対し、記憶装置１０４の書き込み処理負荷（第２バス１０６ｂの書き込み負荷）を下げる制御を行う（ステップＳ１３０４）。具体的には、記憶装置内部バス使用率制御部２０７は、記憶装置書き込みスレッド制御部２０８に対し、記憶装置書き込み部２０３が行う書き込みに使用する全１０スレッドのうち、一部のスレッド（例えば１スレッド）を停止させる。これにより、第２バス１０６ｂは、記憶装置１０４からのパケットの読み出し時に必要なバス帯域の空き（例えば１スレッド分）が使用可能となる。
【００９７】
ステップＳ１３０４の実行により、メモリ１０２から記憶装置１０４に対するパケットの転送は、１スレッド分削減され、この１スレッド分のパケットは、メモリ１０２の空き領域に溜め込まれることになる（バッファリング）。例えば、１０スレッドで２０Ｇｂｐｓの帯域を使用する場合、１スレッドあたり２Ｇｂｐｓの帯域を使用するため、メモリ１０２から記憶装置１０４に対する書き込みは、９スレッドを使用して１８Ｇｂｐｓの転送速度に低下する。対応して、記憶装置内部バス使用率監視部２０９は、記憶装置１０４の内部バス１０４ａのバス使用率の低下を検出する（ステップＳ１３０５）。
【００９８】
次に、読み出しメインルーチン部２０５は、記憶装置読み出し部２０４に対し、記憶装置１０４に記憶保持されたパケットの読み出しアクセスを実行させる（ステップＳ１３０６）。この際、記憶装置読み出し部２０４は、１スレッドあたり２Ｇｂｐｓの転送速度を有して、パケットを読み出す。
【００９９】
次に、読み出しメインルーチン部２０５は、メモリ残量監視部２０６にメモリ残量の継続監視を行わせる（ステップＳ１３０７）。上記のように、記憶装置１０４に対する書き込みを１スレッド分削減させた分、メモリ１０２に溜め込まれるパケットが増えることになるため、メモリ残量不足によるパケットロスが生じないよう、メモリ残量監視部２０６にメモリ残量の継続監視を行わせる。
【０１００】
そして、読み出しメインルーチン部２０５は、メモリ残量監視部２０６によりメモリ残量が低下していない場合（ステップＳ１３０８：Ｎｏ）には、ステップＳ１３０７に戻りメモリ残量を継続監視する。
【０１０１】
一方、読み出しメインルーチン部２０５は、メモリ残量監視部２０６によりメモリ残量が低下した場合（ステップＳ１３０８：Ｙｅｓ）、記憶装置内部バス使用率制御部２０７に対し、記憶装置１０４の書き込み処理負荷（第２バス１０６ｂの書き込み負荷）を戻す制御を行う（ステップＳ１３０９）。
【０１０２】
具体的には、記憶装置内部バス使用率制御部２０７は、記憶装置書き込みスレッド制御部２０８に対し、記憶装置書き込み部２０３が行う書き込みに使用している９個のスレッドを１０個のスレッドに戻す（停止されていた書き込み用の１スレッドの再開）。これにより、第２バス１０６ｂは、記憶装置１０４に対するパケットの書き込みをバス帯域全て（１０スレッド、２０Ｇｂｐｓ）を使用する当初の状態に戻る。これにより、メモリ１０２がオーバフローすることなく再度空きを設けることができる。また、以後、ＮＩＣ１０３が受信するパケットがない（受信パケット間に間隔が生じる）状態により、メモリ１０２の空き容量を増やすことができる。
【０１０３】
そして、ステップＳ１３０６により記憶装置１０４から読み出されたパケットは、ＧＵＩ用処理部２０１を介してコンソールＰＣ１２０のＧＵＩ１２１に出力され、ＧＵＩ上で解析用に画面表示される（ステップＳ１３１０）。以上により、コンソールＰＣ１２０からの１度のパケット読み出し要求に対する処理が終了する。
【０１０４】
また、ステップＳ１３０３において、読み出しメインルーチン部２０５は、メモリ残量監視部２０６が監視しているメモリ残量に余裕がない場合には（ステップＳ１３０３：Ｎｏ）、ステップＳ１３１１に移行する。ステップＳ１３１１では、記憶装置内部バス使用率制御部２０７による記憶装置１０４の内部バス１０４ａのバス使用率が高いか否かを判断する（ステップＳ１３１１）。例えば、バス使用率を１８Ｇｂｐｓを閾値として判断する。
【０１０５】
内部バス１０４ａのバス使用率が低い場合には（バス使用率１８Ｇｂｐｓ未満、ステップＳ１３１１：Ｎｏ）、読み出しメインルーチン部２０５は、バス使用率の空きがあるため、記憶装置１０４からの読み出しを実行し（ステップＳ１３１２）、処理を終了する。一方、記憶装置１０４の内部バス１０４ａのバス使用率が高い場合には（バス使用率１８Ｇｂｐｓ以上、ステップＳ１３１１：Ｙｅｓ）、読み出しメインルーチン部２０５は、今回のパケット読み出しの要求に対応した読み出し処理を実行しない。そして、読み出しメインルーチン部２０５は、今回の読み出し要求に対しては直ちに応答できない読み出し不可の旨をＧＵＩ用処理部２０１を介してコンソールＰＣ１２０に通知し（ステップＳ１３１３）、処理を終了する。
【０１０６】
このように、実施の形態の通信装置は、記憶装置１０４の内部バス１０４ａ（第２バス１０６ｂ）のバス使用率が低ければバス調停し、読み出しを行う。このバス調停は、ＮＩＣ１０３、第１バス１０６ａ、メモリ１０２、第２バス１０６ｂ、記憶装置１０４の順にパケットを転送する構成における第２バス１０６ｂに対して行う。このように、２つのバスを用い、メモリ１０２に残量があり、バス使用率が低い期間は、パケットを記憶装置１０４に書き込まずにメモリ１０２に溜め込むバス調停の制御を行う。これにより、受信したパケットをパケットロスすることなく、記憶装置１０４に書き込みでき、同時に読み出しを行うことができる。
【０１０７】
以上説明した実施の形態によれば、パケットをフルワイヤで受信し、記憶装置に対する書き込みでバスの使用率が１００％の場合でも、メモリに空きがある場合に一時的にメモリにパケットを溜め込んで記憶装置からのパケットの読み出しが行える構成とした。これにより、受信パケットをパケットロスせずに記憶装置に全て書き込み保存でき、同時に保存したパケットを読み出しできるようになる。また、受信するパケットがない期間に対応してバスの使用率が低下し、この期間に対応してパケットの読み出しを行うこともできる。これにより、通信装置から読み出したパケットは、パケットロスがない状態であり、通信装置から読み出したパケットを用いて、ネットワーク側で流れている通信の通信品質（例えば、通信で発生するロスや遅延）を解析（分析）できるようになる。
【０１０８】
実施の形態では、ＮＩＣとメモリ間に第１バスを設け、メモリと記憶装置間に第２バスを設けることで、ＮＩＣがフルワイヤで受信したパケットを全てメモリに一時記憶する。そして、メモリと記憶装置との間はフルワイヤでパケットを転送するに加え、メモリに空きが生じたときに、一時的に書き込みと読み出しを同時実行する。メモリの空きは、例えば、受信するパケットがない期間やＮＩＣの受信レートが低い期間に対応して生じる。この期間中、バスの使用率が低下し、パケットの読み出しを行える。また、ＮＩＣがフルワイヤ受信中であっても、メモリから記憶装置へ第２バスについて転送レートを低下させ、低下した転送レート分のパケットをメモリの空き領域に溜め込むことで、第２バスを経由して記憶装置からパケットの読み出しを行うことができる。
【０１０９】
また、上記の実施例では、書き込みに１０スレッド、読み出しに１スレッドを割り当てる例で説明したが、これに限らず、メモリ残量とバスの使用率の低下分に対応して書き込で削減できる複数のスレッド数分だけ記憶装置から１スレッド以上の複数の可変スレッド数で読み出す構成としてもよい。読み出しのスレッド数を多くできればその分だけ記憶装置からのパケットの読み出しにかかる時間を短縮できる。
【０１１０】
また、受信したパケットは、メモリのＲＡＭに一時的に記憶する構成としたが、このパケットは、ＲＡＭ等の半導体メモリに限らず、各種の記憶装置に一時的に記憶する構成としてもよい。
【０１１１】
上述した実施の形態に関し、さらに以下の付記を開示する。
【０１１２】
（付記１）受信したパケットを一時的に記憶する一時記憶装置と、
前記一時記憶装置に記憶された前記パケットをバス経由の転送により記憶する記憶装置と、
前記記憶装置に記憶された前記パケットを前記バスを経由して読み出す制御部と、を有し、
前記制御部は、前記バスの使用率を監視し、前記バスの使用率が所定の閾値よりも小さい場合、前記記憶装置から前記パケットの読み出しを行う、
ことを特徴とする通信装置。
【０１１３】
（付記２）前記制御部は、前記バスの使用率が前記閾値よりも大きい場合、前記一時記憶装置に所定の閾値以上の空き領域がある期間、前記一時記憶装置から前記記憶装置への前記バスの転送レートを一時的に低下させ、前記記憶装置に記憶された前記パケットを前記バスを経由して読み出すことを特徴とする付記１に記載の通信装置。
【０１１４】
（付記３）前記制御部は、前記バスの使用率を前記一時記憶装置から前記パケットを複数回読み出したときのアドレスの差分に基づき算出することを特徴とする付記１または２に記載の通信装置。
【０１１５】
（付記４）前記パケットを所定の受信レートで受信する受信部を有し、
前記バスは、前記受信部と前記一時記憶装置との間を接続し、前記受信レートに対応した転送レートを有する第１バスと、
前記一時記憶装置と前記記憶装置との間を接続し、前記受信レートに対応した転送レートを有する第２バスと、を含み、
前記制御部は、前記受信部から前記一時記憶装置に前記第１バスを経由して前記パケットを転送し、かつ、前記一時記憶装置から読み出した前記パケットを前記記憶装置に前記第２バスを経由して書き込み処理し、
前記記憶装置への前記書き込み時の前記第２バスの使用率が所定の閾値よりも小さい期間は、前記第２バスを経由して前記記憶装置から所定の転送レートで前記パケットの読み出しを行う、
ことを特徴とする付記１〜３のいずれか一つに記載の通信装置。
【０１１６】
（付記５）前記記憶装置から前記第２バスを経由して前記パケットを読み出す期間中、前記記憶装置に転送する前記パケットは、前記一時記憶装置に溜め込まれることを特徴とする付記４に記載の通信装置。
【０１１７】
（付記６）前記制御部は、前記一時記憶装置の記憶領域の空き容量が低下した場合、前記記憶装置から前記第２バスを経由して前記パケットを読み出す転送レートを下げる、または停止させることを特徴とする付記４または５に記載の通信装置。
【０１１８】
（付記７）前記制御部は、前記第２バスを介して前記記憶装置に対する前記パケットの書き込みを複数のスレッド実行で行い、前記第２バスの使用率の低下分に対応するスレッド数で前記記憶装置から前記パケットの読み出しを行うことを特徴とする付記４〜６のいずれか一つに記載の通信装置。
【０１１９】
（付記８）前記制御部は、前記一時記憶装置に所定の閾値以上の空き領域がない場合において、前記バスの使用率が前記閾値よりも大きければ前記記憶装置に記憶された前記パケットの読み出しを実行しないことを特徴とする付記１〜７のいずれか一つに記載の通信装置。
【０１２０】
（付記９）前記制御部は、外部装置からの前記パケットの読み出し要求に対応して、前記記憶装置に記憶された前記パケットの読み出しの可否を応答することを特徴とする付記１〜８のいずれか一つに記載の通信装置。
【０１２１】
（付記１０）前記外部装置に対して、前記記憶装置に記憶された前記パケットの読み出し出力が行えない場合、前記バスの使用率が低下したときに前記パケットを出力することを特徴とする付記９に記載の通信装置。
【０１２２】
（付記１１）ネットワーク上の対象機器のミラーポートに接続され、前記対象機器が受信した前記パケットの複製を受信することを特徴とする付記１〜８のいずれか一つに記載の通信装置。
【０１２３】
（付記１２）前記受信部の受信レートと、前記第１バス、第２バスおよび前記記憶装置の内部バスの転送レートは、いずれも同等の速度を有することを特徴とする付記１〜１１のいずれか一つに記載の通信装置。
【符号の説明】
【０１２４】
１００  通信装置
１０１  ＣＰＵ（制御部）
１０２  メモリ（一時記憶装置）
１０４  記憶装置
１０４ａ  内部バス
１０６  バス
１０６ａ  第１バス
１０６ｂ  第２バス
１０７  キャプチャパケットファイル
１１０  中継器（対象機器）
１１０ａ  ミラーポート
１２０  コンソールＰＣ（外部機器）
２０１  ＧＵＩ用処理部
２０２  ＤＭＡ設定管理部
２０３  記憶装置書き込み部
２０４  記憶装置読み出し部
２０５  読み出しメインルーチン部
２０６  メモリ残量監視部
２０７  記憶装置内部バス使用率制御部
２０８  記憶装置書き込みスレッド制御部
２０９  記憶装置内部バス使用率監視部
２１０  メモリ書き込みアドレス（保持部）
２１１  メモリ読み出しアドレス（保持部）
２１２  メモリ残量監視テーブル
２１３  記憶装置書き込みスレッド制御テーブル
２１４  バス使用率監視テーブル
【図１】
2016225765.tif 000003
【図２】
2016225765.tif 000004
【図３】
2016225765.tif 000005
【図４】
2016225765.tif 000006
【図５】
2016225765.tif 000007
【図６】
2016225765.tif 000008
【図７】
2016225765.tif 000009
【図８】
2016225765.tif 000010
【図９】
2016225765.tif 000011
【図１０】
2016225765.tif 000012
【図１１】
2016225765.tif 000013
【図１２】
2016225765.tif 000014
【図１３】
2016225765.tif 000015