(57)【要約】  独自に負荷分散機能を持たないスイッチとコントローラの組み合わせや、メーカの違いにより負荷分散機能に互換性がないスイッチとコントローラの組み合わせにおいても、コントローラの負荷分散を可能にする。具体的には、サーバ等のコントローラでネットワーク内のスイッチにパケットの配送経路を動的に設定することでネットワーク内を流れるデータフローを制御するシステムにおいて、スイッチとコントローラの間に設置されたプロキシにより、１つのスイッチからの接続を複数のコントローラに通知しつつ、当該スイッチに対してマスタとなる１つのコントローラを決定し、当該スイッチからの問い合わせメッセージを、マスタとなる１つのコントローラのみに転送する。スイッチからの問い合わせメッセージに対する応答として、経路情報登録メッセージを、マスタとなる１つのコントローラからプロキシに送信する。当該経路情報登録メッセージを、当該プロキシから通知対象となる全てのスイッチに転送する。
2011065268.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークを構成するスイッチと、
スイッチに対して経路を設定するコントローラと、
１つのスイッチからの接続を複数のコントローラに通知し、スイッチからの問い合わせメッセージを、マスタとなる１つのコントローラに転送するプロキシと
を具備する
負荷分散システム。
【請求項２】
請求項１に記載の負荷分散システムであって、
前記プロキシは、１つのスイッチからプロトコルのセキュアチャネル接続を受けると、マスタとなる１つのコントローラを接続先として決定し、前記マスタとなるコントローラに対してセキュアチャネル接続を行い、前記１つのスイッチと前記マスタとなるコントローラとの間の接続を確立する
負荷分散システム。
【請求項３】
請求項１又は２に記載の負荷分散システムであって、
前記プロキシは、スイッチの１つの接続セッションに対して、複数のコントローラからの経路情報登録メッセージを転送する
負荷分散システム。
【請求項４】
請求項１乃至３のいずれか一項に記載の負荷分散システムであって、
前記プロキシは、取り扱い方法の不明なパケットを受信したスイッチからの問い合わせメッセージを、マスタとなる１つのコントローラに転送し、問い合わせメッセージの応答として、前記マスタとなるコントローラから経路情報登録メッセージを受けると、経路情報登録メッセージの転送先となるスイッチを決定し、前記転送先となる全てのスイッチに経路情報登録メッセージを転送する
負荷分散システム。
【請求項５】
請求項１乃至４のいずれか一項に記載の負荷分散システムであって、
前記プロキシは、スイッチとコントローラとの対応関係を記憶し、スイッチとコントローラを監視し、どちらかに障害が発生したことを検出すると、スイッチとコントローラとの対応関係を変更する
負荷分散システム。
【請求項６】
請求項１乃至５のいずれか一項に記載の負荷分散システムで使用されるプロキシ。
【請求項７】
コントローラにおいて、ネットワークを構成するスイッチに対して経路を設定することと、
プロキシにおいて、１つのスイッチからの接続を複数のコントローラに通知することと、
前記プロキシにおいて、スイッチからの問い合わせメッセージを、マスタとなる１つのコントローラに転送することと
を含む
負荷分散方法。
【請求項８】
請求項７に記載の負荷分散方法であって、
前記プロキシにおいて、１つのスイッチからプロトコルのセキュアチャネル接続を受けた際に、マスタとなる１つのコントローラを接続先として決定することと、
前記プロキシにおいて、前記マスタとなるコントローラに対してセキュアチャネル接続を行い、前記１つのスイッチと前記マスタとなるコントローラとの間の接続を確立することと
を更に含む
負荷分散方法。
【請求項９】
請求項７又は８に記載の負荷分散方法であって、
前記プロキシにおいて、スイッチの１つの接続セッションに対して、複数のコントローラからの経路情報登録メッセージを転送すること
を更に含む
負荷分散方法。
【請求項１０】
請求項７乃至９のいずれか一項に記載の負荷分散方法であって、
前記プロキシにおいて、取り扱い方法の不明なパケットを受信したスイッチからの問い合わせメッセージを、マスタとなる１つのコントローラに転送することと、
前記プロキシにおいて、問い合わせメッセージの応答として、前記マスタとなるコントローラから経路情報登録メッセージを受けた際に、経路情報登録メッセージの転送先となるスイッチを決定することと、
前記プロキシで、前記転送先となる全てのスイッチに経路情報登録メッセージを転送することと
を更に含む
負荷分散方法。
【請求項１１】
請求項７乃至１０のいずれか一項に記載の負荷分散方法であって、
前記プロキシで、スイッチとコントローラとの対応関係を保持することと、
前記プロキシで、スイッチとコントローラを監視し、どちらかに障害が発生したことを検出すると、スイッチとコントローラとの対応関係を変更することと
を更に含む
負荷分散方法。
【請求項１２】
請求項７乃至１１のいずれか一項に記載の負荷分散方法をプロキシに実行させるためのプログラムを格納する記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、負荷分散システムに関し、特にスイッチを監視・制御するコントローラが存在するネットワークにおける負荷分散システムに関する。
【背景技術】
【０００２】
例えば、サーバ等のコントローラでネットワーク内のスイッチを監視・制御することでネットワーク内を流れるデータフローを制御する技術は、オープン化されたネットワーク技術の１つであり、大規模なネットワークの制御に適している。【０００３】
上記のような技術では、１つのコントローラが、ネットワークを制御するためにネットワークに属する全てのスイッチを管理下に置く必要があるため、大規模なネットワークとなるにつれて、コントローラにデータフロー制御の負荷が集中する。更に、コントローラ上では、ネットワーク監視ツール等の様々なアプリケーションが動作することになると考えられるため、コントローラ自身の処理による負荷も増加すると考えられる。【０００４】
上記のような技術には、コントローラの負荷を制御する仕組みが無く、コントローラの負荷を制御する仕組みを独自に実装すると、オープン化されたネットワーク技術を利用することの優位性が失われる。【０００５】
また、上記のような技術では、１つのコントローラが全てのスイッチを制御するという特徴から、スイッチの障害には柔軟に対応できる半面で、コントローラに障害が発生すると全てのスイッチが制御できなくなるという弱点がある。【０００６】
しかし、複数のコントローラによりネットワークの管理を行うようにする場合、スイッチとコントローラのみの構成では、互換性や同期性の問題から、対応ソフトウェアやネットワークの設計が複雑になる。【０００７】
関連する技術として、特開２００７−２８８７１１号公報（特許文献１）にゲートウェイ装置、設定コントローラ、ゲートウェイ装置の負荷分散方法及びプログラムが開示されている。この関連技術では、ゲートウェイ装置は、複数のネットワーク（ＮＷ）間でやり取りされるパケットに対して、ゲートウェイコントローラ（ＧＣ）によって設定されたポリシーに従った処理を行うことにより、個々のネットワーク（ＮＷ）の運用ポリシーの差異を吸収する機能を有している。このゲートウェイ装置は、設定コントローラと、２台の分配ルータと、２台のスイッチングハブと、複数台のセッションボーダーコントローラ（ＳＢＣ）とから構成されている。【０００８】
また、特許第３４０９７２６号公報（特許文献２）に転送先決定処理装置が開示されている。この関連技術では、受信したＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｌ）データグラムについて、フロー識別情報と、宛先ＩＰアドレスを抽出すると、当該ＩＰデータグラムについての転送先が、マルチパスとして設定されている場合において、フロー管理部は、マルチパス番号（Ｎ）とフロー識別情報（Ｆ）が入力されると、集約フローテーブルのみを参照し、転送パス（Ｐ）の決定を行う。【０００９】
また、特表２００８−５３９６４３号公報（特許文献３）に通信ネットワーク内の複数のネットワーク要素間のセキュアな通信を確立するための方法が開示されている。この関連技術では、ゲートウェイとホストとの間に、セキュアチャネルＳＣが備えられる。加えて、他のセキュアチャネルＳＣが、アクセスコントローラとゲートウェイとの間に備えられる。この関連技術では、ゲートウェイを介してホストによって、セキュアなピアツーピア通信が確立される。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２００７−２８８７１１号公報
【特許文献２】特許第３４０９７２６号公報
【特許文献３】特表２００８−５３９６４３号公報
【非特許文献】
【００１１】
【非特許文献１】“Ｔｈｅ  ＯｐｅｎＦｌｏｗ  Ｓｗｉｔｃｈ  Ｃｏｎｓｏｒｔｉｕｍ”  ＜ｈｔｔｐ：／／ｗｗｗ．ｏｐｅｎｆｌｏｗｓｗｉｔｃｈ．ｏｒｇ／＞
【非特許文献２】“ＯｐｅｎＦｌｏｗ  Ｓｗｉｔｃｈ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ  Ｖｅｒｓｉｏｎ  ０．９．０（Ｗｉｒｅ  Ｐｒｏｔｏｃｏｌ  ０ｘ９８）  Ｊｕｌｙ  ２０，  ２００９  Ｃｕｒｒｅｎｔ  Ｍａｉｎｔａｉｎｅｒ：  Ｂｒａｎｄｏｎ  Ｈｅｌｌｅｒ（ｂｒａｎｄｏｎｈ＠ｓｔａｎｆｏｒｄ．ｅｄｕ）”  ＜ｈｔｔｐ：／／ｗｗｗ．ｏｐｅｎｆｌｏｗｓｗｉｔｃｈ．ｏｒｇ／ｄｏｃｕｍｅｎｔｓ／ｏｐｅｎｆｌｏｗ−ｓｐｅｃ−ｖ０．９．０．ｐｄｆ＞
【発明の概要】
【００１２】
サーバ等のコントローラでネットワーク内のスイッチにパケットの配送経路を動的に設定することでネットワーク内を流れるデータフローを制御するシステムにおいて、スイッチとコントローラとの間にプロトコルを中継するプロキシ（Ｐｒｏｘｙ）を設置する。プロキシは、各スイッチからは単一のコントローラに見え、各コントローラからはネットワークの全てのスイッチに接続しているかのように振る舞うものである。
【００１３】
本発明の負荷分散システムは、スイッチと、コントローラと、プロキシとを具備する。スイッチは、ネットワークを構成する。コントローラは、スイッチに対して経路を設定する。プロキシは、１つのスイッチからの接続を複数のコントローラに通知し、スイッチからの問い合わせメッセージを、マスタとなる１つのコントローラに転送する。
【００１４】
本発明の負荷分散方法では、コントローラにおいて、ネットワークを構成するスイッチに対して経路を設定する。また、プロキシにおいて、１つのスイッチからの接続を複数のコントローラに通知する。また、プロキシにおいて、スイッチからの問い合わせメッセージを、マスタとなる１つのコントローラに転送する。
【００１５】
本発明に係るプログラムは、ネットワークを構成するスイッチと、スイッチに対して経路を設定するコントローラとの間に設置されたプロキシにより実行されるプログラムである。このプログラムは、１つのスイッチからの接続を複数のコントローラに通知するステップと、スイッチからの問い合わせメッセージを、マスタとなる１つのコントローラに転送するステップとをプロキシに実行させるためのプログラムである。なお、本発明に係るプログラムは、記憶装置や記憶媒体に格納することが可能である。
【００１６】
サーバ等のコントローラでネットワーク内のスイッチにパケットの配送経路を動的に設定することでネットワーク内を流れるデータフローを制御するシステムにおいて、プロキシを導入することにより、独自に負荷分散機能を持たないスイッチとコントローラの組み合わせや、メーカの違いにより負荷分散機能に互換性がないスイッチとコントローラの組み合わせにおいても、コントローラの負荷分散が可能となる。
【図面の簡単な説明】
【００１７】
【図１】本発明の負荷分散システムの全体構成の例を示す図である。
【図２】本発明の第１実施形態におけるプロキシの構成例を示すブロック図である。
【図３】スイッチの起動時の動作（初期化）を示すフローチャートである。
【図４】初期化の概要を説明するための図である。
【図５】スイッチごとに決定されたマスタコントローラとの対応関係の例を示す図である。
【図６】経路制御の動作を示すフローチャートである。
【図７】フロー登録の概要を説明するための図である。
【図８】本発明の第２実施形態におけるプロキシの構成例を示すブロック図である。
【図９】障害発生後のスイッチとマスタコントローラとの対応関係の例を示す図である。
【発明を実施するための形態】
【００１８】
本発明では、サーバ等のコントローラでネットワーク内のスイッチを監視・制御することでネットワーク内を流れるデータフローを制御する技術として、オープンフロー（ＯｐｅｎＦｌｏｗ）技術を例にして説明する。但し、実際には、オープンフロー技術に限定されない。
【００１９】
オープンフロー技術とは、コントローラが、ルーティングポリシーとして自身に設定されたフロー定義情報（フロー：ルール＋アクション）に従い、マルチレイヤ及びフロー単位の経路情報（フローテーブル）をスイッチに設定し、経路制御やノード制御を行う技術を示す。オープンフロー技術では、コントローラが、ネットワーク内のスイッチを監視し、通信状況に応じて、ネットワーク内のスイッチにパケットの配送経路を動的に設定する。これにより、経路制御機能がルータやスイッチから分離され、コントローラによる集中制御によって最適なルーティング、トラフィック管理が可能となる。オープンフロー技術が適用されるスイッチは、従来のルータやスイッチのようにパケットやフレームの単位ではなく、フロー単位で通信を取り扱う。
【００２０】
フローテーブルとは、所定のマッチ条件（ルール）に適合するパケットに対して行うべき所定の処理（アクション）を定義したエントリ（ｅｎｔｒｙ）が登録されたテーブルである。ルールに適合するパケット群（パケット系列）をフローと呼ぶ。フローのルールは、パケットの各プロトコル階層のヘッダ領域に含まれるデスティネーションアドレス（Ｄｅｓｔｉｎａｔｉｏｎ  Ａｄｄｒｅｓｓ：宛先アドレス）、ソースアドレス（Ｓｏｕｒｃｅ  Ａｄｄｒｅｓｓ：送信元アドレス）、デスティネーションポート番号、ソースポート番号のいずれか又は全てを用いた様々な組み合わせにより定義され、区別可能である。なお、上記のアドレスには、ＭＡＣアドレス（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ  Ａｄｄｒｅｓｓ）やＩＰアドレス（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ  Ａｄｄｒｅｓｓ）を含むものとする。また、上記に加えて、入口ポート（Ｉｎｇｒｅｓｓ  Ｐｏｒｔ）の情報も、フローのルールとして使用可能である。
【００２１】
オープンフロー技術の詳細については、非特許文献１、非特許文献２にも記載されている。
【００２２】
＜第１実施形態＞
以下に、本発明の第１実施形態について添付図面を参照して説明する。
【００２３】
［システム全体構成］
図１に示す通り、本発明の負荷分散システムは、オープンフロープロキシ（ＯｐｅｎＦｌｏｗ  Ｐｒｏｘｙ：ＯＦＰＸ）１と、オープンフローコントローラ（ＯｐｅｎＦｌｏｗ  Ｃｏｎｔｒｏｌｌｅｒ：ＯＦＣ）２１、２２と、オープンフロースイッチ（ＯｐｅｎＦｌｏｗ  Ｓｗｉｔｃｈ：ＯＦＳ）３１〜３４を含む。
【００２４】
オープンフロープロキシ（ＯＦＰＸ）１は、オープンフローコントローラ（ＯＦＣ）２１、２２と、オープンフロースイッチ（ＯＦＳ）３１〜３４との間の通信を中継するプロキシである。オープンフロープロキシ（ＯＦＰＸ）１の例として、プロキシサーバ（ｐｒｏｘｙ  ｓｅｒｖｅｒ）、ゲートウェイ（ｇａｔｅｗａｙ）、ファイアウォール（ｆｉｒｅｗａｌｌ）、又はこれらに相当する計算機や中継装置を想定している。但し、実際には、これらの例に限定されない。
【００２５】
オープンフローコントローラ（ＯＦＣ）２１、２２は、オープンフロースイッチ（ＯＦＳ）３１〜３４を制御・監視し、オープンフロースイッチ（ＯＦＳ）３１〜３４に対して、パケットの配送経路を設定するサーバである。ここでは、オープンフロー技術を用いたフロースイッチング（Ｆｌｏｗ  Ｓｗｉｔｃｈｉｎｇ）方式での設定を例に説明するが、実際には、送信先アドレス（Ｄｅｓｔｉｎａｔｉｏｎ  ＩＰ  Ａｄｄｒｅｓｓ）ベースの静的ルーティング（Ｓｔａｔｉｃ  Ｒｏｕｔｉｎｇ）方式や、ＭＰＬＳ（Ｍｕｌｔｉ  Ｐｒｏｔｏｃｏｌ  Ｌａｂｅｌ  Ｓｗｉｔｃｈｉｎｇ）ベースのパスルーティング（Ｐａｔｈ  Ｒｏｕｔｉｎｇ）方式での設定でも良い。オープンフローコントローラ（ＯＦＣ）２１、２２の例として、ＰＣ（パソコン）、シンクライアントサーバ、ワークステーション、メインフレーム、スーパーコンピュータ等の計算機を想定している。但し、実際には、これらの例に限定されない。
【００２６】
オープンフロースイッチ（ＯＦＳ）３１〜３４は、ネットワークを構成し、受信したパケットを、設定された配送経路で配送するスイッチである。オープンフロースイッチ（ＯＦＳ）３１〜３４の例として、ネットワークスイッチ、マルチレイヤスイッチ（ｍｕｌｔｉ−ｌａｙｅｒ  ｓｗｉｔｃｈ）等が考えられる。マルチレイヤスイッチは、サポートするＯＳＩ参照モデルの層毎に、更に細かく分類されている。主な種別としては、ネットワーク層（第３層）のデータを読むレイヤ３スイッチ、トランスポート層（第４層）のデータを読むレイヤ４スイッチ、アプリケーション層（第７層）のデータを読むレイヤ７スイッチ（アプリケーションスイッチ）がある。オープンフロースイッチ（ＯＦＳ）３１〜３４は、少なくともレイヤ３スイッチの機能を備えているものとする。なお、オープンフローシステムでは、一般的なルータやスイッチングハブ等の中継装置をオープンフロースイッチ（ＯＦＳ）として使用することもできる。但し、実際には、これらの例に限定されない。
【００２７】
なお、図示しないが、オープンフロースイッチ（ＯＦＳ）３１〜３４の各々の配下には、サーバや各種のネットワーク対応機器が存在している場合がある。例えば、オープンフロースイッチ（ＯＦＳ）３１〜３４のそれぞれがサーバラック（Ｓｅｒｖｅｒ  Ｒａｃｋ）に設置されている場合が考えられる。このような場合、オープンフロースイッチ（ＯＦＳ）３１〜３４の各々の配下のサーバは、論理構成において、仮想マシン（Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ：ＶＭ）や、仮想マシンモニタ（Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ  Ｍｏｎｉｔｏｒ：ＶＭＭ）を備えている場合がある。上記のサーバや仮想マシンがオープンフロースイッチ（ＯＦＳ）３１〜３４を介してオープンフロープロキシ（ＯＦＰＸ）１と通信する場合、直接的には、オープンフロースイッチ（ＯＦＳ）３１〜３４がオープンフロープロキシ（ＯＦＰＸ）１と通信することになる。
【００２８】
［構成要素の詳細］
図２に示す通り、オープンフロープロキシ（ＯＦＰＸ）１は、データ処理装置１１と、記憶装置１２と、ネットワーク処理装置１３を備える。
【００２９】
データ処理装置１１は、問い合わせ処理部１１１と、フロー処理部１１２を備える。
【００３０】
問い合わせ処理部１１１は、オープンフロープロキシ（ＯＦＰＸ）１がオープンフロースイッチ（ＯＦＳ）からの問い合わせメッセージを受信すると起動し、当該オープンフロースイッチ（ＯＦＳ）のマスタＯＦＣだけに当該オープンフロースイッチ（ＯＦＳ）からの問い合わせメッセージを転送する。
【００３１】
フロー処理部１１２は、オープンフロープロキシ（ＯＦＰＸ）１がオープンフローコントローラ（ＯＦＣ）から各ＯＦＳ宛のフロー登録メッセージ（経路情報登録メッセージ）を受信すると起動し、フロー登録メッセージの宛先となるＯＦＳに対して確立されたセキュアチャネルを使い、フロー登録メッセージを送信する。
【００３２】
データ処理装置１１の例として、マイクロプロセッサ（ｍｉｃｒｏｐｒｏｃｅｓｓｏｒ）、マイクロコントローラ、或いは、同様の機能を有するＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ：半導体集積回路）等が考えられる。但し、実際には、これらの例に限定されない。
【００３３】
記憶装置１２は、ＯＦＣ記憶部１２１と、ＯＦＳ記憶部１２２と、管理関係記憶部１２３を備える。
【００３４】
ＯＦＣ記憶部１２１は、全てのＯＦＣのＩＰアドレスを記憶する。
【００３５】
ＯＦＳ記憶部１２２は、全てのＯＦＳのＩＰアドレスを記憶する。
【００３６】
管理関係記憶部１２３は、ＯＦＣが管理するＯＦＳを記憶する。
【００３７】
なお、ＩＰアドレスは例示に過ぎない。実際には、ネットワーク上でＯＦＣやＯＦＳを特定可能な識別情報であれば良い。また、記憶装置１２は、必要に応じて、データ処理装置１１に所定の処理を実行させるためのプログラムを記憶する。
【００３８】
記憶装置１２の例として、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  ａｎｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）やフラッシュメモリ等の半導体記憶装置、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）やＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の補助記憶装置、又は、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）やメモリカード等の記憶媒体（メディア）等が考えられる。但し、実際には、これらの例に限定されない。
【００３９】
ネットワーク処理装置１３は、ネットワークを介して、外部とデータの送受信を行う。ここでは、ネットワーク処理装置１３は、オープンフロースイッチ（ＯＦＳ）からの問い合わせメッセージを受信すると、問い合わせ処理部１１１を起動する。また、ネットワーク処理装置１３は、オープンフローコントローラ（ＯＦＣ）から各ＯＦＳ宛のフロー登録メッセージを受信すると、フロー処理部１１２を起動する。
【００４０】
ネットワーク処理装置１３の例として、ＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）等のネットワークアダプタや、アンテナ等の通信装置、接続口（コネクタ）等の通信ポート等が考えられる。また、ネットワークの例として、インターネット、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、無線ＬＡＮ（Ｗｉｒｅｌｅｓｓ  ＬＡＮ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、バックボーン（Ｂａｃｋｂｏｎｅ）、ケーブルテレビ（ＣＡＴＶ）回線、固定電話網、携帯電話網、ＷｉＭＡＸ（ＩＥＥＥ  ８０２．１６ａ）、３Ｇ（３ｒｄ  Ｇｅｎｅｒａｔｉｏｎ）、専用線（ｌｅａｓｅ  ｌｉｎｅ）、ＩｒＤＡ（Ｉｎｆｒａｒｅｄ  Ｄａｔａ  Ａｓｓｏｃｉａｔｉｏｎ）、Ｂｌｕｅｔｏｏｔｈ（登録商標）、シリアル通信回線、データバス等が考えられる。但し、実際には、これらの例に限定されない。
【００４１】
［動作の説明］
次に、本発明の負荷分散システムの動作について詳細に説明する。
【００４２】
［前提条件］
本発明を実施する準備として、以下の条件を満たしている必要がある。
１．各ＯＦＳには、ＯＦＣのＩＰアドレスの代わりにオープンフロープロキシ（ＯＦＰＸ）１のＩＰアドレスを登録してあること。
２．オープンフロープロキシ（ＯＦＰＸ）１には、予めオープンフローコントローラ（ＯＦＣ）２１とオープンフローコントローラ（ＯＦＣ）２２のＩＰアドレスをＯＦＣ記憶部に登録してあること。
【００４３】
［スイッチの起動時の動作（初期化）］
最初に、図３を参照して、スイッチの起動時の動作を説明する。
【００４４】
（１）ステップＳ１０１
オープンフロースイッチ（ＯＦＳ）３１が起動すると、オープンフロースイッチ（ＯＦＳ）３１は、予めＯＦＣのアドレスとして記憶しているＩＰアドレスへオープンフロープロトコルのセキュアチャネル接続（ＳｅｃＣｈａｎ接続）を行う。ここでは、オープンフロースイッチ（ＯＦＳ）３１の接続先は、オープンフロープロキシ（ＯＦＰＸ）１となる。すなわち、オープンフロースイッチ（ＯＦＳ）３１は、オープンフロープロキシ（ＯＦＰＸ）１のＩＰアドレスを、ＯＦＣのアドレスとして記憶している。
【００４５】
（２）ステップＳ１０２
オープンフロープロキシ（ＯＦＰＸ）１は、オープンフロースイッチ（ＯＦＳ）３１からのセキュアチャネル接続を受けると、ＯＦＳ記憶部１２２にオープンフロースイッチ（ＯＦＳ）３１の情報（ＩＰアドレス等）を記憶する。また、オープンフロープロキシ（ＯＦＰＸ）１は、ＯＦＣ記憶部１２１に記憶しているＯＦＣの中から、オープンフロースイッチ（ＯＦＳ）３１のマスタＯＦＣとなるＯＦＣを決定し、オープンフロースイッチ（ＯＦＳ）３１と決定されたマスタＯＦＣとの対応関係を管理関係記憶部１２３に記憶する。ここでは、オープンフロースイッチ（ＯＦＳ）３１のマスタＯＦＣとして、オープンフローコントローラ（ＯＦＣ）２１が選択されたこととする。
【００４６】
（３）ステップＳ１０３
オープンフロープロキシ（ＯＦＰＸ）１は、オープンフローコントローラ（ＯＦＣ）２１とオープンフローコントローラ（ＯＦＣ）２２に対して、オープンフロースイッチ（ＯＦＳ）３１からの接続に見せかけたオープンフロープロトコルのセキュアチャネル接続（ＳｅｃＣｈａｎ接続）を行い、オープンフロースイッチ（ＯＦＳ）３１のオープンフロープロトコル接続を確立する。
【００４７】
（４）ステップＳ１０４
同様にして、オープンフロープロキシ（ＯＦＰＸ）１は、全てのＯＦＳのオープンフロープロトコル接続の確立を行う。すなわち、図４に示すように、オープンフロープロキシ（ＯＦＰＸ）１は、オープンフロースイッチ（ＯＦＳ）３１と同様に、オープンフロースイッチ（ＯＦＳ）３２、オープンフロースイッチ（ＯＦＳ）３３、オープンフロースイッチ（ＯＦＳ）３４のオープンフロープロトコル接続を確立する。ここでは、オープンフロープロキシ（ＯＦＰＸ）１は、オープンフローコントローラ（ＯＦＣ）２１とオープンフローコントローラ（ＯＦＣ）２２に対して、オープンフロースイッチ（ＯＦＳ）３２、オープンフロースイッチ（ＯＦＳ）３３、及びオープンフロースイッチ（ＯＦＳ）３４のそれぞれからの接続に見せかけたオープンフロープロトコルのセキュアチャネル接続を行う。
【００４８】
（５）ステップＳ１０５
オープンフロープロキシ（ＯＦＰＸ）１は、全てのＯＦＳのオープンフロープロトコル接続の確立が完了した後に、ＯＦＳ記憶部１２２に、全てのＯＦＳの情報（ＩＰアドレス等）を記憶する。また、オープンフロープロキシ（ＯＦＰＸ）１は、ＯＦＣ記憶部１２１に記憶しているＯＦＣの中から、オープンフロースイッチ（ＯＦＳ）３２、オープンフロースイッチ（ＯＦＳ）３３、及びオープンフロースイッチ（ＯＦＳ）３４のそれぞれのマスタＯＦＣとなるＯＦＣを決定し、管理関係記憶部１２３に、ＯＦＳごとに決定されたマスタＯＦＣとの対応関係を記憶する。
【００４９】
ここでは、オープンフロープロキシ（ＯＦＰＸ）１は、管理関係記憶部１２３に、図５に示す対応関係の情報を記憶したものとする。すなわち、オープンフロープロキシ（ＯＦＰＸ）１は、オープンフロースイッチ（ＯＦＳ）３１及びオープンフロースイッチ（ＯＦＳ）３３のマスタＯＦＣをオープンフローコントローラ（ＯＦＣ）２１とし、オープンフロースイッチ（ＯＦＳ）３２及びオープンフロースイッチ（ＯＦＳ）３４のマスタＯＦＣをオープンフローコントローラ（ＯＦＣ）２２として、管理関係記憶部１２３に記憶する。
【００５０】
［経路制御の動作］
次に、図６を参照して、経路制御の動作について説明する。
【００５１】
（１）ステップＳ２０１
オープンフロースイッチ（ＯＦＳ）３１は、取り扱い方法の不明なパケットを受信した場合、オープンフロープロトコルに準拠したネットワーク経由でオープンフロープロキシ（ＯＦＰＸ）１へ、当該パケットの取り扱い方法を問い合わせるための問い合わせメッセージを送信する。なお、取り扱い方法の不明なパケットとは、初めて受信したパケット（ｆｉｒｓｔ  ｐａｃｋｅｔ）のように、フローテーブルに登録されているエントリのいずれにも適合しない未登録のフローのパケットである。
【００５２】
（２）ステップＳ２０２
オープンフロープロキシ（ＯＦＰＸ）１のネットワーク処理装置１３は、オープンフロースイッチ（ＯＦＳ）３１からの問い合わせメッセージを受信すると、問い合わせ処理部１１１を起動する。問い合わせ処理部１１１は、管理関係記憶部１２３を参照し、オープンフロースイッチ（ＯＦＳ）３１のマスタＯＦＣであるオープンフローコントローラ（ＯＦＣ）２１だけにオープンフロースイッチ（ＯＦＳ）３１からの問い合わせメッセージを転送する。
【００５３】
（３）ステップＳ２０３
オープンフローコントローラ（ＯＦＣ）２１は、問い合わせメッセージを受けると、問い合わせを受けたパケットを配送するためのフローを確認する。ここでは、オープンフローコントローラ（ＯＦＣ）２１は、問い合わせを受けたパケットをオープンフロースイッチ（ＯＦＳ）３１→オープンフロースイッチ（ＯＦＳ）３３→オープンフロースイッチ（ＯＦＳ）３４の経路で配送するためのフローを登録する必要があると判断したとする。
【００５４】
（４）ステップＳ２０４
オープンフローコントローラ（ＯＦＣ）２１は、図７に示すように、オープンフロープロキシ（ＯＦＰＸ）１に対して確立されたオープンフロースイッチ（ＯＦＳ）３１、オープンフロースイッチ（ＯＦＳ）３３、オープンフロースイッチ（ＯＦＳ）３４とのセキュアチャネル接続を使い、各ＯＦＳを宛先としたフロー登録メッセージを送信する。なお、実際には、オープンフローコントローラ（ＯＦＣ）２１は、オープンフロープロキシ（ＯＦＰＸ）１に対して、各ＯＦＳを宛先としたフロー登録メッセージを一括して送信するようにしても良い。
【００５５】
（５）ステップＳ２０５
オープンフロープロキシ（ＯＦＰＸ）１のネットワーク処理装置１３は、オープンフローコントローラ（ＯＦＣ）２１から各ＯＦＳ宛のフロー登録メッセージを受信すると、フロー処理部１１２を起動する。フロー処理部１１２は、フロー登録メッセージの宛先となるＯＦＳに対して確立されたセキュアチャネルを使い、フロー登録メッセージを送信する。ここでは、フロー処理部１１２は、図７に示すように、オープンフロースイッチ（ＯＦＳ）３１、オープンフロースイッチ（ＯＦＳ）３３、及びオープンフロースイッチ（ＯＦＳ）３４のそれぞれに対して、フロー登録メッセージを送信する。
【００５６】
（６）ステップＳ２０６
オープンフロースイッチ（ＯＦＳ）３１、オープンフロースイッチ（ＯＦＳ）３３、及びオープンフロースイッチ（ＯＦＳ）３４のそれぞれは、フロー登録メッセージを受信すると、フローを登録し、フローに基づいて、問い合わせたパケットと同じパターンのパケットを転送する。ここでは、オープンフロースイッチ（ＯＦＳ）３１は、問い合わせたパケットと同じパターンのパケットをオープンフロースイッチ（ＯＦＳ）３３に転送する。オープンフロースイッチ（ＯＦＳ）３３は、当該パケットを、オープンフロースイッチ（ＯＦＳ）３４に転送する。
【００５７】
以降は同じパターンのパケットを各ＯＦＳが配送可能になる。
【００５８】
同様にして、オープンフロースイッチ（ＯＦＳ）３２が不明パケットを受信した場合は、オープンフロースイッチ（ＯＦＳ）３２からの問い合わせメッセージがオープンフロープロキシ（ＯＦＰＸ）１によってオープンフローコントローラ（ＯＦＣ）２２に転送され、オープンフローコントローラ（ＯＦＣ）２２が必要に応じてフロー登録を行う。
【００５９】
［セキュアチャネルのセッションの例］
次に、セキュアチャネルのセッションの例を説明する。
【００６０】
ここでは、次のように記載を簡略化する。
「ＯＦＰＸ」は、オープンフロープロキシ（ＯＦＰＸ）１を示す。
「ＯＦＣ」は、オープンフローコントローラ（ＯＦＣ）２１、２２を示す。
「ＯＦＳ」は、オープンフロースイッチ（ＯＦＳ）３１〜３４を示す。
【００６１】
各ＯＦＳとＯＦＰＸ間のセキュアチャネルにおいて、ＯＦＳからＯＦＰＸへ送信するパケットのソースアドレス（送信側アドレス）はＯＦＳのＩＰアドレスであり、デスティネーションアドレス（受信側アドレス）はＯＦＰＸのＩＰアドレスである。また、ＯＦＰＸからＯＦＳへ送信するパケットのソースアドレスはＯＦＰＸのＩＰアドレスであり、デスティネーションアドレスはＯＦＳのＩＰアドレスである。
【００６２】
ＯＰＦＸからＯＦＳへ送信するパケットは、ＯＦＣからＯＦＳへ送信するパケットを中継するものであるが、ＯＦＳはＯＦＰＸとのセキュアチャネルを使用しているため、ＯＦＰＸはＯＦＣからＯＦＳへ送信されるメッセージのソースアドレスをＯＦＰＸのＩＰアドレスとする必要がある。
【００６３】
ＯＦＰＸと各ＯＦＣ間のセキュアチャネルにおいて、ＯＦＰＸからＯＦＣへ送信するパケットのソースアドレスはＯＦＳのＩＰアドレスであり、デスティネーションアドレスはＯＦＣのＩＰアドレスである。また、ＯＦＣからＯＦＰＸへ送信するパケットのソースアドレスはＯＦＣのＩＰアドレスであり、デスティネーションアドレスはＯＦＳのＩＰアドレスである。
【００６４】
ＯＦＰＸからＯＦＣへ送信するパケットは、ＯＦＳとＯＦＣの通信を中継するものであり、ＯＦＣがＯＦＳからのメッセージであることを認識する必要があるため、ソースアドレスはＯＦＳのアドレスとする必要がある。同様に、ＯＦＣからＯＦＰＸへ送信するパケットは、どのＯＦＳ宛のメッセージであるかをＯＦＰＸが認識する必要があるため、デスティネーションアドレスはＯＦＳのアドレスとする必要がある。したがって、ＯＦＰＸはＯＦＣからＯＦＳへの通信におけるゲートウェイとなる必要がある。
【００６５】
［実施結果］
本実施形態では、フロー問い合わせ元のＯＦＳごとに配送経路を選択するＯＦＣを決定しており、ＯＦＣを負荷分散できる。
【００６６】
一方で、各ＯＦＳとＯＦＣはオープンフロープロトコルに沿った動作をしており、オープンフロープロキシ（ＯＦＰＸ）を介入させるための特別な処理は不要である。
【００６７】
オープンフロープロキシ（ＯＦＰＸ）の処理は、各ＯＦＳからの問い合わせメッセージを、対応表を元にＯＦＣへ転送することと、ＯＦＣからのメッセージをメッセージの宛先のＯＦＳへ転送するという単純なものであることから、ＯＦＰＸは安価なハードウェアで実現することができる。
【００６８】
本発明によれば、ＯＦＳ群を複数のＯＦＣで制御可能になる。その理由は、プロキシの介入により、全てのＯＦＳからは単一のＯＦＣが存在するように見え、全てのＯＦＣは全てのＯＦＳとの接続が確立しているように見えるためである。
【００６９】
＜第２実施形態＞
次に、本発明の第２実施形態について添付図面を参照して説明する。
本実施形態では、オープンフロープロキシ（ＯＦＰＸ）１のデータ処理装置１１が、更に、生存確認処理部１１３を含む点を特徴とする。
【００７０】
［システム全体構成］
負荷分散システムの全体構成については、図１に示す通りである。
【００７１】
［構成要素の詳細］
図８に示す通り、第２実施形態のオープンフロープロキシ（ＯＦＰＸ）１は、データ処理装置１１と、記憶装置１２と、ネットワーク処理装置１３を備える。
【００７２】
記憶装置１２とネットワーク処理装置１３については、基本的に第１実施形態と同じである。
【００７３】
第２実施形態のデータ処理装置１１は、問い合わせ処理部１１１と、フロー処理部１１２と、生存確認処理部１１３を備える。
【００７４】
問い合わせ処理部１１１とフロー処理部１１２については、基本的に第１実施形態と同じである。
【００７５】
生存確認処理部１１３は、オープンフローコントローラ（ＯＦＣ）２１とオープンフローコントローラ（ＯＦＣ）２２を監視し、どちらかに障害が発生したことを検出する。
【００７６】
ここで、管理関係記憶部１２３に図５の情報が記憶されている状態でオープンフローコントローラ（ＯＦＣ）２１に障害が発生したとする。生存確認処理部１１３は、オープンフローコントローラ（ＯＦＣ）２１の障害を検出すると、管理関係記憶部１２３において、マスタＯＦＣがオープンフローコントローラ（ＯＦＣ）２１となっているエントリのマスタＯＦＣを他のＯＦＣへ変更する。この例では、生存確認処理部１１３は、オープンフロースイッチ（ＯＦＳ）３１及びオープンフロースイッチ（ＯＦＳ）３３のマスタＯＦＣをオープンフローコントローラ（ＯＦＣ）２１からマスタオープンフローコントローラ（ＯＦＣ）２２へ変更する。この場合、管理関係記憶部１２３の内容は、図９に示す通りとなる。
【００７７】
以降は、オープンフローコントローラ（ＯＦＣ）２１へ送られていたオープンフロースイッチ（ＯＦＳ）３１、オープンフロースイッチ（ＯＦＳ）３３の問い合わせメッセージは障害が発生していないオープンフローコントローラ（ＯＦＣ）２２へ送られることとなる。
【００７８】
オープンフロープロキシ（ＯＦＰＸ）１は、オープンフローコントローラ（ＯＦＣ）２１の監視を継続し、オープンフローコントローラ（ＯＦＣ）２１の回復を検出したときは管理関係記憶部１２３を更新し、ＯＦＣの負荷分散を再開する。この例では、生存確認処理部１１３は、オープンフロースイッチ（ＯＦＳ）３１及びオープンフロースイッチ（ＯＦＳ）３３のマスタＯＦＣをオープンフローコントローラ（ＯＦＣ）２２からマスタオープンフローコントローラ（ＯＦＣ）２１へ変更する。
【００７９】
［実施結果］
第２実施形態では、ＯＦＣに障害が発生したときの切り替え動作が、管理関係記憶部に記憶されたＯＦＳごとのマスタＯＦＣの対応関係の更新のみで完了するため、短時間での切り替えが可能である。
【００８０】
なお、上記の各実施形態は、組み合わせて実施することも可能である。
【００８１】
＜本発明の利用が考えられる分野＞
本発明によれば、大規模ネットワークの性能改善と耐障害性を高める用途に適用できる。
【００８２】
＜まとめ＞
以上のように、本発明の負荷分散システムにおいて、オープンフロープロキシ（ＯＦＰＸ）は、１つのオープンフロースイッチ（ＯＦＳ）からのオープンフロープロトコル接続を複数のオープンフローコントローラ（ＯＦＣ）に通知しつつ、オープンフロースイッチ（ＯＦＳ）からの問い合わせメッセージはマスタとなる１つのオープンフローコントローラ（ＯＦＣ）のみに転送する。
【００８３】
また、オープンフロープロキシ（ＯＦＰＸ）は、オープンフロースイッチ（ＯＦＳ）の１つのオープンフロープロトコル接続セッションに対して、複数のオープンフローコントローラ（ＯＦＣ）からのフロー登録メッセージを転送する。
【００８４】
上記では、オープンフロー技術を例に説明しているが、無論、本発明は、オープンフロー技術以外の類似技術に対しても適用可能である。
【００８５】
＜付記＞
上記の実施形態の一部又は全部は、以下の付記のように記載することも可能である。但し、実際には、以下の記載例に限定されない。
【００８６】
（付記１）
ネットワークを構成するスイッチと、スイッチに対して経路を設定するコントローラとの間に設置されたプロキシにより実行されるプログラムを格納する記憶媒体であって、
１つのスイッチからの接続を複数のコントローラに通知するステップと、
スイッチからの問い合わせメッセージを、マスタとなる１つのコントローラに転送するステップと
をプロキシに実行させるためのプログラムを格納する
記憶媒体。
【００８７】
（付記２）
付記１に記載の記憶媒体であって、
１つのスイッチからプロトコルのセキュアチャネル接続を受けた際に、マスタとなる１つのコントローラを接続先として決定するステップと、
前記マスタとなるコントローラに対してセキュアチャネル接続を行い、前記１つのスイッチと前記マスタとなるコントローラとの間の接続を確立するステップと
を更にプロキシに実行させるためのプログラムを格納する
記憶媒体。
【００８８】
（付記３）
付記１又は２に記載の記憶媒体であって、
スイッチの１つの接続セッションに対して、複数のコントローラからの経路情報登録メッセージを転送するステップ
を更にプロキシに実行させるためのプログラムを格納する
記憶媒体。
【００８９】
（付記４）
付記１乃至３のいずれかに記載の記憶媒体であって、
取り扱い方法の不明なパケットを受信したスイッチからの問い合わせメッセージを、マスタとなる１つのコントローラに転送するステップと、
問い合わせメッセージの応答として、前記マスタとなるコントローラから経路情報登録メッセージを受けた際に、経路情報登録メッセージの転送先となるスイッチを決定するステップと、
前記転送先となる全てのスイッチに経路情報登録メッセージを転送するステップと
を更にプロキシに実行させるためのプログラムを格納する
記憶媒体。
【００９０】
（付記５）
付記１乃至４のいずれかに記載の記憶媒体であって、
スイッチとコントローラとの対応関係を保持するステップと、
スイッチとコントローラを監視し、どちらかに障害が発生したことを検出すると、スイッチとコントローラとの対応関係を変更するステップと
を更にプロキシに実行させるためのプログラムを格納する
記憶媒体。
【００９１】
以上、本発明の実施形態を詳述してきたが、実際には、上記の実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲の変更があっても本発明に含まれる。
【００９２】
なお、本出願は、日本出願番号２００９−２６９００５に基づく優先権を主張するものであり、日本出願番号２００９−２６９００５における開示内容は引用により本出願に組み込まれる。
【図１】
2011065268.tif 000003
【図２】
2011065268.tif 000004
【図３】
2011065268.tif 000005
【図４】
2011065268.tif 000006
【図５】
2011065268.tif 000007
【図６】
2011065268.tif 000008
【図７】
2011065268.tif 000009
【図８】
2011065268.tif 000010
【図９】
2011065268.tif 000011
【国際調査報告】
2011065268.tif 000012
2011065268.tif 000013
2011065268.tif 000014