(57)【要約】【課題】輻輳の解消に用いる情報を早期かつ効率的に取得する。【解決手段】制御装置は、受信部、特定部、送信部を備える。受信部は、ネットワーク中の複数の転送装置の各々から所定の周期で処理負荷の大きさを表わす負荷情報を受信し、複数の転送装置の１つ以上を介した通信を行う複数の通信装置の各々から送信中のフローの情報を含む報告パケットを受信する。特定部は、輻輳の予兆の検出に用いる検出閾値よりも処理負荷の大きい転送装置である対象装置を介して転送されるフローを、輻輳が発生した際に経路を変更するフローの候補である候補フローとして特定する。送信部は、候補フローの情報を含む第１の報告パケットの送信周期の短縮を要求するパケットと、対象装置を経由せずにネットワーク中で転送されるフローの情報を報告する第２の報告パケットの送信周期の延長を要求するパケットとを送信する。【選択図】図１
2015188186.tif 000002
【特許請求の範囲】
【請求項１】
ネットワーク中の複数の転送装置の各々から所定の周期で処理負荷の大きさを表わす負荷情報を受信するとともに、前記複数の転送装置のうちの１つ以上を介した通信を行う複数の通信装置の各々から、該通信装置が送信するフローの情報を報告する報告パケットを受信する受信部と、
輻輳の予兆の検出に用いる検出閾値よりも処理負荷の大きい転送装置である対象装置を介して転送されるフローを、前記輻輳が発生した際に経路を変更するフローの候補である候補フローとして、前記報告パケットを用いて特定する特定部と、
前記候補フローの情報を含む第１の報告パケットの送信周期の短縮を要求するパケットと、前記対象装置を経由せずに前記ネットワーク中で転送されるフローの情報を報告する第２の報告パケットの送信周期の延長を要求するパケットとを送信する送信部
を備えることを特徴とする制御装置。
【請求項２】
前記第１および第２の報告パケットから前記複数の通信装置の間で送受信されるフローの転送レートを取得して、前記複数の転送装置の間を結ぶリンクの各々でのリンク使用率を計算する計算部と、
前記対象装置に接続されているリンクの使用率が、前記対象装置での輻輳の発生が予測されるときの使用率である予測値まで上昇すると、前記候補フローから転送経路を変更する対象となる対象フローを選択する選択部と、
前記対象フローに対する転送経路の変更を指示する指示パケットを生成する生成部
を備え、
前記送信部は、前記対象装置と、前記対象装置に代わって前記対象フローの転送を開始する転送装置に、前記指示パケットを送信する
ことを特徴とする請求項１に記載の制御装置。
【請求項３】
前記対象装置の処理負荷と前記検出閾値との差が大きいほど前記第１の報告パケットの送信周期が短くなるように、前記第１の報告パケットの送信周期を決定すると共に、前記制御装置が所定の時間中に受信するパケット数が変動しないように、前記第２の報告パケットの送信周期を決定する決定部
をさらに備えることを特徴とする請求項１または２に記載の制御装置。
【請求項４】
前記第１の報告パケットは、前記候補フローの送信元、前記候補フローの宛先、および、前記候補フローに対して決定されたサンプルレートで前記候補フロー中のパケットを採取することにより、前記第１の報告パケットの送信周期で得られるデータ量を含み、
前記決定部は、前記第１の報告パケットの送信周期を第１の周期から前記第１の周期よりも短い第２の周期に変更する場合、前記第１の周期で採取されるパケット数と、前記第２の周期で採取されるパケット数が同数になるように、前記第２の周期で使用するサンプルレートを決定する
ことを特徴とする請求項３に記載の制御装置。
【請求項５】
前記計算部は、前記第２の報告パケットで情報が通知されるフローを転送しており、かつ、前記候補フローを転送していない転送装置について、前記検出閾値を、前記第２の報告パケットの送信周期の延長量が大きいほど小さくなるように設定された値で置き換える
ことを特徴とする請求項２〜４のいずれか１項に記載の制御装置。
【請求項６】
ネットワーク中の経路を制御する制御装置に、
前記ネットワーク中の複数の転送装置の各々から所定の周期で処理負荷の大きさを表わす負荷情報を受信し、
前記複数の転送装置のうちの１つ以上を介した通信を行う複数の通信装置の各々から、該通信装置が送信するフローの情報を報告する報告パケットを受信し、
前記処理負荷の大きさが前記ネットワークでの輻輳の予兆の検出に用いる検出閾値を超えた転送装置である対象装置を介して転送されるフローを、前記輻輳が発生した際に経路を変更するフローの候補である候補フローとして、前記報告パケットを用いて特定し、
前記候補フローの情報を含む第１の報告パケットの送信周期の短縮と、前記対象装置を経由せずに前記ネットワーク中で転送されるフローの情報を報告する第２の報告パケットの送信周期の延長を前記複数の通信装置に要求する
処理を行わせることを特徴とする通信方法。
【請求項７】
前記第１および第２の報告パケットから前記複数の通信装置の間で送受信されるフローの転送レートを取得し、
前記複数の転送装置の間を結ぶリンクの各々でのリンク使用率を計算し、
前記対象装置に接続されているリンクの使用率が、前記対象装置での輻輳の発生が予測されるときの使用率である予測値まで上昇すると、前記候補フローから転送経路を変更する対象となる対象フローを選択し、
前記対象フローに対する転送経路の変更を指示する指示パケットを生成し
前記対象装置と、前記対象装置に代わって前記対象フローの転送を開始する転送装置に、前記指示パケットを送信する
処理を前記制御装置に行わせることを特徴とする請求項６に記載の通信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の装置を含むネットワーク中での通信方法に関する。
【背景技術】
【０００２】
データセンタにおいて、複数のサーバと複数のスイッチを用いてネットワークが形成されることがある。複数のサーバの各々には、１つ以上の仮想マシン（Virtual Machine、ＶＭ）が動作していても良い。複数の仮想マシンの間での通信は、スイッチを用いて中継される。複数のサーバには管理サーバも含まれる。管理サーバは、ネットワーク全体のトポロジー情報を保持し、ネットワーク中での通信経路を管理する。各スイッチは、予め決められた周期で管理サーバにスイッチ自身の状態を示す情報を通知する。また、各サーバは、そのサーバで動作している仮想マシンが送信元となっているフローに関する情報（フロー情報）を、管理サーバに通知する。管理サーバは、スイッチから得られた情報を用いて、ネットワーク中での輻輳の発生を検出する。その後、サーバから取得したフロー情報を用いて、管理サーバは、輻輳が発生したスイッチを経由しているフローの転送経路を変更するための処理を行うことにより、輻輳を解消する。
【０００３】
関連する技術として、システム中で発生した障害の履歴を解析して所定期間の経過後に電子機器で発生する可能性のある障害を予測する障害管理装置と、機器管理装置を含むシステムが提案されている。機器管理装置は、障害の発生が予測された電子機器からの情報取得の間隔を短くする（例えば、特許文献１）。複写機から異常状態の通知を受けると、異常状態にある複写機に対し、所定の時刻までは、初期の通信間隔よりも短い通信間隔で定期的な稼動情報通知の送信を要求するホストマシンも提案されている。このホストマシンは、異常状態にない複写機に対しては所定の時刻までは初期の通信間隔よりも長い間隔で稼動情報を通知することを要求する（例えば、特許文献２）。自ノードのMedia Access Control（ＭＡＣ）アドレスを登録したループ検出パケットを送信し、自ノードのＭＡＣアドレスを含むループ検出パケットを受信すると管理装置に通知するスイッチも知られている（例えば、特許文献３）。一定時間に規定値以上のパケットが同一ホストに対して送信されていることを検出すると、その通信を攻撃フローと判断する分析装置も知られている（例えば、特許文献４）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１３−６１８４０号公報
【特許文献２】特開２００５−２４２５６４号公報
【特許文献３】特開２０１１−１６６４６６号公報
【特許文献４】特開２００６−１６４０３８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ネットワーク中の各スイッチは予め決められた周期でスイッチの状態を管理サーバに通知するので、ネットワーク中で輻輳が発生しても、輻輳の発生後にスイッチから情報が送られてくるまで、管理サーバは輻輳の発生を検知できない。さらに、仮想マシンが動作している各サーバから管理サーバへのフロー情報の通知も、予め設定された所定の周期ごとに行われる。管理サーバは、輻輳の発生後のフロー情報を用いて輻輳の回避のための処理を行うため、輻輳が発生しても、各サーバから新たにフロー情報が送られてくるまで、経路の変更などの輻輳を回避するための処理を行わずに待機する。従って、輻輳の回避のための処理は、輻輳の発生の検知からさらに遅れて開始することになってしまう。管理サーバがスイッチやサーバから情報を取得する周期を短くすれば、輻輳の発生から輻輳の検知までの時間を短縮できるが、管理サーバが処理する情報量が増えすぎて、管理サーバへの負荷が高くなる上に効率が悪い。
【０００６】
関連する技術として述べたいずれの技術を適用しても、管理サーバが輻輳を解消するための情報を早期に取得することは難しい。例えば、異常状態にある複写機からの通知の周期を短くし、他の複写機からの通知の周期を長くする技術を適用しても、輻輳の原因となるフローを送信しているサーバで問題が発生しなければ、サーバからのフロー情報の送信周期を短縮できない。
【０００７】
本発明は、１つの側面として、輻輳の解消に使用する情報を早期かつ効率的に取得することを目的とする。
【課題を解決するための手段】
【０００８】
ある実施形態にかかる制御装置は、受信部、特定部、送信部を備える。受信部は、ネットワーク中の複数の転送装置の各々から所定の周期で処理負荷の大きさを表わす負荷情報を受信する。さらに、受信部は、前記複数の転送装置のうちの１つ以上を介した通信を行う複数の通信装置の各々から、該通信装置が送信するフローの情報を報告する報告パケットを受信する。特定部は、輻輳の予兆の検出に用いる検出閾値よりも処理負荷の大きい転送装置である対象装置を介して転送されるフローを、前記輻輳が発生した際に経路を変更するフローの候補である候補フローとして、前記報告パケットを用いて特定する。送信部は、前記候補フローの情報を含む第１の報告パケットの送信周期の短縮を要求するパケットと、前記対象装置を経由せずに前記ネットワーク中で転送されるフローの情報を報告する第２の報告パケットの送信周期の延長を要求するパケットとを送信する。
【発明の効果】
【０００９】
１つの側面として、輻輳の解消に使用する情報を早期かつ効率的に取得できる。
【図面の簡単な説明】
【００１０】
【図１】実施形態にかかる方法の例を説明する図である。
【図２】転送装置の構成の例を示す図である。
【図３】フォワーディングテーブルの例を示す図である。
【図４】通信装置の構成の例を示す図である。
【図５】制御装置の構成の例を示す図である。
【図６】転送装置のハードウェア構成の例を示す図である。
【図７】通信装置および制御装置のハードウェア構成の例を示す図である。
【図８】ネットワークの接続状態の例を示す図である。
【図９】トポロジー情報の例を示す図である。
【図１０】輻輳の予兆が検出される前の転送経路の例を示す図である。
【図１１】各通信装置でのタイマ値と制御装置が保持するタイマ値の例を示す図である。
【図１２】サンプルとするパケットの選択方法の例を示す図である。
【図１３】各通信装置で得られたフロー情報と制御装置が保持するフロー情報の例を示す図である。
【図１４】フロー分析データの例を示す図である。
【図１５】輻輳の予兆の検出例を示す図である。
【図１６】タイマ値テーブルの変更例を示す図である。
【図１７】フロー情報の送信のタイミングの変更に使用されるパケットの例とフロー情報の送信タイミングの変更例を示す図である。
【図１８】タイマ値テーブルの変更例を示す図である。
【図１９】リンク利用率テーブルの例を示す図である。
【図２０】フローごとの使用率の計算例を示す図である。
【図２１】フロー分析データの例を示す図である。
【図２２】フォワーディング情報テーブルの変更例を示す図である。
【図２３】指示パケットの例を示す図である。
【図２４】経路の変更例を示す図である。
【図２５】転送装置からパケットを受信したときの制御装置の処理の例を説明するフローチャートである。
【図２６】通信装置からパケットを受信したときの制御装置の処理の例を説明するフローチャートである。
【図２７】第２の実施形態での報告パケットの送信周期の決定方法の例を説明する図である。
【図２８】第３の実施形態での報告パケットの送信周期の決定方法の例を説明する図である。
【図２９】第４の実施形態での制御装置の処理の例を説明するフローチャートである。
【発明を実施するための形態】
【００１１】
図１は、実施形態にかかる方法の例を説明する図である。ネットワークＮ１には、制御装置６０、通信装置３０（３０ａ、３０ｂ）、転送装置１０（１０ａ、１０ｂ）が含まれる。制御装置６０は、管理サーバとして動作し、ネットワークＮ１中で送受信されるフローの経路を決定できる。通信装置３０ａでは、ＶＭ１〜ＶＭ３の仮想マシンが動作し、通信装置３０ｂでは、ＶＭ４〜ＶＭ６の仮想マシンが動作するものとする。図１の例では、ＶＭ４からＶＭ３に向けてデータが送信されるフローと、ＶＭ５からＶＭ２に向けてデータが送信されるフローは、転送装置１０ｂを介して転送されるものとする。また、ＶＭ１からＶＭ６に宛てたフローは、転送装置１０ａを介して転送されるものとする。なお、図１は一例であり、ネットワーク中の転送装置１０や通信装置３０の数、各通信装置３０で稼動する仮想マシンの数は、任意に変更され得る。
【００１２】
制御装置６０は、転送装置１０ａと転送装置１０ｂの各々から所定の時間間隔で、転送装置１０にかかる負荷の大きさを表わす負荷情報を取得することにより、輻輳の予兆を検出している。負荷情報として、バッファの使用率などの情報が使用される。ここで、「輻輳の予兆」は、輻輳が発生するおそれが高まる程度に転送レートが上昇しているが輻輳は発生していない状態を示すものとする。制御装置６０は、通信装置３０ａ、通信装置３０ｂから送信中の各フローについての情報を取得する。ここでは、通信装置３０ａは、ＶＭ１から送信されているフローの情報を制御装置６０に送信し、通信装置３０ｂは、ＶＭ４とＶＭ５の各々から送信されているフローの情報を制御装置６０に送信する。フローについての情報は、送信元アドレス、宛先アドレス、データの転送レートまたは転送レートの計算に使用可能なデータなどの組合せである。ネットワークＮ１の例では、ＶＭ４からＶＭ３に宛てて送信されているデータに関するフロー情報を、斜線で塗りつぶされた四角形で示す。一方、ＶＭ５からＶＭ２に宛てて送信されているデータに関するフロー情報を、白抜きの四角形で示す。また、ＶＭ１からＶＭ６に宛てて送信されているデータに関するフロー情報を、角の丸い四角形で示す。説明を簡単にするために、初期状態では、いずれのフローに関する情報も、同じ時間間隔で制御装置６０に送信されているものとする。
【００１３】
制御装置６０は、転送装置１０ｂでのバッファの使用率が閾値Ｔｈ１よりも大きくなると、輻輳の予兆があると判定する。そこで、制御装置６０は、予め保持しているトポロジー情報と通信装置３０ａ、３０ｂから取得した情報を用いて、転送装置１０ｂを経由して転送されるフローを特定する。ネットワークＮ１の例では、制御装置６０は、ＶＭ４からＶＭ３に宛てて送信されているフローと、ＶＭ５からＶＭ２に宛てて送信されているフローが転送装置１０ｂを介して転送されていることを特定する。すると、制御装置６０は、輻輳が起きる可能性がある転送装置１０ｂを経由しているフローを、輻輳が発生した際に経路を変更するフローの候補（候補フロー）とする。さらに、制御装置６０は、候補フローの送信元の仮想マシンが稼動している通信装置３０ｂに対して、特定したフローについての情報の送信間隔を短くすることを要求する。さらに、制御装置６０は、輻輳が起きる可能性がある転送装置１０ｂを経由していないフローについては、フローの情報を報告する間隔を長くする。ネットワークＮ１の例では、制御装置６０は、ＶＭ１から送信されているフローについての情報の報告周期を長くすることを通信装置３０ａに要求する。
【００１４】
制御装置６０からの要求に応じてフローに関する情報の送信周期が変更された場合の例を、ネットワークＮ２に示す。ネットワークＮ２に示す状態では、ＶＭ４から送信されたフローやＶＭ５から送信されたフローについての情報を、通信装置３０ｂが制御装置６０に対して送信する周期は、ネットワークＮ１に示す状態に比べて、短くなっている。制御装置６０は、輻輳の発生を早期に発見するために、フロー情報の送信周期を短くしたフローの転送レートを用いて、転送装置１０ｂに接続されているリンクの使用率の変動を観測する。制御装置６０は、転送装置１０ｂに接続されているリンクの使用率が予め設定した値を超えると輻輳が発生したと判定できるので、短縮後のフロー情報の報告周期内で、観測対象のリンクでの輻輳の発生を検出できる。
【００１５】
一方、通信装置３０ａがＶＭ１から送信されたフローについての情報を制御装置６０に対して送信する周期は、ネットワークＮ２ではネットワークＮ１よりも長くなっている。このように、制御装置６０は、輻輳が発生する可能性の高い経路を使用して転送されていないフローについては、フロー情報の送信周期を長くすることにより、制御装置６０で処理する情報量の増加を抑えることができる。
【００１６】
さらに、制御装置６０は、フロー情報から計算したリンクの使用率を用いて輻輳の発生を検出しているので、輻輳の検出に使用した情報自体を用いて、輻輳の回避のための処理を行うことができる。従って、制御装置６０は、輻輳が発生する可能性の高いリンクを介して転送されるフローの情報を取得する周期を短縮化したことにより、早期に輻輳の発生を発見するだけでなく、輻輳の検出とともに輻輳を解消するための処理を開始できる。このため、制御装置６０は、輻輳の発生を検出してから、比較的短時間で、フローの経路変更を行うことにより、輻輳を解消することができる。
【００１７】
＜装置構成＞
図２は、転送装置１０の構成の例を示す。転送装置１０は、送受信部１１、通信部１２、記憶部１５、制御部２０を備える。記憶部１５は、フォワーディングテーブル１６とManagement Information Base（ＭＩＢ）１７を保持しているものとする。また、記憶部１５には、バッファ１８も含まれている。制御部２０は、スイッチング部２１、更新部２２、通知部２３を備える。
【００１８】
送受信部１１は、通信装置３０やネットワーク中の他の転送装置との間でパケットの送受信を行う。送受信部１１は、受信したパケットをスイッチング部２１に出力する。スイッチング部２１は、入力されたパケットの出力ポートを、フォワーディングテーブル１６を参照することにより選択する。
【００１９】
図３は、フォワーディングテーブル１６の例を示す。フォワーディングテーブル１６は、宛先アドレスに対応付けてパケットの出力ポートの番号を記録している。図３の例では、ＭＡＣ１宛てのパケットとＭＡＣ４宛てのパケットはポートＰｏ３から出力され、ＭＡＣ２宛てのパケットとＭＡＣ３宛てのパケットは、ポートＰｏ２から出力される。
【００２０】
スイッチング部２１は、パケットを、出力ポートの情報と共に送受信部１１に出力する。送受信部１１は、スイッチング部２１から入力されたパケットを、指定されたポートを用いて送信する。バッファ１８は、スイッチング部２１での処理待ちのパケットを格納するために使用される。
【００２１】
通信部１２は、転送装置１０と制御装置６０との間での通信に使用される。通信部１２は、制御装置６０から指示パケットを受信すると、指示パケットを更新部２２に出力する。更新部２２は、指示パケットを用いて、フォワーディングテーブル１６を更新する。ここで、指示パケットには、フォワーディングテーブル１６の書き換えを要求する情報が含まれているものとする。指示パケットのフォーマットの例や指示パケットを用いた処理の例については、後述する。通知部２３は、予め設定された周期で、ＭＩＢ１７に記録されている情報を制御装置６０に通知するための通知パケットを生成する。
【００２２】
図４は、通信装置３０の構成の例を示す図である。通信装置３０は、送信部３１、受信部３２、通信部３３、パケット処理部３４、制御部４０、記憶部５０を備える。制御部４０は、生成部４１と制御パケット処理部４２を備える。記憶部５０は、フロー情報５１とタイマ値テーブル５２を格納する。フロー情報５１には、通信装置３０で稼動している仮想マシンから送信されているフローについて、フローごとに送信元アドレス、宛先アドレス、転送レートの算出に用いるデータなどの情報が記録されている。タイマ値テーブル５２は、通信装置３０が制御装置６０にフロー情報を報告するときの時間間隔などの情報が含まれている。フロー情報５１とタイマ値テーブル５２の例については後述する。
【００２３】
送信部３１および受信部３２は、通信装置３０と制御装置６０の間の通信に使用される。通信部３３は、通信装置３０とネットワーク中の他の通信装置との間の通信に使用される。パケット処理部３４は、任意の数の仮想マシンとして動作し、アプリケーションを用いたパケットの処理を行うものとする。なお、パケット処理部３４が複数の仮想マシンとして動作する場合、パケット処理部３４は、仮想スイッチとしても動作する。
【００２４】
生成部４１は、タイマ値テーブル５２に記録されている周期ごとに、フロー情報５１中の情報を制御装置６０に報告するための報告パケットを生成する。従って、生成部４１は、ＮｅｔＦｌｏｗなどのフロー計測技術でのエクスポータと同様の処理を行うといえる。制御パケット処理部４２は、受信部３２から入力された制御パケットを処理することにより、タイマ値テーブル５２の設定値を変更する。
【００２５】
図５は、制御装置６０の構成の例を示す図である。制御装置６０は、受信部６１、送信部６２、制御部７０、記憶部９０を備える。制御部７０は、検出部７１、特定部７２、計算部７３、フロー制御部８０を含む。フロー制御部８０は、決定部８１、選択部８２、指示パケット生成部８３を有する。記憶部９０は、トポロジー情報９１、フロー情報９２、タイマ値テーブル９３、フロー分析データ９４、リンク利用率テーブル９５、フォワーディング情報テーブル９６を保持する。
【００２６】
トポロジー情報９１は、ネットワーク中の各転送装置１０について、どのポートがどの装置に接続されているかを示す情報である。フロー情報９２は、ネットワーク中で送受信されている各フローの情報であり、特定部７２と計算部７３によって生成、更新される。タイマ値テーブル９３は、ネットワーク中の各通信装置３０で、送信中のフローについての転送レートを報告するための報告パケットを生成する周期を示す。フロー分析データ９４は、各通信装置３０から送信されたフローについての解析結果である。リンク利用率テーブル９５は、ネットワーク中の各転送装置１０から送信された情報についての解析結果を含む。フォワーディング情報テーブル９６は、ネットワーク中で動作している各転送装置１０が使用しているフォワーディングテーブル１６の情報を集約している。このため、制御装置６０は、各転送装置１０で行われているフローの転送経路を、トポロジー情報９１とフォワーディング情報テーブル９６を用いて解析することができる。
【００２７】
受信部６１は、転送装置１０や通信装置３０からパケットを受信する。受信部６１は、転送装置１０から受信したパケットを検出部７１に出力し、通信装置３０から受信したパケットを特定部７２と計算部７３に出力する。
【００２８】
検出部７１は、転送装置１０から送信されてきた情報を用いて、ネットワーク中で輻輳の予兆が発生した箇所を特定する。検出部７１は、閾値Ｔｈ１と閾値Ｔｈ２の２つの閾値を保持するものとする。閾値Ｔｈ１は、輻輳の予兆があるかの判定に使用される値であり、閾値Ｔｈ２は、輻輳の発生の検出に使用される値であるものとする。例えば、転送装置１０ｂでのバッファの使用率が閾値Ｔｈ１を超えると、検出部７１は、転送装置１０ｂを経由する経路で輻輳の予兆があると判定する。閾値Ｔｈ１を超えても転送装置１０ｂのバッファの使用率がさらに増加し、閾値Ｔｈ２に達すると、検出部７１は、転送装置１０ｂにおいて輻輳が発生していると判定する。換言すると、検出部７１は、ＮｅｔＦｌｏｗなどのフロー計測技術でのコレクタと同様の処理を行うといえる。検出部７１は、バッファの使用率が閾値Ｔｈ１を超えた転送装置１０を特定部７２に通知する。
【００２９】
検出部７１は、さらに、経路の変更などの処理が行われたことにより、いずれの転送装置１０でも輻輳の予兆が消失すると、報告パケットの送信周期をデフォルトの状態に戻すことができると判定する。検出部７１は、輻輳の予兆がいずれの転送装置１０でも消失したことを検出したときは、輻輳の予兆の消失を決定部８１に通知する。
【００３０】
特定部７２は、通信装置３０から通知されたフロー情報をフロー情報９２に格納する。さらに、特定部７２は、トポロジー情報９１とフロー情報９２を用いて、各フローについての転送経路を特定する。特定部７２は、特定した経路を、フロー分析データ９４として記録する。特定部７２は、検出部７１からバッファの使用率が閾値Ｔｈ１を超えた転送装置１０を通知されると、通知された転送装置１０を経由するフローを識別する情報を決定部８１に出力する。
【００３１】
計算部７３は、得られた分析結果を用いて、各リンクの利用率を計算する。計算部７３は、計算結果をリンク利用率テーブル９５に記録する。計算部７３は、リンクの利用率が予め決められた所定の値（閾値Ｔｈ３）を超えると、そのリンクでの輻輳を防止するための経路変更を行うことを決定する。計算部７３は、利用率が閾値Ｔｈ３を超えたリンクを特定する情報を選択部８２に出力する。
【００３２】
決定部８１は、特定部７２から通知されたフローについての送信周期を決定する。また、送信周期を変更したフローの送信元の通信装置３０に変更後の送信周期を通知するための通知パケットを生成する。
【００３３】
さらに、決定部８１は、輻輳の予兆の解消が検出部７１から通知されると、報告パケットの生成周期を変更したフローの各々について、報告パケットの生成周期をデフォルト値に戻すことを決定する。なお、決定部８１は、予め、各フローについての報告パケットの生成周期のデフォルト値を記憶しているものとする。
【００３４】
選択部８２は、計算部７３から利用率が閾値Ｔｈ３を上回っていることが通知されたリンクを使用して転送されているフローの各々について、推定される転送レートや、そのフローについてのリンクの使用率などの値を求める。選択部８２は、計算部７３から通知されたリンクの使用率を引き下げるために転送経路を変更するフローを選択する。選択部８２は、選択したフローの情報と、変更後の経路を指示パケット生成部８３に出力する。指示パケット生成部８３は、選択部８２から指定されたフローの経路を変更するために、転送装置１０宛の指示パケットを生成する。指示パケットは、宛先の転送装置１０に、フォワーディングテーブル１６の書き換えを要求するための制御パケットである。
【００３５】
図６は、転送装置１０のハードウェア構成の例を示す図である。転送装置１０は、プロセッサ１０１、スイッチング回路１０２、メモリ１０３、ネットワークインタフェース１０４（１０４ａ〜１０４ｅ）、バス１０５を備える。転送装置１０は、スイッチやルータとして実現され得る。プロセッサ１０１は、Central Processing Unit（ＣＰＵ）を含む任意の処理回路とすることができる。転送装置１０では、プロセッサ１０１は更新部２２および通知部２３として動作し、メモリ１０３は記憶部１５として動作する。また、スイッチング部２１は、スイッチング回路１０２とプロセッサ１０１により実現される。また、データ通信用のネットワークに接続されたネットワークインタフェース１０４（１０４ａ〜１０４ｄ）は、送受信部１１として動作する。一方、制御用のネットワークに接続されたネットワークインタフェース１０４ｅは、通信部１２として動作する。
【００３６】
図７は、通信装置３０および制御装置６０のハードウェア構成の例を示す図である。通信装置３０と制御装置６０のいずれも、プロセッサ１０１、メモリ１０３、ネットワークインタフェース１０４、バス１０５、記憶装置１０６を備える。通信装置３０および制御装置６０は、いずれも、コンピュータとして実現されうる。バス１０５は、プロセッサ１０１、メモリ１０３、ネットワークインタフェース１０４（１０４ａ、１０４ｂ）、記憶装置１０６を、相互にデータの送受信が可能になるように接続する。なお、プロセッサ１０１は、例えば、記憶装置１０６に記憶されたプログラムを実行することができる。メモリ１０３は、プロセッサ１０１の動作により得られたデータや、プロセッサ１０１の処理に用いられるデータも、適宜、記憶する。
【００３７】
通信装置３０において、プロセッサ１０１はパケット処理部３４および制御部４０として動作し、メモリ１０３は記憶部５０として動作する。通信装置３０において、データ通信用のネットワークに接続されたネットワークインタフェース１０４ａは通信部３３として動作する。一方、ネットワークインタフェース１０４ｂは、制御用のネットワークに接続されているので、送信部３１および受信部３２として動作する。
【００３８】
制御装置６０において、プロセッサ１０１は制御部７０として動作し、メモリ１０３は記憶部９０として動作する。制御装置６０において、受信部６１と送信部６２は、制御用のネットワークに接続されたネットワークインタフェース１０４ａと、プロセッサ１０１によって実現される。制御装置６０においては、ネットワークインタフェース１０４ｂは、オプションであり、制御装置６０がユーザデータの送受信を行わない場合は、制御装置６０に含まれていなくても良い。
【００３９】
＜第１の実施形態＞
以下の説明では、処理を行っている通信装置を区別し易くするために、符号の後に動作を行っている通信装置に割り当てられたアルファベットを記載する。例えば、制御パケット処理部４２ａは、通信装置３０ａ中の制御パケット処理部４２のことを示す。
【００４０】
図８は、ネットワークの接続状態の例を示す図である。以下、図８に示すネットワークで行われる通信処理を例として、転送装置１０、通信装置３０、制御装置６０での処理の具体例を説明する。図８の例では、転送装置１０は、スイッチ（ＳＷ１〜ＳＷ４）である。図８の太い実線は、ユーザデータの送受信に使用されるネットワークを示す。図８の例では、通信装置３０ａはスイッチＳＷ２に接続され、通信装置３０ｂはスイッチＳＷ４に接続されているものとする。さらに、スイッチＳＷ１は、スイッチＳＷ２およびスイッチＳＷ４と接続されているが、スイッチＳＷ３とは接続されていないものとする。同様に、スイッチＳＷ３も、スイッチＳＷ２およびスイッチＳＷ４と接続されているが、スイッチＳＷ１とは接続されていない。
【００４１】
図８中の破線は、制御用データの送受信に使用されるネットワークを示す。スイッチＳＷ１〜ＳＷ４の各々と、通信装置３０ａ、通信装置３０ｂは、いずれも、制御装置６０との間で制御データの送受信ができるように接続されている。
【００４２】
通信装置３０ａでは、仮想マシンＶＭ１、仮想マシンＶＭ２、仮想スイッチ３５ａが動作している。また、仮想マシンＶＭ１に、ＭＡＣ３というアドレスが割り当てられており、仮想マシンＶＭ２に、ＭＡＣ２とＭＡＣ６の２つのアドレスが割り当てられているとする。さらに、通信装置３０ｂでは、仮想マシンＶＭ３、仮想マシンＶＭ４、仮想スイッチ３５ｂが動作している。仮想マシンＶＭ３にはＭＡＣ４が割り当てられており、仮想マシンＶＭ４に、ＭＡＣ１とＭＡＣ５の２つのアドレスが割り当てられているとする。また、制御用のデータの送受信に使用されるアドレスは、通信装置３０ａではＭＡＣ１２、通信装置３０ｂではＭＡＣ１１、制御装置６０ではＭＡＣ１０であるものとする。
【００４３】
なお、図８はネットワークの一例に過ぎない。ネットワーク中には、実装に応じて、任意の数の転送装置１０や通信装置３０が含まれるものとする。また、個々の通信装置３０で動作する仮想マシンの数も、実装に応じて任意に変動しうるものとする。
【００４４】
図９は、トポロジー情報９１の例を示す図である。トポロジー情報９１は、図８に示すネットワークが形成されている場合に制御装置６０が保持するトポロジー情報９１である。トポロジー情報９１には、転送装置１０ごとに、装置の識別子、各ポートの接続先の装置の識別子、スイッチ間のリンクの容量が記録される。さらに、トポロジー情報９１には、各通信装置３０で動作している仮想マシンに割り当てられたアドレスも含まれる。
【００４５】
図９の例では、スイッチＳＷ１において、ポートＰｏ１は制御装置６０、ポートＰｏ２がスイッチＳＷ２、ポートＰｏ３がスイッチＳＷ４に接続されている。従って、スイッチＳＷ１のポートＰｏ１が制御用のネットワークとの間の通信に使用されている。同様に、制御用ネットワークとの間の通信に、スイッチＳＷ２ではポートＰｏ３、スイッチＳＷ３ではポートＰｏ１、スイッチＳＷ４ではポートＰｏ３が使用される。スイッチＳＷ２において、ポートＰｏ１はスイッチＳＷ３、ポートＰｏ２はスイッチＳＷ１、ポートＰｏ４は通信装置３０ｂに接続されており、ユーザデータの送受信に使用されている。スイッチＳＷ３において、ポートＰｏ２はスイッチＳＷ２、ポートＰｏ３はスイッチＳＷ４に接続されている。さらに、スイッチＳＷ４においては、ポートＰｏ１はスイッチＳＷ３、ポートＰｏ２はスイッチＳＷ１、ポートＰｏ４は通信装置３０ａに接続されている。
【００４６】
スイッチ間のリンクの容量は、装置の欄に記録されているスイッチとポートの接続先のスイッチとの間で使用可能な転送レートの最大値である。図９の例では、スイッチＳＷ１とスイッチＳＷ２の間のリンクと、スイッチＳＷ１とスイッチＳＷ４の間のリンクでは、１６０Ｍｂｐｓまでの転送レートが使用可能である。また、スイッチＳＷ２とスイッチＳＷ３の間のリンクでは、１００Ｍｂｐｓまで、スイッチＳＷ３とスイッチＳＷ４の間のリンクでは、１２０Ｍｂｐｓまでの転送レートが使用可能であるものとする。
【００４７】
さらに、トポロジー情報９１には、ＭＡＣ１、ＭＡＣ４、ＭＡＣ５、ＭＡＣ１１のいずれも、通信装置３０ｂまたは通信装置３０ｂで動作している仮想マシンに割り当てられているアドレスであることが記録されるものとする。同様に、通信装置３０ａについても、ＭＡＣ２、ＭＡＣ３、ＭＡＣ６、ＭＡＣ１２のいずれも、通信装置３０ａまたは通信装置３０ａで動作している仮想マシンに割り当てられていることが記録されている。
【００４８】
なお、図９を参照しながら説明した接続関係は、物理ポートを使用して生成されたネットワークの接続関係である。従って、経路の変更が行われる場合でも、トポロジー情報９１に記録されている物理ポート間の接続関係やリンクの容量は変動しないものとする。
【００４９】
（１）輻輳の予兆が検出される前から行われている処理
図１０は、輻輳の予兆が検出される前の転送経路の例を示す図である。以下、図１０を参照しながら、輻輳の予兆が検出される前に行われている処理の例を説明する。なお、図１０では、図を見やすくするために、ユーザデータの送受信に使用される回線の接続関係は図示していないが、図１０においても、ユーザデータの送受信用のネットワークは、図８、図９を参照しながら説明したとおりであるものとする。また、仮想スイッチ３５も図を見やすくするために、図１０では省略している。
【００５０】
図１０の例では、仮想マシンＶＭ４が、ＭＡＣ１を送信元アドレスとして、仮想マシンＶＭ２のＭＡＣ２宛てにデータを送信しているとする。また、仮想マシンＶＭ４が、ＭＡＣ５を送信元アドレスとして、仮想マシンＶＭ２のＭＡＣ６宛てにデータを送信しており、仮想マシンＶＭ１が、ＭＡＣ３を送信元アドレスとして、仮想マシンＶＭ３のＭＡＣ４宛てにデータを送信しているとする。輻輳の予兆が検出される前は、ＭＡＣ１からＭＡＣ２宛てに送信されるデータは、太い実線の矢印で示すように、仮想マシンＶＭ４からスイッチＳＷ４、ＳＷ３、ＳＷ２を経由して、仮想マシンＶＭ２に転送されているものとする。ＭＡＣ３からＭＡＣ４宛てに送信されるデータは、太い破線の矢印で示すように、仮想マシンＶＭ１からスイッチＳＷ２、ＳＷ３、ＳＷ４を経由して、仮想マシンＶＭ３に転送されているものとする。さらに、ＭＡＣ５からＭＡＣ６宛てに送信されるデータは、細い一点鎖線の矢印で示すように、仮想マシンＶＭ４からスイッチＳＷ４、ＳＷ１、ＳＷ２を経由して、仮想マシンＶＭ２に転送されているものとする。
【００５１】
さらに、各フローを識別するために、フローごとにフローＩＤが割り当てられているものとする。以下の説明では、ＭＡＣ１が送信元アドレスでＭＡＣ２が宛先アドレスであるフロー（太い実線の矢印）を、フローＩＤ＝１とする。同様に、ＭＡＣ３が送信元アドレスでＭＡＣ４が宛先アドレスであるフロー（太い破線の矢印）のフローＩＤを２とし、ＭＡＣ５が送信元アドレスでＭＡＣ６が宛先アドレスであるフロー（細い一点鎖線の矢印）のフローＩＤを３とする。
【００５２】
図１１は、各通信装置３０が保持するタイマ値テーブル５２と制御装置６０が保持するタイマ値テーブル９３の例を示す図である。以下、通信装置３０ｂは、図１１中のタイマ値テーブル５２ｂを保持しており、通信装置３０ａは、図１１中のタイマ値テーブル５２ａを保持しているものとする。制御装置６０は、ネットワーク中の全ての通信装置３０において設定されているタイマ値をタイマ値テーブル９３に保持しているものとする。
【００５３】
タイマ値テーブル５２には、そのテーブルを保持している通信装置３０で稼動している仮想マシンから送信されている各フローについての送信元アドレス、宛先アドレス、送信タイマ値、サンプルレートが含まれている。例えば、タイマ値テーブル５２ｂのフローＩＤ＝１のエントリでは、送信タイマ値が２秒、サンプルレートが１／２である。送信タイマ値は、報告パケットの送信周期を示す。サンプルレートは、そのフローのパケットのうちで生成部４１が報告パケットを生成するために使用するパケットの割合を示す。
【００５４】
図１２は、サンプルとするパケットの選択方法の例を示す図である。図１２は、フローＩＤ＝１のフローについて、生成部４１ｂが報告パケットの生成のためのサンプルとするパケットを選択するときの様子を示している。図１１のタイマ値テーブル５２ｂに示すように、フローＩＤ＝１のフローについてのサンプルレートは１／２である。このため、生成部４１ｂは、パケット処理部３４ｂで生成されたフローＩＤ＝１のパケットを、２つに１つの割合でサンプルとする。図１２の例では、生成部４１ｂは、パケットＰａ１をサンプルとし、パケットＰａ１の次に送信されるパケットＰａ２をサンプルとしない。同様にパケットＰａ３以降も、生成部４１ｂは、フローＩＤ＝１のパケットから１つおきにサンプルとするパケットを選択する。生成部４１ｂは、サンプルとして選択したパケットの総数と、選択したパケットで送信されるデータ量の積算値を計算して、フローＩＤに対応付けて記録する。このような処理により、図１１に示すタイマ値テーブル５２ｂを記憶している通信装置３０ｂでは、生成部４１ｂは、２秒に１回の周期で、フローＩＤ＝１のフローについての情報を制御装置６０に通知するためのフロー情報を生成する。なお、生成部４１が計算する積算値では、制御装置６０において正確に転送レートを計算することができるようにするために、パケットのヘッダとペイロードの両方の長さを、１つのパケットで送信されるデータの長さとして計算するものとする。
【００５５】
図１１に挙げたタイマ値テーブル５２ａ、５２ｂに送信タイマ値が記録されている他のフローについても同様に処理される。例えば、フローＩＤ＝３のフローについては、送信タイマ値が１０秒に設定されているので、生成部４１ｂは、１０秒に１回の周期で、フローＩＤ＝３のフローについての情報を制御装置６０に通知するためのフロー情報５１を生成する。このとき、フローＩＤ＝３のフローでのサンプルレートは１／１０であるため、生成部４１ｂは、フローＩＤ＝３のフローについて、１０パケットに１つのパケットをサンプリングして、フロー情報５１を生成する。通信装置３０ａにおいても、生成部４１ａは、タイマ値テーブル５２ａ中の送信タイマ値に従って、報告パケットを生成する。このため、生成部４１ａは、フローＩＤ＝２のフローについて転送レート等の情報を報告するためのフロー情報５１を、３０秒に１回の頻度で更新するが、このときに、１００パケットのうちの１つのパケットをサンプルとして、パケット数などを計算する。
【００５６】
図１３は、各通信装置３０でのフロー情報５１と制御装置６０が保持するフロー情報９２の例を示す。フロー情報５１は、生成部４１での処理によって、１回の送信周期において送信されたパケット数と送信されたデータの量を、フローＩＤやフローの送信元アドレスと宛先ドレスの組み合わせに対応付けた情報である。フロー情報５１ｂは、通信装置３０ｂ中の生成部４１ｂがフローＩＤ＝１、３のフローについて生成した情報の例である。一方、フロー情報５１ａは、通信装置３０ａ中の生成部４１ａがフローＩＤ＝２のフローについて生成した情報の例である。
【００５７】
生成部４１は、フロー情報５１中のエントリの情報を更新し、更新したエントリに含まれている情報を、制御装置６０に送信するための送信パケットを生成する。例えば、生成部４１ｂは、２秒に１回、フロー情報５１ｂ中のフローＩＤ＝１のエントリを更新し、更新後のエントリの内容をペイロードとする報告パケットを、制御装置６０宛に生成する。なお、このとき、生成部４１ｂは、制御部４０に割り当てられているアドレス（ＭＡＣ１１）を、報告パケットの送信元のアドレスに設定する。従って、フロー情報５１ｂが図１３に示すように生成された場合、以下の情報要素を含む報告パケットが生成される。
送信元アドレス：ＭＡＣ１１
宛先アドレス  ：ＭＡＣ１０
フローＩＤ    ：１
フローの送信元アドレス：ＭＡＣ１
フローの宛先アドレス  ：ＭＡＣ２
パケットの採取数      ：２３
採取したパケットで送信されたデータ：２３０００バイト
【００５８】
生成部４１ｂは、フローＩＤ＝３のフローについても同様の処理を行う。従って、ＭＡＣ５からＭＡＣ６に宛てたフローＩＤ＝３のパケットを３パケット採取し、４５００バイトのデータをサンプリングしたことを、制御装置６０宛の報告パケットに書き込む。生成部４１ｂは、報告パケットを、送信部３１ｂを介して、制御装置６０に送信する。
【００５９】
また、通信装置３０ａにおいて、生成部４１ａがフローＩＤ＝２のフロー情報を更新すると、生成部４１ａも制御装置６０宛の報告パケットを生成する。フロー情報５１ａを図１３に示すように更新したとき、生成部４１ａは、ＭＡＣ３からＭＡＣ４に宛てたフローＩＤ＝２のフロー中の１２５パケットに１５００００バイトが含まれていることを示す報告パケットを生成する。このとき、生成部４１ａは、制御部４０ａに割り当てられているアドレス（ＭＡＣ１２）を、報告パケットの送信元のアドレスに設定する。生成部４１ａも、報告パケットを、送信部３１ａを介して、制御装置６０に送信する。
【００６０】
次に、報告パケットを受信したときの制御装置６０の処理について説明する。受信部６１は、通信装置３０ｂや通信装置３０ａから受信したパケットを特定部７２と計算部７３に出力する。なお、受信部６１は、予め、各通信装置３０が制御装置６０との間で制御用のネットワークを用いて通信を行うときに使用するアドレスを記憶しており、受信したパケットのアドレスを用いて、出力先を決定するものとする。
【００６１】
特定部７２は、各通信装置３０から受信した報告パケット中のペイロードの情報をフロー情報９２に格納する。図１３のフロー情報５１ｂ中の情報を報告する報告パケットが通信装置３０ｂから送信され、図１３のフロー情報５１ａ中の情報を報告する報告パケットが通信装置３０ａから送信された場合のフロー情報９２を図１３に示す。計算部７３は、フロー情報９２の情報と、タイマ値テーブル９３（図１１）を用いて、各フローでの転送レートを計算する。計算部７３は、次式を用いて、転送レート（ｂｐｓ）を計算する
Ｒ＝（Ｂ×８）×（１／Ｐ）×（１／Ｔ）
ここで、Ｒは転送レート（ｂｐｓ）、Ｂは転送レートの計算対象のフローについての送信周期で積算されたデータのバイト数、Ｐは計算対象のフローについてのサンプルレート、Ｔは計算対象のフローに関する報告パケットの送信周期を示す。なお、計算部７３は、計算対象のフローについてのバイト数をフロー情報９２から読み出し、サンプルレートと送信周期をタイマ値テーブル９３から読み出す。
【００６２】
特定部７２は、トポロジー情報９１とフォワーディング情報テーブル９６を用いて、各フローについての転送経路を求め、各フローが経由するスイッチを特定する。さらに、特定部７２は、フローについての制御情報を通知するときの通知先として、報告パケットの送信元アドレスを取得する。
【００６３】
図１４は、フロー分析データ９４の例を示す。フロー分析データ９４は、各フローについての転送レート、転送経路の情報、制御情報の通知先が記録されている。ここで、フロー分析データ９４中の転送レートは、計算部７３がフロー情報９２とタイマ値テーブル９３を用いて計算した値である。また、各フローの転送経路は、経由するスイッチを経由する順に示した情報であり、特定部７２がトポロジー情報９１とフォワーディング情報テーブル９６を用いて分析した結果である。ここでは、図１４に示す経路の情報は、図１０を参照しながら説明した経路を示す情報であるものとする。
【００６４】
（２）輻輳の予兆の検出に伴う制御装置６０の処理
次に、スイッチでの動作の例と、予兆の検出について説明する。
【００６５】
各スイッチの送受信部１１は、受信パケットをスイッチング部２１に出力する。スイッチング部２１は、フォワーディングテーブル１６を用いて出力ポートを特定し、特定した情報と共に、パケットを送受信部１１に出力する。送受信部１１は、指定されたポートからパケットを送信する。通知部２３は、スイッチング部２１での処理やバッファ１８でのパケットの格納状況に合わせて、ＭＩＢ１７の情報を更新する。さらに、通知部２３は、予め決められた周期で、処理負荷の大きさを表わす情報を制御装置６０に通知するためのパケットを生成する。処理負荷の大きさを表わす情報として、各スイッチのＭＩＢ１７中の情報が使用されても良い。以下、スイッチに蓄積されたデータの量が処理負荷の大きさを表わす値として使用される場合を例として説明する。通知部２３は、生成したパケットを、通信部１２を介して、制御装置６０に送信する。
【００６６】
受信部６１は、各スイッチから処理負荷を示す値を含むパケットを受信すると、受信パケットを、検出部７１に出力する。なお、受信部６１は、各スイッチが制御用ネットワークを用いて通信するときに使用するアドレスを予め記憶しており、受信パケットの送信元アドレスを用いて、受信パケットの出力先を決定する。
【００６７】
図１５は、輻輳の予兆の検出例を示す図である。図１５のグラフＧ１は、閾値とスイッチの状態の関係の例を示す。グラフＧ１の例では、閾値Ｔｈ１は、そのスイッチに接続されているリンクで輻輳が発生する恐れが無視できる程度であると判定できる場合に、スイッチのバッファ１８に蓄積されうるデータ量の最大値である。このため、閾値Ｔｈ１よりもバッファ１８に蓄積されたデータ量が少ないスイッチでは、稼動状態が正常であると判定される。閾値Ｔｈ２は、スイッチに接続されているリンクで輻輳が発生する可能性が高い状況下で、そのスイッチのバッファ１８に蓄積されていることが見込まれるデータ量の最小値である。従って、スイッチのバッファ１８に格納されているデータ量が閾値Ｔｈ２を越えると、そのスイッチやそのスイッチに接続されている１つ以上のリンクで輻輳が発生していると判定される。バッファ１８中のデータ量が閾値Ｔｈ１から閾値Ｔｈ２までの間に入っているスイッチでは、輻輳の予兆が発生していると判定されるものとする。なお、閾値Ｔｈ１と閾値Ｔｈ２の値は、スイッチが備えているバッファ１８の大きさやスイッチの処理性能に応じて、スイッチごとに設定されるものとする。
【００６８】
グラフＧ１に示す閾値とバッファ１８中のデータ量の関係を用いた判定処理は、制御装置６０中の検出部７１において行われる。なお、検出部７１は、各スイッチについて、そのスイッチのバッファ１８中に蓄積されているデータの量と比較するための閾値を保持しているものとする。図１５の例では、テーブルＴ１に示すように、スイッチＳＷ１についての閾値Ｔｈ１は１００Ｍバイト、閾値Ｔｈ２は１５０Ｍバイトである。従って、検出部７１は、スイッチＳＷ１のバッファ１８中に蓄積されたデータ量が１００Ｍバイトになるまでは正常に動作していると判定するが、蓄積されたデータが１００〜１５０Ｍバイトでは、輻輳の予兆があると判定する。他のスイッチについても、同様に閾値Ｔｈ１、閾値Ｔｈ２を用いた判定が行われる。
【００６９】
図１５のテーブルＴ１は、各スイッチについての判定結果の例を示す。図１５のテーブルＴ１は、バッファ１８中に蓄積されたデータ量が、スイッチＳＷ１では５０Ｍバイト、スイッチＳＷ２では４０Ｍバイト、スイッチＳＷ３では１２０Ｍバイト、スイッチＳＷ４では７０Ｍバイトである場合の例を示す。検出部７１は、スイッチＳＷ１に蓄積されたデータ量がスイッチＳＷ１についての閾値Ｔｈ１（１００Ｍバイト）に満たないことから、スイッチＳＷ１が正常に動作していると判定する。検出部７１は、スイッチＳＷ２でのデータの蓄積量がスイッチＳＷ２での閾値Ｔｈ１未満であり、スイッチＳＷ４でのデータの蓄積量もスイッチＳＷ４での閾値Ｔｈ１未満であるため、スイッチＳＷ２とＳＷ４でも正常に転送処理が行われていると判定する。スイッチＳＷ３のバッファ１８に蓄積されたデータ量が１２０Ｍバイトであるのに対し、スイッチＳＷ３についての閾値Ｔｈ１は１００Ｍバイト、閾値Ｔｈ２は１５０Ｍバイトである。このため、検出部７１は、スイッチＳＷ３において、輻輳の予兆を検出したと判定する。検出部７１は、スイッチＳＷ３について輻輳の予兆を検出したことを特定部７２に通知する。
【００７０】
特定部７２は、検出部７１から通知されたスイッチを介して転送されているフローを、報告パケットの送信周期を短くするフローとして特定する。検出部７１からは、スイッチＳＷ３で輻輳の予兆が発生したことが通知されているので、特定部７２は、フロー分析データ９４から、スイッチＳＷ３を介して転送されるフローのフローＩＤを取得する。図１４に示すように、フローＩＤ＝１、２がスイッチＳＷ３を介して転送されている。そこで、特定部７２は、決定部８１にフローＩＤ＝１、２がスイッチＳＷ３を介して転送されていることを通知する。
【００７１】
決定部８１は、フローＩＤ＝１、２のフローについての送信周期を短くし、送信周期の変動率とサンプリングされるパケットの間隔の変動率が同じになるように、サンプルレートも短くする。具体的には、決定部８１は、サンプルレートを、元の送信周期に対する変更後の送信周期の比の逆数と、現在使用されているサンプルレートの積に変更する。この処理により、送信周期が第１の周期から第２の周期に変更されたとしても、第１の周期で採取されるパケット数と、第２の周期で採取されるパケット数が同数になる。決定部８１は、新たに決定した送信周期を示すタイマ値と、サンプルレートをタイマ値テーブル９３に格納する。
【００７２】
図１６は、変更後のタイマ値テーブル９３の例を示す。フローＩＤ＝１のフローでは、変更前（図１１）は送信タイマ値が２秒であるのに対し、変更後（図１６）では１．５秒に短縮され、報告パケットの送信周期が３／４になっている。一方、サンプルレートについて、決定部８１は、送信タイマ値を３／４倍にすることから、変更前の値（１／２）の４／３倍である２／３に変更する。フローＩＤ＝２のフローについても、同様の手法により送信タイマ値とサンプルレートが変更される。図１６の例では、決定部８１は、フローＩＤ＝２のフローについての送信タイマ値を、３０秒から３秒に短縮している。また、決定部８１は、送信タイマ値を１／１０にしたことから、フローＩＤ＝２のフローについてのサンプルレートを１０倍にする。このため、フローＩＤ＝２のフローについてのサンプルレートは１／１０に変更される。
【００７３】
さらに、決定部８１は、制御装置６０に対する負荷の増大を防ぐために、輻輳の予兆が検出されたスイッチを経由せずに転送されているフローについては、報告パケットの送信周期を長くする。輻輳の予兆が検出されたスイッチを経由せずに転送されているフローの特定の際にも、決定部８１は、フロー分析データ９４を参照する。ここでは、フローＩＤ＝３のフローがスイッチＳＷ３を経由せずに転送されている。そこで、決定部８１は、フローＩＤ＝３のフローの報告パケットの生成に使用される送信タイマ値を長くする。図１６の例では、決定部８１は、フローＩＤ＝３のフローについて、送信タイマ値を、図１１での設定の４倍である４０秒に変更している。決定部８１は、送信タイマ値の変更に伴い、フローＩＤ＝３のフローについてのサンプルレートを１／４倍する。このため、図１６では、フローＩＤ＝３のフローについてのサンプルレートは１／４０に設定される。
【００７４】
図１７は、フロー情報の送信のタイミングの変更に使用されるパケットの例とフロー情報の送信タイミングの変更例を示す。決定部８１は、変更後のタイマ値テーブル９３中の送信タイマ値とサンプルレートを各通信装置３０に通知するための通知パケットを生成する。図１７のＦ１は、送信タイマ値を小さい値に変更する場合に決定部８１が生成する通知パケットのフォーマットの例を示す。通知パケットには、送信元アドレス、宛先アドレス、要求動作、フローＩＤ、送信タイマ値が含まれる。通知パケットでの送信元アドレスは制御装置６０に設定されているアドレス（ＭＡＣ１０）である。宛先アドレスには、フロー分析データ９４の通知先アドレスが設定される。Ｆ１はフローＩＤ＝１のタイマ値を設定するためのデータであるので、フロー分析データ９４（図１４）より、宛先アドレスはＭＡＣ１１に設定される。要求動作フィールドの値は、送信タイマ値の変更を通知する値であることを示す値であり、図１７のＦ１では１である。送信タイマ値は、タイマ値テーブル９３に新たに設定された値が記録される。フローＩＤ＝２のフローについても同様に、通知パケットが生成される。このため、フローＩＤ＝２のフローの送信タイマ値の変更に使用されるパケットには、以下の情報要素が含まれる。
送信元アドレス：ＭＡＣ１０
宛先アドレス  ：ＭＡＣ１２
要求動作      ：１
フローＩＤ    ：２
送信タイマ値  ：３
【００７５】
送信タイマ値を長くする場合に使用される通知パケットのフォーマットもＦ１と同様である。例えば、フローＩＤ＝３のフローについての送信タイマ値が１０秒から４０秒に変更される場合、Ｆ２に示す情報要素を含むパケットが生成される。なお、フローＩＤ＝３のフローも通信装置３０ｂから送信されているので、宛先アドレスはＭＡＣ１１に設定される。
【００７６】
図１７のグラフＧ２は、送信タイマ値の変更による報告パケットの受信頻度の変更例を説明する模式図である。Ａは、フローＩＤ＝１、２のように、予兆が検出されたスイッチを介して転送されているフローの報告パケットの送信頻度の例を示す。Ａに示すように、制御装置６０は、予兆を検出したスイッチを介して転送されるフローについては、送信タイマ値を短くするので、予兆の発見から、新たな報告パケットの取得までの時間は、予兆の発見前の報告パケットの送信間隔より短くできる。一方、制御装置６０は、予兆を検出したスイッチを介さずに転送されるフローについては、Ｂに示すように、予兆の発見から、新たな報告パケットの取得までの時間を、予兆の発見前の報告パケットの送信間隔より長くできる。
【００７７】
（３）通信装置３０での送信タイマ値の更新処理
以下、制御装置６０から通知パケットを受信したときの通信装置３０での処理の例を説明する。受信部３２は、受信したパケットを制御パケット処理部４２に出力する。制御パケット処理部４２は、通知パケットで送信タイマ値の変更が要求されたフローに関するタイマ値テーブル５２中のエントリの情報を変更する。
【００７８】
図１８は、タイマ値テーブル５２の変更例を示す。タイマ値テーブル５２ｂ―２は、制御パケット処理部４２ｂの処理によって得られた更新後のタイマ値テーブル５２である。制御パケット処理部４２ｂは、図１７のＦ１に示す通知パケットを受信すると、フローＩＤ＝１のフローについての送信タイマ値を、通知パケットで通知された値に設定する。さらに、現在の設定値と変更後の値の比を求め、得られた値の逆数とサンプルレートの現在の値の積を新たなサンプルレートに設定する。すなわち、制御パケット処理部４２ｂは、図１７のＦ１に示す通知パケットを用いて、送信タイマ値を１．５秒に短縮する。さらに、変更前の送信タイマ値が２秒であることから、制御パケット処理部４２ｂは、報告パケットの送信周期が３／４になったと計算する。さらに、制御パケット処理部４２ｂは、フローＩＤ＝１のフローについての変更前のサンプルレートが１／２であるので、新たなサンプルレートを、変更前のサンプルレートの４／３倍である２／３にする。
【００７９】
さらに、制御パケット処理部４２ｂは、受信部３２を介して、図１７に示す通知パケットＦ２も取得するので、フローＩＤ＝３のフローについての送信タイマ値を４０秒に延ばす。さらに、送信タイマ値を、図１１での設定の４倍である４０秒にしたことから、決定部８１は、フローＩＤ＝３のフローについての現在の設定の１／４倍である１／４０に設定する。
【００８０】
また、通信装置３０ａにおいても、制御パケット処理部４２ａが通知パケットを処理することにより同様の処理が行われる。制御パケット処理部４２ａは、フローＩＤ＝２のフローについての送信タイマ値を、３０秒から３秒に短縮するとともに、サンプルレートを１／１００から１／１０に変更する。その結果、図１８に示すタイマ値テーブル５２ａ−２が得られる。
【００８１】
タイマ値テーブル５２の更新が終わると、生成部４１は、更新後の送信タイマ値に従って、フロー情報５１の更新と、報告パケットの生成を行う。このため、通信装置３０ｂでのタイマ値テーブル５２ｂ―２への更新の終了後は、生成部４１ｂは、フローＩＤ＝１のフローに関する報告パケットを１．５秒に１回、送信部３１ｂを介して、制御装置６０に送信する。さらに、生成部４１ｂは、フローＩＤ＝３のフローに関する報告パケットを４０秒に１回生成し、制御装置６０宛に送信する。一方、通信装置３０ａでは、生成部４１ａがフローＩＤ＝２のフローに関する報告パケットを３秒に１回生成し、制御装置６０宛に送信する。
【００８２】
（４）輻輳の発生と経路の変更
制御装置６０は、送信タイマ値の変更後にネットワーク中の通信装置３０から報告パケットを受信すると、輻輳の予兆を検出する前と同様の解析を行う。このため、フロー分析データ９４のデータが更新される。
【００８３】
図１９は、リンク利用率テーブル９５の例を示す。予兆の検出後、計算部７３は、フロー分析データ９４を用いて、リンクごとの使用率を特定する。以下、リンク利用率テーブル９５中のデータを更新するときの計算部７３の処理の例を説明する。
【００８４】
計算部７３は、スイッチ間の接続関係と、スイッチ間のリンクの容量を、トポロジー情報９１（図９）から取得する。この処理により、リンク利用率テーブル９５のリンクの欄と、容量の欄の値が特定される。
【００８５】
次に、計算部７３は、ネットワーク中のスイッチ間を接続している各リンクについて、そのリンクを介して転送されているデータの転送レートの総和を求めるために、各リンクを経由するフローを特定する。以下の説明では、予兆の検出や送信タイマ値の変更後に制御装置６０が受信した報告パケットを用いて更新した後のフロー分析データ９４が図１４に示す通りである場合を例とする。すると、フローＩＤ＝１のフローがスイッチＳＷ４、ＳＷ３、ＳＷ２を介して転送されていることから、計算部７３は、フローＩＤ＝１のフローがスイッチＳＷ４とＳＷ３の間のリンクとスイッチＳＷ３とＳＷ２の間のリンクを経由すると判定する。また、フローＩＤ＝２のフローもスイッチＳＷ４、ＳＷ３、ＳＷ２を介して転送されていることから、計算部７３は、フローＩＤ＝２のフローも、スイッチＳＷ４とＳＷ３の間のリンクとスイッチＳＷ３とＳＷ２の間のリンクを経由すると判定する。さらに、フローＩＤ＝３のフローはスイッチＳＷ４、ＳＷ１、ＳＷ２を介して転送されていることから、計算部７３は、フローＩＤ＝１のフローがスイッチＳＷ４とＳＷ１の間のリンクとスイッチＳＷ１とＳＷ２の間のリンクを経由すると判定する。
【００８６】
計算部７３は、次に、リンクごとに、どのフローの転送処理に使用されているかを特定し、転送中のフローの転送レートの総和を求める。スイッチＳＷ１とＳＷ２の間のリンクと、スイッチＳＷ１とＳＷ４の間のリンクは、いずれも、フローＩＤ＝３のフローの転送に使用されている。一方、スイッチＳＷ２とＳＷ３の間のリンク、および、スイッチＳＷ３とＳＷ４の間のリンクは、いずれも、フローＩＤ＝１、３の２つのフローの転送に使用されている。ここで、各フローの転送レートは、図１４より、以下のとおりである。
フローＩＤ＝１：１０Ｍｂｐｓ
フローＩＤ＝２：８０Ｍｂｐｓ
フローＩＤ＝３：２０Ｍｂｐｓ
このため、図１９の転送レートの欄に示すように、スイッチＳＷ１とＳＷ２の間のリンク、および、スイッチＳＷ１とＳＷ４の間のリンクの転送レートは、２０Ｍｂｐｓとなる。一方、スイッチＳＷ２とＳＷ３の間のリンク、および、スイッチＳＷ３とＳＷ４の間のリンクの転送レートは、９０Ｍｂｐｓとなる。
【００８７】
計算部７３は、各リンクについて、そのリンクの容量に対する転送レートの百分率を、リンクの使用率とする。例えば、スイッチＳＷ１とＳＷ２の間のリンクでは、容量が１６０Ｍｂｐｓであるのに対し、転送レートは２０Ｍｂｐｓであるため、使用率は１２．５％である。計算部７３は、同様の計算を他のリンクに対しても行う。図１９の例では、スイッチＳＷ１とＳＷ４の間のリンクの使用率は１２．５％、スイッチＳＷ２とＳＷ３の間のリンクの使用率は９０％、スイッチＳＷ３とＳＷ４の間のリンクの使用率は７５％であると計算される。
【００８８】
計算部７３は、リンクの利用率が閾値Ｔｈ３を超えたリンクを、輻輳を防止するために転送レートを下げる対象として、選択部８２に通知する。ここで、閾値Ｔｈ３は、処理負荷が輻輳の検出に用いる閾値Ｔｈ２に近づいたスイッチに接続されているリンクの使用率の予測値である。すなわち、閾値Ｔｈ３は、そのリンクに接続されているスイッチでのバッファ１８の使用率が閾値Ｔｈ２になる程度のリンクの利用率の予測値であり、経験則に基づいて設定される。例えば、閾値Ｔｈ３は、リンクの利用率＝８５％に設定されているとする。この場合、スイッチＳＷ３とＳＷ２の間のリンクの利用率が８５％を越えた状態で、スイッチＳＷ３からＳＷ２に向けてフローの送信が行われていると、スイッチＳＷ３でのバッファ１８の使用率が閾値Ｔｈ２の周辺にまで上昇していることになる。図１９では、スイッチＳＷ２とＳＷ３の間のリンクの使用率は９０％であるので、計算部７３は、スイッチＳＷ２とＳＷ３の間のリンクを、転送レートを下げる対象として選択部８２に通知する。
【００８９】
図２０は、計算部７３から通知されたリンクを使用するフローについての使用率の計算例を示す。図２０を参照しながら、選択部８２が計算部７３から通知されたリンクを使用するフローごとに、リンクの利用率を計算する方法について説明する。
【００９０】
選択部８２は、計算部７３から通知されたリンクをキーとして、フロー分析データ９４（図１４）を検索することにより、通知されたリンクを経由するフローを特定する。ここではスイッチＳＷ２とＳＷ３の間のリンクが通知されたので、選択部８２は、フロー分析データ９４から、スイッチＳＷ２とＳＷ３の両方を経由するスイッチに含むフローのフローＩＤを取得する。さらに、選択部８２は、取得したフローＩＤに対応付けられた転送レートも、フロー分析データ９４から読み出す。この処理により、スイッチＳＷ２とＳＷ３の間のリンクを経由するフローがフローＩＤ＝１、２のフローであることと、フローＩＤ＝１のフローの転送レートが１０Ｍｂｐｓ、フローＩＤ＝２のフローの転送レートが８０Ｍｂｐｓであることが特定される。換言すると、これらの処理により、選択部８２は、図２０のうちのフローＩＤと転送レートの欄の値を取得する。なお、図２０では、図を見やすくするために、フローの情報として、送信元アドレスと宛先アドレスの組み合わせも含めているが、送信元アドレスと宛先アドレスについては、選択部８２が取得しても良く、また、取得しなくても良い。
【００９１】
さらに、選択部８２は、トポロジー情報９１（図９）を用いて、計算部７３から通知されたリンクの容量も取得する。ここでは、スイッチＳＷ２とＳＷ３の間のリンクの容量は１００Ｍｂｐｓである。選択部８２は、各フローの転送レートについて、リンクの容量に対する各フローの転送レートの百分率を計算する。その結果、図２０に示すように、フローＩＤ＝１のフローについてのスイッチＳＷ２とＳＷ３の間のリンクの使用率は、１０％となる。同様の計算により、フローＩＤ＝２のフローでは、使用率が８０％となる。選択部８２は、リンクの使用率を計算したフローのうち、相対的に使用率の大きいフローを、転送経路を変更するフローとして選択する。図２０の例では、選択部８２は、フローＩＤ＝２のフローを、経路を変更するフローとして選択する。
【００９２】
次に選択部８２は、選択したフローについて、リンクの利用率が閾値Ｔｈ３を超えているリンクを経由しない転送経路を検索する。例えば、選択部８２は、フローＩＤ＝２のフローについて、スイッチＳＷ２とＳＷ３の間のリンクを経由せずに転送する経路を検索する。すなわち、選択部８２は、ＭＡＣ３が割り当てられた仮想マシンＶＭ１が動作している通信装置３０ａから、スイッチＳＷ２とＳＷ３の間のリンクを経由せずに、ＭＡＣ４が割り当てられた仮想マシンが動作している通信装置３０ｂに至る経路を検索する。検索の際には、選択部８２は、適宜、トポロジー情報９１を参照する。検索の結果、選択部８２は、通信装置３０ａからスイッチＳＷ２、スイッチＳＷ１、スイッチＳＷ４を経由する手経路を用いると、スイッチＳＷ２とＳＷ３の間のリンクを経由せずにフローＩＤ＝２のフローを転送できることを特定したとする。選択部８２は、得られた経路を用いてフロー分析データ９４を更新する。
【００９３】
図２１は、更新されたフロー分析データの例を示す。図２１ではフローＩＤ＝２のフローの経路がスイッチＳＷ２、スイッチＳＷ１、スイッチＳＷ４を経由することが記録されている。このため、図２１の情報のうち、太線で囲んだ情報が図１４とは、異なっている。選択部８２は、新たに選択した経路をフロー分析データ９４に書き込むと、フローＩＤ＝２の経路を変更することを指示パケット生成部８３に通知する。
【００９４】
図２２は、フォワーディング情報テーブル９６の変更例を示す。図２２を参照しながら、フォワーディング情報テーブル９６−１がフォワーディング情報テーブル９６−２に変更される場合を例として、指示パケット生成部８３が行う処理の例を説明する。
【００９５】
フォワーディング情報テーブル９６−１は、経路の変更前に各スイッチで使用されているフォワーディングテーブル１６の情報を集約したテーブルである。すなわち、各スイッチが宛先に指定されたアドレスごとに、そのスイッチのどのポートから出力しているかがフォワーディング情報テーブル９６−１に示されている。例えば、現在、ＭＡＣ４宛てのパケットはスイッチＳＷ２のポートＰｏ１から出力されている。スイッチＳＷ２のポートＰｏ１は、トポロジー情報９１（図９）に示すとおり、スイッチＳＷ３に接続されている。このため、スイッチＳＷ２がＭＡＣ４宛てのパケットをポートＰｏ１から出力することにより、ＭＡＣ４宛てのパケット（フローＩＤ＝２）は、スイッチＳＷ２からスイッチＳＷ３に転送されている。また、ＭＡＣ４宛てのパケットはスイッチＳＷ３のポートＰｏ３から出力されている。スイッチＳＷ３のポートＰｏ３は、スイッチＳＷ４に接続されている（図９参照）。このため、スイッチＳＷ３がＭＡＣ４宛てのパケットをポートＰｏ３から出力することにより、ＭＡＣ４宛てのパケット（フローＩＤ＝２）は、スイッチＳＷ３からスイッチＳＷ４に転送されている。
【００９６】
まず、指示パケット生成部８３は、フローＩＤ＝２の経路を変更後のフロー分析データ９４に示されているように変更するために、経路の変更により転送先が変更になるスイッチを特定する。フローＩＤ＝２についての変更前の経路がスイッチＳＷ２→ＳＷ３→ＳＷ４であるのに対し、変更後の経路はスイッチＳＷ２→ＳＷ１→ＳＷ４である。そこで、指示パケット生成部８３は、経路の変更により、スイッチＳＷ２において、ＭＡＣ４宛てのパケットの転送先がＳＷ３からＳＷ１に変更されることを特定する。さらに、指示パケット生成部８３は、スイッチＳＷ１では新たにＭＡＣ４宛てのパケットの転送を開始することと、スイッチＳＷ３ではＭＡＣ４宛てのパケットの転送を行わなくなることも特定する。このため、指示パケット生成部８３は、スイッチＳＷ１、ＳＷ２、ＳＷ３に、フォワーディングテーブル１６を変更させることを決定する。
【００９７】
次に、指示パケット生成部８３は、フォワーディング情報テーブル９６−１とトポロジー情報９１（図９）を用いて、新たな転送経路を使用するために設定する出力ポートの情報を決定する。例えば、スイッチＳＷ２のポートＰｏ２がスイッチＳＷ１に接続されているので、指示パケット生成部８３は、スイッチＳＷ２におけるＭＡＣ４宛てのパケットの出力ポートをポートＰｏ２に決定する。同様に、スイッチＳＷ１のポートＰｏ３がスイッチＳＷ４に接続されているので、指示パケット生成部８３は、スイッチＳＷ１におけるＭＡＣ４宛てのパケットの出力ポートをポートＰｏ３に決定する。また、指示パケット生成部８３は、スイッチＳＷ３でのＭＡＣ４宛ての出力ポートの情報をスイッチＳＷ３のフォワーディングテーブル１６から削除することも合わせて決定する。指示パケット生成部８３は、決定した情報を、各スイッチに通知するための指示パケットを生成する。
【００９８】
図２３は、指示パケットの例を示す図である。指示パケットには、送信元アドレス、宛先アドレス、スイッチへの要求動作、エントリ情報が含まれる。指示パケット生成部８３は、送信元アドレスフィールドに、制御装置６０に割り当てられたアドレス（ＭＡＣ１０）を記録する。指示パケット生成部８３は、宛先アドレスフィールドに、指示パケットの宛先のスイッチに割り当てられたアドレスを記録する。要求動作フィールドには、フォワーディングテーブル１６に新たなエントリの追加、現存するエントリの内容変更、エントリの削除のいずれかを示す値が記録される。図２３の例では、新たなエントリの追加を示す値は１１、現存するエントリの内容変更を示す値は１２、エントリの削除を示す値は１３である。エントリ情報フィールドには、要求動作フィールドに指定された動作の対象となるエントリの情報が記録される。エントリの情報は、そのエントリに含まれているＭＡＣアドレスと出力先のポート番号の組み合わせで表わされる。
【００９９】
指示パケットは、輻輳の予兆が検出されたスイッチと、輻輳の予兆が検出されたスイッチに代わって、転送経路を変更する対象となっているフローの転送を開始するスイッチに送信される。さらに、転送経路の変更対象となるフローを輻輳の予兆が検出されたスイッチに転送しているスイッチにも、指示パケットが送信される。
【０１００】
図２３のＦ３は、スイッチＳＷ１に対して、ＭＡＣ４宛てのパケットをポートＰｏ３から出力するための情報をフォワーディングテーブル１６に書き込むことを指示するパケットである。なお、図２３の例では、スイッチＳＷ１のアドレスはＭＡＣ３１、スイッチＳＷ２のアドレスはＭＡＣ３２、スイッチＳＷ３のアドレスはＭＡＣ３３であるものとする。同様に、図２３のＦ４は、スイッチＳＷ２に対して、ＭＡＣ４宛てのパケットの出力先をポートＰｏ２に変更するように、フォワーディングテーブル１６を書き換えることを指示するための指示パケットである。さらに、図２３のＦ５は、スイッチＳＷ３に対して、ＭＡＣ４宛てのパケットの出力先をポートＰｏ３に指定しているエントリを、フォワーディングテーブル１６から削除することを指示するための指示パケットである。指示パケット生成部８３は、Ｆ３〜Ｆ５に示すパケットを生成すると送信部６２に出力する。送信部６２は、制御用のネットワークを用いて、宛先のスイッチに指示パケットを送信する。
【０１０１】
図２２に示すように、指示パケット生成部８３は、フォワーディング情報テーブル９６−１をフォワーディング情報テーブル９６−２に更新する処理も行う。フォワーディング情報テーブル９６−２は、各パケットにおいて、指示パケットに従ってフォワーディングテーブル１６が書き換えられたときに、各スイッチが保持するフォワーディングテーブル１６の情報を集約している。図２３のＦ３に従って、スイッチＳＷ１で新たなエントリの追加が行われると、変更後のスイッチＳＷ１のフォワーディングテーブル１６には、ＭＡＣ４宛てのパケットの出力先がポートＰｏ３であることが登録される。さらに、図２３のＦ４に従って、スイッチＳＷ２でエントリの変更が行われると、変更後のスイッチＳＷ２のフォワーディングテーブル１６では、ＭＡＣ４宛てのパケットの出力先がポートＰｏ２となる。また、図２３のＦ５に従って、スイッチＳＷ３でエントリの変更が行われると、変更後のスイッチＳＷ３のフォワーディングテーブル１６では、ＭＡＣ４宛てのパケットの転送先のデータが削除される。図２２では、フォワーディングテーブル中の変更点を太線で示す。
【０１０２】
次に、指示パケットを受信したときの各スイッチの動作について説明する。スイッチＳＷ１の通信部１２は、制御装置６０から指示パケットを受信すると、指示パケットを更新部２２に出力する。更新部２２は、指示パケットのエントリ情報フィールド中の情報について、要求動作フィールドに指定された動作を行うことによりフォワーディングテーブル１６を書き換える。スイッチＳＷ１の場合、図２３のＦ３に示す指示パケットを受信するので、更新部２２は、ＭＡＣ４宛てのパケットをポートＰｏ３から出力するための情報をフォワーディングテーブル１６に書き込む。このため、スイッチＳＷ１のフォワーディングテーブル１６は、図２２のフォワーディング情報テーブル９６−２のスイッチＳＷ１に関連付けられた情報と一致する。
【０１０３】
スイッチＳＷ２やスイッチＳＷ３においても、同様に、指示パケットのエントリ情報フィールド中の情報について、要求動作フィールドに指定された処理が行われる。すなわち、スイッチＳＷ２の更新部２２は、ＭＡＣ４宛てのパケットの出力ポートをＰｏ１からＰｏ２に変更する。このため、スイッチＳＷ２のフォワーディングテーブル１６は、図２２のフォワーディング情報テーブル９６−２のスイッチＳＷ２に関連付けられた情報となる。また、スイッチＳＷ３の更新部２２は、ＭＡＣ４宛てのパケットの出力ポートの情報をフォワーディングテーブル１６から削除する。従って、スイッチＳＷ３のフォワーディングテーブル１６は、図２２のフォワーディング情報テーブル９６−２のスイッチＳＷ３に関連付けられた情報と一致する。
【０１０４】
図２４は、経路の変更例を示す図である。スイッチＳＷ２〜ＳＷ４の各々でフォワーディングテーブル１６が書き換えられたことにより、フローＩＤ＝２のフロー（太い破線の矢印）は、図２４に示すように、スイッチＳＷ２、ＳＷ１、ＳＷ４を介して転送される。フローＩＤ＝１、３のフローの転送経路は変更されないため、スイッチＳＷ２とＳＷ３の間のリンクは、フローＩＤ＝１のフローの転送のみに使用される。すると、スイッチＳＷ２とＳＷ３の間のリンクの転送レートは、フローＩＤ＝１のフローの転送レート（１０Ｍｂｐｓ）に下がるため、スイッチＳＷ２とＳＷ３の間のリンクの輻輳は解消する。スイッチＳＷ２とＳＷ３の間のリンクの輻輳の解消に伴い、スイッチＳＷ３でバッファ１８に格納されているデータの量も減少する。
【０１０５】
輻輳の予兆の検出以降は、制御装置６０と通信装置３０との間の通信を詳しく説明してきたが、輻輳の予兆が検出された後も、スイッチＳＷ１〜ＳＷ４は、予め決められた周期で、バッファ１８に蓄積されたデータ量を制御装置６０に通知している。検出部７１は、各スイッチから通知されたパケットを用いて、全てのスイッチでのバッファ１８の使用量が閾値Ｔｈ１を下回っているかを判定する。全てのスイッチでのバッファ１８の使用量が閾値Ｔｈ１を下回ると、検出部７１は、全てのスイッチが正常に動作していると判定する。すると、検出部７１は、決定部８１に対して、全てのフローに関して報告パケットの送信周期をデフォルトに戻すことを要求する。決定部８１は、予め、各フローについて、送信周期のデフォルト値を記憶している。そこで、決定部８１は、各フローについて、送信タイマ値をデフォルトの送信周期にした通知パケットを、送信部６２を介して、そのフローの送信元の通信装置３０に送信する。各通信装置３０の生成部４１は、受信部６１を介して、制御装置６０からの通知パケットを取得する。生成部４１は、通知パケットに従って、輻輳の予兆が検出されたときと同様に、タイマ値テーブル５２を更新する。このため、全てのスイッチで動作が正常に戻ると、各フローについての報告パケットの送信周期はデフォルトの周期に戻る。
【０１０６】
図２５は、転送装置１０からパケットを受信したときの制御装置６０の処理の例を説明するフローチャートである。なお、図２５では、制御装置６０が受信している制御パケットの転送レートが所定の値（閾値Ｔｈ４）に達するまでは、報告パケットの送信タイマ値を大きくしないように変形された場合を例として示している。
【０１０７】
受信部６１は、転送装置１０からパケットを受信すると検出部７１に出力する（ステップＳ１）。検出部７１は、送信元の転送装置１０においてバッファ１８の利用率が閾値Ｔｈ１未満であるかを判定する（ステップＳ２）。送信元の転送装置１０においてバッファ１８の利用率が閾値Ｔｈ１以上である場合、検出部７１は輻輳の予兆を検出したことを特定部７２に通知する（ステップＳ２でＮｏ）。特定部７２は、送信元の転送装置１０を通るフローを特定する（ステップＳ３）。決定部８１は、特定部７２で特定されたフローについて、報告パケットを生成するときに使用する送信タイマの値（報告パケットの生成周期）を短くし、サンプルレートを上げる（ステップＳ４）。検出部７１は、通信装置３０からの報告パケットや、各転送装置１０から受信するパケットの転送レートの合計を観測する（ステップＳ５）。検出部７１は、観測した転送レートの合計値が閾値Ｔｈ４を越えているかを判定する（ステップＳ６）。制御装置６０に送信されてくる制御用のパケットの転送レートの合計が閾値Ｔｈ４以上になると、検出部７１は、決定部８１に、報告パケットの生成周期を長くできるフローの選択を要求する（ステップＳ６でＹｅｓ）。決定部８１は、バッファ１８の利用率が閾値Ｔｈ１を超えた転送装置１０を経由せずに転送されているフローを選択する（ステップＳ７）。決定部８１は、選択したフローについて、報告パケットの生成周期を長くし、サンプルレートを下げる（ステップＳ８）。
【０１０８】
一方、ステップＳ２で、送信元の転送装置１０においてバッファ１８の利用率が閾値Ｔｈ１未満であると判定された場合、送信元の転送装置１０に関する輻輳の予兆は検出されていない（ステップＳ２でＹｅｓ）。検出部７１は、他の転送装置１０でもバッファ１８の利用率がＴｈ１未満であるかを判定する（ステップＳ９）。ネットワーク中のいずれかの転送装置１０でもバッファ１８の利用率がＴｈ１以上の場合、輻輳の予兆が検出されているので、検出部７１は処理を終了する（ステップＳ９でＮｏ）。一方、ネットワーク中のいずれの転送装置１０でもバッファ１８の利用率がＴｈ１未満の場合、輻輳の予兆も解消しているので、検出部７１は、決定部８１に報告パケットの生成周期をデフォルト値に戻すことを要求する（ステップＳ９でＹｅｓ）。決定部８１は、報告パケットの生成周期を変更したフローがあるかを判定する（ステップＳ１０）。報告パケットの生成周期を変更したフローがある場合、決定部８１は、報告パケットの生成周期をデフォルト値に戻すための指示パケットを送信して処理を終了する（ステップＳ１０でＹｅｓ、ステップＳ１１）。一方、報告パケットの生成周期を変更したフローがない場合、決定部８１は処理を終了する（ステップＳ１０でＮｏ）。
【０１０９】
図２６は、通信装置３０からパケットを受信したときの制御装置６０の処理の例を説明するフローチャートである。受信部６１は、通信装置３０から報告パケットを受信すると、計算部７３と特定部７２に出力する（ステップＳ２１）。計算部７３は、報告パケットを用いて、各フローの転送レートを計算する（ステップＳ２２）。さらに、計算部７３は、転送フローの計算結果とトポロジー情報９１を用いて、各リンクの使用率を計算する（ステップＳ２３）。計算部７３は、リンク使用率が閾値Ｔｈ３以上のリンクがあるかを判定する（ステップＳ２４）。リンク使用率が閾値Ｔｈ３以上のリンクがある場合、選択部８２は、そのリンクを用いて転送されるフローを特定する（ステップＳ２４でＹｅｓ、ステップＳ２５）。選択部８２は、輻輳を回避するための変更経路を求める（ステップＳ２６）。指示パケット生成部８３は、求められた経路変更を行うために、転送装置１０に送信する指示パケットを生成し、送信部６２を介して転送装置１０に送信する（ステップＳ２７）。一方、リンク使用率が閾値Ｔｈ３以上のリンクがない場合、計算部７３は処理を終了する（ステップＳ２４でＮｏ）。
【０１１０】
このように、第１の実施形態にかかる方法では、転送装置１０からの通知により、輻輳が発生し易い箇所を、輻輳の予兆が発生した段階で特定し、輻輳の原因になり得るフローの転送レートを取得する周期を短くする。このため、輻輳が発生してからリンク使用率を用いて輻輳の発生または輻輳の発生する可能性が高まっていることを検出するまでの時間を短くできる。さらに、輻輳の検出に使用したデータ自体を用いて輻輳の回避のための処理が行われるので、輻輳の検出から輻輳を解消するための経路変更などの処理が行われるまでの時間が短くてすむ。また、輻輳が発生する状態に近づいた段階で、制御装置６０がネットワーク中のフローの転送経路を変更することにより、輻輳を事前に予防することができる可能性も高い。
【０１１１】
さらに、制御装置６０は、輻輳の発生に影響しづらいフローについては転送レートを取得する周期を長くすることにより、制御装置６０が処理するパケットの数を減らすことができる。このため、制御装置６０の負荷を高めることなく、輻輳の発生から短期間で輻輳を検出できる。さらに、制御装置６０の処理負荷が大きくならないように調整されるので、転送レートの取得処理が制御装置６０での変更後の転送経路の導出の妨げになりにくい。従って、制御装置６０は、輻輳の検出や輻輳の回避に使用する可能性の低い情報の処理量を極力減らして、効率よく、輻輳の検出と回避を行うことができる。
【０１１２】
＜第２の実施形態＞
第２の実施形態では、報告パケットの送信周期の決定方法の変形例を説明する。なお、輻輳の予兆が検出される前の処理、輻輳の予兆の検出方法、報告パケットの送信周期を短くするフローの特定方法、送信周期を表わす送信タイマ値の通知方法などは、第１の実施形態と同様である。
【０１１３】
図２７は、報告パケットの送信間隔の決定方法の例を説明する図である。図２７の例では、各転送装置１０について、バッファの使用量が閾値Ｔｈ１未満の場合に使用される送信タイマ値Ｉｎ１と、バッファの使用量が閾値Ｔｈ２以上の場合に使用される送信タイマ値Ｉｎ２が決められている。バッファの使用量が閾値Ｔｈ１から閾値Ｔｈ２までの間では、バッファの使用量として通知された値が大きいほど、短くなるように設定される。このとき、バッファの使用量として通知された値から閾値Ｔｈ１を差し引いた値の大きさに比例して、送信タイマ値の短縮量が大きくなる。従って、報告パケットの送信周期を、バッファの使用量に対してプロットすると、図２７に示すグラフで表わされる。転送装置１０でのバッファ１８の使用量がｘのとき、送信タイマ値ｙは、以下の式で求められる。
ｙ＝（Ｉｎ１−Ｉｎ２）／（Ｔｈ１−Ｔｈ２）×（ｘ−Ｔｈ２）＋Ｉｎ２
例えば、あるフローについては、バッファの使用量が閾値Ｔｈ１未満の場合の送信タイマ値（Ｉｎ１）が３０秒で、バッファの使用量が閾値Ｔｈ２以上の場合の送信タイマ値（Ｉｎ２）が２秒であるとする。さらに、閾値Ｔｈ１＝１００ＭＢ、閾値Ｔｈ２＝３００ＭＢであるとする。予兆が検出された転送装置１０でのバッファ１８の使用量がｘ＝２００ＭＢであれば、そのフローについては、以下の式から、短縮後の報告パケットの送信周期が計算される。
ｙ＝（３０−２）／（１００−３００）×（２００−３００）＋２＝１６（秒）
決定部８１は、他のフローについても同様の計算を用いて、短縮後の送信タイマ値を求めることができる。
【０１１４】
次に、送信周期を長くするフローについての送信周期の決め方について説明する。輻輳の予兆が検出される前に単位時間当たりに制御装置６０が受信するパケット数が、輻輳の予兆の検出後にも同じ値になるように、決定部８１において、送信周期が決定される。例えば、予兆の検出前に、ｎ１＋ｎ２個のフローが全てｙ０の周期で制御装置６０に送信されていたとする。このうち、ｎ１個のフローが輻輳の発生に関連するフローであるとし、前述の方法により、報告パケットの送信周期がｙ１に変更されたとする。一方、ｎ２個のフローについては、輻輳の発生との関連が薄いため、送信周期が現在より長い値であるｙ２に設定されるとする。この場合、制御装置６０が単位時間当たりに受信する報告パケットの総数Ｍは、送信周期の変更前と変更後で変わらないので、（１）式で表わせる。
Ｍ＝（１／ｙ０）×（ｎ１＋ｎ２）
＝｛（１／ｙ１）×ｎ１｝＋｛（１／ｙ２）×ｎ２｝  ・・・（１）
（１）式を変形すると、報告パケットの送信周期を延ばすフローについての送信タイマ値ｙ２は（２）式で表わせる。
ｙ２＝｛ｙ０×ｙ１×ｎ２｝／｛ｙ１×（ｎ１＋ｎ２）−（ｙ０×ｎ１）｝
・・・（２）
例えば、複数のフローについて、予兆の検出前の送信周期（ｙ０）が３０秒で、報告パケットの送信周期を短くするフローでの送信タイマの変更後の値（ｙ１）が１６秒であるとする。さらに、報告パケットの送信周期が短縮されるフローの数（ｎ１）が２（個）で、報告パケットの送信周期が延長されるフローの数（ｎ２）が８（個）であるとする。この場合、送信周期が延長されるフローについての送信タイマ値は以下のように求められる。
ｙ＝｛３０×１６×８｝／｛１６×（２＋８）−（３０×２）｝＝３８．４（秒）
【０１１５】
決定部８１が第２の実施形態で説明したように送信タイマ値を計算すると、制御装置６０で処理するパケットの総量を変動させることなく、輻輳の原因になりやすいフローについての報告パケットの取得頻度を高めることができる。
【０１１６】
＜第３の実施形態＞
第３の実施形態でも、報告パケットの送信周期の決定方法の変形例を説明する。なお、輻輳の予兆が検出される前の処理、輻輳の予兆の検出方法、報告パケットの送信周期を短くするフローの特定方法、送信周期を表わす送信タイマ値の通知方法などは、第１の実施形態と同様である。また、送信周期を長くするフローについての送信タイマ値の決定方法は第２の実施形態と同様である。
【０１１７】
図２８は、報告パケットの送信間隔の決定方法の例を説明する図である。図２８の例でも、各転送装置１０について、バッファの使用量が閾値Ｔｈ１未満の場合に使用される送信タイマ値Ｉｎ１と、バッファの使用量が閾値Ｔｈ２以上の場合に使用される送信タイマ値Ｉｎ２が決められている。図２８の例では、バッファの使用量が閾値Ｔｈ１から閾値Ｔｈ２までの間では、バッファの使用量として通知された値が大きいほど短くなるように、送信タイマ値が、転送装置１０中のバッファ量に対して２次曲線を描いて変動する。図２８に示すグラフでは、転送装置１０でのバッファ１８の使用量がｘであるとすると、送信タイマ値ｙは、以下の式で求められる。
ｙ＝（Ｉｎ１−Ｉｎ２）／（Ｔｈ１−Ｔｈ２）２×（ｘ−Ｔｈ２）２＋Ｉｎ２
例えば、あるフローについては、バッファの使用量が閾値Ｔｈ１未満の場合の送信タイマ値（Ｉｎ１）が３０秒で、バッファの使用量が閾値Ｔｈ２以上の場合の送信タイマ値（Ｉｎ２）が２秒であるとする。さらに、閾値Ｔｈ１＝１００ＭＢ、閾値Ｔｈ２＝３００ＭＢであるとする。予兆が検出された転送装置１０でのバッファ１８の使用量がｘ＝２００ＭＢであれば、そのフローについては、以下の式から、短縮後の報告パケットの送信周期が計算される。
ｙ＝（３０−２）／（１００−３００）２×（２００−３００）２＋２＝９（秒）
【０１１８】
決定部８１が第３の実施形態で説明したように送信タイマ値を計算すると、第２の実施形態に示す方法で計算した場合に比べ、転送装置１０でのバッファ１８の使用量が閾値Ｔｈ１を超過した量が少なくても報告パケットの送信周期を短く設定できる。このため、第３の実施形態を用いると、制御装置６０での輻輳の検出のタイミングを効率的に早めることができる。
【０１１９】
＜第４の実施形態＞
第４の実施形態では、輻輳の予兆が検出された転送装置１０を介さずに転送されているフローについての報告パケットの送信周期を、転送レートの変動が小さいフローほど長くなるように設定する方法について説明する。なお、輻輳の予兆が検出される前の処理、輻輳の予兆の検出方法、報告パケットの送信周期を短くするフローの特定方法、送信周期を表わす送信タイマ値の通知方法などは、第１〜第３の実施形態と同様である。
【０１２０】
計算部７３は、輻輳の予兆が検出された転送装置１０を介さずに転送処理が行われるフローを、そのフローの転送レートの変動量を用いて複数のクラスに分類する。変動量は、あるフローの偏差がそのフローの平均値に占める割合として表わすものとする。所定の時間中での転送レートの変動量の小さいクラスのフローは、以後も、転送レートの変動が相対的に小さいことが期待される。そこで、計算部７３は、輻輳の予兆が検出された転送装置１０を介さずに転送されているフローのうちで、転送レートの変動が相対的に小さいフローの識別子を、決定部８１に通知する。
【０１２１】
決定部８１は、通知された報告パケットの送信周期（送信タイマ値）を長くし、輻輳の予兆が検出された転送装置１０を介さずに転送されているフローであっても、転送レートの変動が大きいフローについては、送信タイマ値を変更しない。
【０１２２】
計算部７３は、送信周期を長くしたフローが原因となる輻輳の発見が遅延することを防ぐために、送信周期を長くしたフローの転送に使用されている転送装置１０での予兆閾値を小さくする。このため、報告パケットの送信周期が延びたフローの転送に使用されている転送装置１０では輻輳の予兆が検出されやすくなるため、報告パケットの送信周期を長くしたフローが原因となる輻輳が発生しても、輻輳の発見が遅延しない。
【０１２３】
なお、計算部７３は、フローの転送レートの変動量を２つ以上のクラスに分けてもよい。この場合、計算部７３は、転送レートの変動量に応じた分類を行うために、閾値Ｔｈ５とＴｈ６の２つの閾値を用いる。ここで、閾値Ｔｈ５の方が閾値Ｔｈ６より小さいとする。計算部７３は、転送レートの変動量が閾値Ｔｈ５未満のフローと、転送レートの変動が閾値Ｔｈ５から閾値Ｔｈ６までのフローを、送信タイマ値を長くする対象として決定部８１に通知する。このとき、計算部７３は、通知するフローがいずれのクラスに分類されているかも決定部８１に合わせて通知する。
【０１２４】
決定部８１は、分類されたクラスに応じて、送信タイマ値とそのフローを転送している転送装置１０での閾値Ｔｈ１を変更する。閾値Ｔｈ５よりも変動が小さいフローについては、変動が閾値Ｔｈ５からＴｈ６までのフローよりも、送信タイマ値の変動量を大きくする。
【０１２５】
図２９は、輻輳の予兆を検出したときの制御装置６０の処理の例を説明するフローチャートである。なお、図２９は一例であり、フローの送信タイマ値の変更量や、転送装置１０での予兆を検出するために使用される閾値Ｔｈ１の変更量は、実装に応じて変更され得る。さらに、ステップＳ３７とＳ３８の順序は互いに変更されても良く、ステップＳ３９とＳ４０の順序も互いに変更されても良い。
【０１２６】
検出部７１は、輻輳の予兆を検出するまで待機する（ステップＳ３１でＮｏ）。検出部７１が輻輳の予兆を検出すると、特定部７２は、予兆が検出された転送装置１０で転送されないフローを特定する（ステップＳ３１でＹｅｓ、ステップＳ３２）。計算部７３は、特定した各フローの所定時間での転送レートの変動量を算出する（ステップＳ３３）。計算部７３は、変数ｎを１に設定し、ｎ番目のフローを選択する（ステップＳ３４、Ｓ３５）。計算部７３は、選択したフローでの変動量を閾値と比較する（ステップＳ３６）。選択したフローでの変動量が閾値Ｔｈ５未満の場合、決定部８１は、通知されたフローの送信タイマ値を２０％長くすることを決定し、送信タイマ値を変更するための要求パケットを通信装置３０に送信する（ステップＳ３７）。選択したフローでの変動量が閾値Ｔｈ５未満の場合、さらに、計算部７３は、ｎ番目のフローを転送し、かつ、送信タイマ値が短縮されたフローを転送していない転送装置１０での閾値Ｔｈ１を２０％小さくする（ステップＳ３８）。
【０１２７】
選択したフローでの変動量が閾値Ｔｈ５からＴｈ６までの場合、決定部８１は、通知されたフローの送信タイマ値を１０％長くすることを決定し、送信タイマ値を変更するための要求パケットを通信装置３０に送信する（ステップＳ３９）。選択したフローでの変動量が閾値Ｔｈ５からＴｈ６までの場合、さらに、計算部７３は、ｎ番目のフローを転送し、かつ、送信タイマ値が短縮されたフローを転送していない転送装置１０での閾値Ｔｈ１を１０％小さくする（ステップＳ４０）。
【０１２８】
一方、選択したフローでの変動量が閾値Ｔｈ６以上の場合、計算部７３は、ｎ番目のフローについての送信タイマ値を変更しないことを決定する（ステップＳ３６でＴｈ６より大）。
【０１２９】
その後、計算部７３は、ｎの値が定数Ｎ未満であるかを判定する（ステップＳ４１）。ここで、定数Ｎは、予兆が検出された転送装置１０で転送されないフローの総数であるものとする。ｎの値が定数Ｎ未満である場合、計算部７３は、ｎを１つインクリメントして、ステップＳ３５に戻る（ステップＳ４１でＹｅｓ、ステップＳ４２）。ｎの値が定数Ｎ以上の場合、計算部７３は処理を終了する（ステップＳ４１でＮｏ）。
【０１３０】
このように、第４の実施形態では、報告パケットの送信タイマを長くするフローを輻輳の予兆が検出された転送装置１０中で、転送レートの変動が相対的に小さいフローに限定している。このため、報告パケットの送信間隔が長くなっているフローで輻輳が発生することにより、輻輳の発生を見落とす恐れが低くなっている。さらに、第４の実施形態では、計算部７３がフロー転送の予兆を検出するときに使用する閾値を小さくするので、輻輳の予兆を見落とす恐れも低くなっている。
【０１３１】
＜その他＞
なお、実施形態は上記に限られるものではなく、様々に変形可能である。以下にその例をいくつか述べる。
【０１３２】
輻輳の検出や輻輳が発生する可能性があるかの判定に使用するためのパラメータは、転送装置１０のバッファの使用率に限られない。すなわち、実装に応じて、転送装置１０の処理負荷を評価するために使用可能な任意のパラメータを用いて、輻輳の検出や輻輳が発生する可能性があるかの判定が行われうる。
【０１３３】
図１７に示す通知パケットのフォーマットは一例であり、実装に応じて他の情報要素が含められても良い。例えば、通知パケットにサンプルレートが含められる場合、スイッチ（転送装置１０）ではサンプルレートを計算しなくてもよいので、スイッチでの処理負担が軽減される。
【０１３４】
なお、本明細書中では、読みやすくするための便宜上、ネットワーク中で送受信される情報の単位を表現する際に使用する文言を「パケット」に統一しているにすぎない。このため、実装に応じて、適宜、「パケット」という文言を「フレーム」に読み替えることができるものとする。
【０１３５】
以上の説明で述べたテーブルやパケット中の情報要素は一例であり、実装に応じて、情報要素が変更される場合がある。
【符号の説明】
【０１３６】
１０  転送装置
１１  送受信部
１２、３３  通信部
１５、５０、９０  記憶部
１６  フォワーディングテーブル
１７  ＭＩＢ
１８  バッファ
２０、４０、７０  制御部
２１  スイッチング部
２２  更新部
２３  通知部
３０  通信装置
３１、６２  送信部
３２、６１  受信部
３４  パケット処理部
３５  仮想スイッチ
４１  生成部
４２  制御パケット処理部
５１  フロー情報
５２、９３  タイマ値テーブル
６０  制御装置
７１  検出部
７２  分析部
８０  フロー制御部
８１  要求部
８２  選択部
８３  指示パケット生成部
９１  トポロジー情報
９２  フロー情報
９４  フロー分析データ
９５  リンク利用率テーブル
９６  フォワーディング情報テーブル
１０１  プロセッサ
１０２  スイッチング回路
１０３  メモリ
１０４  ネットワークインタフェース
１０５  バス
１０６  記憶装置
【図１】
2015188186.tif 000003
【図２】
2015188186.tif 000004
【図３】
2015188186.tif 000005
【図４】
2015188186.tif 000006
【図５】
2015188186.tif 000007
【図６】
2015188186.tif 000008
【図７】
2015188186.tif 000009
【図８】
2015188186.tif 000010
【図９】
2015188186.tif 000011
【図１０】
2015188186.tif 000012
【図１１】
2015188186.tif 000013
【図１２】
2015188186.tif 000014
【図１３】
2015188186.tif 000015
【図１４】
2015188186.tif 000016
【図１５】
2015188186.tif 000017
【図１６】
2015188186.tif 000018
【図１７】
2015188186.tif 000019
【図１８】
2015188186.tif 000020
【図１９】
2015188186.tif 000021
【図２０】
2015188186.tif 000022
【図２１】
2015188186.tif 000023
【図２２】
2015188186.tif 000024
【図２３】
2015188186.tif 000025
【図２４】
2015188186.tif 000026
【図２５】
2015188186.tif 000027
【図２６】
2015188186.tif 000028
【図２７】
2015188186.tif 000029
【図２８】
2015188186.tif 000030
【図２９】
2015188186.tif 000031