(57)【要約】  第１アプライアンスが、既存フローに属するパケットに対して第１パケット処理を実施しているとする。アプライアンスをその第１アプライアンスから第２アプライアンスに切り替える場合、コントローラは、ショートカット処理を行った後、切り替え処理を行う。ショートカット処理において、コントローラは、スイッチに対して、第１エントリをフローテーブルに設定するように指示する。その第１エントリは、既存フローに属するパケットに対して第１パケット処理を実施することを指定する。切り替え処理において、コントローラは、スイッチに対して、第２エントリをフローテーブルに設定するように指示する。その第２エントリは、アプライアンス宛てのパケットであって既存フロー以外の新規フローに属するパケットを、第２アプライアンスに転送することを指定する。
2011093288.tif 000002
【特許請求の範囲】
【請求項１】
ネットワーク中に配置されたアプライアンス及びスイッチと、
前記アプライアンス及び前記スイッチに接続されたコントローラと
を備え、
前記スイッチは、フローテーブルを備え、
前記フローテーブルの各エントリは、マッチ条件にマッチするパケットに対して行われるアクションを指定し、
前記スイッチは、パケットを受け取ると前記フローテーブルを参照し、前記受け取ったパケットにマッチするエントリで指定される前記アクションを前記受け取ったパケットに対して行い、
前記アプライアンスとしての第１アプライアンスは、既存フローに属するパケットに対して第１パケット処理を実施し、
前記アプライアンスを前記第１アプライアンスから第２アプライアンスに切り替える場合、前記コントローラは、ショートカット処理を行った後、切り替え処理を行い、
前記ショートカット処理において、
前記コントローラは、前記スイッチに対して、第１エントリを前記フローテーブルに設定するように指示し、
前記第１エントリは、前記既存フローに属するパケットに対して前記第１パケット処理を実施することを指定し、
前記切り替え処理において、
前記コントローラは、前記スイッチに対して、第２エントリを前記フローテーブルに設定するように指示し、
前記第２エントリは、前記アプライアンス宛てのパケットであって前記既存フロー以外の新規フローに属するパケットを、前記第２アプライアンスに転送することを指定する
ネットワークシステム。
【請求項２】
請求項１に記載のネットワークシステムであって、
前記第１アプライアンスは、自身が処理するフローに関する情報を示すセッションテーブルを参照することによって、前記既存フローに属するパケットに対して前記第１パケット処理を実施し、
前記コントローラは、前記第１アプライアンスの前記セッションテーブルの内容を示すセッション情報を取得し、
前記コントローラは、前記セッション情報に基いて、前記スイッチに対して、前記第１エントリを前記フローテーブルに設定するように指示する
ネットワークシステム。
【請求項３】
請求項２に記載のネットワークシステムであって、
前記ショートカット処理の前に、前記コントローラは、前記スイッチに対して、転送エントリを前記フローテーブルに設定するように指示し、
前記転送エントリは、前記アプライアンス宛てのパケットを前記コントローラに転送することを指定する
ネットワークシステム。
【請求項４】
請求項３に記載のネットワークシステムであって、
前記スイッチから転送パケットを受け取った場合、前記コントローラは、前記転送パケットのヘッダ情報と前記セッション情報とに基いて、前記転送パケットが前記既存フローに属するか否かを判定し、その後、前記転送パケットを前記スイッチに返送し、
前記転送パケットが前記既存フローに属する場合、前記コントローラは、前記スイッチに対して、前記転送パケットに前記第１パケット処理を実施することを指示し、
前記転送パケットが前記既存フローに属さない場合、前記コントローラは、前記スイッチに対して、前記転送パケットを前記第２アプライアンスに転送することを指示する
ネットワークシステム。
【請求項５】
ネットワーク中に配置されたアプライアンス及びスイッチに接続されるコントローラであって、
前記スイッチは、フローテーブルを備え、
前記フローテーブルの各エントリは、マッチ条件にマッチするパケットに対して行われるアクションを指定し、
前記スイッチは、パケットを受け取ると前記フローテーブルを参照し、前記受け取ったパケットにマッチするエントリで指定される前記アクションを前記受け取ったパケットに対して行い、
前記アプライアンスとしての第１アプライアンスは、既存フローに属するパケットに対して第１パケット処理を実施し、
前記コントローラは、処理装置を備え、
前記アプライアンスを前記第１アプライアンスから第２アプライアンスに切り替える場合、前記処理装置は、ショートカット処理を行った後、切り替え処理を行い、
前記ショートカット処理において、
前記処理装置は、前記スイッチに対して、第１エントリを前記フローテーブルに設定するように指示し、
前記第１エントリは、前記既存フローに属するパケットに対して前記第１パケット処理を実施することを指定し、
前記切り替え処理において、
前記処理装置は、前記スイッチに対して、第２エントリを前記フローテーブルに設定するように指示し、
前記第２エントリは、前記アプライアンス宛てのパケットであって前記既存フロー以外の新規フローに属するパケットを、前記第２アプライアンスに転送することを指定する
コントローラ。
【請求項６】
アプライアンス及びスイッチが配置されたネットワークの制御方法であって、
前記スイッチは、フローテーブルを備え、
前記フローテーブルの各エントリは、マッチ条件にマッチするパケットに対して行われるアクションを指定し、
前記スイッチは、パケットを受け取ると前記フローテーブルを参照し、前記受け取ったパケットにマッチするエントリで指定される前記アクションを前記受け取ったパケットに対して行い、
前記アプライアンスとしての第１アプライアンスは、既存フローに属するパケットに対して第１パケット処理を実施し、
前記制御方法は、前記アプライアンスを前記第１アプライアンスから第２アプライアンスに切り替えることを含み、
前記切り換えることは、
ショートカット処理を行うことと、
前記ショートカット処理の後に切り替え処理を行うことと
を含み、
前記ショートカット処理は、前記スイッチにおいて、第１エントリを前記フローテーブルに設定することを含み、
前記第１エントリは、前記既存フローに属するパケットに対して前記第１パケット処理を実施することを指定し、
前記切り替え処理は、前記スイッチにおいて、第２エントリを前記フローテーブルに設定することを含み、
前記第２エントリは、前記アプライアンス宛てのパケットであって前記既存フロー以外の新規フローに属するパケットを、前記第２アプライアンスに転送することを指定する
制御方法。
【請求項７】
アプライアンス及びスイッチが配置されたネットワークの制御処理をコンピュータに実行させる制御プログラムが記録された記録媒体であって、
前記スイッチは、フローテーブルを備え、
前記フローテーブルの各エントリは、マッチ条件にマッチするパケットに対して行われるアクションを指定し、
前記スイッチは、パケットを受け取ると前記フローテーブルを参照し、前記受け取ったパケットにマッチするエントリで指定される前記アクションを前記受け取ったパケットに対して行い、
前記アプライアンスとしての第１アプライアンスは、既存フローに属するパケットに対して第１パケット処理を実施し、
前記制御処理は、前記アプライアンスを前記第１アプライアンスから第２アプライアンスに切り替えることを含み、
前記切り換えることは、
ショートカット処理を行うことと、
前記ショートカット処理の後に切り替え処理を行うことと
を含み、
前記ショートカット処理は、前記スイッチに対して、第１エントリを前記フローテーブルに設定するように指示することを含み、
前記第１エントリは、前記既存フローに属するパケットに対して前記第１パケット処理を実施することを指定し、
前記切り替え処理は、前記スイッチに対して、第２エントリを前記フローテーブルに設定するように指示することを含み、
前記第２エントリは、前記アプライアンス宛てのパケットであって前記既存フロー以外の新規フローに属するパケットを、前記第２アプライアンスに転送することを指定する
記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アプライアンスを備えるネットワークシステムを制御する技術に関する。特に、本発明は、使用するアプライアンスを切り替える技術に関する。
【背景技術】
【０００２】
アプライアンス（ネットワークアプライアンス）は、ネットワークに導入される、特定の機能に特化したネットワーク装置である。アプライアンスとしては、ロードバランサやファイヤーウォールが挙げられる。【０００３】
ロードバランサは、負荷分散の機能を提供する。より詳細には、ロードバランサは、外部ネットワークから仮想的なサーバ（仮想サーバ）として見え、クライアントは、この仮想サーバに対応する仮想ＩＰアドレス（ＶＩＰ）およびポート番号を指定して要求を行う。ロードバランサは、仮想サーバに対応してあらかじめ設定された複数のサーバ（実サーバ）の中から、実際にクライアントにサービスを提供する実サーバを一つ選択する。そして、ロードバランサは、要求パケット中の宛先アドレス（例えばＭＡＣアドレス、あるいはＭＡＣアドレスとＩＰアドレスの両方）を選択した実サーバのものに書き換えて、当該要求を実サーバに転送する。【０００４】
ファイヤーウォールは、通信制御を通してセキュリティを確保する機能を提供する。より詳細には、ファイヤーウォールは、ＩＰアドレスやポート番号等の条件に応じて、パケットを通過させたり破棄したりする。また、一度通過させたパケットに対する応答パケットのみを通過させるといった制御も考えられる。このように、ファイヤーウォールは、コネクションやセッションの状態を管理して、強固なセキュリティを確保する。【０００５】
ここで、使用するアプライアンスを切り替えることを考える。例えば、使用していたアプライアンスを保守などのために停止させ、別のアプライアンスにその機能を移行することを考える。このとき、単にアプライアンスを切り替えただけでは、切り替え前のアプライアンスを利用していたセッションの一部または全部が切断されてしまう。これは、アプライアンス内に保持されているセッション情報が引き継がれないためである。例えばロードバランサの場合、セッション情報は、どのクライアントをどの実サーバで処理しているかを示す。そのセッション情報が引き継がれないと、既存セッションは、新規セッションと同様に扱われ、その結果として、元と異なる実サーバに転送されてしまう可能性がある。別の例として、通過させたパケットに対する応答パケットだけを通過させるように設定されたファイヤーウォールを考える。この場合も、移行先のファイヤーウォールにセッション情報が引き継がれなければ、応答パケットも新規セッションとみなされて破棄されてしまう。【０００６】
セッションの切断を起こさずにアプライアンスの切り替えを実現する方法として、特許文献１（特開２００４−２２９１３０号公報）に開示された方法を用いることができる。この方法によれば、振り分け制御装置は、セッションがアプライアンスを利用中の既存セッションかどうかを判定する。そして、振り分け制御装置は、既存セッションを維持したまま、新規セッションだけを別のアプライアンスに振り分ける。よって、移行先のアプライアンスにセッション情報を引き継がなくても、セッションの切断を防止することができる。【０００７】
また、特許文献２（特開２００４−２７４５５２号公報）には、必要に応じてセッション情報を別の装置に移送する方式が開示されている。この方法によれば、移行先のアプライアンスにセッション情報を移送することにより、アプライアンスが切り替わってもセッションを維持することができる。【０００８】
その他の技術として以下のものが知られている。【０００９】
特許文献３（特開２００６−２８７６０５号公報）は、障害発生時にサーバへのアクセスを維持できるロードバランサを開示している。そのロードバランサは、第１の通信手段、第２の通信手段、負荷分散手段、及び短絡手段を備える。第１の通信手段は、複数のサーバが接続される第１のネットワークとの通信をする。第２の通信手段は、クライアントが接続され第１のネットワークと同一のプロトコルに従って動作する第２のネットワークとの通信をする。負荷分散手段は、複数のサーバの負荷量に応じて、第２の通信手段から第１の通信手段へと伝送させるデータを複数のサーバのうちのいずれに供給するかを選択し、選択されたサーバにデータを転送する。短絡手段は、第１の通信手段と第２の通信手段とを短絡し、負荷分散手段を介さずに第１のネットワークと第２のネットワークとを接続する。【００１０】
特許文献４（特開２００７−１５６５６９号公報）は、複数のロードバランサを介するデータ通信を行うクラスタシステムを開示している。ノードサーバが正常に動作しなくなった場合にも、複数のロードバランサは、同一のセッションまたは関連する複数のセッションに属するメッセージを、同一のクラスタノードに分配する。これにより、効率よく複数のロードバランサからのメッセージを処理することができる。【００１１】
特許文献５（特開２００７−２７２４７２号公報）には、サーバの交替時にクライアント端末から再ログインすることを不要とする技術が記載されている。
【先行技術文献】
【特許文献】
【００１２】
【特許文献１】特開２００４−２２９１３０号公報
【特許文献２】特開２００４−２７４５５２号公報
【特許文献３】特開２００６−２８７６０５号公報
【特許文献４】特開２００７−１５６５６９号公報
【特許文献５】特開２００７−２７２４７２号公報
【発明の概要】
【００１３】
本願発明者は、次の点に着目した。すなわち、使用するアプライアンスを切り替えるために、元のアプライアンスを停止させ、別のアプライアンスにその機能を移行する際、次のような問題点が発生する。
【００１４】
特許文献１に開示された方法の場合、移行元のアプライアンスを停止させてもそれを利用しているセッションが切断されないようにするためには、当該セッションのすべてが終了するまで待つ必要がある。従って、持続的な接続を利用するクライアントが多数存在していると、いつまでも移行元のアプライアンスを停止させることができないという状況が起こる。
【００１５】
また、明示的に切断処理を行わないクライアントに関しては、アプライアンスは当該セッションの終了を判断することができない。この場合、一定時間の無通信状態をもって当該セッションは終了したとみなし、切断する方法が考えられる。しかしながら、無通信状態の期間はアプリケーションによって異なるため、一律のタイムアウトによる判定では、必ずしもセッションを切断から保護することができない。
【００１６】
一方、特許文献２に開示された方法によれば、移行先のアプライアンスにセッション情報を移送することができる。しかしながら、そのためには移行先のアプライアンスに、移行元のアプライアンスからセッション情報を受け取り、自身のセッション情報と併合する機構を設ける必要がある。複数ベンダーのアプライアンス機種を混在させて利用する状況においては、このような機構は多くの場合利用することができない。
【００１７】
本発明の１つの目的は、既存セッションの切断を防止しながら、アプライアンスの切り替えを効率的に行うことができる技術を提供することにある。
【００１８】
本発明の１つの観点において、ネットワークシステムが提供される。そのネットワークシステムは、ネットワーク中に配置されたアプライアンス及びスイッチと、それらアプライアンス及びスイッチに接続されたコントローラと、を備える。スイッチは、フローテーブルを備え、そのフローテーブルの各エントリは、マッチ条件にマッチするパケットに対して行われるアクションを指定する。スイッチは、パケットを受け取るとフローテーブルを参照し、受け取ったパケットにマッチするエントリで指定されるアクションを、受け取ったパケットに対して行う。
【００１９】
第１アプライアンスが、既存フローに属するパケットに対して第１パケット処理を実施しているとする。アプライアンスをその第１アプライアンスから第２アプライアンスに切り替える場合、コントローラは、ショートカット処理を行った後、切り替え処理を行う。ショートカット処理において、コントローラは、スイッチに対して、第１エントリをフローテーブルに設定するように指示する。その第１エントリは、既存フローに属するパケットに対して第１パケット処理を実施することを指定する。切り替え処理において、コントローラは、スイッチに対して、第２エントリをフローテーブルに設定するように指示する。その第２エントリは、アプライアンス宛てのパケットであって既存フロー以外の新規フローに属するパケットを、第２アプライアンスに転送することを指定する。
【００２０】
本発明の他の観点において、ネットワーク中に配置されたアプライアンス及びスイッチに接続されるコントローラが提供される。スイッチは、フローテーブルを備え、そのフローテーブルの各エントリは、マッチ条件にマッチするパケットに対して行われるアクションを指定する。スイッチは、パケットを受け取るとフローテーブルを参照し、受け取ったパケットにマッチするエントリで指定されるアクションを、受け取ったパケットに対して行う。
【００２１】
第１アプライアンスが、既存フローに属するパケットに対して第１パケット処理を実施しているとする。アプライアンスをその第１アプライアンスから第２アプライアンスに切り替える場合、コントローラの処理装置は、ショートカット処理を行った後、切り替え処理を行う。ショートカット処理において、処理装置は、スイッチに対して、第１エントリをフローテーブルに設定するように指示する。その第１エントリは、既存フローに属するパケットに対して第１パケット処理を実施することを指定する。切り替え処理において、処理装置は、スイッチに対して、第２エントリをフローテーブルに設定するように指示する。その第２エントリは、アプライアンス宛てのパケットであって既存フロー以外の新規フローに属するパケットを、第２アプライアンスに転送することを指定する。
【００２２】
本発明の更に他の観点において、アプライアンス及びスイッチが配置されたネットワークの制御方法が提供される。スイッチは、フローテーブルを備え、そのフローテーブルの各エントリは、マッチ条件にマッチするパケットに対して行われるアクションを指定する。スイッチは、パケットを受け取るとフローテーブルを参照し、受け取ったパケットにマッチするエントリで指定されるアクションを、受け取ったパケットに対して行う。
【００２３】
第１アプライアンスが、既存フローに属するパケットに対して第１パケット処理を実施しているとする。本発明に係る制御方法は、アプライアンスをその第１アプライアンスから第２アプライアンスに切り替えることを含む。切り換えることは、ショートカット処理を行うことと、ショートカット処理の後に切り替え処理を行うことと、を含む。ショートカット処理は、スイッチにおいて、第１エントリをフローテーブルに設定することを含む。その第１エントリは、既存フローに属するパケットに対して第１パケット処理を実施することを指定する。切り替え処理は、スイッチにおいて、第２エントリをフローテーブルに設定することを含む。その第２エントリは、アプライアンス宛てのパケットであって既存フロー以外の新規フローに属するパケットを、第２アプライアンスに転送することを指定する。
【００２４】
本発明の更に他の観点において、アプライアンス及びスイッチが配置されたネットワークの制御処理をコンピュータに実行させる制御プログラムが提供される。スイッチは、フローテーブルを備え、そのフローテーブルの各エントリは、マッチ条件にマッチするパケットに対して行われるアクションを指定する。スイッチは、パケットを受け取るとフローテーブルを参照し、受け取ったパケットにマッチするエントリで指定されるアクションを、受け取ったパケットに対して行う。
【００２５】
第１アプライアンスが、既存フローに属するパケットに対して第１パケット処理を実施しているとする。本発明に係る制御処理は、アプライアンスをその第１アプライアンスから第２アプライアンスに切り替えることを含む。切り換えることは、ショートカット処理を行うことと、ショートカット処理の後に切り替え処理を行うことと、を含む。ショートカット処理は、スイッチに対して、第１エントリをフローテーブルに設定するように指示することを含む。その第１エントリは、既存フローに属するパケットに対して第１パケット処理を実施することを指定する。切り替え処理は、スイッチに対して、第２エントリをフローテーブルに設定するように指示することを含む。その第２エントリは、アプライアンス宛てのパケットであって既存フロー以外の新規フローに属するパケットを、第２アプライアンスに転送することを指定する。
【００２６】
本発明によれば、既存セッションの切断を防止しながら、アプライアンスの切り替えを効率的に実現することが可能となる。
【図面の簡単な説明】
【００２７】
上記及び他の目的、長所、特徴は、次の図面と共に説明される本発明の実施の形態により明らかになるであろう。【００２８】
【図１】図１は、本発明の実施の形態に係るネットワークシステムの構成を概略的に示すブロック図である。
【図２】図２は、本実施の形態に係る機能構成を示すブロック図である。
【図３】図３は、本実施の形態に係るスイッチが有するフローテーブルを示す概念図である。
【図４】図４は、本実施の形態に係るコントローラの構成を示すブロック図である。
【図５】図５は、本実施の形態に係る処理を説明するためのブロック図である。
【図６】図６は、本実施の形態に係る処理を示すフローチャートである。
【図７】図７は、本実施の形態に係る収集処理を説明するためのブロック図である。
【図８】図８は、本実施の形態に係るショートカット処理を説明するためのブロック図である。
【図９】図９は、本実施の形態に係る切り替え処理を説明するためのブロック図である。
【図１０】図１０は、本実施の形態に係る一時パケット処理を示すフローチャートである。
【図１１】図１１は、本実施の形態に係る処理の具体例を説明するためのネットワークシステムの構成例を示すブロック図である。
【図１２】図１２は、具体例におけるフローテーブルの初期状態を示している。
【図１３】図１３は、本具体例における収集処理の結果としてのフローテーブルを示している。
【図１４】図１４は、本具体例におけるショートカット処理の結果としてのフローテーブルを示している。
【図１５】図１５は、本具体例におけるショートカット処理の結果としてのフローテーブルを示している。
【図１６】図１６は、本具体例における切り替え処理の結果としてのフローテーブルを示している。
【発明を実施するための形態】
【００２９】
添付図面を参照して、本発明の実施の形態を説明する。
【００３０】
１．構成
図１は、本実施の形態に係るネットワークシステム１の構成を概略的に示すブロック図である。本実施の形態に係るネットワークシステム１は、例えば、データセンター（Data Center）に適用される。
【００３１】
ネットワークシステム１は、スイッチ１０、アプライアンス２０、コントローラ１００、及びサーバ２００を備えている。スイッチ１０及びアプライアンス２０は、スイッチ−アプライアンスネットワークを構成している。サーバ２００は、そのスイッチ−アプライアンスネットワークに接続されている。スイッチ−アプライアンスネットワークは更に、ネットワークシステム１の外部の外部ネットワークに接続されている。コントローラ１００は、制御回線（図中、破線で表されている）を介して、各スイッチ１０及び各アプライアンス２０に接続されている。
【００３２】
図２は、本実施の形態に係るスイッチ１０、アプライアンス２０、及びコントローラ１００の各機能構成を示している。以下、スイッチ１０、アプライアンス２０、及びコントローラ１００の各構成を詳細に説明する。
【００３３】
１−１．スイッチ１０
スイッチ１０は、パケット転送等のスイッチ処理を行う。より詳細には、図２に示されるように、スイッチ１０は、スイッチ処理部１１、フローテーブル１２、及びコントローラ用インターフェース１３を備えている。
【００３４】
図３は、フローテーブル１２を概念的に示している。フローテーブル１２の各エントリは、「マッチ条件（フロー識別情報）」と「アクション」を示している。「マッチ条件」は、パケットの入力ポート、送信元ＭＡＣアドレス、宛先ＭＡＣアドレス、送信元ＩＰアドレス、宛先ＩＰアドレス、送信元ポート番号、宛先ポート番号などのパラメータの組み合わせで構成される。尚、フローもそれらパラメータの組み合わせで定義される。つまり、「マッチ条件」は、フローを規定するフロー識別情報でもある。「アクション」は、マッチ条件にマッチするパケットに対して行われる処理を指定する。「アクション」としては、指定ポートへのパケット出力、パケットヘッダの特定フィールドの書き換え、パケット廃棄等が挙げられる。尚、フローテーブル１２は、記憶装置に格納されている。
【００３５】
スイッチ処理部１１は、フローテーブル１２に従って、スイッチ処理を行う。より詳細には、スイッチ処理部１１は、入力ポートを通してパケットを受信する。パケットを受信すると、スイッチ処理部１１は、フローテーブル１２を参照し、当該受信パケットにマッチするエントリを検索する。具体的には、スイッチ処理部１１は、受信パケットのヘッダ情報を抽出し、受信パケットの入力ポート及びヘッダ情報を検索キーとして用いることにより、フローテーブル１２の検索を行う。その検索キーと一致するマッチ条件を示すエントリが、受信パケットにマッチするマッチエントリである。受信パケットがいずれかのエントリのマッチ条件にマッチした場合、すなわち、マッチエントリが見つかった場合、スイッチ処理部１１は、そのマッチエントリで指定される「アクション」を受信パケットに対して実施する。
【００３６】
コントローラ用インターフェース１３は、制御回線を介してコントローラ１００に接続されており、コントローラ１００との間で通信を行う際のインターフェースとなる。また、コントローラ用インターフェース１３は、コントローラ１００からの指示に従って、フローテーブル１２のエントリを設定（追加、変更、削除等）する機能を有する。更に、コントローラ用インターフェース１３は、コントローラ１００からの指示に従って、フローテーブル１２の内容によらずともパケットを特定のポートに直接出力する機能も備える。
【００３７】
１−２．アプライアンス２０
アプライアンス（ネットワークアプライアンス）２０は、ネットワークトラヒックに対して特定の処理を実行するネットワーク装置である。アプライアンス２０としては、ロードバランサやファイヤーウォールが例示される。
【００３８】
ロードバランサは、負荷分散の機能を提供する。より詳細には、ロードバランサは、外部ネットワークから仮想的なサーバ（仮想サーバ）として見え、クライアントは、この仮想サーバに対応する仮想ＩＰアドレス（ＶＩＰ）およびポート番号を指定して要求を行う。ロードバランサは、仮想サーバに対応してあらかじめ設定された複数のサーバ（実サーバ）の中から、実際にクライアントにサービスを提供する実サーバを一つ選択する。そして、ロードバランサは、要求パケット中の宛先アドレス（例えばＭＡＣアドレス、あるいはＭＡＣアドレスとＩＰアドレスの両方）を選択した実サーバのものに書き換えて、当該要求を実サーバに転送する。
【００３９】
ファイヤーウォールは、通信制御を通してセキュリティを確保する機能を提供する。より詳細には、ファイヤーウォールは、ＩＰアドレスやポート番号等の条件に応じて、パケットを通過させたり破棄したりする。また、一度通過させたパケットに対する応答パケットのみを通過させるといった制御も考えられる。このように、ファイヤーウォールは、コネクションやセッションの状態を管理して、強固なセキュリティを確保する。
【００４０】
図２に示されるように、アプライアンス２０は、アプライアンス処理部２１、セッションテーブル２２、セッション情報送信部２３を備えている。
【００４１】
セッションテーブル２２は、自アプライアンス２０が扱っているフロー（セッション）に関する情報を示す。フローに関する情報とは、送信元ＩＰアドレス、送信元ポート番号、宛先ＩＰアドレス、宛先ポート番号等であり、上述のフロー識別情報と同様である。また例えば、アプライアンス２０がロードバランサの場合、セッションテーブル２２は、各フローに属するパケットを実際に処理する実サーバも示す。
【００４２】
アプライアンス処理部２１は、アプライアンス２０としての特定の処理を実行する。例えば、アプライアンス２０がロードバランサの場合、アプライアンス処理部２１は、入力されたパケットのヘッダから宛先の仮想サーバの情報（仮想ＩＰアドレス、ポート番号）を抽出し、当該仮想サーバに対応付けられた複数の実サーバの中から１つを選択する。そして、アプライアンス処理部２１は、パケットのヘッダに含まれる宛先アドレスの情報を、選択した実サーバのものに書き換えて、送出する。また、アプライアンス処理部２１は、選択した実サーバを当該フローと関連付けてセッションテーブル２２に登録する。それ以降、アプライアンス処理部２１は、セッションテーブル２２を参照することによって、同一フローに属するパケットに対してパケット処理を実施することができる。
【００４３】
セッション情報送信部２３は、制御回線を介してコントローラ１００に接続されている。このセッション情報送信部２３は、コントローラ１００からの要求に応じて、セッションテーブル２２の内容を示すセッション情報ＳＥＳをコントローラ１００に送信する機能を有する。
【００４４】
１−３．コントローラ１００
コントローラ１００は、制御回線を介して、各スイッチ１０のフローテーブル１２の内容を設定する機能を有する。具体的には、コントローラ１００は、エントリの設定（追加、変更、削除等）を指示する「エントリ設定データＥＮＴ」を作成し、そのエントリ設定データＥＮＴを対象スイッチ１０に送る。エントリ設定データＥＮＴを受け取った対象スイッチ１０のコントローラ用インターフェース１３は、そのエントリ設定データＥＮＴに従って、自身のフローテーブル１２内のエントリの設定（追加、変更、削除等）を行う。このように、コントローラ１００は、フローテーブル１２の内容の設定を通してスイッチ１０の動作を制御し、それにより、ネットワークトラフィックを適宜制御することができる。
【００４５】
このような処理を実現するためのコントローラ１００とスイッチ１０との間のインタフェース方式としては、例えば、Ｏｐｅｎｆｌｏｗ（ｈｔｔｐ：／／ｗｗｗ．ｏｐｅｎｆｌｏｗｓｗｉｔｃｈ．ｏｒｇ／を参照）が挙げられる。この場合、「Ｏｐｅｎｆｌｏｗ  Ｃｏｎｔｒｏｌｌｅｒ」がコントローラ１００となり、「Ｏｐｅｎｆｌｏｗ  Ｓｗｉｔｃｈ」が各スイッチ１０となる。
【００４６】
図４は、本実施の形態に係るコントローラ１００の構成を示すブロック図である。コントローラ１００は、処理装置１０１、記憶装置１０２、及び通信装置１０３を備えている。処理装置１０１は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）を含む。記憶装置１０２は、例えば、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）やＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）を含む。通信装置１０３は、例えば、外部との通信を行うネットワークカードを含む。
【００４７】
記憶装置１０２には、接続情報ＣＯＮ、セッション情報ＳＥＳ、エントリ設定データＥＮＴ等が格納される。
【００４８】
接続情報ＣＯＮは、ネットワークの接続関係を示す。つまり、接続情報ＣＯＮは、スイッチ１０、アプライアンス２０、サーバ２００といった構成要素間の接続関係（トポロジ）を示す。より詳細には、接続情報ＣＯＮは、各構成要素の各ポートがどの構成要素のどのポートに接続されているかを示す。各構成要素の識別情報としては、ＭＡＣアドレスやＩＰアドレスなどが挙げられる。
【００４９】
セッション情報ＳＥＳは、アプライアンス２０が有するセッションテーブル２２の内容を示す。このセッション情報ＳＥＳは、アプライアンス２０から取得することができる。詳細は後述される。
【００５０】
エントリ設定データＥＮＴは、上述の通り、対象スイッチ１０に対してエントリの設定（追加、変更、削除等）を指示する情報である。
【００５１】
処理装置１０１は、本実施の形態に係る「ネットワーク制御処理」を行う。より詳細には、図４に示されるように、処理装置１０１は、スイッチ制御部１１０、アプライアンス制御部１２０、及び変換部１３０を備えている。これら機能ブロックは、処理装置１０１が制御プログラムＰＲＯＧを実行することにより実現される。制御プログラムＰＲＯＧは、コンピュータ（処理装置１０１）によって実行されるコンピュータプログラムであり、記憶装置１０２に格納される。制御プログラムＰＲＯＧは、コンピュータ読み取り可能な記録媒体に格納されていてもよい。
【００５２】
スイッチ制御部１１０は、制御回線を介してスイッチ１０と接続され、通信を行う。このスイッチ制御部１１０は、スイッチ１０に対して、所望のエントリをフローテーブル１２に設定するよう指示する機能を有している。具体的には、スイッチ制御部１１０は、所望のエントリの設定を指示するエントリ設定データＥＮＴを作成し、そのエントリ設定データＥＮＴを記憶装置１０２に格納する。エントリ設定データＥＮＴは、後述される変換部１３０によって作成される場合もある。スイッチ制御部１１０は、エントリ設定データＥＮＴを記憶装置１０２から読み出し、そのエントリ設定データＥＮＴをスイッチ１０に送信する。これにより、所望のエントリを当該スイッチ１０のフローテーブル１２に設定することができる。
【００５３】
アプライアンス制御部１２０は、制御回線を介してアプライアンス２０と接続され、通信を行う。このアプライアンス制御部１２０は、所望のアプライアンス２０からセッション情報ＳＥＳを取得する機能を有している。より詳細には、アプライアンス制御部１２０は、所望のアプライアンス２０に対して、セッション情報ＳＥＳの送付を要求する。その要求に応答して、当該アプライアンス２０のセッション情報送信部２３は、自身のセッションテーブル２２の内容を示すセッション情報ＳＥＳを、コントローラ１００に送信する。アプライアンス制御部１２０は、当該アプライアンス２０からセッション情報ＳＥＳを受け取り、そのセッション情報ＳＥＳを記憶装置１０２に格納する。
【００５４】
変換部１３０は、セッション情報ＳＥＳをエントリ設定データＥＮＴに変換する機能を有している。上述の通り、アプライアンス２０は、セッションテーブル２２を参照することによって、あるフローに属するパケットに対して所定のパケット処理を実施する。そのセッションテーブル２２の内容をスイッチ１０のフローテーブル１２に反映させることができれば、スイッチ１０は、同一フローに属するパケットに対して同じパケット処理を行うことができるはずである。すなわち、アプライアンス２０が受信パケットに対して行っていた所定のパケット処理を、スイッチ１０に肩代わりさせることができる。そのために、変換部１３０は、セッション情報ＳＥＳを記憶装置１０２から読み出し、そのセッション情報ＳＥＳに応じたエントリ設定データＥＮＴを作成する。作成されるエントリ設定データＥＮＴは、アプライアンス２０と同じパケット処理を実現するエントリの設定を、スイッチ１０に対して指示する。変換部１３０は、作成したエントリ設定データＥＮＴを記憶装置１０２に格納する。
【００５５】
２．処理フロー
以下、本実施の形態に係るネットワーク制御処理をより詳細に説明する。
例として、図５で示される状態を考える。図５において、第１アプライアンス２０−１はアクティブなアプライアンス２０であり、一方、第２アプライアンス２０−２はスタンバイ状態にある。スイッチ１０のフローテーブル１２は、「アプライアンス２０宛てのパケットを第１アプライアンス２０−１に転送すること」を指定するエントリを含んでいる。フローＦＬＯＷ０は、現在アプライアンス２０によって処理されている既存フローであり、当該既存フローＦＬＯＷ０に属するパケットの宛先はアプライアンス２０である。スイッチ１０は、既存フローＦＬＯＷ０に属するパケットを受け取ると、フローテーブル１２中のマッチエントリに従って、受信パケットを第１アプライアンス２０−１に転送する。第１アプライアンス２０−１は、既存フローＦＬＯＷ０に属するパケットを受け取り、セッションテーブル２２に従って、当該受信パケットに対して所定のパケット処理（ロードバランサとしての処理、ファイヤーウォールとしての処理、等）を実施する。
【００５６】
ここで、使用するアプライアンス２０を、第１アプライアンス２０−１から第２アプライアンス２０−２に切り替えることを考える。つまり、第１アプライアンス２０−１を保守などのために停止させ、別の第２アプライアンス２０−２にその機能を移行することを考える。図６は、その場合の処理を示すフローチャートである。
【００５７】
２−１．収集処理（ステップＳ１０）
まず、コントローラ１００は、「収集処理」を行う（ステップＳ１０）。図７及び図２を参照して、収集処理を説明する。
【００５８】
ステップＳ１１：
コントローラ１００は、アプライアンス２０宛のパケットを第１アプライアンス２０−１ではなくコントローラ１００に集めるための処理を行う。そのために、コントローラ１００のスイッチ制御部１１０は、“転送エントリ”の設定を指示するエントリ設定データＥＮＴ０を作成する。その転送エントリは、「アプライアンス２０宛てのパケットをコントローラ１００に転送すること」を指定する。スイッチ制御部１１０は、そのエントリ設定データＥＮＴ０をスイッチ１０に送信する。すなわち、スイッチ制御部１１０は、スイッチ１０に対して、転送エントリをフローテーブル１２に設定するよう指示する。
【００５９】
スイッチ１０のコントローラ用インターフェース１３は、コントローラ１００からエントリ設定データＥＮＴ０を受け取る。コントローラ用インターフェース１３は、そのエントリ設定データＥＮＴ０に従って、上記転送エントリをフローテーブル１２に設定する。その後、スイッチ処理部１１は、アプライアンス２０宛てのパケットを受け取ると、当該転送エントリに従って、受信パケットをコントローラ１００に転送する。少なくとも既存フローＦＬＯＷ０に属するパケットは、第１アプライアンス２０−１ではなくコントローラ１００に転送されることになる。このパケットに対するコントローラ１００の処理については、後述する（第２−４節参照）。
【００６０】
ステップＳ１２：
また、コントローラ１００は、移行元の第１アプライアンス２０−１からセッション情報ＳＥＳを取得する。より詳細には、コントローラ１００のアプライアンス制御部１２０は、第１アプライアンス２０−１に対して、セッション情報ＳＥＳの送付を要求する。その要求に応答して、第１アプライアンス２０−１のセッション情報送信部２３は、自身のセッションテーブル２２の内容を示すセッション情報ＳＥＳを、コントローラ１００に送信する。アプライアンス制御部１２０は、第１アプライアンス２０−１からセッション情報ＳＥＳを受け取る。そのセッション情報ＳＥＳは、移行元の第１アプライアンス２０−１が既存フローＦＬＯＷ０に属するパケットに対して実施していたパケット処理に関する情報を含んでいる。
【００６１】
２−２．ショートカット処理（ステップＳ２０）
次に、コントローラ１００は、「ショートカット処理」を行う（ステップＳ２０）。ショートカット処理とは、アプライアンス２０がパケットに対して行っていた所定のパケット処理を、スイッチ１０に肩代わりさせることである。つまり、ショートカット処理とは、アプライアンス２０を介することなく、アプライアンス２０と同等のパケット処理をスイッチ１０に行わせることである。図８及び図２を参照して、ショートカット処理を説明する。
【００６２】
ステップＳ２１：
移行元の第１アプライアンス２０−１が扱っていた既存フロー（既存セッション）の各々に関して、ショートカット処理が行われる。ここでは、代表として、上述の既存フローＦＬＯＷ０に関するショートカット処理を説明する。コントローラ１００は、既存フローＦＬＯＷ０に関して、次のような処理を行う（ステップＳ２２、Ｓ２３）。
【００６３】
ステップＳ２２：
コントローラ１００の変換部１３０は、既出のステップＳ１２で取得したセッション情報ＳＥＳに基いて、“第１エントリ”の設定を指示する第１エントリ設定データＥＮＴ１を作成する。その第１エントリは、「既存フローＦＬＯＷ０に属するパケットに対して、第１アプライアンス２０−１と同じパケット処理を実施すること」を指定する。既存フローＦＬＯＷ０のフロー識別情報は、セッション情報ＳＥＳから分かる。また、第１アプライアンス２０−１が既存フローＦＬＯＷ０に属するパケットに対して行っていたパケット処理も、セッション情報ＳＥＳから分かる。そのパケット処理（エントリのアクション）としてパケット転送が必要な場合、接続情報ＣＯＮを参照することによって出力ポートを把握することができる。すなわち、変換部１３０は、セッション情報ＳＥＳ及び接続情報ＣＯＮを参照することによって、セッション情報ＳＥＳに応じた第１エントリ設定データＥＮＴ１を作成することができる。
【００６４】
ステップＳ２３：
コントローラ１００のスイッチ制御部１１０は、作成された第１エントリ設定データＥＮＴ１をスイッチ１０に送信する。すなわち、スイッチ制御部１１０は、スイッチ１０に対して、上記第１エントリをフローテーブル１２に設定するよう指示する。
【００６５】
スイッチ１０のコントローラ用インターフェース１３は、コントローラ１００から第１エントリ設定データＥＮＴ１を受け取る。コントローラ用インターフェース１３は、その第１エントリ設定データＥＮＴ１に従って、上記第１エントリをフローテーブル１２に設定する。その後、スイッチ処理部１１は、既存フローＦＬＯＷ０に属するパケットを受け取ると、当該第１エントリに従って、第１アプライアンス２０−１と同じパケット処理を当該受信パケットに対して行う。すなわち、既存フローＦＬＯＷ０に属するパケットは、もはや第１アプライアンス２０−１を経由することなく処理される。
【００６６】
２−３．切り替え処理（ステップＳ３０）
次に、コントローラ１００は、「切り替え処理」を行う（ステップＳ３０）。図９及び図２を参照して、切り替え処理を説明する。この時点で、アクティブなアプライアンス２０は、第２アプライアンス２０−２に変更される。
【００６７】
ステップＳ３１：
コントローラ１００は、アプライアンス２０宛の新規フローを移行先の第２アプライアンス２０−２に転送するための処理を行う。そのために、コントローラ１００のスイッチ制御部１１０は、“第２エントリ”の設定を指示する第２エントリ設定データＥＮＴ２を作成する。その第２エントリは、「アプライアンス２０宛てのパケット（但し、既存フローＦＬＯＷ０以外の新規フローに属するパケット）を、第２アプライアンス２０−２に転送すること」を指定する。スイッチ制御部１１０は、その第２エントリ設定データＥＮＴ２をスイッチ１０に送信する。すなわち、スイッチ制御部１１０は、スイッチ１０に対して、第２エントリをフローテーブル１２に設定するよう指示する。
【００６８】
スイッチ１０のコントローラ用インターフェース１３は、コントローラ１００から第２エントリ設定データＥＮＴ２を受け取る。コントローラ用インターフェース１３は、その第２エントリ設定データＥＮＴ２に従って、上記第２エントリをフローテーブル１２に設定する。その後、スイッチ処理部１１は、新規フローＦＬＯＷ１に属するアプライアンス２０宛てのパケットを受け取ると、当該第２エントリに従って、当該受信パケットを第２アプライアンス２０−２に転送する。つまり、既存フローＦＬＯＷ０と異なる新規フローＦＬＯＷ１に属するパケットは、移行先の第２アプライアンス２０−２に転送される。
【００６９】
２−４．一時パケット処理
上述のステップＳ１１の結果、アプライアンス２０宛てのパケットは、しばらくの間、コントローラ１００に転送されることになる。コントローラ１００は、その転送パケットに対して「一時パケット処理」を行う。この一時パケット処理は、上述のステップＳ１０〜Ｓ３０と並行して行われる。図１０を参照して、一時パケット処理を説明する。
【００７０】
コントローラ１００のスイッチ制御部１１０は、スイッチ１０から転送パケットを受け取る（ステップＳ４１）。スイッチ制御部１１０は、転送パケットのヘッダ情報と上述のセッション情報ＳＥＳとに基いて、転送パケットが既存フローに属するか否かを判定する（ステップＳ４２）。
【００７１】
転送パケットが既存フローに属する場合（ステップＳ４３；Ｙｅｓ)、第１アプライアンス２０−１と同等のパケット処理が実行される（ステップＳ４４）。具体的には、スイッチ制御部１１０は、転送パケットをスイッチ１０に返送し、更に、スイッチ１０に対して「転送パケットに第１アプライアンス２０−１と同じパケット処理を実施すること」を指示する。スイッチ１０のコントローラ用インターフェース１３は、コントローラ１００からの指示に従って、転送パケットに対して第１アプライアンス２０−１と同じパケット処理を実施する。あるいは、スイッチ制御部１１０は、上記ステップＳ２３の完了後に、転送パケットをスイッチ１０に返送してもよい。
【００７２】
一方、転送パケットが新規フローに属する場合（ステップＳ４３；Ｎｏ）、当該パケットは第２アプライアンス２０−２に転送される（ステップＳ４５）。具体的には、スイッチ制御部１１０は、転送パケットをスイッチ１０に返送し、更に、スイッチ１０に対して「転送パケットを第２アプライアンス２０−２に転送すること」を指示する。スイッチ１０のコントローラ用インターフェース１３は、コントローラ１００からの指示に従って、転送パケットを第２アプライアンス２０−２に出力する。
【００７３】
尚、ステップＳ４２において、スイッチ制御部１１０はまず、転送パケットのＳＹＮフラグをチェックしてもよい。ＳＹＮフラグが立っていれば、それは新規セッションを意味する。従って、その場合、スイッチ制御部１１０は直ちにステップＳ４５を実行することができる。このことは、処理時間の短縮に寄与する。また、ステップＳ４５により転送された新規フローのパケットについて、第２アプライアンスに転送することを指示するエントリを追加で設定してもよい。これにより、一度新規フローとして処理されたフローに属する後続パケットが再度コントローラ１００に転送されないようにすることができる。このことは、コントローラ１００の処理時間の短縮や負荷の軽減に寄与する。
【００７４】
２−５．効果
以上に説明されたように、本実施の形態によれば、ショートカット処理（ステップＳ２０）が行われる。これにより、移行元の第１アプライアンス２０−１が行っていた所定のパケット処理をスイッチ１０に肩代わりさせ、既存フロー（既存セッション）を維持することが可能となる。そして、ショートカット処理（ステップＳ２０）の完了時点で、第１アプライアンス２０−１を経由する既存フローは無くなる。従って、その時点で、第１アプライアンス２０−１をネットワークから切り離すことが可能となる。すなわち、第１アプライアンス２０−１を利用する全てのセッションが終了するのを待つ必要はなく、また、不定期間のタイムアウトを設定する必要もない。予測可能な時間で、且つ、既存フローを切断することなく、第１アプライアンス２０−１の動作を停止させることが可能である。
【００７５】
また、移行先の第２アプライアンス２０−２は、移行元の第１アプライアンス２０−１からセッション情報ＳＥＳを受け取る機構を有していなくてもよい。従って、第１アプライアンス２０−１と第２アプライアンス２０−２のベンダーが互いに異なっていても、本発明を容易に実装することができる。
【００７６】
更に、アプライアンス２０がネットワーク上に一つしか存在しない場合、新規セッションは利用できないが、ショートカット処理によって既存セッションをそのまま維持することも可能である。
【００７７】
３．具体例
以下、本実施の形態に係るアプライアンス切り替え処理の具体例を説明する。ここでは、図１１に示されるようなネットワーク構成を考える。
【００７８】
図１１において、アプライアンス２０としてのロードバランサ２０−１、２０−２、及び実サーバとしてのサーバ２００−１〜２００−３が、スイッチ１０に接続されている。ロードバランサ２０−１はアクティブ状態であり、ロードバランサ２０−２はスタンバイ状態である。ロードバランサ２０では、仮想サーバに対応した仮想ＩＰアドレスＶＩＰ１がＴＣＰポート８０でサービスされる。その仮想ＩＰアドレスＶＩＰ１に対応する実サーバ群が、サーバ２００−１〜２００−３である。サーバ２００−１、２００−２、２００−３のそれぞれのＩＰアドレスは、ＩＰ１、ＩＰ２、ＩＰ３であり、それぞれのＭＡＣアドレスはＭＡＣ１、ＭＡＣ２、ＭＡＣ３である。また、各サーバ２００のサービスポートは、仮想サーバと同じＴＣＰポート８０となっている。クライアント３００は、外部ネットワークからロードバランサ２０が提供する仮想サーバを通じて、実サーバ２００にアクセスする。
【００７９】
外部ネットワークと接続しているルータには、ＭＡＣアドレスＥＸＴによってロードバランサ２０から到達可能である。また、実サーバ群２００は、戻りパケットを処理させるためデフォルトゲートウェイとしてロードバランサ２０を指定しており、そのＩＰアドレスはＬＢである。ロードバランサ２０−１、２０−２はそれぞれＭＡＣアドレスＬＢ１、ＬＢ２をもつ。
【００８０】
図１２は、スイッチ１０のフローテーブル１２の状態を示している。フローテーブル１２中のアスタリスク（＊）は任意であることを表す。エントリＦ１は、「ロードバランサ２０（ＶＩＰ１）宛てのパケットをロードバランサ２０−１に転送すること」を指定している。エントリＦ２は、「サーバ２００−１（ＩＰ１、ＭＡＣ１）宛てのパケットをサーバ２００−１に転送すること」を指定している。エントリＦ３は、「サーバ２００−２（ＩＰ２、ＭＡＣ２）宛てのパケットをサーバ２００−２に転送すること」を指定している。エントリＦ４は、「サーバ２００−３（ＩＰ３、ＭＡＣ３）宛てのパケットをサーバ２００−３に転送すること」を指定している。
【００８１】
クライアント３００は、ロードバランサ２０に対してＴＣＰ接続要求を行う。クライアント３００から送出されるパケットの宛先ＩＰアドレスはＶＩＰ１となっている。スイッチ１０は、そのパケットを受信すると、図１２で示されるフローテーブル１２を参照する。このとき、エントリＦ１がヒットエントリとなるため、スイッチ１０は、受信パケットをロードバランサ２０−１に転送する。
【００８２】
ロードバランサ２０−１は、そのパケットを受信し、当該フローを処理する実サーバとして例えばサーバ２００−１を選択する。ロードバランサ２０−１は、受信パケットに対してパケット処理を行う。具体的には、ロードバランサ２０−１は、宛先ＩＰアドレスをＩＰ１に書き換え、宛先ＭＡＣアドレスをＭＡＣ１に書き換えた後、当該パケットをサーバ２００−１に向けて送信する。スイッチ１０は、そのパケットを受信すると、図１２で示されるフローテーブル１２を参照する。このとき、エントリＦ２がヒットエントリとなるため、スイッチ１０は、受信パケットをサーバ２００−１に転送する。
【００８３】
サーバ２００−１からクライアント３００に対する応答パケットは、宛先ＩＰアドレスと宛先ポート番号がクライアント３００で、宛先ＭＡＣアドレスはＬＢ１となっている。ロードバランサ２０−１は、送信元ＩＰアドレスをＶＩＰ１に、宛先ＭＡＣアドレスをＥＸＴに書き換え、応答パケットを外部ネットワークに転送する。クライアント３００はこれを受信する。
【００８４】
この状態において、アクティブなロードバランサ２０を、ロードバランサ２０−１からロードバランサ２０−２に切り替えることを考える。
【００８５】
ステップＳ１１：
コントローラ１００は、“転送エントリ”の設定を指示するエントリ設定データＥＮＴ０をスイッチ１０に送信する。その結果、図１３に示されるように、エントリＦ１は、「ロードバランサ２０（ＶＩＰ１）宛てのパケットをコントローラ１００に転送すること」を指定するように書き換えられる。コントローラ１００は、ロードバランサ２０宛てのパケットを一時的に受け取り、上述の一時パケット処理を行う。
【００８６】
ステップＳ１２：
また、コントローラ１００は、移行元のロードバランサ２０−１からセッション情報ＳＥＳを取得する。そのセッション情報ＳＥＳは、ロードバランサ２０−１が受信パケットに対して行っていた上記パケット処理に関する情報を含んでいる。
【００８７】
ステップＳ２０：
コントローラ１００は、セッション情報ＳＥＳに基いて、“第１エントリ”の設定を指示する第１エントリ設定データＥＮＴ１を作成する。その第１エントリは、「既存フローに属するパケットに対して、ロードバランサ２０−１と同じパケット処理を実施すること」を指定する。コントローラ１００は、その第１エントリ設定データＥＮＴ１をスイッチ１０に送信する。スイッチ１０は、その第１エントリ設定データＥＮＴ１に従って、第１エントリをフローテーブル１２に設定する。
【００８８】
図１４は、ある１つの既存フロー（クライアントＩＰアドレス＝ＣＩＰ１、ポート番号＝１２３４５、宛先ＩＰアドレス＝ＶＩＰ１、宛先ポート番号＝８０）に関する“第１エントリＦ５”が設定されたフローテーブル１２を示している。第１エントリＦ５は、「当該既存フローに属するパケットに対して、宛先ＩＰアドレスをＩＰ１に書き換え、宛先ＭＡＣアドレスをＭＡＣ１に書き換えた後、実サーバ２００−１に転送すること」を指定している。この第１エントリＦ５は、エントリＦ１よりも高い優先度でフローテーブル１２に設定される。その結果、当該既存フローに属するパケットは、ロードバランサ２０−１を経由することなく、実サーバ２００−１に直接送り届けられるようになる。尚、エントリＦ５’は、実サーバ２００−１からクライアント３００への戻りトラフィックのショートカットを実現するためのものである。このエントリＦ５’も、上記第１エントリＦ５と同様に設定される。
【００８９】
図１５は、複数の異なる既存フローに対して、それぞれ第１エントリＦ５〜Ｆｎ及びＦ５’〜Ｆｎ’が設定された場合を示している。第１エントリＦ５〜Ｆｎ及びＦ５’〜Ｆｎ’の各々は、図１４の場合と同様に設定される。
【００９０】
ステップＳ３０：
コントローラ１００は、“第２エントリ”の設定を指示する第２エントリ設定データＥＮＴ２を作成する。その第２エントリは、「ロードバランサ２０宛てのパケット（但し、既存フロー以外の新規フローに属するパケット）を、ロードバランサ２０−２に転送すること」を指定する。コントローラ１００は、その第２エントリ設定データＥＮＴ２をスイッチ１０に送信する。スイッチ１０は、その第２エントリ設定データＥＮＴ２に従って、第２エントリをフローテーブル１２に設定する。
【００９１】
本例では、図１６に示されるように、エントリＦ１が、「ロードバランサ２０（ＶＩＰ１）宛てのパケットをロードバランサ２０−２に転送すること」を指定するように書き換えられる。その結果、既存フローに属するパケットは、上記第１エントリＦ５〜Ｆｎ、Ｆ５’〜Ｆｎ’に従って、ロードバランサ２０−１を経由することなく処理され、一方、既存フロー以外の新規フローに属するパケットは、エントリＦ１に従って、ロードバランサ２０−２に転送される。
【００９２】
このようにして、既存フローを切断することなく、アクティブなロードバランサ２０を短時間で切り替えることが可能となる。ファイヤーウォールの場合も同様である。
【００９３】
尚、アクティブなロードバランサがロードバランサ２０−２に切り替わると、ロードバランサ２０−１のＩＰアドレス（ＶＩＰ１およびＬＢ）はロードバランサ２０−２に引き継がれることになる。このＩＰアドレスに対応するＭＡＣアドレスがＬＢ１からＬＢ２に変化したことは、ＡＲＰ（Ａｄｄｒｅｓｓ  Ｒｅｓｏｌｕｔｉｏｎ  Ｐｒｏｔｏｃｏｌ）の仕組みによってサーバ２００にも伝えられる。
【００９４】
以上、本発明の実施の形態が添付の図面を参照することにより説明された。但し、本発明は、上述の実施の形態に限定されず、要旨を逸脱しない範囲で当業者により適宜変更され得る。
【００９５】
上記の実施の形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
【００９６】
（付記１）
ネットワーク中に配置されたアプライアンス及びスイッチと、
前記アプライアンス及び前記スイッチに接続されたコントローラと
を備え、
前記スイッチは、フローテーブルを備え、
前記フローテーブルの各エントリは、マッチ条件にマッチするパケットに対して行われるアクションを指定し、
前記スイッチは、パケットを受け取ると前記フローテーブルを参照し、前記受け取ったパケットにマッチするエントリで指定される前記アクションを前記受け取ったパケットに対して行い、
前記アプライアンスとしての第１アプライアンスは、既存フローに属するパケットに対して第１パケット処理を実施し、
前記アプライアンスを前記第１アプライアンスから第２アプライアンスに切り替える場合、前記コントローラは、ショートカット処理を行った後、切り替え処理を行い、
前記ショートカット処理において、
前記コントローラは、前記スイッチに対して、第１エントリを前記フローテーブルに設定するように指示し、
前記第１エントリは、前記既存フローに属するパケットに対して前記第１パケット処理を実施することを指定し、
前記切り替え処理において、
前記コントローラは、前記スイッチに対して、第２エントリを前記フローテーブルに設定するように指示し、
前記第２エントリは、前記アプライアンス宛てのパケットであって前記既存フロー以外の新規フローに属するパケットを、前記第２アプライアンスに転送することを指定する
ネットワークシステム。
【００９７】
（付記２）
付記１に記載のネットワークシステムであって、
前記第１アプライアンスは、自身が処理するフローに関する情報を示すセッションテーブルを参照することによって、前記既存フローに属するパケットに対して前記第１パケット処理を実施し、
前記コントローラは、前記第１アプライアンスの前記セッションテーブルの内容を示すセッション情報を取得し、
前記コントローラは、前記セッション情報に基いて、前記スイッチに対して、前記第１エントリを前記フローテーブルに設定するように指示する
ネットワークシステム。
【００９８】
（付記３）
付記２に記載のネットワークシステムであって、
前記ショートカット処理の前に、前記コントローラは、前記スイッチに対して、転送エントリを前記フローテーブルに設定するように指示し、
前記転送エントリは、前記アプライアンス宛てのパケットを前記コントローラに転送することを指定する
ネットワークシステム。
【００９９】
（付記４）
付記３に記載のネットワークシステムであって、
前記スイッチから転送パケットを受け取った場合、前記コントローラは、前記転送パケットのヘッダ情報と前記セッション情報とに基いて、前記転送パケットが前記既存フローに属するか否かを判定し、その後、前記転送パケットを前記スイッチに返送し、
前記転送パケットが前記既存フローに属する場合、前記コントローラは、前記スイッチに対して、前記転送パケットに前記第１パケット処理を実施することを指示し、
前記転送パケットが前記既存フローに属さない場合、前記コントローラは、前記スイッチに対して、前記転送パケットを前記第２アプライアンスに転送することを指示する
ネットワークシステム。
【０１００】
（付記５）
ネットワーク中に配置されたアプライアンス及びスイッチに接続されるコントローラであって、
前記スイッチは、フローテーブルを備え、
前記フローテーブルの各エントリは、マッチ条件にマッチするパケットに対して行われるアクションを指定し、
前記スイッチは、パケットを受け取ると前記フローテーブルを参照し、前記受け取ったパケットにマッチするエントリで指定される前記アクションを前記受け取ったパケットに対して行い、
前記アプライアンスとしての第１アプライアンスは、既存フローに属するパケットに対して第１パケット処理を実施し、
前記コントローラは、処理装置を備え、
前記アプライアンスを前記第１アプライアンスから第２アプライアンスに切り替える場合、前記処理装置は、ショートカット処理を行った後、切り替え処理を行い、
前記ショートカット処理において、
前記処理装置は、前記スイッチに対して、第１エントリを前記フローテーブルに設定するように指示し、
前記第１エントリは、前記既存フローに属するパケットに対して前記第１パケット処理を実施することを指定し、
前記切り替え処理において、
前記処理装置は、前記スイッチに対して、第２エントリを前記フローテーブルに設定するように指示し、
前記第２エントリは、前記アプライアンス宛てのパケットであって前記既存フロー以外の新規フローに属するパケットを、前記第２アプライアンスに転送することを指定する
コントローラ。
【０１０１】
（付記６）
アプライアンス及びスイッチが配置されたネットワークの制御方法であって、
前記スイッチは、フローテーブルを備え、
前記フローテーブルの各エントリは、マッチ条件にマッチするパケットに対して行われるアクションを指定し、
前記スイッチは、パケットを受け取ると前記フローテーブルを参照し、前記受け取ったパケットにマッチするエントリで指定される前記アクションを前記受け取ったパケットに対して行い、
前記アプライアンスとしての第１アプライアンスは、既存フローに属するパケットに対して第１パケット処理を実施し、
前記制御方法は、前記アプライアンスを前記第１アプライアンスから第２アプライアンスに切り替えることを含み、
前記切り換えることは、
ショートカット処理を行うことと、
前記ショートカット処理の後に切り替え処理を行うことと
を含み、
前記ショートカット処理は、前記スイッチにおいて、第１エントリを前記フローテーブルに設定することを含み、
前記第１エントリは、前記既存フローに属するパケットに対して前記第１パケット処理を実施することを指定し、
前記切り替え処理は、前記スイッチにおいて、第２エントリを前記フローテーブルに設定することを含み、
前記第２エントリは、前記アプライアンス宛てのパケットであって前記既存フロー以外の新規フローに属するパケットを、前記第２アプライアンスに転送することを指定する
制御方法。
【０１０２】
（付記７）
アプライアンス及びスイッチが配置されたネットワークの制御処理をコンピュータに実行させる制御プログラムであって、
前記スイッチは、フローテーブルを備え、
前記フローテーブルの各エントリは、マッチ条件にマッチするパケットに対して行われるアクションを指定し、
前記スイッチは、パケットを受け取ると前記フローテーブルを参照し、前記受け取ったパケットにマッチするエントリで指定される前記アクションを前記受け取ったパケットに対して行い、
前記アプライアンスとしての第１アプライアンスは、既存フローに属するパケットに対して第１パケット処理を実施し、
前記制御処理は、前記アプライアンスを前記第１アプライアンスから第２アプライアンスに切り替えることを含み、
前記切り換えることは、
ショートカット処理を行うことと、
前記ショートカット処理の後に切り替え処理を行うことと
を含み、
前記ショートカット処理は、前記スイッチに対して、第１エントリを前記フローテーブルに設定するように指示することを含み、
前記第１エントリは、前記既存フローに属するパケットに対して前記第１パケット処理を実施することを指定し、
前記切り替え処理は、前記スイッチに対して、第２エントリを前記フローテーブルに設定するように指示することを含み、
前記第２エントリは、前記アプライアンス宛てのパケットであって前記既存フロー以外の新規フローに属するパケットを、前記第２アプライアンスに転送することを指定する
制御プログラム。
【０１０３】
本出願は、２０１０年２月１日に出願された日本国特許出願２０１０−０２０３９１を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【図１】
2011093288.tif 000003
【図２】
2011093288.tif 000004
【図３】
2011093288.tif 000005
【図４】
2011093288.tif 000006
【図５】
2011093288.tif 000007
【図６】
2011093288.tif 000008
【図７】
2011093288.tif 000009
【図８】
2011093288.tif 000010
【図９】
2011093288.tif 000011
【図１０】
2011093288.tif 000012
【図１１】
2011093288.tif 000013
【図１２】
2011093288.tif 000014
【図１３】
2011093288.tif 000015
【図１４】
2011093288.tif 000016
【図１５】
2011093288.tif 000017
【図１６】
2011093288.tif 000018
【国際調査報告】
2011093288.tif 000019
2011093288.tif 000020
2011093288.tif 000021
2011093288.tif 000022