(57)【特許請求の範囲】
【請求項１】
パケットのヘッダ情報を所定の変換方式に従って変換するパケットヘッダ変換を行うアプライアンスと、
前記所定の変換方式及び所定の条件を示すショートカット管理情報が格納された記憶装置を備えるコントローラと、
前記アプライアンス及び前記コントローラに接続されたスイッチと
を備え、
前記スイッチは、フローテーブルを有し、
前記フローテーブルの各エントリは、マッチ条件にマッチするパケットに対して行われるアクションを指定し、
前記スイッチは、パケットを受け取ると前記フローテーブルを参照し、前記受け取ったパケットにマッチするエントリで指定される前記アクションを前記受け取ったパケットに対して行い、
ショートカット設定処理において、
前記スイッチは、所定のパケットを前記アプライアンスに転送し、
前記アプライアンスは、前記所定のパケットに対して前記パケットヘッダ変換を行うことにより変換後パケットを作成し、前記変換後パケットを前記スイッチに返信し、
前記スイッチは、前記アプライアンスから受け取った前記変換後パケットを前記コントローラに転送し、
前記コントローラは、前記変換後パケットに応答して前記ショートカット管理情報を参照し、
前記変換後パケットが前記所定の条件を満たす場合、前記コントローラは、前記変換後パケットの宛先及び前記所定の変換方式に基いて、新規エントリの設定を指示するエントリ設定データを作成し、前記エントリ設定データを前記スイッチに送信し、
前記新規エントリは、前記所定のパケットと同じフローに属するパケットを、前記アプライアンスを経由することなく前記宛先に向けて転送することを指定し、
前記スイッチは、前記コントローラから受け取った前記エントリ設定データに従って、前記フローテーブルに前記新規エントリを追加する
ネットワークシステム。
【請求項２】
請求項１に記載のネットワークシステムであって、
前記フローテーブルは、前記アプライアンス宛のパケットを前記アプライアンスへ転送することを指定する第１デフォルトエントリを含んでおり、
前記ショートカット設定処理において、
前記所定のパケットは前記第１デフォルトエントリにマッチし、
前記スイッチは、前記第１デフォルトエントリに従って、前記所定のパケットを前記アプライアンスに転送する
ネットワークシステム。
【請求項３】
請求項２に記載のネットワークシステムであって、
前記フローテーブルは、更に、前記アプライアンスから受け取るパケットを前記コントローラへ転送することを指定する第２デフォルトエントリを含んでおり、
前記ショートカット設定処理において、前記スイッチは、前記アプライアンスから受け取った前記変換後パケットを、前記第２デフォルトエントリに従って前記コントローラに転送する
ネットワークシステム。
【請求項４】
請求項２に記載のネットワークシステムであって、
前記受け取ったパケットにマッチするエントリが前記フローテーブルに無い場合、前記スイッチは、前記受け取ったパケットを前記コントローラに転送し、
前記ショートカット設定処理において、前記アプライアンスから受け取った前記変換後パケットにマッチするエントリは前記フローテーブルに無い
ネットワークシステム。
【請求項５】
請求項１乃至４のいずれか一項に記載のネットワークシステムであって、
前記アプライアンスはロードバランサであり、
前記所定の条件は、前記変換後パケットが、前記変換後パケットが属するフローの最初のパケットであることである
ネットワークシステム。
【請求項６】
請求項１乃至５のいずれか一項に記載のネットワークシステムであって、
前記所定の変換方式は、ＭＡＴ（ＭＡＣ  Ａｄｄｒｅｓｓ  Ｔｒａｎｓｌａｔｉｏｎ）、ＮＡＴ（Ｎｅｔｗｏｒｋ  Ａｄｄｒｅｓｓ  Ｔｒａｎｓｌａｔｉｏｎ）、ＮＡＰＴ（Ｎｅｔｗｏｒｋ  Ａｄｄｒｅｓｓ  Ｐｏｒｔ  Ｔｒａｎｓｌａｔｉｏｎ）のいずれかである
ネットワークシステム。
【請求項７】
スイッチ及びアプライアンスが配置されたネットワークを制御するコントローラであって、
前記スイッチは、フローテーブルを有し、
前記フローテーブルの各エントリは、マッチ条件にマッチするパケットに対して行われるアクションを指定し、
前記スイッチは、パケットを受け取ると前記フローテーブルを参照し、前記受け取ったパケットにマッチするエントリで指定される前記アクションを前記受け取ったパケットに対して行い、
前記スイッチは、前記コントローラから受け取るエントリ設定データに従って、前記フローテーブルのエントリを設定し、
前記アプライアンスは、パケットのヘッダ情報を所定の変換方式に従って変換するパケットヘッダ変換を行い、
ショートカット設定処理において、
前記スイッチは、所定のパケットを前記アプライアンスに転送し、
前記アプライアンスは、前記所定のパケットに対して前記パケットヘッダ変換を行うことにより変換後パケットを作成し、前記変換後パケットを前記スイッチに返信し、
前記スイッチは、前記アプライアンスから受け取った前記変換後パケットを前記コントローラに転送し、
前記コントローラは、
前記所定の変換方式及び所定の条件を示すショートカット管理情報が格納された記憶装置と、
前記ショートカット設定処理においてスイッチ設定処理を行う処理装置と
を備え、
前記スイッチ設定処理において、
前記処理装置は、前記変換後パケットに応答して前記ショートカット管理情報を参照し、
前記変換後パケットが前記所定の条件を満たす場合、前記処理装置は、前記変換後パケットの宛先及び前記所定の変換方式に基いて、新規エントリの設定を指示するエントリ設定データを作成し、前記エントリ設定データを前記スイッチに送信し、
前記新規エントリは、前記所定のパケットと同じフローに属するパケットを、前記アプライアンスを経由することなく前記宛先に向けて転送することを指定する
コントローラ。
【請求項８】
スイッチ及びアプライアンスが配置されたネットワークの制御方法であって、
前記スイッチは、フローテーブルを有し、
前記フローテーブルの各エントリは、マッチ条件にマッチするパケットに対して行われるアクションを指定し、
前記スイッチは、パケットを受け取ると前記フローテーブルを参照し、前記受け取ったパケットにマッチするエントリで指定される前記アクションを前記受け取ったパケットに対して行い、
前記アプライアンスは、パケットのヘッダ情報を所定の変換方式に従って変換するパケットヘッダ変換を行い、
前記制御方法は、
前記スイッチから前記アプライアンスに所定のパケットを転送することと、
前記アプライアンスにおいて、前記所定のパケットに対して前記パケットヘッダ変換を行うことにより変換後パケットを作成し、前記変換後パケットを前記スイッチに返信することと、
前記スイッチから前記変換後パケットを取得することと、
前記変換後パケットに応答して、前記所定の変換方式及び所定の条件を示すショートカット管理情報を記憶装置から読み出すことと、
前記変換後パケットが前記所定の条件を満たす場合、前記変換後パケットの宛先及び前記所定の変換方式に基いて、新規エントリの設定を指示するエントリ設定データを作成することと、
前記エントリ設定データを前記スイッチに送信することと、
前記スイッチにおいて、前記エントリ設定データに従って、前記フローテーブルに前記新規エントリを追加することと
を含み、
前記新規エントリは、前記所定のパケットと同じフローに属するパケットを、前記アプライアンスを経由することなく前記宛先に向けて転送することを指定する
制御方法。
【請求項９】
スイッチ及びアプライアンスが配置されたネットワークの制御処理をコンピュータに実行させる制御プログラムが記録された記録媒体であって、
前記スイッチは、フローテーブルを有し、
前記フローテーブルの各エントリは、マッチ条件にマッチするパケットに対して行われるアクションを指定し、
前記スイッチは、パケットを受け取ると前記フローテーブルを参照し、前記受け取ったパケットにマッチするエントリで指定される前記アクションを前記受け取ったパケットに対して行い、
前記スイッチは、前記コントローラから受け取るエントリ設定データに従って、前記フローテーブルのエントリを設定し、
前記アプライアンスは、パケットのヘッダ情報を所定の変換方式に従って変換するパケットヘッダ変換を行い、
ショートカット設定処理において、
前記スイッチは、所定のパケットを前記アプライアンスに転送し、
前記アプライアンスは、前記所定のパケットに対して前記パケットヘッダ変換を行うことにより変換後パケットを作成し、前記変換後パケットを前記スイッチに返信し、
前記スイッチは、前記アプライアンスから受け取った前記変換後パケットを前記コンピュータに転送し、
前記制御処理は、
前記変換後パケットに応答して、前記所定の変換方式及び所定の条件を示すショートカット管理情報を記憶装置から読み出すことと、
前記変換後パケットが前記所定の条件を満たす場合、前記変換後パケットの宛先及び前記所定の変換方式に基いて、新規エントリの設定を指示するエントリ設定データを作成することと、
前記エントリ設定データを前記スイッチに送信することと
を含み、
前記新規エントリは、前記所定のパケットと同じフローに属するパケットを、前記アプライアンスを経由することなく前記宛先に向けて転送することを指定する
記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークシステムとその制御方法に関する。特に、本発明は、パケットヘッダ変換機能を有するアプライアンスを備えるネットワークシステムと、その制御方法に関する。
【背景技術】
【０００２】
非特許文献１（Ｎｉｃｋ  ＭｃＫｅｏｗｎ  ｅｔ  ａｌ．，  “ＯｐｅｎＦｌｏｗ：  Ｅｎａｂｌｉｎｇ  Ｉｎｎｏｖａｔｉｏｎ  ｉｎ  Ｃａｍｐｕｓ  Ｎｅｔｗｏｒｋｓ”，  ＡＣＭ  ＳＩＧＣＯＭＭ  Ｃｏｍｐｕｔｅｒ  Ｃｏｍｍｕｎｉｃａｔｉｏｎ  Ｒｅｖｉｅｗ，  Ｖｏｌ．  ３８，  Ｎｏ．  ２，  ２００８．  （ｈｔｔｐ：／／ｗｗｗ．ｏｐｅｎｆｌｏｗｓｗｉｔｃｈ．ｏｒｇ／／ｄｏｃｕｍｅｎｔｓ／ｏｐｅｎｆｌｏｗ−ｗｐ−ｌａｔｅｓｔ．ｐｄｆ））に、「オープンフロー（ＯｐｅｎＦｌｏｗ）」という技術が記載されている。オープンフローでは、フロー単位で経路制御、障害回復、負荷分散、最適化が行われる。オープンフローでは、転送ノードとして機能するオープンフロースイッチと、そのオープンフロースイッチを制御するオープンフローコントローラが用いられる。【０００３】
オープンフロースイッチは、「マッチ条件」と「アクション」との対応関係を示すフローテーブルを備え、このフローテーブルに従って動作する。具体的には、オープンフロースイッチは、パケットを受け取ると、フローテーブルを参照し、受信パケットにマッチするエントリをフローテーブルから検索する。受信パケットにマッチするエントリがフローテーブルに登録されている場合、オープンフロースイッチは、当該マッチエントリで指定されるアクションを受信パケットに対して実行する。典型的には、オープンフロースイッチは、アクションで指定されている出力ポートに受信パケットを転送する。【０００４】
オープンフロースイッチのフローテーブルの内容を設定するのが、オープンフローコントローラである。すなわち、オープンフローコントローラは、新規エントリの追加、エントリ変更、エントリ削除などをオープンフロースイッチに指示し、それにより、オープンフロースイッチの動作を制御することができる。オープンフロースイッチの動作を制御することにより、ネットワークトラフィックを制御することが可能である。【０００５】
また、ネットワークトラフィックに対して特定の処理を実行する「アプライアンス（ネットワークアプライアンス）」が一般に知られている。アプライアンスとしては、ロードバランサやファイアウォールが例示される。例えば、レイヤ４のロードバランサは、あるフローの最初のパケットを受信した場合、複数のサーバの中から１つを選択する。そして、ロードバランサは、当該パケットのヘッダ情報の変換を適宜行い、変換後のパケットを選択したサーバに転送する。このようなパケットのヘッダ情報の変換は、以下「パケットヘッダ変換」と参照される。その後、同一フローに属するパケットを受信した場合、ロードバランサは、当該受信パケットに対して同様のパケットヘッダ変換を行い、変換後のパケットを選択したサーバに転送する。このようにして、サーバ間の負荷分散が可能となる。
【先行技術文献】
【非特許文献】
【０００６】
【非特許文献１】Ｎｉｃｋ  ＭｃＫｅｏｗｎ  ｅｔ  ａｌ．，  “ＯｐｅｎＦｌｏｗ：  Ｅｎａｂｌｉｎｇ  Ｉｎｎｏｖａｔｉｏｎ  ｉｎ  Ｃａｍｐｕｓ  Ｎｅｔｗｏｒｋｓ”，  ＡＣＭ  ＳＩＧＣＯＭＭ  Ｃｏｍｐｕｔｅｒ  Ｃｏｍｍｕｎｉｃａｔｉｏｎ  Ｒｅｖｉｅｗ，  Ｖｏｌ．  ３８，  Ｎｏ．  ２，  ２００８．  （ｈｔｔｐ：／／ｗｗｗ．ｏｐｅｎｆｌｏｗｓｗｉｔｃｈ．ｏｒｇ／／ｄｏｃｕｍｅｎｔｓ／ｏｐｅｎｆｌｏｗ−ｗｐ−ｌａｔｅｓｔ．ｐｄｆ）
【発明の概要】
【０００７】
本願発明者は次の点に着目した。すなわち、アプライアンスが行うパケットヘッダ変換をフローテーブル中のエントリとして設定することができれば、アプライアンスの処理をスイッチに肩代わりさせることができるはずである。言い換えれば、あるアプライアンスを経由しているトラフィックを、あるタイミングから、当該アプライアンスを経由しないように制御することができるはずである。このようなトラフィック制御は、以下「ショートカット」と参照される。
【０００８】
あるアプライアンスを経由しているトラフィックに関してショートカットを実現するためには、当該アプライアンス内でパケットに対して行われている処理の詳細を、スイッチが知る必要がある。しかしながら、一般に、アプライアンスはブラックボックス型の製品であり、スイッチがアプライアンス内部の処理に関する情報を取得することは困難である。
【０００９】
例えば、ロードバランサは、あるフローの最初のパケットを受信した場合、複数のサーバの中から１つを選択する。そして、ロードバランサは、同一フローに属するパケットを受信した場合、当該受信パケットに対してパケットヘッダ変換を行い、変換後のパケットを選択したサーバに転送する。このロードバランサを経由しているトラフィックに関してショートカットを実現するためには、スイッチは、当該ロードバランサによって選択されたサーバを少なくとも知る必要がある。しかしながら、選択サーバは、当該ロードバランサだけが知り得る情報である。一般に、ロードバランサはブラックボックス型の製品であり、スイッチが、当該ロードバランサによって選択されたサーバを知ることは困難である。無理にそのような情報を取得しようとすれば、ロードバランサを改造する必要があり、そのことは、ライセンス違反や開発コストの増大といった問題を招く。
【００１０】
本発明の１つの目的は、アプライアンスを改造することなく、当該アプライアンスを経由するトラフィックに関するショートカットを実現することにある。
【００１１】
本発明の１つの観点において、ネットワークシステムが提供される。そのネットワークシステムは、アプライアンスと、コントローラと、アプライアンス及びコントローラに接続されたスイッチとを備える。アプライアンスは、パケットのヘッダ情報を所定の変換方式に従って変換するパケットヘッダ変換を行う。コントローラは、上記所定の変換方式及び所定の条件を示すショートカット管理情報が格納された記憶装置を備える。スイッチは、フローテーブルを有する。フローテーブルの各エントリは、マッチ条件にマッチするパケットに対して行われるアクションを指定する。スイッチは、パケットを受け取るとフローテーブルを参照し、受け取ったパケットにマッチするエントリで指定されるアクションを、受け取ったパケットに対して行う。
【００１２】
ショートカット設定処理において、スイッチは、所定のパケットをアプライアンスに転送する。アプライアンスは、所定のパケットに対してパケットヘッダ変換を行うことにより変換後パケットを作成し、変換後パケットをスイッチに返信する。スイッチは、アプライアンスから受け取った変換後パケットをコントローラに転送する。コントローラは、変換後パケットに応答してショートカット管理情報を参照する。変換後パケットが所定の条件を満たす場合、コントローラは、変換後パケットの宛先及び所定の変換方式に基いて、新規エントリの設定を指示するエントリ設定データを作成し、エントリ設定データをスイッチに送信する。ここで、新規エントリは、上記所定のパケットと同じフローに属するパケットを、アプライアンスを経由することなく上記宛先に向けて転送することを指定する。スイッチは、コントローラから受け取ったエントリ設定データに従って、フローテーブルに新規エントリを追加する。
【００１３】
本発明の他の観点において、スイッチ及びアプライアンスが配置されたネットワークを制御するコントローラが提供される。スイッチは、フローテーブルを有する。フローテーブルの各エントリは、マッチ条件にマッチするパケットに対して行われるアクションを指定する。スイッチは、パケットを受け取るとフローテーブルを参照し、受け取ったパケットにマッチするエントリで指定されるアクションを、受け取ったパケットに対して行う。スイッチは、コントローラから受け取るエントリ設定データに従って、フローテーブルのエントリを設定する。アプライアンスは、パケットのヘッダ情報を所定の変換方式に従って変換するパケットヘッダ変換を行う。ショートカット設定処理において、スイッチは、所定のパケットをアプライアンスに転送する。アプライアンスは、所定のパケットに対してパケットヘッダ変換を行うことにより変換後パケットを作成し、変換後パケットをスイッチに返信する。スイッチは、アプライアンスから受け取った変換後パケットをコントローラに転送する。
【００１４】
本発明に係るコントローラは、上記所定の変換方式及び所定の条件を示すショートカット管理情報が格納された記憶装置と、ショートカット設定処理においてスイッチ設定処理を行う処理装置と、を備える。そのスイッチ設定処理において、処理装置は、上記変換後パケットに応答してショートカット管理情報を参照する。変換後パケットが所定の条件を満たす場合、処理装置は、変換後パケットの宛先及び所定の変換方式に基いて、新規エントリの設定を指示するエントリ設定データを作成し、エントリ設定データをスイッチに送信する。その新規エントリは、上記所定のパケットと同じフローに属するパケットを、アプライアンスを経由することなく上記宛先に向けて転送することを指定する。
【００１５】
本発明の更に他の観点において、スイッチ及びアプライアンスが配置されたネットワークの「制御方法」が提供される。スイッチは、フローテーブルを有する。フローテーブルの各エントリは、マッチ条件にマッチするパケットに対して行われるアクションを指定する。スイッチは、パケットを受け取るとフローテーブルを参照し、受け取ったパケットにマッチするエントリで指定されるアクションを、受け取ったパケットに対して行う。アプライアンスは、パケットのヘッダ情報を所定の変換方式に従って変換するパケットヘッダ変換を行う。
【００１６】
本発明に係る上記「制御方法」は、（Ａ）スイッチからアプライアンスに所定のパケットを転送することと、（Ｂ）アプライアンスにおいて、所定のパケットに対してパケットヘッダ変換を行うことにより変換後パケットを作成し、変換後パケットをスイッチに返信することと、（Ｃ）スイッチから変換後パケットを取得することと、（Ｄ）変換後パケットに応答して、所定の変換方式及び所定の条件を示すショートカット管理情報を記憶装置から読み出すことと、（Ｅ）変換後パケットが所定の条件を満たす場合、変換後パケットの宛先及び所定の変換方式に基いて、新規エントリの設定を指示するエントリ設定データを作成することと、ここで、新規エントリは、上記所定のパケットと同じフローに属するパケットを、アプライアンスを経由することなく上記宛先に向けて転送することを指定し、（Ｆ）エントリ設定データをスイッチに送信することと、（Ｇ）スイッチにおいて、エントリ設定データに従って、フローテーブルに新規エントリを追加することと、を含む。
【００１７】
本発明の更に他の観点において、スイッチ及びアプライアンスが配置されたネットワークの「制御処理」をコンピュータに実行させる制御プログラムが提供される。スイッチは、フローテーブルを有する。フローテーブルの各エントリは、マッチ条件にマッチするパケットに対して行われるアクションを指定する。スイッチは、パケットを受け取るとフローテーブルを参照し、受け取ったパケットにマッチするエントリで指定されるアクションを、受け取ったパケットに対して行う。スイッチは、コントローラから受け取るエントリ設定データに従って、フローテーブルのエントリを設定する。アプライアンスは、パケットのヘッダ情報を所定の変換方式に従って変換するパケットヘッダ変換を行う。ショートカット設定処理において、スイッチは、所定のパケットをアプライアンスに転送する。アプライアンスは、所定のパケットに対してパケットヘッダ変換を行うことにより変換後パケットを作成し、変換後パケットをスイッチに返信する。スイッチは、アプライアンスから受け取った変換後パケットをコンピュータに転送する。
【００１８】
本発明に係る上記「制御処理」は、（ａ）変換後パケットに応答して、所定の変換方式及び所定の条件を示すショートカット管理情報を記憶装置から読み出すことと、（ｂ）変換後パケットが所定の条件を満たす場合、変換後パケットの宛先及び所定の変換方式に基いて、新規エントリの設定を指示するエントリ設定データを作成することと、ここで、新規エントリは、上記所定のパケットと同じフローに属するパケットを、アプライアンスを経由することなく上記宛先に向けて転送することを指定し、（ｃ）エントリ設定データをスイッチに送信することと、を含む。
【００１９】
本発明によれば、アプライアンスを改造することなく、当該アプライアンスを経由するトラフィックに関するショートカットを実現することが可能となる。
【図面の簡単な説明】
【００２０】
上記及び他の目的、長所、特徴は、次の図面と共に説明される本発明の実施の形態により明らかになるであろう。【００２１】
【図１】図１は、本発明の実施の形態に係るネットワークシステムの構成を概略的に示すブロック図である。
【図２】図２は、本実施の形態に係るスイッチの構成を示すブロック図である。
【図３】図３は、本実施の形態におけるフローテーブルを示す概念図である。
【図４】図４は、本実施の形態に係るコントローラの構成を示すブロック図である。
【図５】図５は、本実施の形態におけるショートカット管理情報を示す概念図である。
【図６】図６は、本実施の形態に係る初期設定処理を示すフローチャートである。
【図７】図７は、本実施の形態に係るスイッチによる処理（ステップＳ１００）を示すフローチャートである。
【図８】図８は、本実施の形態に係るアプライアンスによる処理（ステップＳ２００）を示すフローチャートである。
【図９】図９は、本実施の形態に係るコントローラによるスイッチ設定処理（ステップＳ３００）を示すフローチャートである。
【図１０】図１０は、本実施の形態の第１の例におけるネットワーク構成を示している。
【図１１】図１１は、第１の例におけるフローテーブルの初期状態を示している。
【図１２】図１２は、第１の例におけるフローテーブルの状態を示している。
【図１３】図１３は、本実施の形態の第２の例におけるネットワーク構成を示している。
【図１４】図１４は、第２の例におけるフローテーブルの初期状態を示している。
【図１５】図１５は、第２の例におけるフローテーブルの状態を示している。
【図１６】図１６は、本実施の形態の第３の例におけるネットワーク構成を示している。
【図１７】図１７は、本実施の形態の変形例を示すフローチャートである。
【発明を実施するための形態】
【００２２】
添付図面を参照して、本発明の実施の形態を説明する。
【００２３】
１．構成
図１は、本実施の形態に係るネットワークシステム１の構成を概略的に示している。本実施の形態に係るネットワークシステム１は、例えば、データセンターに適用される。
【００２４】
ネットワークシステム１は、サーバ１０、スイッチ１００、アプライアンス２００、及びコントローラ３００を備えている。スイッチ１００及びアプライアンス２００は、スイッチ−アプライアンスネットワークを構成している。サーバ１０は、そのスイッチ−アプライアンスに接続されている。スイッチ−アプライアンスネットワークは更に、ネットワークシステム１の外部の外部ネットワークに接続されている。
【００２５】
１−１．スイッチ１００
スイッチ１００は、パケット転送等のスイッチ処理を行う。より詳細には、図２に示されるように、スイッチ１００は、スイッチ処理部１１０、コントローラ通信部１２０、記憶部１３０、及び複数のポート１５０を備えている。外部からパケットが入力されるポート１５０は入力ポートであり、パケットが外部に出力されるポート１５０は出力ポートである。スイッチ処理部１１０は、入力ポートから出力ポートへのパケット転送等、主要なパケット処理を行う。コントローラ通信部１２０は、制御回線を介してコントローラ３００に接続されており、コントローラ３００との間で通信を行う際のインタフェースとなる。
【００２６】
記憶ブロック１３０には、図３に示されるようなフローテーブルＴＢＬが格納されている。フローテーブルＴＢＬの各エントリＥＮＴは、「マッチ条件（フロー識別情報）」と「アクション」を示している。「マッチ条件」は、パケットの入力ポート、送信元ＭＡＣアドレス、宛先ＭＡＣアドレス、ＶＬＡＮ  ＩＤ、送信元ＩＰアドレス、宛先ＩＰアドレス、送信元ポート番号、宛先ポート番号などのパラメータの組み合わせで構成される。尚、フローもそれらパラメータの組み合わせで定義される。つまり、「マッチ条件」は、フローを規定するフロー識別情報でもある。「アクション」は、マッチ条件にマッチするパケットに対して行われる処理を指定する。「アクション」としては、指定ポートへのパケット出力、パケット廃棄等が挙げられる。
【００２７】
スイッチ処理部１１０は、入力ポートを通してパケットを受信すると、記憶ブロック１３０に格納されているフローテーブルＴＢＬを参照する。そして、スイッチ処理部１１０は、フローテーブルＴＢＬの中から、当該受信パケットにマッチするエントリＥＮＴを検索する。具体的には、スイッチ処理部１１０は、受信パケットのヘッダ情報を抽出し、受信パケットの入力ポート及びヘッダ情報を検索キーとして用いることにより、フローテーブルＴＢＬの検索を行う。その検索キーと一致するマッチ条件を示すエントリＥＮＴが、受信パケットにマッチするマッチエントリである。受信パケットがいずれかのエントリＥＮＴのマッチ条件にマッチした場合、すなわち、マッチエントリが見つかった場合、スイッチ処理部１１０は、そのマッチエントリで指定される「アクション」を受信パケットに対して行う。
【００２８】
１−２．アプライアンス２００
アプライアンス（ネットワークアプライアンス）２００は、ネットワークトラヒックに対して特定の処理を実行するネットワーク装置である。アプライアンス２００としては、ロードバランサやファイアウォールが例示される。本実施の形態において、アプライアンス２００は、パケットのヘッダ情報を所定の変換方式に従って変換する「パケットヘッダ変換」を行う。
【００２９】
アプライアンス２００の一例として、ＤＳＲ（Ｄｉｒｅｃｔ  Ｓｅｒｖｅｒ  Ｒｅｔｕｒｎ）構成を有するＬ４ロードバランサを考える。そのロードバランサは、あるフローの最初のパケットを受信した場合、複数のサーバの中から１つを選択する。そして、ロードバランサは、当該パケットのヘッダ中の送信先ＭＡＣアドレスを、“選択サーバのＭＡＣアドレス”に変換する。このような変換方式は、ＭＡＴ（ＭＡＣ  Ａｄｄｒｅｓｓ  Ｔｒａｎｓｌａｔｉｏｎ）型と呼ばれている。その後、同一フローに属するパケットを受信した場合、ロードバランサは、当該受信パケットに対して同様のパケットヘッダ変換を行い、変換後のパケットを選択したサーバに転送する。
【００３０】
所定の変換方式としては、上記ＭＡＴ型以外に、ＮＡＴ（Ｎｅｔｗｏｒｋ  Ａｄｄｒｅｓｓ  Ｔｒａｎｓｌａｔｉｏｎ）型やＮＡＰＴ（Ｎｅｔｗｏｒｋ  Ａｄｄｒｅｓｓ  Ｐｏｒｔ  Ｔｒａｎｓｌａｔｉｏｎ）型も考えられる。ＮＡＴ型の場合、アプライアンス２００は、パケットのヘッダ中の送信元ＩＰアドレスあるいは宛先ＩＰアドレスを、選択サーバのＩＰアドレスに変換する。ＮＡＰＴ型の場合、アプライアンス２００は、ＮＡＴ型の場合に加えてＬ４ポート番号をも変換する。
【００３１】
１−３．コントローラ３００
コントローラ３００は、ネットワークにおけるトラフィックを制御する。コントローラ３００は、ネットワーク中に配置されている各スイッチ１００及び各アプライアンス２００に対して、制御回線（図１中、破線で示されている）を介して接続されている。コントローラ３００は、制御回線を介してスイッチ１００やアプライアンス２００から情報を受け取り、また、制御回線を介してスイッチ１００やアプライアンス２００を制御する。
【００３２】
例えば、コントローラ３００は、制御回線を介して、各スイッチ１００のフローテーブルＴＢＬの内容を設定する機能を有する。具体的には、コントローラ３００は、エントリＥＮＴの設定（追加、変更、削除等）を指示する「エントリ設定データ」を作成し、そのエントリ設定データを対象スイッチ１００に送る。エントリ設定データを受け取ったスイッチ１００は、そのエントリ設定データに従って、自身のフローテーブルＴＢＬ内のエントリＥＮＴの設定（追加、変更、削除等）を行う。このように、コントローラ３００は、フローテーブルＴＢＬの内容の設定を通してスイッチ１００の動作を制御し、それにより、ネットワークトラフィックを適宜制御することができる。
【００３３】
このような処理を実現するためのコントローラ３００とスイッチ１００との間のインタフェース方式としては、例えば、Ｏｐｅｎｆｌｏｗ（ｈｔｔｐ：／／ｗｗｗ．ｏｐｅｎｆｌｏｗｓｗｉｔｃｈ．ｏｒｇ／を参照）が挙げられる。この場合、「Ｏｐｅｎｆｌｏｗ  Ｃｏｎｔｒｏｌｌｅｒ」がコントローラ３００となり、「Ｏｐｅｎｆｌｏｗ  Ｓｗｉｔｃｈ」が各スイッチ１００となる。
【００３４】
図４は、本実施の形態に係るコントローラ３００の構成を示すブロック図である。コントローラ３００は、処理装置３０１、記憶装置３０２、及び通信装置３０３を備えている。処理装置３０１は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）を含む。記憶装置３０２は、例えば、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）やＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）を含む。通信装置３０３は、例えば、外部との通信を行うネットワークカードを含む。
【００３５】
記憶装置３０２には、接続情報ＣＯＮ、ショートカット管理情報ＳＣＭ、エントリ設定データＳＥＴ等が格納される。エントリ設定データＳＥＴは、上述の通り、対象スイッチ１００に対してエントリＥＮＴの設定（追加、変更、削除等）を指示する情報である。
【００３６】
接続情報ＣＯＮは、ネットワークの接続関係を示す。つまり、接続情報ＣＯＮは、サーバ１０、スイッチ１００、アプライアンス２００といった構成要素間の接続関係（トポロジ）を示す。より詳細には、接続情報ＣＯＮは、各構成要素の各ポートがどの構成要素のどのポートに接続されているかを示す。各構成要素の識別情報としては、ＭＡＣアドレスやＩＰアドレスなどが挙げられる。
【００３７】
ショートカット管理情報ＳＣＭは、後述される「ショートカット設定処理」の際に用いられる。図５は、本実施の形態におけるショートカット管理情報ＳＣＭを概念的に示している。図５に示されるように、ショートカット管理情報ＳＣＭは、アプライアンス２００毎に次のような情報を有している：（１）該当アプライアンス２００の識別情報、典型的にはアプライアンス名；（２）該当アプライアンス２００が接続されているポート；（３）該当アプライアンス２００におけるパケットヘッダの変換方式；及び（４）ショートカット適用タイミング。パケットヘッダの変換方式としては、上述のＭＡＴ型、ＮＡＴ型、ＮＡＰＴ型が例示される。
【００３８】
ショートカット適用タイミングとは、該当アプライアンス２００を経由するトラフィックに対して「ショートカット」を適用するタイミング（所定の条件）である。言い換えれば、このショートカット適用タイミングで表される所定の条件が満たされたとき、該当アプライアンス２００を経由するトラフィックに関して「ショートカット」が実施される。
【００３９】
例として、上述のロードバランサを考える。ロードバランサは、あるフローの最初のパケットを受信したときに、複数のサーバの中から１つを選択する。そして、ロードバランサは、その選択サーバのアドレスに基づいてパケットヘッダ変換を行う。従って、ショートカット適用タイミングとしては、「あるフローの最初のパケットを受け取ったとき」に設定されると好適である。
【００４０】
他の例として、ステートフル動作を行うファイアウォールを考える。そのファイアウォールは、例えば、ＴＣＰの３ＷＡＹハンドシェイクが完了したフローのパケットのみを通過させる。この場合、ファイアウォールは、ＴＣＰのＳＹＮ−ＡＣＫ（ＳＹＮｃｈｒｏｎｉｚｅ−ＡＣＫｎｏｗｌｅｄｇｅｍｅｎｔ）パケットを受信した時に、当該フローの後続パケットの通過を許可すると判断する。従って、ショートカット適用タイミングとしては、「ＴＣＰのＳＹＮ−ＡＣＫパケットを受け取ったとき」に設定されると好適である。
【００４１】
処理装置３０１は、本実施の形態に係るネットワーク制御処理を行う。より詳細には、図４に示されるように、処理装置３０１は、スイッチ通信部３１０及び制御部３２０を備えている。これら機能ブロックは、処理装置３０１が制御プログラムＰＲＯＧを実行することにより実現される。制御プログラムＰＲＯＧは、コンピュータ（処理装置３０１）によって実行されるコンピュータプログラムであり、記憶装置３０２に格納される。制御プログラムＰＲＯＧは、コンピュータ読み取り可能な記録媒体に格納されていてもよい。
【００４２】
２．処理
２−１．初期設定処理
図６は、本実施の形態に係る初期設定処理を示すフローチャートである。初期設定処理においては、オペレータによって、アプライアンス２００がネットワークに新規に追加される。その新規のアプライアンス２００は、以下「対象アプライアンス２００」と参照される。
【００４３】
ステップＳ１：
オペレータは、対象アプライアンス２００を、ネットワーク中のいずれかのスイッチ１００に物理的に接続する。対象アプライアンス２００が接続されたスイッチ１００は、以下「対象スイッチ１００」と参照される。コントローラ３００は、例えば、ＩＥＥＥ８０２．１ＡＢで規定されているＬＬＤＰ（Ｌｉｎｋ  Ｌａｙｅｒ  Ｄｉｓｃｏｖｅｒｙ  Ｐｒｏｔｏｃｏｌ）を利用することによって、接続情報ＣＯＮを更新する。
【００４４】
ステップＳ２：
オペレータは、対象アプライアンス２００に関するショートカット管理情報ＳＣＭを作成し、そのショートカット管理情報ＳＣＭをコントローラ３００の記憶装置３０２に格納する。パケットヘッダ変換方式は、対象アプライアンス２００のものであり、上述のＭＡＴ型、ＮＡＴ型、ＮＡＰＴ型のいずれかである。ショートカット適用タイミングも、対象アプライアンス２００の種別に応じて設定される。
【００４５】
ステップＳ３：
オペレータは、対象スイッチ１００のフローテーブルＴＢＬに、「デフォルトエントリＥＮＴ−Ｄ」を設定する。本例では、第１デフォルトエントリＥＮＴ−Ｄ１と第２デフォルトエントリＥＮＴ−Ｄ２の２つが設定される。第１デフォルトエントリＥＮＴ−Ｄ１は、対象アプライアンス２００宛のパケットを対象アプライアンス２００へ転送することを指定する。第２デフォルトエントリＥＮＴ−Ｄ２は、対象アプライアンス２００から受け取るパケットをコントローラ３００へ転送することを指定する。
【００４６】
２−２．ショートカット設定処理
以下、本実施の形態に係る「ショートカット設定処理」を説明する。図７は、スイッチ１００による処理（ステップＳ１００）を示すフローチャートである。図８は、アプライアンス２００による処理（ステップＳ２００）を示すフローチャートである。図９は、コントローラ３００による処理（ステップＳ３００）を示すフローチャートである。
【００４７】
まず、対象スイッチ１００が、あるフローのパケットを受信する（ステップＳ１１０）。対象スイッチ１００のスイッチ処理部１１０は、フローテーブルの検索を行う（ステップＳ１２０）。
【００４８】
ここで、受信パケットは、対象アプライアンス２００宛の所定のパケットであるとする。この場合、受信パケットは、フローテーブルＴＢＬ中の第１デフォルトエントリＥＮＴ−Ｄ１にマッチする（ステップＳ１３０；Ｙｅｓ）。従って、スイッチ処理部１１０は、第１デフォルトエントリＥＮＴ−Ｄ１に従って、受信パケットを対象アプライアンス２００に転送する（ステップＳ１４０）。受信パケットが対象スイッチ１００から対象アプライアンス２００へ送られると、処理は、対象アプライアンス２００によるステップＳ２００に移行する。
【００４９】
対象アプライアンス２００は、対象スイッチ１００からパケットを受信する（ステップＳ２１０）。受信パケットに応答して、対象アプライアンス２００は、アプライアンスとしての処理を実行する。このとき、対象アプライアンス２００は、受信パケットに対して、所定の変換方式に従ってパケットヘッダ変換を行う（ステップＳ２２０）。パケットヘッダ変換の結果作成されるパケットは、以下「変換後パケット」と参照される。つまり、対象アプライアンス２００は、受信パケットに対してパケットヘッダ変換を行うことにより、変換後パケットを作成する。対象アプライアンス２００は、作成した変換後パケットを対象スイッチ１００に返信する（ステップＳ２３０）。
【００５０】
対象スイッチ１００は、対象アプライアンス２００から変換後パケットを受信する（ステップＳ１１０）。対象スイッチ１００のスイッチ処理部１１０は、フローテーブルの検索を行う（ステップＳ１２０）。この場合、変換後パケットは、フローテーブルＴＢＬ中の第２デフォルトエントリＥＮＴ−Ｄ２にマッチする（ステップＳ１３０；Ｎｏ、ステップＳ１５０；Ｙｅｓ）。従って、スイッチ処理部１１０は、第２デフォルトエントリＥＮＴ−Ｄ２に従って、変換後パケットをコントローラ通信部１２０を通してコントローラ３００に転送する（ステップＳ１６０）。変換後パケットが対象スイッチ１００からコントローラ３００へ送られると、処理は、コントローラ３００によるステップＳ３００に移行する。
【００５１】
ステップＳ３００において、コントローラ３００は、「スイッチ設定処理」を行う。まず、処理装置３０１のスイッチ通信部３１０は、通信装置３０３を通して、対象スイッチ１００から変換後パケットを受信（取得）する（ステップＳ３１０）。スイッチ通信部３１０は、取得した変換後パケットを制御部３２０に渡す。制御部３２０は、変換後パケットのヘッダ情報に基づき、当該変換後パケットの送信元が対象アプライアンス２００であることを認識する（ステップＳ３２０）。
【００５２】
次に、制御部３２０は、対象アプライアンス２００に関するショートカット管理情報ＳＣＭを記憶装置３２０から読み出す。そして、制御部３２０は、そのショートカット管理情報ＳＣＭを参照することにより、今が「ショートカット適用タイミング」であるか否かを判定する（ステップＳ３３０）。言い換えれば、制御部３２０は、ショートカット管理情報ＳＣＭを参照することにより、今回の変換後パケットがショートカット適用タイミングで示される所定の条件を満たすか否かを判定する。例えば、上述のロードバランサの場合、ショートカット適用タイミングは「あるフローの最初のパケットを受け取ったとき」である。よって、今回受け取った変換後パケットが、当該パケットが属するフローの最初のパケットであれば、条件が満たされることになる。
【００５３】
今がショートカット適用タイミングでない場合（ステップＳ３４０；Ｎｏ）、制御部３２０は、パケットヘッダに従って、変換後パケットをその宛先に向けて送信する（ステップＳ３７０）。
【００５４】
一方、今がショートカット適用タイミングである場合（ステップＳ３４０；Ｙｅｓ）、ショートカットを実現するために必要な新規エントリを、対象スイッチ１００のフローテーブルＴＢＬに設定すればよい。そのために、制御部３２０は、ショートカットに必要な新規エントリの設定を指示するエントリ設定データＳＥＴを作成する（ステップＳ３５０）。このとき、制御部３２０は、接続情報ＣＯＮ及びショートカット管理情報ＳＣＭを記憶装置３０２から読み出し、参照する。また、制御部３２０は、変換後パケットのヘッダ情報を参照し、変換後パケットの宛先アドレスを取得する。そして、制御部３２０は、対象アプライアンス２００の変換方式を示すショートカット管理情報ＳＣＭ、変換後パケットの宛先アドレスを含むヘッダ情報、接続情報ＣＯＮといった情報に基いて、必要な新規エントリを設計する。
【００５５】
ショートカットに必要な新規エントリとは、「対象スイッチ１００が受け取った所定のパケットと同じフローに属するパケットを、対象アプライアンス２００を経由することなく、変換後パケットの宛先に向けて転送すること」を指定するエントリである。そのような新規エントリは、例えば、ヘッダ変換エントリＥＮＴ−ＨＣと転送エントリＥＮＴ−ＴＲとを含む。
【００５６】
ヘッダ変換エントリＥＮＴ−ＨＣは、「対象スイッチ１００が受け取った所定のパケットと同じフローに属するパケットのヘッダ情報を、対象アプライアンス２００によるパケットヘッダ変換と等価に書き換えること」を指定する。このようなヘッダ変換エントリＥＮＴ−ＨＣを設計するためには、変換後パケットのヘッダ情報、及びショートカット管理情報ＳＣＭで示される対象アプライアンス２００の変換方式を参照すればよい。
【００５７】
一方、転送エントリＥＮＴ−ＴＲは、「対象スイッチ１００が受け取った所定のパケットと同じフローに属するパケットを、変換後パケットの宛先につながる出力ポートに出力すること」を指定する。このような転送エントリＥＮＴ−ＴＲを設計するためには、変換後パケットのヘッダ情報、及び接続情報ＣＯＮを参照すればよい。
【００５８】
更に、これら新規エントリＥＮＴ−ＨＣ及びＥＮＴ−ＴＲの各々の優先度は、上述のデフォルトエントリＥＮＴ−Ｄ１、ＥＮＴ−Ｄ２の優先度よりも高く設計される。
【００５９】
制御部３２０は、作成したエントリ設定データＳＥＴを対象スイッチ１００に送信するよう、スイッチ通信部３１０に指示する。スイッチ通信部３１０は、通信装置３０３を通して、エントリ設定データＳＥＴを対象スイッチ１００に送信する（ステップＳ３６０）。
【００６０】
ステップＳ４００において、対象スイッチ１００は、コントローラ３００からエントリ設定データＳＥＴを受け取る。そのエントリ設定データＳＥＴに従って、対象スイッチ１００のスイッチ処理部１１０は、フローテーブルＴＢＬに新規エントリＥＮＴ−ＨＣ及びＥＮＴ−ＴＲを追加する。これら新規エントリＥＮＴ−ＨＣ及びＥＮＴ−ＴＲ各々の優先度は、上述のデフォルトエントリＥＮＴ−Ｄ１、ＥＮＴ−Ｄ２の優先度よりも高い。
【００６１】
それ以降、対象スイッチ１００が同一フローに属するパケットを受け取った場合（ステップＳ１１０、Ｓ１２０）、受信パケットは、フローテーブルＴＢＬ中の新規エントリＥＮＴ−ＨＣ及びＥＮＴ−ＴＲにマッチする（ステップＳ１３０；Ｎｏ、ステップＳ１５０；Ｎｏ、ステップＳ１７０；Ｙｅｓ)。この場合、スイッチ処理部１１０は、新規エントリＥＮＴ−ＨＣ及びＥＮＴ−ＴＲに従って、受信パケットのヘッダ情報を書き換え、指定された出力ポートに出力する（ステップＳ１８０）。これにより、当該フローのパケットは、対象アプライアンス２００を経由することなく、対象スイッチ１００から宛先サーバに直接転送されることになる。すなわち、当該フローに関して「ショートカット」が実現される。
【００６２】
尚、図７で示された処理フローでは、受信パケットがフローテーブルＴＢＬ中のいずれのエントリＥＮＴにもマッチしない場合（ステップＳ１７０；Ｎｏ）、スイッチ処理部１１０は、受信パケットを廃棄する（ステップＳ１９０）。但し、これに限られない。
【００６３】
３．具体例
３−１．第１の例
図１０は、第１の例におけるネットワーク構成を示している。対象アプライアンス２００は、ＤＳＲ構成で組まれたネットワークにおけるロードバランサ２００Ａである。このロードバランサ２００Ａによるパケット変換方式は、ＭＡＴ型である。初期設定処理において、このロードバランサ２００Ａが、スイッチ１００の“ポート４”に物理的に接続される。ロードバランサ２００Ａに関するショートカット管理情報ＳＣＭは、次の通りである。
【００６４】
・アプライアンス名：ロードバランサ２００Ａ
・接続ポート：スイッチ１００のポート４
・パケットヘッダ変換方式：ＭＡＴ
・ショートカット適用タイミング：最初のパケット到着時
【００６５】
図１０に示されるように、スイッチ１００のポート０には、コントローラ３００が接続されている。スイッチ１００のポート１、ポート２、及びポート３には、それぞれ、クライアント２０−０（ＭＡＣアドレス＝ＭＡＣ０，ＩＰアドレス＝ＩＰ０）、クライアント２０−１（ＭＡＣアドレス＝ＭＡＣ１，ＩＰアドレス＝ＩＰ１）、及びクライアント２０−２（ＭＡＣアドレス＝ＭＡＣ２，ＩＰアドレス＝ＩＰ２）が接続されている。スイッチ１００のポート４には、ロードバランサ２００Ａ（ＭＡＣアドレス＝ＶＭＡＣ，ＩＰアドレス＝ＶＩＰ）が接続されている。スイッチ１００のポート５、ポート６、及びポート７には、それぞれ、サーバ１０−ａ（ＭＡＣアドレス＝ＭＡＣａ，ＩＰアドレス＝ＩＰａ，ループバックアドレス＝ＶＩＰ）、サーバ１０−ｂ（ＭＡＣアドレス＝ＭＡＣｂ，ＩＰアドレス＝ＩＰｂ，ループバックアドレス＝ＶＩＰ）、及びサーバ１０−ｃ（ＭＡＣアドレス＝ＭＡＣｃ，ＩＰアドレス＝ＩＰｃ，ループバックアドレス＝ＶＩＰ）が接続されている。尚、サーバ１０のループバックアドレス＝ＶＩＰは、ＤＳＲ構成で組まれたネットワークにおけるロードバランサ２００Ａならではの設定であり、ＶＩＰ宛のパケットを受信するための設定である。
【００６６】
このようなネットワーク構成の場合、スイッチ１００のフローテーブルＴＢＬに設定される第１デフォルトエントリＥＮＴ−Ｄ１及び第２デフォルトエントリＥＮＴ−Ｄ２は、図１１のようになる。第１デフォルトエントリＥＮＴ−Ｄ１は、ロードバランサ２００Ａ（宛先ＩＰアドレス＝ＶＩＰ）宛のパケットを、そのロードバランサ２００Ａへ転送すること（出力ポート＝ポート４）を指定している。第２デフォルトエントリＥＮＴ−Ｄ２は、ロードバランサ２００Ａ（入力ポート＝ポート４）から受け取るパケットを、コントローラ３００へ転送することを指定している。
【００６７】
クライアント２０−１が、次のようなヘッダ情報を有するＴＣＰパケットをロードバランサ２００Ａに向けて送信する場合を考える。
【００６８】
・宛先ＭＡＣアドレス＝ＶＭＡＣ
・送信元ＭＡＣアドレス＝ＭＡＣ１
・宛先ＩＰアドレス＝ＶＩＰ
・送信元ＩＰアドレス＝ＩＰ１
・宛先ＴＣＰポート番号＝８０
・送信元ＴＣＰポート番号＝ｐ０
【００６９】
スイッチ１００は、当該フローの最初のパケットを、クライアント２０−１につながるポート２から受信する。この受信パケットは、図１１で示された第１デフォルトエントリＥＮＴ−Ｄ１にマッチする（ステップＳ１３０；Ｙｅｓ）。従って、スイッチ１００は、第１デフォルトエントリＥＮＴ−Ｄ１に従って、受信パケットをポート４から出力する（ステップＳ１４０）。ポート４はロードバランサ２００Ａにつながっており、ロードバランサ２００Ａはこのパケットを受け取る。
【００７０】
ロードバランサ２００Ａは、アプライアンスとしての処理を実行する（ステップＳ２００）。ここでは、ロードバランサ２００Ａは、複数のサーバ１０の中からサーバ１０−ａ（ＭＡＣアドレス＝ＭＡＣａ）を振り分け先として選択したとする。ロードバランサ２００Ａは、所定の変換方式（ＭＡＴ）に従い、受信パケットの宛先ＭＡＣアドレスを“ＶＭＡＣ”から“ＭＡＣａ”に変換する。これにより得られる変換後パケットのヘッダ情報は、次の通りである。
【００７１】
・宛先ＭＡＣアドレス＝ＭＡＣａ
・送信元ＭＡＣアドレス＝ＭＡＣ１
・宛先ＩＰアドレス＝ＶＩＰ
・送信元ＩＰアドレス＝ＩＰ１
・宛先ＴＣＰポート番号＝８０
・送信元ＴＣＰポート番号＝ｐ０
【００７２】
ロードバランサ２００Ａは、変換後パケットをスイッチ１００に返信する。スイッチ１００は、変換後パケットを、ロードバランサ２００Ａにつながるポート４から受信する。従って、この変換後パケットは、図１１で示された第２デフォルトエントリＥＮＴ−Ｄ２にマッチする（ステップＳ１５０；Ｙｅｓ）。この場合、スイッチ１００は、第２デフォルトエントリＥＮＴ−Ｄ２に従って、変換後パケットをコントローラ３００に転送する（ステップＳ１６０）。
【００７３】
コントローラ３００は、変換後パケットを受け取ると、当該変換後パケットの送信元がロードバランサ２００Ａであることを認識する（ステップＳ３２０）。例えば、コントローラ３００は、パケットヘッダから、「この変換後パケットが入力されたスイッチ１００の入力ポートがポート４であった」という情報を取得する。この情報とショートカット管理情報ＳＣＭとを照らし合わせることにより、コントローラ３００は、変換後パケットの送信元としてのロードバランサ２００Ａを認識する。
【００７４】
続いて、コントローラ３００は、ロードバランサ２００Ａに関するショートカット管理情報ＳＣＭを参照して、「今がショートカット適用タイミングである」と判定し、必要なエントリ設定データＳＥＴを作成する（ステップＳ３５０）。具体的には、コントローラ３００は、ロードバランサ２００Ａに関するショートカット管理情報ＳＣＭ、変換後パケットのヘッダ情報、及び接続情報ＣＯＮに基づいて、図１２に示されるようなヘッダ変換エントリＥＮＴ−ＨＣ及び転送エントリＥＮＴ−ＴＲを設計する。
【００７５】
ヘッダ変換エントリＥＮＴ−ＨＣ及び転送エントリＥＮＴ−ＴＲの「マッチ条件」は、変換後パケットのヘッダ情報やロードバランサ２００Ａのアドレス（ＶＭＡＣ，ＩＰ１）に基いて設計することができる。尚、送信元ＭＡＣアドレスＭＡＣ１は、ＩＰアドレスＩＰ１に対するＡＲＰ要求から得ることができる。あるいは、送信元ＭＡＣアドレスＭＡＣ１は、「Ａｎｙ（＊）」に設定されてもよい。また、「入力ポート（ＩＮ  ＰＯＲＴ）：２」は、送信元アドレス（ＭＡＣ１，ＩＰ１）につながるスイッチ１００のポートであり、接続情報ＣＯＮを参照することにより得られる。
【００７６】
ヘッダ変換エントリＥＮＴ−ＨＣの「アクション」は、「宛先ＭＡＣアドレスをＭＡＣａに変換すること」である。これは、ショートカット管理情報ＳＣＭで示されるパケットヘッダ変換方式（＝ＭＡＴ型）、及び変換後パケットの宛先ＭＡＣアドレス（＝ＭＡＣａ）に基いて設計することができる。
【００７７】
転送エントリＥＮＴ−ＴＲの「アクション」は、「パケットを出力ポート５に出力すること」である。この出力ポート５」は、変換後パケットの宛先ＭＡＣアドレス（＝ＭＡＣａ）につながるスイッチ１００のポートであり、接続情報ＣＯＮを参照することにより得られる。
【００７８】
更に、これら新規エントリＥＮＴ−ＨＣ及びＥＮＴ−ＴＲの各々の優先度（Ｐｒｉｏｒｉｔｙ）は、デフォルトエントリＥＮＴ−Ｄ１、ＥＮＴ−Ｄ２の優先度よりも高く設計されている。
【００７９】
コントローラ３００は、設計した新規エントリＥＮＴ−ＨＣ、ＥＮＴ−ＴＲの設定を指示するエントリ設定データＥＮＴを、スイッチ１００に送信する（ステップＳ３６０）。スイッチ１００は、図１２に示されるように、フローテーブルＴＢＬに新規エントリＥＮＴ−ＨＣ及びＥＮＴ−ＴＲを追加する（ステップＳ４００）。
【００８０】
それ以降、クライアント２０−１からロードバランサ２００Ａに向けて送信された当該フローのパケットは、ロードバランサ２００Ａを経由することなく、スイッチ１００から宛先サーバ１０−ａに直接転送されることになる。すなわち、ロードバランサ２００Ａを経由するトラフィックに関してショートカットが実現される。
【００８１】
尚、ＤＳＲ構成の場合、サーバ１０−ａからクライアント２０−１へのトラフィックはロードバランサ２００Ａを経由しないため、既存のルーティング方式でサーバ１０−ａからクライアント２０−１へパケットが転送される。
【００８２】
３−２．第２の例
図１３は、第２の例におけるネットワーク構成を示している。上記第１の例の場合と重複する説明は、適宜省略される。
【００８３】
第２の例では、対象アプライアンス２００は、パケット変換方式がＮＡＴ型であるロードバランサ２００Ｂである。ＮＡＴ構成の場合、ロードバランサ２００Ｂは２つ以上のネットワークインタフェースを持つことが多い。図１３に示される例では、２つのネットワークインタフェースのそれぞれに、（ＭＡＣアドレス＝ＶＭＡＣ，ＩＰアドレス＝ＶＩＰ）及び（ＭＡＣアドレス＝ＶＭＡＣ２，ＩＰアドレス＝ＶＩＰ２）が割り当てられている。それら２つのネットワークインタフェースは、それぞれ、スイッチ１００のポート４及びポート８に接続される。このロードバランサ２００Ｂに関するショートカット管理情報ＳＣＭは、次の通りである。
【００８４】
アプライアンス名：ロードバランサ２００Ｂ
接続ポート：スイッチ１００のポート４（クライアント側）
接続ポート：スイッチ１００のポート８（サーバ側）
パケットヘッダ変換方式：ＮＡＴ（ＤＮＡＴ）
ショートカット適用タイミング：最初のパケット到着時
【００８５】
図１４は、スイッチ１００のフローテーブルＴＢＬに設定される第１デフォルトエントリＥＮＴ−Ｄ１及び第２デフォルトエントリＥＮＴ−Ｄ２を示している。第１デフォルトエントリＥＮＴ−Ｄ１は、ロードバランサ２００Ｂ（宛先ＩＰアドレス＝ＶＩＰ）宛のパケットを、そのロードバランサ２００Ｂへ転送すること（出力ポート＝ポート４）を指定している。第２デフォルトエントリＥＮＴ−Ｄ２は、ロードバランサ２００Ｂ（入力ポート＝ポート８）から受け取るパケットを、コントローラ３００へ転送することを指定している。
【００８６】
第１の例と同様に、クライアント２０−１がロードバランサ２００Ｂに向けてＴＣＰパケットを送信する場合を考える。また、ロードバランサ２００Ｂは、複数のサーバ１０の中からサーバ１０−ａ（ＭＡＣアドレス＝ＭＡＣａ、ＩＰアドレス＝ＩＰａ）を振り分け先として選択したとする。ロードバランサ２００Ｂは、所定の変換方式（ＮＡＴ）に従い、受信パケットの宛先ＭＡＣアドレス、送信元ＭＡＣアドレス、宛先ＩＰアドレス及び宛先ポート番号を変換する。
【００８７】
図１５は、本例において追加される新規エントリを示している。ヘッダ変換エントリＥＮＴ−ＨＣ１及び転送エントリＥＮＴ−ＴＲ１は、クライアント２０−１から受け取ったパケットを、ロードバランサ２００Ｂを経由することなく宛先サーバ１０−ａに転送するための新規エントリである。また、ＮＡＴ構成の場合、サーバ１０−ａからの帰りのトラフィックもロードバランサ２００Ｂを経由する。その帰りのトラフィックに関しても「ショートカット」が可能である。具体的には、ヘッダ変換エントリＥＮＴ−ＨＣ２及び転送エントリＥＮＴ−ＴＲ２が、サーバ１０−ａから受け取ったパケットを、ロードバランサ２００Ｂを経由することなくクライアント２０−１に転送するための新規エントリである。各新規エントリの設計方法は、第１の例の場合と同様であり、その説明は省略される。
【００８８】
３−３．第３の例
図１６は、第３の例におけるネットワーク構成を示している。第３の例では、対象アプライアンス２００は、ステートフル動作を行うファイアウォール２００Ｃである。このファイアウォール２００Ｃによるパケット変換方式は、ＮＡＴ型である。初期設定処理において、このファイアウォール２００Ｃが、スイッチ１００の“ポート４”に物理的に接続される。ファイアウォール２００Ｃに関するショートカット管理情報ＳＣＭは、次の通りである。
【００８９】
・アプライアンス名：ファイアウォール２００Ｃ
・接続ポート：スイッチ１００のポート４
・パケットヘッダ変換方式：ＮＡＴ
・ショートカット適用タイミング：ＳＹＮ−ＡＣＫパケット受信後
【００９０】
本例では、ショートカット適用タイミングが、ＳＹＮ−ＡＣＫパケット受信後である。従って、コントローラ３００は、ＳＹＮ−ＡＣＫパケットを受け取った後に、必要なエントリ設定データＳＥＴを作成し、そのエントリ設定データＳＥＴをスイッチ１００に送信する。その他は、既出の例と同様である。
【００９１】
尚、コントローラ３００は、ＳＹＮ−ＡＣＫパケットを受信するまで全てのパケットを受信してもよい。あるいは、デフォルトエントリＥＮＴ−Ｄの登録時に、ファイアウォール２００Ｃからサーバ１０への転送をエントリとして登録しておき、ＳＹＮ−ＡＣＫパケットのみをコントローラ３００に送信することも可能である。
【００９２】
その他、対象アプライアンス２００としては、ステートレス処理を行うファイアウォール、ＩＰＳ（Ｉｎｔｒｕｓｉｏｎ  Ｐｒｅｖｅｎｔｉｏｎ  Ｓｙｓｔｅｍ）、ＩＤＳ（Ｉｎｔｒｕｓｉｏｎ  Ｄｅｔｅｃｔｉｏｎ  Ｓｙｓｔｅｍ）等も可能である。
【００９３】
４．変形例
本実施の形態の変形例では、初期設定時のステップＳ３において、第２デフォルトエントリＥＮＴ−Ｄ２は、対象スイッチ１００のフローテーブルＴＢＬに設定されない。
【００９４】
図１７は、本変形例におけるスイッチ１００による処理（ステップＳ１００）を示すフローチャートである。既出の図７の場合と比較して、ステップＳ１５０が省略されている。その代わり、受け取ったパケットがフローテーブルＴＢＬ中のいずれのエントリＥＮＴにもマッチしない場合（ステップＳ１７０；Ｎｏ）、スイッチ処理部１１０は、当該パケットをコントローラ３００に転送する（ステップＳ１６０）。
【００９５】
上記ショートカット設定処理において、対象スイッチ１００が、対象アプライアンス２００から変換後パケットを受信した時を考える。本変形例では、フローテーブルＴＢＬは、第２デフォルトエントリＥＮＴ−Ｄ２を有していない。従って、対象アプライアンス２００から受け取った変換後パケットにマッチするエントリはフローテーブルＴＢＬに無い（ステップＳ１７０；Ｎｏ）。従って、スイッチ処理部１１０は、変換後パケットをコントローラ３００に転送する（ステップＳ１６０）。その後、ステップＳ３００が同様に実施される。
【００９６】
５．効果
以上に説明されたように、本実施の形態によれば、アプライアンス２００が行うパケットヘッダ変換をフローテーブルＴＢＬ中のエントリとして設定することができる。それにより、アプライアンス２００の処理をスイッチ１００に肩代わりさせることができる。言い換えれば、あるアプライアンス２００を経由しているトラフィックを、あるタイミングから、当該アプライアンス２００を経由しないように制御することができる。このようなショートカットにより、アプライアンス２００にかかる処理負荷が軽減される。また、アプライアンス２００に要求される性能も抑えることができ、これはコスト削減につながる。
【００９７】
更に、本実施の形態によれば、ショートカットを実現するためにアプライアンス２００を改造する必要はない。アプライアンス２００を改造することなく、当該アプライアンス２００を経由するトラフィックに関するショートカットを実現することが可能である。既存のアプライアンス機器を利用することができるため、開発コストが削減される。
【００９８】
以上、本発明の実施の形態が添付の図面を参照することにより説明された。但し、本発明は、上述の実施の形態に限定されず、要旨を逸脱しない範囲で当業者により適宜変更され得る。
【００９９】
本出願は、２０１０年１月５日に出願された日本国特許出願２０１０−０００４５９を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【図１】
0005645139.tif 000002
【図２】
0005645139.tif 000003
【図３】
0005645139.tif 000004
【図４】
0005645139.tif 000005
【図５】
0005645139.tif 000006
【図６】
0005645139.tif 000007
【図７】
0005645139.tif 000008
【図８】
0005645139.tif 000009
【図９】
0005645139.tif 000010
【図１０】
0005645139.tif 000011
【図１１】
0005645139.tif 000012
【図１２】
0005645139.tif 000013
【図１３】
0005645139.tif 000014
【図１４】
0005645139.tif 000015
【図１５】
0005645139.tif 000016
【図１６】
0005645139.tif 000017
【図１７】
0005645139.tif 000018