(57)【要約】      （修正有）【課題】通信状態の診断において重要なパケットの消失を防ぐ制御プログラム、方法及び装置を提供する。【解決手段】パケット制御方法は、伝送過程のパケットから複製されたパケットをバッファに書き込む処理と、通信状況を診断する装置へ転送するパケットをバッファから読み取る処理と、バッファに蓄積された未転送パケットのうち、所定プロトコルにおける接続手続及び切断手続に含まれる制御パケットを選別し、当該制御パケット以外の未転送パケットの一部を廃棄する廃棄処理とを含む。【選択図】図７
2019087870.tif 000002
【特許請求の範囲】
【請求項１】
伝送過程のパケットから複製されたパケットをバッファに書き込む処理と、
通信状況を診断する装置へ転送する前記パケットを前記バッファから読み取る処理と、
前記バッファに蓄積された未転送パケットのうち、所定プロトコルにおける接続手続及び切断手続に含まれる制御パケットを選別し、当該制御パケット以外の未転送パケットの一部を廃棄する廃棄処理と
をコンピュータに実行させるパケット制御プログラム。
【請求項２】
前記廃棄処理において、本体データを含むパケットを廃棄した場合に、当該パケットに対する応答パケットを選別し、当該応答パケットを廃棄しない
請求項１記載のパケット制御プログラム。
【請求項３】
前記廃棄処理において、前記パケットの送信元又は宛先に関する条件に基づいて特定されるコネクションに係る前記未転送パケットを廃棄しない
請求項１又は２記載のパケット制御プログラム。
【請求項４】
伝送過程のパケットから複製されたパケットをバッファに書き込む処理と、
通信状況を診断する装置へ転送する前記パケットを前記バッファから読み取る処理と、
前記バッファに蓄積された未転送パケットのうち、所定プロトコルにおける接続手続及び切断手続に含まれる制御パケットを選別し、当該制御パケット以外の未転送パケットの一部を廃棄する廃棄処理と
を含み、コンピュータにより実行されるパケット制御方法。
【請求項５】
伝送過程のパケットから複製されたパケットをバッファに書き込む書込部と、
通信状況を診断する装置へ転送する前記パケットを前記バッファから読み取る読取部と、
前記バッファに蓄積された未転送パケットのうち、所定プロトコルにおける接続手続及び切断手続に含まれる制御パケットを選別し、当該制御パケット以外の未転送パケットの一部を廃棄する廃棄部と
を有するパケット制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複製したパケットを転送する技術に関する。
【背景技術】
【０００２】
例えばスイッチ装置でミラーリングしたパケットを診断装置に転送して、システムの通信状況を診断する場合に、ネットワークにおける通信負荷を考慮して、スイッチ装置において帯域制御を行うことがある。
【０００３】
帯域制御では、パケットを一時的にバッファに蓄え、使用する帯域を抑制しながらパケットを送り出す。但し、蓄積するパケットが多くなってバッファの容量を超える事態になれば、その後ミラーリングしたパケットを無作為に消失することになる。
【０００４】
一方、診断装置がシステムの通信状況をより正しく診断するために重要な指標がある。例えばＴＣＰ（Transmission Control Protocol）のように、接続状態を前提としてデータをやり取りする仕組みの場合には、接続期間は基礎的な指標である。接続期間は、平均接続時間や１回の接続当たりのデータ伝送量などを求める場合に用いられる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００２−２８１０８６号公報
【特許文献２】特開２００８−０８５６９４号公報
【特許文献３】特開２０１２−００４７８１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明の目的は、一側面では、通信状態の診断において重要なパケットの消失を防ぐことである。
【課題を解決するための手段】
【０００７】
一態様に係るパケット制御方法は、（Ａ）伝送過程のパケットから複製されたパケットをバッファに書き込む処理と、（Ｂ）通信状況を診断する装置へ転送するパケットをバッファから読み取る処理と、（Ｃ）バッファに蓄積された未転送パケットのうち、所定プロトコルにおける接続手続及び切断手続に含まれる制御パケットを選別し、当該制御パケット以外の未転送パケットの一部を廃棄する廃棄処理とを含む。
【発明の効果】
【０００８】
一側面としては、通信状態の診断において重要なパケットの消失を防ぐことができる。
【図面の簡単な説明】
【０００９】
【図１】図１は、システム構成例を示す図である。
【図２】図２は、ＴＣＰにおける接続シーケンスの例を示す図である。
【図３】図３は、ＴＣＰにおけるデータ伝送のシーケンスの例を示す図である。
【図４】図４は、ＴＣＰにおける切断シーケンスの例を示す図である。
【図５】図５は、ＴＣＰにおけるデータ伝送のシーケンスの例を示す図である。
【図６】図６は、仮想スイッチのモジュール構成例を示す図である。
【図７】図７は、初期処理（Ａ）フローを示す図である。
【図８】図８は、監視処理フローを示す図である。
【図９】図９は、書き込み処理（Ａ）フローを示す図である。
【図１０】図１０は、リングバッファ及び無効フラグの例を示す図である。
【図１１】図１１は、読み取り処理フローを示す図である。
【図１２】図１２は、廃棄処理（Ａ）フローを示す図である。
【図１３】図１３は、コネクションテーブルの例を示す図である。
【図１４】図１４は、コネクションテーブルの生成処理フローを示す図である。
【図１５】図１５は、統計テーブルの例を示す図である。
【図１６】図１６は、統計テーブルの生成処理（Ａ）フローを示す図である。
【図１７】図１７は、目標削減量の算出処理フローを示す図である。
【図１８】図１８は、制御テーブルの例を示す図である。
【図１９】図１９は、制御テーブルの生成処理（Ａ）フローを示す図である。
【図２０】図２０は、廃棄処理（Ａ）フローを示す図である。
【図２１】図２１は、選別処理（Ａ）フローを示す図である。
【図２２】図２２は、ＵＤＰ（User Datagram Protocol）処理フローを示す図である。
【図２３】図２３は、ＴＣＰ処理フローを示す図である。
【図２４】図２４は、制御パケット処理フローを示す図である。
【図２５】図２５は、制御パケット処理フローを示す図である。
【図２６】図２６は、制御パケット処理フローを示す図である。
【図２７】図２７は、制御パケット処理フローを示す図である。
【図２８】図２８は、制御パケット処理フローを示す図である。
【図２９】図２９は、制御パケット処理フローを示す図である。
【図３０】図３０は、ＴＣＰ処理フローを示す図である。
【図３１】図３１は、ＴＣＰ処理フローを示す図である。
【図３２】図３２は、条件テーブルの例を示す図である。
【図３３】図３３は、初期処理（Ｂ）フローを示す図である。
【図３４】図３４は、書き込み処理（Ｂ）フローを示す図である。
【図３５】図３５は、廃棄処理（Ｂ）フローを示す図である。
【図３６】図３６は、実施の形態２におけるコネクションテーブルの例を示す図である。
【図３７】図３７は、除外設定処理フローを示す図である。
【図３８】図３８は、統計テーブルの生成処理（Ｂ）フローを示す図である。
【図３９】図３９は、実施の形態２における制御テーブルの例を示す図である。
【図４０】図４０は、制御テーブルの生成処理（Ｂ）フローを示す図である。
【図４１】図４１は、実施の形態２における統計テーブルの例を示す図である。
【図４２】図４２は、選別処理（Ｂ）フローを示す図である。
【図４３】図４３は、コンピュータの機能ブロック図である。
【発明を実施するための形態】
【００１０】
［実施の形態１］
図１に、システム構成例を示す。物理サーバ装置１０３ａは、仮想スイッチ１０７ａを有し、物理サーバ装置１０３ｂは、仮想スイッチ１０７ｂを有し、更に物理サーバ装置１０３ｃは、仮想スイッチ１０７ｃを有する。仮想スイッチ１０７ａの仮想ポート１０９ａには、仮想マシン１０５ａが接続されている。仮想スイッチ１０７ａの仮想ポート１０９ｂには、仮想マシン１０５ｂが接続されている。仮想スイッチ１０７ｂの仮想ポート１０９ｃには、仮想マシン１０５ｃが接続されている。仮想スイッチ１０７ｃの仮想ポート１０９ｄには、仮想マシン１０５ｄが接続されている。また、仮想スイッチ１０７ａ乃至ｃは、それぞれネットワークに接続している。ネットワークは、例えば、ＬＡＮ（Local Area Network）である。
【００１１】
例えば、仮想マシン１０５ａから仮想マシン１０５ｂへパケットを送る場合、仮想マシン１０５ａから仮想ポート１０９ａへ入力されたパケットは、仮想ポート１０９ｂから出力され仮想マシン１０５ｂに至る。逆に、仮想マシン１０５ｂから仮想マシン１０５ａへパケットを送る場合、仮想マシン１０５ｂから仮想ポート１０９ｂへ入力されたパケットは、仮想ポート１０９ａから出力され仮想マシン１０５ａに至る。
【００１２】
また、仮想マシン１０５ａから仮想マシン１０５ｃへパケットを送る場合、仮想マシン１０５ａから仮想ポート１０９ａへ入力されたパケットは、ネットワークを介して仮想スイッチ１０７ａから仮想スイッチ１０７ｂへ送信される。そして、当該パケットは、仮想ポート１０９ｃから出力され仮想マシン１０５ｃに至る。逆に、仮想マシン１０５ｃから仮想マシン１０５ａへパケットを送る場合、仮想マシン１０５ｃから仮想ポート１０９ｃへ入力されたパケットは、ネットワークを介して仮想スイッチ１０７ｂから仮想スイッチ１０７ａへ送信される。そして、当該パケットは、仮想ポート１０９ａから出力され仮想マシン１０５ａに至る。
【００１３】
他の仮想マシン１０５間におけるパケットの伝送も同様である。この例における診断対象のシステム１０１は、物理サーバ装置１０３ａ及び物理サーバ装置１０３ｂ他と、これらが有する仮想マシン１０５ａ乃至仮想マシン１０５ｃ他と、同じく仮想スイッチ１０７ａ及び仮想スイッチ１０７ｂ他とを含む。
【００１４】
仮想マシン１０５ｄに設けられた診断部１１３は、診断対象のシステム１０１に含まれる仮想マシン１０５ａ乃至ｃ間のデータ伝送の状態を診断する。ここでは、仮想ポート１０９ａを通過するパケットを監視する場合を説明する。ポートミラーリング部１１１は、仮想ポート１０９ａを通過するパケットをミラーリングして、複製されたパケットを診断部１１３宛に転送する。
【００１５】
診断部１１３は、ポートミラーリング部１１１から受信したパケットを解析する。具体的には、診断部１１３は、例えばＬ４（ＯＳＩ（Open Systems Interconnection）参照モデルの第４層、トランスポート層）診断又はＬ７（ＯＳＩ参照モデルの第７層、アプリケーション層）診断を行う。
【００１６】
このとき、ポートミラーリング部１１１から診断部１１３へのパケットの転送によって、ネットワークにおける伝送負荷が増加する。この伝送負荷を軽減するために、ポートミラーリング部１１１は、Ｑｏｓ（Quality of Service）制御、具体的には帯域制御を行う。
【００１７】
そのため、ポートミラーリング部１１１は、ミラーリングで複製したパケットを一旦バッファに蓄積し、使用する帯域が基準を超えない範囲で、パケットを送出するようにする。従って、蓄積するパケットが限界量に至った場合には、限界量を超える分のパケットは廃棄される。
【００１８】
本実施の形態で、ポートミラーリング部１１１は、診断部１１３におけるＬ４診断において重要なパケットを廃棄しないように制御する。尚、Ｌ７診断については、通常の帯域制御によってパケットが廃棄されるようにする。断片的なパケットの集まりでは、診断部１１３がＬ７診断を行えないからである。
【００１９】
以下、廃棄の対象から除外されるパケットの例について説明する。図２に、ＴＣＰにおける接続シーケンスの例を示す。ＴＣＰ接続は、３ウェイハンドシェイクによって行われる。図２の例では、仮想マシン１０５ａが仮想マシン１０５ｃへＴＣＰ接続を要求する。
【００２０】
この例では、まず、仮想マシン１０５ａが仮想マシン１０５ｃへＳＹＮパケット２０１を送信する。ＳＹＮパケット２０１は、ＴＣＰヘッダに設けられた制御フラグの１つであるＳＹＮフラグがＯＮであって、他の制御フラグはＯＦＦである。ＳＹＮパケット２０１のシーケンス番号は、１００であるものとする。
【００２１】
ＳＹＮパケット２０１を受信した仮想マシン１０５ｃは、ＳＹＮ−ＡＣＫパケット２０３を仮想マシン１０５ａへ送信する。ＳＹＮ−ＡＣＫパケット２０３は、ＳＹＮフラグ及び制御フラグの一つであるＡＣＫフラグがＯＮであって、他の制御フラグはＯＦＦである。ＳＹＮ−ＡＣＫパケット２０３のＡＣＫ番号（確認応答番号）は、ＳＹＮパケット２０１のシーケンス番号：１００に１を加えた１０１である。また、ＳＹＮ−ＡＣＫパケット２０３のシーケンス番号は、５０００であるものとする。
【００２２】
ＳＹＮ−ＡＣＫパケット２０３を受信した仮想マシン１０５ａは、ＡＣＫパケット２０５を仮想マシン１０５ｃへ送信する。ＡＣＫパケット２０５は、ＡＣＫフラグがＯＮであって、他の制御フラグはＯＦＦである。ＡＣＫパケット２０５のＡＣＫ番号は、ＳＹＮ−ＡＣＫパケット２０３のシーケンス番号：５０００に１を加えた５００１である。
【００２３】
このように、先に送られたパケットと、その応答のパケットとの対応関係は、先に送られたパケットのシーケンス番号と、応答のパケットのＡＣＫ番号とによって特定される。
【００２４】
本実施の形態におけるポートミラーリング部１１１は、ＴＣＰ接続の手続きにおいて伝送される一連の制御パケット、つまりＳＹＮパケット２０１、ＳＹＮ−ＡＣＫパケット２０３及びＡＣＫパケット２０５を廃棄対象から除外する。診断部１１３は、これらの一連の制御パケットを受け取れば、ＴＣＰ接続を事象として捉えることができる。
【００２５】
続いて、ＴＣＰ接続中も伝送されるパケットについて説明する。ＴＣＰ接続中には、主にデータの伝送を目的として通信が行われる。伝送対象の実データは、ＴＣＰパケットにおける本体データとして送られる。
【００２６】
図３に、ＴＣＰにおけるデータ伝送のシーケンスの例を示す。図３の例は、交互にデータが送られる例を示している。パケット３０１乃至パケット３１１は、いずれも本体データを含んでいる。例えば、仮想マシン１０５ａから仮想マシン１０５ｃへ送られるパケット３０１の本体データのサイズは、２００ｂｙｔｅである。また、パケット３０１のシーケンス番号は、１０１である。パケット３０１乃至パケット３１１は、ＡＣＫフラグがＯＮであって、他の制御フラグはＯＦＦである。
【００２７】
例えば、仮想マシン１０５ｃから仮想マシン１０５ａへ送られるパケット３０３は、サイズ：５００ｂｙｔｅの本体データを伝送するとともに、パケット３０１に対する応答の意味を持つ。パケット３０３のＡＣＫ番号は、基礎となるパケット３０１における本体データのサイズ：２００にシーケンス番号：１０１を加えた３０１である。パケット３０３とパケット３０５との関係、パケット３０５とパケット３０７との関係、パケット３０７とパケット３０９との関係、及びパケット３０９とパケット３１１との関係においても同様である。
【００２８】
このように、先に送られたパケットと、その応答のパケットとの対応関係は、先に送られたパケットにおける本体データのサイズとシーケンス番号との合計と、応答のパケットのＡＣＫ番号とによって特定される。
【００２９】
本実施の形態におけるポートミラーリング部１１１は、先に送られたパケットを廃棄対象とした場合に、その応答のパケットを廃棄対象にしないようにする。このようにすれば、診断部１１３は、伝送データの事象を捉えやすい。もしも、先に送られたパケットとその応答のパケットとに関する内容を得られなければ、診断部１１３は、伝送データの事象を捉えにくい。
【００３０】
図４に、ＴＣＰにおける切断シーケンスの例を示す。ＴＣＰでは、何れか一方の装置が他方の装置へ接続の終了を要求することによって、切断の手続きが始まる。
【００３１】
この例では、まず、仮想マシン１０５ｃが仮想マシン１０５ａへ、ＡＣＫ−ＦＩＮパケット４０１を送信する。ＡＣＫ−ＦＩＮパケット４０１は、ＡＣＫフラグ及び制御フラグの一つであるＦＩＮフラグがＯＮであって、他の制御フラグはＯＦＦである。ＡＣＫ−ＦＩＮパケット４０１のシーケンス番号は、２０７０５であるものとする。
【００３２】
ＡＣＫ−ＦＩＮパケット４０１を受信した仮想マシン１０５ａは、ＡＣＫパケット４０３を仮想マシン１０５ｃへ送信する。ＡＣＫパケット４０３のＡＣＫ番号は、ＡＣＫ−ＦＩＮパケット４０１のシーケンス番号：２０７０５に１を加えた２０７０６である。
【００３３】
仮想マシン１０５ａは、続けてＡＣＫ−ＦＩＮパケット４０５を仮想マシン１０５ｃへ送信する。ＡＣＫ−ＦＩＮパケット４０５のシーケンス番号は、１５３００であるものとする。
【００３４】
ＡＣＫ−ＦＩＮパケット４０５を受信した仮想マシン１０５ｃは、ＡＣＫパケット４０７を仮想マシン１０５ａへ送信する。ＡＣＫパケット４０７のＡＣＫ番号は、ＡＣＫ−ＦＩＮパケット４０５のシーケンス番号：１５３００に１を加えた１５３０１である。
【００３５】
このように、切断シーケンスにおいて、先に送られたＡＣＫ−ＦＩＮパケットと、その応答のＡＣＫパケットとの対応関係は、先に送られたＡＣＫ−ＦＩＮパケットのシーケンス番号と、その応答のＡＣＫパケットのＡＣＫ番号とによって特定される。
【００３６】
本実施の形態におけるポートミラーリング部１１１は、ＴＣＰ切断の手続きにおいて伝送される一連の制御パケット、つまりＡＣＫ−ＦＩＮパケット４０１、ＡＣＫパケット４０３、ＡＣＫ−ＦＩＮパケット４０５及びＡＣＫパケット４０７を廃棄対象から除外する。診断部１１３は、これらの一連の制御パケットを受け取れば、ＴＣＰ切断を事象として捉えることができる。
【００３７】
尚、図３に示した例に限らず、データ伝送のパケットが連続的に送出されることがある。図５に、ＴＣＰにおけるデータ伝送のシーケンスの例をもう一つ示す。
【００３８】
この例で、仮想マシン１０５ａは、本体データを含むパケット５０１乃至パケット５０５を連続的に送出する。パケット５０１乃至パケット５０５の宛先は、いずれも仮想マシン１０５ｃである。パケット５０１の本体データのサイズは、１３００ｂｙｔｅであり、パケット５０１のシーケンス番号は、７９０１である。パケット５０３の本体データのサイズは、１３００ｂｙｔｅであり、パケット５０３のシーケンス番号は、９２０１である。また、パケット５０５の本体データのサイズは、１３００ｂｙｔｅであり、パケット５０５のシーケンス番号は、１０５０１である。
【００３９】
一方、仮想マシン１０５ｃは、パケット５０１及びパケット５０３の受信を完了した時点で、ＡＣＫパケット５０７を仮想マシン１０５ａへ送る。ＡＣＫパケット５０７のＡＣＫ番号は、後に受信したパケット５０３における本体データのサイズ：１３００にシーケンス番号：９２０１を加えた１０５０１である。
【００４０】
その後、仮想マシン１０５ｃは、パケット５０５の受信を完了した時点で、ＡＣＫパケット５０９を仮想マシン１０５ａへ送る。ＡＣＫパケット５０９のＡＣＫ番号は、受信したパケット５０５における本体データのサイズ：１３００にシーケンス番号１０５０１を加えた１１８０１である。
【００４１】
本実施の形態におけるポートミラーリング部１１１は、パケット５０３を廃棄対象とした場合に、ＡＣＫパケット５０７を廃棄対象としない。ＡＣＫパケット５０７のＡＣＫ番号は、パケット５０３における本体データのサイズとシーケンス番号との合計と一致するので、対応関係が特定される。
【００４２】
また、同じくポートミラーリング部１１１は、パケット５０１を廃棄対象とした場合にも、ＡＣＫパケット５０７を廃棄対象としない。ＡＣＫパケット５０７のＡＣＫ番号は、パケット５０１における本体データのサイズとシーケンス番号との合計よりも大きいので、対応関係が特定される。
【００４３】
このように、廃棄対象となったパケットにおける本体データのサイズとシーケンス番号の合計と、ＡＣＫパケットのＡＣＫ番号を比較すれば、ＡＣＫパケットを廃棄対象から除外すべきか否かを判定できる。
【００４４】
尚、図５の例で、ポートミラーリング部１１１は、パケット５０５を廃棄対象とした場合にも、ＡＣＫパケット５０９を廃棄対象としない。以上で本実施の形態における概要の説明を終える。
【００４５】
以下、仮想スイッチ１０７の動作について説明する。図６に、仮想スイッチ１０７のモジュール構成例を示す。仮想スイッチ１０７は、受信部６０１、送信部６０３及びポートミラーリング部１１１を有する。受信部６０１は、各種データを受信する。送信部６０３は、各種データを送信する。
【００４６】
ポートミラーリング部１１１は、初期処理部６０５、監視部６２１、書き込み部６２３、読み取り部６２５及び廃棄部６２７を有する。初期処理部６０５は、初期処理を実行する。初期処理部６０５は、特定部６０７、起動部６０９及び取得部６１１を有する。特定部６０７は、監視の対象となる仮想ポート１０９（以下、対象ポートという）を特定する。起動部６０９は、各種処理を起動する。取得部６１１は、診断部１１３から診断種別を取得する。尚、実施の形態２では、取得部６１１は、診断部１１３から条件テーブルを取得する。
【００４７】
監視部６２１は、監視処理を実行する。監視処理の詳細については、後述する。書き込み部６２３は、書き込み処理を実行する。書き込み処理の詳細については、後述する。読み取り部６２５は、読み取り処理を実行する。読み取り処理の詳細については、後述する。廃棄部６２７は、廃棄処理を実行する。廃棄処理の詳細については、後述する。
【００４８】
ポートミラーリング部１１１は、更にリングバッファ６３１、ポインタ記憶部６３３、フラグ記憶部６３５、コネクションテーブル記憶部６３７、統計テーブル記憶部６３９、制御テーブル記憶部６４１、内部パラメータ記憶部６４３及び条件テーブル記憶部６４５を有する。
【００４９】
リングバッファ６３１は、パケットを格納するための領域を複数有する。リングバッファ６３１については、図１０を用いて後述する。ポインタ記憶部６３３は、ライトポインタ及びリードポインタを記憶する。フラグ記憶部６３５は、無効フラグを記憶する。無効フラグについては、図１０を用いて後述する。コネクションテーブル記憶部６３７は、コネクションテーブルを記憶する。コネクションテーブルについては、図１３を用いて後述する。統計テーブル記憶部６３９は、統計テーブルを記憶する。統計テーブルについては、図１５を用いて後述する。制御テーブル記憶部６４１は、制御テーブルを記憶する。制御テーブルについては、図１８を用いて後述する。内部パラメータ記憶部６４３は、各種内部パラメータを記憶する。条件テーブル記憶部６４５は、条件テーブルを記憶する。条件テーブルについては、実施の形態２において図３２を用いて後述する。
【００５０】
上述した受信部６０１、送信部６０３、初期処理部６０５、特定部６０７、起動部６０９、取得部６１１、監視部６２１、書き込み部６２３、読み取り部６２５及び廃棄部６２７は、ハードウエア資源（例えば、図４３）と、以下で述べる処理をＣＰＵ（Central Processing Unit）２５０３に実行させるプログラムとを用いて実現される。
【００５１】
上述したリングバッファ６３１、ポインタ記憶部６３３、フラグ記憶部６３５、コネクションテーブル記憶部６３７、統計テーブル記憶部６３９、制御テーブル記憶部６４１、内部パラメータ記憶部６４３及び条件テーブル記憶部６４５は、ハードウエア資源（例えば、図４３）を用いて実現される。
【００５２】
本実施の形態では、まず初期処理（Ａ）が実行される。図７に、初期処理（Ａ）フローを示す。特定部６０７は、仮想スイッチ１０７が有する仮想ポート１０９のうち、対象ポートを特定する（Ｓ７０１）。以下では、仮想ポート１０９ａが特定された場合の例を説明する。特定の仕方は、任意である。
【００５３】
起動部６０９は、監視部６２１による監視処理を起動する（Ｓ７０３）。監視部６２１は、監視処理において、対象ポートを通過するパケットを監視して、通過するパケットを複製する。この例における監視処理は、独立したプロセスとして動作する。
【００５４】
図８に、監視処理フローを示す。以下では、仮想マシン１０５間で伝送されるパケットをシステムパケットという。そして、ミラーリングによって複製されたパケットをミラーパケットという。
【００５５】
監視部６２１は、対象ポートに入力されたシステムパケット又は対象ポートから出力されるシステムパケットをフックする（Ｓ８０１）。つまり、対象ポートに入力されたシステムパケット及び対象ポートから出力されるシステムパケットのいずれも、フックの対象である。
【００５６】
監視部６２１は、システムパケットと同一のミラーパケットを生成する（Ｓ８０３）。そして、監視部６２１は、フックしたシステムパケットをシステムパケットの宛先へ伝送する（Ｓ８０５）。
【００５７】
監視部６２１は、ミラーパケットを書き込み部６２３へ渡して（Ｓ８０７）、Ｓ８０１に示した処理に戻って、上述した処理を繰り返す。
【００５８】
図７の説明に戻る。起動部６０９は、書き込み部６２３による書き込み処理（Ａ）を起動する（Ｓ７０５）。この例における書き込み処理（Ａ）は、独立したプロセスとして動作する。書き込み部６２３は、書き込み処理（Ａ）において、ミラーパケットをリングバッファ６３１に書き込む。
【００５９】
図９に、書き込み処理（Ａ）フローを示す。書き込み部６２３は、監視部６２１からミラーパケットを受けると（Ｓ９０１）、未転送パケットの数がリングバッファ６３１の領域数Ｎと一致するか否かを判定する（Ｓ９０３）。
【００６０】
ここで、図１０を用いて、リングバッファ６３１の構成及び無効フラグについて説明する。リングバッファ６３１の構成及びその操作方法は、従来技術による。この例では、リングバッファ６３１は、ミラーパケットを格納するための領域をＮ個有している。Ｎ番目の領域の次は、１番目の領域となるように扱われる。
【００６１】
ライトポインタは、次にミラーパケットを格納する領域を指す。従来技術の通り、ライトポインタの値を領域の数Ｎで除した余りの値によって、領域が特定される。この例で、ｍ周回においてライトポインタの値がＮ×（ｍ−１）＋ｊであれば、ライトポインタは、ｊ番目の領域を指していることになる。
【００６２】
また、リードポインタは、次にミラーパケットを取得する領域を指す。ライトポインタの場合と同様に、ｍ周回においてリードポインタの値がＮ×（ｍ−１）＋ｉであれば、リードポインタは、ｉ番目の領域を指していることになる。
【００６３】
従って、ｉ番目の領域からｊ−１番目の領域に格納されているミラーパケットは、まだ転送されていない。これらのパケットを、未転送パケットという。未転送パケットの数は、ライトポインタの値からリードポインタの値を引くことによって求められる。
【００６４】
例えば、ライトポインタとリードポインタとが一致する場合には、未転送パケットがない。また、ライトポインタの値からリードポインタの値を引いた値がＮであれば、リングバッファ６３１がフルである。
【００６５】
本実施の形態では、各領域に対応する無効フラグを設ける。未転送パケットの領域につき、当該領域に対応する無効フラグがＯＮであれば、当該未転送パケットが廃棄されたことを意味する。従って、当該未転送パケットは、診断部１１３へ送られない。一方、当該領域に対応する無効フラグがＯＦＦであれば、当該未転送パケットが廃棄されていないことを意味する。従って、当該未転送パケットは、診断部１１３へ送られる。
【００６６】
図９の説明に戻る。未転送パケットの数がリングバッファ６３１の領域数Ｎと一致する場合には、リングバッファ６３１がフルであるので当該ミラーパケットを格納しない。そのため、そのままＳ９０１に示した処理に戻る。従来技術の通り、格納されないミラーパケットは廃棄される。
【００６７】
一方、未転送パケットの数がリングバッファ６３１の領域数Ｎと一致しない場合には、書き込み部６２３は、ライトポインタが指す領域にミラーパケットを格納する（Ｓ９０５）。
【００６８】
また、書き込み部６２３は、当該領域に対応する無効フラグをＯＦＦに設定し（Ｓ９０７）、ライトポインタに１を加える（Ｓ９０９）。そして、Ｓ９０１に示した処理に戻って、上述した処理を繰り返す。
【００６９】
図７の説明に戻る。起動部６０９は、読み取り部６２５による読み取り処理を起動する（Ｓ７０７）。この例における読み取り処理は、独立したプロセスとして動作する。
【００７０】
図１１に、読み取り処理フローを示す。読み取り部６２５は、所定時間の経過を待つ（Ｓ１１０１）。この例では、ＱｏＳ（Quality of Service）制御の一種である帯域制御を行うものとする。所定時間は、想定される帯域に基づいて予め決められているものとする。
【００７１】
読み取り部６２５は、リードポインタがライトポインタと一致するか否かを判定する（Ｓ１１０３）。リードポインタがライトポインタと一致する場合には、未転送パケットがないので、そのままＳ１１０１の処理に戻る。
【００７２】
一方、リードポインタがライトポインタと一致しない場合には、読み取り部６２５は、リードポインタが指す領域に対応する無効フラグがＯＮか否かを判定する（Ｓ１１０５）。
【００７３】
リードポインタが指す領域に対応する無効フラグがＯＮである場合には、当該領域に格納されているミラーパケットが廃棄対象であるので、読み取り部６２５は、リードポインタに１を加えて（Ｓ１１０７）、Ｓ１１０３に示した処理に戻って、上述した処理を繰り返す。
【００７４】
一方、リードポインタが指す領域に対応する無効フラグがＯＦＦである場合には、読み取り部６２５は、リードポインタが指す領域からミラーパケットを取得して（Ｓ１１０９）、リードポインタに１を加える（Ｓ１１１１）。送信部６０３は、ミラーパケットを診断部１１３宛てに送信して（Ｓ１１１３）、Ｓ１１０１に示した処理に戻って、上述した処理を繰り返す。
【００７５】
図７の説明に戻る。取得部６１１は、診断部１１３における診断種別を診断部１１３に問い合わせる（Ｓ７０９）。取得部６１１は、受信部６０１を介して回答を受信する（Ｓ７１１）。起動部６０９は、回答がＬ４診断であるか否かを判定する（Ｓ７１３）。
【００７６】
回答がＬ４診断である場合には、起動部６０９は、廃棄部６２７による廃棄処理（Ａ）を起動する（Ｓ７１５）。この例における廃棄処理（Ａ）は、独立したプロセスとして動作する。そして、初期処理（Ａ）を終える。回答がＬ４診断でない場合には、そのまま初期処理（Ａ）を終える。
【００７７】
図１２に、廃棄処理（Ａ）フローを示す。廃棄部６２７は、所定時間の経過を待つ（Ｓ１２０１）。この例では、周期的に未転送パケットの廃棄をおこなうものとする。
【００７８】
廃棄部６２７は、ライトポインタ及びリードポインタに基づいて未転送パケットの数を算出する（Ｓ１２０３）。具体的には、廃棄部６２７は、ライトポインタの値からリードポインタの値を引くことによって、未転送パケットの数を求める。
【００７９】
廃棄部６２７は、未転送パケットの数が閾値以上であるか否かを判定する（Ｓ１２０５）。未転送パケットの数が閾値に満たない場合には、未使用の領域に余裕があるので、そのままＳ１２０１に示した処理に戻って、上述した処理を繰り返す。
【００８０】
一方、未転送パケットの数が閾値以上である場合には、廃棄部６２７は、コネクションテーブルの生成処理を実行する（Ｓ１２０７）。
【００８１】
図１３に、コネクションテーブルの例を示す。この例におけるコネクションテーブルは、コネクションに対応するレコードを有している。尚、コネクションテーブルで扱うコネクションは、伝送方向を加味する。つまり、送信元と宛先との関係が逆転する関係を１つのコネクションに纏めない。送信元と宛先との関係が逆転する場合は、逆方向に係る別のコネクションとして扱う。
【００８２】
コネクションテーブルのレコードは、コネクションＩＤが設定されるフィールドと、送信元ＩＰアドレスが設定されるフィールドと、宛先ＩＰアドレスが設定されるフィールドと、プロトコルが設定されるフィールドと、送信元ポート番号が設定されるフィールドと、宛先ポート番号が設定されるフィールドと、パケット数が設定されるフィールドと、未転送量が設定されるフィールドとを有している。
【００８３】
コネクションＩＤは、コネクションを識別する。この例における送信元ＩＰアドレスは、送信側の仮想マシン１０５を特定する。この例における宛先ＩＰアドレスは、受信側の仮想マシン１０５を特定する。プロトコルは、Ｌ４層のプロトコルである。この例における送信元ポート番号は、送信側の仮想マシン１０５におけるポートを特定する。宛先ポート番号は、受信側の仮想マシン１０５におけるポートを特定する。パケット数は、当該コネクションに係る未転送パケットの数である。未転送量は、当該コネクションに係る未転送パケットのサイズの合計である。
【００８４】
図１４に、コネクションテーブルの生成処理フローを示す。廃棄部６２７は、未転送パケットを１つ特定する（Ｓ１４０１）。例えば、廃棄部６２７は、リードポインタが指す領域からライトポインタが指す領域の１つ前の領域まで順次領域を１つ特定し、当該領域に格納されている未転送パケットを特定する。
【００８５】
廃棄部６２７は、当該未転送パケットのヘッダから、送信元ＩＰアドレス、宛先ＩＰアドレス、プロトコル、送信元ポート番号及び宛先ポート番号のセットを抽出する（Ｓ１４０３）。
【００８６】
廃棄部６２７は、コネクションテーブルに、当該セットが設定されているレコードがあるか否かを判定する（Ｓ１４０５）。
【００８７】
コネクションテーブルに、当該セットが設定されているレコードがないと判定した場合には、廃棄部６２７は、コネクションテーブルに新しいレコードを設ける（Ｓ１４０７）。そして、廃棄部６２７は、コネクションＩＤを割り当て、当該レコードに当該コネクションＩＤを設定する（Ｓ１４０９）。
【００８８】
廃棄部６２７は、当該セット、つまりＳ１４０３で抽出した送信元ＩＰアドレス、宛先ＩＰアドレス、プロトコル、送信元ポート番号及び宛先ポート番号を当該レコードに設定する（Ｓ１４１１）。また、廃棄部６２７は、当該コネクションのパケット数を１にする（Ｓ１４１３）。更に、廃棄部６２７は、当該コネクションの未転送量に当該未転送パケットのサイズを設定する（Ｓ１４１５）。
【００８９】
Ｓ１４０５において、コネクションテーブルに、当該セットが設定されているレコードがあると判定した場合には、当該セットで特定されるコネクションが既にコネクションテーブルに登録されている。廃棄部６２７は、当該コネクションのパケット数、つまり当該レコードに設定されているパケット数に１を加える（Ｓ１４１７）。更に、廃棄部６２７は、当該コネクションの未転送量、つまり当該レコードに設定されている未転送量に当該未転送パケットのサイズを加える（Ｓ１４１９）。
【００９０】
Ｓ１４１５又はＳ１４１９の処理を終えると、廃棄部６２７は、未特定の未転送パケットがあるか否かを判定する（Ｓ１４２１）。未特定の未転送パケットがあると判定した場合には、Ｓ１４０１に示した処理に戻って、上述した処理を繰り返す。
【００９１】
一方、未特定の未転送パケットがないと判定した場合には、コネクションテーブルの生成処理を終え、呼び出し元の廃棄処理（Ａ）に復帰する。
【００９２】
図１２の説明に戻る。次に、廃棄部６２７は、統計テーブルの生成処理（Ａ）を実行する（Ｓ１２０９）。
【００９３】
図１５に、統計テーブルの例を示す。この例における統計テーブルは、コネクションに対応するレコードを有している。統計テーブルのレコードは、コネクションＩＤが設定されるフィールドと、パケット数割合が設定されるフィールドと、未転送量の割合が設定されるフィールドと、平均パケットサイズが設定されるフィールドと、目標削減量が設定されるフィールドとを有している。
【００９４】
コネクションＩＤは、コネクションを特定する。パケット数割合は、当該コネクションに係る未転送パケットの数が、未転送パケットの総数に占める割合である。未転送量の割合は、当該コネクションに係る未転送量が、全未転送パケットのサイズの合計（全体の未転送量）に占める割合である。平均パケットサイズは、当該コネクションに係る未転送パケットのサイズの平均値である。目標削減量は、当該コネクションに係る未転送量のうち、未転送パケットの廃棄によって削減しようとするデータ量である。
【００９５】
図１６に、統計テーブルの生成処理（Ａ）フローを示す。廃棄部６２７は、コネクションを１つ特定する（Ｓ１６０１）。具体的には、廃棄部６２７は、コネクションテーブルのレコードを順番に１つ特定し、当該レコードに設定されているコネクションＩＤを特定する。
【００９６】
廃棄部６２７は、統計テーブルに新しいレコードを設ける（Ｓ１６０３）。廃棄部６２７は、Ｓ１６０１で特定したコネクションＩＤを当該レコードに設定する（Ｓ１６０５）。
【００９７】
廃棄部６２７は、パケット数割合を算出し、算出したパケット数割合を当該レコードに設定する（Ｓ１６０７）。具体的には、廃棄部６２７は、各コネクションにおけるパケット数の合計を、当該コネクションにおけるパケット数で割って、パケット数割合を求める。
【００９８】
廃棄部６２７は、未転送量の割合を算出し、算出した未転送量の割合を当該レコードに設定する（Ｓ１６０９）。具体的には、廃棄部６２７は、各コネクションにおける未転送量の合計を、当該コネクションにおける未転送量で割って、未転送量の割合を求める。
【００９９】
廃棄部６２７は、平均パケットサイズを算出し、算出した平均パケットサイズを当該レコードに設定する（Ｓ１６１１）。具体的には、廃棄部６２７は、当該コネクションにおける未転送量を、当該コネクションにおけるパケット数で割って、平均パケットサイズを求める。
【０１００】
廃棄部６２７は、未特定のコネクションがあるか否かを判定する（Ｓ１６１３）。未特定のコネクションがあると判定した場合には、Ｓ１６０１に示した処理に戻って、上述した処理を繰り返す。
【０１０１】
一方、未特定のコネクションがないと判定した場合には、廃棄部６２７は、目標削減量の算出処理を実行する（Ｓ１６１５）。廃棄部６２７は、目標削減量の算出処理において、当該コネクションにおける未転送量のうち、未転送パケットの廃棄によって削減しようとするデータ量を算出する。
【０１０２】
図１７に、目標削減量の算出処理フローを示す。廃棄部６２７は、コネクションテーブルの各レコードに設定されている未転送量の合計を算出する（Ｓ１７０１）。
【０１０３】
廃棄部６２７は、未転送量の合計から基準値を引いて削減量を求める（Ｓ１７０３）。廃棄部６２７は、リングバッファ６３１の全体サイズに所定の割合を乗じて、基準値を求めるようにしてもよい。
【０１０４】
廃棄部６２７は、コネクションを１つ特定する（Ｓ１７０５）。具体的には、廃棄部６２７は、統計テーブルのレコードを順番に１つ特定する。
【０１０５】
廃棄部６２７は、当該コネクションに対応する未転送量の割合、つまり特定したレコードに設定されている未転送量の割合を得る（Ｓ１７０７）。廃棄部６２７は、削減量に当該未転送量の割合を乗じて、当該コネクションの目標削減量を算出し、算出した目標削減量を当該レコードに設定する（Ｓ１７０９）。
【０１０６】
廃棄部６２７は、未特定のコネクションがあるか否かを判定する（Ｓ１７１１）。未特定のコネクションがあると判定した場合には、Ｓ１７０５に示した処理に戻って、上述した処理を繰り返す。
【０１０７】
一方、未特定のコネクションがないと判定した場合には、目標削減量の算出処理を終え、呼び出し元の統計テーブルの生成処理（Ａ）に復帰する。
【０１０８】
図１６の説明に戻る。目標削減量の算出処理を終えると、統計テーブルの生成処理（Ａ）を終え、呼び出し元の廃棄処理（Ａ）に復帰する。
【０１０９】
図１２の説明に戻る。次に、廃棄部６２７は、制御テーブルの生成処理（Ａ）を実行する（Ｓ１２１１）。
【０１１０】
図１８に、制御テーブルの例を示す。この例における制御テーブルは、コネクションに対応するレコードを有している。制御テーブルのレコードは、コネクションＩＤが設定されるフィールドと、逆方向コネクションのフィールドと、廃棄量が設定されるフィールドと、カウンタのフィールドと、間引き間隔が設定されるフィールドと、複数の廃棄パケットに関するフィールドと、複数の制御パケットに関するフィールドとを有している。一のコネクションに関して、複数のパケットが廃棄されることがあるので、複数の廃棄パケットに関するフィールドが設けられる。また、一のコネクションに関して、複数の制御パケットに関するデータを保持するようにするので、複数の制御パケットに関するフィールドが設けられる。
【０１１１】
コネクションＩＤは、コネクションを特定する。逆方向コネクションのフィールドには、当該コネクションと逆方向のコネクションのＩＤが設定される。廃棄量は、当該コネクションに係る未転送パケットのうち、廃棄された未転送パケットのサイズの合計である。カウンタは、当該コネクションに係る未転送パケットの計数に用いられる。間引き間隔は、未転送パケットのうち廃棄されるパケットの割合（廃棄割合）の逆数に相当する。
【０１１２】
各廃棄パケットに関するフィールドは、廃棄パケットのシーケンス番号が設定されるフィールドと廃棄パケットのデータサイズが設定されるフィールドとを含んでいる。廃棄パケットのシーケンス番号は、当該コネクションに係る未転送パケットのうち、廃棄されたパケットにおけるシーケンス番号である。廃棄パケットのデータサイズは、同じく廃棄されたパケットに含まれる本体データのサイズである。同じ廃棄パケットのシーケンス番号とデータサイズとは、組として扱われる。
【０１１３】
各制御パケットに関するフィールドは、制御パケットの制御種別が設定されるフィールドと制御パケットのシーケンス番号が設定されるフィールドとを含んでいる。制御パケットの制御種別は、当該コネクションに係る未転送パケットのうち、制御パケットの制御種別（例えば、ＳＹＮ、ＳＹＮ−ＡＣＫ）である。制御パケットのシーケンス番号は、同じく制御パケットにおけるシーケンス番号である。同じ制御パケットの制御種別とシーケンス番号とは、組として扱われる。
【０１１４】
図１９に、制御テーブルの生成処理（Ａ）フローを示す。廃棄部６２７は、コネクションを１つ特定する（Ｓ１９０１）。具体的には、廃棄部６２７は、コネクションテーブルのレコードを順番に１つ特定し、当該レコードに設定されているコネクションＩＤを特定する。
【０１１５】
廃棄部６２７は、制御テーブルに新しいレコードを設けて（Ｓ１９０３）、特定したコネクションＩＤを当該レコードに設定する（Ｓ１９０５）。
【０１１６】
廃棄部６２７は、コネクションテーブルに基づいて、逆方向コネクションを特定する（Ｓ１９０７）。具体的には、Ｓ１９０１で特定したコネクションにおける送信元ＩＰアドレスが宛先ＩＰアドレスに設定され、当該コネクションにおける宛先ＩＰアドレスが送信元ＩＰアドレスに設定され、当該コネクションにおける送信元ポート番号が宛先ポート番号に設定され、当該コネクションにおける宛先ポート番号が送信元ポート番号に設定され、当該コネクションにおけるプロトコルと一致するコネクションが特定される。
【０１１７】
廃棄部６２７は、特定した逆方向のコネクションＩＤを当該レコードにおける逆方向コネクションのフィールドに設定する（Ｓ１９０９）。
【０１１８】
廃棄部６２７は、当該コネクションの間引き間隔を算出し、算出した間引き間隔を当該レコードに設定する（Ｓ１９１１）。具体的には、廃棄部６２７は、統計テーブルに基づいて、当該コネクションにおける目標削減量を当該コネクションにおける平均パケットサイズで除することによって廃棄パケット数を算出する。次に、廃棄部６２７は、コネクションテーブルに基づいて、当該コネクションのパケット数を廃棄パケット数で除することによって、間引き間隔を求める。
【０１１９】
廃棄部６２７は、未特定のコネクションがあるか否かを判定する（Ｓ１９１３）。未特定のコネクションがあると判定した場合には、Ｓ１９０１に示した処理に戻って、上述した処理を繰り返す。
【０１２０】
一方、未特定のコネクションがないと判定した場合には、制御テーブルの生成処理（Ａ）を終え、呼び出し元の廃棄処理（Ａ）に復帰する。
【０１２１】
図１２の説明に戻る。端子Ａを介して、図２０に示したＳ２００１の処理に移る。
【０１２２】
図２０の説明に移る。廃棄部６２７は、図１４のＳ１４０１の場合と同様に、未転送パケットを１つ特定する（Ｓ２００１）。
【０１２３】
廃棄部６２７は、選別処理を実行する（Ｓ２００３）。廃棄部６２７は、選別処理において、廃棄対象に該当する未転送パケットを選び分ける。本実施の形態では、選別処理（Ａ）を実行する。
【０１２４】
図２１に、選別処理（Ａ）フローを示す。廃棄部６２７は、当該未転送パケットのヘッダから、送信元ＩＰアドレス、宛先ＩＰアドレス、プロトコル、送信元ポート番号及び宛先ポート番号のセットを抽出する（Ｓ２１０１）。
【０１２５】
廃棄部６２７は、コネクションテーブルに基づいて、当該セットに合致するコネクションＩＤを特定する（Ｓ２１０３）。
【０１２６】
廃棄部６２７は、Ｓ２１０１で抽出したプロトコルがＵＤＰであるか否かを判定する（Ｓ２１０５）。当該プロトコルがＵＤＰであると判定した場合には、廃棄部６２７は、ＵＤＰ処理を実行する（Ｓ２１０７）。廃棄部６２７は、ＵＤＰ処理において、ＵＤＰのパケットに関する判定を行う。ＵＤＰ処理については、図２２を用いて後述する。ＵＤＰ処理を終えると、選別処理（Ａ）を終え、呼び出し元の廃棄処理（Ａ）に復帰する。
【０１２７】
一方、当該プロトコルがＵＤＰではないと判定した場合には、廃棄部６２７は、当該プロトコルがＴＣＰであるか否かを判定する（Ｓ２１０９）。当該プロトコルがＴＣＰであると判定した場合には、廃棄部６２７は、ＴＣＰ処理を実行する（Ｓ２１１１）。廃棄部６２７は、ＴＣＰ処理において、ＴＣＰのパケットに関する判定を行う。ＴＣＰ処理については、図２３乃至図３１を用いて後述する。ＴＣＰ処理を終えると、選別処理（Ａ）を終え、呼び出し元の廃棄処理（Ａ）に復帰する。
【０１２８】
一方、当該プロトコルがＴＣＰではないと判定した場合には、廃棄部６２７は、当該未転送パケットが廃棄対象に該当しないと判定する（Ｓ２１１３）。そして、選別処理（Ａ）を終え、呼び出し元の廃棄処理（Ａ）に復帰する。
【０１２９】
図２２に、ＵＤＰ処理フローを示す。廃棄部６２７は、制御テーブルにおいて、図２１のＳ２１０３で特定したコネクションＩＤに対応するカウンタの値に１を加える（Ｓ２２０１）。
【０１３０】
廃棄部６２７は、カウンタの値が間引き間隔以上であるか否かを判定する（Ｓ２２０３）。カウンタの値が間引き間隔以上でないと判定した場合には、廃棄部６２７は、当該未転送パケットが廃棄対象に該当しないと判定する（Ｓ２２０５）。そして、ＵＤＰ処理を終えて、呼び出し元の選別処理（Ａ）に復帰する。
【０１３１】
一方、カウンタの値が間引き間隔以上であると判定した場合には、廃棄部６２７は、当該コネクションＩＤに対応するカウンタに０を設定する（Ｓ２２０７）。廃棄部６２７は、当該コネクションＩＤに対応する廃棄量に当該未転送パケットのサイズを加える（Ｓ２２０９）。そして、廃棄部６２７は、当該未転送パケットが廃棄対象に該当すると判定し（Ｓ２２１１）、ＵＤＰ処理を終えて、呼び出し元の選別処理（Ａ）に復帰する。
【０１３２】
図２３に、ＴＣＰ処理フローを示す。廃棄部６２７は、制御パケット処理を実行する（Ｓ２３０１）。廃棄部６２７は、制御パケット処理において、図２０のＳ２００１で特定した未転送パケットが所定の制御パケットに該当するか否かを判定する。
【０１３３】
図２４に、制御パケット処理フローを示す。廃棄部６２７は、図２０のＳ２００１で特定した未転送パケットがＳＹＮパケット（図２：２０１）であるか否かを判定する（Ｓ２４０１）。
【０１３４】
当該未転送パケットがＳＹＮパケットであると判定した場合には、廃棄部６２７は、当該未転送パケットのヘッダからシーケンス番号を抽出する（Ｓ２４０３）。廃棄部６２７は、制御テーブルにおいて、図２１のＳ２１０３で特定したコネクションＩＤに対応する制御パケットのフィールドに、制御種別（ＳＹＮ）及びシーケンス番号の組を設定する（Ｓ２４０５）。上述された通り、複数の制御パケットについて、それぞれ制御種別及びシーケンス番号の組が設定されることがある。
【０１３５】
そして、廃棄部６２７は、当該未転送パケットが所定の制御パケットに該当すると判定し（Ｓ２４０７）、制御パケット処理を終えて、呼び出し元のＴＣＰ処理に復帰する。
【０１３６】
Ｓ２４０１の処理において、当該未転送パケットがＳＹＮパケットでないと判定した場合には、端子Ｅを介して、図２５に示したＳ２５０１の処理に移る。
【０１３７】
図２５の説明に移る。廃棄部６２７は、図２０のＳ２００１で特定した未転送パケットがＳＹＮ−ＡＣＫパケット（図２：２０３）であるか否かを判定する（Ｓ２５０１）。
【０１３８】
当該未転送パケットがＳＹＮ−ＡＣＫパケットであると判定した場合には、廃棄部６２７は、当該未転送パケットのヘッダからＡＣＫ番号及びシーケンス番号を抽出する（Ｓ２５０３）。
【０１３９】
廃棄部６２７は、制御テーブルに基づいて、逆方向コネクションのＩＤを特定する（Ｓ２５０５）。そして、廃棄部６２７は、制御テーブルから、逆方向コネクションのＩＤに対応する制御パケットに関するフィールドから制御種別及びシーケンス番号を抽出する（Ｓ２５０７）。具体的には、廃棄部６２７は、制御テーブルにおいて、特定した逆方向コネクションのＩＤがコネクションＩＤのフィールドに設定されているレコードを特定し、当該レコードにおける制御パケットに関するフィールドに設定されている制御種別及びシーケンス番号を取得する。
【０１４０】
廃棄部６２７は、Ｓ２５０７において抽出した制御種別がＳＹＮであり、且つ同じく抽出したシーケンス番号が当該未転送パケットから抽出したＡＣＫ番号から１を引いた値であるか否かを判定する（Ｓ２５０９）。
【０１４１】
Ｓ２５０７において抽出した制御種別がＳＹＮでない場合、或いはＳ２５０７において抽出したシーケンス番号が当該未転送パケットから抽出したＡＣＫ番号から１を引いた値ではない場合には、廃棄部６２７は、制御テーブルにおいて、当該コネクションＩＤに対応する制御パケットのフィールドに、制御種別（ＳＹＮ−ＡＣＫ）及びシーケンス番号を設定する（Ｓ２５１１）。
【０１４２】
そして、廃棄部６２７は、図２０のＳ２００１で特定した未転送パケットが所定の制御パケットに該当すると判定し（Ｓ２５１３）、制御パケット処理を終えて、呼び出し元のＴＣＰ処理に復帰する。
【０１４３】
Ｓ２５０９において、当該制御種別がＳＹＮであり、且つ当該シーケンス番号が当該ＡＣＫ番号から１を引いた値であると判定した場合には、端子Ｆを介して、図２６に示したＳ２６０１の処理に移る。
【０１４４】
図２６の説明に戻る。廃棄部６２７は、制御テーブルにおいて、図２５のＳ２５０５で特定した逆方向コネクションのＩＤに対応する制御パケットのフィールドに設定されている制御種別及びシーケンス番号を削除する（Ｓ２６０１）。
【０１４５】
廃棄部６２７は、制御テーブルにおいて、当該コネクションＩＤに対応する制御パケットのフィールドに、制御種別（ＳＹＮ−ＡＣＫ）及びシーケンス番号を設定する（Ｓ２６０３）。
【０１４６】
そして、廃棄部６２７は、図２０のＳ２００１で特定した未転送パケットが所定の制御パケットに該当すると判定し（Ｓ２６０５）、制御パケット処理を終えて、呼び出し元のＴＣＰ処理に復帰する。
【０１４７】
図２５の説明に戻る。Ｓ２５０１において、当該未転送パケットがＳＹＮ−ＡＣＫパケットでないと判定した場合には、端子Ｇを介して、図２７に示したＳ２７０１の処理に移る。
【０１４８】
図２７の説明に移る。廃棄部６２７は、図２０のＳ２００１で特定した未転送パケットがＡＣＫ−ＦＩＮパケット（図４：４０１，４０５）であるか否かを判定する（Ｓ２７０１）。
【０１４９】
当該未転送パケットがＡＣＫ−ＦＩＮパケットであると判定した場合には、廃棄部６２７は、当該未転送パケットのヘッダからシーケンス番号を抽出する（Ｓ２７０３）。廃棄部６２７は、制御テーブルにおいて、当該コネクションＩＤに対応する制御パケットのフィールドに、制御種別（ＡＣＫ−ＦＩＮ）及びシーケンス番号を設定する（Ｓ２７０５）。
【０１５０】
そして、廃棄部６２７は、当該未転送パケットが所定の制御パケットに該当すると判定し（Ｓ２７０７）、制御パケット処理を終えて、呼び出し元のＴＣＰ処理に復帰する。
【０１５１】
Ｓ２７０１において、当該未転送パケットがＡＣＫ−ＦＩＮパケットでないと判定した場合には、廃棄部６２７は、当該未転送パケットがＲＳＴパケットであるか否かを判定する（Ｓ２７０９）。この例では、制御フラグの１つであるＲＳＴがＯＮであるＲＳＴパケットを、廃棄対象から除外する。
【０１５２】
当該未転送パケットがＲＳＴパケットであると判定した場合には、廃棄部６２７は、当該未転送パケットが所定の制御パケットに該当すると判定する（Ｓ２７１１）。そして、制御パケット処理を終え、呼び出し元のＴＣＰ処理に復帰する。
【０１５３】
一方、当該未転送パケットがＲＳＴパケットでないと判定した場合には、端子Ｈを介して、図２８に示したＳ２８０１の処理に移る。
【０１５４】
図２８の説明に移る。廃棄部６２７は、図２０のＳ２００１で特定した未転送パケットからＡＣＫ番号及びシーケンス番号を抽出する（Ｓ２８０１）。例えば図２に示したＡＣＫパケット２０５の場合は、このルートを辿る。図４に示したＡＣＫパケット４０３及びＡＣＫパケット４０７の場合も、このルートを辿る。図３に示したパケット３０１乃至パケット３１１の場合も、このルートを辿る。また、図５に示したパケット５０１乃至パケット５０５、ＡＣＫパケット５０７及びＡＣＫパケット５０９の場合も、このルートを辿る。
【０１５５】
廃棄部６２７は、制御テーブルに基づいて、逆方向コネクションのＩＤを特定する（Ｓ２８０３）。廃棄部６２７は、制御テーブルに基づいて、逆方向コネクションのＩＤに対応する制御パケットに関するフィールドから制御種別及びシーケンス番号を抽出する（Ｓ２８０５）。
【０１５６】
廃棄部６２７は、Ｓ２８０５において抽出した制御種別がＳＹＮ−ＡＣＫであり、且つ同じく抽出したシーケンス番号が当該未転送パケットから抽出したＡＣＫ番号から１を引いた値であるか否かを判定する（Ｓ２８０７）。
【０１５７】
当該制御種別がＳＹＮ−ＡＣＫであり、且つ当該シーケンス番号が当該ＡＣＫ番号から１を引いた値である場合には、廃棄部６２７は、逆方向コネクションのＩＤに対応する制御パケットに関するフィールドに設定されている制御種別及びシーケンス番号を削除する（Ｓ２８０９）。図２に示したＡＣＫパケット２０５の場合は、このルートを辿る。
【０１５８】
廃棄部６２７は、当該未転送パケットが所定の制御パケットに該当すると判定する（Ｓ２８１１）。そして、制御パケット処理を終え、呼び出し元のＴＣＰ処理に復帰する。
【０１５９】
一方、当該制御種別がＳＹＮ−ＡＣＫでない場合、或いは当該シーケンス番号が当該ＡＣＫ番号から１を引いた値ではない場合には、端子Ｉを介して、図２９に示したＳ２９０１の処理に移る。
【０１６０】
図２９の説明に移る。廃棄部６２７は、図２８のＳ２８０５で抽出した制御種別がＡＣＫ−ＦＩＮであり、且つ図２８のＳ２８０５で抽出したシーケンス番号が図２８のＳ２８０１で抽出したＡＣＫ番号から１を引いた値であるか否かを判定する（Ｓ２９０１）。
【０１６１】
当該制御種別がＡＣＫ−ＦＩＮであり、且つ当該シーケンス番号が当該ＡＣＫ番号から１を引いた値である場合には、廃棄部６２７は、制御テーブルにおいて、逆方向コネクションのＩＤに対応する制御パケットに関するフィールドに設定されている制御種別及びシーケンス番号を削除する（Ｓ２９０３）。図４に示したＡＣＫパケット４０３及びＡＣＫパケット４０７の場合も、このルートを辿る。
【０１６２】
そして、廃棄部６２７は、当該未転送パケットが所定の制御パケットに該当すると判定し（Ｓ２９０５）、制御パケット処理を終えて、呼び出し元のＴＣＰ処理に復帰する。
【０１６３】
一方、当該制御種別がＡＣＫ−ＦＩＮでない場合、或いは当該シーケンス番号が当該ＡＣＫ番号から１を引いた値ではない場合には、廃棄部６２７は、当該未転送パケットが所定の制御パケットに該当しないと判定する（Ｓ２９０７）。そして、制御パケット処理を終え、呼び出し元のＴＣＰ処理に復帰する。図３に示したパケット３０１乃至パケット３１１の場合は、このルートを辿る。また、図５に示したパケット５０１乃至パケット５０５、ＡＣＫパケット５０７及びＡＣＫパケット５０９の場合も、このルートを辿る。
【０１６４】
図２３の説明に戻る。廃棄部６２７は、図２０のＳ２００１で特定した未転送パケットが所定の制御パケットに該当するか否かによって処理を分岐させる（Ｓ２３０３）。
【０１６５】
当該未転送パケットが所定の制御パケットに該当する場合には、廃棄部６２７は、当該未転送パケットが廃棄対象に該当しないと判定する（Ｓ２３０５）。そして、ＴＣＰ処理を終え、呼び出し元の選別処理（Ａ）に復帰する。
【０１６６】
一方、当該未転送パケットが所定の制御パケットに該当しない場合には、廃棄部６２７は、当該コネクションＩＤに対応するカウンタの値に１加える（Ｓ２３０７）。そして、廃棄部６２７は、逆方向コネクションのＩＤに対応する廃棄パケットのフィールドにシーケンス番号及びデータサイズが設定されているか否かを判定する（Ｓ２３０９）。
【０１６７】
当該廃棄パケットのフィールドにシーケンス番号及びデータサイズが設定されていないと判定した場合には、当該未転送パケットは廃棄対象から除外されない。図３で説明した「先に送られたパケットを廃棄対象とした場合」に該当しないからである。この場合には、端子Ｄを介して、図３１に示したＳ３１０１の処理に移る。
【０１６８】
一方、当該廃棄パケットのフィールドにシーケンス番号及びデータサイズが設定されていると判定した場合には、廃棄部６２７は、当該未転送パケットのヘッダからＡＣＫ番号を抽出する（Ｓ２３１１）。そして、廃棄部６２７は、当該ＡＣＫ番号が、当該シーケンス番号と当該データサイズとの合計以上であるか否かを判定する（Ｓ２３１３）。
【０１６９】
図５を用いて説明した通り、当該ＡＣＫ番号が当該合計以上である場合には、当該未転送パケットは廃棄対象から除外される。この場合には、端子Ｃを介して、図３０に示したＳ３００１の処理に移る。
【０１７０】
一方、当該ＡＣＫ番号が当該合計未満である場合には、当該未転送パケットは廃棄対象から除外されない。この場合には、端子Ｄを介して、図３１に示したＳ３１０１の処理に移る。
【０１７１】
図３０の説明に移る。廃棄部６２７は、制御テーブルにおいて、図２５のＳ２５０５で特定した逆方向コネクションのＩＤに対応する廃棄パケットに関するフィールドに設定されているシーケンス番号及びデータサイズを削除する（Ｓ３００１）。
【０１７２】
そして、廃棄部６２７は、図２０のＳ２００１で特定した未転送パケットが廃棄対象に該当しないと判定し（Ｓ３００３）、ＴＣＰ処理を終えて、呼び出し元の選別処理（Ａ）に復帰する。
【０１７３】
図３１の説明に移る。廃棄部６２７は、図２３のＳ２３０７で１が加えられたカウンタの値が、間引き間隔以上であるか否かを判定する（Ｓ３１０１）。尚、間引き間隔は、図２１のＳ２１０３で特定されたコネクションＩＤが設定されている制御テーブルのレコードから取得される。
【０１７４】
当該カウンタの値が、間引き間隔以上でないと判定した場合には、廃棄部６２７は、図２０のＳ２００１で特定した未転送パケットが廃棄対象に該当しないと判定する（Ｓ３１０３）。そして、ＴＣＰ処理を終え、呼び出し元の選別処理（Ａ）に復帰する。
【０１７５】
一方、当該カウンタの値が、間引き間隔以上であると判定した場合には、廃棄部６２７は、制御テーブルにおいて、図２１のＳ２１０３で特定したコネクションＩＤに対応するカウンタに０を設定する（Ｓ３１０５）。また、廃棄部６２７は、当該コネクションＩＤに対応する廃棄量に当該未転送パケットのサイズを加える（Ｓ３１０７）。
【０１７６】
廃棄部６２７は、当該未転送パケットのヘッダからシーケンス番号及びデータサイズを抽出する（Ｓ３１０９）。廃棄部６２７は、制御テーブルにおいて、当該コネクションＩＤに対応する廃棄パケットのフィールドに、抽出したシーケンス番号及びデータサイズを設定する（Ｓ３１１１）。また、廃棄部６２７は、当該未転送パケットが廃棄対象に該当すると判定する（Ｓ３１１３）。その後、ＴＣＰ処理を終えて、呼び出し元の選別処理（Ａ）に復帰する。
【０１７７】
図２０の説明に戻る。廃棄部６２７は、Ｓ２００１で特定した未転送パケットが廃棄対象に該当するか否かによって処理を分岐させる（Ｓ２００５）。
【０１７８】
当該未転送パケットが廃棄対象に該当する場合には、廃棄部６２７は、当該未転送パケットが格納されている領域に対応する無効フラグをＯＮに設定する（Ｓ２００７）。そして、Ｓ２００９の処理に移る。
【０１７９】
当該未転送パケットが廃棄対象に該当しないと判定した場合には、そのままＳ２００９の処理に移る。
【０１８０】
そして、廃棄部６２７は、未特定の未転送パケットがあるか否かを判定する（Ｓ２００９）。未特定の未転送パケットがあると判定した場合には、Ｓ２００１に示した処理に戻って、上述した処理を繰り返す。
【０１８１】
一方、未特定の未転送パケットがないと判定した場合には、端子Ｂを介して、図１２に示したＳ１２０１の処理に戻る。
【０１８２】
本実施の形態によれば、所定プロトコルにおける接続期間の特定に資する。
【０１８３】
また、先に送られた本体データを含むパケットを廃棄対象とした場合に、その応答のパケットを廃棄対象にしないので、データ伝送量の特定に資する。
【０１８４】
［実施の形態２］
上述した実施の形態では、ポートミラーリング部１１１が診断部１１３から診断種別を取得して動作する例について説明したが、本実施の形態では、ポートミラーリング部１１１が診断部１１３から条件テーブルを取得して動作する例について説明する。
【０１８５】
図３２に、条件テーブルの例を示す。条件テーブルは、非転送条件が設定されるフィールドと、非廃棄条件が設定されるフィールドと、廃棄条件が設定されるフィールドとを有している。
【０１８６】
非転送条件は、パケットが診断部１１３への転送対象から除外される条件である。この例における非転送条件は、当該パケットに設定されているプロトコルがＩＣＭＰ（Internet Control Message Protocol）であることである。
【０１８７】
非廃棄条件は、パケットが廃棄対象から除外される条件である。この例における非廃棄条件は、通信相手のＩＰアドレスがＩＰ−３であることである。つまり、当該パケットに設定されている送信元ＩＰアドレス又は宛先ＩＰアドレスがＩＰ−３であれば、当該パケットは廃棄対象から除外される。
【０１８８】
廃棄条件は、パケットが廃棄対象から除外されない条件である。この例における廃棄条件は、通信相手のＩＰアドレスが、ＩＰ−２又はＩＰ−４である。つまり、当該パケットに設定されている送信元ＩＰアドレス又は宛先ＩＰアドレスが、ＩＰ−２とＩＰ−４とのいずれかであれば、当該パケットは廃棄対象から除外されない。
【０１８９】
本実施の形態では、初期処理（Ａ）に代えて、初期処理（Ｂ）を実行する。図３３に、初期処理（Ｂ）フローを示す。Ｓ７０１及びＳ７０３の処理は、初期処理（Ａ）の場合と同様である。
【０１９０】
起動部６０９は、書き込み部６２３による書き込み処理（Ｂ）を起動する（Ｓ３３０１）。この例における書き込み処理（Ｂ）は、独立したプロセスとして動作する。
【０１９１】
図３４に、書き込み処理（Ｂ）フローを示す。Ｓ９０１の処理は、書き込み処理（Ａ）の場合と同様である。
【０１９２】
書き込み部６２３は、ミラーパケットが非転送条件を満たすか否かを判定する（Ｓ３４０１）。この例では、ミラーパケットに設定されているプロトコルがＩＣＭＰであるか否かを判定する。
【０１９３】
ミラーパケットが非転送条件を満たすと判定した場合、この例ではミラーパケットに設定されているプロトコルがＩＣＭＰであると判定した場合には、そのままＳ９０１に示した処理に戻って、上述した処理を繰り返す。
【０１９４】
一方、ミラーパケットが非転送条件を満たさないと判定した場合、この例ではミラーパケットに設定されているプロトコルがＩＣＭＰでないと判定した場合には、Ｓ９０３の処理に移る。
【０１９５】
Ｓ９０３乃至Ｓ９０９の処理は、書き込み処理（Ａ）の場合と同様である。書き込み処理（Ｂ）を終えると、呼び出し元の初期処理（Ｂ）に復帰する。
【０１９６】
図３３の説明に戻る。Ｓ７０７の処理は、初期処理（Ａ）の場合と同様である。
【０１９７】
取得部６１１は、診断部１１３に条件テーブルを要求する（Ｓ３３０３）。そして、取得部６１１は、受信部６０１を介して条件テーブルを受信し、受信した条件テーブルを条件テーブル記憶部６４５に記憶する（Ｓ３３０５）。
【０１９８】
起動部６０９は、廃棄部６２７による廃棄処理（Ｂ）を起動する（Ｓ３３０７）。この例における廃棄処理（Ｂ）は、独立したプロセスとして動作する。図３５に、廃棄処理（Ｂ）フローを示す。
【０１９９】
Ｓ１２０１乃至Ｓ１２０７の処理は、廃棄処理（Ａ）の場合と同様である。
【０２００】
廃棄部６２７は、除外設定処理を実行する（Ｓ３５０１）。廃棄部６２７は、除外設定処理において、非廃棄条件及び廃棄条件に基づいて、一部のコネクションを廃棄処理の対象から除外するためのフラグ設定を行う。
【０２０１】
図３６に、実施の形態２におけるコネクションテーブルの例を示す。実施の形態２におけるコネクションテーブルのレコードは、更に除外フラグのフィールドを有している。除外フラグがＯＮである場合は、当該コネクションに係る未転送パケットは廃棄対象から除外されることを意味する。一方、除外フラグがＯＦＦである場合は、当該コネクションに係る未転送パケットは廃棄対象から除外されないことを意味する。
【０２０２】
図３６の例は、コネクションＩＤ：Ｃ３及びＣ４のコネクションに係る未転送パケットは廃棄対象から除外されることを示している。
【０２０３】
図３７に、除外設定処理フローを示す。廃棄部６２７は、コネクションテーブルのレコードを１つ特定する（Ｓ３７０１）。例えば、廃棄部６２７は、順番にレコードを１つ特定する。
【０２０４】
廃棄部６２７は、当該レコードの設定内容が非廃棄条件を満たすか否かを判定する（Ｓ３７０３）。この例では、廃棄部６２７は、当該レコードに設定されている送信元ＩＰアドレス又は宛先ＩＰアドレスがＩＰ−３であるか否かを判定する。
【０２０５】
当該レコードの設定内容が非廃棄条件を満たすと判定した場合、この例では、当該レコードに設定されている送信元ＩＰアドレス又は宛先ＩＰアドレスがＩＰ−３であると判定した場合には、廃棄部６２７は、当該レコードにおける除外フラグをＯＮに設定する（Ｓ３７０５）。そして、Ｓ３７１３の処理に移る。
【０２０６】
一方、当該レコードの設定内容が非廃棄条件を満たさないと判定した場合、この例では当該レコードに設定されている送信元ＩＰアドレス及び宛先ＩＰアドレスがＩＰ−３でないと判定した場合には、廃棄部６２７は、当該レコードの設定内容が廃棄条件を満たすか否かを判定する（Ｓ３７０７）。この例では、廃棄部６２７は、当該レコードに設定されている送信元ＩＰアドレス又は宛先ＩＰアドレスがＩＰ−２とＩＰ−４とのいずれかであるか否かを判定する。
【０２０７】
当該レコードの設定内容が廃棄条件を満たすと判定した場合、この例では、当該レコードに設定されている送信元ＩＰアドレス又は宛先ＩＰアドレスがＩＰ−２とＩＰ−４とのいずれかであると判定した場合には、廃棄部６２７は、当該レコードにおける除外フラグをＯＦＦに設定する（Ｓ３７０９）。
【０２０８】
この例では、各コネクションが非廃棄条件又は廃棄条件を満たすことを想定している。非廃棄条件及び廃棄条件のいずれも満たさないコネクションに関しては、予め決められた例外のルールに従うものとする。従って、当該レコードの設定内容が廃棄条件を満たさないと判定した場合、この例では、当該レコードに設定されている送信元ＩＰアドレス及び宛先ＩＰアドレスがＩＰ−２とＩＰ−４とのいずれでもないと判定した場合には、廃棄部６２７は、例外のルールに従って、除外フラグを設定する（Ｓ３７１１）。
【０２０９】
廃棄部６２７は、未特定のレコードがあるか否かを判定する（Ｓ３７１３）。未特定のレコードがあると判定した場合には、Ｓ３７０１に示した処理に戻って、上述した処理を繰り返す。一方、未特定のレコードがないと判定した場合には、除外設定処理を終え、呼び出し元の廃棄処理（Ｂ）に復帰する。
【０２１０】
図３５に示すように、廃棄部６２７は、統計テーブルの生成処理（Ｂ）を実行する（Ｓ３５０３）。
【０２１１】
図３８に、統計テーブルの生成処理（Ｂ）フローを示す。廃棄部６２７は、コネクションテーブルにおいて、除外フラグがＯＦＦであるコネクションを１つ特定する（Ｓ３８０１）。
【０２１２】
Ｓ１６０３乃至Ｓ１６１５の処理は、統計テーブルの生成処理（Ａ）の場合と同様である。
【０２１３】
統計テーブルの生成処理（Ｂ）を終えると、呼び出し元の廃棄処理（Ｂ）に復帰する。
【０２１４】
図３９に、実施の形態２における制御テーブルの例を示す。この例では、コネクションＩＤ：Ｃ３及びＣ４のレコードが生成されない。
【０２１５】
次に、廃棄部６２７は、制御テーブルの生成処理（Ｂ）を実行する（Ｓ３５０５）。
【０２１６】
図４０に、制御テーブルの生成処理（Ｂ）フローを示す。廃棄部６２７は、コネクションテーブルにおいて、除外フラグがＯＦＦであるコネクションを１つ特定する（Ｓ４００１）。
【０２１７】
Ｓ１９０３乃至Ｓ１９１３の処理は、制御テーブルの生成処理（Ａ）の場合と同様である。制御テーブルの生成処理（Ｂ）を終えると、呼び出し元の廃棄処理（Ｂ）に復帰する。
【０２１８】
図４１に、実施の形態２における統計テーブルの例を示す。この例では、コネクションＩＤ：Ｃ３及びＣ４のレコードが生成されない。
【０２１９】
図３５の説明に戻る。端子Ａを介して、図２０に示したＳ２００１の処理に移る。
【０２２０】
図２０に示したＳ２００１の処理は、廃棄処理（Ａ）の場合と同様である。
【０２２１】
本実施の形態では、Ｓ２００３において、選別処理（Ａ）に代えて選別処理（Ｂ）を実行する。図４２に、選別処理（Ｂ）フローを示す。Ｓ２１０１及びＳ２１０３の処理は、選別処理（Ａ）の場合と同様である。
【０２２２】
廃棄部６２７は、Ｓ２１０３で特定したコネクションＩＤに対応する除外フラグがＯＮであるか否かを判定する（Ｓ４２０１）。コネクションＩＤに対応する除外フラグがＯＮであると判定した場合には、廃棄部６２７は、当該未転送パケットが廃棄対象に該当しないと判定する（Ｓ４２０３）。そして、選別処理（Ｂ）を終え、呼び出し元の廃棄処理（Ｂ）に復帰する。
【０２２３】
一方、コネクションＩＤに対応する除外フラグがＯＮでないと判定した場合、つまり、当該除外フラグがＯＦＦである場合には、Ｓ２１０５の処理に移る。Ｓ２１０５乃至Ｓ２１１３の処理は、選別処理（Ａ）の場合と同様である。そして、選別処理（Ｂ）を終えると、呼び出し元の廃棄処理（Ｂ）に復帰する。
【０２２４】
本実施の形態によれば、例えばパケットの欠落を許容しないＬ７診断の対象となっているコネクションに係るパケットの消失を防ぐことができる。
【０２２５】
以上、仮想スイッチ１０７におけるポートミラーリング部１１１の例を示したが、物理スイッチ装置におけるポートミラーリング部１１１に本実施の形態を適用するようにしてもよい。
【０２２６】
また、廃棄処理において各テーブルの生成処理及び選別処理を行っている間、読み取り処理を中断するようにしてもよい。このようにすれば、目標削減量を達成しやすくなる。但し、読み取り処理を中断している間、パケットの転送は行われなくなる。
【０２２７】
具体的には、内部パラメータ記憶部６４３にリードロックフラグを設ける。そして、実施の形態１の場合、廃棄処理（Ａ）におけるＳ１２０５（図１２）の処理の後に、廃棄部６２７は、リードロックフラグをＯＮに設定する。そして、Ｓ２００９（図２０）の処理の後に、廃棄部６２７は、リードロックフラグをＯＦＦに設定する。また、読み取り処理におけるＳ１１０１（図１１）の処理の後に、読み取り部６２５は、リードロックフラグがＯＮであるか否かを判定する。リードロックフラグがＯＮである場合には、Ｓ１１０１の処理に移る。リードロックフラグがＯＮでない場合には、Ｓ１１０３の処理に移る。
【０２２８】
実施の形態２の場合、廃棄処理（Ｂ）におけるＳ１２０５（図３５）の処理の後に、廃棄部６２７は、リードロックフラグをＯＮに設定する。そして、Ｓ２００９（図２０）の処理の後に、廃棄部６２７は、リードロックフラグをＯＦＦに設定する。また、読み取り処理におけるＳ１１０１（図１１）の処理の後に、読み取り部６２５は、リードロックフラグがＯＮであるか否かを判定する。リードロックフラグがＯＮである場合には、Ｓ１１０１の処理に移る。リードロックフラグがＯＮでない場合には、Ｓ１１０３の処理に移る。
【０２２９】
以上本発明の実施の形態を説明したが、本発明はこれに限定されるものではない。例えば、上述の機能ブロック構成はプログラムモジュール構成に一致しない場合もある。
【０２３０】
また、上で説明した各記憶領域の構成は一例であって、上記のような構成でなければならないわけではない。さらに、処理フローにおいても、処理結果が変わらなければ、処理の順番を入れ替えることや複数の処理を並列に実行させるようにしても良い。
【０２３１】
なお、上で述べた物理サーバ装置１０３は、コンピュータ装置であって、図４３に示すように、メモリ２５０１とＣＰＵ２５０３とハードディスク・ドライブ（ＨＤＤ：Hard Disk Drive）２５０５と表示装置２５０９に接続される表示制御部２５０７とリムーバブル・ディスク２５１１用のドライブ装置２５１３と入力装置２５１５とネットワークに接続するための通信制御部２５１７とがバス２５１９で接続されている。オペレーティング・システム（ＯＳ：Operating System）及び本実施例における処理を実施するためのアプリケーション・プログラムは、ＨＤＤ２５０５に格納されており、ＣＰＵ２５０３により実行される際にはＨＤＤ２５０５からメモリ２５０１に読み出される。ＣＰＵ２５０３は、アプリケーション・プログラムの処理内容に応じて表示制御部２５０７、通信制御部２５１７、ドライブ装置２５１３を制御して、所定の動作を行わせる。また、処理途中のデータについては、主としてメモリ２５０１に格納されるが、ＨＤＤ２５０５に格納されるようにしてもよい。本発明の実施例では、上で述べた処理を実施するためのアプリケーション・プログラムはコンピュータ読み取り可能なリムーバブル・ディスク２５１１に格納されて頒布され、ドライブ装置２５１３からＨＤＤ２５０５にインストールされる。インターネットなどのネットワーク及び通信制御部２５１７を経由して、ＨＤＤ２５０５にインストールされる場合もある。このようなコンピュータ装置は、上で述べたＣＰＵ２５０３、メモリ２５０１などのハードウエアとＯＳ及びアプリケーション・プログラムなどのプログラムとが有機的に協働することにより、上で述べたような各種機能を実現する。
【０２３２】
以上述べた本発明の実施の形態をまとめると、以下のようになる。
【０２３３】
本実施の形態に係るパケット制御方法は、（Ａ）伝送過程のパケットから複製されたパケットをバッファに書き込む処理と、（Ｂ）通信状況を診断する装置へ転送するパケットをバッファから読み取る処理と、（Ｃ）バッファに蓄積された未転送パケットのうち、所定プロトコルにおける接続手続及び切断手続に含まれる制御パケットを選別し、当該制御パケット以外の未転送パケットの一部を廃棄する廃棄処理とを含む。
【０２３４】
このようにすれば、通信状態の診断において重要なパケットの消失を防ぐことができる。特に、所定プロトコルにおける接続期間の特定に資する。
【０２３５】
更に、上記廃棄処理において、本体データを含むパケットを廃棄した場合に、当該パケットに対する応答パケットを選別し、当該応答パケットを廃棄しないようにしてもよい。
【０２３６】
このようにすれば、データ伝送量の特定に資する。
【０２３７】
更に、上記廃棄処理において、パケットの送信元又は宛先に関する条件に基づいて特定されるコネクションに係る未転送パケットを廃棄しないようにしてもよい。
【０２３８】
このようにすれば、例えばパケットの欠落を許容しない分析の対象となっているコネクションに係るパケットの消失を防ぐことができる。
【０２３９】
なお、上記方法による処理をコンピュータに行わせるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブルディスク、ＣＤ−ＲＯＭ、光磁気ディスク、半導体メモリ、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納されるようにしてもよい。尚、中間的な処理結果は、一般的にメインメモリ等の記憶装置に一時保管される。
【０２４０】
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
【０２４１】
（付記１）
伝送過程のパケットから複製されたパケットをバッファに書き込む処理と、
通信状況を診断する装置へ転送する前記パケットを前記バッファから読み取る処理と、
前記バッファに蓄積された未転送パケットのうち、所定プロトコルにおける接続手続及び切断手続に含まれる制御パケットを選別し、当該制御パケット以外の未転送パケットの一部を廃棄する廃棄処理と
をコンピュータに実行させるパケット制御プログラム。
【０２４２】
（付記２）
前記廃棄処理において、本体データを含むパケットを廃棄した場合に、当該パケットに対する応答パケットを選別し、当該応答パケットを廃棄しない
付記１記載のパケット制御プログラム。
【０２４３】
（付記３）
前記廃棄処理において、前記パケットの送信元又は宛先に関する条件に基づいて特定されるコネクションに係る前記未転送パケットを廃棄しない
付記１又は２記載のパケット制御プログラム。
【０２４４】
（付記４）
伝送過程のパケットから複製されたパケットをバッファに書き込む処理と、
通信状況を診断する装置へ転送する前記パケットを前記バッファから読み取る処理と、
前記バッファに蓄積された未転送パケットのうち、所定プロトコルにおける接続手続及び切断手続に含まれる制御パケットを選別し、当該制御パケット以外の未転送パケットの一部を廃棄する廃棄処理と
を含み、コンピュータにより実行されるパケット制御方法。
【０２４５】
（付記５）
伝送過程のパケットから複製されたパケットをバッファに書き込む書込部と、
通信状況を診断する装置へ転送する前記パケットを前記バッファから読み取る読取部と、
前記バッファに蓄積された未転送パケットのうち、所定プロトコルにおける接続手続及び切断手続に含まれる制御パケットを選別し、当該制御パケット以外の未転送パケットの一部を廃棄する廃棄部と
を有するパケット制御装置。
【符号の説明】
【０２４６】
１０１  診断対象のシステム
１０３  物理サーバ装置
１０５  仮想マシン
１０７  仮想スイッチ
１０９  仮想ポート
１１１  ポートミラーリング部
１１３  診断部
６０１  受信部
６０３  送信部
６０５  初期処理部
６０７  特定部
６０９  起動部
６１１  取得部
６２１  監視部
６２３  書き込み部
６２５  読み取り部
６２７  廃棄部
６３１  リングバッファ
６３３  ポインタ記憶部
６３５  フラグ記憶部
６３７  コネクションテーブル記憶部
６３９  統計テーブル記憶部
６４１  制御テーブル記憶部
６４３  内部パラメータ記憶部
６４５  条件テーブル記憶部
【図１】
2019087870.tif 000003
【図２】
2019087870.tif 000004
【図３】
2019087870.tif 000005
【図４】
2019087870.tif 000006
【図５】
2019087870.tif 000007
【図６】
2019087870.tif 000008
【図７】
2019087870.tif 000009
【図８】
2019087870.tif 000010
【図９】
2019087870.tif 000011
【図１０】
2019087870.tif 000012
【図１１】
2019087870.tif 000013
【図１２】
2019087870.tif 000014
【図１３】
2019087870.tif 000015
【図１４】
2019087870.tif 000016
【図１５】
2019087870.tif 000017
【図１６】
2019087870.tif 000018
【図１７】
2019087870.tif 000019
【図１８】
2019087870.tif 000020
【図１９】
2019087870.tif 000021
【図２０】
2019087870.tif 000022
【図２１】
2019087870.tif 000023
【図２２】
2019087870.tif 000024
【図２３】
2019087870.tif 000025
【図２４】
2019087870.tif 000026
【図２５】
2019087870.tif 000027
【図２６】
2019087870.tif 000028
【図２７】
2019087870.tif 000029
【図２８】
2019087870.tif 000030
【図２９】
2019087870.tif 000031
【図３０】
2019087870.tif 000032
【図３１】
2019087870.tif 000033
【図３２】
2019087870.tif 000034
【図３３】
2019087870.tif 000035
【図３４】
2019087870.tif 000036
【図３５】
2019087870.tif 000037
【図３６】
2019087870.tif 000038
【図３７】
2019087870.tif 000039
【図３８】
2019087870.tif 000040
【図３９】
2019087870.tif 000041
【図４０】
2019087870.tif 000042
【図４１】
2019087870.tif 000043
【図４２】
2019087870.tif 000044
【図４３】
2019087870.tif 000045