(57)【特許請求の範囲】
【請求項１】
監視対象機器が送信するパケットのセグメント長を取得する取得部と、
該取得部が取得したセグメント長、及び予め取得した監視対象機器の受信可能な最大セグメント長を比較し、前記最大セグメント長より短いセグメント長を持つパケットの所定時間内の数が、前記所定時間内に前記監視対象機器が送信したパケット数に占める比率を算出する算出部と、
該算出部で算出した比率が、前記パケット数に対応する閾値より大きい場合に通知を行う通知部と
を備える監視装置。
【請求項２】
前記監視対象機器の通信速度を測定する測定部と、
該測定部が測定した通信速度、及び前記監視対象機器が使用するネットワーク回線の回線速度を比較し、前記ネットワーク回線が輻輳状態であるか否かを判定する回線判定部をさらに備え、
前記通知部は、前記回線判定部の判定結果に基づいて、通知内容を決定する
請求項１に記載の監視装置。
【請求項３】
送信したパケットの到達を確認したことを示す確認応答メッセージを、前記監視対象機器が受信したことを検出する検出部をさらに備え、
該検出部が前記確認応答メッセージの受信を検出した場合、前記算出部は、前記確認応答メッセージの受信直前に前記監視対象機器が送信したパケットを前記比率の算出対象から除外する
請求項１又は２に記載の監視装置。
【請求項４】
監視対象機器の送信するパケットのセグメント長、及び予め取得した監視対象機器の受信可能な最大セグメント長を比較し、
前記最大セグメント長より短いセグメント長を持つパケットの所定時間内の数が、前記所定時間内に前記監視対象機器が送信したパケット数に占める比率を算出し、
算出した比率が、前記パケット数に対応する閾値より大きい場合に、通知をする
処理をコンピュータに実行させるプログラム。
【請求項５】
コンピュータによって実行される監視方法であって、
監視対象機器の送信するパケットのセグメント長、及び予め取得した監視対象機器の受信可能な最大セグメント長を比較し、前記最大セグメント長より短いセグメント長を持つパケットの所定時間内の数が、前記所定時間内に前記監視対象機器が送信したパケット数に占める比率を算出し、
算出した比率が、前記パケット数に対応する閾値より大きい場合に、通知する
監視方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、輻輳状態を監視する監視装置、プログラム及び監視方法に関する。
【背景技術】
【０００２】
従来、輻輳状態を検知するためや、ネットワークの性能を求めるために、ＴＣＰレイヤにおいて、ウィンドウサイズを監視することが行われている（例えば、特許文献１、特許文献２）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特表２００５−５３３４４９号公報
【特許文献２】特開２０００−１０６５５７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来の技術では、送信側装置に受け取れるウィンドウサイズを通知し、受信側装置の輻輳を通知するプロトコルシーケンスは存在するが、送信側装置の輻輳は、受信側装置に通知する必要がないため、プロトコルシーケンスからでは監視できない。
【０００５】
１つの側面では、本発明は、送信側装置の輻輳状態を監視することが可能な監視装置等を提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明に係る監視装置は、監視対象機器が送信するパケットのセグメント長を取得する取得部と、該取得部が取得したセグメント長、及び予め取得した監視対象機器の受信可能な最大セグメント長を比較し、前記最大セグメント長より短いセグメント長を持つパケットの所定時間内の数が、前記所定時間内に前記監視対象機器が送信したパケット数に占める比率を算出する算出部と、該算出部で算出した比率が、前記パケット数に対応する閾値より大きい場合に通知を行う通知部とを備える。
【発明の効果】
【０００７】
本願の一実施形態によれば、送信側装置の輻輳状態を監視することが可能となる。
【図面の簡単な説明】
【０００８】
【図１】情報処理システムの一例を示す説明図である。
【図２】パケットの送信間隔分布の一例を示したグラフである。
【図３】ＣＰＵ使用率と輻輳パケット数の関係の一例を示すグラフである。
【図４】監視装置のハードウェア群を示すブロック図である。
【図５】コネクション情報テーブルのレコードレイアウトの一例を示す説明図である。
【図６】ＭＳＳテーブルのレコードレイアウトの一例を示す説明図である。
【図７】正常／輻輳パケット数テーブルのレコードレイアウトの一例を示す説明図である。
【図８】輻輳判定パラメータテーブルのレコードレイアウトの一例を示す説明図である。
【図９】全パケット数と輻輳パケット数との関係の一例を示すグラフである。
【図１０】全パケット数及び輻輳パケット数の観測処理の手順を示すフローチャートである。
【図１１】監視処理の手順を示したフローチャートである。
【図１２】輻輳通知画面の一例を示す画面図である。
【図１３】輻輳通知画面の一例を示す画面図である。
【図１４】全パケット数と輻輳パケット数との関係を示すグラフである。
【図１５】回線速度閾値テーブルのレコードレイアウトの一例を示す説明図である。
【図１６】ネットワーク帯域テーブルのレコードレイアウトの一例を示す説明図である。
【図１７】全パケット数及び輻輳パケット数の観測処理の手順を示すフローチャートである。
【図１８】監視処理の手順を示したフローチャートである。
【図１９】直前パケット種別テーブルのレコードレイアウトの一例を示す説明図である。
【図２０】全パケット数及び輻輳パケット数の観測処理の手順を示すフローチャートである。
【図２１】実施の形態１〜３に係る監視装置の動作を示す機能ブロック図である。
【図２２】実施の形態４に係る監視装置のハードウェア群を示すブロック図である。
【発明を実施するための形態】
【０００９】
実施の形態１
以下、実施の形態について図面を参照して説明する。図１は情報処理システムの一例を示す説明図である。情報処理システムは監視装置１、複数のサーバコンピュータ２、３、４、スイッチ５及びクライアントコンピュータ６を含む。
【００１０】
スイッチ５は、監視装置１、サーバコンピュータ２、３、４及びクライアントコンピュータ６を互いに接続している。監視装置１は、例えば、サーバコンピュータ又はパーソナルコンピュータである。
【００１１】
サーバコンピュータ２、３、４は、クライアントコンピュータ６から要求をうけて、サービスを提供する。
【００１２】
サービスを提供する為のトランザクションにおいて、サーバコンピュータ２、３、４は、スイッチ５を介してクライアントコンピュータ６とメッセージの送受信を行う。また、サーバコンピュータ間のメッセージ送受信もスイッチ５を介して行われる。このスイッチ５を介して送受信されるメッセージを監視装置１が監視する。スイッチ５は自身を通過するデータをミラーリングする機能を有している。ミラーリングとは、あるポートに出力されるデータと同じデータを、他のポートからも出力する機能である。
【００１３】
サーバコンピュータ２が接続されたポート、サーバコンピュータ３が接続されたポート、及びサーバコンピュータ４が接続されたポートのミラーリング先として、監視装置１が接続されたポートが指定されている。これにより、各サーバコンピュータ２、３、及び４宛のパケットは宛先となるサーバコンピュータ２、３、及び４に入力されるとともに、監視装置１にも入力される。
【００１４】
監視装置１は、監視対象となるサーバコンピュータ２、３、及び４が送信するパケットのセグメント長を監視することにより、監視対象となるサーバコンピュータ２、３、及び４が輻輳状態であるか否かの判定を行う。サーバコンピュータ２、３、及び４は、監視機器の一例である。
以下、監視対象となるサーバコンピュータ２、３、及び４を、監視対象機器２、３、４と記す。以下の記述においては、主に監視対象機器２に関して、監視装置１が行う処理について示すが、同様な処理を監視対象機器３及び４に関しても、監視装置１が行うものとする。
【００１５】
次に、監視対象機器２が輻輳状態であるか否かの判定手法について説明する。図２はパケットの送信間隔分布の一例を示したグラフである。横軸は経過時間である。単位は秒である。縦軸はパケットの送信間隔である。単位はミリ秒である。
【００１６】
ＴＣＰ／ＩＰ（Transmission ControlProtocol/Internet Protocol）を利用した通信において、アプリケーションレイヤでのメッセージ送信時、ＩＰレイヤでＭＴＵ（Max Transfer Unit）の値を超える場合、複数のパケットに分割し、メッセージを送信する。このパケットの分割は、アプリケーションがカーネルに対して、メッセージ単位の送信要求を行った後、カーネル内で分割し送信するため、同一メッセージ内のパケット送信間隔は数マイクロ秒と比較的短い。
【００１７】
一方、ＴＣＰレイヤでは、受信可能なセグメントの最大サイズＭＳＳ（MaximumSegment Size）をコネクション確立時に相手側に通知し、送信するメッセージをＭＳＳの単位で分割し送信する。図２に示した結果から、セグメント長とパケットの送信間隔との関係が見いだせる。セグメント長がＭＳＳと同じ値のパケット間の送信間隔と、セグメント長がＭＳＳよりも短くなったパケットの次のパケットとの送信間隔とを比較すると、後者の送信間隔の多くが、前者の送信間隔よりも大きくなっている。すなわち、送信間隔が大きくなっているパケットは、セグメント長がＭＳＳ以下のものである。ＭＳＳは受信可能な最大セグメント長の一例である。
【００１８】
ＴＣＰの送信側輻輳制御では、輻輳ウィンドウ（送信側のウィンドウサイズ）と広告ウィンドウ（受信側のバッファ空き容量）を持ち、送信側は２つのウィンドウの小さい方の値を用いてパケット長を定める。送信側のリソースの枯渇、例えば送信バッファが枯渇した場合、送信されるパケット長を短くし、パケットを送信する。したがって、同一メッセージ内のパケットのうち、セグメント長が短くなっているパケット数を監視することで、送信側である監視対象機器２が輻輳状態であるか否かを判定することが可能となる。
【００１９】
図３はＣＰＵ使用率と輻輳パケット数の関係の一例を示すグラフである。横軸はＣＰＵ使用率であり、単位は％である。縦軸は輻輳パケット数であり、単位は個／分である。図３は、クライアントからサーバに同一量のリクエスト送信の負荷をかけた状態で、ＣＰＵに対して負荷を与え、ＣＰＵ使用率により輻輳パケット数がどのように変化するのかを示している。図３に示すように、ＣＰＵ使用率が約９０％以下では、輻輳パケット数はほぼ一定であるが、９０％を超えた場合は急激に増加している。従って、ＣＰＵ使用率が１００％近くに達していることも、輻輳パケット数の増加により検知することが可能である。以下に、輻輳パケット数の増加により、監視対象機器２の輻輳状態を検知する処理について、以下、詳細に説明する。
【００２０】
図４は監視装置１のハードウェア群を示すブロック図である。監視装置１は制御部としてのＣＰＵ(Central Processing Unit)１１、ＲＡＭ（RandomAccess Memory）１２、記憶部１３、時計部１４及び通信部１５等を含む。ＣＰＵ１１は、バスを介してハードウェア各部と接続されている。ＣＰＵ１１は記憶部１３に記憶された制御プログラム１３Ｐに従いハードウェア各部を制御する。ＲＡＭ１２は例えばＳＲＡＭ（Static ＲＡＭ）、ＤＲＡＭ（Dynamic ＲＡＭ）、フラッシュメモリ等である。ＲＡＭ１２は、記憶部としても機能し、ＣＰＵ１１による各種プログラムの実行時に発生する種々のデータを一時的に記憶する。
【００２１】
記憶部１３は例えば、ハードディスクまたは大容量フラッシュメモリ等であり、制御プログラム１３Ｐ及びマスタテーブル／データテーブル１３Ｔを格納する。マスタテーブル／データテーブル１３Ｔは、監視対象機器２が送受信したパケットなど関しに必要なデータを格納した複数のテーブルから構成されている。時計部１４は現在時刻、または任意の時点を起点とした経過時間をＣＰＵ１１へ出力する。
【００２２】
通信部１５は例えばＬＡＮ（Local Area Network）カード等であり、スイッチ５との間で情報の送受信を行う。通信部１５は、上述したようにスイッチ５のミラーリング機能を利用するようになっている。通信部１５はプロミスキャスモードにより動作する。プロミスキャスモードとは、宛先に関わらず全ての受信パケットを上位レイヤのソフトウェアに渡すモードである。プロミスキャスモードを利用することにより、監視装置１宛ではない監視対象機器２宛のパケットが破棄されず、制御プログラム１３Ｐにて取り込むことが可能となる。
【００２３】
次に、マスタテーブル／データテーブル１３Ｔについて説明する。図５はコネクション情報テーブル１３１のレコードレイアウトの一例を示す説明図である。コネクション情報テーブル１３１は、接続先ＩＰアドレス、接続先ポート番号、接続元ＩＰアドレス、接続元ポート番号、コネクション番号等を含む。コネクション番号は、コネクションを特定するための主キーである。接続先ＩＰアドレス、接続先ポート番号、接続元ＩＰアドレス及び接続元ポート番号は、コネクションの確立時にやり取りされるメッセージより取得し、記憶する。接続先ＩＰアドレス及び接続元ＩＰアドレスはＩＰヘッダより、接続先ポート番号及び接続元ポート番号はＴＣＰヘッダより取得することが可能である。
【００２４】
図６はＭＳＳテーブル１３２のレコードレイアウトの一例を示す説明図である。ＭＳＳテーブル１３２は、接続先ＩＰアドレス、ＭＳＳ等を含む。ＭＳＳはコネクション確立時にやり取りされるメッセージＳＹＮ（SYNchronize）又はＳＹＮ  ＡＣＫ（ACKnowledgement）より取得する。ＭＳＳは接続先ＩＰアドレス単位に記憶する。
【００２５】
図７は正常／輻輳パケット数テーブル１３３のレコードレイアウトの一例を示す説明図である。正常／輻輳パケット数テーブル１３３は、時刻、コネクション番号、正常パケット数、輻輳パケット数等を含む。時刻は単位時間毎である。正常パケット数、輻輳パケット数は単位時間毎に観測されたパケット数をそれぞれ、コネクション番号毎に記憶している。本実施の形態では単位時間は１分としてある。図７に示した例では、１２時０分０秒から１２時０分５９秒の間にコネクション番号１の通信において、正常パケットが５０００００、輻輳パケットが５００観測されたことを示している。上述の単位時間は、所定時間の一例である。また、正常／輻輳パケット数テーブル１３３に記憶される、輻輳パケット数が正常パケット数に占める割合が、比率の一例である。
【００２６】
図８は輻輳判定パラメータテーブル１３４のレコードレイアウトの一例を示す説明図である。輻輳判定パラメータテーブル１３４は、接続先ＩＰアドレス、近似式、信頼区間の上限値９５％等を含む。近似式には、正常時（輻輳にならない負荷量）における全パケット数と輻輳パケット数との関係を示す近似式が、接続先ＩＰアドレス毎に記憶している。記憶される近似式は、最小二乗法を用いて求める。式ではなく、傾き及び切片を記憶することとしても良い。上限値９５％は、信頼区間の上限値９５％の係数が記憶される。
【００２７】
図９は全パケット数と輻輳パケット数との関係の一例を示すグラフである。実線が最小二乗法で求めた近似式（ｙ＝ｋｘ＋ｃ）をグラフとして表したものである。点線は信頼区間の上限９５％をグラフとして表したものである。係数をαとしたとき、上限９５％のグラフの切片はｃ＋αである。監視装置１は全パケット数と輻輳パケット数との関係を監視し、上限９５％より上の領域となった場合に、監視対象機器２が輻輳状態であると検知する。図９に示すグラフより求まる全体パケット数と輻輳パケット数との比率が、閾値の一例である。
【００２８】
次に全パケット数及び輻輳パケット数の観測方法について、説明する。図１０は全パケット数及び輻輳パケット数の観測処理の手順を示すフローチャートである。監視装置１のＣＰＵ１１は、通信部１５がパケットを受信したか否かを監視する（ステップＳ１）。受信していない場合（ステップＳ１でＮＯ）、ＣＰＵ１１は処理をステップＳ１に移行させる。受信した場合（ステップＳ１でＹＥＳ）、ＣＰＵ１１は処理をステップＳ２に移行させる。ＣＰＵ１１はコネクション情報を取得する（ステップＳ２）。ＣＰＵ１１は受信パケットのＩＰヘッダから送信元ＩＰアドレス及び送信先ＩＰアドレスを、ＴＣＰヘッダから送信元ポート番号及び送信先ポート番号を取得する。ＣＰＵ１１はコネクション情報テーブル１３１を検索する（ステップＳ３）。取得したコネクション情報が検索にヒットしたかを調べる（ステップＳ４）。検索がヒットした場合、すなわち、取得したコネクション情報が登録されている場合（ステップＳ４でＹＥＳ）、ＣＰＵ１１は上りと判定する（ステップＳ５）。上りの場合は何もせずに処理を終了する。
【００２９】
検索がヒットしない場合、すなわち、取得したコネクション情報が登録されていない場合（ステップＳ４でＮＯ）、ＣＰＵ１１は、送信元ＩＰアドレスと送信先ＩＰアドレスとを、送信元ポート番号と送信先ポート番号とを、それぞれ入れ替えて、再度、コネクション情報テーブル１３１を検索する（ステップＳ６）。検索がヒットしたかを調べる（ステップＳ７）。検索がヒットした場合（ステップＳ７でＹＥＳ）、ＣＰＵ１１は、コネクション番号を取得しておく。検索がヒットした場合、下りであるので、ＣＰＵ１１はセグメント長を取得する（ステップＳ８）。ＣＰＵ１１はセグメント長とＭＳＳとを比較する（ステップＳ９）。ＣＰＵ１１は、送信元ＩＰアドレスをキーにＭＳＳテーブル１３２を検索し、ＭＳＳを取得する。セグメント長がＭＳＳより小さい場合（ステップＳ９でＹＥＳ）、ＣＰＵ１１は輻輳パケット数を１加算する。ＣＰＵ１１は、正常／輻輳パケット数テーブル１３３のコネクション番号に対応した輻輳パケット数欄の値を１加算する（ステップＳ１０）。コネクション番号に対応したレコードが正常／輻輳パケット数テーブル１３３に存在しない場合、ＣＰＵ１１は、正常／輻輳パケット数テーブル１３３にレコードを追加する。ＣＰＵ１１は処理を終了する。セグメント長がＭＳＳと等しい場合（ステップＳ９でＮＯ）、ＣＰＵ１１は正常パケット数を１加算する。ＣＰＵ１１は、正常／輻輳パケット数テーブル１３３のコネクション番号に対応した正常パケット数欄の値を１加算する（ステップＳ１１）。ＣＰＵ１１は処理を終了する。なお、正常パケット数、輻輳パケット数は時計部１４より取得した時刻と対応付けて、正常／輻輳パケット数テーブル１３３に記憶する。正常／輻輳パケット数テーブル１３３に記憶される、単位時間毎の輻輳パケット数は、最大セグメント長より短いセグメント長を持つパケットの所定時間内の数の一例である。正常パケット数と輻輳パケット数とを合計した値は、監視対象機器が送信したパケット数の一例である。
【００３０】
検索がヒットしなかった場合（ステップＳ７でＮＯ）、ＣＰＵ１１はパケットがコネクション確立メッセージであるか否かを調べる（ステップＳ１２）。ＣＵＰ１１はＴＣＰヘッダのＳＹＮフラグ、ＡＣＫフラグを参照する。コネクション確立メッセージではない場合（ステップＳ１２でＮＯ）、処理対象のパケットではないので、ＣＰＵ１１は処理を終了する。コネクション確立メッセージの場合（ステップＳ１２でＹＥＳ）、ＣＰＵ１１は、コネクション接続確認を行う（ステップＳ１３）。
【００３１】
ＳＹＮパケット（ＳＹＮフラグ＝１、ＡＣＫフラグ＝０）の場合は、ＣＰＵ１１は、ＩＰヘッダから送信元ＩＰアドレス、送信先ＩＰアドレスを取得する。ＣＰＵ１１は、ＴＣＰヘッダから送信元ポート番号、送信先ポート番号を取得する。ＣＰＵ１１は、取得した送信元ＩＰアドレス、送信先ＩＰアドレス、送信元ポート番号、送信先ポート番号をＲＡＭ１２などの記憶部に記憶しておく。
【００３２】
ＳＹＮ／ＡＣＫパケット（ＳＹＮフラグ＝１、ＡＣＫフラグ≠０）の場合、ＣＰＵ１１はＩＰヘッダから、送信元ＩＰアドレス、及びウィンドウサイズ、すなわち、サーバのＭＳＳを取得する。ＣＰＵ１１は取得したＭＳＳをサーバのＩＰアドレス（送信元ＩＰアドレス）と対応付けて、ＭＳＳテーブル１３２に記憶する。ＭＳＳテーブル１３２にすでにレコードが存在する場合、ＣＰＵ１１はＭＳＳの値を上書きし、存在しない場合、ＣＰＵ１１は新たなレコードをＭＳＳテーブル１３２に追加する。
【００３３】
ＡＣＫパケット（ＳＹＮフラグ＝０、ＡＣＫフラグ≠０）の場合、ＣＰＵ１１は、ＩＰヘッダから送信元ＩＰアドレス、送信先ＩＰアドレスを、ＴＣＰヘッダから送信元ポート番号、送信先ポート番号を取得する。ＣＰＵ１１は、取得した送信元ＩＰアドレス、送信先ＩＰアドレス、送信元ポート番号、及び送信先ポート番号それぞれが、ＲＡＭ１２等に記憶してあるＳＹＮパケット受信時の送信元ＩＰアドレス、送信先ＩＰアドレス、送信元ポート番号、及び送信先ポート番号と一致することを確認し、コネクションが確立されたことを確認する。
【００３４】
コネクションが確立されたので、ＣＰＵ１１はコネクション情報の設定を行う（ステップＳ１４）。ＣＰＵ１１はコネクション情報テーブル１３１にレコードを追加する。ＣＰＵ１１はキーとなるコネクション番号を発番する。ＣＰＵ１１は発番したコネクション番号、取得した送信元ＩＰアドレス、送信先ＩＰアドレス、送信元ポート番号、及び送信先ポート番号を対応付けてコネクション情報テーブル１３１に記憶する。
【００３５】
監視対象機器２の監視を行う前に、輻輳にならない負荷量、すなわち正常状態において、上述の観測処理を行い、正常パケット数と輻輳パケット数を観測する。観測処理後に、接続先ＩＰアドレス（監視対象機器２、３、及び４のＩＰアドレス）毎に、最小二乗法を用いて、全パケット数（正常パケット数＋輻輳パケット数）と輻輳パケット数との関係を示す近似式を求める。また近似式の信頼区間の上限値９５％を求める。求めた近似式及び信頼区間の上限値９５％は、輻輳判定パラメータテーブル１３４に接続先ＩＰアドレスと対応付けて記憶する。
【００３６】
次に監視対象機器２の監視処理の手順について説明する。図１１は監視処理の手順を示したフローチャートである。図１１に示す監視処理とは別に、上述した図１０の処理が行われ、所定時間単位、例えば１分単位で、接続先ＩＰアドレス（監視対象機器２、３、及び４）毎に正常パケット数と輻輳パケット数が正常／輻輳パケット数テーブル１３３に記憶されている。ＣＰＵ１１は、監視対象機器２に対応付けられた最新の正常パケット数、輻輳パケット数を正常／輻輳パケット数テーブル１３３より読み出す（ステップＳ２１）。ＣＰＵ１１は、監視対象機器２に対応した近似式と信頼区間の上限値９５％を輻輳判定パラメータテーブル１３４より取得し、先に取得した正常パケット数と、近似式と信頼区間の上限値９５％より、輻輳パケット数を算出する（ステップＳ２２）。
【００３７】
ＣＰＵ１１は、ステップＳ２１で取得した輻輳パケット数とステップＳ２２で算出した輻輳パケット数を比較する（ステップＳ２３）。取得した輻輳パケット数が算出した輻輳パケット数より大きい場合（ステップＳ２３でＹＥＳ）、ＣＰＵ１１は輻輳を、管理者に通知する。通知は、監視装置１に接続されたモニタに表示することや、指定された電子メールアドレスに電子メールを送信するなどにより行う。上述では、観測した輻輳パケット数と算出した輻輳パケット数とを比較しているが、輻輳パケット数が全体パケット数に占める比率を算出して、比較しても良い。
【００３８】
図１２及び図１３は輻輳通知画面の一例を示す画面図である。図１２に示すウィンドウＷ１では一覧表により輻輳状態となった監視対象機器２を表示している。欄Ｃ１は輻輳状態となった監視対象機器２のＩＰアドレスを表示し、欄Ｃ２は輻輳状態が観測された時間が表示されている。管理者が、マウスポインタＭｐを欄Ｃ１又は欄Ｃ２に移動し、クリック又はダブルクリックなどの操作をした場合に、ＣＰＵ１１が図１３に示す画面を表示するようにしても良い。図１３に示すウィンドウＷ２では、正常状態における全パケット数と輻輳パケット数との関係を示す近似式Ｇ１及び信頼区間の上限値９５％Ｇ２をグラフで示すと共に、輻輳状態として観測された点Ｐを示している。管理者は、この画面を参照することにより、輻輳状態の程度を視覚的に判断することが可能となる。上述のウィンドウＷ１またはＷ２は通知の一例である。
【００３９】
取得した輻輳パケット数が算出した輻輳パケット数以下の場合（ステップＳ２３でＮＯ）、ＣＰＵ１１は処理をステップＳ２５に移行させる。ＣＰＵ１１はすべての監視対象機器２、３、及び４について処理したかを判定する（ステップＳ２５）。すべての監視対象機器２、３、及び４についての処理が終了している場合（ステップＳ２５でＹＥＳ）、ＣＰＵ１１は処理を終了する。未処理の監視対象機器がある場合（ステップＳ２５でＮＯ）、ＣＰＵ１１は処理をステップＳ２１へ戻す。
【００４０】
以上のように、本実施の形態では、監視対象機器２の送信する全パケットのうち、セグメント長がＭＳＳよりも小さい輻輳パケットの割合を観測する。観測した割合が正常時の割合より増加していることを検出することにより、データ送信側であるサーバの輻輳状態を検出することが可能となる。
【００４１】
実施の形態２
実施の形態２では、ネットワーク回線の輻輳も考慮し、より正確に監視対象機器２の輻輳状態を検出する。図１４は、全パケット数と輻輳パケット数との関係を示すグラフである。横軸は全パケット数であり、縦軸は輻輳パケット数である。単位は共に個／分である。クライアントから監視対象機器２へのリクエスト送信を徐々に増加させる負荷をかけ、正常パケット数と輻輳パケット数の観測を行った。その観測結果に基づいて、全パケット数と輻輳パケット数との関係をグラフにて示したものである。図１４に示すように、全パケット数が３１０万パケットの時（点線）、ネットワーク帯域が９００Ｍｂｐｓ（最大回線速度の９割）以上になり、回線速度の物理的な限界（１Ｇｂｐｓ）に達する。この時、サーバ側でデータの送信待ち状態が多発するため、送信バッファのリソース不足が発生し、輻輳パケットが急激に増加している。ネットワーク回線の使用帯域が最大回線速度の９割以上になった場合には、ネットワーク回線の輻輳によりサーバが輻輳状態となることが分かる。そこで、本実施の形態においてはネットワーク回線の使用帯域も測定し、ＣＰＵの輻輳とネットワーク回線の輻輳とを切り分けることとする。そのため、監視に先立ち、監視対象機器２の物理的な回線速度を測定する。測定した回線速度を元に回線が輻輳状態であることを判定するための閾値を決定し、記憶する。
【００４２】
図１５は回線速度閾値テーブル１３５のレコードレイアウトの一例を示す説明図である。回線速度閾値テーブル１３５は、接続先ＩＰアドレス（監視対象機器２、３、及び４のＩＰアドレス）、回線速度閾値などを含む。回線速度閾値は上述したように監視を行う前に、回線速度を測定し、最大速度の９割程度の値を設定する。
【００４３】
図１６はネットワーク帯域テーブル１３６のレコードレイアウトの一例を示す説明図である。ネットワーク帯域テーブル１３６は、時刻、コネクション番号、バイト数等を含む。時刻は単位時間毎である。例えば、１分毎とする。バイト数は、単位時間内に送信された下りパケットのパケット長をコネクション番号毎に加算したものである。
【００４４】
図１７は全パケット数及び輻輳パケット数の観測処理の手順を示すフローチャートである。図１０に示した処理手順とほぼ同じであり、異なるのはステップＳ１５が追加されている点である。以下、ステップＳ１５について主に説明する。ＣＰＵ１１は下りパケットを受信した場合、パケット長を測定する。ＣＰＵ１１は測定時刻、コネクション番号と対応付けて、ネットワーク帯域テーブル１３６にパケット長を記憶する（ステップＳ１５）。すでにレコードがある場合、ＣＰＵ１１は受信したパケット長を記憶している値に１加算する。レコードがない場合、ＣＰＵ１１はネットワーク帯域テーブル１３６にレコードを追加し、パケット長を記憶する。この処理により、監視対象機器毎、単位時間毎に送信されたデータのバイト数が記憶される。
【００４５】
図１８は監視処理の手順を示したフローチャートである。図１１に示した処理手順とほぼ同じであるので、異なる点を主に説明する。ＣＰＵ１１はステップＳ２１で取得した輻輳パケット数とステップＳ２２で算出した輻輳パケット数を比較する（ステップＳ２３）。取得した輻輳パケット数が算出した輻輳パケット数より大きい場合（ステップＳ２３でＹＥＳ）、ＣＰＵ１１は回線速度と閾値を比較する（ステップＳ２６）。回線速度（通信速度）は、ネットワーク帯域テーブル１３６に記憶されている単位時間毎の送信バイト数から算出する。閾値は回線速度閾値テーブルより対象となっている監視対象機器２の閾値を読み出す。算出した回線速度が閾値以下の場合（ステップＳ２６でＹＥＳ）、ＣＰＵ１１は、ＣＰＵの輻輳を通知する（ステップＳ２４１）。算出した回線速度が閾値より大きい場合（ステップＳ２６でＮＯ）、ＣＰＵ１１は、回線の輻輳を通知する（ステップＳ２４２）。ＣＰＵ１１は、処理をステップＳ２５に移行させる。ＣＰＵ１１はすべての監視対象機器２、３、及び４について処理したかを判定する（ステップＳ２５）。すべての監視対象機器２、３、及び４について処理している場合（ステップＳ２５でＹＥＳ）、ＣＰＵ１１は処理を終了する。未処理の監視対象機器がある場合（ステップＳ２５でＮＯ）、ＣＰＵ１１は処理をステップＳ２１へ戻す。
【００４６】
以上のように、本実施の形態では、監視対象機器２の送信する全パケットのうち、セグメント長がＭＳＳよりも小さい輻輳パケットの割合を観測する。また、監視対象機器２の回線速度も併せて観測する。観測した輻輳パケットの割合が正常時の割合より増加していることを検出した場合、観測した回線速度と回線速度閾値とを比較し、回線が輻輳状態であるか否かを判定する。それにより、輻輳パケット増加の要因が、監視対象機器２のＣＰＵによる輻輳であるのか、或いは回線の輻輳であるのかを判定することが可能となる。したがって、データ送信側である監視対象機器２の輻輳状態をより適切に検出することが可能となる。
【００４７】
実施の形態３
上述の実施の形態１又は実施の形態２においては、ＭＳＳよりも小さいパケットを全て輻輳パケットとして扱った。しかしながら、ＴＣＰレイヤでは送信側の輻輳制御以外に受信側の輻輳制御（TCP Window Update、TCP Zero Window）でセグメント長が短くなる場合も存在する。ここで、TCP Window Updateとはウィンドウサイズを変更するＡＣＫパケット、TCP Zero Windowとはウィンドウサイズを０に変更することにより、送信側からのパケットを一時的に停止させるＡＣＫパケットである。受信側の輻輳制御の場合、ウィンドウサイズが変化し、ＴＣＰの確認応答メッセージ（ＡＣＫ）の直前の送信パケットのセグメント長がＭＳＳよりも短くなる。従って、ＡＣＫを検出し、その直前のパケットがＭＳＳより小さくても輻輳パケットから除外する事とする。それにより、送信側（監視対象機器２側）の輻輳制御でセグメント長が短くなっているパケットだけを検出することが可能となる。上述のＡＣＫパケットは、応答確認メッセージの一例である。
【００４８】
図１９は直前パケット種別テーブル１３７のレコードレイアウトの一例を示す説明図である。直前パケット種別テーブル１３７は、コネクション番号、パケット種別などを含む。コネクション番号は、コネクション情報テーブル１３１に設定されているコネクション番号が記憶される。直前パケット種別は、監視対象機器２が送信した最新パケットの種別を記憶している。
【００４９】
図２０は全パケット数及び輻輳パケット数の観測処理の手順を示すフローチャートである。ここでは、上述の図１７と異なる点を主に説明する。下りパケットを受信した場合の処理には、ステップＳ１６及びステップＳ１７が追加されている。上りパケットを受信した場合の処理には、ステップＳ１８からＳ２１が追加されている。ＣＰＵ１１は監視対象機器２が送信したパケット（下りパケット）のセグメント長をＭＳＳと比較する（ステップＳ９）。セグメント長がＭＳＳより小さい場合（ステップＳ９でＹＥＳ）、ＣＰＵ１１は輻輳パケット数を１加算する（ステップＳ１０）。ＣＰＵ１１は直前パケット種別テーブル１３７にパケット種別「輻輳」をコネクション番号と対応付けて記憶する（ステップＳ１６）。ＣＰＵ１１は、コネクション番号に対応するレコードがある場合、レコードを上書きし、ない場合、直前パケット種別テーブル１３７にレコードを追加し、パケット種別「輻輳」を記憶する。セグメント長がＭＳＳ以上の場合（ステップＳ９でＮＯ）、ＣＰＵ１１は正常パケット数を１加算する（ステップＳ１１）。ＣＰＵ１１は直前パケット種別テーブル１３７にパケット種別「正常」をコネクション番号と対応付けて記憶する（ステップＳ１７）。ＣＰＵ１１は、コネクション番号に対応するレコードがある場合、レコードを上書きし、ない場合、直前パケット種別テーブル１３７にレコードを追加し、パケット種別「正常」を記憶する。
【００５０】
ＣＰＵ１１はパケット種別が上りと判定した後、ＡＣＫビットがあるか否かを調べる（ステップＳ１８）。ＡＣＫビットがない場合（ステップＳ１８でなし）、ＣＰＵ１１は処理を終了する。ＡＣＫビットがある場合（ステップＳ１８であり）、ＣＰＵ１１は直前パケット種別テーブルから、コネクション番号に対応したパケット種別を読み出す（ステップＳ１９）。パケット種別が輻輳の場合（ステップＳ１９で輻輳）、ＣＰＵ１１は正常／輻輳パケット数テーブル１３３のコネクション番号に対応したレコードの輻輳パケット数を１減算する（ステップＳ２０）。パケット種別が正常の場合（ステップＳ１９で正常）、ＣＰＵ１１は正常／輻輳パケット数テーブル１３３のコネクション番号に対応したレコードの正常パケット数を１減算する（ステップＳ２１）。ＣＰＵ１１は処理を終了する。以上の処理により、受信側輻輳制御によりセグメント長が変化したパケットを除外することが可能となる。
【００５１】
監視対象機器２が輻輳状態であるか否かの判定については、実施の形態１又は実施の形態２と同様であるので、説明を省略する。
【００５２】
上述のように、実施の形態３においては、受信側の輻輳制御によりセグメント長が変化したパケットを除外して、正常パケット数及び輻輳パケット数を観測するので、監視対象機器２が輻輳状態であるか否かの判定をより正確に行うことが可能となる。
【００５３】
実施の形態４
図２１は実施の形態１〜３に係る監視装置１の動作を示す機能ブロック図である。ＣＰＵ１１が制御プログラム１３Ｐ等を実行することにより、監視装置１は以下のように動作する。取得部２０１は、監視対象機器２の送信するパケットのセグメント長を取得する。算出部２０２は、取得部２０１が取得したセグメント長、及び予め取得した監視対象機器２の受信可能な最大セグメント長を比較し、前記最大セグメント長より短いセグメント長を持つパケットの所定時間内の数が、前記所定時間内に前記監視対象機器２が送信したパケット数に占める比率を算出する。通知部２０３は、算出部２０２で算出した比率が、前記パケット数に対応する閾値より大きい場合に通知を行う。
【００５４】
検出部２０４は、監視対象機器２が確認応答メッセージを受信したことを検出する。算出部２０２は、また、検出部２０４が確認応答メッセージの受信を検出した場合、その直前に監視対象機器２が送信したパケットを比率の算出対象から除外する。
【００５５】
測定部２０５は、監視対象機器２の通信速度を測定する。回線判定部２０６は、測定部２０５が測定した通信速度、及び前記監視対象機器が使用するネットワーク回線の回線速度を比較し、前記ネットワーク回線が輻輳状態であるか否かを判定する。通知部２０３は、また、回線判定部２０６の判定結果に基づいて、通知内容を決定する。
【００５６】
図２２は実施の形態４に係る監視装置１のハードウェア群を示すブロック図である。監視装置１を動作させるためのプログラムは、ディスクドライブ等の読み取り部１０ＡにＣＤ−ＲＯＭ、ＤＶＤ（Digital Versatile Disc）ディスク、メモリカード、またはＵＳＢ(UniversalSerial Bus)メモリ等の可搬型記録媒体１Ａを読み取らせて記憶部１３に記憶しても良い。また当該プログラムを記憶したフラッシュメモリ等の半導体メモリ１Ｂを監視装置１内に実装しても良い。さらに、当該プログラムは、インターネット等の通信網を介して接続される他のサーバコンピュータ（図示せず）からダウンロードすることも可能である。以下に、その内容を説明する。
【００５７】
図２２に示す監視装置１は、上述した各種ソフトウェア処理を実行するプログラムを、可搬型記録媒体１Ａまたは半導体メモリ１Ｂから読み取り、或いは、通信網を介して他のサーバコンピュータ（図示せず）からダウンロードする。当該プログラムは、制御プログラム１３Ｐとしてインストールされ、ＲＡＭ１２にロードして実行される。これにより、上述した監視装置１として機能する。
【００５８】
本実施の形態４は以上の如きであり、その他は実施の形態１から３と同様であるので、対応する部分には同一の参照番号を付してその詳細な説明を省略する。
【００５９】
なお、上述した実施の形態１乃至４において、マスタテーブル／データテーブル１３Ｔは、監視装置１の記憶部１３に記憶されているものとしたが、それに限らず、外部記憶装置に記憶しておき、外部記憶装置から直接又はネットワークを介してデータの読み出しや書き込みを行うこととしても良い。
【００６０】
上述した実施の形態１乃至４において、輻輳状態であるか否かの判定基準となる輻輳パケット数を、その都度、近似式と信頼区間の上限値９５％より求めたが、それに限られるものではない。全パケット数として複数の値を定め、全パケット数それぞれに対応した基準の輻輳パケット数を予め計算しておき、計算した輻輳パケット数を全パケット数と対応付けて記憶部１３等に記憶しておいても良い。また、人が経験に基づき、全パケット数に対応した輻輳パケット数を設定しても良い。
さらにまた、輻輳状態であるか否かの判定基準となる輻輳パケット数は監視対象機器毎に定めることとしているが、監視対象機器間に性能の優位差がない場合は、共通な近似式と信頼区間の上限値９５％等を用いても良い。
【００６１】
また、上述した実施の形態はすべての点で例示であって、制限的なものではないと考えられるべきである。本発明の範囲は、上述した意味ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味及び範囲内でのすべての変更が含まれることが意図される。
【００６２】
以上の実施の形態１乃至４を含む実施形態に関し、さらに以下の付記を開示する。
【００６３】
（付記１）
監視対象機器が送信するパケットのセグメント長を取得する取得部と、
該取得部が取得したセグメント長、及び予め取得した監視対象機器の受信可能な最大セグメント長を比較し、前記最大セグメント長より短いセグメント長を持つパケットの所定時間内の数が、前記所定時間内に前記監視対象機器が送信したパケット数に占める比率を算出する算出部と、
該算出部で算出した比率が、前記パケット数に対応する閾値より大きい場合に通知を行う通知部と
を備える監視装置。
【００６４】
（付記２）
前記監視対象機器の通信速度を測定する測定部と、
該測定部が測定した通信速度、及び前記監視対象機器が使用するネットワーク回線の回線速度を比較し、前記ネットワーク回線が輻輳状態であるか否かを判定する回線判定部をさらに備え、
前記通知部は、前記回線判定部の判定結果に基づいて、通知内容を決定する
付記１に記載の監視装置。
【００６５】
（付記３）
送信したパケットの到達を確認したことを示す確認応答メッセージを、前記監視対象機器が受信したことを検出する検出部をさらに備え、
該検出部が前記確認応答メッセージの受信を検出した場合、前記算出部は、前記確認応答メッセージの受信直前に前記監視対象機器が送信したパケットを前記比率の算出対象から除外する
付記１又は２に記載の監視装置。
【００６６】
（付記４）
監視対象機器の送信するパケットのセグメント長、及び予め取得した監視対象機器の受信可能な最大セグメント長を比較し、
前記最大セグメント長より短いセグメント長を持つパケットの所定時間内の数が、前記所定時間内に前記監視対象機器が送信したパケット数に占める比率を算出し、
算出した比率が、前記パケット数に対応する閾値より大きい場合に、通知をする
処理をコンピュータに実行させるプログラム。
【００６７】
（付記５）
前記監視対象機器の通信速度を測定し、
測定した通信速度、及び前記監視対象機器が使用するネットワーク回線の回線速度を比較し、
前記ネットワーク回線が輻輳状態であるか否かを判定し、
判定結果に基づいて、通知内容を決定する
付記４に記載のプログラム。
【００６８】
（付記６）
送信したパケットの到達を確認したことを示す確認応答メッセージを、前記監視対象機器が受信したことを検出し、
前記監視対象機器が前記確認応答メッセージの受信直前に送信したパケットを前記比率の算出対象から除外する
付記４又は５に記載のプログラム。
【００６９】
（付記７）
コンピュータによって実行される監視方法であって、
監視対象機器の送信するパケットのセグメント長、及び予め取得した監視対象機器の受信可能な最大セグメント長を比較し、前記最大セグメント長より短いセグメント長を持つパケットの所定時間内の数が、前記所定時間内に前記監視対象機器が送信したパケット数に占める比率を算出し、
算出した比率が、前記パケット数に対応する閾値より大きい場合に、通知する
監視方法。
【００７０】
（付記８）
前記監視対象機器の通信速度を測定し、
測定した通信速度、及び前記監視対象機器が使用するネットワーク回線の回線速度を比較し、
前記ネットワーク回線が輻輳状態であるか否かを判定し、
判定結果に基づいて、通知内容を決定する
付記７に記載の方法。
【００７１】
（付記９）
送信したパケットの到達を確認したことを示す確認応答メッセージを、前記監視対象機器が受信したことを検出し、
前記監視対象機器が前記確認応答メッセージの受信直前に送信したパケットを前記比率の算出対象から除外する
付記７又は８に記載の方法。
【符号の説明】
【００７２】
１  監視装置
１１  ＣＰＵ
１２  ＲＡＭ
１３  記憶部
１３Ｐ  制御プログラム
１３Ｔ  マスタテーブル／データテーブル
１３１  コネクション情報テーブル
１３２  ＭＳＳテーブル
１３３  正常／輻輳パケット数テーブル
１３４  輻輳判定パラメータテーブル
１３５  回線速度閾値テーブル
１３６  ネットワーク帯域テーブル
１３７  直前パケット種別テーブル
１４  時計部
１５  通信部
２、３、４  サーバコンピュータ（監視対象機器）
５  スイッチ
６  クライアント
【図１】
0005786733.tif 000002
【図２】
0005786733.tif 000003
【図３】
0005786733.tif 000004
【図４】
0005786733.tif 000005
【図５】
0005786733.tif 000006
【図６】
0005786733.tif 000007
【図７】
0005786733.tif 000008
【図８】
0005786733.tif 000009
【図９】
0005786733.tif 000010
【図１０】
0005786733.tif 000011
【図１１】
0005786733.tif 000012
【図１２】
0005786733.tif 000013
【図１３】
0005786733.tif 000014
【図１４】
0005786733.tif 000015
【図１５】
0005786733.tif 000016
【図１６】
0005786733.tif 000017
【図１７】
0005786733.tif 000018
【図１８】
0005786733.tif 000019
【図１９】
0005786733.tif 000020
【図２０】
0005786733.tif 000021
【図２１】
0005786733.tif 000022
【図２２】
0005786733.tif 000023