(57)【要約】【課題】キュー長の変動の特徴の通知に使用するデータ量を削減する。【解決手段】通信装置は、計測部、特定部、選択部、送信部を備える。計測部は、メモリの所定領域に書き込まれたパケット量を示すキュー長を計測する。特定部は、所定期間での第１の閾値以上のキュー長の増加が開始する第１の時刻から、所定期間での第２の閾値以上のキュー長の減少が開始する第２の時刻までの期間を、キュー長が増加傾向にある期間として特定する。選択部は、第１の時刻、第１の時刻に得られたキュー長、第２の時刻、および、第２の時刻に得られたキュー長を、キュー長を管理する管理装置への通知対象の情報に選択する。送信部は、通知対象の情報を送信する。【選択図】図１
2018139368.tif 000002
【特許請求の範囲】
【請求項１】
メモリの所定領域に書き込まれたパケット量を示すキュー長を計測する計測部と、
所定期間での第１の閾値以上の前記キュー長の増加が開始する第１の時刻から、前記所定期間での第２の閾値以上の前記キュー長の減少が開始する第２の時刻までの期間を、前記キュー長が増加傾向にある期間として特定する特定部と、
前記第１の時刻、前記第１の時刻に得られたキュー長、前記第２の時刻、および、前記第２の時刻に得られたキュー長を、前記キュー長を管理する管理装置への通知対象の情報に選択する選択部と、
前記通知対象の情報を送信する送信部
を備えることを特徴とする通信装置。
【請求項２】
前記特定部は、
前記キュー長が計測された計測時刻の各々に対応付けて、前記キュー長の移動平均値を求め、
処理対象の計測時刻に計測されたキュー長の計測値が当該計測時刻に対して求められた移動平均値より前記第１の閾値以上大きくなると、当該計測時刻までに計算された移動平均値の極小値に対応付けられ、かつ、当該計測時刻に最も近い時刻を、前記第１の時刻に決定し、
処理対象の計測時刻に計測されたキュー長の計測値が当該計測時刻に対して求められた移動平均値より前記第２の閾値以上小さくなると、当該計測時刻までに計算された移動平均値の極大値に対応付けられ、かつ、当該計測時刻に最も近い時刻を、前記第２の時刻に決定する
ことを特徴とする請求項１に記載の通信装置。
【請求項３】
前記特定部は、前記キュー長が増加傾向にあると判定してから、前記所定期間での第２の閾値以上の前記キュー長の減少が開始する前に、前記キュー長が前記キューに格納可能なパケットの最大量に達した場合、前記キュー長が前記キューに格納可能なパケットの最大量に達した時刻を、前記キュー長が増加傾向にある期間の終了時刻とする
ことを特徴とする請求項１または２に記載の通信装置。
【請求項４】
前記キュー長が増加傾向にある期間として特定された期間の各々について、前記第２の時刻に得られたキュー長と前記第１の時刻に得られたキュー長の差分値を計算するとともに、前記差分値が相対的に大きい期間を求める統計処理部をさらに備え、
前記送信部は、前記差分値が相対的に大きい期間についての通知対象として選択された情報を前記管理装置に送信する
ことを特徴とする請求項１〜３のいずれか１項に記載の通信装置。
【請求項５】
メモリの所定領域に書き込まれたパケット量を示すキュー長を計測し、
所定期間での第１の閾値以上の前記キュー長の増加が開始する第１の時刻から、前記所定期間での第２の閾値以上の前記キュー長の減少が開始する第２の時刻までの期間を、前記キュー長が増加傾向にある期間として特定し、
前記第１の時刻、前記第１の時刻に得られたキュー長、前記第２の時刻、および、前記第２の時刻に得られたキュー長を、前記キュー長を管理する管理装置への通知対象の情報に選択し、
前記通知対象の情報を送信する
処理を通信装置が行うことを特徴とする通信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信装置と通信方法に関する。
【背景技術】
【０００２】
インターネットなどのネットワークには、サーバ、パソコン、携帯端末など、多種の端末が接続され、さらに、ルータやスイッチなどの中継処理を行う装置も含まれている。ネットワークに接続する装置や中継処理を行う装置は、パケット単位で通信しており、いずれも処理待ちのパケットを保持するキューを使用することにより、処理待ちのパケットの廃棄を防止している。しかし、処理待ちのパケットの量がキューに保持可能なパケットの量を超えると、キューに保持されないパケットは廃棄されてしまうため、パケットロスが発生する。そこで、キューに保持されているパケットの量（キュー長）に関する情報がモニタされることがある。例えば、キュー溢れによるパケットロスの発生数を監視する方法、所定の監視タイミングでキュー長を記録する方法などが知られている。また、パケットがキューに追加される時点でのキューの最大値を監視する方法も知られている。
【０００３】
ところで、近年、プロセッサの性能が向上したことなどにより、１つの物理サーバ上で複数の仮想マシンを動作させ、仮想ネットワークを実現することもある。仮想ネットワークでもパケットの送受信や中継処理が行われるが、これらの処理はソフトウェアによって実現されることが多い。ソフトウェアによる処理の場合、ソフトウェアを実行しているプロセッサでの割り込み処理の発生や、オペレーティングシステムのスケジューリングなどに起因して、パケットの送受信や中継の速度が変動することがある。このため、ソフトウェアによって実現されるキューでは、物理サーバなどの物理的な装置で生成されているネットワークよりも、キュー長の変動が激しくなりやすく、リアルタイムにキュー長の変動を観測することが望ましい。
【０００４】
関連する技術として、ストレージレベルプール情報の空き容量の枯渇の危険性と、サーバレベルプール情報の空き容量の枯渇の危険性を判定し、得られた危険性に関する情報を表示する管理システムが提案されている（例えば、特許文献１）。輻輳が発生している無線通信装置において、無線リソースを排他的に使用してパケットを送信することができる時間を延長する制御方法も提案されている（例えば、特許文献２）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特許５７５６２４０号
【特許文献２】国際公開第２０１２／１２７５９７号
【発明の概要】
【発明が解決しようとする課題】
【０００６】
キュー溢れによるパケットロスの発生数の監視やパケットがキューに追加される時点でのキューの最大値の監視を行っても、パケットロスが発生するまでのキュー長の変化に関する情報が得られないので、システムの管理を行うための情報としては不十分である。所定の監視周期でキュー長を記録する方法を用いても、キュー長の変動が短時間で起こる場合にはキュー長の変動を捕らえるのは困難である。しかし、キューを備えている装置がリアルタイムにキュー長の変動を監視して、得られた計測結果を管理用の情報として用いると、観測データ量が膨大であるため、システムの管理を行う管理装置等に送信するデータ量も膨大になってしまう。
【０００７】
本発明は、１つの側面では、キュー長の変動の特徴の通知に使用するデータ量を削減することを目的とする。
【課題を解決するための手段】
【０００８】
ある１つの態様にかかる通信装置は、計測部、特定部、選択部、送信部を備える。計測部は、メモリの所定領域に書き込まれたパケット量を示すキュー長を計測する。特定部は、所定期間での第１の閾値以上の前記キュー長の増加が開始する第１の時刻から、前記所定期間での第２の閾値以上の前記キュー長の減少が開始する第２の時刻までの期間を、前記キュー長が増加傾向にある期間として特定する。選択部は、前記第１の時刻、前記第１の時刻に得られたキュー長、前記第２の時刻、および、前記第２の時刻に得られたキュー長を、前記キュー長を管理する管理装置への通知対象の情報に選択する。送信部は、前記通知対象の情報を送信する。
【発明の効果】
【０００９】
キュー長の変動の特徴の通知に使用するデータ量が削減される。
【図面の簡単な説明】
【００１０】
【図１】実施形態にかかる通知情報の作成方法を説明する図である。
【図２】システムの例を説明する図である。
【図３】仮想ネットワークの例を説明する図である。
【図４】通信装置の構成の例を説明する図である。
【図５】通信装置のハードウェア構成の例を説明する図である。
【図６】キュー管理情報の例を説明する図である。
【図７】第１の実施形態にかかるストロークの検出方法の例を説明する図である。
【図８】ストローク統計情報の例を説明する図である。
【図９Ａ】検出方法の例を説明するフローチャートである。
【図９Ｂ】検出方法の例を説明するフローチャートである。
【図１０】第１の実施形態にかかる検出方法の例を説明する図である。
【図１１】第２の実施形態にかかるストロークの検出方法の例を説明する図である。
【図１２】キュー管理情報とストローク統計情報の例を説明する図である。
【図１３Ａ】検出方法の例を説明するフローチャートである。
【図１３Ｂ】検出方法の例を説明するフローチャートである。
【図１４】第２の実施形態にかかる検出方法の例を説明する図である。
【図１５】ストロークの検出方法の変形例を説明する図である。
【図１６】ストローク長の最大値の取得方法の例を説明する図である。
【図１７】ストローク長の最大値の変更処理の例を説明する図である。
【図１８】キューと管理情報の例を説明する図である。
【発明を実施するための形態】
【００１１】
図１は、実施形態にかかる通知情報の作成方法を説明する図である。図１のグラフは、通信装置２０が備えるあるキューに格納されている未処理のパケットの量の時間変化の例である。以下の説明では、観測対象のキューに格納されている未処理のパケットの量のことを「キュー長」と記載することがある。
【００１２】
実施形態にかかる方法では、通信装置２０は、リアルタイムなキュー長の変化を特定可能な程度の時間間隔でキュー長を測定する。通信装置２０は、得られた測定結果から、未処理のパケットを保持するキューの長さが増加傾向にある期間と、増加傾向の開始時と終了時のキュー長の組み合わせを特定する。
【００１３】
未処理のパケットを保持するキューの長さが増加傾向にある期間の開始時刻は、例えば、１回の測定間隔での閾値以上のキューの増加が開始した時点とすることができる。図１の例では、Ａに示す観測データでのキュー長は、観測中に得られたキュー長の最小値（ｍｉｎ値）であるとする。また、観測データＢは、観測データＡの計測以降でそのキュー長が、観測データＡで得られたキュー長よりも閾値以上大きな値である最初の観測データとする。すると、観測データＡが得られた時刻から観測データＢが得られた時刻までの期間でキューの増加が閾値以上となっており、キュー長の増加は観測データＡの観測時刻から始まっていると考えられる。このため、観測データＡの観測時刻が１回の測定間隔での閾値以上のキューの増加が開始した時点となる。従って、図１の例では、未処理のパケットを保持するキューの長さが増加傾向にある期間の開始時刻は、Ａに示すデータの観測時刻である。
【００１４】
一方、未処理のパケットを保持するキューの長さが増加傾向にある期間の終了時刻は、例えば、１回の測定間隔での閾値以上のキューの減少が開始した時点とすることができる。なお、キュー長の減少量と比較する閾値の値は、キュー長の増加量との比較に使用する閾値と同じであっても良く、また、異なる値であっても良い。例えば、Ｃに示す観測データでのキュー長は、観測中に得られたキュー長の最大値（ｍａｘ値）であるとする。また、観測データＤは、観測データＣの計測以降に観測データＣで得られたキュー長よりも閾値以上小さな値である最初の観測データとする。すると、観測データＣが得られた時刻から観測データＤが得られた時刻までの期間でキューの減少が閾値以上となっており、キュー長の減少は観測データＣの観測時刻から始まっていると考えられる。このため、観測データＣの観測時刻が１回の測定間隔での閾値以上のキューの減少が開始した時点となる。従って、図１の例では、未処理のパケットを保持するキューの長さが増加傾向にある期間の終了時刻は、Ｃに示すデータの観測時刻である。
【００１５】
図１中の太い破線の矢印Ｅは、未処理のパケットを保持するキューの長さが増加傾向にある期間でのキュー長の変動の傾向を示している。以下の説明では、未処理のパケットを保持するキューの長さが増加傾向にある期間でのキュー長の変動の傾向のことを「ストローク」と記載することがある。図１の場合、観測されたストロークは、矢印Ｅに示すように、観測データＡと観測データＣの時点を結ぶ矢印となる。
【００１６】
ここで、ストロークは、キューの長さが増加傾向にある期間でのキュー長の変化の速度を表わしているので、キュー溢れ等の対策を行う際に有益な情報である。また、キュー長の増加とキュー長の減少のいずれについても、所定の閾値以上の変動が起こらない場合には、ストロークの始点や終点としては認識されない。このため、キュー長に対する閾値未満の大きさの変動によって、キューの長さの変動傾向の開始や終了が特定されずにすむので、キューの長さの変動の傾向をつかみやすい。例えば、図１の例では、観測データＡが得られる前にも、キュー長の増減が２回観測されているが、いずれも閾値未満での増減であるため、ストロークには含められていない。従って、観測データＡが得られる前に観測されているキュー長の小さな変化は、キューの長さの増加傾向としては認識されない。同様に、矢印Ｅに示す区間中でも、閾値未満の大きさでのキュー長の減少は３回起こっているが、いずれも閾値未満での増減であるため、ストロークの終了とは認識されない。
【００１７】
このように、実施形態にかかる方法では、軽微なキュー長の変動を省略して、キュー長の変動の傾向を見やすくすることができる。さらに、ストロークには軽微なキュー長の変動が含まれていないので、ストロークの情報を通信装置２０が管理装置等に送信したとしても、送信対象のデータは膨大にならない。このため、実施形態にかかる方法では、管理装置での処理負荷や、通信装置２０と管理装置の間の通信路の負荷が軽減される。
【００１８】
＜システム構成例と通信装置の構成の例＞
図２は、システムの例を説明する図である。図２に示すネットワークの例では、インターネット６を介して、クライアント２（２ａ〜２ｃ）の各々が、通信装置２０と通信している。通信装置２０はデータセンタネットワーク８に含まれている装置であって、サーバとして動作しているとする。通信装置２０は、管理ネットワーク１２を介して管理装置１０によって管理されている。管理装置１０は、例えば、通信装置２０が備えるキューの長さの変更などの処理を行うことができるものとする。クライアント２ａとクライアント２ｂは、企業内などに設けられたＬＡＮ（Local Area Network）４中に位置しており、ＬＡＮ４やインターネット６に含まれている中継装置を介して通信装置２０と通信する。なお、クライアント２ｃのように無線アクセスネットワークに位置していない装置でも、実施形態にかかる通信方法が適用可能である。同様に、通信装置２０と通信する装置は、インターネット６を介さずに通信装置２０と通信しても良い。
【００１９】
実施形態にかかる計測方法は、通信装置２０だけでなく、ＬＡＮ４やインターネット６中の中継装置やクライアント２などに適用されても良い。ただし、ＬＡＮ４やインターネット６中の中継装置において、ストロークの観測が行われた場合は、中継装置の制御を行う装置に対して、得られた観測結果が送信される。同様に、クライアント２などでストロークの観測が行われた場合、得られた観測結果は、ユーザやオペレータが認識可能となる任意の方法で出力され得る。
【００２０】
図３は、通信装置２０において生成されている仮想ネットワークの例を説明する図である。通信装置２０は、ハイパーバイザ３３を動作させることにより、仮想マシン６０（６０ａ、６０ｂ）を実現する。また、通信装置２０は、ＮＩＣ（Network Interface Card）２１を備えている。
【００２１】
ハイパーバイザ３３は、ＮＩＣ２１（２１ａ、２１ｂ）とドライバ２５（２５ａ、２５ｂ）を介して、パケットの送受信を行う。送信処理待ちのパケットは、適宜、キュー２８（２８ａ、２８ｂ）に格納される。ドライバ２５ａやドライバ２５ｂを介して受信されたパケットは、ブリッジ処理部３１（３１ａ、３１ｂ）とＩＰ（Internet Protocol）処理部３２での処理により、仮想リンク部４０（４０ａ〜４０ｄ）を介して、宛先の仮想マシン６０に転送される。仮想マシン６０は、仮想リンク部４０と仮想ＮＩＣ６１（６１ａ〜６１ｄ）を介して、パケットの送受信を行う。仮想マシン６０での受信処理待ちのパケットは、キュー４１（４１ａ〜４１ｄ）に格納される。一方、仮想マシン６０から送信されてブリッジ処理部３１での中継処理待ちのパケットは、キュー４２（４２ａ〜４２ｄ）に適宜、格納される。
【００２２】
なお、図３は、仮想ネットワークの一例に過ぎない。例えば、１台の通信装置２０で実現される仮想マシン６０の数は任意である。また、使用されるオペレーションシステム（Operating System、ＯＳ）の種類等によっては、キュー４１やキュー４２は省略され得る。同様に、キュー２８だけでなく、ハイパーバイザ３３での受信処理待ちに使用するキューが設けられても良い。なお、図３の例では、ハイパーバイザ３３での受信処理待ちに使用するキューは、ＮＩＣ２１に備えられていても良い。
【００２３】
図４は、通信装置２０の構成の例を説明する図である。通信装置２０は、ＮＩＣ２１、ホストＯＳ処理部３５、統計処理部４４、ストローク統計情報７２を備え、任意の数の仮想マシン６０を動作させることができる。図４の例では、ＮＩＣ２１（２１ａ、２１ｂ）は送信バッファ２２（２２ａ、２２ｂ）と受信バッファ２３（２３ａ、２３ｂ）を有する。送信バッファ２２は、ＮＩＣ２１での送信処理の際のパケットのバッファリングに用いられ、受信バッファ２３は、ＮＩＣ２１での受信処理の際のパケットのバッファリングに用いられる。
【００２４】
ホストＯＳ処理部３５は、ドライバ２５（２５ａ、２５ｂ）、仮想スイッチ部３０、仮想リンク部４０（４０ａ、４０ｂ）、転送処理部４３（４３ａ、４３ｂ）、ストローク検出部５０（５０ａ、５０ｂ）を備える。ドライバ２５（２５ａ、２５ｂ）は、送信部２６（２６ａ、２６ｂ）と受信部２７（２７ａ、２７ｂ）を備える。送信部２６はパケット送信のための処理を行い、受信部２７はパケットの受信のための処理を行う。仮想スイッチ部３０は、パケットの宛先に応じたスイッチングを行う。なお、仮想スイッチ部３０には、図３に示すブリッジ処理部３１やＩＰ処理部３２が含まれている。
【００２５】
仮想リンク部４０ｂは、キュー管理情報７１とキュー４１ｂを含む。ストローク検出部５０ｂは、計測部５１、特定部５２、選択部５３を有する。計測部５１は、定期的にキュー４１ｂのキュー長を観測する。特定部５２は、計測部５１での計測によって得られたキュー長のうち、暫定的に所定期間の観測での最長のキュー長または最短のキュー長として特定されたときの値や計測時刻をキュー管理情報７１に記録する。従って、キュー管理情報７１は、キュー４１ｂに対するキュー長の観測結果のうち、暫定的に所定期間の観測での最長のキュー長または最短のキュー長として特定されたときの値や計測時刻を保持している。特定部５２は、キュー管理情報７１を用いて、ストロークの開始点と終了点を特定する。特定部５２は、ストロークの開始点と終了点の各々が観測された時刻と、ストロークの開始点と終了点の各々でのキュー長をストローク統計情報７２に記録する。選択部５３は、ストローク統計情報７２に記録された情報を、管理装置１０に送信する対象として選択する。
【００２６】
統計処理部４４は、ストローク統計情報７２に含まれている情報に対する統計処理を行う。例えば、統計処理部４４は、所定の期間中に得られたストロークの中からキュー長が最長に達したものを選択できる。なお、統計処理部４４はオプションであり、統計処理が行われない通信装置２０では、統計処理部４４を備えていなくてもよい。なお、統計処理部４４が含まれている通信装置２０においては、選択部５３は、統計処理部４４の処理によって得られた情報を、管理装置１０への通知対象として選択する。
【００２７】
仮想マシン６０は、仮想ＮＩＣ６１、ＯＳ処理部６４、アプリケーション処理部６７（６７ａ、６７ｂ）を備える。ＯＳ処理部６４は、ドライバにより送信部６５と受信部６６を実現する。送信部６５は仮想ＮＩＣ６１を介した送信処理を行うことにより、通信装置２０中で実現されている他の仮想マシン６０や通信装置２０の外部の装置にパケットを送信できる。受信部６６は仮想ＮＩＣ６１を介した受信処理を行うことにより、通信装置２０中で実現されている他の仮想マシン６０や通信装置２０の外部の装置からパケットを受信する。アプリケーション処理部６７は、アプリケーションを用いてパケット中のデータを処理し、適宜、送信パケットを生成する。
【００２８】
なお、図４では、紙面の関係上、一部のリンクと一部のキューを図示しているが、通信装置２０で実装される仮想リンク部４０の数やキューの数は、実装に応じて任意に変更され得る。また、図４では、キュー４１ｂとキュー４１ｂのキュー長の処理に使用されるストローク検出部５０などを図示しているが、他の仮想リンクにもキュー４１やそのキュー４１のキュー長に関する処理を行うストローク検出部５０等が備えられている。さらに、仮想マシン６０から送信されたパケットの送信に使用されるキュー４２（図３）に対しても、そのキュー４２のキュー長に関する処理を行うためのストローク検出部５０等が備えられても良い。
【００２９】
図５は、通信装置２０のハードウェア構成の例を説明する図である。通信装置２０は、プロセッサ１０１、メモリ１０２、バスコントローラ１０３、Ｉ／Ｏ（Input/Output）バス、ネットワーク接続装置１０８、タイマ１０９を備える。さらに、通信装置２０は、オプションとして、ストレージ装置１０４、ストレージＩ／Ｏ１０５（１０５ａ、１０５ｂ）、ディスプレイＩ／Ｏ１０６、Ｉ／Ｏ１０７を備えても良い。プロセッサ１０１は、任意のプロセッサであり、例えば、Central Processing Unit（ＣＰＵ）とすることができる。なお、図５では、図を簡略化するためにプロセッサ１０１を１つ図示しているが、通信装置２０に含まれているプロセッサ１０１の数は任意である。また、通信装置２０に含まれるプロセッサ１０１が１つであっても、プロセッサ１０１に含まれているプロセッサコアの数が複数であっても良い。
【００３０】
プロセッサ１０１は、仮想マシン６０、ホストＯＳ処理部３５、統計処理部４４として動作する。プロセッサ１０１は、適宜、メモリ１０２やストレージ装置１０４に格納されたプログラムを読み込み、メモリ１０２をワーキングメモリとして用いて処理を行う。メモリ１０２は、Random Access Memory（ＲＡＭ）とRead Only Memory（ＲＯＭ）を含む。メモリ１０２は、キュー管理情報７１とストローク統計情報７２を格納する他、キュー４１、キュー４２などとして動作する。さらに、メモリ１０２は、プロセッサ１０１の処理に用いられるデータや、プロセッサ１０１の処理により得られたデータなどを保持する。
【００３１】
バスコントローラ１０３は、プロセッサ１０１とメモリ１０２を、データの入出力が可能なように接続する。また、ストレージＩ／Ｏ１０５、ディスプレイＩ／Ｏ１０６、Ｉ／Ｏ１０７は、通信装置２０と通信装置２０に接続されたディスプレイ１１３や入力装置１１０、光学ディスクドライブ１１１を、データの入出力が可能なように接続する。光学ディスクドライブ１１１は、適宜、可搬記憶媒体１１２からのデータの読み込みや可搬記憶媒体１１２へのデータの書き込みに使用されうる。プロセッサ１０１は、可搬記憶媒体１１２に記録されたプログラムを実行しても良い。
【００３２】
＜第１の実施形態＞
以下、図４に示すキュー４１ｂに格納されているパケットの量が、図１のキュー長のグラフに示すとおりに経時変化する場合を例として、ストロークの検出方法を説明する。
【００３３】
図６は、キュー管理情報７１の例を説明する図である。キュー管理情報７１は、ｍｉｎ値の観測時刻、ｍｉｎ値、ｍａｘ値の観測時刻、ｍａｘ値を含む。ここで、ｍｉｎ値は、ストロークの開始点を検索している期間中に得られたキュー長の最小値の暫定値である。従って、ｍｉｎ値は、そのキュー管理情報７１が更新された時点における、ストロークの開始時点でのキュー長の候補である。ｍｉｎ値の観測時刻は、計測部５１の計測によって、ｍｉｎ値が得られた時刻である。ｍａｘ値は、ストロークの終了点を検索している期間中に得られたキュー長の最大値の暫定値である。従って、ｍａｘ値は、そのキュー管理情報７１が更新された時点における、“ストロークの終了時点でのキュー長”の候補である。ｍａｘ値の観測時刻は、計測部５１の計測によって、ｍａｘ値が得られた時刻である。
【００３４】
図６中に示すキュー管理情報７１＿１〜７１＿１０は、キュー管理情報７１に記録されている情報の経時変化である。以下、図６と図７を適宜参照しながら、キュー管理情報７１に記録されている情報の更新の例を説明する。
【００３５】
図７は、第１の実施形態にかかるストロークの検出方法の例を説明する図である。以下の説明では、分かりやすくするために、キュー４１ｂを用いた通信が開始したときから、時系列に沿って説明する。キュー４１ｂを用いた通信が開始した時点では、キュー管理情報７１が初期化されているので、キュー管理情報７１には、ｍｉｎ値、ｍｉｎ値の観測時刻、ｍａｘ値、ｍａｘ値の観測時刻のいずれも保持されていない。キュー４１ｂを用いた通信が開始すると、キュー４１ｂには、仮想スイッチ部３０から仮想マシン６０ｂ宛のパケットとして入力されたパケットのうち、転送処理部４３ｂでの処理を待っているパケットが格納される。計測部５１は、計測周期ごとに、キュー４１ｂのキュー長を計測する。
【００３６】
時刻ｔ１において、計測部５１がキュー４１ｂのキュー長を測定したとする。しかし、時刻ｔ１の時点ではキュー４１ｂに格納されているパケットが無いとする。すると、計測部５１は、時刻ｔ１でのキュー長を０と判定する。特定部５２は、計測部５１での計測結果を、これまでに得られているキュー長の最小値と比較する。時刻ｔ１の時点では、キュー管理情報７１にはｍｉｎ値が記録されていないので、特定部５２は、時刻ｔ１で得られた値を暫定的なｍｉｎ値として記録すると共に、時刻ｔ１を暫定的なｍｉｎ値の観測時刻とする。このため、時刻ｔ１での測定によって、キュー管理情報７１＿１（図６）が得られる。
【００３７】
図７の時刻ｔ２において計測部５１がキュー４１ｂのキュー長を測定したとする。時刻ｔ２の時点では、計測部５１は、キュー長がｙ１であると計測する。特定部５２は、得られたキュー長＝ｙ１をｍｉｎ値と比較し、ｍｉｎ値を更新するかを決定する。キュー長＝ｙ１のほうがｍｉｎ値（キュー長＝０）よりも大きいので、特定部５２は、ｍｉｎ値やｍｉｎ値の観測時刻を更新しない。さらに、特定部５２は、得られたキュー長ｙ１を、ストロークの開始判定に使用する閾値Ｔｈ１と比較することにより、ストロークが開始したかを判定する。特定部５２は、キュー長が閾値Ｔｈ１以上であれば、ストロークが開始したと判定する。閾値Ｔｈ１の決定方法については後述する。図７の例では、ｙ１は閾値Ｔｈ１未満であるとする。このため、特定部５２はストロークがまだ開始していないと判定する。ストロークが開始するまでは、ｍａｘ値の検索は行われない。また、キュー管理情報７１＿１は時刻ｔ２の測定結果によっては更新されない。
【００３８】
時刻ｔ３において、計測部５１がキュー４１ｂのキュー長を測定したとする。時刻ｔ３の時点でも、キュー４１ｂに格納されているパケットが無いとする。すると、特定部５２は、時刻ｔ３でのキュー長＝０を、これまでに得られているｍｉｎ値と比較する。時刻ｔ３で得られたキュー長は０であり、キュー管理情報７１＿１に記録されているｍｉｎ値も０である。このため、特定部５２は、時刻ｔ３でもｍｉｎ値が得られたと判定して、ｍｉｎ値の観測時刻を更新する。このため、時刻ｔ３での測定によって、キュー管理情報７１＿１はキュー管理情報７１＿２（図６）に示すように更新される。
【００３９】
時刻ｔ３での計測後も、同様の処理によりキュー長の計測や、キュー管理情報７１の更新が行われる。例えば、時刻ｔ４においても、計測部５１がキュー４１ｂのキュー長＝０を測定したとする。すると、時刻ｔ３の計測結果が得られたときと同様の処理が特定部５２によって行われるので、キュー管理情報７１＿２はキュー管理情報７１＿３（図６）に示すように更新される。
【００４０】
図７の時刻ｔ５において計測部５１がキュー４１ｂのキュー長を測定したとする。時刻ｔ５の時点では、計測部５１は、キュー長がＴｈ１であると計測したとする。特定部５２は、得られたキュー長＝Ｔｈ１がｍｉｎ値より大きいので、ｍｉｎ値を更新しない。一方、特定部５２は、得られたキュー長が閾値Ｔｈ１に達したので、ストロークが開始したと判定する。
【００４１】
すると、特定部５２は、ストロークの終点の検索を開始する。ストロークの終点の検索の際には、特定部５２は、ｍａｘ値を検索する。ｍａｘ値の検索の際には、特定部５２は、計測部５１で得られた計測値をｍａｘ値と比較し、より大きい値を暫定的なｍａｘ値とする。時刻ｔ５の計測結果を用いた更新前は、キュー管理情報７１はキュー管理情報７１＿３に示すとおりであり、ｍａｘ値は記録されていない。そこで、特定部５２は、キュー長＝Ｔｈ１をｍａｘ値とすると共に、時刻ｔ５をｍａｘ値の計測時刻に設定する。このため、キュー管理情報７１＿３はキュー管理情報７１＿４に示すように更新される。
【００４２】
時刻ｔ６において計測部５１がキュー４１ｂのキュー長がｙ３であると計測したとする。特定部５２は、キュー長＝ｙ３を、キュー管理情報７１＿４に記録されているｍａｘ値である閾値Ｔｈ１と比較する。図７の例では、ｙ３は閾値Ｔｈ１よりも大きな値である。このため、特定部５２は、キュー管理情報７１＿４中のｍａｘ値をｙ３に更新し、さらに、ｍａｘ値の観測時刻をｔ６に更新する。従って、時刻ｔ６での測定結果により、キュー管理情報７１＿５（図６）が得られる。
【００４３】
時刻ｔ７において計測部５１がキュー４１ｂのキュー長がｙ２であると計測したとする。特定部５２は、キュー長＝ｙ２を、キュー管理情報７１＿５に記録されているｍａｘ値（ｙ３）と比較する。図７の例では、ｙ２はｙ３よりも小さな値である。このため、特定部５２は、キュー管理情報７１中のｍａｘ値やｍａｘ値の観測時刻を更新しない。
【００４４】
特定部５２は、ｍａｘ値を更新しない場合、キュー管理情報７１＿５に記録されているｍａｘ値と最新のキュー長の差分値を、ストロークの終点の検出に使用する閾値Ｔｈ２と比較する。特定部５２は、ｍａｘ値とキュー長の差分値が閾値Ｔｈ２以上であれば、ストロークが終了したと判定する。図７の例では、差分値＝ｙ３−ｙ２は閾値Ｔｈ２未満であったとする。すると、特定部５２は、まだストロークの終点を発見していないと判定し、ｍａｘ値の検索を継続する。従って、時刻ｔ７において、キュー管理情報７１＿５は更新されない。
【００４５】
時刻ｔ８において計測部５１がキュー４１ｂのキュー長がｙ３であると計測したとする。特定部５２は、キュー長＝ｙ３がキュー管理情報７１＿５に記録されているｍａｘ値（ｙ３）と同じ値であると判定する。そこで、特定部５２は、キュー管理情報７１＿５中のｍａｘ値の観測時刻をｔ８に更新する。従って、キュー管理情報７１＿５がキュー管理情報７１＿６（図６）に更新される。
【００４６】
時刻ｔ９において計測部５１がキュー４１ｂのキュー長がｙ５であると計測したとする。特定部５２は、キュー長＝ｙ５がキュー管理情報７１＿６に記録されているｍａｘ値（ｙ３）より大きいので、キュー管理情報７１＿６中のｍａｘ値をｙ５、ｍａｘ値の観測時刻をｔ９に更新する。従って、キュー管理情報７１＿６は、キュー管理情報７１＿７（図６）に示すように更新される。
【００４７】
時刻ｔ１０において、計測部５１はキュー４１ｂのキュー長がｙ４であると計測したとする。特定部５２は、キュー長＝ｙ４がキュー管理情報７１＿７に記録されているｍａｘ値（ｙ５）よりも小さいので、ｍａｘ値やｍａｘ値の観測時刻を更新しない。次に、特定部５２は、キュー管理情報７１＿７に記録されているｍａｘ値（ｙ５）と最新のキュー長（ｙ４）の差分値（ｙ５−ｙ４）を、ストロークの終点の検出に使用する閾値Ｔｈ２と比較する。図７の例では、差分値（ｙ５−ｙ４）は閾値Ｔｈ２より小さいので、特定部５２は、ストロークの終点に至っていないと判定し、ｍａｘ値の検索を継続する。従って、キュー管理情報７１＿７は更新されない。
【００４８】
時刻ｔ１１において、計測部５１はキュー４１ｂのキュー長がｙ７であると計測したとする。すると、キュー長＝ｙ７はキュー管理情報７１＿７中のｍａｘ値（ｙ５）よりも大きいので、時刻ｔ９での計測後の処理と同様の処理により、キュー管理情報７１＿７は、キュー管理情報７１＿８（図６）に示すように更新される。
【００４９】
時刻ｔ１２において、計測部５１はキュー４１ｂのキュー長がｙ６であると計測したとする。キュー長＝ｙ６はキュー管理情報７１＿８に記録されているｍａｘ値（ｙ７）よりも小さいので、時刻ｔ１０での計測後の処理と同様の処理が行われる。図７の例では、キュー管理情報７１＿８に記録されているｍａｘ値（ｙ７）と最新のキュー長（ｙ６）の差分値（ｙ７−ｙ６）は閾値Ｔｈ２より小さいので、特定部５２は、ストロークの終点に至っていないと判定し、ｍａｘ値の検索を継続する。
【００５０】
時刻ｔ１３において、計測部５１はキュー４１ｂのキュー長がｙ８であると計測したとする。すると、キュー長＝ｙ８はキュー管理情報７１＿８中のｍａｘ値よりも大きいので、時刻ｔ９での計測後の処理と同様の処理により、キュー管理情報７１＿８は、キュー管理情報７１＿９（図６）に示すように更新される。
【００５１】
時刻ｔ１４において、計測部５１はキュー４１ｂのキュー長が（ｙ８−Ｔｈ２）であると計測したとする。キュー長＝（ｙ８−Ｔｈ２）はキュー管理情報７１＿９に記録されているｍａｘ値（ｙ８）よりも小さいので、キュー管理情報７１中のｍａｘ値やｍａｘ値の観測時刻は更新されない。図７の例では、時刻ｔ１４において、キュー管理情報７１＿９に記録されているｍａｘ値（ｙ８）と最新のキュー長（ｙ８−Ｔｈ２）の差分値は閾値Ｔｈ２と同じ値である。そこで、特定部５２は、キュー管理情報７１＿９に記録されているｍａｘ値がストロークの終点であると判定し、得られたストロークの情報を、ストローク統計情報７２に記録する。ここで、ストローク統計情報７２中のストロークの情報として、ストロークの始点の観測時刻、ストロークの始点でのキュー長、ストロークの終点の観測時刻、ストロークの終点でのキュー長が記録される。ストローク統計情報７２の例やストローク統計情報７２を用いた処理の例については、図８を参照しながら後述する。
【００５２】
特定部５２は、ストロークの終点の検出が終わると、新たなストロークの始点の検索を開始する。ここで、次に発生するストロークの始点でのキュー長は、検出済みのストロークの始点で得られたキュー長以下であるとは限らない。例えば、転送処理部４３ｂでの転送処理の速さが、仮想スイッチ部３０からキュー４１ｂへのパケットの蓄積の速さに追いつかなくなると、キュー４１ｂ中のパケットの蓄積量が０になる前に新たなストロークが発生する可能性がある。そこで、特定部５２は、新たなストロークの始点の検索のために、キュー管理情報７１中のｍｉｎ値を最新のキュー長の観測結果を用いて更新する。
【００５３】
時刻ｔ１４での計測時には、最新のキュー長は（ｙ８−Ｔｈ２）である。そこで、特定部５２は、時刻ｔ１４での計測を用いたストロークの終点に伴い、キュー管理情報７１＿９のｍｉｎ値を（ｙ８−Ｔｈ２）に設定すると共に、ｍｉｎ値の観測時刻を時刻ｔ１４に設定する。このため、キュー管理情報７１＿９は、キュー管理情報７１＿１０（図６）に示すように更新される。その後、新たなストロークの検出のために行われる処理は、図７を参照しながら説明した時刻ｔ２〜ｔ５での計測処理やキュー長の計測後の処理と同様である。
【００５４】
図６、図７の説明では、ストロークの検出の際に、閾値Ｔｈ１と閾値Ｔｈ２を使用しているが、第１の実施形態でも、閾値Ｔｈ１と閾値Ｔｈ２の値は同じであっても良く、また、互いに異なっていても良い。閾値Ｔｈ１と閾値Ｔｈ２の値のうちの小さい方の値は、特定しようとするストロークの大きさの最小値に相当する。閾値Ｔｈ１と閾値Ｔｈ２のいずれも観測対象のキューに格納可能なパケットの容量に応じて決定されても良い。閾値Ｔｈ１や閾値Ｔｈ２は、処理対象のキューに格納可能なパケット数を基準として、例えば、処理対象のキューに格納可能なパケット数の１／ｎ（ｎは任意の正の値）に設定されても良い。また、閾値Ｔｈ１と閾値Ｔｈ２のいずれも、６４パケットなどの具体的な値で設定されても良い。換言すると、閾値Ｔｈ１と閾値Ｔｈ２は、バースト的なパケットの送受信としてシステムにおいて監視するパケットの連続数であるといえる。
【００５５】
図８は、ストローク統計情報７２の例を説明する図である。ストローク統計情報７２は、検出されたストロークの始点の観測時刻（始点時刻）、ストロークの始点でのキュー長、ストロークの終点の観測時刻（終点時刻）、ストロークの終点でのキュー長を保持している。ストローク統計情報７２＿１は、図７の時刻ｔ１４での計測によってストロークの終点が検出されたことを契機に生成されたストローク統計情報７２の例である。
【００５６】
選択部５３は、ストローク統計情報７２＿１に記録されたストロークの情報を、管理装置１０に通知する情報として選択する。選択部５３は、選択した情報を管理装置１０に通知するための制御パケットを生成し、送信部２６やＮＩＣ２１を介して管理装置１０に向けて送信する。なお、管理装置１０との通信に使用する送信部２６やＮＩＣ２１は、通信装置２０が備える任意のものであってよく、また、管理装置１０との通信に使用するための専用のＮＩＣ２１などであっても良い。さらに、通信装置２０から管理装置１０への通知処理に使用される制御パケットは、任意の形式を用いることができる。例えば、管理装置１０への通知に使用される制御パケットとして、既知の監視ソフトウェアのアラート機能を実現するパケットが使用されても良い。
【００５７】
ストローク統計情報７２＿１には、１つのストロークの情報が格納されているが、実装に応じて、ストローク統計情報７２に保持されるストロークの数は任意に変更され得る。例えば、ストローク統計情報７２＿２では、複数のストロークの各々について、始点の観測時刻、ストロークの始点でのキュー長、終点の観測時刻、ストロークの終点でのキュー長が記録されている。ストローク統計情報７２＿２の１番目の記録は、２０１６年１０月２５日の０１：０５：１７．２８７から０１：０５：１７．２９１にかけて、キュー長が５０パケットから２２７パケットに増加するストロークが観測されたことを表わしている。ストローク統計情報７２＿２の２番目の記録は、２０１６年１０月２５日の０１：０５：１７．２９４から０１：０５：１７．２９８にかけて、キュー長が９２パケットから４５９パケットに増加するストロークが観測されたことを表わしている。さらに、ストローク統計情報７２＿２の３番目の記録は、２０１６年１０月２５日の０１：０５：２０．７８０から０１：０５：２０．７８６にかけて、キュー長が０パケットから３２０パケットに増加するストロークが観測されたことを表わしている。このように、複数のストロークに関する情報が得られると、管理装置１０では、ストロークの発生頻度や、キュー４１ｂに蓄積されたパケットの量を用いて、適宜、キュー４１ｂに割り当てるメモリの容量の変更などを、通信装置２０に要求することができる。また、管理装置１０に通知された情報を、適宜、オペレータが確認して通信装置２０の設定を変更するシステムでは、オペレータが、ストロークの発生頻度やパケットの蓄積量などの値を用いて、通信装置２０に対する設定変更を行うことができる。
【００５８】
仮想化環境などでは、キュー長の管理やプロセッサ１０１のタスクの割り当てもソフトウェアで行われるため、仮想マシン等が適用されていない環境と比較して、バースト的なパケットの送受信が発生しやすい。このため、プロセッサ１０１の処理の配分等がパケットの受信量に見合わない場合に、容易にキュー溢れが発生してしまう。従って、ストロークの情報を管理装置１０に通知することにより、管理装置１０ではキュー長の大きな変動を特定し、適宜、プロセッサ１０１のタスクの振り分け状況やキューの設定状況を変更することを決定することができる。例えば、管理装置１０は、ストローク長と所定期間中に発生したストロークの回数に応じて、キュー長の変更量を決定することができる。例えば、所定期間に３回のストロークが発生した場合、管理装置１０は、観測されたストロークのうちの最長のストローク長の３倍を新たなキューの容量として設定することを通信装置２０に要求しても良い。
【００５９】
なお、図６〜図８を参照しながら、キュー４１ｂに蓄積されるパケットのストロークの検出について説明したが、他のキューについても同様の処理により、ストロークの検出や検出結果の通知等の処理が行われる。
【００６０】
図９Ａと図９Ｂは、ストロークの検出方法の例を説明するフローチャートである。通信装置２０の起動時に、特定部５２は、一時的にメモリ等に保持されているキュー長の測定値や、キュー管理情報７１中に記録されているｍｉｎ値、ｍａｘ値を初期化する（ステップＳ１）。ステップＳ１の処理の際に、特定部５２は、ｍｉｎ値やｍａｘ値の観測時刻も合わせて初期化しても良い。
【００６１】
計測部５１は、処理対象のキュー４１でキュー長が変化したかを判定する（ステップＳ２）。このとき、計測部５１は、仮想スイッチ部３０からキュー４１へのパケットのエンキューや、転送処理部４３によるキュー４１からのパケットのデキューが発生しているかを判定することにより、キュー長の変化をモニタできる。計測部５１は、キュー長が変化していない場合は、キュー長が変化するまで待機する（ステップＳ２でＮｏ）。
【００６２】
キュー長が変化すると、計測部５１はキュー長（ｘ）を取得する（ステップＳ２でＹｅｓ、ステップＳ３）。特定部５２は、得られたキュー長（ｘ）がｍｉｎ値以下であるかを判定する（ステップＳ４）。ここで、ｍｉｎ値は、キュー管理情報７１中に保持されている。キュー長（ｘ）がｍｉｎ値以下である場合、特定部５２は、キュー長（ｘ）がｍｉｎ値と同じ値であるかを判定する（ステップＳ４でＹｅｓ、ステップＳ５）。キュー長（ｘ）がｍｉｎ値と同じ値である場合、特定部５２は、キュー管理情報７１中のｍｉｎ値の観測時刻を更新し、ステップＳ２に戻る（ステップＳ５でＹｅｓ、ステップＳ６）。キュー長（ｘ）がｍｉｎ値より小さい場合、特定部５２は、得られたキュー長（ｘ）をｍｉｎ値に代入し、さらに、ｍｉｎ値の観測時刻を更新してから、ステップＳ２に戻る（ステップＳ５でＮｏ、ステップＳ７）。なお、ステップＳ４やＳ５において、ｍｉｎ値が初期値に設定されている場合、特定部５２は、ｍｉｎ値がキュー長（ｘ）未満であると判定するものとする。
【００６３】
一方、得られたキュー長（ｘ）がｍｉｎ値より大きい場合、特定部５２は、得られたキュー長（ｘ）がｍｉｎ値と閾値Ｔｈ１の合計（ｍｉｎ値＋Ｔｈ１）以上であるかを判定する（ステップＳ４でＮｏ、ステップＳ８）。得られたキュー長（ｘ）がｍｉｎ値と閾値Ｔｈ１の合計（ｍｉｎ値＋Ｔｈ１）以上ではない場合、ストロークの始点が発見されていないので、ステップＳ２以降の処理が繰り返される（ステップＳ４でＮｏ、ステップＳ８でＮｏ）。
【００６４】
得られたキュー長（ｘ）がｍｉｎ値と閾値Ｔｈ１の合計（ｍｉｎ値＋Ｔｈ１）以上である場合、特定部５２は、現在のｍｉｎ値とｍｉｎ値の観測時刻をストロークの始点として検出したと判定する（ステップＳ８でＹｅｓ）。そこで、特定部５２は、ｍｉｎ値をストローク開始点、ｍｉｎ値の観測時刻をストローク開始時刻に設定し、さらに、最新のキュー長ｘをｍａｘ値に設定する（ステップＳ９）。
【００６５】
その後、計測部５１は、処理対象のキュー４１でキュー長が変化したかを判定し、キュー長が変化するまで待機する（ステップＳ１０でＮｏ）。キュー長が変化すると、計測部５１は新たにキュー長（ｙ）を取得する（ステップＳ１０でＹｅｓ、ステップＳ１１）。特定部５２は、得られたキュー長（ｙ）がｍａｘ値以上であるかを判定する（ステップＳ１２）。ここで、ｍａｘ値は、キュー管理情報７１中に保持されている。キュー長（ｙ）がｍａｘ値以上である場合、特定部５２は、キュー長（ｙ）がｍａｘ値と同じ値であるかを判定する（ステップＳ１２でＹｅｓ、ステップＳ１３）。キュー長（ｙ）がｍａｘ値と同じ値である場合、特定部５２は、キュー管理情報７１中のｍａｘ値の観測時刻を更新し、ステップＳ１０に戻る（ステップＳ１３でＹｅｓ、ステップＳ１４）。キュー長（ｙ）がｍａｘ値を超えている場合、特定部５２は、得られたキュー長（ｙ）をｍａｘ値に代入し、さらに、ｍａｘ値の観測時刻を更新してから、ステップＳ１０に戻る（ステップＳ１３でＮｏ、ステップＳ１５）。
【００６６】
一方、得られたキュー長（ｙ）がｍａｘ値より小さい場合、特定部５２は、得られたキュー長（ｙ）がｍａｘ値から閾値Ｔｈ２を差し引いた値（ｍａｘ値−Ｔｈ２）以下であるかを判定する（ステップＳ１２でＮｏ、ステップＳ１６）。ここで、ステップＳ１６の処理は、得られたキュー長ｙがｍａｘ値よりも閾値Ｔｈ２以上小さくなっているかを判定している。得られたキュー長（ｙ）がｍａｘ値から閾値Ｔｈ２を差し引いたときの差分（ｍａｘ値−Ｔｈ２）以下ではない場合、ストロークの終点が発見されていないので、ステップＳ１０以降の処理が繰り返される（ステップＳ１２でＮｏ、ステップＳ１６でＮｏ）。
【００６７】
得られたキュー長（ｙ）がｍａｘ値から閾値Ｔｈ２を差し引いた値（ｍａｘ値−Ｔｈ２）以下である場合、特定部５２は、現在のｍａｘ値とｍａｘ値の観測時刻をストロークの終点として検出したと判定する（ステップＳ１６でＹｅｓ）。そこで、特定部５２は、ｍａｘ値をストローク終点、ｍａｘ値の観測時刻をストローク終了時刻に設定する（ステップＳ１７）。特定部５２は、更新後のキュー管理情報７１の情報をストローク統計情報７２に記録することにより、得られたストロークの情報を保存する（ステップＳ１８）。さらに、特定部５２は、キュー管理情報７１において、最新のキュー長ｙを新たなｍｉｎ値に設定し、ステップＳ２に戻る（ステップＳ１９）。
【００６８】
図１０は、第１の実施形態にかかる検出方法の例を説明する状態遷移図である。なお、図１０では、図９Ａや図９Ｂから、閾値判定の式を変形し、計測値がｍｉｎ値と閾値の合計を超えるとストロークの開始を検出する場合の例を説明する。また、同様に、図１０では、計測値がｍａｘ値から閾値を差し引いた値よりも小さくなるとストロークの終点を検出する。
【００６９】
ＳＴ１０１は、特定部５２がストロークの開始点を検索している状態を示す。ストロークの開始点の検索中は、特定部５２は、計測部５１の計測結果を用いて、キュー管理情報７１中のｍｉｎ値やｍｉｎ値の観測時刻の更新を行う。ここで、ストロークとして特定するキュー長の変化の規模を限定するために、特定部５２は、閾値以上のキュー長の増加が観測されたときに得られているｍｉｎ値の観測時点を、ストロークの開始時点として判定する。このため、特定部５２は、計測部５１で得られた計測値がｍｉｎ値と閾値の合計を超えるまで、ＳＴ１０１の状態を継続する。なお、ＳＴ１０１の状態で行われる処理は、図９Ａを参照しながら説明したステップＳ２〜Ｓ８と同様である。
【００７０】
一方、計測部５１で得られた計測値がｍｉｎ値と閾値の合計を超えると、特定部５２は、ＳＴ１０１からＳＴ１０２に遷移する。このとき、特定部５２は、以後の処理に使用するｍａｘ値を、観測されたキュー長に設定する。ＳＴ１０１からＳＴ１０２への遷移は、図９ＡのステップＳ８においてＹｅｓと判定されてステップＳ９の処理が行われた場合に相当する。
【００７１】
ＳＴ１０２は、特定部５２がストロークの終了点を検索している状態を示す。ストロークの終了点の検索中、特定部５２は、計測部５１の計測結果を用いて、キュー管理情報７１中のｍａｘ値やｍａｘ値の観測時刻の更新を行う。特定部５２は、ｍａｘ値の検索の際においても、ストロークとして特定するキュー長の変化の規模を限定するために、閾値以上のキュー長の減少が観測されたときに得られているｍａｘ値の観測時点を、ストロークの終了時点として判定する。このため、特定部５２は、計測部５１で得られた計測値がｍａｘ値から閾値を差し引いた値を下回るまで、ＳＴ１０２の状態を継続する。なお、ＳＴ１０２の状態で行われる処理は、図９Ｂを参照しながら説明したステップＳ１０〜Ｓ１６と同様である。
【００７２】
一方、計測部５１で得られた計測値がｍａｘ値から閾値を差し引いた値を下回ると、特定部５２は、ＳＴ１０２からＳＴ１０１に遷移する。このとき、特定部５２は、以後の処理に使用するｍｉｎ値を、観測されたキュー長に設定する。ＳＴ１０２からＳＴ１０１への遷移は、図９ＢのステップＳ１６においてＹｅｓと判定された後のステップＳ１７〜Ｓ１９の処理が行われた場合に相当する。
【００７３】
このように、第１の実施形態にかかる方法では、軽微なキュー長の変動を省略して、ストロークの始点と終点についてだけ、キュー長と観測時刻を特定するので、少ないデータ量でキュー長の変動の傾向を見やすくすることができる。また、ストロークには軽微なキュー長の変動が含まれていないので、ストロークの情報を通信装置２０が通信装置１０等に送信したとしても、送信対象のデータは膨大にならない。従って、第１の実施形態にかかる方法を適用することにより、管理装置１０での処理負荷や、通信装置２０と管理装置１０の間の通信路の負荷が軽減される。
【００７４】
さらに、第１の実施形態によると、ストロークの規模と発生頻度が管理装置１０やオペレータに通知されるため、管理装置１０やオペレータにとって、システムの性能を改善するためのリソースの配備の決定を行いやすくなるという利点もある。例えば、ストロークの長さは長いがストロークの発生頻度が低い場合は、キューの容量の調整によって問題を解決できる可能性が高い。一方、ストロークの発生頻度が高い場合は、ストロークが発生しているリンクが過負荷状態に陥っているので、適宜、ロードバランシングやリソースの配備を変更することにより負荷を軽減できる可能性がある。このように、ストロークの情報を管理装置１０やオペレータに通知することにより、ネットワークの問題を適切に解決しやすくなる。
【００７５】
＜第２の実施形態＞
第２の実施形態では、キュー長の計測値の代わりに、移動平均値（Moving Average、ＭＡ、ｍａｖｅ）を用いる場合の例を説明する。なお、移動平均値の計算方法として、任意の既知の方法が使用されうる。例えば、指数加重移動平均（Exponentially Weighted Moving Average、ＥＷＭＡ）が移動平均値の計算の際に用いられても良い。
【００７６】
図１１は、第２の実施形態にかかるストロークの検出方法の例を説明する図である。図１１では、キュー長の変動を実線で示し、ストロークの始点付近と終点付近でのキュー長の変化などを拡大して表わしている。拡大された図面中の細い破線（ＭＡ）は移動平均の変動である。さらに、太い破線の矢印は、図１１に示す変動で特定されたストロークの例である。
【００７７】
図１２は、キュー管理情報７１とストローク統計情報７２の例を説明する図である。第２の実施形態では、キュー管理情報７１として、ｍｉｎ値とｍａｘ値の代わりに極小値と極大値を用いるものとする。従って、キュー管理情報７１（７１＿２１〜７１＿２３）には、キュー長の極小値、キュー長の極小値の観測時刻、キュー長の極大値、キュー長の極大値の観測時刻が記録される。一方、ストローク統計情報７２に記録される値は、第２の実施形態であっても第１の実施形態と同様に、ストロークの始点時刻、始点でのキュー長、終点時刻、終点でのキュー長である。
【００７８】
以下、図１１と図１２を参照しながら、キュー４１ｂを用いた通信の開始後に、図１１に示すキュー長の変化が発生した場合を例として、通信装置２０での処理の例を時系列に沿って説明する。キュー４１ｂを用いた通信が開始した時点では、キュー管理情報７１が初期化されているので、キュー管理情報７１には、極小値、極小値の観測時刻、極大値、極大値の観測時刻のいずれも保持されていない。その後、計測部５１はキュー長の取得を行うと共に、過去のキュー長を用いて移動平均値を求める。時刻ｔ２１の時点で得られた移動平均を、時刻ｔ２１の前に得られた移動平均値および時刻ｔ２１の後の計測により得られた移動平均値と比較した結果、特定部５２は、時刻ｔ２１において極小値が得られていたと判定したとする。また、時刻ｔ２１において得られた極小値は０であったとする。すると、特定部５２は、時刻ｔ２１の時点において、以下の情報をキュー管理情報７１に記録するので、キュー管理情報７１＿２１（図１２）が得られる。
【００７９】
時刻ｔ２２において、計測部５１がキュー４１ｂのキュー長を測定し、得られたキュー長を用いて移動平均を求めたとする。時刻ｔ２２の時点では、移動平均値はｙ２１であったとする。その後、特定部５２は、過去に得られた移動平均値と移動平均値ｙ２１を用いて、移動平均の極小値の検出を行う。ここでは、時刻ｔ２２の時点では、移動平均の極小値として新たな値が得られず、キュー管理情報７１は更新されないとする。
【００８０】
時刻ｔ２３において、計測部５１がキュー４１ｂのキュー長の測定と移動平均の計算を行ったとする。時刻ｔ２３で観測されたキュー長はｙ２２であったとする。その後、特定部５２は、過去に得られた移動平均値と時刻ｔ２３での測定結果から得られた移動平均値を用いて、移動平均の極小値の検出を行う。図１１の例では、時刻ｔ２３での極小値の検出の際に、移動平均の極小値が時刻ｔ２２に得られていたことと、極小値がｙ２１であることが特定されたとする。すると、特定部５２は、時刻ｔ２２で極小値が得られたと判定して、極小値の観測時刻と極小値を更新する。このため、時刻ｔ２３での測定値を用いた処理によって、キュー管理情報７１＿２１はキュー管理情報７１＿２２（図１２）に示すように更新される。
【００８１】
さらに、特定部５２は、最新のキュー長（ｙ２２）が、最新の移動平均値とストロークの始点の検出に用いる閾値Ｔｈ１の合計に達しているかも判定する。例えば、時刻ｔ２３での移動平均値をｙ２２ａとする。図１１の例では、拡大図に示すとおり、時刻ｔ２３でのキュー長ｙ２２は、時刻ｔ２３での移動平均値（ｙ２２ａ）よりも閾値Ｔｈ１だけ大きい。従って、時刻ｔ２３に得られたキュー長の観測値は、最新の移動平均値（ｙ２２ａ）と閾値Ｔｈ１の合計となる。そこで、特定部５２は、最新の極小値が観測された時刻ｔ２２をストロークの開始点とし、最新の極小値であるｙ２１をストロークの始点でのキューの長さであると判定する。
【００８２】
特定部５２は、ストロークの始点を検出すると、ストロークの終点を求めるための処理を開始する。特定部５２は、時刻ｔ２３で得られた移動平均の値（ｙ２２ａ）を、暫定的な極大値とする。このため、特定部５２は、キュー管理情報７１＿２２を、以下の情報を含むように更新する。
【００８３】
極小値の観測時刻：ｔ２２
極小値          ：ｙ２１
極大値の観測時刻：ｔ２３
極大値          ：ｙ２２ａ
その後も、計測部５１は所定の周期ごとに、キュー４１ｂのキュー長の測定と移動平均の計算を行う。特定部５２は、新たに得られた移動平均値や過去に得られた移動平均値を用いることにより極大値が得られると、適宜、キュー管理情報７１において、移動平均の極大値と極大値の観測時刻を更新する。
【００８４】
例えば、特定部５２は、時刻ｔ２５の測定と移動平均の計算結果を用いて、時刻ｔ２４に得られた移動平均値ｙ２３は極大値であると判定したとする。すると、特定部５２は、キュー管理情報７１中の極大値と極大値の観測時刻を更新するので、キュー管理情報７１＿２３（図１２）が得られる。
【００８５】
特定部５２は、さらに、最新のキュー長が、最新の移動平均値よりもストロークの終点の検出に用いる閾値Ｔｈ２以上小さい値であるかも判定する。図１１の例では、拡大図に示すとおり、時刻ｔ２５で得られている移動平均値（ｙ２４ａ）と、時刻ｔ２５でのキュー長の実測値（ｙ２４ａ−Ｔｈ２）の差は閾値Ｔｈ２である。従って、時刻ｔ２５に得られたキュー長の観測値は、最新の移動平均値（ｙ２４ａ）よりも閾値Ｔｈ２だけ小さい値となる。そこで、特定部５２は、最新の極大値が観測された時刻ｔ２４をストロークの終了点とし、最新の極大値であるｙ２３をストロークの終点でのキューの長さであると判定する。特定部５２は、得られたストロークの情報をストローク統計情報７２に記録するので、図１１での計測結果として、ストローク統計情報７２＿１１（図１２）が得られる。
【００８６】
ストローク統計情報７２が得られた後に、通信装置２０から管理装置１０に行われる通知処理は、第２の実施形態であっても第１の実施形態と同様である。このため、管理装置１０は、通信装置２０から通知されたストロークの情報を用いて、通信装置２０のキュー長を制御するための処理を特定でき、特定した処理を要求するための制御パケットを通信装置２０に送信できる。
【００８７】
図１３Ａと図１３Ｂは、ストロークの検出方法の例を説明するフローチャートである。図１３Ａと図１３Ｂでは、測定回数の前後関係を明確にするために、計測回を変数ｉで示している。なお、図１３Ａと図１３Ｂでは、図１１や図１２の説明から、閾値判定の式を変形し、計測値が最新の移動平均と閾値の合計を超えるとストロークの開始を検出する場合の例を説明する。また、同様に、図１３Ａと図１３Ｂでは、最新の移動平均が極大値から閾値を差し引いた値よりも小さくなるとストロークの終点を検出する。
【００８８】
通信装置２０の起動時に、特定部５２は、一時的にメモリ等に保持されているキュー長の測定値、キュー管理情報７１中に記録されている最新の極小値（α）、最新の極大値（β）を初期化し、変数ｉを０に設定する（ステップＳ３１）。ステップＳ３１の処理の際に、特定部５２は、極小値や極大値の観測時刻も合わせて初期化しても良い。
【００８９】
計測部５１は、処理対象のキュー４１でキュー長が変化したかを判定する（ステップＳ３２）。キュー長が変化したかの判定の際には、計測部５１は、第１の実施形態と同様に、エンキューやデキューのタイミングを用いることができる。計測部５１は、キュー長が変化していない場合は、キュー長が変化するまで待機する（ステップＳ３２でＮｏ）。
【００９０】
キュー長が変化すると、計測部５１は変数ｉを１つインクリメントし、キュー長（ｘ）を取得する（ステップＳ３２でＹｅｓ、ステップＳ３３、Ｓ３４）。計測部５１は、さらに、キュー長（ｘ）を用いて、ｉ回目の測定での移動平均（ＭＡｉ）を取得する（ステップＳ３５）。
【００９１】
特定部５２は、ｉ回目の測定での移動平均（ＭＡｉ）を用いて、ｉ−１回目に求められた移動平均（ＭＡｉ−１）が極小値であるかを判定する（ステップＳ３６）。ｉ−１回目の移動平均（ＭＡｉ−１）が極小値である場合、特定部５２は、最新の極小値αをｉ−１回目の移動平均（ＭＡｉ−１）にし、最新の極小値αの観測時刻をｉ−１回目のキュー長取得時刻とする（ステップＳ３６でＹｅｓ、ステップＳ３７）。ｉ−１回目に求められた移動平均（ＭＡｉ−１）が極小値で無い場合（ステップＳ３６でＮｏ）と、ステップＳ３７の処理後のいずれも、ステップＳ３８以降の処理が行われる。
【００９２】
特定部５２は、ｉ回目の測定で得られたキュー長（ｘ）が、ｉ回目の移動平均（ＭＡｉ）と閾値Ｔｈ１の和（ＭＡｉ＋Ｔｈ１）を超えているかを判定する（ステップＳ３８）。ｉ回目の測定で得られたキュー長（ｘ）がｉ回目の移動平均と閾値Ｔｈ１の和（ＭＡｉ＋Ｔｈ１）を超えていない場合、特定部５２は、ステップＳ３２に戻る（ステップＳ３８でＮｏ）。
【００９３】
一方、ｉ回目の測定で得られたキュー長（ｘ）がｉ回目の移動平均と閾値Ｔｈ１の和（ＭＡｉ＋Ｔｈ１）を超えている場合、特定部５２は、最新の極小値（α）をストロークの開始点として検出したことになる（ステップＳ３８でＹｅｓ）。そこで、特定部５２は、最新の極小値（α）をストロークの開始点とし、最新の極小値の観測時刻をストロークの開始時刻とする（ステップＳ３９）。さらに、特定部５２は、ｉ回目の移動平均を最新の極大値（β）に設定する（ステップＳ４０）。
【００９４】
その後、計測部５１は、処理対象のキュー４１でキュー長が変化したかを判定し、キュー長が変化するまで待機する（ステップＳ４１でＮｏ）。キュー長が変化すると、計測部５１は変数ｉを１つインクリメントし、キュー長（ｙ）を取得する（ステップＳ４１でＹｅｓ、ステップＳ４２、Ｓ４３）。計測部５１は、さらに、キュー長（ｙ）を用いて、ｉ回目の測定での移動平均（ＭＡｉ）を取得する（ステップＳ４４）。
【００９５】
特定部５２は、ｉ回目の測定での移動平均（ＭＡｉ）を用いて、ｉ−１回目に求められた移動平均（ＭＡｉ−１）が極大値であるかを判定する（ステップＳ４５）。ｉ−１回目の移動平均（ＭＡｉ−１）が極大値である場合、特定部５２は、最新の極大値βをｉ−１回目の移動平均（ＭＡｉ−１）にし、最新の極大値βの観測時刻をｉ−１回目のキュー長取得時刻とする（ステップＳ４５でＹｅｓ、ステップＳ４６）。ｉ−１回目に求められた移動平均（ＭＡｉ−１）が極大値では無い場合（ステップＳ４５でＮｏ）と、ステップＳ４６の処理後のいずれも、ステップＳ４７以降の処理が行われる。
【００９６】
特定部５２は、ｉ回目の測定で得られたキュー長（ｙ）が、ｉ回目の移動平均（ＭＡｉ）から閾値Ｔｈ２を差し引いた差分値（ＭＡｉ−Ｔｈ２）未満であるかを判定する（ステップＳ４７）。ｉ回目の測定で得られたキュー長（ｙ）がｉ回目の移動平均から閾値Ｔｈ２を差し引いた差分値（ＭＡｉ−Ｔｈ２）以上の場合、特定部５２は、ステップＳ４１に戻る（ステップＳ４７でＮｏ）。
【００９７】
一方、ｉ回目の測定で得られたキュー長（ｙ）がｉ回目の移動平均から閾値Ｔｈ２を差し引いた差分値（ＭＡｉ−Ｔｈ２）を下回っている場合、特定部５２は、最新の極大値（β）をストロークの終了点として検出したことになる（ステップＳ４７でＹｅｓ）。そこで、特定部５２は、最新の極大値（β）をストロークの終了点とし、最新の極大値の観測時刻をストロークの終了時刻とする（ステップＳ４８）。特定部５２は、更新後のキュー管理情報７１の情報をストローク統計情報７２に記録することにより、得られたストロークの情報を保存する（ステップＳ４９）。さらに、特定部５２は、キュー管理情報７１において、さらに、特定部５２は、ｉ回目の移動平均を最新の極小値（α）に設定し、ステップＳ３２に戻る（ステップＳ５０）。
【００９８】
図１４は、第２の実施形態にかかる検出方法の例を説明する状態遷移図である。ＳＴ２０１は、特定部５２がストロークの開始点を検索している状態を示す。ストロークの開始点の検索中は、特定部５２は、移動平均値（ｍａｖｅ）の変動の履歴を用いて、キュー管理情報７１中の極小値や極小値の観測時刻の更新を行う。さらに、移動平均値の更新も、キュー長の測定のたびに行われる。ここで、ストロークとして特定するキュー長の計測値の変化の規模を限定するために、特定部５２は、移動平均値と閾値の和をキュー長が上回ったときに得られている最新の極小値の観測時点を、ストロークの開始時点として判定する。このため、特定部５２は、観測されたキュー長が移動平均値と閾値の合計を超えるまで、ＳＴ２０１の状態を継続する。なお、ＳＴ２０１の状態の処理は、図１３Ａを参照しながら説明したステップＳ３２〜Ｓ３８と同様である。
【００９９】
一方、計測部５１で観測されたキュー長が移動平均値と閾値の合計を超えると、特定部５２は、ＳＴ２０１からＳＴ２０２に遷移する。このとき、特定部５２は、最新の移動平均の値を、以後の処理に使用する極大値に設定する。ＳＴ２０１からＳＴ２０２への遷移は、図１３ＡのステップＳ３８においてＹｅｓと判定されてステップＳ３９、Ｓ４０の処理が行われた場合に相当する。
【０１００】
ＳＴ２０２は、特定部５２がストロークの終了点を検索している状態を示す。ストロークの終了点の検索中、特定部５２は、移動平均値の変動の履歴を用いて、キュー管理情報７１中の極大値や極大値の観測時刻の更新を行う。さらに、ＳＴ２０２においても、移動平均値の更新も、キュー長の測定のたびに行われる。特定部５２は、極大値の検索の際においても、ストロークとして特定するキュー長の変化の規模を限定するために、移動平均値から閾値を差し引いた差分値をキュー長が下回ったときに得られている極大値の観測時点を、ストロークの終了時点として判定する。このため、特定部５２は、移動平均値から閾値を差し引いた差分値をキュー長が下回るまで、ＳＴ２０２の状態を継続する。なお、ＳＴ２０２の状態の処理は、図１３Ｂを参照しながら説明したステップＳ４１〜Ｓ４７と同様である。
【０１０１】
一方、移動平均値から閾値を差し引いた差分値をキュー長が下回ると、特定部５２は、ＳＴ２０２からＳＴ２０１に遷移する。このとき、特定部５２は、最新の移動平均を、以後の処理に使用する極小値に設定する。ＳＴ２０２からＳＴ２０１への遷移は、図１３ＢのステップＳ４７においてＹｅｓと判定された後のステップＳ４８〜Ｓ５０の処理が行われた場合に相当する。
【０１０２】
第２の実施形態で説明したように極小値と極大値を用いたストロークの検出では、キュー長の最小値や最大値が閾値よりも小さい範囲で長時間にわたって変動する場合に、キュー長の変化が比較的激しい期間を精度よく検出することができる。例えば、キュー長が時刻ｔａから時刻ｔｃにかけて閾値Ｔｈ１未満の差で増加し続け、その後、急激にキュー長が増加したとする。この場合、第１の実施形態では、最小のキュー長が得られた時刻ｔａがストロークの開始点として認識されるが、第２の実施形態では、キュー長の実測値が移動平均値と閾値の和を越える直前に極小値が観測された時点がストロークの開始点となる。従って、キュー長の小幅な変動が長時間にわたる場合は、第２の実施形態を用いて検出されたストロークは、第１の実施形態よりも、キュー長の変動状況を正確に反映したデータとなる。
【０１０３】
＜第３の実施形態＞
第３の実施形態では、処理対象のキュー４１でバッファ溢れが発生した場合を含む例を説明する。
【０１０４】
図１５は、ストロークの検出方法の変形例を説明する図である。例えば、図１５のＥに示す期間の最初で、キュー長がキューの最大値に達したとする。この場合、キュー長がキューの最大値に達した段階でパケットのエンキューが行われなくなるが、パケットのデキューは行われる。このため、キュー長は減少する。しかし、キュー長の減少とほぼ同時に、キュー４１の空き容量に新たなパケットがエンキューされるので、キュー長はすぐにキュー最大長に達してしまう。従って、図１５のＥの期間に示すように、キュー長は小刻みにキュー長最大値とキュー長最大値よりもわずかに小さな値を繰り返す可能性がある。
【０１０５】
このように、キュー長がキュー長最大値に達した場合、最新のキュー長の観測値とキュー長の最大値の差が閾値を超えるまでストロークの終点に達しないと考えると、矢印Ｄのように、ストロークの始点と終点が検出されてしまう。しかし、矢印Ｄに示す情報では、キュー長の変動が実際よりも緩やかになってしまう。このような現象は、第２の実施形態で説明したように、極大値と最新の移動平均の差が閾値を超えるまでストロークの終点に達しないと設定してストロークを検出した場合にも起こってしまう。
【０１０６】
そこで、第３の実施形態では、特定部５２は、予め、ストロークの検出対象となっているキュー４１が格納することができるキュー長の最大値を記憶しているものとする。キュー長がキュー長の最大値を超えると、キュー４１に格納されないパケットが廃棄されることになる。そこで、特定部５２は、ストロークの終点を検出する前に、計測部５１での計測値がキューの最大長に達した場合、キュー長が最大値に達した時点をストロークの終点とする。
【０１０７】
すると、図１５に示すケースでは、矢印Ｄに示すストロークの代わりに、矢印Ｃに示すストロークが特定される。なお、第３の実施形態においても、処理対象のキューに含まれているパケットの量がキュー長最大値に達しない場合は、第１および第２の実施形態のいずれによってストロークの検出が行われても良い。このため、図１５に示すようにキュー長が変動する場合、図１５の矢印Ａ〜Ｃに示す３つのストロークが検出される。
【０１０８】
このように、第３の実施形態では、キュー溢れが発生しても、キュー長の変動を的確に表わしたストロークの情報を取得することができる。
【０１０９】
＜第４の実施形態＞
第４の実施形態として、通信装置２０から管理装置１０に対して、所定期間中に得られたストロークのうちで最長のストロークのみを通知する場合の変形例を説明する。第４の実施形態にかかる通信装置２０は、統計処理部４４を備えているものとする。統計処理部４４は、ストローク統計情報７２に含まれている各々のストロークについてストローク長を計算すると共に、検出された最長のストロークを抽出し、抽出した情報を最大ストローク長情報７３として保持できる。また、統計処理部４４は、最大ストローク長情報７３を選択部５３に通知しても良い。
【０１１０】
図１６は、ストローク長の最大値の取得方法の例を説明する図である。図１６に示すストローク統計情報７２のうち、２０１６年１０月２５日の０１：０５：１７．２９１の時点では、Ｎｏ．１に示すストロークが検出されている。Ｎｏ．１のストロークは、２０１６年１０月２５日の０１：０５：１７．２８７から２０１６年１０月２５日の０１：０５：１７．２９１にかけて発生し、キュー長は５０パケットから２２７パケットにまで変化している。統計処理部４４は、Ｎｏ．１のストロークのストローク長として、ストロークの終点でのキュー長からストロークの始点でのキュー長を差し引いた値を求める。Ｎｏ．１のストロークのみが検出されている時点では、統計処理部４４は、Ｎｏ．１のストロークが最長のストロークであると判定する。そこで、統計処理部４４は、Ｎｏ．１のストロークの終点時刻とストローク長を最大ストローク長情報７３＿１として保持する。
【０１１１】
次に、２０１６年１０月２５日の０１：０５：１７．２９４から２０１６年１０月２５日の０１：０５：１７．２９８にかけてＮｏ．２に示すストロークが発生したとする。Ｎｏ．２のストロークでは、キュー長は９２パケットから４５９パケットにまで変化しているので、ストローク長は３６７パケットである。統計処理部４４は、新たに得られたストロークの長さを、最大ストローク長情報７３＿１に記録されているストローク長と比較することにより、いずれのストロークが長いかを判定する。図１６の例では、Ｎｏ．２のストロークの長さの方が最大ストローク長情報７３＿１中のストローク長よりも長いので、統計処理部４４は、Ｎｏ．２のストロークの情報で最大ストローク長情報７３を更新する。その結果、最大ストローク長情報７３＿１は最大ストローク長情報７３＿２に更新される。
【０１１２】
その後、２０１６年１０月２５日の０１：０５：２０．７８０から２０１６年１０月２５日の０１：０５：２０．７８６にかけてＮｏ．３に示すストロークが発生したとする。Ｎｏ．３のストロークでは、キュー長は０パケットから３２０パケットにまで変化しているので、ストローク長は３２０パケットである。統計処理部４４は、新たに得られたストロークの長さを、最大ストローク長情報７３＿２に記録されているストローク長と比較することにより、いずれのストロークが長いかを判定する。図１６の例では、最大ストローク長情報７３＿２に記録されているストローク長の方がＮｏ．３のストロークの長さよりも長いので、統計処理部４４は、最大ストローク長情報７３＿２を更新しない。
【０１１３】
選択部５３は、管理装置１０に対してストロークの情報を通知するタイミングになると、統計処理部４４から最大ストローク長情報７３に含まれている情報を取得する。選択部５３は、最大ストローク長情報７３中の情報を含むパケットを生成し、送信部２６などを介して管理装置１０に通知する。
【０１１４】
なお、通信装置２０は、管理装置１０からの要求に応じて、ストロークの情報を管理装置１０に通知しても良い。この場合、選択部５３は、受信部２７を介して管理装置１０からの要求を取得する。すると、選択部５３は、管理装置１０からの要求を取得したタイミングにおいて、統計処理部４４が保持している最大ストローク長情報７３の情報を管理装置１０に通知する。
【０１１５】
ここで、通信装置２０は、管理装置１０に最大ストローク長情報７３中の情報を通知するたびに、最大ストローク長情報７３の情報を初期化することにより、所定の周期中で観測された最長のストロークの情報を管理装置１０に通知するように設計されても良い。
【０１１６】
図１７は、最大ストローク長情報７３中の情報を管理装置１０に通知後に初期化が行われる場合での、ストローク長の最大値の変更処理の例を説明する図である。図１７の例では、管理装置１０から通信装置２０に統計情報を要求する要求パケットが送信され、通信装置２０は、要求パケットに応答して最大ストローク長情報７３中の情報を管理装置１０に通知するものとする。
【０１１７】
例えば、時刻Ｔ１を終点時刻とする１７７パケットのストロークが特定部５２で検出されたとする。すると、統計処理部４４は、最大ストローク長情報７３＿１１に示すように、終点時刻＝Ｔ１、ストローク長＝１７７パケットという情報を保持する。
【０１１８】
その後、管理装置１０からの要求パケットを通信装置２０が受信する前に、特定部５２は、時刻Ｔ２を終点時刻とする３６７パケットのストロークを特定したとする。統計処理部４４は、特定部５２によって特定された最新のストロークの長さのほうが最大ストローク長情報７３＿１１中のストローク長よりも長いので、最新のストロークの情報で最大ストローク長情報７３を更新する。この結果、最大ストローク長情報７３＿１１は、最大ストローク長情報７３＿１２に更新される。
【０１１９】
その後、管理装置１０から統計情報を要求する要求パケットが通信装置２０に送られたとする（ステップＳ６１）。通信装置２０が保持する受信部２７は、要求パケットを受信すると、要求パケットを選択部５３に出力する。選択部５３は、統計処理部４４から最大ストローク長情報７３＿１２中の情報を取得する。選択部５３は、最大ストローク長情報７３＿１２中の情報を通知する制御パケットＰ１を生成し、送信部２６を介して管理装置１０に送信する（ステップＳ６２）。一方、統計処理部４４は、制御パケットＰ１に含められた情報を最大ストローク長情報７３＿１２から削除する。このため、最大ストローク長情報７３は、最大ストローク長情報７３＿１３に示すように初期化された状態になる。
【０１２０】
次に、特定部５２は、時刻Ｔ３を終点時刻とする３２０パケットのストロークを特定したとする。統計処理部４４は、最大ストローク長情報７３＿１３中のストローク長が０であるため、特定部５２によって特定された最新のストロークの長さの方が最大ストローク長情報７３＿１３中のストローク長よりも長いと判定する。そこで、統計処理部４４は、最大ストローク長情報７３＿１３は、最大ストローク長情報７３＿１４に更新する。
【０１２１】
一方、管理装置１０では、制御パケットＰ１を受信すると、制御パケットＰ１によって通知されたストロークの情報を保持する。その後、管理装置１０から統計情報を要求する要求パケットが通信装置２０に送られたとする（ステップＳ６３）。
【０１２２】
通信装置２０の選択部５３は、受信部２７を介して、要求パケットを取得する。選択部５３は、統計処理部４４から最大ストローク長情報７３＿１４中の情報を取得する。選択部５３は、最大ストローク長情報７３＿１４中の情報を通知する制御パケットＰ２を生成し、送信部２６を介して管理装置１０に送信する（ステップＳ６４）。一方、統計処理部４４は、制御パケットＰ２に含められた情報を最大ストローク長情報７３＿１４から削除する。このため、最大ストローク長情報７３は、最大ストローク長情報７３＿１５に示すように初期化された状態になる。
【０１２３】
一方、管理装置１０では、制御パケットＰ２を受信すると、制御パケットＰ２によって通知されたストロークの情報を保持する。このため、管理装置１０は、図１７に示すように、制御パケットＰ１とＰ２の両方から取得した情報を記憶できる。
【０１２４】
図１６、図１７に示す最大ストローク長情報７３は、一例であり、最大ストローク長情報７３に含まれる情報要素は、実装に応じて変更されうる。例えば、最大ストローク長情報７３は、所定期間中に観測された中で最長のストロークの終点時刻とストローク長の他に、所定期間中に観測された中で最長のストロークの始点時刻を含んでいても良い。
【０１２５】
第４の実施形態のように、所定期間中の最大のストローク長を管理装置１０に通知する場合、管理装置１０に通知されるデータ量は全てのストロークが通知される場合よりも少ない。このため、通信装置２０と管理装置１０の間の通信量の削減や管理装置１０での処理負荷の軽減が求められる場合に、第４の実施形態を適用できる。
【０１２６】
＜その他＞
なお、実施形態は上記に限られるものではなく、様々に変形可能である。以下にその例をいくつか述べる。
【０１２７】
以上の説明では、キュー長の変化がエンキューやデキューで発生する場合を例として説明したが、双方向のポインタを使用したキューのように、キューの途中に含まれているパケットの取出しが可能であっても良い。さらに、通信装置２０が備える各キュー４１、４２、２８として、キュー長をトラフィックに応じて変動させることが可能なデータ構造が使用されうる。
【０１２８】
図１８は、キューと管理情報の例を説明する図である。図１８に示す例では、キュー管理情報として、ｎｅｘｔフィールド、ｐｒｅｖフィールド、ｑｌｅｎフィールド、ｍａｘｑｌｅｎフィールド、ｓｔａｔｅフィールド、ｍｉｎｍａｘフィールド、ｍｉｎｍａｘ＿ｔｓフィールドを含む。ここで、キュー管理情報中のｎｅｘｔフィールドは、キューの先頭のパケットバッファを指定する情報であり、キュー管理情報中のｐｒｅｖフィールドは、キューの末尾のパケットバッファを指定する情報である。ｑｌｅｎフィールドは、現在のキュー長を保持する。ｍａｘｑｌｅｎフィールドは、キュー長の最大値を保持する。
【０１２９】
キューとして使用されるパケットバッファは、ｎｅｘｔフィールドとｐｒｅｖフィールドを保持し、パケットデータを格納する。図１８の例では、複数のパケットバッファが１つのキューとして使用されており、各パケットバッファ中のｎｅｘｔフィールドは、そのパケットバッファに続く領域として使用されるパケットバッファを識別するアドレス等を格納している。一方、各パケットバッファ中のｐｒｅｖフィールドは、そのパケットバッファの１つ前のパケットバッファの識別に使用するアドレス等を格納している。
【０１３０】
図１８のようにソフトウェアで管理される形式のキューでは、パケットバッファがあればキュー長を調整することができる。ただし、キューの実際の長さは、キュー管理情報中のｍａｘｑｌｅｎフィールドの値以下となるように調整される。
【０１３１】
このような形式のキューが用いられる場合、管理装置１０は、通信装置２０に対して、ｍａｘｑｌｅｎフィールドの値の変更を要求することにより、ストロークの発生を防ぐために、キュー長を変更することができる。
【０１３２】
以上の説明では、管理装置１０やオペレータが運用する端末等から送信された制御パケットを用いて通信装置２０がキュー長等を変更する場合を例として説明したが、キュー長の管理の処理は、通信装置２０で行われても良い。
【０１３３】
第４の実施形態は、第１〜第３の実施形態のいずれとも組み合わせることができる。さらに、通信装置２０は、第１の実施形態による処理と第２の実施形態による処理の両方が可能になるように設計されても良い。
【０１３４】
第４の実施形態を変形して、通信装置２０が管理装置１０に通知するストロークを、所定期間中に得られたストロークのうちで所定のストローク長以上のものに限定しても良い。このときに通知対象とするかの判定に使用するストローク長は、実装に応じて任意に設定され得る。
【０１３５】
さらに、統計処理部４４が最大ストローク長情報７３に記録されている情報を初期化するタイミングは、実装に応じて変更され得る。例えば、統計処理部４４は、管理装置１０宛のパケットの送信や管理装置１０宛のパケットの生成を契機として、最大ストローク長情報７３を初期化することができる。
【０１３６】
以上の実施形態にかかる通信方法は、ＮＦＶ（Network Functions Virtualization）などを適用した仮想化環境に適用されても良い。また、仮想化が適用されていない環境に以上の実施形態にかかる通信方法が適用されても良い。
【０１３７】
上述の第１〜第４の実施形態を含む実施形態に関し、さらに以下の付記を開示する。
（付記１）
メモリの所定領域に書き込まれたパケット量を示すキュー長を計測する計測部と、
所定期間での第１の閾値以上の前記キュー長の増加が開始する第１の時刻から、前記所定期間での第２の閾値以上の前記キュー長の減少が開始する第２の時刻までの期間を、前記キュー長が増加傾向にある期間として特定する特定部と、
前記第１の時刻、前記第１の時刻に得られたキュー長、前記第２の時刻、および、前記第２の時刻に得られたキュー長を、前記キュー長を管理する管理装置への通知対象の情報に選択する選択部と、
前記通知対象の情報を送信する送信部
を備えることを特徴とする通信装置。
（付記２）
前記特定部は、
前記キュー長が計測された計測時刻の各々に対応付けて、前記キュー長の移動平均値を求め、
処理対象の計測時刻に計測されたキュー長の計測値が当該計測時刻に対して求められた移動平均値より前記第１の閾値以上大きくなると、当該計測時刻までに計算された移動平均値の極小値に対応付けられ、かつ、当該計測時刻に最も近い時刻を、前記第１の時刻に決定し、
処理対象の計測時刻に計測されたキュー長の計測値が当該計測時刻に対して求められた移動平均値より前記第２の閾値以上小さくなると、当該計測時刻までに計算された移動平均値の極大値に対応付けられ、かつ、当該計測時刻に最も近い時刻を、前記第２の時刻に決定する
ことを特徴とする付記１に記載の通信装置。
（付記３）
前記特定部は、前記キュー長が増加傾向にあると判定してから、前記所定期間での第２の閾値以上の前記キュー長の減少が開始する前に、前記キュー長が前記キューに格納可能なパケットの最大量に達した場合、前記キュー長が前記キューに格納可能なパケットの最大量に達した時刻を、前記キュー長が増加傾向にある期間の終了時刻とする
ことを特徴とする付記１または２に記載の通信装置。
（付記４）
前記キュー長が増加傾向にある期間として特定された期間の各々について、前記第２の時刻に得られたキュー長と前記第１の時刻に得られたキュー長の差分値を計算するとともに、前記差分値が相対的に大きい期間を求める統計処理部をさらに備え、
前記送信部は、前記差分値が相対的に大きい期間についての通知対象として選択された情報を前記管理装置に送信する
ことを特徴とする付記１〜３のいずれか１項に記載の通信装置。
（付記５）
メモリの所定領域に書き込まれたパケット量を示すキュー長を計測し、
所定期間での第１の閾値以上の前記キュー長の増加が開始する第１の時刻から、前記所定期間での第２の閾値以上の前記キュー長の減少が開始する第２の時刻までの期間を、前記キュー長が増加傾向にある期間として特定し、
前記第１の時刻、前記第１の時刻に得られたキュー長、前記第２の時刻、および、前記第２の時刻に得られたキュー長を、前記キュー長を管理する管理装置への通知対象の情報に選択し、
前記通知対象の情報を送信する
処理を通信装置が行うことを特徴とする通信方法。
（付記６）
前記通信装置は、
前記キュー長が計測された計測時刻の各々に対応付けて、前記キュー長の移動平均値を求め、
処理対象の計測時刻に計測されたキュー長の計測値が当該計測時刻に対して求められた移動平均値より前記第１の閾値以上大きくなると、当該計測時刻までに計算された移動平均値の極小値に対応付けられ、かつ、当該計測時刻に最も近い時刻を、前記第１の時刻に決定し、
処理対象の計測時刻に計測されたキュー長の計測値が当該計測時刻に対して求められた移動平均値より前記第２の閾値以上小さくなると、当該計測時刻までに計算された移動平均値の極大値に対応付けられ、かつ、当該計測時刻に最も近い時刻を、前記第２の時刻に決定する
ことを特徴とする付記５に記載の通信方法。
（付記７）
前記通信装置は、前記キュー長が増加傾向にあると判定してから、前記所定期間での第２の閾値以上の前記キュー長の減少が開始する前に、前記キュー長が前記キューに格納可能なパケットの最大量に達した場合、前記キュー長が前記キューに格納可能なパケットの最大量に達した時刻を、前記キュー長が増加傾向にある期間の終了時刻とする
ことを特徴とする付記５または６に記載の通信方法。
（付記８）
前記通信装置は、
前記キュー長が増加傾向にある期間として特定された期間の各々について、前記第２の時刻に得られたキュー長と前記第１の時刻に得られたキュー長の差分値を計算し、
前記差分値が相対的に大きい期間を求め、
前記差分値が相対的に大きい期間についての通知対象として選択された情報を前記管理装置に送信する
ことを特徴とする付記５〜７のいずれか１項に記載の通信方法。
【符号の説明】
【０１３８】
２  クライアント
４  ＬＡＮ
６  インターネット
８  データセンタネットワーク
１０  管理装置
１２  管理ネットワーク
２０  通信装置
２１  ＮＩＣ
２２、６２  送信バッファ
２３、６３  受信バッファ
２５  ドライバ
２６、６５  送信部
２７、６６  受信部
２８、４１、４２  キュー
３０  仮想スイッチ部
３１  ブリッジ処理部
３２  ＩＰ処理部
３３  ハイパーバイザ
３５  ホストＯＳ処理部
４０  仮想リンク部
４３  転送処理部
４４  統計処理部
５０  ストローク検出部
５１  計測部
５２  特定部
５３  選択部
６０  仮想マシン
６１  仮想ＮＩＣ
６４  ＯＳ処理部
６７  アプリケーション処理部
７１  キュー管理情報
７２  ストローク統計情報
７３  最大ストローク長情報
１０１  プロセッサ
１０２  メモリ
１０３  バスコントローラ
１０４  ストレージ装置
１０５  ストレージＩ／Ｏ
１０６  ディスプレイＩ／Ｏ
１０７  Ｉ／Ｏ
１０８  ネットワーク接続装置
１０９  タイマ
１１０  入力装置
１１１  光学ディスクドライブ
１１２  可搬記憶媒体
【図１】
2018139368.tif 000003
【図２】
2018139368.tif 000004
【図３】
2018139368.tif 000005
【図４】
2018139368.tif 000006
【図５】
2018139368.tif 000007
【図６】
2018139368.tif 000008
【図７】
2018139368.tif 000009
【図８】
2018139368.tif 000010
【図９Ａ】
2018139368.tif 000011
【図９Ｂ】
2018139368.tif 000012
【図１０】
2018139368.tif 000013
【図１１】
2018139368.tif 000014
【図１２】
2018139368.tif 000015
【図１３Ａ】
2018139368.tif 000016
【図１３Ｂ】
2018139368.tif 000017
【図１４】
2018139368.tif 000018
【図１５】
2018139368.tif 000019
【図１６】
2018139368.tif 000020
【図１７】
2018139368.tif 000021
【図１８】
2018139368.tif 000022