(57)【特許請求の範囲】
【請求項１】
ロードバランサと、一ないし複数のスイッチと、複数の仮想マシンと、を含むパケット転送システムであって、
前記ロードバランサは、入力されたパケットに対し、前記スイッチごとに割り当てられた一ないし複数の識別情報の一つを付与し、付与した識別情報に対応する前記スイッチへ当該パケットを転送し、
前記スイッチは、それぞれが複数の前記識別情報に対応する前記複数の仮想マシンのうち、転送されたパケットに付与された前記識別情報に対応する前記仮想マシンを当該パケットの転送先として判定し、
前記仮想マシンは、転送されたパケットに対してネットワーク機能に関する処理を実行する、
ことを特徴とするパケット転送システム。
【請求項２】
前記ロードバランサは、前記識別情報を、前記パケットのレイヤ２のヘッダ情報に関連付ける、
ことを特徴とする請求項１に記載のパケット転送システム。
【請求項３】
更に、前記仮想マシンと前記識別情報との対応関係を管理し、前記仮想マシンの増減に応じて、前記対応関係を変更するオーケストレータを含み、
前記オーケストレータは、第１の仮想マシンを減らす場合、前記第1の仮想マシンに対応する複数の前記識別情報を、前記第1の仮想マシン以外の一ないし複数の仮想マシンに対応させ、
前記スイッチは、前記オーケストレータによって変更された前記対応関係に基づいて、パケットの転送先の仮想マシンを切り替える、
ことを特徴とする請求項１又は２に記載のパケット転送システム。
【請求項４】
前記仮想マシンは、前記仮想マシンの増減に応じ、前記識別情報の単位で、セッションの管理の引継ぎを行う、
ことを特徴とする請求項１乃至３いずれか一項記載のパケット転送システム。
【請求項５】
ロードバランサと、一ないし複数のスイッチと、複数の仮想マシンと、が実行するパケット転送方法であって、
前記ロードバランサが、入力されたパケットに対し、前記スイッチごとに割り当てられた一ないし複数の識別情報の一つを付与し、付与した識別情報に対応する前記スイッチへ当該パケットを転送し、
前記スイッチが、それぞれが複数の前記識別情報に対応する前記複数の仮想マシンのうち、転送されたパケットに付与された前記識別情報に対応する前記仮想マシンを当該パケットの転送先として判定し、
前記仮想マシンが、転送されたパケットに対してネットワーク機能に関する処理を実行する、
ことを特徴とするパケット転送方法。
【請求項６】
前記ロードバランサが、前記識別情報を、前記パケットのレイヤ２のヘッダ情報に関連付ける、
ことを特徴とする請求項５に記載のパケット転送方法。
【請求項７】
前記仮想マシンと前記識別情報との対応関係を管理するオーケストレータが、前記仮想マシンの増減に応じて、前記対応関係を変更し、
前記オーケストレータは、第１の仮想マシンを減らす場合、前記第1の仮想マシンに対応する複数の前記識別情報を、前記第1の仮想マシン以外の一ないし複数の仮想マシンに対応させ、
前記スイッチが、前記オーケストレータから通知された対応関係に基づいて、パケットの転送先の仮想マシンを切り替える、
ことを特徴とする請求項５又は６に記載のパケット転送方法。
【請求項８】
前記仮想マシンが、前記仮想マシンの増減に応じ、前記識別情報の単位で、セッションの管理の引継ぎを行う、
ことを特徴とする請求項５乃至７いずれか一項記載のパケット転送方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パケット転送システム及びパケット転送方法に関する。
【背景技術】
【０００２】
ネットワーク機能の仮想化（ＮＦＶ（Network Functions Virtualization））が急激に広がっている。ＮＦＶによれば、データセンタ等からの要求に応じて、仮想ネットワーク機能の起動又は停止等が行われる。
【０００３】
データプレーンにおける仮想ネットワーク機能は、サービス提供者とサービス利用者との間に位置するため、従来、ミドルボックスとして知られている。ミドルボックスは、ファイアウォール、ＮＡＴ（Network Address Translation）、ＩＤＳ（Intrusion Detection System）／ＩＰＳ（Intrusion Prevention System）などのネットワーク機能を提供する。ミドルボックスは、現在のパケットに対する処理のために、過去に通過したパケットの状態を保持するという観点において、ステートフル（stateful）型である。ミドルボックスは、データパスに位置するため、高いパケット処理能力（スループット）と、小さい転送遅延時間とが要求される。さらに、ＮＦＶ環境におけるミドルボックスは、必要なネットワークサービスに応じて、効率的にスケール（拡大、縮小）できることが要求される。
【０００４】
これらの要求に対する解決策として、今日では、同じ仮想化機能を有する複数のＶＭ（Virtual Machine）をクラスタ化して、その前段にロードバランサを配置する構成が考えられている。パケットがロードバランサに到着すると、ロードバランサは、複数のＶＭの中から、任意のＶＭを選択する。クラスタを構成するＶＭの数は、クラスタにおけるトラヒック量に基づいて増減するが、このクラスタの構成は、ロードバランサによって外部に対しては隠蔽される。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】Kasom Koht-arsa,et al,A Centralized State Repository Approach to Highly Scalable and High-Availability Parallel Firewall
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ロードバランサには、ステートフル型とステートレス型との二つのタイプがある。ステートフル型ロードバランサは、ＶＭのセッション状態を保持しており、同じセッションのパケットは、同じＶＭに転送される。ＶＭ数の変化に対応するため、ＶＭ間で定期的に、各セッションの状態を同期させるためのメッセージが交換されるが、ステートフル型ロードバランサによれば、この同期にかかるオーバーヘッドを小さくすることができる。すなわち、ステートフル型ロードバランサでは、スループットが高いというメリットがあるが、メモリ量がセッション数に比例して増加するため、性能面のボトルネックがあるという課題がある。
【０００７】
一方、ステートレス型ロードバランサは、各セッションの状態を保持しない。ステートレス型ロードバランサでは、メモリ量は、ＶＭ数に比例するため、ステートフル型ロードバランサに比べて小さいが、各セッションの状態の同期にかかるオーバーヘッドが、セッション数の合計とＶＭ数との積となる。したがって、ステートレス型ロードバランサには、ステートフル型に比べて性能面での課題がある。
【０００８】
本発明は、上記の点に鑑みてなされたものであって、ネットワーク機能を提供する仮想マシンの増減を効率化すること目的とする。
【課題を解決するための手段】
【０００９】
そこで上記課題を解決するため、パケット転送システムは、ロードバランサと、一ないし複数のスイッチと、複数の仮想マシンと、を含み、前記ロードバランサは、入力されたパケットに対し、前記スイッチごとに割り当てられた一ないし複数の識別情報の一つを付与し、付与した識別情報に対応する前記スイッチへ当該パケットを転送し、前記スイッチは、それぞれが複数の前記識別情報に対応する前記複数の仮想マシンのうち、転送されたパケットに付与された前記識別情報に対応する前記仮想マシンを当該パケットの転送先として判定し、前記仮想マシンは、転送されたパケットに対してネットワーク機能に関する処理を実行する。
【発明の効果】
【００１０】
ネットワーク機能を提供する仮想マシンの増減を効率化することができる。
【図面の簡単な説明】
【００１１】
【図１】本発明の実施の形態におけるパケット転送システムの構成例を示す図である。
【図２】本発明の実施の形態におけるパケット転送装置のハードウェア構成例を示す図である。
【図３】パケット処理の処理手順の一例を説明するための図である。
【図４】振り分け先テーブルの構成例を示す図である。
【図５】フローテーブルの構成例を示す図である。
【図６】１つのサービスＶＭのスケールイン時の処理手順の一例を説明するための図である。
【図７】セッショングループＩＤとサービスＶＭとの対応関係の変更例を示す図である。
【図８】フローテーブルの変更例を示す図である。
【発明を実施するための形態】
【００１２】
以下、図面に基づいて本発明の実施の形態を説明する。図１は、本発明の実施の形態におけるパケット転送システムの構成例を示す図である。図１において、パケット転送システム１は、パケットの転送を行うパケット転送装置１０と、パケット転送装置１０の各機能を制御する２つの論理機能部であるＳＤＮ（Software Defined Network）コントローラ１５及びオーケストレータ１６とを含む。
【００１３】
パケット転送装置１０は、ステートレス型ロードバランサ１１と、複数のソフトスイッチ１２と、複数のサービスＶＭ（Virtual Machine）１４−１〜３の集合であるサービスＶＭクラスタ１３とを有する。
【００１４】
ステートレス型ロードバランサ１１は、パケット転送装置１０に到着した（入力された）パケットをいずれかのソフトスイッチ１２へ転送（フォワード）する。パケットの転送に際し、ステートレス型ロードバランサ１１は、複数のセッションを、ソフトスイッチ１２単位で１つに束ねるセッショングループを識別するための情報を、パケットに付加する。セッションとは、サービスＶＭ１４によって提供されるサービスにおける一連のやり取りを管理するための単位である。
【００１５】
各ソフトスイッチ１２は、転送されたパケットに対して、セッショングループ毎にユニークな識別情報（以下、「セッショングループＩＤ」という。）を割り当て、セッショングループＩＤ単位で、特定のサービスＶＭ１４へパケットを転送する。すなわち、本実施の形態では、セッショングループＩＤとサービスＶＭ１４とが対応付けられる。なお、ソフトスイッチ１２は、例えば、Ｏｐｅｎ  ｖＳｗｉｔｃｈ等で実装されうる。また、セッショングループＩＤとサービスＶＭ１４との対応関係は、例えば、Ｆｌｏｏｄｌｉｇｈｔ等のＳＤＮコントローラ１５から指示される。
【００１６】
サービスＶＭ１４−１〜３（以下、それぞれを区別しない場合、「サービスＶＭ１４」という。）は、セッショングループＩＤと共に、セッションの状態を管理しつつ、ネットワーク機能を提供してパケットを処理する仮想マシンである。
【００１７】
オーケストレータ１６は、パケット転送システム１全体の管理を行う。例えば、オーケストレータ１６は、サービスＶＭ１４の数を増減させる決定を行って、サービスＶＭ１４の起動又は停止を指示する。オーケストレータ１６は、また、セッショングループＩＤとサービスＶＭ１４との対応関係を管理し、当該対応関係をソフトスイッチ１２に通知する。具体的には、サービスＶＭ１４のスケールイン又はスケールアウト時において、オーケストレータ１６は、まず、セッショングループＩＤとサービスＶＭ１４の対応関係を変更して、各サービスＶＭ１４にセッション状態のマイグレーションを指示する。その後、オーケストレータ１６は、各ソフトスイッチ１２に、新しい対応関係を通知する。当該対応関係の通知は、ＳＤＮコントローラ１５やスイッチ内のエージェントを経由して行われてもよい。セッショングループＩＤとサービスＶＭ１４との対応関係が変化すると、ソフトスイッチ１２は、パケットの転送先のサービスＶＭ１４を切り替える。
【００１８】
本実施の形態は、ステートレス型ロードバランサ１１が用いられるため、メモリ量を小さく抑えることができる（すなわち、スケーラビリティを確保することができる）。また、サービスＶＭ１４の増減時におけるセッション状態の同期にかかるオーバーヘッドは、増設又は減設されるサービスＶＭ１４に関係するセッションの数に関係するところ、当該セッションの数は、セッショングループの単位にまとめられる。したがって、当該オーバーヘッドを、小さく抑えることができ、性能面でのメリットを得ることもできる。
【００１９】
図２は、本発明の実施の形態におけるパケット転送装置のハードウェア構成例を示す図である。図２のパケット転送装置１０は、それぞれバスＢで相互に接続されているドライブ装置１００、補助記憶装置１０２、メモリ装置１０３、ＣＰＵ１０４、及びインタフェース装置１０５等を有する。
【００２０】
パケット転送装置１０での処理を実現するプログラムは、ＣＤ−ＲＯＭ等の記録媒体１０１によって提供される。プログラムを記憶した記録媒体１０１がドライブ装置１００にセットされると、プログラムが記録媒体１０１からドライブ装置１００を介して補助記憶装置１０２にインストールされる。但し、プログラムのインストールは必ずしも記録媒体１０１より行う必要はなく、ネットワークを介して他のコンピュータよりダウンロードするようにしてもよい。補助記憶装置１０２は、インストールされたプログラムを格納すると共に、必要なファイルやデータ等を格納する。
【００２１】
メモリ装置１０３は、プログラムの起動指示があった場合に、補助記憶装置１０２からプログラムを読み出して格納する。ＣＰＵ１０４は、メモリ装置１０３に格納されたプログラムに従ってパケット転送装置１０に係る機能を実行する。インタフェース装置１０５は、ネットワークに接続するためのインタフェースとして用いられる。
【００２２】
なお、ステートレス型ロードバランサ１１、ソフトスイッチ１２、及びサービスＶＭ１４は、パケット転送装置１０にインストールされた１以上のプログラムがＣＰＵ１０４に実行させる処理に基づいて実現される。
【００２３】
また、ＳＤＮコントローラ１５及びオーケストレータ１６は、パケット転送装置１０にネットワークを介して接続されるコンピュータにインストールされた１以上のプログラムが、当該コンピュータのＣＰＵの実行させる処理に基づいて実現される。ＳＤＮコントローラ１５及びオーケストレータ１６は、同じコンピュータにおいて実現されてもよいし、相互に異なるコンピュータにおいて実現されてもよい。
【００２４】
以下、パケット転送システム１において実行される処理手順について説明する。図３は、パケット処理の処理手順の一例を説明するための図である。
【００２５】
ステートレス型ロードバランサ１１は、受信されたパケット（以下、「受信パケット」という。）のＩＰヘッダ情報（例えば、５タプル（発着ＩＰアドレス、発着ポート番号、プロトコルタイプ）に基づいてハッシュ計算を行うことで、受信パケットの転送先のソフトスイッチ１２のＭＡＣアドレスを判定する（Ｓ１１）。これにより、同じセッションに係るパケットは、同一のソフトスイッチ１２に転送されることが保証される。転送先のソフトスイッチ１２の判定は、ステートレス型ロードバランサ１１が保持する振り分け先テーブルを参照して行われる。
【００２６】
図４は、振り分け先テーブルの構成例を示す図である。図４において、振り分け先テーブルは、宛先ＩＤに対応付けて宛先ＭＡＣアドレスを記憶する。宛先ＩＤは、受信パケットに基づくハッシュ計算の結果と照合される。宛先ＭＡＣアドレスは、ハッシュ計算の結果が宛先ＩＤに合致した受信パケットについて、宛先となるＭＡＣアドレスである。
【００２７】
なお、ハッシュ計算の結果と、宛先ＩＤとの照合とは、例えば、ハッシュ計算によって得られるハッシュ値に基づいて、宛先ＩＤに対応する１〜６のいずれかの値を得ることで行われてもよい。具体的には、ハッシュ値を６で除した場合の余りに１を加算した値と、宛先ＩＤとが照合されてもよい。
【００２８】
ステートレス型ロードバランサ１１は、受信パケットの宛先ＭＡＣアドレスを、転送先のソフトスイッチ１２のＭＡＣアドレスに変更して（書き換えて）、当該受信パケットを当該ソフトスイッチ１２へ転送する（Ｓ１２）。
【００２９】
続いて、ソフトスイッチ１２は、自身が保持しているフローテーブルに基づいて、受信パケットを処理する。
【００３０】
図５は、フローテーブルの構成例を示す図である。図５に示されるように、フローテーブルの各フローエントリは、条件及びアクションを含む。条件は、フローエントリの適用対象のパケットに対する条件である。アクションは、条件に合致したパケットに対して実行される処理である。
【００３１】
図５において、条件には、宛先ＭＡＣアドレスが設定されている。また、アクションには、２つの処理が含まれている。１つ目は、送信元ＭＡＣアドレスを、受信パケットの宛先ＭＡＣアドレスに変更することである。２つ目は、受信パケットの宛先ＭＡＣアドレスをサービスＶＭ１４のＭＡＣアドレスに変更して受信パケットを転送することである。
【００３２】
したがって、ソフトスイッチ１２は、図３に示されるように、受信パケットの宛先ＭＡＣアドレスに基づいて、転送先のサービスＶＭ１４のＭＡＣアドレスを特定する。ソフトスイッチ１２は、受信パケットの宛先ＭＡＣアドレスに対応するフローエントリに基づいて、受信パケットの送信元ＭＡＣアドレス及び宛先ＭＡＣアドレスを変更して、受信パケットを転送する（Ｓ１３）。なお、これらの変更操作はレイヤ２（データリンク層）に限られるため、サービスＶＭ１４のサービス動作には影響を与えない。ここで、受信パケットの送信元ＭＡＣアドレスに設定されたソフトスイッチ１２のＭＡＣアドレスが、セッショングループＩＤとしての役割を果たす。すなわち、ソフトスイッチ１２によって、セッショングループＩＤが受信パケットに付与される。
【００３３】
転送された受信パケットを受信したサービスＶＭ１４は、受信パケットの内容を調べ、受信パケットに係るセッションの状態に応じた処理を実行し、必要に応じて当該セッションの状態を更新する。更新したセッション状態の情報は、予め定められたバックアップ先ＶＭへコピーしておく。パケットが属するセッショングループは、受信パケットの送信元ＭＡＣアドレスを調べることで識別することができる。
【００３４】
続いて、サービスＶＭ１４の数が変更される際に実行される処理手順について説明する。図６は、１つのサービスＶＭのスケールイン時の処理手順の一例を説明するための図である。
【００３５】
オーケストレータ１６は、サービスＶＭクラスタ１３の負荷状態を監視している。オーケストレータ１６は、負荷の変動によって、減らす（スケールインの対象とする）サービスＶＭ１４を、例えば、サービスＶＭ１４−２に決定すると共に、サービスＶＭ１４−２が管理するセッション群を、セッショングループの単位でサービスＶＭ１４−１又はサービスＶＭ１４−３に移行することを決定して、決定事項をサービスＶＭ１４−２に通知する（Ｓ２１）。すなわち、セッショングループＩＤと、サービスＶＭ１４との対応関係が変更される。ここでは、当該対応関係が、図７に示されるように変更されたこととする。
【００３６】
図７は、セッショングループＩＤとサービスＶＭとの対応関係の変更例を示す図である。図７では、サービスＶＭ１４−２（ＶＭ−２）に対応付けられていたセッショングループＩＤ＃３が、サービスＶＭ１４−１（ＶＭ−１）に対応付けられ、サービスＶＭ１４−２（ＶＭ−２）に対応付けられていたセッショングループＩＤ＃４が、サービスＶＭ１４−３（ＶＭ−３）に対応付けられるように、対応関係が変更された例が示されている。
【００３７】
オーケストレータ１６から通知を受けたサービスＶＭ１４−２は、サービスＶＭ１４−１及びサービスＶＭ１４−３のそれぞれに、移行対象のセッショングループに属するセッションの状態情報を送信する（Ｓ２２）。すなわち、サービスＶＭ１４−２によって管理されていたセッション群の管理の引継ぎが、セッショングループ単位で行われる。図７の例によれば、セッショングループＩＤ＃３に係るセッショングループに属するセッションの管理はサービスＶＭ１４−１によって引き継がれ、セッショングループＩＤ＃４に係るセッショングループに属するセッションの管理はサービスＶＭ１４−３によって引き継がれる。その後、サービスＶＭ１４−１及びサービスＶＭ１４−３は、自身のセッショングループの状態情報を更新して、新たなセッショングループの状態情報を保持する。
【００３８】
続いて、オーケストレータ１６は、セッショングループＩＤとサービスＶＭ１４との新たな対応関係を示すマッピング情報をＳＤＮコントローラ１５へ通知する（Ｓ２３）。
【００３９】
続いて、ＳＤＮコントローラ１５は、受信したマッピング情報に基づいて、ソフトスイッチ１２が保持するフローテーブルを変更する（Ｓ２４）。
【００４０】
図８は、フローテーブルの変更例を示す図である。図８において、３番目及び４番目のフローエントリが、図５と異なる。すなわち、３番目のフローエントリの条件に合致するパケットの転送先は、サービスＶＭ１４−１（ＶＭ−１）に変更されている。また、４番目のフローエントリの条件に合致するパケットの転送先は、サービスＶＭ１４−３（ＶＭ−３）に変更されている。
【００４１】
その後、ソフトスイッチ１２は、変更後のフローテーブルに基づいて、パケットの転送を行う。
【００４２】
上述したように、本実施の形態によれば、ソフトスイッチ１２からサービスＶＭ１４への転送先の切り替えは、セッション単位ではなく、セッショングループ単位に実行される。ここで、セッショングループ数は、セッション数より少ない。また、ソフトスイッチ１２のフローテーブルのフローエントリは、セッショングループ単位で定義される。したがって、ネットワーク機能を提供するサービスＶＭ１４のマイグレーション（増減）を効率化することができる。
【００４３】
また、セッショングループＩＤは、レイヤ２のヘッダ情報に関連付けられるため、セッショングループＩＤがレイヤ３やレイヤ４に関連づけられる場合に比べて、送信元アドレスチェックなどのセキュリティチェックに対する影響を回避することができる。
【００４４】
なお、ステートレス型ロードバランサ１１及び各ソフトスイッチ１２が、それぞれハードウェアによって構成される場合に関して本実施の形態が適用されてもよい。
【００４５】
以上、本発明の実施例について詳述したが、本発明は斯かる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【符号の説明】
【００４６】
１            パケット転送システム
１０          パケット転送装置
１１          ステートレス型ロードバランサ
１２          ソフトスイッチ
１３          サービスＶＭクラスタ
１４          サービスＶＭ
１５          ＳＤＮ（Software Defined Network）コントローラ
１６          オーケストレータ
１００        ドライブ装置
１０１        記録媒体
１０２        補助記憶装置
１０３        メモリ装置
１０４        ＣＰＵ
１０５        インタフェース装置
Ｂ            バス
【図１】
0006572184.tif 000002
【図２】
0006572184.tif 000003
【図３】
0006572184.tif 000004
【図４】
0006572184.tif 000005
【図５】
0006572184.tif 000006
【図６】
0006572184.tif 000007
【図７】
0006572184.tif 000008
【図８】
0006572184.tif 000009