(57)【要約】  本発明によるコンピュータシステムにおいて、コントローラは、端末からのＡＲＰ要求パケットに含まれるターゲットＶＩＰアドレスに対応する物理サーバのＭＡＣアドレスを送信元としたＡＲＰ応答パケットによって、端末からのＡＲＰ要求パケットに対して代理応答することにより、端末のアクセス先となる物理サーバのＭＡＣアドレスを端末に通知する。又、コントローラは、端末から転送され、当該ＭＡＣアドレスを宛先ＭＡＣアドレスとした受信パケットを当該物理サーバに至る通信経路に転送することを規定したフローエントリを、スイッチに設定する。これにより、コスト上昇を抑制しながら、高速化ネットワーク環境下において、端末のアクセス先となるサーバを任意に設定することが可能となる。
2012133290.tif 000002
【特許請求の範囲】
【請求項１】
コントローラと、
前記コントローラによって設定されたフローエントリに適合する受信パケットに対し、前記フローエントリで規定された中継動作を行うスイッチと
を具備し、
前記コントローラは、ＶＩＰ（Ｖｉｒｔｕａｌ  Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｃｏｌ）アドレスと物理サーバとを対応付けて記録されたテーブルを参照して、端末からのＡＲＰ要求パケットに含まれるターゲットＶＩＰアドレスに対応する物理サーバを、前記端末のアクセス先となる物理サーバとして選択し、前記物理サーバのＭＡＣ（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ）アドレスを送信元ＭＡＣアドレスとしたＡＲＰ応答パケットによって、前記ＡＲＰ要求パケットに対して代理応答することにより、前記端末のアクセス先となる物理サーバのＭＡＣアドレスを前記端末に通知し、
前記端末から転送され、前記ＭＡＣアドレスを宛先ＭＡＣアドレスとした受信パケットを前記物理サーバに至る通信経路に転送することを規定したフローエントリを、前記スイッチに設定する
コンピュータシステム。
【請求項２】
請求項１に記載のコンピュータシステムにおいて、
前記コントローラは、複数のサーバのそれぞれに対する負荷に応じて、前記端末のアクセス先となる物理サーバのＭＡＣアドレスを選択する
コンピュータシステム。
【請求項３】
請求項１又は２に記載のコンピュータシステムにおいて、
前記コントローラは、前記物理サーバと異なる他の物理サーバのＭＡＣアドレスを送信元ＭＡＣアドレスとしたＧＡＲＰパケットを前記端末に送信することで、前記端末のＡＲＰテーブルに設定された宛先ＭＡＣアドレスを、前記物理サーバのＭＡＣアドレスから前記他の物理サーバのＭＡＣアドレスに変更する
コンピュータシステム。
【請求項４】
コントローラと、
前記コントローラによって設定されたフローエントリに適合する受信パケットに対し、前記フローエントリで規定された中継動作を行うスイッチと、
切替装置と
を具備し、
前記スイッチは、前記コントローラによって設定された第１フローエントリに従い、第１サーバの第１ＭＡＣアドレスを宛先ＭＡＣアドレスとしたパケットを、前記第１サーバに至る通信経路へ転送し、
前記コントローラは、前記第１サーバの第１ＭＡＣアドレスを宛先ＭＡＣアドレスとしたパケットを前記切替装置に転送することを規定した第２フローエントリを、前記第１フローエントリに替えて前記スイッチに設定し、
前記スイッチは、前記第２フローエントリに従い、前記第１ＭＡＣアドレスを宛先ＭＡＣアドレスとしたパケットを、前記切替装置へ転送し、
前記切替装置は、前記スイッチからの受信パケットの宛先ＭＡＣアドレスを、前記第１ＭＡＣアドレスから、第１サーバとは異なる第２サーバの第２ＭＡＣアドレスに変更して、前記第２サーバに至る通信経路へ転送する
コンピュータシステム。
【請求項５】
請求項１から４のいずれか１項に記載のコンピュータシステムで利用されるコントローラ。
【請求項６】
請求項３に記載のコンピュータシステムで利用される切替装置。
【請求項７】
コンピュータによって実行されることで、請求項５項に記載のコントローラを実現する通信制御プログラムが格納された記録媒体。
【請求項８】
コンピュータによって実行されることで、請求項６に記載の切替装置を実現する通信制御プログラムが格納された記録媒体。
【請求項９】
コントローラによって設定されたフローエントリに適合する受信パケットに対し、前記フローエントリで規定された中継動作を行うスイッチを備えるコンピュータシステムにおいて実行される通信方法において、
前記コントローラが、ＶＩＰ（Ｖｉｒｔｕａｌ  Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｃｏｌ）アドレスと物理サーバとを対応付けて記録されたテーブルを参照して、端末からのＡＲＰ要求パケットに含まれるターゲットＶＩＰアドレスに対応する物理サーバを、前記端末のアクセス先となる物理サーバとして選択するステップと、
前記コントローラが、前記物理サーバのＭＡＣ（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ）アドレスを、送信元ＭＡＣアドレスとしたＡＲＰ応答パケットによって、前記ＡＲＰ要求パケットに対して代理応答することにより、前記端末のアクセス先となる物理サーバのＭＡＣアドレスを前記端末に通知するステップと、
前記端末から転送され、前記ＭＡＣアドレスを宛先ＭＡＣアドレスとした受信パケットを前記物理サーバに至る通信経路に転送することを規定したフローエントリを、前記コントローラが前記スイッチに設定するステップと
を具備する
通信方法。
【請求項１０】
コントローラによって設定されたフローエントリに適合する受信パケットに対し、前記フローエントリで規定された中継動作を行うスイッチを備えるコンピュータシステムにおいて実行される通信方法において、
前記スイッチが、前記コントローラによって設定された第１フローエントリに従い、第１サーバの第１ＭＡＣアドレスを宛先ＭＡＣアドレスとしたパケットを、前記第１サーバに至る通信経路へ転送するステップと、
前記コントローラが、前記第１サーバの第１ＭＡＣアドレスを宛先ＭＡＣアドレスとしたパケットを切替装置に転送することを規定した第２フローエントリを、前記第１フローエントリに替えて前記スイッチに設定し、
前記スイッチが、前記第２フローエントリに従い、前記第１ＭＡＣアドレスを宛先ＭＡＣアドレスとしたパケットを、前記切替装置へ転送するステップと、
前記切替装置が、前記スイッチからの受信パケットの宛先ＭＡＣアドレスを、前記第１ＭＡＣアドレスから、第１サーバとは異なる第２サーバの第２ＭＡＣアドレスに変更して、前記第２サーバに至る通信経路へ転送するステップと
を具備する
通信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータシステム、及びコンピュータシステムにおける通信方法に関し、特にコンピュータシステムにおけるサーバ負荷分散方法に関する。
【背景技術】
【０００２】
データセンターなどに構築される大規模システムでは、スケーラビリティを確保するために、サーバ負荷分散装置が利用されている。サーバ負荷分散装置では、仮想ＩＰ（Ｖｉｒｔｕａｌ  Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｃｏｌ；以下、ＶＩＰと称す）アドレスに対して、実際の振り分け先の宛先サーバを決定し、その宛先にパケットが届くようにパケットヘッダを付け替えるという処理が行われる。例えば、負荷分散装置は、宛先のＶＩＰアドレスを変えずに宛先のＭＡＣアドレスのみを書き換えるＭＡＴ（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ  Ｔｒａｎｓｌａｔｉｏｎ）処理や、パケットのＩＰアドレスを、実際の宛先のＩＰアドレスに書き換えるＮＡＴ（Ｎｅｔｗｏｒｋ  Ａｄｄｒｅｓｓ  Ｔｒａｎｓｌａｔｉｏｎ）処理を行う。【０００３】
一例として、特開２００８−６０７４７に、レイヤ２の負荷分散を実現するために、ＭＡＴ処理による負荷分散処理方法が記載されている（特許文献１参照）。特許文献１では、負荷分散装置がＡＲＰパケットに対して代理ＡＲＰ応答するとともに、サーバのＭＡＣアドレスを学習し、宛先ＩＰアドレスに応じて、パケットに含まれる負荷分散装置のＭＡＣアドレスをサーバのＭＡＣアドレスに変換する。これにより、ネットワークからのアクセス先サーバを、負荷分散装置によって一元的に変更するとともに、サーバからネットワーク宛のアクセス先も負荷分散装置によって一元的に変更することが可能となる。【０００４】
一方、ネットワークの高速化に伴って、ホストのネットワークインタフェースにおいて１０Ｇｂｐｓの利用が進み、ネットワークスイッチにおいても１０Ｇｂｐｓポートを多数備えたスイッチの利用が一般的になっている。【０００５】
しかしながら、高速処理環境では、ヘッダ検索のためのＣＡＭ（Ｃｏｎｔｅｎｔ  Ａｄｄｒｅｓｓａｂｌｅ  Ｍｅｍｏｒｙ）の高速化が困難であるため、ＭＡＴ処理やＮＡＴ処理の高速化も難しくなる。ＭＡＴ処理を高速化するためには、例えばパケットヘッダを加工するための専用ＡＳＩＣを利用することが考えられるが、この場合、デバイスコストが増大する恐れがある。【０００６】
一般に、Ｌ２スイッチは、固定長の宛先ＭＡＣアドレスのみに基づいて転送を行い、ヘッダの変換を行わない。Ｌ２スイッチはネットワーク構築に不可欠であり、製品価格そのものがスケールメリットで削減されるため、高速ネットワーク環境ではＬ２スイッチのような単純な機能の利活用が望まれる。【０００７】
Ｌ２スイッチを用いてサーバに対する負荷分散を行う負荷分散装置が、例えば特開２００９−２５３５７８に記載されている（特許文献２参照）。特許文献２に記載の負荷分散装置は、クライアントからのＡＲＰ要求に対してＡＲＰ応答があった複数のサーバのうち、各サーバとクライアントとの接続状況に基づいて選択したサーバからのＡＲＰ応答をクライアントに転送する。【０００８】
特許文献２では、クライアントは実サーバのＭＡＣアドレスを直接指定してパケットを送信することができるため、ネットワークの高速化の阻害要因となるＭＡＣアドレスの変換処理が不要となる。しかしながら、特許文献２の方法では、クライアントとサーバとの間におけるＡＲＰ中継のために、ネットワーク内にパケット処理装置を挿入しなくてはならず、当該パケット処理装置が、高速処理環境における処理ボトルネックとなることが予想される。【０００９】
一方、コンピュータネットワークにおいて、各スイッチの転送動作等を外部のコントローラによって一元的に制御する技術（オープンフロー）が、ＯｐｅｎＦｌｏｗ  Ｃｏｎｓｏｒｔｉｕｍによって提案されている（非特許文献１参照）。オープンフローに関するシステムの一例が、Ｎｉｃｋ  ＭｃＫｅｏｗｎほか７名による“ＯｐｅｎＦｌｏｗ：  Ｅｎａｂｌｉｎｇ  Ｉｎｎｏｖａｔｉｏｎ  ｉｎ  Ｃａｍｐ  ｕｓ  Ｎｅｔｗｏｒｋｓ”に記載されている（非特許文献２参照）。【００１０】
オープンフローは、通信をエンドツーエンドのフローとして捉え、フロー単位で経路制御を行うものである。転送ノードとして機能するオープンフロースイッチは、オープンフロープロトコルに従ってオープンフローコントローラにより追加・更新されるフローテーブルに従って動作する。フローテーブルには、パケットを特定するパケットマッチングルール（以下、ルールと称す）と、「特定のポートに出力する」、「廃棄する」、「ヘッダを書き換える」といった受信パケットに対する動作を規定したアクションの組がフローエントリとして登録される。オープンフロースイッチは、受信パケットのヘッダ情報が、自身に登録されたフローエントリのルールにマッチする場合、当該フローエントリに記載されたアクションに従って受信パケットの処理を行う。又、受信パケットのヘッダ情報とマッチするルール（フローエントリ）がない場合は、オープンフローコントローラに当該パケット（以下、ファーストパケットと称す）を通知する。【００１１】
ファーストパケットを受け取ったオープンフローコントローラは、当該パケット内に含まれている送信元ホストや送信先ホストという情報を元に経路を決定し、経路上の全てのオープンフロースイッチに対して、パケットの転送先を規定するフローエントリの設定を指示する（フローテーブル更新指示を発行）。経路上のオープンフロースイッチは、フローテーブル更新指示に応じて、自身で管理しているフローテーブルを更新する。その後、オープンフロースイッチは、更新したフローテーブルに従い、パケットの転送を開始することで、オープンフローコントローラが決定した経路を経由して、宛先のホストへパケットが到達するようになる。【００１２】
オープンフロープロトコルを利用したネットワークでは、コントローラ（制御系）とスイッチ（パケット転送系）が分離されるため、既存のスイッチ動作への機能拡張が容易に実現できる。しかし、既存のオープンフロースイッチは、ヘッダ参照やヘッダ変換を伴うスイッチ処理を行うため、ネットワークを高速化する場合、上述と同様に専用の高速デバイスが必要となりコストの上昇を招く恐れがある。
【先行技術文献】
【特許文献】
【００１３】
【特許文献１】特開２００８−６０７４７
【特許文献２】特開２００９−２５３５７８
【非特許文献】
【００１４】
【非特許文献１】ＯｐｅｎＦｌｏｗ  Ｓｗｉｔｃｈ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ  Ｖｅｒｓｉｏｎ  １．０．０  （Ｗｉｒｅ  Ｐｒｏｔｏｃｏｌ  ０ｘ０１）  Ｄｅｃｅｍｂｅｒ  ３１，  ２００９
【非特許文献２】Ｎｉｃｋ  ＭｃＫｅｏｗｎほか７名、“ＯｐｅｎＦｌｏｗ：  Ｅｎａｂｌｉｎｇ  Ｉｎｎｏｖａｔｉｏｎ  ｉｎ  Ｃａｍｐ  ｕｓ  Ｎｅｔｗｏｒｋｓ”、［ｏｎｌｉｎｅ］、［平成２２年１０月２２日検索］、インターネット＜ＵＲＬ：ｈｔｔｐ：／／ｗｗｗ．ｏｐｅｎｆｌｏｗｓｗｉｔｃｈ．ｏｒｇ／／ｄｏｃｕｍｅｎｔｓ／ｏｐｅｎｆｌｏｗ−ｗｐ−ｌａｔｅｓｔ．ｐｄｆ＞
【発明の概要】
【００１５】
以上のことから、本発明の目的は、コスト上昇を抑制しながら、高速化ネットワーク環境下において、端末のアクセス先となるサーバを任意に設定することにある。
【００１６】
本発明の他の目的は、高速化ネットワーク環境下において負荷分散を実現するコンピュータシステムのコスト上昇を抑制することにある。
【００１７】
本発明の更に他の目的は、高速ネットワーク環境下において、高価なネットワークデバイスを用いなくてもスケーラビリティの高いサーバ負荷分散処理を実現することにある。
【００１８】
本発明の更に他の目的は、アドレス変換が必要なレイヤ４の負荷分散を高速ネットワーク環境下で実現することにある。
【００１９】
本発明による一の態様に係るコンピュータシステムは、コントローラと、コントローラによって設定されたフローエントリに適合する受信パケットに対し、フローエントリで規定された中継動作を行うスイッチとを具備する。コントローラは、ＶＩＰ（Ｖｉｒｔｕａｌ  Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｃｏｌ）アドレスと物理サーバとを対応付けて記録されたテーブルを参照して、端末からのＡＲＰ要求パケットに含まれるターゲットＶＩＰアドレスに対応する物理サーバを、前記端末のアクセス先となる物理サーバとして選択する。又、コントローラは、選択した物理サーバのＭＡＣ（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ）アドレスを送信元ＭＡＣアドレスとしたＡＲＰ応答パケットによって、ＡＲＰ要求パケットに対して代理応答する。これにより、端末のアクセス先となる物理サーバのＭＡＣアドレスは端末に通知される。更にコントローラは、端末から転送され、当該ＭＡＣアドレスを宛先ＭＡＣアドレスとした受信パケットを当該物理サーバに至る通信経路に転送することを規定したフローエントリを、スイッチに設定する。
【００２０】
又、本発明による他の態様に係るコンピュータシステムは、コントローラと、コントローラによって設定されたフローエントリに適合する受信パケットに対し、フローエントリで規定された中継動作を行うスイッチと、切替装置とを具備する。スイッチは、コントローラによって設定された第１フローエントリに従い、第１サーバの第１ＭＡＣアドレスを宛先ＭＡＣアドレスとしたパケットを、第１サーバに至る通信経路へ転送する。コントローラは、第１サーバの第１ＭＡＣアドレスを宛先ＭＡＣアドレスとしたパケットを切替装置に転送することを規定した第２フローエントリを、第１フローエントリに替えてスイッチに設定する。スイッチは、第２フローエントリに従い、第１ＭＡＣアドレスを宛先ＭＡＣアドレスとしたパケットを、切替装置へ転送する。切替装置は、スイッチからの受信パケットの宛先ＭＡＣアドレスを、第１ＭＡＣアドレスから、第１サーバとは異なる第２サーバの第２ＭＡＣアドレスに変更して、第２サーバに至る通信経路へ転送する。
【００２１】
上述のコントローラは、通信制御プログラムをコンピュータによって実行することで、実現されることが好ましい。
【００２２】
又、上述の切替装置は、通信制御プログラムをコンピュータによって実行することで実現されることが好ましい。
【００２３】
本発明による他の態様における通信方法は、コントローラによって設定されたフローエントリに適合する受信パケットに対し、前記フローエントリで規定された中継動作を行うスイッチを備えるコンピュータシステムにおいて実行される通信方法である。本発明による通信方法は、コントローラが、ＶＩＰ（Ｖｉｒｔｕａｌ  Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｃｏｌ）アドレスと物理サーバとを対応付けて記録されたテーブルを参照して、端末からのＡＲＰ要求パケットに含まれるターゲットＶＩＰアドレスに対応する物理サーバを、前記端末のアクセス先となる物理サーバとして選択するステップと、コントローラが、当該物理サーバのＭＡＣ（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ）アドレスを、送信元ＭＡＣアドレスとしたＡＲＰ応答パケットによって、ＡＲＰ要求パケットに対して代理応答することにより、端末のアクセス先となる物理サーバのＭＡＣアドレスを端末に通知するステップと、端末から転送され、当該ＭＡＣアドレスを宛先ＭＡＣアドレスとした受信パケットを物理サーバに至る通信経路に転送することを規定したフローエントリを、コントローラがスイッチに設定するステップとを具備する。
【００２４】
又、本発明による他の態様における通信方法は、コントローラによって設定されたフローエントリに適合する受信パケットに対し、フローエントリで規定された中継動作を行うスイッチを備えるコンピュータシステムにおいて実行される通信方法である。本発明による通信方法は、スイッチが、コントローラによって設定された第１フローエントリに従い、第１サーバの第１ＭＡＣアドレスを宛先ＭＡＣアドレスとしたパケットを、第１サーバに至る通信経路へ転送するステップと、コントローラが、第１サーバの第１ＭＡＣアドレスを宛先ＭＡＣアドレスとしたパケットを切替装置に転送することを規定した第２フローエントリを、第１フローエントリに替えて前記スイッチに設定するステップと、スイッチが、第２フローエントリに従い、第１ＭＡＣアドレスを宛先ＭＡＣアドレスとしたパケットを、切替装置へ転送するステップと、切替装置が、スイッチからの受信パケットの宛先ＭＡＣアドレスを、第１ＭＡＣアドレスから、第１サーバとは異なる第２サーバの第２ＭＡＣアドレスに変更して、第２サーバに至る通信経路へ転送するステップを具備する。
【００２５】
本発明によれば、コスト上昇を抑制しながら高速化ネットワーク環境下において、端末のアクセス先となるサーバを任意に設定することができる。
【００２６】
又、コスト上昇を抑制しながら高速化ネットワーク環境下におけるサーバ負荷分散処理を実現する。
【００２７】
更に、高速ネットワーク環境下において、高価なネットワークデバイスを用いなくてもスケーラビリティの高いサーバ負荷分散処理を実現する。
【００２８】
更に、アドレス変換が必要なレイヤ４の負荷分散を高速ネットワーク環境下で実現する。
【図面の簡単な説明】
【００２９】
上記発明の目的、効果、特徴は、添付される図面と連携して実施の形態の記述から、より明らかになる。
【図１】図１は、本発明によるコンピュータシステムの第１の実施の形態における構成を示す図である。
【図２】図２は、本発明に係るホスト端末情報テーブルの構造の一例を示す図である。
【図３】図３は、本発明に係る負荷情報テーブルの構造の一例を示す図である。
【図４】図４は、本発明に係る割当情報テーブルの構造の一例を示す図である。
【図５】図５は、本発明に係るオープンフロースイッチの構成の一例を示す図である。
【図６】図６は、本発明に係る切替装置の構成の一例を示す図である。
【図７】図７は、切替情報テーブルの構造の一例を示す図である。
【図８Ａ】図８Ａは、ＡＲＰ代理応答する場合の負荷分散動作の一例を示すシーケンス図である。
【図８Ｂ】図８Ｂは、ＡＲＰ代理応答する場合の負荷分散動作の一例を示すシーケンス図である。
【図９】図９は、本発明によるコントローラにおけるＡＲＰ応答処理の動作の一例を示すフロー図である。
【図１０Ａ】図１０Ａは、コントローラにおいてＡＲＰ代理応答を行わない場合のコンピュータシステムの動作を示すシーケン図である。
【図１０Ｂ】図１０Ｂは、コントローラにおいてＡＲＰ代理応答を行わない場合のコンピュータシステムの動作を示すシーケン図である。
【図１１】図１１は、本発明によるコンピュータシステムにおける宛先サーバ切替動作の一例を示すシーケン図である。
【図１２】図１２は、本発明によるコントローラ２０におけるサーバ削除処理（宛先サーバ切替処理）の動作の一例を示すフロー図である。
【図１３】図１３は、本発明によるコンピュータ装置において、セッションを維持しながら宛先サーバを切替える動作の一例を示すシーケンス図である。
【図１４】図１４は、本発明によるコントローラにおける切替処理の動作の一例を示すフロー図である。
【図１５】図１５は、本発明による切替装置におけるパケット制御処理の動作の一例を示すフロー図である。
【図１６】図１６は、本発明による切替装置４０におけるフローエントリのエキスパイアに応じた切替動作を示すフロー図である。
【発明を実施するための形態】
【００３０】
以下、添付図面を参照しながら本発明の実施の形態を説明する。図面において同一、又は類似の参照符号は、同一、類似、又は等価な構成要素を示す。又、同様な構成が複数ある場合は、符号に追番を付して説明し、複数の構成を区別せずに説明する場合は、追番のない符号を付して説明する。
【００３１】
（概要）
本発明によるコンピュータシステムは、オープンフロー技術を利用して通信経路の構築及びパケットデータの転送制御を行う。本発明によるコンピュータシステムでは、オープンフローコントローラ（以下、コントローラと称す）が、複数の物理サーバのそれぞれにおける負荷状況に応じて、端末のアクセス先となる物理サーバを決定する。この際、コントローラは、オープンフロースイッチ（以下、スイッチと称す）から端末からのＡＲＰ要求を収集し、ＡＲＰ要求に対して代理応答することで、端末のアクセス先となる物理サーバのＭＡＣアドレスを端末に通知する。又、コントローラは、端末と物理サーバとを端点とした経路上のオープンフロースイッチに、端末から物理サーバ宛のパケットを中継するためのフローエントリを設定する。このように、本発明によるシステムでは、レイヤ２スイッチを利用したまま、アクセス先となる物理サーバを決定するため、高速化ネットワークにおける負荷分散を低コストで実現することが可能となる。
【００３２】
（コンピュータシステムの構成）
図１から図７を参照して、本発明によるコンピュータシステムの構成の一例を説明する。図２は、本発明によるコンピュータシステムの構成の一例を示す図である。
【００３３】
図１を参照して、本発明によるコンピュータシステムは、複数のスイッチ１０−１〜１０−４、コントローラ２０、負荷情報収集装置３０、切替装置４０、複数の端末５０−１、５０−２、及び複数のサーバ６０−１〜６０−３を具備する。ここで端末５０−１、２、サーバ６０−１〜６０−３は、同一のＥｔｈｅｒｎｅｔ  ＬＡＮに接続されたコンピュータ装置に例示される。
【００３４】
コントローラ２０は、セキュアネットワークである制御インタフェース７０を介して、複数のスイッチ１０−１〜１０−４のそれぞれに接続される。コントローラ２０は、オープンフロープロトコルに従って、複数のスイッチ１０−１〜１０−４のそれぞれにフローエントリを設定することで、複数のスイッチ１０−１〜１０−４のいずれかを介した複数の端末５０−１、５０−２と複数のサーバ６０−１〜６０−３との間の通信を制御する。
【００３５】
詳細には、コントローラ２０は、オープンフロー技術により、システム内におけるパケット転送に係る通信経路の構築及びパケット転送処理を制御する。ここで、オープンフロー技術とは、コントローラ２０が、ルーティングポリシー（フローエントリ：フロー＋アクション）に従い、マルチレイヤ及びフロー単位の経路情報を通信経路上のスイッチ１０に設定し、経路制御やノード制御を行う技術を示す（詳細は、非特許文献１を参照）。これにより、経路制御機能がルータやスイッチから分離され、コントローラによる集中制御によって最適なルーティング、トラフィック管理が可能となる。オープンフロー技術が適用されるスイッチ１０は、従来のルータやスイッチのようにパケットやフレームの単位ではなく、ＥＮＤ２ＥＮＤのフローとして通信を取り扱う。
【００３６】
図１を参照して、本発明に係るコントローラ２０の構成の詳細を説明する。コントローラ２０は、ＣＰＵ及び記憶装置を備えるコンピュータによって実現されることが好適である。コントローラ２０では、図示しないＣＰＵが記憶装置に格納されたプログラムを実行することで、図１に示す負荷分散制御部２１、ＡＲＰ応答処理部２２、スイッチ制御部２３の各機能が実現される。又、コントローラ２０は、図示しない記憶装置に記録されたホスト端末情報テーブル２４、負荷情報テーブル２５、割当情報テーブル２６を備える。
【００３７】
図２は、ホスト端末情報テーブル２４の構造の一例を示す図である。図２を参照して、ホスト端末情報テーブル２４には、端末５０やサーバ６０を識別するホスト端末ＩＤ２４が、端末５０やサーバ６０に設定されたＩＰアドレス２４２及びＭＡＣアドレス２４３に対応付けられて記録される。すなわち、ホスト端末情報テーブル２４には、端末５０やサーバ６０毎に設定されたＩＰアドレスやＭＡＣアドレスが記録される。
【００３８】
負荷分散制御部２１は、サーバ６０−１〜６０−３のそれぞれから負荷情報収集装置３０を介して負荷情報を収集し、負荷情報テーブル２５に記録及び管理する。図３は、負荷情報テーブル２５の構造の一例を示す図である。負荷情報テーブル２５には、サーバ６０を特定するサーバ情報２５１（例えばサーバ６０のホスト端末ＩＤ）に、当該サーバに設定された仮想ＩＰアドレス２５２（以下、ＶＩＰ２５２と称す）と負荷情報２５３とが対応付けられて記録される。負荷情報２５３は、ＶＩＰ２５２によって特定されるアプリケーションの負荷やＶＩＰ２５２が割り当てられたサーバの負荷（サーバ負荷）を示す。又、サーバ情報２５１は、ホスト端末情報テーブル２４におけるホスト端末ＩＤ２４１に紐付けられる。これにより、負荷分散制御部２１は、負荷情報テーブル２５を参照することで、ＶＩＰアドレスとサーバ６０の実アドレス（ＩＰアドレス２４２、ＭＡＣアドレス２４３）との関係と、サーバ６０の負荷情報２５３を管理することが可能となる。
【００３９】
負荷情報２５３は、負荷情報収集装置３０によって定期的又は任意の時期に各サーバから収集され、サーバ情報２５１やＶＩＰ２５２とともに負荷分散制御部２１に送信される。例えば、負荷情報収集装置３０は、ＳＮＭＰ（Ｓｉｍｐｌｅ  Ｎｅｔｗｏｒｋ  Ｍａｎａｇｅｍｅｎｔ  Ｐｒｏｔｏｃｏｌ）、ＣＬＩ（ｃｏｍｍａｎｄ  ｌｉｎｅ  ｕｓｅｒ  ｉｎｔｅｒｆａｃｅ）等のＡＰＩを介してアプリケーション負荷を収集する方法や、サーバ内におかれた負荷収集エージェントから情報を収集する方法などにより負荷情報２５３を収集する。負荷分散制御部２１は、負荷情報収集装置３０から定期的又は任意の時期に、負荷情報２５３を負荷情報収集装置３０から取得し、負荷情報テーブル２５を更新する。この際、負荷分散制御部２１は、能動的又は受動的に負荷情報２５３を負荷情報収集装置３０から取得する。
【００４０】
又、負荷分散制御部２１は、端末５０と、当該端末５０のアクセス先として割り当てたサーバ６０とを対応付けた情報を割当情報テーブル２６に記録及び管理する。図４は、割当情報テーブル２６の構造の一例を示す図である。割当情報テーブル２６には、宛先情報２６１、端末情報２６２、割当サーバ情報２６３が対応付けられて記録される。宛先情報２６１は、端末５０のアクセス先のアプリケーションや仮想サーバを特定する情報であり、例えば仮想マシンに設定されたＶＩＰアドレスである。あるいは宛先情報２６１は、端末５０のアクセス先のサーバを特定するＩＰアドレスでもよい。端末情報２６２は、端末５０を特定する情報であり、例えば、端末５０を識別するホスト端末ＩＤである。割当サーバ情報２６３は、現在、端末５０のアクセス先として割り当てられているサーバ６０（物理サーバ）を特定する情報であり、例えば、サーバ６０を識別するホスト端末ＩＤである。割当サーバ情報２６３が、ホスト端末情報テーブル２４のホスト端末ＩＤ２４１に紐付けられることで、端末５０のアクセス先として割り当てられたサーバ６０のＭＡＣアドレスを特定することが可能となる。旧宛先サーバ情報２６４は、“アクセス先の切替前”に端末５０のアクセス先として割り当てられていたサーバ６０（物理サーバ）を特定する情報である。負荷分散制御部２１は、端末５０のアクセス先サーバを変更すると、割当サーバ情報２６３の内容を旧宛先サーバ情報２６４として記録し、新たに端末５０の宛先として割当てたサーバのＭＡＣアドレスを割当サーバ情報２６３として更新する。
【００４１】
ＡＲＰ応答処理部２２は、制御インタフェース７０を介してスイッチ１０から通知されるＡＲＰ要求パケットに対して代理ＡＲＰ応答を実行する。詳細には、ＡＲＰ応答処理部２２は、ＡＲＰ要求パケットに含まれるターゲットアドレスに対応するホスト端末（例えばサーバ６０）のＭＡＣアドレスを送信元としたＡＲＰ応答パケットを要求元の端末５０に送信する。この際、ターゲットアドレスがサーバ６０のＩＰアドレスの場合、ＡＲＰ応答処理部２２は、ホスト端末情報テーブル２４を参照して、ターゲットアドレスに一致するＩＰアドレス２４２が設定されたサーバ６０をＡＲＰ要求先として特定するとともに、そのサーバ６０のＭＡＣアドレス２４３をＡＲＰ応答パケットの送信元ＭＡＣアドレスとして設定する。一方、ターゲットアドレスがＶＩＰアドレスの場合、ＡＲＰ応答処理部２２は、負荷情報テーブル２５を参照して、ターゲットアドレスに一致するＶＩＰ２５２に対応付けられたサーバ情報２５１からＡＲＰ要求先のサーバ６０を特定し、ホスト端末情報テーブル２４において当該サーバ情報２５１に紐付けられたホスト端末ＩＤ２４に対応するＭＡＣアドレス２４３をＡＲＰ応答パケットの送信元ＭＡＣアドレスとして設定する。
【００４２】
以上のような構成により、本発明に係るコントローラ２０は、サーバ６０毎に設定されたＭＡＣアドレスやＶＩＰアドレスを管理するとともに、ＡＲＰ要求のターゲットアドレスに対応するサーバ６０のＭＡＣアドレスを送信元としたＡＲＰ応答パケットを当該サーバ６０に替わって代理応答する。
【００４３】
スイッチ制御部２３は、オープンフロープロトコルに従ったスイッチ１０に対してフローエントリ（ルール＋アクション）の設定又は削除を行う。これにより、スイッチ１０は、受信パケットのヘッダ情報に応じたルールに対応するアクション（例えばパケットデータの中継や破棄）を実行する。
【００４４】
フローエントリに設定されるルールには、例えば、ＴＣＰ／ＩＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ／Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｃｏｌ）のパケットデータにおけるヘッダ情報に含まれる、ＯＳＩ（Ｏｐｅｎ  Ｓｙｓｔｅｍｓ  Ｉｎｔｅｒｃｏｎｎｅｃｔｉｏｎ）参照モデルのレイヤ１からレイヤ４のアドレスや識別子の組み合わせが規定される。例えば、レイヤ１の物理ポート、レイヤ２のＭＡＣアドレス、ＶＬＡＮタグ（ＶＬＡＮ  ｉｄ）、レイヤ３のＩＰアドレス、レイヤ４のポート番号のそれぞれの組み合わせがルールとして設定される。尚、ＶＬＡＮタグには、優先順位（ＶＬＡＮ  Ｐｒｉｏｒｉｔｙ）が付与されていても良い。
【００４５】
ここで、スイッチ制御部２３によってルールに設定されるポート番号等の識別子やアドレス等は、所定の範囲で設定されても構わない。又、宛先や送信元のアドレス等を区別してルールとして設定されることが好ましい。例えば、ＭＡＣ宛先アドレスの範囲や、接続先のアプリケーションを特定する宛先ポート番号の範囲、接続元のアプリケーションを特定する送信元ポート番号の範囲がルールとして設定される。更に、データ転送プロトコルを特定する識別子をルールとして設定してもよい。
【００４６】
フローエントリに設定されるアクションには、例えばＴＣＰ／ＩＰのパケットデータを処理する方法が規定される。例えば、受信パケットデータを中継するか否かを示す情報や、中継する場合はその送信先が設定される。又、アクションとして、パケットデータの複製や、破棄することを指示する情報が設定されてもよい。
【００４７】
スイッチ制御部２３は、スイッチ１０からのファーストパケットの通知やＡＲＰ要求パケットの通知に応じてスイッチ１０に対するフローエントリの設定を行う。スイッチ制御部２３における通信経路の設定、フローエントリの設定及び管理は、非特許文献１に記載のオープンフロープロトコルに準拠して行われるため、ここでの詳細な説明は省略する。ただし、当該プロトコルで規定されていない動作については後述する。
【００４８】
スイッチ１０は、コントローラ２０によって設定（更新）されたフローエントリに従って受信パケットの処理方法（アクション）を決定する。受信パケットに対するアクションとして、例えば、他のスイッチ１０への転送や破棄がある。
【００４９】
図５は、本発明に係るスイッチ１０の構成の一例を示す図である。図５を参照して、スイッチ１０は、スイッチ処理部１１、フローテーブル１２、スイッチ制御部１３を備える。スイッチ処理部１１は、回線１４−１〜１４−Ｎを収容し、収容した回線を介して転送されるパケットに対するスイッチ機能を実現する。スイッチ制御部１３は、制御インタフェース７０を介してコントローラ２０に接続され、コントローラ２０からの指示に応じてフローテーブル１２へのフローエントリの設定を制御する。スイッチ処理部１１は、フローテーブル１２に設定されたフローエントリに従って、受信パケットに対する処理を決定する。詳細には、スイッチ処理部１１は、受信パケットのヘッダ情報に適合するルールがフローテーブル１２に設定されている場合、当該ルールを含むフローエントリに規定されたアクションを実行する。一方、受信パケットのヘッダ情報に適合するルールがフローテーブル１２に設定されていない場合、当該パケットデータをファーストパケットとして、スイッチ制御部１３に通知する。スイッチ制御部１３は、ファーストパケットを、制御インタフェース７０を介してコントローラ２０に送信する。
【００５０】
又、スイッチ処理部１１は、受信パケットがＡＲＰ要求である場合、受信パケットをスイッチ制御部１３に通知する。スイッチ制御部１３は、通知された受信パケット（ＡＲＰ要求パケット）を、制御インタフェース７０を介してコントローラ２０に送信する。
【００５１】
切替装置４０は、セキュアネットワークである制御インタフェース８０を介して、複数のスイッチ１０−１〜１０−４のそれぞれに接続される。切替装置４０は、ＴＣＰやＵＤＰなどのレイヤ４の粒度でトラヒックを処理できるスイッチやサーバで実現できる。図６は、本発明に係る切替装置４０の構成の一例を示す図である。切替装置４０は、ＣＰＵ及び記憶装置を備えるコンピュータによって実現されることが好適である。切替装置４０では、図示しないＣＰＵが記憶装置に格納されたプログラムを実行することで、図６に示すスイッチ処理部４１、スイッチ制御部４３、切替制御部４４の各機能が実現される。又、切替装置４０の記憶装置（図示なし）には、フローテーブル４２と切替情報テーブル４５が記録される。
【００５２】
スイッチ処理部４１は、制御インタフェース８０を介して複数のスイッチ１０−１〜１０−４で構成されるスイッチネットワークに接続され、制御インタフェース８０を介して転送されるパケットに対するスイッチ機能を実現する。スイッチ制御部４３は、切替情報テーブル４５に基づいてフローテーブル４２へのフローエントリの設定を制御する。切替情報テーブル４５は、切替制御部４４によって記録、管理される。図７は、切替情報テーブル４５の構造の一例を示す図である。図７を参照して、切替制御部４４は、コントローラ２０から送信された宛先情報４５１、端末情報４５２、新宛先サーバ情報４５３、旧宛先サーバ情報４５４を対応付けて記録する。宛先情報４５１は、端末５０のアクセス先のアプリケーションや仮想サーバを特定する情報であり、例えば仮想マシンに設定されたＶＩＰアドレスである。端末情報２６２は、端末５０を特定する情報であり、例えば、端末５０のＭＡＣアドレスである。新宛先サーバ情報４５３は、新たに、端末５０のアクセス先として割り当てられたサーバ６０（物理サーバ）を特定する情報であり、例えば、サーバ６０のＭＡＣアドレスである。旧宛先サーバ情報４５４は、“アクセス先の切替前”に端末５０のアクセス先として割り当てられていたサーバ６０（物理サーバ）を特定する情報であり、例えばサーバ６０のＭＡＣアドレスである。
【００５３】
スイッチ処理部４１は、受信パケットを解析し、解析結果をスイッチ制御部４３に通知する。スイッチ制御部４３は通知された解析結果に基づいて、フローテーブル４２に設定されたフローエントリのアクションを変更する。例えば、スイッチ処理部４１は、受信パケットがＳＹＮフラグを含むＴＣＰパケットであるかや、受信パケットに適合するフローエントリがあるかを判定し、判定結果をスイッチ制御部４３に通知する。スイッチ制御部４３は、受信パケットがＳＹＮフラグを含むＴＣＰパケットである場合や、受信パケットがＴＣＰパケットではない場合、切替情報テーブル４５を参照して、受信パケットに適合するフローエントリのアクションで規定した宛先を、新宛先サーバ情報４５３で示されるＭＡＣアドレスに変更する。あるいは、スイッチ制御部４３は、受信パケットがＳＹＮフラグを含むＴＣＰパケットではなく、当該パケットに適合するフローエントリが設定されている場合、当該フローエントリに規定されたアクションを実行する。
【００５４】
以上のような構成により、本発明によるコンピュータシステムでは、サーバの負荷に応じて端末のアクセス先の変更をコントローラ２０によって一元制御するともに、切替装置４０を利用することで、セッションを維持しながら端末５０のアクセス先のサーバ６０を他のサーバに切り替えることが可能となる。
【００５５】
（動作）
以下、図８Ａから図１６を参照して、本発明によるコンピュータシステムの動作の詳細を説明する。以下では、（１）ＡＲＰ代理応答する場合の負荷分散動作、（２）ＡＲＰ代理応答しない場合の動作、（３）宛先サーバ切替動作、（４）セッションを維持しながら宛先サーバを切替える動作、及び（５）フローエントリの削除に応じた切替終了動作の５つの動作について説明する。
【００５６】
（１）ＡＲＰ代理応答する場合の負荷分散動作
図８Ａ、図８Ｂ及び図９を参照して、本発明によるコンピュータシステムのＡＲＰ代理応答する場合の負荷分散動作を説明する。ここでは、端末５０−１が、サーバ６０−１〜６０−２に対して割り当てられているＶＩＰアドレス宛に通信を開始するものとして説明する。図８Ａ及び図８Ｂは、ＡＲＰ代理応答する場合の負荷分散動作の一例を示すシーケンス図である。図９は、本発明によるコントローラ２０におけるＡＲＰ応答処理の動作の一例を示すフロー図である。
【００５７】
本動作に先立って、コントローラ２０は、スイッチ１０−１においてＡＲＰパケットを受信した場合にはコントローラに送信するフローエントリをスイッチ１０−１のフローテーブル１２に記述しておく。例えば、端末５０−１に接続するインタフェース（ポート番号）と、ＡＲＰ要求を示す情報としてイーサネットのタイプフィールドが０ｘ０８０６であるマッチ条件をルールとし、コントローラ２０への転送をアクションとするフローテエントリがスイッチ１０−１に設定される。
【００５８】
先ず、端末５０−１は、アクセス先のＶＩＰアドレスに対するレイヤ２のアドレスであるＭＡＣアドレスを取得するため、ＡＲＰ要求パケットをブロードキャスト送信する（ステップＳ１０１）。ここで送信されるＡＲＰ要求パケットは、宛先がブロードキャストアドレス、送信元が端末５０−１のＭＡＣアドレスであり、ペイロー途中に解決したいターゲットであるＶＩＰアドレスが示されている。
【００５９】
端末５０−１に隣接するスイッチ１０−１は、端末５０−１からのパケットを受信すると、フローテーブル１２を参照し該当エントリを検索し、当該パケットに適合する（マッチする）フローエントリが設定されているかを判定する（ステップＳ１０２）。ここで、受信パケットは、端末５０−１に接続するインタフェースを介したＡＲＰ要求パケットであるため、スイッチ１０−１は、当該パケットに適合するフローエントリに規定されたアクション“受信したＡＲＰ要求パケットをコントローラ２０に通知する”を実行する（ステップＳ１０２Ｎｏ、Ｓ１０３Ｙｅｓ、Ｓ１０４）。コントローラ２０は、スイッチ１０−１から通知されたＡＲＰ要求パケットに対して、ＡＲＰ応答処理を実行する（ステップＳ１０５）。
【００６０】
図９を参照して、ステップＳ１０５におけるＡＲＰ応答処理の詳細を説明する。コントローラ２０のＡＲＰ応答処理部２２は、通知されたＡＲＰ要求パケットのターゲットアドレスを参照し、当該要求がＶＩＰアドレスに対するＡＲＰ要求か否かを判定する（ステップＳ１１）。ここでは、ＡＲＰ要求パケットがＶＩＰアドレス宛のパケットであるため、ＡＲＰ応答処理部２２は、負荷分散制御部２１から当該ＶＩＰアドレスに対する実サーバ情報（ＭＡＣアドレス）を取得する（ステップＳ１１Ｙｅｓ、Ｓ１２）。
【００６１】
詳細には、負荷分散制御部２１は、負荷情報テーブル２５を参照して、受信パケットの宛先ＶＩＰアドレスが割り当てられたサーバ（サーバ情報２５１）を特定し、特定したサーバ情報２５１に対応するＭＡＣアドレス２４３をホスト端末情報テーブル２４から抽出し、ＡＲＰ応答処理部２２に渡す。この際、宛先ＶＩＰアドレスが割り当てられたサーバが複数ある場合、負荷分散制御部２１は、複数のサーバ（サーバ情報２５１）のそれぞれに対応する負荷情報２５３に基づいて、アクセス先として割り当てるサーバを決定する。例えば、負荷分散制御部２１は、宛先ＶＩＰアドレスが割り当てられた複数のサーバのうち、最も小さい負荷のサーバ６０−１を、端末５０−１のアクセス先として割り当て、当該サーバのＭＡＣアドレスをＡＲＰ応答処理部２２に渡す。負荷分散制御部２１は、ＡＲＰ要求パケットのターゲットＶＩＰアドレスにサーバを割り当てると、この割り当てた結果を割当情報テーブル２６に記録する。詳細には、負荷分散制御部２１は、ＡＲＰ要求パケットのターゲットＶＩＰアドレスを宛先情報２６１、ＡＲＰ要求パケットの送信元アドレス（例えば送信元ＭＡＣアドレス）に対応するホスト端末ＩＤを端末情報２６２、当該ＶＩＰアドレスに割り当てたサーバのホスト端末ＩＤを割当サーバ情報２６３とするとともに、それぞれを対応付けて割当情報テーブル２６に記録する。
【００６２】
あるいは、負荷情報２５３に応じてＶＩＰアドレスに割当られたサーバが、予め割当情報テーブル２６に記録されている場合、負荷分散制御部２１は、割当情報テーブル２６から、ターゲットＶＩＰアドレスに対応する割当サーバ情報２６３を抽出し、割当サーバ情報２６３に対応するＭＡＣアドレス２４３をＡＲＰ応答処理部２２に渡す。尚、ステップＳ１２において、負荷分散制御部２１は、割当情報テーブル２６を参照した後、予めＶＩＰアドレスに割当てられたサーバが記録されていない場合、負荷情報テーブル２５に基づいてターゲットＶＩＰアドレスに割当てるサーバを決定することが好ましい。
【００６３】
一方、ステップＳ１１において、受信パケットがＶＩＰアドレスに対するＡＲＰ要求パケットでない場合（例えば宛先ＩＰアドレスに対するＡＲＰ要求パケットの場合）、ＡＲＰ応答処理部２２は、代理応答するか否かを判定する（ステップＳ１４）。例えば、コントローラ２０に、ネットワークに接続している端末の情報が予め設定されている場合、無駄なトラヒックを防ぐため、受信したＡＲＰ要求パケットをフラッディング（ブロードキャスト）しなくても代理で応答を返すことができる。ステップＳ１４においてＡＲＰ応答処理部２２は、所定の端末からのＡＲＰ要求に対して代理応答することが設定されているか否かを判定し、設定されている場合、当該設定に基づいてＡＲＰ応答を行う（ステップＳ１４Ｙｅｓ、Ｓ１５、Ｓ１３）。ここで、ＡＲＰ要求に対する代理応答をする場合、ＡＲＰ応答処理部２２は、ファーストパケットの宛先ＩＰアドレスに対応するＭＡＣアドレス２４３をホスト端末情報テーブル２４から取得する（ステップＳ１５）。負荷分散制御部２１は、ＡＲＰ要求パケットのターゲットＩＰアドレスにサーバが割り当てられると、この割り当てられた結果を割当情報テーブル２６に記録することが好ましい。詳細には、負荷分散制御部２１は、ＡＲＰ要求パケットのターゲットＩＰアドレスを宛先情報２６１、ＡＲＰ要求パケットの送信元アドレス（例えば送信元ＭＡＣアドレス）に対応するホスト端末ＩＤを端末情報２６２、当該ＩＰアドレスに割り当てたサーバのホスト端末ＩＤを割当サーバ情報２６３とするとともに、それぞれを対応付けて割当情報テーブル２６に記録する。
【００６４】
ＡＲＰ応答処理部２２は、負荷分散制御部２１又はホスト端末情報テーブル２４から取得したＭＡＣアドレスを送信元ＭＡＣアドレスとし、ＡＲＰ要求パケットの送信元ＭＡＣアドレスを宛先ＭＡＣアドレスとしたＡＲＰ応答パケットを、要求元の端末５０−１に送信する（ステップＳ１３、図８ＢのステップＳ１０６）。ここでは、サーバ６０−１のＭＡＣアドレスを送信元ＭＡＣアドレスとし、端末５０−１のＭＡＣアドレスを宛先ＭＡＣアドレスとしたＡＲＰ応答パケットが送信される。
【００６５】
図８Ａ及び図８Ｂを参照して、コントローラ２０から送信されたＡＲＰ応答パケットは、制御インタフェース７０を介して、ＡＲＰ要求パケットの通知元のスイッチ１０−１に送信される（ステップＳ１０６）。この際、コントローラ２０は、当該ＡＲＰ応答パケットを端末５０−１に転送するためのフローエントリを、ＡＲＰ応答パケットの送信に先立ってスイッチ１０−１に設定した後、ＡＲＰ応答パケットをスイッチ１０−１に送信する。スイッチ１０−１は、フローテーブルに従い、受信したＡＲＰ応答パケットを端末５０−１に転送する（ステップＳ１０７）。
【００６６】
端末５０−１は、受信したＡＲＰ応答パケットの送信元ＭＡＣアドレスを、宛先ＶＩＰアドレスに割り当てられたＭＡＣアドレスとしてＡＲＰテーブルに設定する（ステップＳ１０８）。ここでは、宛先ＶＩＰアドレスのサーバ６０−１のＭＡＣアドレスが割り当てられる。ステップＳ１０８以降、端末５０−１は、ＶＩＰアドレス宛のパケットの宛先ＭＡＣアドレスをサーバ６０−１のＭＡＣアドレスとして、ＶＩＰアドレス宛の通信を行うこととなる（ステップＳ１０９〜Ｓ１１５）。詳細には、端末５０−１は、サーバ６０−１のＭＡＣアドレスを宛先としたＶＩＰアドレス宛のパケットを送信する（ステップＳ１０９）。スイッチ１０−１は受信パケットがフローテーブル内のエントリに適合するか否かを判定し、適合しない場合、ファーストパケットとしてコントローラ２０に通知する（ステップＳ１１０Ｙｅｓ、Ｓ１１１）。コントローラ２０は、通知されたファーストパケットを解析し、フロー制御処理を行う（ステップＳ１１２）。詳細には、コントローラ２０は、ファーストパケットの送信元ＭＡＣアドレス及び宛先ＭＡＣアドレスから通信経路の端点となる端末５０−１及びサーバ６０−１を特定し、端点間を結ぶ通信経路を算出する。続いてコントローラ２０は、パケットが通信経路を転送するためのフローエントリを決定する。コントローラ２０は、通信経路上のスイッチ１０にフローエントリの設定を指示する（ステップＳ１１３）。スイッチ１０−１は、フローエントリの設定指示に応じて、自身のフローテーブル１２に、当該フローエントリを設定し、ステップＳ１０９において受信したパケットを当該フローエントリに従った転送先に転送する（ステップＳ１１５）。例えば、“端末５０−１のＭＡＣアドレスを送信元アドレスとし、サーバ６０−１のＭＡＣアドレスを送信元アドレスとしたＶＩＰアドレス宛のパケットを、サーバ６０−１に転送する”ことが規定されたフローエントリが、スイッチ１０−１に設定される。
【００６７】
ステップＳ１１４以降、端末５０−１のＭＡＣアドレスを送信元アドレスとし、サーバ６０−１のＭＡＣアドレスを送信元アドレスとしたＶＩＰアドレス宛のパケットは、スイッチ１０−１を介してサーバ６０−１に転送されることとなる。尚、図８Ａ及び図８Ｂに示す一例では、スイッチ１０−１からサーバ６０−１にパケットが転送されているが、フローエントリに、サーバ６０−１に至る通信経路上の他のスイッチ１０が転送先として規定されている場合は、他のスイッチ１０を介してサーバ６０−１に転送されることは言うまでもない。
【００６８】
又、スイッチ１０に設定されるフローエントリのルールとしては、少なくとも送信元ＭＡＣアドレス及び宛先ＭＡＣアドレスが規定されていればよく、宛先ＩＰアドレスは規定されていなくても良い。これにより、パケットは通常のＬ２スイッチネットワークで転送可能となるため、スイッチ１０のもつＬ２スイッチ機能を利用することで、サーバ６０−１との間で通信が可能になる。この場合、スイッチ１０はＬ２転送を行うため、パケットはその宛先アドレスのみに基づいて転送される。すなわち、ネットワーク内でパケットヘッダの書き換えが伴われないため、高速かつ安価なスイッチを利用してシステムを構成することが可能である。
【００６９】
以上のように、本発明によるコンピュータシステムでは、端末５０が実施したＶＩＰアドレスに対するＡＲＰ要求をコントローラ２０でキャプチャし、ＶＩＰアドレスに割当てたサーバ（のＭＡＣアドレス）を送信元としてＡＲＰ代理応答を行う。又、コントローラ２０によってＶＩＰアドレスに割り当てたＭＡＣアドレス宛に受信パケットを転送するフローエントリが、スイッチ１０に設定される。これにより、スイッチ１０はＭＡＣアドレスを変換することなくＶＩＰアドレスに対応する宛先サーバ（ＭＡＣアドレス）に受信パケットを転送することができる。従って、本発明によれば、高速で且つ安価なＬ２ネットワークにおいて、端末５０のアクセス先をコントローラ２０において任意に設定することができる。又、本発明によるコントローラ２０は、サーバ負荷に応じてアクセス先のサーバを変更するため、高速で且つ安価なＬ２ネットワークにおいて、サーバ負荷分散を実現することができる。
【００７０】
（２）ＡＲＰ代理応答しない場合の動作
図９に示すステップＳ１４において、ＡＲＰ要求に対する代理応答を行わない場合の動作を、図１０Ａ及び図１０Ｂを参照して説明する。図１０Ａ及び図１０Ｂは、コントローラにおいてＡＲＰ代理応答を行わない場合のコンピュータシステムの動作を示すシーケン図である。
【００７１】
図８Ａ及び図８Ｂで示す動作と同様に、端末５０−１から送信されたＶＩＰアドレスをターゲットアドレスとしたＡＲＰ要求パケットがスイッチ１０−１からコントローラ２０に通知される（ステップＳ１０１からＳ１０４）。コントローラ２０は、スイッチ１０−１から通知されたＡＲＰ要求パケットに対して、ＡＲＰ応答処理を実行する（ステップＳ１０５）。
【００７２】
図９を参照して、コントローラ２０において、ＡＲＰ要求に対する代理応答は行わない場合のＡＲＰ応答処理（ステップＳ１０５）を説明する。コントローラ２０のＡＲＰ応答処理部２２は、通知されたＡＲＰ要求パケットのターゲットアドレスを参照し、当該要求がＶＩＰアドレスに対するＡＲＰ要求か否かを判定する（ステップＳ１１）。ここでは、受信パケットがＶＩＰアドレスに対するＡＲＰ要求パケットでないため（例えばＡＲＰ要求パケットはＩＰアドレス宛のパケットであるため）、ＡＲＰ応答処理部２２は、代理応答するか否かを判定する（ステップＳ１４）。ここで、ＡＲＰ要求に対する代理応答をしない場合（ＡＲＰ要求元端末に対して代理応答することが、コントローラ２０に設定されていない場合）、ＡＲＰ応答処理部２２は、ＡＲＰパケットを、通知元のスイッチ１０に返却し、当該ＡＲＰパケットブロードキャストさせるためのＡＲＰ指示を行う（ステップＳ１６、図１０ＡのステップＳ２０１）。
【００７３】
図１０Ａ及び図１０Ｂを参照して、ＡＲＰ要求に対する代理応答をしない場合、コントローラ２０は、ＡＲＰ要求パケットをブロードキャストするように当該ＡＲＰ要求パケットの通知元のスイッチ１０に指示する（ステップＳ２０１）。ここでコントローラ２０は、スイッチ１０−１に対し、ＡＲＰ要求パケットをブロードキャストさせるためのフローエントリの設定を指示するとともに、通知されたＡＲＰ要求パケットを返却する。スイッチ１０−１は、フローエントリの設定指示に応じてフローテーブル１２を更新し、当該フローエントリに従い、受信したＡＲＰ応答パケットをブロードキャストする（ステップＳ２０２、Ｓ２０３）。ここでは、ＡＲＰ要求パケットは、サーバ６０−１、６０−２に転送される。尚、図１０Ａ及び図１０Ｂに示す一例では、スイッチ１０−１からサーバ６０−１、６０−２にＡＲＰ要求パケットが転送されているが、フローエントリに、他のスイッチ１０が転送先として設定されている場合は、他のスイッチ１０を介してサーバ６０−１、６０−２に転送されることは言うまでもない。
【００７４】
ステップＳ２０３以降は、通常の端末によるＡＲＰ手順と同様に宛先ＭＡＣの取得動作が行われる（ステップＳ２０４〜Ｓ２０６）。図１０Ａ及び図１０Ｂに示す一例では、サーバ６０−２からＡＲＰ応答パケットが端末５０−１に送信され、端末５０−１は、ＡＲＰ応答パケットの送信元ＭＡＣアドレスを宛先ＩＰアドレスのＭＡＣアドレスとしてＡＲＰテーブルに設定する（ステップＳ２０４〜Ｓ２０６）。
【００７５】
ステップＳ２０６以降、図８Ａ及び図８Ｂに示す動作と同様に、端末５０−１のＭＡＣアドレスを送信元アドレスとし、サーバ６０−２のＭＡＣアドレスを送信元アドレスとしたＩＰアドレス宛のパケットは、スイッチ１０−１を介してサーバ６０−２に転送されることとなる（ステップＳ１０９〜Ｓ１１５）。
【００７６】
（３）宛先サーバ切替動作
図１１及び図１２を参照して、本発明によるコンピュータシステムにおける宛先サーバ切替動作を説明する。ここでは、端末５０−１のアクセス先のサーバ６０−１を削除し、アクセス先をサーバ６０−２に切り替える場合の動作を一例に説明する。図１１は、本発明によるコンピュータシステムにおける宛先サーバ切替動作の一例を示すシーケン図である。図１２は、本発明によるコントローラ２０におけるサーバ削除処理（宛先サーバ切替処理）の動作の一例を示すフロー図である。
【００７７】
図１１を参照して、端末５０−１は、スイッチ１０−１を介してサーバ６０−１に接続している（ステップＳ３０１、Ｓ３０２）。このとき、例えばサーバ６０−１に障害が発生した場合、負荷情報収集装置３０により、サーバ６０−１の削除がコントローラ２０に通知される（図示なし）。コントローラ２０は、サーバ削除の通知に応じてサーバ削除処理（宛先サーバ切替処理）を実行する（ステップＳ３０３）。
【００７８】
図１２を参照して、ステップＳ３０３におけるサーバ削除処理の詳細を説明する。負荷分散制御部２１は、負荷情報収集装置３０からサーバの削除情報を取得すると、割当情報テーブル２６を参照して、該当サーバのＭＡＣアドレスを宛先として割当てている端末５０を特定する（ステップＳ２１、２２）。詳細には、負荷分散制御部２１は、削除するサーバのホスト端末ＩＤに一致する割当サーバ情報２６３によって割当情報テーブル２６を検索し、対応する宛先情報２６１及び端末情報２６２を特定する（ステップＳ２３）。ここではＶＩＰアドレス及び端末５０−１が特定されるものとする。
【００７９】
続いてＡＲＰ応答処理部２２は、負荷分散制御部２１から、特定された宛先情報２６１及び端末情報２６２に割当てる実サーバ情報（ＭＡＣアドレス）を取得する。詳細には、負荷分散制御部２１は、負荷情報テーブル２５を参照して、ステップＳ２２において特定された宛先情報２６１（例えば宛先ＶＩＰアドレス）が割り当てられたサーバ（サーバ情報２５１）を特定し、特定したサーバ情報２５１に対応するＭＡＣアドレス２４３をホスト端末情報テーブル２４から抽出し、ＡＲＰ応答処理部２２に渡す。この際、ＶＩＰアドレスが割り当てられたサーバが複数ある場合、負荷分散制御部２１は、複数のサーバ（サーバ情報２５１）のそれぞれに対応する負荷情報２５３に基づいて、新たなアクセス先として割り当てるサーバを決定する。例えば、負荷分散制御部２１は、ＶＩＰアドレスが割り当てられた複数のサーバのうち、削除されたサーバ６０−１を除く最も小さい負荷のサーバ６０−２を、端末５０−１のアクセス先として割り当て、当該サーバのＭＡＣアドレスをＡＲＰ応答処理部２２に渡す。負荷分散制御部２１は、ＶＩＰアドレスに対応する新たな宛先としてサーバ６０−２を割り当てると、この割り当てた結果を割当情報テーブル２６に記録する。このとき、負荷分散制御部２１は、サーバの割当変更前の割当サーバ情報２６３を旧宛先サーバ情報２６４として記録し、新たにＶＩＰアドレスに割当てるサーバのホスト端末ＩＤを割当サーバ情報２６３として上書きする。例えば、負荷分散制御部２１は、ステップＳ２２で特定されたＶＩＰアドレスを宛先情報２６１、ステップＳ２２において特定された端末５０−１に対応するホスト端末ＩＤを端末情報２６２、当該ＶＩＰアドレスに割り当てたサーバ６０−２のホスト端末ＩＤを割当サーバ情報２６３とするとともに、それぞれを対応付けて割当情報テーブル２６に記録する。
【００８０】
ＡＲＰ応答処理部２２は、負荷分散制御部２１において新たに割当てられたサーバのＭＡＣアドレスを送信元ＭＡＣアドレスとするＧＡＲＰ（Ｇｒａｔｕｉｏｕｓ  ＡＲＰ）パケットを、ステップＳ２２で特定された端末５０に発光する（ステップＳ２４、図１１のステップＳ３０４）。ここで、ＧＡＲＰパケットには、端末５０−１とその宛先ＶＩＰアドレスに対して新たに割当てられたサーバ６０−２のＭＡＣアドレスが送信元ＭＡＣアドレスとして設定されている。図１１を参照して、ＧＡＲＰパケットはスイッチ１０−１を介して端末５０−１に送信される（ステップＳ３０４、Ｓ３０５）。
【００８１】
端末５０−１は、受信したＧＡＲＰパケットの送信元ＭＡＣアドレスを、宛先ＶＩＰアドレスに割り当てられたＭＡＣアドレスとしてＡＲＰテーブルを更新する（ステップＳ３０６）。ここでは、宛先ＶＩＰアドレスにサーバ６０−２のＭＡＣアドレスが割り当てられる。ステップＳ３０６以降、端末５０−１は、図１０Ａ及び図１０ＢのステップＳ１０９〜Ｓ１１５と同様に、ＶＩＰアドレス宛のパケットの宛先ＭＡＣアドレスをサーバ６０−２のＭＡＣアドレスとして、ＶＩＰアドレス宛の通信を行うこととなる（ステップＳ３０７〜Ｓ３１３）。
【００８２】
以上のように、本発明によれば、宛先サーバが削除されても、コントローラ２０による一元制御により、負荷を考慮した宛先サーバの切替が可能となる。
【００８３】
（４）セッションを維持しながら宛先サーバを切替える動作
図１３から図１５を参照して、本発明によるコンピュータシステムのセッションを維持しながら宛先サーバを切替える動作について説明する。ここでは、端末５０−１とサーバ６０−１との間の通信を、端末５０−１とサーバ６０−２との間の通信に切り替える場合について説明する。図１３は、本発明によるコンピュータ装置において、セッションを維持しながら宛先サーバを切替える動作の一例を示すシーケンス図である。図１４は、本発明によるコントローラ２０における切替処理の動作の一例を示すフロー図である。図１５は、本発明による切替装置４０におけるパケット制御処理の動作の一例を示すフロー図である。
【００８４】
図１３を参照して、端末５０−１は、スイッチ１０−１を介してサーバ６０−１に接続している（ステップＳ４０１、Ｓ４０２）。このとき、コントローラ２０は、例えばサーバ６０−１への負荷が増大すると、端末５０−１とサーバ６０−１との間の通信を、負荷の小さな他のサーバ６０との通信に切り替えるための切替処理を実行する（ステップＳ４０３）。
【００８５】
図１４を参照して、ステップＳ４０３における切替処理の詳細を説明する。負荷分散制御部２１は、負荷情報テーブル２５及び割当情報テーブル２６を参照して、端末の宛先ＶＩＰアドレスに割当てられたサーバのうち、負荷が増大したサーバを、負荷の小さな他のサーバに切り替える（ステップＳ３１）。詳細には、負荷分散制御部２１は、端末の宛先ＶＩＰアドレスに割当てられたサーバの負荷が、所定の閾値を超えた場合、あるいは、当該宛先ＶＩＰアドレスをもつ他のサーバの負荷が所定の閾値よりも低下した場合、現在ＶＩＰアドレスに割当てている宛先サーバを、負荷の小さな他のサーバに切り替える。負荷分散制御部２１は、サーバの割当変更前の割当サーバ情報２６３を旧宛先サーバ情報２６４として記録し、新たに宛先サーバとして割当てるサーバのホスト端末ＩＤを割当サーバ情報２６３として上書きする。例えば、負荷分散制御部２１は、負荷が閾値を越えたサーバ６０−１のホスト端末ＩＤを旧宛先サーバ情報２６４とするとともに、負荷が小さいサーバ６０−２のホスト端末ＩＤを割当サーバ情報２６３として宛先情報２６１（ＶＩＰアドレス）及び端末情報２６２（端末５０−１）に対応付けて記録する。尚、負荷分散制御部２１による宛先サーバの切替動作は、定期的に行われても良いし、任意の時期（例えば、負荷情報テーブル２５の更新時（負荷情報収集装置３０からの負荷情報の通知時））に行われても良い。
【００８６】
負荷分散制御部２１は、宛先サーバを切替えると、切替前後の宛先サーバの情報（ＭＡＣアドレス）を、切替情報として切替装置４０に通知する（ステップＳ３２、図１３のＳ４０４）。詳細には、ステップＳ３１において更新された割当サーバ情報２６３及び旧宛先サーバ情報２６４に対応するＭＡＣアドレス２４３と、これらに対応付けられた端末情報２６２に対応するＭＡＣアドレス及び宛先情報２６１（ＶＩＰアドレス）が、切替情報として切替装置４０に送信される。ここでは、端末５０−１からＶＩＰアドレス宛のトラヒックに割当てられた、切替前のサーバ６０−１のＭＡＣアドレスと切替後のサーバ６０−２のＭＡＣアドレスとの対応情報が、切替情報として切替装置４０に通知される。
【００８７】
図１３を参照して、切替装置４０の切替制御部４４は通知された切替情報を、切替情報テーブル４５に記録する（ステップＳ４０５）。ここでは、切替情報に含まれる宛先情報２６１（ＶＩＰアドレス）、端末情報２６２に対応するＭＡＣアドレス、割当サーバ情報２６３に対応するＭＡＣアドレス及び旧宛先サーバ情報２６４に対応するＭＡＣアドレス２４３がそれぞれ、宛先情報４５１、端末情報４５２、新宛先サーバ情報４５３及び旧宛先サーバ情報４５４として切替情報テーブル４５に記録される。
【００８８】
切替装置４０に切替情報を通知すると、コントローラ２０は、切替前のサーバ６０宛の通信経路を切替装置４０に振り向けるようにフローエントリの設定（変更）を、当該通信経路上のスイッチ１０に対して指示する（リダイレクト設定指示、ステップＳ４０６、図１４のＳ３３）。詳細には、コントローラ２０のスイッチ制御部２３は、リダイレクト設定の対象となる端末５０と切替前のサーバ６０との間の通信経路上において端末５０に隣接するスイッチ１０のフローエントリを変更する。ここでは、端末５０−１に隣接するスイッチ１０−１のフローエントリの変更を指示する。
【００８９】
スイッチ１０−１は、フローエントリの設定指示に応じて、自身のフローテーブル１２に、当該フローエントリを設定する（ステップＳ４０７）。ここでは、“端末５０−１のＭＡＣアドレスを送信元ＭＡＣとし、サーバ６０−１のＭＡＣアドレスを宛先ＭＡＣアドレスとしたパケットを、切替装置４０に転送する”と規定されたフローエントリが設定される。
【００９０】
ステップＳ４０７以降、端末５０−１のＭＡＣアドレスを送信元アドレスとし、サーバ６０−１のＭＡＣアドレスを送信元アドレスとしたＶＩＰアドレス宛のパケットは、スイッチ１０−１を介してサーバ６０−１に転送されることとなる。（ステップＳ４０８、Ｓ４０９）。詳細には、端末５０−１は、サーバ６０−１のＭＡＣアドレスを宛先としたＶＩＰアドレス宛のパケットを送信する（ステップＳ４０８）。スイッチ１０−１は受信パケットをフローエントリに従った切替装置４０に転送する（ステップＳ４０９）。これにより、端末５０−１から宛先ＭＡＣが６０−１宛のトラヒックのリダイレクトが実現される。
【００９１】
切替装置４０は、パケットを受信すると、パケット制御処理により受信パケットを解析し、解析結果に応じてフローエントリの変更やフローエントリに従った処理を行う（ステップＳ４１０）。
【００９２】
図１５を参照して、ステップＳ４１３におけるパケット制御処理の一例を説明する。切替装置４０では、ＴＣＰのセッションを意識して、新規ＴＣＰコネクションから順次、その宛先サーバを切替先のサーバに切替える。宛先サーバの切替方法については、切替装置４０内でパケット内の宛先ＭＡＣアドレスを切替先のサーバのＭＡＣアドレスに変換することで実現される。
【００９３】
先ず、切替装置４０は、受信パケットがＴＣＰパケットか否かを判定する（ステップＳ４１）。受信パケットがＴＣＰパケットではない場合、コネクションの概念がないため、スイッチ処理部４１は、受信パケットの宛先を新宛先サーバ情報４５３に対応するサーバ６０とし、“受信パケットの宛先ＭＡＣアドレスを当該サーバ６０のＭＡＣアドレスに変換して転送する”ことを規定したフローエントリを、フローテーブル４２に登録する（ステップＳ４１Ｎｏ、Ｓ４３）。詳細には、ステップＳ４３においてスイッチ制御部４３は、切替情報テーブル４５から、受信パケットの送信元ＭＡＣアドレス及び宛先ＶＩＰアドレスに対応する新宛先サーバ情報４５３を特定する。続いてスイッチ制御部４３は、受信パケットの送信元ＭＡＣアドレス及び宛先ＶＩＰアドレスをルールとし、パケットの宛先ＭＡＣアドレスを、特定した新宛先サーバ情報４５３（ＭＡＣアドレス）に変換して転送することをアクションとしたフローエントリを、フローテーブル４２に登録する。
【００９４】
一方、ステップＳ４１において、受信パケットがＴＣＰパケットである場合、切替装置４０は受信パケットのＳＹＮフラグビットを確認する（ステップＳ４１Ｙｅｓ、Ｓ４２）。ここで、受信パケットがＳＹＮパケットである場合、当該パケットはＴＣＰの新規コネクションを示すため、ステップＳ４３に移行し、このコネクションについて新規サーバ宛（新宛先サーバ情報４５３）に宛先が変更される（ステップＳ４２Ｙｅｓ）。
【００９５】
ステップＳ４３においてフローテーブル４２が変更されると、スイッチ処理部４１は、変更されたフローテーブルに規定されたアクションを実行する（ステップＳ５０）。ここでスイッチ処理部４１は、受信パケットの宛先ＭＡＣアドレスを、コントローラ２０によって新たに割り当てたサーバのＭＡＣアドレス（新宛先サーバ情報４５３）に変換して転送する。
【００９６】
一方、受信パケットがＳＹＮパケットではなく、ＴＣＰ終了判定条件を満たしていない場合、スイッチ処理部４１は、受信パケットに適合するフローエントリに規定されたアクションに従って、受信パケットを転送する（ステップＳ４２Ｎｏ、Ｓ４４Ｙｅｓ、Ｓ４５、Ｓ４８Ｎｏ、Ｓ５０）。ここで、ＴＣＰ終了判定条件を満たすとは、例えばＦＩＮパケット及びＦＩＮ−ＡＣＫパケットが双方向に送信される場合を示す。
【００９７】
しかし、ＳＹＮパケットではない受信パケットに適合するフローエントリが、フローテーブル４２に設定されていない場合、スイッチ処理部４１は、受信パケットの宛先を旧宛先サーバ情報４５４に対応するサーバとし、“受信パケットの宛先ＭＡＣアドレスを当該サーバのＭＡＣアドレスに変換して転送する”ことを規定したフローエントリをフローテーブル４２に登録する（ステップＳ４２Ｎｏ、Ｓ４４Ｎｏ、Ｓ４６、Ｓ４７）。詳細には、スイッチ制御部４３は、切替情報テーブル４５から、受信パケットの送信元ＭＡＣアドレス及び宛先ＶＩＰアドレスに対応する旧宛先サーバ情報４５４を特定する。続いてスイッチ制御部４３は、受信パケットの送信元ＭＡＣアドレス及び宛先ＶＩＰアドレスをルールとし、パケットの宛先ＭＡＣアドレスを、特定した旧宛先サーバ情報４５４（ＭＡＣアドレス）に変換して転送することをアクションとしたフローエントリを、フローテーブル４２に登録する。フローエントリの登録後、ＴＣＰ終了判定条件を満たしていない場合、スイッチ処理部４１は、ステップＳ４７において登録したフローエントリに規定されたアクションに従って、受信パケットを転送する（ステップＳ５０）。
【００９８】
又、受信パケットがＴＣＰパケットであって、ＦＩＮパケット及びＦＩＮ−ＡＣＫパケットが双方向に送信されるような、終了判定条件を満たしている場合、コネクションがクローズされたとして明示的にフローテーブルのエントリを削除する（ここでは、明示的に削除宣言されるだけで、実際の削除はアクション実行後に行われる）（ステップＳ４８Ｙｅｓ、Ｓ４９）。
【００９９】
以上のように、切替装置４０は、受信パケットの宛先サーバが旧サーバか切替後の新サーバかを判断し、判断結果に応じたフローエントリに従った宛先に受信パケットを転送する。本発明では、切替装置４０によって端末５０から転送されたパケットの宛先ＭＡＣアドレスを変更することで、セッションを維持しつつ宛先サーバを他のサーバに切り替えることができる。図１４に示す一例では、切替装置４０は、受信パケットに応じて設定されたフローエントリ、又は受信パケットに適合するフローエントリに従って、端末５０−１からサーバ６０−１のＭＡＣアドレス宛のパケットを、サーバ６０−２のＭＡＣアドレス宛に変換して転送する（ステップＳ４１０、Ｓ４１１）。本発明では、スイッチ１０にＭＡＣアドレスの変換機能（セッションレイヤの処理）を持たせずに、サービス中のコネクションを維持しながら端末５０のアクセス先サーバを変更できるため、スイッチ１０としてＬ２スイッチを利用することができる。従って、本発明によれば、コスト上昇を抑制しながら高速化ネットワーク環境下における負荷分散を実現することが可能となる。又、代理ＡＲＰ機能はスイッチ１０と独立したコントローラ２０によって行われるため、スイッチネットワークの規模によらずに負荷分散が可能となる。このため、高価なネットワークデバイスを用いなくてもスケーラビリティの高いサーバ負荷分散処理が実現される。
【０１００】
更に、ステップＳ４０３においてコントローラ２０は、端末−サーバ間通信のプロトコルに応じて、宛先サーバの割当変更時において切替装置を利用するか否かを決定してもよい。例えば。端末−サーバ間の通信がＴＣＰ通信である場合、サーバ割当変更時に、切替装置４０を通過させることで、セッションを切らずに徐々にサーバ割当の変更を行う。一方、ＨＴＴＰ通信の場合は、切替装置４０を通過させずサーバ割当を変更し、セッションの中断を許す。あるいは、コントローラ２０は、ＨＴＴＰプロトコルでも特定の重要なアプリケーションの場合は切替装置を通過させて、サービスを途切れないようにする、といった制御をおこなってもよい。更に、コントローラ２０は、送信元ＩＰアドレスに応じて、切替装置に分岐させるかどうかを決めることで、プロトコル単位のみならずユーザ単位でも、サーバ割当の変更時にセッションを維持するか否かを設定することが可能となる。
【０１０１】
（５）フローエントリの削除に応じた切替終了動作
図１６は、本発明による切替装置４０におけるフローエントリのエキスパイアに応じた切替動作を示すフロー図である。図１６を参照して、本発明による切替装置４０におけるフローエントリのエキスパイアに応じた切替動作を説明する。ここでは、切替装置４０のフローテーブル４２に登録されるフローエントリは、所定の時間の経過後や所定の条件を満たした場合、フローテーブル４２から削除される。この場合の切替装置４０の動作を説明する。
【０１０２】
ＴＣＰコネクションの終了条件を満たす場合や、タイムアウトによってフローエントリがエキスパイアされると、切替制御部４４は、フローテーブル４２に記録されたフローエントリのうち、切替前のサーバのＭＡＣアドレス（旧宛先サーバ情報４５４）を宛先ＭＡＣアドレスとするフローエントリの有無を確認する（ステップＳ６０、Ｓ６１、Ｓ６２）。ここで、フローテーブル４２に旧宛先サーバ情報４５４を宛先ＭＡＣアドレスとするフローエントリがある場合、切替制御部４４は、新たなフローエントリのエキスパイアが発生するまで、待機する（ステップＳ６２Ｎｏ）。一方、旧宛先サーバ情報４５４を宛先ＭＡＣアドレスとするフローエントリが無くなった場合、切替制御部４４は、切替処理の終了をコントローラ２０に通知する（ステップＳ６２Ｙｅｓ、Ｓ６３）。例えば、切替制御部４４は、フローエントリを削除する都度、旧宛先サーバ情報４５４を宛先ＭＡＣアドレスとするフローエントリをカウントし、当該カウント値が０になった時点、あるいは切替処理から一定時間が経過した時点で、切替終了として、コントローラに通知する。
【０１０３】
コントローラ２０は切替終了通知をうけると端末５０に対して、図１１又は図１２と同様にＧＡＲＰパケットによってＶＩＰアドレスに対する物理サーバ（ＭＡＣアドレス）を通知する（図示なし）。例えば、コントローラ２０は切替終了通知に応じて端末５０−１に対して、ＧＡＲＰパケットによってＶＩＰアドレスに対する物理サーバが、サーバ６０−２（のＭＡＣアドレス）となったことを通知する。端末５０−１はＶＩＰアドレスに対するＡＲＰキャッシュエントリをサーバ６０−２のＭＡＣとして、以降のＶＩＰアドレス宛通信をサーバ６０−２のＭＡＣアドレス宛に出力する。更に、コントローラ２０は端末５０−１から切替装置４０に向けてリダイレクトしていた経路用のフローエントリを削除するとともに、切替装置のリソースを開放する（図示なし）。
【０１０４】
以上のように、本発明によるコンピュータシステムによれば、スイッチにおいてヘッダ変換を行うことなくアクセス先のサーバを変更することができるため、低コストで高速なＬ２スイッチによって負荷分散システムを構築することが可能となる。又、本発明では、オープンフローネットワークを利用して、サーバ負荷やサーバの削除に応じてフローの設定やアクセス先サーバの変更を実現しているため、スケーラビリティの高いサーバ負荷分散処理が可能となる。
【０１０５】
以上、本発明の実施の形態を詳述してきたが、具体的な構成は上記実施の形態に限られるものではなく、本発明の要旨を逸脱しない範囲の変更があっても本発明に含まれる。例えば、スイッチ１０、端末５０、切替装置４０、サーバ６０の数は上述の例に限らないことは言うまでもない。又、本発明によるコンピュータシステムが複数設けられ、それぞれのコントローラ２０の連携により、複数のシステム間で経路制御（負荷分散制御）されても構わない。更に、上述の例では、サーバ負荷やアプリケーション負荷に応じて宛先サーバの変更が行われたが、これに限らず、ネットワーク負荷（輻輳状況）やベンダによる設定によって任意に宛先サーバの変更が行われても良い。例えば、サーバの保守時に、宛先サーバの変更が行われる。更に、切替装置４０は、コントローラ２０とは別の装置で実現されても、同じ装置で実現されてもどちらでも良い。切替装置４０がコントローラ２０と同じ装置で実現される場合、スイッチ１０の機能（パケット中継機能）も適用されることとなる。すなわち、切替装置４０はコントローラ２０とスイッチ１０とを組み合わせることでも実現できる。
【０１０６】
上記の実施の形態の一部又は全部は、以下の付記のようにも記載し得るが、以下には限られない。
【０１０７】
（付記１）
コントローラと、
前記コントローラによって設定されたフローエントリに適合する受信パケットに対し、前記フローエントリで規定された中継動作を行うスイッチと
を具備し、
前記コントローラは、端末からのＡＲＰ要求パケットに対して代理応答することにより、前記端末のアクセス先となる物理サーバのＭＡＣ（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ）アドレスを前記端末に通知し、
前記端末から転送され、前記ＭＡＣアドレスを宛先ＭＡＣアドレスとした受信パケットを前記物理サーバに至る通信経路に転送することを規定したフローエントリを、前記スイッチに設定する
コンピュータシステム。
【０１０８】
（付記２）
付記１に記載のコンピュータシステムにおいて、
前記コントローラは、ＶＩＰ（Ｖｉｒｔｕａｌ  Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｃｏｌ）アドレスと物理サーバとを対応付けて記録されたテーブルを参照して、前記ＡＲＰ要求パケットに含まれるターゲットＶＩＰアドレスに対応する物理サーバを、前記端末のアクセス先となる物理サーバとして選択し、前記物理サーバのＭＡＣアドレスをＡＲＰ応答パケットの送信元ＭＡＣアドレスとして、前記端末に送信する
コンピュータシステム。
【０１０９】
（付記３）
付記１又は２に記載のコンピュータシステムにおいて、
前記コントローラは、複数のサーバのそれぞれに対する負荷に応じて、前記端末のアクセス先となる物理サーバのＭＡＣアドレスを選択する
コンピュータシステム。
【０１１０】
（付記４）
付記１から３のいずれか１項に記載のコンピュータシステムにおいて、
前記コントローラは、前記物理サーバと異なる他の物理サーバのＭＡＣアドレスを送信元ＭＡＣアドレスとしたＧＡＲＰパケットを前記端末に送信することで、前記端末のＡＲＰテーブルに設定された宛先ＭＡＣアドレスを、前記物理サーバのＭＡＣアドレスから前記他の物理サーバのＭＡＣアドレスに変更する
コンピュータシステム。
【０１１１】
（付記５）
付記１から４のいずれか１項に記載のコンピュータシステムにおいて、
前記スイッチは、前記コントローラによって設定されたフローエントリに従い、受信パケットがＡＲＰ要求パケットである場合、前記ＡＲＰ要求パケットを前記コントローラに通知する
コンピュータシステム。
【０１１２】
（付記６）
コントローラと、
前記コントローラによって設定されたフローエントリに適合する受信パケットに対し、前記フローエントリで規定された中継動作を行うスイッチと、
切替装置と
を具備し、
前記スイッチは、前記コントローラによって設定された第１フローエントリに従い、第１サーバの第１ＭＡＣアドレスを宛先ＭＡＣアドレスとしたパケットを、前記第１サーバに至る通信経路へ転送し、
前記コントローラは、前記第１サーバの第１ＭＡＣアドレスを宛先ＭＡＣアドレスとしたパケットを前記切替装置に転送することを規定した第２フローエントリを、前記第１フローエントリに替えて前記スイッチに設定し、
前記スイッチは、前記第２フローエントリに従い、前記第１ＭＡＣアドレスを宛先ＭＡＣアドレスとしたパケットを、前記切替装置へ転送し、
前記切替装置は、前記スイッチからの受信パケットの宛先ＭＡＣアドレスを、前記第１ＭＡＣアドレスから、第１サーバとは異なる第２サーバの第２ＭＡＣアドレスに変更して、前記第２サーバに至る通信経路へ転送する
コンピュータシステム。
【０１１３】
（付記７）
付記６に記載のコンピュータシステムにおいて、
前記切替装置は、前記受信パケットが、ＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）パケットであり、適合するフローエントリが自身のフローテーブルに設定されていない場合、前記スイッチからの受信パケットの宛先ＭＡＣアドレスを、前記第１ＭＡＣアドレスに変更して、前記第１サーバに至る通信経路へ転送する
コンピュータシステム。
【０１１４】
（付記８）
付記６又は７に記載のコンピュータシステムにおいて、
前記切替装置は、受信パケットに基づきＴＣＰ終了判定を行い、ＴＣＰコネクションが終了したと判定すると、自身のフローテーブルに設定され、前記受信パケットに適合するフローエントリに従った宛先に前記受信パケットの転送した後、前記フローエントリを前記フローテーブルから削除する
コンピュータシステム。
【０１１５】
（付記９）
付記６から８のいずれか１項に記載のコンピュータシステムにおいて、
前記切替装置は、自身のフローテーブルからフローエントリが削除されると、切替終了を前記コントローラに通知し、
前記コントローラは、前記切替終了に応じて前記第２フローエントリを前記スイッチから削除する
コンピュータシステム。
【０１１６】
（付記１０）
付記６から９のいずれか１項に記載のコンピュータシステムにおいて、
前記コントローラは、複数のサーバのそれぞれに対する負荷に応じて、前記端末のアクセス先となる前記第２サーバの第２ＭＡＣアドレスを選択して、前記切替装置に通知する
コンピュータシステム。
【０１１７】
（付記１１）
付記１から１０のいずれか１項に記載のコンピュータシステムで利用されるコントローラ。
【０１１８】
（付記１２）
付記６から１０のいずれか１項に記載のコンピュータシステムで利用される切替装置。
【０１１９】
（付記１３）
コンピュータによって実行されることで、付記１１項に記載のコントローラを実現する通信制御プログラム。
【０１２０】
（付記１４）
コンピュータによって実行されることで、付記１２に記載の切替装置を実現する通信制御プログラム。
【０１２１】
（付記１５）
コントローラによって設定されたフローエントリに適合する受信パケットに対し、前記フローエントリで規定された中継動作を行うスイッチを備えるコンピュータシステムにおいて実行される通信方法において、
前記コントローラが、端末からのＡＲＰ要求パケットに対して代理応答することにより、前記端末のアクセス先となる物理サーバのＭＡＣ（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ）アドレスを前記端末に通知するステップと、
前記端末から転送され、前記ＭＡＣアドレスを宛先ＭＡＣアドレスとした受信パケットを前記物理サーバに至る通信経路に転送することを規定したフローエントリを、前記コントローラが前記スイッチに設定するステップと
を具備する
通信方法。
【０１２２】
（付記１６）
付記１５に記載の通信方法において、
前記コントローラが、ＶＩＰ（Ｖｉｒｔｕａｌ  Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｃｏｌ）アドレスと物理サーバとを対応付けて記録されたテーブルを参照して、前記ＡＲＰ要求パケットに含まれるターゲットＶＩＰアドレスに対応する物理サーバを、前記端末のアクセス先となる物理サーバとして選択するステップを更に具備し、
前記ＭＡＣアドレスを通知するステップは、前記コントローラが、前記物理サーバのＭＡＣアドレスをＡＲＰ応答パケットの送信元ＭＡＣアドレスとして、前記端末に送信するステップを備える
通信方法。
【０１２３】
（付記１７）
付記１５又は１６に記載の通信方法において、
前記コントローラが、複数のサーバのそれぞれに対する負荷に応じて、前記端末のアクセス先となる物理サーバのＭＡＣアドレスを選択するステップを更に具備する
通信方法。
【０１２４】
（付記１８）
付記１５から１７のいずれか１項に記載の通信方法において、
前記コントローラが、前記物理サーバと異なる他の物理サーバのＭＡＣアドレスを送信元ＭＡＣアドレスとしたＧＡＲＰパケットを前記端末に送信することで、前記端末のＡＲＰテーブルに設定された宛先ＭＡＣアドレスを、前記物理サーバのＭＡＣアドレスから前記他の物理サーバのＭＡＣアドレスに変更するステップを更に具備する
通信方法。
【０１２５】
（付記１９）
付記１５から１８のいずれか１項に記載の通信方法において、
前記スイッチが、前記コントローラによって設定されたフローエントリに従い、受信パケットがＡＲＰ要求パケットである場合、前記ＡＲＰ要求パケットを前記コントローラに通知するステップを更に具備する
通信方法。
【０１２６】
（付記２０）
コントローラによって設定されたフローエントリに適合する受信パケットに対し、前記フローエントリで規定された中継動作を行うスイッチを備えるコンピュータシステムにおいて実行される通信方法において、
前記スイッチが、前記コントローラによって設定された第１フローエントリに従い、第１サーバの第１ＭＡＣアドレスを宛先ＭＡＣアドレスとしたパケットを、前記第１サーバに至る通信経路へ転送するステップと、
前記コントローラが、前記第１サーバの第１ＭＡＣアドレスを宛先ＭＡＣアドレスとしたパケットを切替装置に転送することを規定した第２フローエントリを、前記第１フローエントリに替えて前記スイッチに設定し、
前記スイッチが、前記第２フローエントリに従い、前記第１ＭＡＣアドレスを宛先ＭＡＣアドレスとしたパケットを、前記切替装置へ転送するステップと、
前記切替装置が、前記スイッチからの受信パケットの宛先ＭＡＣアドレスを、前記第１ＭＡＣアドレスから、第１サーバとは異なる第２サーバの第２ＭＡＣアドレスに変更して、前記第２サーバに至る通信経路へ転送するステップと
を具備する
通信方法。
【０１２７】
（付記２１）
付記２０に記載の通信方法において、
前記受信パケットが、ＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）パケットであり、適合するフローエントリが自身のフローテーブルに設定されていない場合、前記切替装置が、前記スイッチからの受信パケットの宛先ＭＡＣアドレスを、前記第１ＭＡＣアドレスに変更して、前記第１サーバに至る通信経路へ転送するステップを更に具備する
通信方法。
【０１２８】
（付記２２）
付記２０又は２１に記載の通信方法において、
前記切替装置が、受信パケットに基づきＴＣＰコネクションが終了したと判定するステップと、
前記切替装置が、前記受信パケットに適合するフローエントリに従った宛先に前記受信パケットの転送した後、前記フローエントリを前記フローテーブルから削除するステップと
を更に具備する
通信方法。
【０１２９】
（付記２３）
付記２０から２２のいずれか１項に記載の通信方法において、
前記切替装置が、自身のフローテーブルからフローエントリが削除されると、切替終了を前記コントローラに通知するステップと、
前記コントローラが、前記切替終了に応じて前記第２フローエントリを前記スイッチから削除するステップと
を更に具備する
通信方法。
【０１３０】
（付記２４）
付記２０から２３のいずれか１項に記載の通信方法において、
前記コントローラが、複数のサーバのそれぞれに対する負荷に応じて、前記端末のアクセス先となる前記第２サーバの第２ＭＡＣアドレスを選択して、前記切替装置に通知するステップを更に具備する
通信方法。
【０１３１】
尚、本出願は、日本出願番号２０１１−８０９５５に基づき、日本出願番号２０１１−８０９５５における開示内容は引用により本出願に組み込まれる。
【図１】
2012133290.tif 000003
【図２】
2012133290.tif 000004
【図３】
2012133290.tif 000005
【図４】
2012133290.tif 000006
【図５】
2012133290.tif 000007
【図６】
2012133290.tif 000008
【図７】
2012133290.tif 000009
【図８Ａ】
2012133290.tif 000010
【図８Ｂ】
2012133290.tif 000011
【図９】
2012133290.tif 000012
【図１０Ａ】
2012133290.tif 000013
【図１０Ｂ】
2012133290.tif 000014
【図１１】
2012133290.tif 000015
【図１２】
2012133290.tif 000016
【図１３】
2012133290.tif 000017
【図１４】
2012133290.tif 000018
【図１５】
2012133290.tif 000019
【図１６】
2012133290.tif 000020
【国際調査報告】
2012133290.tif 000021
2012133290.tif 000022