(57)【要約】【課題】  ネットワークに輻輳が発生しても、データを転送するための経路がアドレスに基づく演算によって固定されると、輻輳が継続してしまう。【解決手段】  パケット内の第１アドレスに基づく演算により第１経路を選択する中継装置と、前記第１経路に輻輳が発生した場合に、前記パケット内のアドレスを、前記第１アドレスから、前記中継装置に前記第１経路と宛先が同じになる第２経路を前記演算により選択させる第２アドレスに変更する処理部を有するコンピュータとにより、輻輳が発生した経路を迂回する。【選択図】  図２
2014027339.tif 000002
【特許請求の範囲】
【請求項１】
パケット内の第１アドレスに基づく演算により第１経路を選択する中継装置と、
前記第１経路に輻輳が発生した場合に、前記パケット内のアドレスを、前記第１アドレスから、前記中継装置に前記第１経路と宛先が同じになる第２経路を前記演算により選択させる第２アドレスに変更する処理部を有するコンピュータと
有することを特徴とする情報処理システム。
【請求項２】
前記第２アドレスは、前記演算により選択された経路とパケット内のアドレスとの対応付けを含むログ情報に基づいて設定されるアドレスであることを特徴とする請求項１に記載の情報処理システム。
【請求項３】
前記演算は、前記中継装置が受け取るパケット内のアドレスに基づくハッシュ演算であり、
前記中継装置に前記第１経路とは異なる第２経路を前記ハッシュ演算により選択させる第３アドレスが、前記ハッシュ演算のハッシュ係数に基づいて設定されることを特徴とする請求項２に記載の情報処理システム。
【請求項４】
前記第１アドレスは、前記中継装置を含むネットワークに対して送信元となるコンピュータに割り当てられた物理アドレス、宛先となるコンピュータに割り当てられた物理アドレス、又はそれらの物理アドレスの組み合わせであることを特徴とする請求項１〜３の何れか１項に記載の情報処理システム。
【請求項５】
前記演算は、前記中継装置が受け取るパケット内のアドレスに基づくハッシュ演算であり、
前記第２アドレスは、前記ハッシュ演算のハッシュ係数に基づいて設定されるアドレスであることを特徴とする請求項１に記載の情報処理システム。
【請求項６】
前記第２アドレスは、前記第１経路に輻輳が発生する前に前記コンピュータに設定されることを特徴とする請求項１〜５の何れか１項に記載の情報処理システム。
【請求項７】
前記中継装置は、選択可能な経路が複数ある場合に、前記演算によって前記選択可能な経路から転送経路を選択することを特徴とする請求項１〜６の何れか１項に記載の情報処理システム。
【請求項８】
パケット内の第１アドレスに基づく演算により第１経路を選択し、
前記第１経路に輻輳が発生した場合に、前記パケット内のアドレスを、前記第１アドレスから、前記第１経路を選択した中継装置に前記第１経路と宛先が同じになる第２経路を前記演算により選択させる第２アドレスに変更する
ことを特徴とする情報処理方法。
【請求項９】
パケット内の第１アドレスに基づく演算により選択された第１経路に輻輳が発生した場合に、前記パケット内のアドレスを、前記第１アドレスから、前記第１経路を選択した中継装置に前記第１経路と宛先が同じになる第２経路を前記演算により選択させる第２アドレスに変更する処理部を有するコンピュータ
を有することを特徴とする情報処理装置。
【請求項１０】
パケット内の第１アドレスに基づく演算により選択した第１経路に輻輳が発生した場合に、前記第１経路と宛先が同じになる第２経路を前記演算により選択させる第２アドレスに基づいて前記演算を実行する処理部を有することを特徴とする中継装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理システム、情報処理方法、情報処理装置及び中継装置に関する。
【背景技術】
【０００２】
データセンタ内のサーバ間を接続するレイヤ２（以下、Ｌ２とする）ネットワークに適用されるＳＴＰ（Ｓｐａｎｎｉｎｇ  Ｔｒｅｅ  Ｐｒｏｔｏｃｏｌ）は、ネットワーク内の中継装置にブロッキングポートを設定することで、Ｌ２ネットワーク内にループが形成されることを回避させる技術である。しかし、ブロッキングポートが設定されることによってネットワーク内の経路の一部の利用が制限されるため、ネットワーク帯域が有効利用されない。
【０００３】
近年のデータセンタネットワークのトラフィックの増大に伴い、ネットワーク帯域を有効利用するために、Ｌ２ネットワークに適用されるマルチパス技術の国際標準化が進められている。このマルチパス技術の一つとして、サーバ間を接続するためのＬ２ネットワーク内のループ回避を考慮したＴＲＩＬＬ（ＴＲａｎｓｐａｒｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔｉｏｎ  ｏｆ  Ｌｏｔｓ  ｏｆ  Ｌｉｎｋｓ）が検討されている。
【０００４】
図１にＴＲＩＬＬが適用された情報処理システムの例を示す。情報処理システムの例には、６つのルーティングブリッジ（以下、ＲＢとする）を含むネットワーク、及びネットワークに接続された４つのサーバ（以下、ＳＶとする）が含まれる。６つのＲＢのうちでネットワークに対する外部装置（例えばＳＶ）と接続するＲＢがエッジルーティングブリッジ（以下、エッジＲＢとする）とよばれることがある。ＲＢ間の接続がリンクとされ、６つのＲＢが互いに接続されることでネットワーク内に複数のリンクが形成される。リンクにはリンクコストとよばれるパラメータが設定される。エッジＲＢ間の接続が経路とよばれ、経路に含まれるリンクに設定されたリンクコストの合計値が総リンクコストとして設定される。ＳＶ間の転送に選択可能な経路が複数ある場合に、総リンクコストの最も小さい経路が選択される。総リンクコストが最も小さい経路が複数ある場合には、複数の経路が選択され始めてから、複数の経路が同じ割合となるように選択されることで、ネットワークの負荷が分散される。
【０００５】
なお、総リンクコストが最も小さい経路が複数ある場合に、パケットに含まれるアドレスに基づいたハッシュ演算によって経路を選択する方法が知られている。
【先行技術文献】
【非特許文献】
【０００６】
【非特許文献１】“BCEFE in a Nutshell Study Guide for Exam 150-620”、［online］、Ｒｅｖｉｓｉｏｎ  ０３１２、ブロケード  コミュニケーションズ  システムズ株式会社、［平成２４年６月１５日検索］、インターネット＜URL：http://www.brocade.com/downloads/documents/certification_study_tools/bcefe-nutshell.pdf＞
【発明の概要】
【発明が解決しようとする課題】
【０００７】
パケット内のアドレスに従って経路が割り当てられていると、ネットワークに輻輳が発生した場合でも、輻輳が発生している経路を介して通信をしている当該アドレスの通信には、輻輳が発生している経路が割り当て続けられることとなり、輻輳が回復されない。
【０００８】
本願は、パケット内のアドレスに基づく演算により経路が選択されるネットワークに輻輳が起きると、宛先が変更されないようにパケット内のアドレスが変更されることで、経路を選択するための演算のアルゴリズムを変更することなく輻輳が発生した経路を迂回させて、輻輳を回復させる情報処理システムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
パケット内の第１アドレスに基づく演算により第１経路を選択する中継装置と、前記第１経路に輻輳が発生した場合に、前記パケット内のアドレスを、前記第１アドレスから、前記中継装置に前記第１経路と宛先が同じになる第２経路を前記演算により選択させる第２アドレスに変更する処理部を有するコンピュータとを有する情報処理システム。
【発明の効果】
【００１０】
本開示の一側面によれば、パケット内のアドレスに基づく演算により経路が選択されるネットワークに輻輳が起きると、宛先が変更されないようにパケット内のアドレスが変更されることで、経路を選択するための演算のアルゴリズムを変更することなく輻輳が発生した経路を迂回させて、輻輳を回復させることができる。
【図面の簡単な説明】
【００１１】
【図１】関連技術が適用された情報処理システムの例。
【図２】実施例が適用された情報処理システム。
【図３】実施例が適用されたルーティングブリッジのハードウェア構成。
【図４】実施例が適用されたルーティングブリッジの機能ブロック。
【図５】実施例が適用されたネットワークのコスト情報の一部。
【図６】実施例が適用されたネットワークのコスト情報の他の一部。
【図７】実施例が適用されたルーティングブリッジが有する経路テーブル。
【図８】実施例が適用された情報処理システムで処理されるパケットの構成例。
【図９】実施例が適用されたルーティングブリッジの他の機能ブロック。
【図１０】実施例が適用されたルーティングブリッジで実行される処理。
【図１１】実施例が適用されたルーティングブリッジの他の機能ブロック。
【図１２】実施例が適用された管理サーバのハードウェア構成。
【図１３】実施例が適用された管理サーバの機能ブロック。
【図１４】実施例が適用された管理サーバで実行される処理。
【図１５】実施例によるアドレス変換情報。
【図１６】実施例が適用された管理サーバで実行される他の処理。
【図１７】実施例が適用された管理サーバで実行される他の処理。
【図１８】実施例が適用された管理サーバの機能ブロック。
【図１９】実施例が適用された管理サーバで実行される他の処理。
【図２０】実施例が適用されたサーバのハードウェア構成。
【図２１】実施例が適用されたサーバの機能ブロック。
【図２２】実施例が適用されたサーバが有する経路テーブル。
【図２３】実施例が適用されたサーバで実行される送信処理。
【図２４】実施例が適用されたサーバで実行される受信処理。
【図２５】実施例が適用された情報処理システムの処理の一例。
【図２６】実施例が適用された情報処理システムの処理の一例。
【発明を実施するための形態】
【００１２】
図２に、実施例が適用された情報処理システムが示される。情報処理システムは、ネットワーク１０００、サーバ１００−１０８（以下、サーバをＳＶと表す）、及びルーティングブリッジ１−７（以下、ルーティングブリッジをＲＢと表す）を含む。ＲＢ１−７はネットワーク１０００に含まれる。
【００１３】
ＳＶ１００は、ＳＶ１０１−１０８、及びＲＢ１−７に接続される。ＳＶ１００は、情報処理システムを管理する管理サーバである。
【００１４】
ＳＶ１０１において、仮想マシン１１及び仮想スイッチ２１が実行される（以下、仮想マシンをＶＭ、仮想スイッチをｖＳＷと表す）。ＶＭ１１はｖＳＷ２１を介してＲＢ４にデータを転送する。ＳＶ１０２−１０８は、図２に示されるようにＲＢ４−７に接続される。ＳＶ１０２−１０８で実行されるＶＭ１２−１８はｖＳＷ２２−２８を介して、接続されているＲＢ４−７にデータを転送する。なお、ひとつのＳＶで実行されるＶＭが複数であってもよい。
【００１５】
ＲＢ１−７は、ＳＶ１０１−１０８間のデータ転送の経路をスイッチングして切り替える中継装置である。ＲＢ１−３がＥＯＲ（Ｅｎｄ  ｏｆ  Ｒｏｗ）スイッチであり、ＲＢ４−７がＴＯＲ（Ｔｏｐ  ｏｆ  Ｒａｃｋ）スイッチである。ＲＢ１−７は、図２のネットワーク１０００内に示される関係で互いに接続されている。なお、ＲＢ１−７の接続関係に、図２に示される以外の他の接続関係を適用してもよい。
【００１６】
ＲＢ間の接続がリンクとよばれ、リンクにはリンクＩＤが付与される。リンクには、リンクコストとよばれるパラメータが設定される。
【００１７】
ＲＢ１―７のうち、ネットワーク１０００に対する外部装置（例えばＳＶ１０１−１０８）に接続されるＲＢがエッジルーティングブリッジとよばれることがある（以下、エッジルーティングブリッジをエッジＲＢと表す）。ネットワーク１０００において、ＲＢ４−７がエッジＲＢである。エッジＲＢ間の接続が経路とよばれ、経路ＩＤが付与される。経路は複数のリンクを含むことがあり、経路に含まれる全てのリンクのリンクコストの合計値が総リンクコストとよばれるパラメータとして経路に設定される。ＲＢ１―７の各々が互いに接続されることによりＳＶ１０１−１０８間に複数の経路が形成される。複数の経路のうちで何れの経路がＳＶ１０１−１０８間のデータ転送の経路として選択されるかは、経路に設定された総リンクコストの値を比較することによって決定される。例えば、総リンクコストの値が小さい経路が、データ転送の経路として選択される。
【００１８】
図３に、実施例が適用されたルーティングブリッジのハードウェア構成が示される。ＲＢ１−７の各々は、ＣＰＵ３００、メモリ３０１、記憶装置３０２、送受信インターフェース（データ通信用）３０３、送受信インターフェース（管理用）３０４及びそれらが接続されたバス３０５を有する中継装置である。ＣＰＵ３００は、処理を実行するための１以上のプロセッサを含んでいる。メモリ３０１は例えば、ＲＡＭである。記憶装置３０２は例えば、ＲＯＭやフラッシュメモリ等の不揮発性メモリ、又はＨＤＤ（ＨａｒｄＤｉｓｋ Ｄｒｉｖｅ）等の磁気ディスク装置である。送受信インターフェース（データ通信用）３０３は、外部装置に対してデータの送受信をするためのインターフェースである。送受信インターフェース（管理用）３０４は、管理用のデータを送受信するためのインターフェースである。メモリ３０１に、ＲＢ１−７の動作を制御するための処理が記述されたプログラム、及び図１０に示される処理が記述されたプログラムが格納される。ＣＰＵ３００によってメモリ３０１に格納されたプログラムが実行されることにより、ＲＢ１−７は図４、９及び１１に示される各機能ブロックとして機能する。
【００１９】
図４に、実施例が適用されたルーティングブリッジの機能ブロックが示される。ＲＢ１−７は、メモリ３０１に格納されたプログラムがＣＰＵ３００によって実行されることにより、リンク情報通信部３１０及びコスト情報生成部３１１として機能する。
【００２０】
ＲＢ１−７は、少なくとも自装置に接続されているリンクのリンクＩＤ及びリンクコストをメモリ３０１に予め格納しているとする。なお、リンクＩＤ及びリンクコストはＲＢ１−７の外部にあるＳＶ１００から設定してもよい。リンクＩＤにはリンク両端のＲＢのＩＤが対応付けられているとする。ＲＢ４−７は、データ転送のログ情報や自装置に接続されているＳＶ及びＶＭを検出することによって、自装置がエッジＲＢであること及び接続されているＳＶ及びＶＭを判定しているとする。
【００２１】
ＲＢ１−７のリンク情報通信部３１０はメモリ３０１に予め格納されているリンクＩＤ、リンク両端のＲＢのＩＤ及びリンクコストを含むリンク情報を、他のＲＢにブロードキャストする。リンク情報通信部３１０は、他のＲＢからブロードキャストされたリンクＩＤ、リンク両端のＲＢのＩＤ及びリンクコストを含むリンク情報を取得し、取得したリンク情報をメモリ３０１に格納する。以上に説明したリンク情報通信部３１０の処理によって、ＲＢ１−７の各々は、自装置に直接接続されないリンクのリンクＩＤ、リンク両端のＲＢのＩＤ及びリンクコストを含むリンク情報を取得する。なお、リンクＩＤが重複する場合にはＲＢ１−７のうちで代表となるＲＢが決められて、代表となるＲＢが調停することによってリンクＩＤが一意に決められてもよい。
【００２２】
エッジＲＢ４−７のリンク情報通信部３１０は、自装置がエッジＲＢであること及び接続されているＳＶ及びＶＭに関する情報を他のＲＢにブロードキャストする。リンク情報通信部３１０は、他のＲＢからブロードキャストされたエッジＲＢに関する情報を取得することにより、ネットワーク１０００内のエッジＲＢを判定する。
【００２３】
例えば、図２に示されるＲＢ１はＲＢ４と接続されており、ＲＢ１及びＲＢ４を両端とするリンクのリンクＩＤをＬＫ１とする。また、ＲＢ１はＲＢ５とリンクＬＫ２により接続され、ＲＢ１はＲＢ６とリンクＬＫ３により接続され、ＲＢ１はＲＢ７とＬＫ４により接続されているとする。ＲＢ１は、リンクＬＫ１、リンクＬＫ２、リンクＬＫ３及びリンクＬＫ４と接続されているため、リンクＬＫ１、リンクＬＫ２、リンクＬＫ３及びリンクＬＫ４に関するリンク両端のＲＢのＩＤ及びリンクコストがメモリ３０１に予め格納されている。ＲＢ１がＲＢ４−７に対して、リンクＬＫ１、リンクＬＫ２、リンクＬＫ３及びリンクＬＫ４のリンクＩＤ、リンク両端のＲＢのＩＤ及びリンクコストをブロードキャストすることによって、例えば、ＲＢ５はリンクＬＫ１、リンクＬＫ３及びリンクＬＫ４のリンクＩＤ、リンク両端のＲＢのＩＤ及びリンクコストを取得して自装置のメモリ３０１に格納する。
【００２４】
ＲＢ１−７は、転送されるパケットに含まれるＶＭの組み合わせ（送信元ＶＭのＭＡＣアドレス（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ  Ａｄｄｒｅｓｓ）および宛先ＶＭのＭＡＣアドレスの組み合わせ）に基づいて転送データをフローとして特定し、フローに割り当てられた経路をフローに対応付けてメモリ３０１にフォワーディング情報として格納する。
【００２５】
ＲＢ１−７のコスト情報生成部３１１は、メモリ３０１に予め格納されたリンクＩＤ、リンク両端のＲＢのＩＤ及びリンクコストと、他のＲＢから取得したリンクＩＤ、リンク両端のＲＢのＩＤ及びリンクコストと、フォワーディング情報とに基づいて、ネットワーク１０００に含まれるリンクのリンクＩＤ、リンク両端のＲＢのＩＤ及びリンクコストとの対応付けをコスト情報の一部としてメモリ３０１に格納する。ＲＢ１−７のコスト情報生成部３１１は、リンク両端のＲＢのＩＤ、及びエッジＲＢに基づいて、ネットワーク１０００に含まれる経路ＩＤと総リンクコストの対応付けをコスト情報の一部としてメモリ３０１に格納する。以上に説明したコスト情報生成部３１１の処理によって、ＲＢ１−７は、後述する図５及び６に示されるコスト情報をメモリ３０１に格納する。
【００２６】
図５に、実施例が適用されたネットワークのコスト情報の一部が示される。ＲＢ間のリンクを識別するリンクＩＤであるリンクＬＫ１−ＬＫ１２が、リンク両端のＲＢ毎に対応付けられる。例えば、ＲＢ１及びＲＢ４を両端とするリンクに、リンクＩＤとしてＬＫ１が割り当てられる。
【００２７】
リンクＩＤに対応付けて設定されるリンクコストは、リンクの論理的な距離を示すパラメータ値である。リンクの論理的な距離が短いほど、データ転送の効率がよいと判定される。例えば、リンクコストの値が他のリンクに設定されたリンクコストの値よりも小さいリンクはデータ転送の効率がよいと判定されて、データを転送するリンクとして選択される。なお、図５には、リンクＬＫ１−ＬＫ１２の帯域が１０Ｇｂｐｓであるとして、リンクＬＫ１−ＬＫ１２のリンクコストが全て同じ１００である場合が示される。このように、リンクコストを決める場合に、対象とするリンクの帯域が全て同じであれば同じリンクコストを設定してもよい。対象とするリンクの帯域が異なっていたとしても、リンクを同じ割合で選択したい場合には、対象となるリンクに対して同じリンクコストを設定すればよい。なお、実施例はリンクＬＫ１−ＬＫ１２の帯域が１０Ｇｂｐｓの場合に限られない。
【００２８】
図６に、実施例が適用されたネットワークのコスト情報の他の一部が示される。エッジＲＢ間の経路を識別する経路ＩＤであるＰ１−Ｐ９が、経路に含まれる全てのリンクのリンクＩＤと対応付けられる。例えば、リンクＬＫ１及びリンクＬＫ２を含む経路に、経路ＩＤとしてＰ１が割り当てられる。図５を参照すると、リンクＬＫ１に設定されたリンクコストが１００であり、リンクＬＫ２に設定されたリンクコストが１００である。従って、経路Ｐ１に含まれる全てのリンクのリンクコストの合計値が２００となり、経路Ｐ１の総リンクコストが２００に設定される。
【００２９】
図６に示される経路ＩＤに対応付けて設定される総リンクコストは、経路の論理的な距離を示すパラメータ値である。経路の論理的な距離が短いほど、データ転送の効率がよいと判定される。例えば、経路ＩＤに対応付けて設定される総リンクコストの組み合わせにおいて、総リンクコストの値が他の経路の総リンクコストの値よりも小さい経路はデータ転送の効率がよいと判定されて、データを転送する経路として選択される。図６には、ネットワーク１０００内に含まれる経路の一部である経路Ｐ１−Ｐ１０の総リンクコストの組み合わせが代表して示され、経路Ｐ１−Ｐ１０の総リンクコストが同じ２００である例が示される。なお、他の経路については冗長になるため省略するが、同様に、総リンクコストが２００であるとする。
【００３０】
最小となる総リンクコストが設定された経路が複数ある場合には、後述するが、それらの経路が同じ割合で選択されるアルゴリズムが適用される。例えば、ラウンドロビン方式を適用して、選択された回数が最も少ない経路が選択されるようにしてもよい。ここでは、最小となる総リンクコストが設定された経路が複数ある場合に、送信元ＶＭのＭＡＣアドレス及び宛先ＶＭのＭＡＣアドレスを変数としたハッシュ演算によって何れかの経路が選択されるとする。なお、データの転送がパケット単位で行われるため、ラウンドロビン方式を適用した場合に経路の選択がパケット毎に行われてしまい、パケット毎に異なった経路が選択される。従って、ラウンドロビン方式を適用した場合にはパケットの順序が入れ替わる可能性がある。一方で、ハッシュ演算を適用した場合には、異なるパケットでもパケットに含まれる送信元ＶＭのＭＡＣアドレス及び宛先ＶＭのＭＡＣアドレスが同じであれば同じ経路が選択されるため、基本的にはパケットの順序が入れ替わらない。従って、経路の選択にハッシュ演算を用いた場合には、ネットワークの負荷が分散され、かつパケットの順序が保たれる。
【００３１】
なお、図５及び６では、エッジＲＢ４−７を両端とする経路の一部についてコスト情報を示したが、実施例はこれに限定されない。ネットワーク１０００にある他の選択可能な経路についてコスト情報を生成してもよい。また、ＲＢ１−７がコスト情報を生成するのではなく、ＲＢ１−７のうちで代表となるＲＢのコスト情報生成部３１１が他のＲＢからリンク情報を取得することによってコスト情報を作成し、他のＲＢにブロードキャストしてもよい。
【００３２】
図７に、実施例が適用されたルーティングブリッジが有する経路テーブルが示される。例えば、宛先ＭＡＣアドレスが“００−９０−２７−ＢＢ−８６−Ｅ２”のパケットを受け取ると、選択可能な経路の総リンクコストを参照し、複数の経路が選択可能だと判定される。経路テーブルでは、判定された複数の経路に対応する出力インターフェースが“０”及び“１”で識別され、何れかの出力インターフェースにパケットを出力可能であると判定される。上述したように、選択可能な経路が複数ある場合には、ＭＡＣアドレスに基づくハッシュ演算が適用されることで経路が決定され、“０”及び“１”の何れか一方の出力インターフェースが選択されてパケットが送信される。
【００３３】
図８に、実施例が適用された情報処理システムで処理されるパケットの例が示される。
図８Ａに実施例が適用された情報処理システムで処理されるパケットの第１構成例が示され、図８Ｂに実施例が適用された情報処理システムで処理されるパケットの第２構成例が示される。ＳＶ１０１−１０８はデータを送信する場合に、図８Ａに示されるように、ペイロード、送信元ＶＭのＭＡＣアドレス、及び宛先ＶＭのＭＡＣアドレスを少なくとも含むパケットを送信する。ＲＢ１−７は、図８Ａに示されたパケットを受信すると、宛先ＶＭが接続されているエッジＲＢを、送信元ＶＭのＭＡＣアドレス及び宛先ＶＭのＭＡＣアドレスと、メモリ３０１に格納されたコスト情報及びフォワーディング情報とに基づいて特定する。宛先ＶＭが接続されているエッジＲＢが特定されると、送信元ＶＭに接続するＲＢのＩＤ及び宛先ＶＭに接続するＲＢのＩＤを図８Ａに示されるパケットに付加する。さらに、後述する処理によりデータ転送の経路を選択すると、自装置のＭＡＣアドレスを送信元ＲＢのＭＡＣアドレスとし、データ転送の経路において次の宛先となるＲＢのＭＡＣアドレスを宛先ＲＢのＭＡＣアドレスとして図８Ａに示されるデータに付加する。以上に説明した処理により、ＲＢ１−７は、受信したパケットを図８Ｂに示されるパケットとしてカプセル化して、次の宛先となるＲＢに転送する。ＲＢ間のデータ転送は、後述するデータ転送の経路選択に従って、図８Ｂに示される送信元ＲＢのＭＡＣアドレス及び宛先ＲＢのＭＡＣアドレスを書き変えながら実行される。宛先ＶＭに接続されたＲＢがデータを受信すると、次の宛先となる転送先が宛先ＶＭであるため、図８Ｂに示されるパケットのカプセル化を解除して、図８Ａに示されるパケットの構成に変換してから宛先ＶＭに転送する。なお、ＳＶ１０１−１０８及びＲＢ１−７が、宛先のＭＡＣアドレスを予め格納していない場合には、ＡＲＰ（Ａｄｄｒｅｓｓ  Ｒｅｓｏｌｕｔｉｏｎ  Ｐｒｏｔｏｃｏｌ）を用いて、宛先のＭＡＣアドレスを取得すればよい。
【００３４】
図９に、実施例が適用されたルーティングブリッジの他の機能ブロックが示される。ＲＢ１−７の各々は、メモリ３０１に格納されたプログラムがＣＰＵ３００によって実行されることにより、経路選択部３１２、及びパケット生成部３１３として機能する。各機能ブロックにより実行される処理を、図１０に示される処理に対応させて後述する。
【００３５】
図１０に、実施例が適用されたルーティングブリッジで実行される処理が示される。ＲＢ１−７において、メモリ３０１に格納されたプログラムにある処理がＣＰＵ３００によって実行されることにより、図１０に示された各処理を実行される。
【００３６】
図５及び６に示されるコスト情報を作成（更新）する処理３２０が、コスト情報生成部３１１によって実行される。コスト情報を作成する処理の例は上述したとおりである。受信データがあるか否かを判定する処理３２１が、ＲＢ１−７によって実行される。受信データがない場合には、処理３２９に移る。受信データがある場合には、処理３２２に移る。
【００３７】
受信したパケットに含まれる宛先ＶＭのＭＡＣアドレスを判定する処理３２２が、経路選択部３１２によって実行される。判定された宛先ＶＭのＭＡＣアドレスに基づいて経路（出力インターフェース）を選択する処理３２３が、経路選択部３１２によって実行される。図７に示される経路テーブルにおいて、判定された宛先ＶＭのＭＡＣアドレスがすでに出力インターフェースに対応付けられていれば、対応付けに従って経路（出力インターフェース）が選択される。図７に示される経路テーブルにおいて、判定された宛先ＶＭのＭＡＣアドレスが出力インターフェースに対応付けられていなければ、図６に示されるコスト情報に従って、宛先ＶＭまでに至る選択可能な経路のうち総リンクコストが最小の経路が選択される。処理３２３の結果、選択可能な経路が複数あるか否かを判定する処理３２４が、経路選択部３１２によって実行される。選択可能な経路が複数ない場合には処理３２６に移る。経路の候補が複数ある場合には、処理３２５に移る。
【００３８】
送信元アドレス及び宛先アドレスに基づく演算により経路を選択する処理３２５が、経路選択部３１２によって実行される。例えば、送信元ＶＭのＭＡＣアドレス及び宛先ＶＭのＭＡＣアドレスを変数としたハッシュ演算を実行し、選択可能な経路のうち得られたハッシュ値に対応する経路が選択される。なお、ハッシュ演算に用いられるハッシュ係数は、メモリ３０１に格納されている。
【００３９】
宛先ＭＡＣアドレスと出力インターフェースとの対応付けを更新する処理３２６が、経路選択部３１２によって実行される。処理３２５で選択された経路に対応する出力インターフェースと宛先ＶＭのＭＡＣアドレスとの対応付けが、図７に示される経路テーブルにおいて更新される。この更新された経路テーブルは上述したフォワーディング情報と合わせて、データ転送のログ情報としてメモリ３０１にて格納される。
【００４０】
選択された経路に基づきパケットを生成する処理３２７が、パケット生成部３１３によって実行される。パケットの構成及びパケットの生成方法は、上述した図８Ａ及び８Ｂに関する説明のとおりである。次いで、選択された経路に対応する出力インターフェースからパケットが送信される処理３２８が実行される。次いで、通信を継続するか否かの処理３２９が、ＲＢ１-７によって実行される。通信を継続する場合には処理３２０に戻り、通信を継続させない場合には処理を終える。
【００４１】
図１１に、実施例が適用されたルーティングブリッジの他の機能ブロックが示される。ＲＢ１−７の各々は、メモリ３０１に格納されたプログラムがＣＰＵ３００によって実行されることにより、問い合わせ受付部３１４、転送情報モニタ部３１５、及び演算情報通信部３１６として機能する。問い合わせ受付部３１４は、ネットワーク１０００の輻輳を検出するための問い合わせをＳＶ１００から受け付ける。さらに、問い合わせ受付部３１４は、経路を選択するための演算に関するパラメータ（例えば、ハッシュ係数）の問い合わせをＳＶ１００から受け付ける。転送情報モニタ部３１５は、問い合わせ受付部３１４が問い合わせを受け付けると、図３に示される送受信インターフェース３０３及び３０４に含まれる入力バッファ又は出力バッファに格納されるデータの量あるいは入力バッファ又は出力バッファの空き容量をモニタして、モニタした結果を転送情報としてＳＶ１００に送信する。演算情報通信部３１６は、問い合わせ受付部３１４が問い合わせを受け付けると、メモリ３０１に格納されているハッシュ係数を演算情報としてＳＶ１００に送信する。
【００４２】
図１２に、実施例が適用された管理サーバ（ＳＶ１００）のハードウェア構成が示される。ＳＶ１００は、ＣＰＵ４００、メモリ４０１、記憶装置４０２、送受信インターフェース（データ通信用）４０３、送受信インターフェース（管理用）４０４及びそれらが接続されたバス４０５を有するコンピュータである。ＣＰＵ４００は、処理を実行するための１以上のプロセッサを含んでいる。メモリ４０１は例えば、ＲＡＭである。記憶装置４０２は例えば、ＲＯＭやフラッシュメモリ等の不揮発性メモリ、又はＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）等の磁気ディスク装置である。送受信インターフェース（データ通信用）４０３は、外部装置に対してデータの送受信をするためのインターフェースである。送受信インターフェース（管理用）４０４は、管理用のデータを送受信するためのインターフェースである。メモリ４０１に、ＳＶ１００の動作を制御するための処理が記述されたプログラム、図１４、１６又は１７に示される処理が記述されたプログラム、及び１９に示される処理が記述されたプログラムが格納される。ＣＰＵ４００によってメモリ４０１に格納されたプログラムが実行されることによりＳＶ１００の動作が制御され、図１３及び１８に示される各機能ブロックとして機能する。
【００４３】
図１３に、実施例が適用された管理サーバ（ＳＶ１００）で実行される機能ブロックが示される。ＳＶ１００は、メモリ４０１に格納されたプログラムがＣＰＵ４００によって実行されることにより、経路情報取得部４１０、サンプリング情報取得部４１１、変換アドレス抽出部４１２、及び演算情報取得部４１３として機能する。各機能ブロックにより実行される処理を、図１４、１６及び１７に示される処理に対応させて後述する。
【００４４】
図１４に、実施例が適用された管理サーバ（ＳＶ１００）で実行される処理が示される。図１４に示される処理は、ＳＶ１００が図１５に示されるアドレス変換情報を取得するための処理である。
【００４５】
各ＲＢ１−７から経路情報を取得する処理４２０が、経路情報取得部４１０によって実行される。処理４２０により、ＳＶ１００は各ＲＢ１−７から、経路情報として上述したログ情報を取得する。ログ情報は、上述したように経路テーブル及びフォワーディング情報を含むため、ＳＶ１００は、送信元ＶＭのＭＡＣアドレス及び宛先ＶＭのＭＡＣアドレスの組み合わせと、ハッシュ演算によりその組み合わせに対して割り当てられた経路との対応付けを取得する。従って、ＲＢ１−７で実行されるハッシュ演算の詳細を知らなくても、どのＭＡＣアドレスをパケットに設定すればハッシュ演算によってどの経路が選択されるが判定可能となる。
【００４６】
各ＳＶ１０１−１０８からサンプリング情報を取得する処理４２１が、サンプリング情報取得部４１１によって実行される。サンプリング情報には、送信元ＶＭのＭＡＣアドレス、宛先ＶＭのＭＡＣアドレス、送信元ＶＭのＩＰアドレス（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ  Ａｄｄｒｅｓｓ）、宛先ＶＭのＩＰアドレス、及び送信対象となるペイロードを少なくとも含む。また、宛先となるＲＢのＭＡＣアドレス又は送信元となるＲＢのＭＡＣアドレスを少なくとも含む。サンプリング情報は、ｖＳＷ２１−２８が、対応するＶＭ１１−１８から転送されるデータをサンプリングしてＳＶ１００に転送した情報である。  サンプリング情報から送信元アドレス及び宛先アドレスの組み合わせを選択する処理４２２が、変換アドレス抽出部４１２によって実行される。処理４２２によって、ＳＶ１００は、ネットワーク１０００を介してデータの転送を実行している送信元ＶＭ及び宛先ＶＭの組み合わせを選択する。なお、処理４２０は、処理４２１又は処理４２２に後に実行されてもよい。
【００４７】
変換アドレスの候補を抽出する処理４２３が、変換アドレス抽出部４１２によって実行される。処理４２２において、サンプリング情報に基づいて選択された送信元ＶＭのＭＡＣアドレス及び宛先ＶＭのＭＡＣアドレスがネットワーク１０００に対して、選択されるエッジＲＢが少なくとも同じでかつ異なる経路が選択された履歴のあるＭＡＣアドレスの組み合わせを、処理４２０で取得したログ情報に基づいて判定する。判定されたＭＡＣアドレスの組み合わせが、選択された送信元ＶＭのＭＡＣアドレス及び宛先ＶＭのＭＡＣアドレスに対するアドレス変換の候補となる。例えば、選択された送信元ＶＭから宛先ＶＭへのデータ転送が、輻輳が発生した経路を介して実行されている場合に、判定されたＭＡＣアドレスの組み合わせを使用してアドレス変換を行うと、輻輳が発生している経路を迂回し、エッジＲＢまで転送されることが保たれているためデータが宛先ＶＭまで送られる。
【００４８】
変換アドレスの候補をアドレス変換情報として格納する処理４２４が、変換アドレス抽出部４１２によって実行される。処理４２４により、変換アドレスが、メモリ４０１に格納される。ネットワーク１０００に輻輳が発生する前に図１４に示される処理が実行されれば、候補となる変換アドレスが事前にメモリ４０１に格納されることとなる。なお、アドレス変換情報は図１５に示される情報であり、詳細は後述する。
【００４９】
サンプリング情報に他のアドレスの組み合わせがあるか否かを判定する処理４２５が、変換アドレス抽出部４１２によって実行される。処理４２５においてサンプリング情報に他のアドレスの組み合わせがあると判定されると、処理４２２に移る。処理４２５によって、ネットワーク１０００を介してデータ転送を実行している送信元ＶＭ及び宛先ＶＭの組み合わせに対して変換アドレスの候補が抽出されていない場合に、変換アドレスの候補を取得するよう処理が継続される。以上に説明したように、図１４に示される処理が実行されることにより、ＳＶ１００は図１５に示されるアドレス変換情報を取得する。
【００５０】
図１５に、実施例によるアドレス変換情報が示される。アドレス変換情報は、図１４に示される処理、後述する図１６、又は図１７に示される処理の結果としてメモリ４０１に格納される。例えば、ＩＤが“１”及び“２”で識別されるＭＡＣアドレスの組み合わせでは、 “００−９０−２７−ＡＡ−７４−Ｅ０”及び“００−９０−２７−ＡＡ−９０−Ｅ０”の組み合わせに対する変換アドレスの候補が“００−９０−２７−ＢＢ−８６−Ｅ２”及び“００−９０−２７−ＢＢ−２０−Ｅ２”の組み合わせであることが例示されている。上述したように、変換アドレスの候補は変換前のアドレスに対して、ネットワーク１０００においてエッジＲＢが少なくとも同じでかつ異なる経路が選択されるＭＡＣアドレスの組み合わせである。従って、輻輳が発生した場合に、図１５に示される変換アドレスの候補にＭＡＣアドレスを変換することにより、ＲＢ１−７に設定されたアルゴリズム（総リンクコスト及びハッシュ演算による経路選択）を変更しなくても、輻輳が発生している経路を迂回させられるので、輻輳が回復する。
【００５１】
図１６に、実施例が適用された管理サーバで実行される他の処理が示される。図１６に示される処理は、ＳＶ１００が図１５に示されるアドレス変換情報を取得するための他の例である。
【００５２】
演算情報を取得する処理４３０が、演算情報取得部４１３によって実行される。処理４３０によって、ＳＶ１００はデータ転送の経路選択に適用される演算情報をＲＢ１−７から取得する。例えば、ＳＶ１００はデータ転送の経路選択に適用されるハッシュ演算におけるハッシュ係数をＲＢ１−７から取得する。
【００５３】
サーバのＭＡＣアドレスの組み合わせを選択する処理４３１が、変換アドレス抽出部４１２によって実行される。処理４３１によって、ＳＶ１０１−１０８において実行される仮想マシンの組み合わせが選択される。例えば、ＳＶ１０１−１０８から取得するサンプリング情報により、送信元ＶＭのＭＡＣアドレス及び宛先ＶＭのＭＡＣアドレスの組み合わせを取得して、仮想マシンの組み合わせを選択すればよい。
【００５４】
処理４３１で選択されたＭＡＣアドレスの組み合わせに対して変換アドレスが割り当て済みか否かを判定する処理４３２が、変換アドレス抽出部４１２によって実行される。メモリ４０１を参照するなどして、変換アドレスが割り当て済みの場合には処理４３１に移る。変換アドレスの割り当てが済んでいない場合には、処理４３３に移る。選択されたＭＡＣアドレスの組み合わせに割り当て可能な経路を抽出する処理４３３が、変換アドレス抽出部４１２によって実行される。処理４３３によって、選択されたＭＡＣアドレスの組み合わせに対応するエッジＲＢを介した経路が抽出される。
【００５５】
処理４３３で抽出された経路に対して、変換アドレスを抽出・格納する処理４３４が、変換アドレス抽出部４１２によって実行される。処理４３０によってＳＶ１００はＲＢ１−７が経路選択に適用されるハッシュ係数を取得している。ＳＶ１００は取得したハッシュ係数に基づき、どのようなＭＡＣアドレスをＲＢ１−７のハッシュ演算の変数とすれば処理４３３で抽出された経路が選択されるかを算出して、算出されたＭＡＣアドレスを変換アドレスとして抽出する。抽出された変換アドレスは、図１５のアドレス変換情報としてメモリ４０１に格納される。
【００５６】
経路に変換アドレスの割り当てが一定数以上あるか否かを判定する処理４３５が、変換アドレス抽出部４１２によって実行される。一定数以上でない場合には処理４３１に移り、一定数以上であれば処理を終える。一つの経路に複数の変換アドレスの候補を割り当てておくことで、特定の経路に割り当てられる仮想マシンの組み合わせを複数にできる。
【００５７】
図１７に、実施例が適用された管理サーバ（ＳＶ１００）で実行される他の処理が示される。図１４及び１６で示される処理と同じ処理については、同じ符号が付されおり、説明を省略する。図１７に示される処理において、まず図１４に示された処理を実行することによりアドレス変換情報を取得する。取得したアドレス変換情報に基づいて、経路に変換アドレスの割り当てが一定数以上あるか否かを判定する処理４４０が実行される。一定数以上でない場合には、図１６に示される処理が実行される。ハッシュ係数の解析に基づく変換アドレスの抽出をすることは、ログ情報に基づく変換アドレスの抽出をするよりもＳＶ１００の処理負荷が大きくなる。従って、図１４に示されるようにログ情報を使用して変換アドレスの抽出をした後に、経路の割り当てられる変換アドレスが所定数よりも少なければ、図１６に示されるようにハッシュ係数の解析に基づく変換アドレスの抽出を実行することで、ＳＶ１００の処理負荷を抑えつつ、効率よく変換アドレスが抽出される。
【００５８】
図１８に、実施例が適用された管理サーバ（ＳＶ１００）の他の機能ブロックが示される。ＳＶ１００は、メモリ４０１に格納されたプログラムがＣＰＵ４００によって実行されることにより、サンプリング情報取得部４１１、転送情報取得部４１４、輻輳判定部４１５、トラフィック解析部４１６、輻輳フロー判定部４１７、代替経路選択部４１８、及びアドレス設定部４１９として機能する。各機能ブロックにより実行される処理を、図１９に示される処理に対応させて後述する。
【００５９】
図１９に、実施例が適用された管理サーバで実行される他の処理が示される。変換アドレスを抽出する処理４５０が、ＳＶ１００によって実行される。処理４５０には、図１４、１６及び１７に示される処理を適用すればよい。なお、処理４５０は処理４５１の後に実行されてもよい。
【００６０】
ネットワーク１０００に輻輳が発生しているか否かを判定する処理４５１が、ＳＶ１００によって実行される。例えば、転送情報取得部４１４が、ＲＢ１−７の送受信インターフェースに含まれる入力バッファ又は出力バッファに格納されているデータ量、あるいは入力バッファ又は出力バッファの空き容量に関する情報を転送情報として取得して、メモリ４０１に格納する。輻輳判定部４１５は、取得した転送情報に基づいて、ＲＢ１−７の入力バッファ又は出力バッファに格納されているデータ量が所定量を超えるか否か、あるいは、入力バッファ又は出力バッファの空き容量が所定量を下回るか否かを判定することにより、ネットワーク１０００に輻輳が発生しているか否かを判定する。例えば、輻輳判定部４１５は、ＲＢ３から取得した転送情報により、ＲＢ５からのデータを格納するＲＢ３の入力バッファのデータ量が所定値を超えたこと検出すると、ＲＢ３及びＲＢ５の間の接続であるリンクＬＫ１０に輻輳が発生していると判定する。なお、輻輳が発生する要因は、リンクの実際の帯域以上のデータ転送要求が発生している場合である。従って、転送データのトラフィック量が多い場合はもちろん、あるスイッチにおいて転送データのトラフィック量が小さくかつ入力バッファ及び出力バッファの空き容量が十分な場合でも、経路上の別のスイッチのリンク帯域がその転送データに比べて小さいと、輻輳が発生する可能性がある。
【００６１】
処理４５１により輻輳が発生していると判定されると、輻輳が発生している経路を介してデータを転送しているフロー（送信元アドレス及び宛先アドレスの組み合わせ）を特定する処理４５２が、ＳＶ１００によって実行される。例えば、トラフィック解析部４１６は、サンプリング情報取得部４１１がサーバＳＶ１０１−１０８から取得したサンプリング情報に基づいて、データのトラフィック量（流量）を送信元ＶＭ及び宛先ＶＭの組み合わせ毎に解析する。例えば、トラフィック解析部４１６は、サンプリング情報に含まれる送信元ＶＭのＭＡＣアドレス及び宛先ＶＭのＭＡＣアドレスに基づいて、送信元ＶＭ及び宛先ＶＭの組み合わせを特定する。特定された送信元ＶＭ及び宛先ＶＭの組み合わせ毎に単位時間当たりのデータ量を解析することによりトラフィック量を取得する。なお、トラフィック量の解析によってＳＶ１００の処理負荷が増えるため、輻輳が発生していると判定されたことをトリガとして、トラフィック量の解析が実行されてもよい。輻輳フロー判定部４１７は、送信元ＶＭ及び宛先ＶＭの組み合わせ毎トラフィック量及びＲＢ１−７から取得した経路テーブルに基づいて、輻輳が発生しているリンクを介してデータ転送を実行しているフローを特定する。処理４５２により特定されたフローに対して、代替経路を選択する処理４５３が、ＳＶ１００によって実行される。例えば、代替経路選択部４１８は、特定されたフローの送信元ＶＭのＭＡＣアドレス及び宛先ＶＭのＭＡＣアドレスに基づいてエッジＲＢを特定し、輻輳が発生していない経路から、代替可能な経路を選択する。
【００６２】
選択された代替経路に対応する変換アドレスを選択する処理４５４が、アドレス設定部４１９によって実行される。変換アドレスは処理４５０によって抽出したアドレス変換情報に基づいて選択すればよい。例えば、アドレス変換情報にある送信元ＶＭのＭＡＣアドレス及び宛先ＶＭのＭＡＣアドレスの組み合わせが通信を行っていないと判定されれば、変換アドレスとして当該送信元ＶＭのＭＡＣアドレス及び宛先ＶＭのＭＡＣアドレスの組み合わせが選択可能となる。
【００６３】
輻輳が発生している経路を介してデータ転送を実行しているサーバに変換アドレスを設定する処理４５５が、アドレス設定部４１９によって実行される。処理４５５によって、ＳＶ１０１−１０８のうちの該当するサーバのメモリ５０１に変換アドレスが格納される。なお、アドレス変換情報がＳＶ１０１−１０８のうちの該当するサーバのメモリ５０１に格納されていれば、ＳＶ１００がダウンしても、輻輳が発生した経路を迂回させた通信が継続可能となる。その後、ネットワーク１０００の監視を継続するか否かを判定する処理４５６が、ＳＶ１００によって実行される。
【００６４】
図２０に、実施例が適用されたサーバ（ＳＶ１０１−１０８）のハードウェア構成が示される。ＳＶ１０１−１０８の各々は、ＣＰＵ５００、メモリ５０１、記憶装置５０２、送受信インターフェース（データ通信用）５０３、送受信インターフェース（管理用）５０４及びそれらが接続されたバス５０５を有するコンピュータである。ＣＰＵ５００は、処理を実行するための１以上のプロセッサを含んでいる。メモリ５０１は例えば、ＲＡＭである。記憶装置５０２は例えば、ＲＯＭやフラッシュメモリ等の不揮発性メモリ、又はＨＤＤ（ＨａｒｄＤｉｓｋ Ｄｒｉｖｅ）等の磁気ディスク装置である。送受信インターフェース（データ通信用）５０３は、外部装置に対してデータの送受信をするためのインターフェースである。送受信インターフェース（管理用）５０４は、管理用のデータを送受信するためのインターフェースである。メモリ５０１に、ＳＶ１０１−１０８の動作を制御するための処理が記述されたプログラム、及び図２３−２６に示される処理が記述されたプログラムが格納される。ＣＰＵ５００によってメモリ５０１に格納されたプログラムが実行されることによりＳＶ１０１−１０８の動作が制御され、ＳＶ１０１−１０８は図２１に示される各機能ブロックとして機能する。
【００６５】
図２１に、実施例が適用されたサーバ（ＳＶ１０１−１０８）の機能ブロックが示される。ＳＶ１０１−１０８は、メモリ５０１に格納されたプログラムがＣＰＵ５００によって実行されることにより、ハイパーバイザ５１０、仮想マシン５１１−５１３、仮想スイッチ５１４、及びアドレス変換部５１５として機能する。ハイパーバイザ５１０は、自サーバ全体の管理を行う機能を有する。また、図２０に示されるネットワークインターフェースに対する仮想アドレスの割り当てや仮想マシン５１１−５１３の移動（ライブマイグレーション）を行う機能を有する。仮想マシン５１１−５１３は上述したＶＭ１１−１８などに対応し、コンピュータの動作をエミュレートするソフトウェアである。仮想スイッチ５１４はｖＳＷ２１−２８などに対応し、仮想マシン５１１−５１３とネットワークインターフェースの間のデータ転送を、例えば図２２に示される経路テーブルに従って制御する機能を有する。アドレス変換部５１５は、ＳＶ１００によって設定された変換アドレスに基づいて、仮想スイッチにおいてパケット内に付与されるアドレスを変換する。
【００６６】
図２２に、実施例が適用されたサーバ（ＳＶ１０１−１０８）の仮想スイッチが有する経路テーブルが示される。経路テーブルは、送信元ＭＡＣアドレス又は宛先ＭＡＣアドレスに基づき、ネットワークインターフェースと仮想マシンと対応づけるための情報である。例えば、宛先ＭＡＣアドレス“００−９０−２７−ＡＡ−７４−Ｅ０”が、“ａ”で識別される出力インターフェースに対応付けられている。
【００６７】
図２３に、実施例が適用されたサーバ（ＳＶ１０１−１０８）の仮想スイッチで実行される送信処理が示される。処理５２０により送信データがあると判定されるとアドレス変換が必要か否かを判定する処理５２１が実行される。データを送信するＶＭに割り当てられたＭＡＣアドレスが、ＳＶ１００から設定された変換アドレスに変換させるＭＡＣアドレスだと判定されると、アドレス変換部５１５が処理５２２を実行することによりパケット内に付与されるアドレスが変換されて、処理５２３に移る。処理５２３により、送信データに基づくパケットに処理５２１及び５２２に基づくＭＡＣアドレスが付加され、処理５２４によりパケットが送信される。処理５２５では通信を継続するか否かが判定される。
【００６８】
図２４に、実施例が適用されたサーバ（ＳＶ１０１−１０８）の仮想スイッチで実行される受信処理が示される。処理５３０により受信データがあると判定されるとアドレス変換が必要か否かを判定する処理５３１が実行される。パケットに含まれるＭＡＣアドレスが、ＳＶ１００から設定された変換アドレスが適用されたＭＡＣアドレスだと判定されると、アドレス変換部５１５が処理５３２を実行することによりＭＡＣアドレスが変換されて、処理５３３に移る。処理５３３により、処理５３１及び５３２に基づくＭＡＣアドレスに対応するＶＭにパケットが送信される。処理５３４では通信を継続するか否かが判定される。
【００６９】
図２５及び２６に、実施例が適用された情報処理システムの処理の一例が示される。この一例では、ＳＶ１０４からＳＶ１０８へのデータ転送が行われている経路に輻輳が発生した場合を例とする。
【００７０】
図２５に示されるように、ＳＶ１００は、ＲＢ１−７に対してリンクコストを設定する。ＲＢ１−７は設定されたリンクコストに基づき、処理３２０を実行してコスト情報（図５及び６）を作成する。ＳＶ１００は、ＲＢ１−７に対して経路・演算情報の問い合わせを実行する。ＲＢ１−７は問い合わせに対する応答として、送信元ＶＭのＭＡＣアドレス及び宛先ＶＭのＭＡＣアドレスの組み合わせと経路との対応付けを含むログ情報を経路情報として、又は、経路選択に適用されるハッシュ演算に用いられるハッシュ係数を演算情報としてＳＶ１００に通知する。ＳＶ１００は、ＲＢ１−７に対して転送情報の問い合わせを実行する。ＲＢ１−７は問い合わせに対する応答として、ネットワーク１０００内の輻輳状態をＳＶ１００に通知するために、転送情報モニタ部３１５が取得した情報を転送情報として通知する。なお、転送情報の問い合わせは、Ｍａｎａｇｅｍｅｎｔ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｂａｓｅ（ＭＩＢ）情報を取得するプロトコルであるＳｉｍｐｌｅ  Ｎｅｔｗｏｒｋ  Ｍａｎａｇｅｍｅｎｔ  Ｐｒｏｔｏｃｏｌ（ＳＮＭＰ）によって実行されてもよく、ＳＮＭＰによる情報取得は定期的に実行されてもよい。ＳＶ１００は、ＳＶ１０１−１０８に対してサンプリング情報の問い合わせを実行する。なお、ここではＳＶ１０４及びＳＶ１０８に注目して説明する。ＳＶ１０４及びＳＶ１０８は問い合わせに対する応答として、仮想スイッチの有する機能（例えばｓＦｌｏｗ）によって、送信元仮想マシンのＭＡＣアドレス、宛先仮想マシンのＭＡＣアドレス、送信元仮想マシンのＩＰアドレス（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｌ  Ａｄｄｒｅｓｓ）、宛先仮想マシンのＩＰアドレス、送信対象となるデータ、及び宛先となるＲＢのＭＡＣアドレス又は送信元となるＲＢのＭＡＣアドレスを少なくとも含むサンプリング情報をＳＶ１００に通知する。なお、サンプリング情報の問い合わせは定期的に実行されてもよい。ＳＶ１００は、図１４、１６又は１７に示された処理によって変換アドレスを抽出し、メモリ５０１に格納させる。なお、ＳＶ１０４及びＳＶ１０８は、ＲＢ５、ＲＢ２及びＲＢ７を経由してデータ転送をしているとする。
【００７１】
図２６に示されるように、ＳＶ１００は、ＲＢ１−７に対してあらためて、転送情報の問い合わせを実行する。ここで、ＲＢ１−７の何れかの応答に、ＲＢ２に接続されるリンクに輻輳が発生していることを示す情報が含まれているとする。この応答結果に基づいて、ＳＶ１００は図１９に示される処理を実行することにより、ＲＢ２に接続されるリンクの輻輳を検出し、代替経路としてＲＢ５、ＲＢ３及びＲＢ７を経由する経路を選択する。ＳＶ１００は、ＲＢ１−７がＳＶ１０４からＳＶ１０８へのデータ転送を中継する場合にＲＢ５、ＲＢ３及びＲＢ７を経由する経路が選択されるような変換アドレスを選択して、変換アドレスをＳＶ１０４及びＳＶ１０８に設定する。ＳＶ１０４は変換アドレスが設定されたため、データを送信する場合にパケットに含めるＭＡＣアドレスを、割り当てられたＭＡＣアドレスからＳＶ１００によって設定されたＭＡＣアドレスに変えて、ＲＢ５にパケットを送信する。ＲＢ５はパケット内に含まれるＭＡＣアドレスに基づきハッシュ演算をすると、ハッシュ演算の結果としてＲＢ３が次の送信先として選択されるアドレスに変換されていることにより、ＲＢ３を次の送信先としてデータを図８Ｂのようにカプセル化してパケットを送信する。その後、ＲＢ３はパケットをＲＢ７に送信し、ＲＢ７は次の宛先がＳＶ１０８であると判定してＳＶ１０８にパケットを送る。ＳＶ１０８は受け取ったパケットにあるＭＡＣアドレスがＳＶ１００に設定された変換対象のＭＡＣアドレスであると判定してＭＡＣアドレスを変換する。ＳＶ１０８は変換後のＭＡＣアドレスに対応する仮想マシンにパケットを送る。なお、ＳＶ１００が変換するＭＡＣアドレスは、ＲＢ１−７がハッシュ演算をした際に、エッジＲＢが変更されずに経路が変更されていればよいため、パケットに含まれる送信元ＶＭのＭＡＣアドレス、宛先ＶＭのＭＡＣアドレス、又は、送信元ＶＭのＭＡＣアドレス及び宛先ＶＭのＭＡＣアドレスの両方の何れを対象としてもよい。また、実施例はハッシュ演算を例に説明したが、経路を選択するためのアルゴリズムはハッシュ演算に限定されない。ハッシュ演算とは異なるアルゴリズムであっても、送信元ＶＭのＭＡＣアドレス及び宛先ＶＭのＭＡＣアドレスに基づいて経路が決められるアルゴリズムであれば、そのアルゴリズムに基づいて上記に示した処理を実行して、宛先が変更されずに他の経路が選択されるようにアドレスを変換すればよい。
【００７２】
ところで、複数の経路がランダムに選択されたり、又はラウンドロビン方式が適用されることによって複数の経路が同じ割合となるように選択される場合に、送信されるデータフロー（特定のＶＭ−ＶＭ間に流れる一連のデータの集合）が分割されてパケット単位で送信されると、パケット毎に異なる経路が割り当てられる。パケット毎に異なる経路が割り当てられると宛先までの経路がパケット毎に異なってしまうため、各経路の通信時間に差があると、宛先において受け取られるパケットの順序が送信した順序とは異なってしまう可能性がある。
【００７３】
なお、送信されるデータフローがパケット単位に分割されても送信元及び宛先が同じであれば各パケットに含まれる送信元アドレス及び宛先アドレスは同じになる。そこで、パケットに含まれる送信元アドレス及び宛先アドレスの組み合わせに従って経路が割り当てられれば、各パケットは同じ経路をたどって宛先に送られる。この場合にはパケット順序の逆転が回避されつつ、当該アドレスの組み合わせに合わせて選択される経路が分散されるのでネットワークの負荷が分散される。
【００７４】
しかし、当該アドレスの組み合わせに従って経路が割り当てられていると、ネットワークに輻輳が発生した場合でも、輻輳が発生している経路を介して通信をしている当該アドレスの組み合わせには、輻輳が発生している経路が割り当て続けられることとなり、輻輳が回復されない。
【００７５】
上述の実施例によれば、パケット内のアドレスに基づく演算により経路が選択されるネットワークに輻輳が起きると、宛先が変更されないようにパケット内のアドレスが変更されることで、経路を選択するための演算のアルゴリズムを変更することなく輻輳が発生した経路を迂回させて、輻輳を回復させる。
【００７６】
また、輻輳が発生した経路を迂回させるために、ＲＢ１−７自体の設定を変更することを検討する。例えば、受信したパケットに含まれる送信元アドレス及び宛先アドレスの組み合わせに対して経路を固定化させるような設定をＲＢ１−７自体に適用させた場合、経路変更の要求がある度にＲＢ１−７全てに対して特定の経路を選択させるための設定を行う必要が生じる。また、サーバの台数やサーバ内で実行される仮想マシンの個数が増えた場合には、その数に依存した設定の変更が生じる可能性があり、現実的な運用が困難になる。また、仮想マシンがライブマイグレーションにより他のサーバに移動した場合に、仮想マシンのＭＡＣアドレスが変わらなくても対応するエッジＲＢが変わってしまう場合があり、その場合にもＲＢ１−７全てに対して特定の経路を選択させるための設定をやり直す必要が生じる。
【００７７】
実施例によれば、サーバ側のアドレス変換によって特定の経路への変更が可能となる。通信負荷を分散させるためにリンクコストなどの分散制御プロトコルを導入した設計思想のネットワークにおいて、パケットの順序が入れ替わらないようにＭＡＣアドレスのハッシュ演算を適用させた中継装置によって通信経路を構築した場合に、分散制御プロトコルの変更や中継装置に対する設定の変更がなくても、サーバ側のアドレス変換でデータ転送を特定の経路に変更をさせることは、ネットワークのリソースを有効利用する点で効果がある。また、仮想マシンのライブマイグレーションが生じる状況や、仮想マシンの個数が増えた場合でも、該当するサーバに対して設定の変更をすればよい。さらに、輻輳が発生していない場合でも、実施例を適用させて帯域を必要とするデータ転送に特定の経路を割り当てることで、分散制御プロトコルの変更や中継装置に対する設定の変更がなくても、予め輻輳が回避される。さらに、実施例を適用させることにより、特定の経路は使用しないようにＭＡＣアドレスの変換をすることで、特定の中継装置の使用が抑制されて、ネットワークが省エネルギー化される。また、実施例を適用させることにより、中継装置に設定された分散制御アルゴリズムに従った経路以外の使用されていない経路にデータ転送が割り当てられるようにＭＡＣアドレスの変換を行えば、データ転送がさらに分散されるので、ネットワークリソースの有効利用が実現される。
【００７８】
以上の実施形態に関し、さらに以下の付記を開示する。
（付記１）パケット内の第１アドレスに基づく演算により第１経路を選択する中継装置と、前記第１経路に輻輳が発生した場合に、前記パケット内のアドレスを、前記第１アドレスから、前記中継装置に前記第１経路と宛先が同じになる第２経路を前記演算により選択させる第２アドレスに変更する処理部を有するコンピュータと有することを特徴とする情報処理システム。
（付記２）前記第２アドレスは、前記演算により選択された経路とパケット内のアドレスとの対応付けを含むログ情報に基づいて設定されるアドレスであることを特徴とする付記１に記載の情報処理システム。
（付記３）前記演算は、前記中継装置が受け取るパケット内のアドレスに基づくハッシュ演算であり、前記中継装置に前記第１経路とは異なる第２経路を前記ハッシュ演算により選択させる第３アドレスが、前記ハッシュ演算のハッシュ係数に基づいて設定されることを特徴とする付記２に記載の情報処理システム。
（付記４）前記第１アドレスは、前記中継装置を含むネットワークに対して送信元となるコンピュータに割り当てられた物理アドレス、宛先となるコンピュータに割り当てられた物理アドレス、又はそれらの物理アドレスの組み合わせであることを特徴とする付記１〜３の何れか１つに記載の情報処理システム。
（付記５）前記演算は、前記中継装置が受け取るパケット内のアドレスに基づくハッシュ演算であり、前記第２アドレスは、前記ハッシュ演算のハッシュ係数に基づいて設定されるアドレスであることを特徴とする付記１に記載の情報処理システム。
（付記６）前記第２アドレスは、前記第１経路に輻輳が発生する前に前記コンピュータに設定されることを特徴とする付記１〜５の何れか１つに記載の情報処理システム。
（付記７）前記中継装置は、選択可能な経路が複数ある場合に、前記演算によって前記選択可能な経路から転送経路を選択することを特徴とする付記１〜６の何れか１つに記載の情報処理システム。
（付記８）前記中継装置は、前記選択可能な複数の経路を、経路を選択するために経路に設定されたパラメータに基づいて選択することを特徴とする付記７に記載の情報処理システム。
（付記９）パケット内の第１アドレスに基づく演算により第１経路を選択し、前記第１経路に輻輳が発生した場合に、前記パケット内のアドレスを、前記第１アドレスから、前記第１経路を選択した中継装置に前記第１経路と宛先が同じになる第２経路を前記演算により選択させる第２アドレスに変更することを特徴とする情報処理方法。
（付記１０）前記第２アドレスは、前記演算により選択された経路とパケット内のアドレスとの対応付けを含むログ情報に基づいて設定されるアドレスであることを特徴とする付記９に記載の情報処理方法。
（付記１１）前記演算は、前記中継装置が受け取るパケット内のアドレスに基づくハッシュ演算であり、前記第１経路とは異なる第２経路を前記ハッシュ演算により選択させる第３アドレスを、前記ハッシュ演算のハッシュ係数に基づいて設定することを特徴とする付記１０に記載の情報処理方法。
（付記１２）前記第１アドレスは、送信元となるコンピュータに割り当てられた物理アドレス、宛先となるコンピュータに割り当てられた物理アドレス、又はそれらの物理アドレスの組み合わせであることを特徴とする付記９〜１１の何れか１つに記載の情報処理方法。
（付記１３）前記演算は、前記中継装置が受け取るパケット内のアドレスに基づくハッシュ演算であり、前記第２アドレスは、前記ハッシュ演算のハッシュ係数に基づいて設定されるアドレスであることを特徴とする付記９に記載の情報処理方法。
（付記１４）前記第２アドレスは、前記第１経路に輻輳が発生する前に設定されることを特徴とする付記９〜１３の何れか１つに記載の情報処理方法。
（付記１５）パケット内の第１アドレスに基づく演算により選択された第１経路に輻輳が発生した場合に、前記パケット内のアドレスを、前記第１アドレスから、前記第１経路を選択した中継装置に前記中継装置に前記第１経路と宛先が同じになる第２経路を前記演算により選択させる第２アドレスに変更する処理部を有するコンピュータを有することを特徴とする情報処理装置。
（付記１６）前記第２アドレスは、前記演算により選択された経路とパケット内のアドレスとの対応付けを含むログ情報に基づいて設定されるアドレスであることを特徴とする付記１５に記載の情報処理装置。
（付記１７）前記演算は、前記中継装置が受け取るパケット内のアドレスに基づくハッシュ演算であり、前記中継装置に前記第１経路とは異なる第２経路を前記ハッシュ演算により選択させる第３アドレスが、前記ハッシュ演算のハッシュ係数に基づいて前記コンピュータに設定されることを特徴とする付記１６に記載の情報処理装置。
（付記１８）前記第１アドレスは、前記中継装置を含むネットワークに対して送信元となるコンピュータに割り当てられた物理アドレス、宛先となるコンピュータに割り当てられた物理アドレス、又はそれらの物理アドレスの組み合わせであることを特徴とする付記１５〜１７の何れか１つに記載の情報処理装置。
（付記１９）前記演算は、前記中継装置が受け取るパケット内のアドレスに基づくハッシュ演算であり、前記第２アドレスは、前記ハッシュ演算のハッシュ係数に基づいて設定されるアドレスであることを特徴とする付記１５に記載の情報処理装置。
（付記２０）パケット内の第１アドレスに基づく演算により選択した第１経路に輻輳が発生した場合に、前記第１経路と宛先が同じになる第２経路を前記演算により選択させる第２アドレスに基づいて前記演算を実行する処理部を有することを特徴とする中継装置。
【符号の説明】
【００７９】
１−７            ルーティングブリッジ
１１−１８        仮想マシン
２１−２８        仮想スイッチ
１００−１０８    サーバ
１０００          ネットワーク
【図１】
2014027339.tif 000003
【図２】
2014027339.tif 000004
【図３】
2014027339.tif 000005
【図４】
2014027339.tif 000006
【図５】
2014027339.tif 000007
【図６】
2014027339.tif 000008
【図７】
2014027339.tif 000009
【図８】
2014027339.tif 000010
【図９】
2014027339.tif 000011
【図１０】
2014027339.tif 000012
【図１１】
2014027339.tif 000013
【図１２】
2014027339.tif 000014
【図１３】
2014027339.tif 000015
【図１４】
2014027339.tif 000016
【図１５】
2014027339.tif 000017
【図１６】
2014027339.tif 000018
【図１７】
2014027339.tif 000019
【図１８】
2014027339.tif 000020
【図１９】
2014027339.tif 000021
【図２０】
2014027339.tif 000022
【図２１】
2014027339.tif 000023
【図２２】
2014027339.tif 000024
【図２３】
2014027339.tif 000025
【図２４】
2014027339.tif 000026
【図２５】
2014027339.tif 000027
【図２６】
2014027339.tif 000028