(57)【特許請求の範囲】
【請求項１】
コンテナ型仮想化技術によりＯＳ（Operating System）上に構築された仮想化環境である１つ以上のコンテナと、前記ＯＳ上に構築され前記コンテナ内のプロセスから共用される仮想スイッチと、前記仮想スイッチを制御する仮想スイッチコントローラとを備えた仮想スイッチ制御システムであって、
前記仮想スイッチは、外部と接続する物理インタフェースと、前記１つ以上のコンテナに対応して生成され且つそれぞれ対応するコンテナと接続する１つ以上の仮想インタフェースと、前記物理インタフェース及び前記仮想インタフェースに到着したパケットに対して前記仮想スイッチコントローラから通知された制御内容に応じた処理を行うパケット処理機能部とを備え、
前記仮想スイッチコントローラは、コンテナごとに独立したスイッチ制御情報を記憶する記憶手段と、前記仮想スイッチを制御するネットワーク制御機能部とを備え、
前記ネットワーク制御機能部は、前記仮想スイッチのパケット処理機能部が受信したコンテナ内への通信に係るパケットのうちコンテナを利用するユーザのコントローラからのスイッチ制御信号に係るパケットを前記仮想スイッチコントローラのネットワーク制御機能部に転送するとともに他のパケットは仮想インタフェースを介してコンテナ内に転送するよう前記仮想スイッチを制御する第１の機能部と、仮想スイッチから前記第１の機能部の制御により転送されたスイッチ制御信号を、該スイッチ制御信号に係るユーザが利用するコンテナのスイッチ制御信号として前記記憶手段に記憶するとともに、該スイッチ制御信号に基づき前記仮想スイッチのパケット処理機能部を制御する第２の機能部とを備えた
ことを特徴とする仮想スイッチ制御システム。
【請求項２】
前記記憶手段はさらに認証情報を含むユーザ情報を記憶し、
前記ネットワーク制御機能部の第２の機能部では、ユーザの認証情報に係るスイッチ制御信号を前記仮想スイッチのパケット処理機能部を介してユーザのコントローラから受信すると、前記記憶手段のユーザ情報を用いて認証処理を行い、認証に成功した場合に以降のスイッチ制御信号の前記記憶手段への記憶及び該スイッチ制御信号に基づく仮想スイッチのパケット処理機能部に対する制御を行う
ことを特徴とする請求項１記載の仮想スイッチ制御システム。
【請求項３】
前記ネットワーク制御機能部の第２の機能部は、スイッチ制御信号に基づく仮想スイッチのパケット処理機能部に対する制御を行う際に、スイッチ制御信号に含まれるアドレスを仮想インタフェースに変換する第３の機能部を含む
ことを特徴とする請求項１又は２に記載の仮想スイッチ制御システム。
【請求項４】
コンテナ型仮想化技術によりＯＳ（Operating System）上に構築された仮想化環境である１つ以上のコンテナと、前記ＯＳ上に構築され前記コンテナ内のプロセスから共用される仮想スイッチとを備えた環境下において、仮想スイッチコントローラが前記仮想スイッチを制御する方法であって、
前記仮想スイッチは、外部と接続する物理インタフェースと、前記１つ以上のコンテナに対応して生成され且つそれぞれ対応するコンテナと接続する１つ以上の仮想インタフェースと、前記物理インタフェース及び前記仮想インタフェースに到着したパケットに対して前記仮想スイッチコントローラから通知された制御内容に応じた処理を行うパケット処理機能部とを備え、
前記仮想スイッチコントローラは、コンテナごとに独立したスイッチ制御情報を記憶する記憶手段と、前記仮想スイッチを制御するネットワーク制御機能部とを備え、
前記ネットワーク制御機能部が、前記仮想スイッチのパケット処理機能部が受信したコンテナ内への通信に係るパケットのうちコンテナを利用するユーザのコントローラからのスイッチ制御信号に係るパケットを前記仮想スイッチコントローラのネットワーク制御機能部に転送するとともに他のパケットは仮想インタフェースを介してコンテナ内に転送するよう前記仮想スイッチを制御する第１のステップと、
前記ネットワーク制御機能部が、仮想スイッチから前記第１のステップの制御により転送されたスイッチ制御信号を、該スイッチ制御信号に係るユーザが利用するコンテナのスイッチ制御信号として前記記憶手段に記憶するとともに、該スイッチ制御信号に基づき前記仮想スイッチのパケット処理機能部を制御する第２のステップとを含む
ことを特徴とする仮想スイッチ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンテナ型仮想化技術に関する。
【背景技術】
【０００２】
現在のキャリア網、特に固定網においては、インターネットアクセスやＩＰＴＶ（Internet Protocol TeleVision）、ＶＰＮ（Virtual Private Network）などのネットワークサービスを提供するための機能（ＮＷ機能）が、エッジルータや専用のアプライアンスといった形態で実装されている。
【０００３】
近年では、このようなＮＷ機能を仮想化して汎用サーバ上で動作させ、ネットワークサービスを提供できるようにするＮＦＶ（Network Function Virtualization）が検討されている（非特許文献１参照）。
【０００４】
ＮＦＶが実現されると、仮想化されたキャリア網のＮＷ機能を一カ所のサーバ群やデータセンタに集約することが可能になり、導入コストの低下や、設備効率の向上が期待できる。更に、ＳＤＮ（Software Defined Network）技術による迅速かつ柔軟なネットワーク制御と組み合わせることで、サービスの迅速な提供が可能になる。
【０００５】
ＮＦＶ化が検討されているＮＷ機能の一つとして、ＣＰＥ（Customer Premises Equipment）がある。ＣＰＥは、キャリア網に接続するユーザ毎に設置される装置であり、数千万という多くのユーザを収容するキャリア網においては、ＣＰＥの数は非常に多い。このような、多数のＮＷ機能を仮想化してサーバに収容する際には、サーバの収容効率の向上が大きな課題になる。
【０００６】
現在、クラウドサービスを提供するデータセンタにおいては、ハイパーバイザ型仮想化が多く利用されている。ハイパーバイザ型仮想化では、コンピュータの動作をエミュレートすることで、物理マシンを仮想化した仮想マシンを作り出し、その上でＯＳを動作させることができる。これにより、一つのサーバ上で仮想マシン毎に異なるＯＳを実行できるという特徴がある。一方、エミュレーションによるオーバヘッドが大きく、サーバ上で直接アプリケーションを動作させた場合と比較して、性能が劣化し、サーバの収容効率も悪化するという課題がある。
【０００７】
このような中で、仮想マシンをエミュレートするのではなく、名前空間やプロセス空間を分離することによりＯＳ上でプロセスが動作する独立した環境を作り出す技術としてコンテナ型仮想化技術がある。コンテナ型仮想化技術では、一つのＯＳ上に、論理的に名前空間，プロセス空間，ＣＰＵやメモリ等のサーバリソースが分離された環境を構築し、アプリケーションを実行する。この分離された環境は「コンテナ」と呼ばれ、コンテナ毎にリソースの利用やファイルシステムへのアクセスが制御される。コンテナ型仮想化技術では、ハイパーバイザ型仮想化と比較して、仮想マシンのエミュレーションを行わない分オーバヘッドが小さく、収容効率の観点ではハイパーバイザ型仮想化よりも有利といえる（非特許文献２参照）
【先行技術文献】
【非特許文献】
【０００８】
【非特許文献１】"Network Functions Virtualisation", NFV White Paper, Oct. 22, 2012, [online], [平成25年1月22日検索], インターネット<URL:http://portal.etsi.org/NFV/NFV_White_Paper.pdf>
【非特許文献２】Xavier M.G., et al., "Performance Evaluation of Container-Based Virtualization for High Performance Computing Environments", Parallel, Distributed and Network-Based Processing (PDP), 2013 21st Euromicro International Conference on, pp233-240, Feb. 2013
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかし、コンテナ技術は、カーネルを共有するという特徴から、仮想スイッチ（ｖＳｗｉｔｃｈ）のようなカーネル領域を使用するアプリケーションは、コンテナ上での動作が制限されるという課題がある。また、仮想スイッチをカーネル内に実装し、複数コンテナで共用する方法も考えられるが、例えば、コンテナ毎にユーザが異なるマルチテナント環境において、各ユーザが個別にコンテナ内の仮想ネットワークを制御する場合は、共通の仮想スイッチを制御させることになり、セキュリティ上の問題が懸念される。
【００１０】
本発明は上記事情に鑑みてなされたものであり、その目的とするところは、コンテナ型仮想化技術によりコンテナが構築された環境下においても当該環境による制約を受けることなく且つセキュリティレベルの高い仮想スイッチを提供することができる仮想スイッチの制御システム及び方法を提供することにある。
【課題を解決するための手段】
【００１１】
上記目的を達成するために、本願発明は、コンテナ型仮想化技術によりＯＳ（Operating System）上に構築された仮想化環境である１つ以上のコンテナと、前記ＯＳ上に構築され前記コンテナ内のプロセスから共用される仮想スイッチと、前記仮想スイッチを制御する仮想スイッチコントローラとを備えた仮想スイッチ制御システムであって、前記仮想スイッチは、外部と接続する物理インタフェースと、前記１つ以上のコンテナに対応して生成され且つそれぞれ対応するコンテナと接続する１つ以上の仮想インタフェースと、前記物理インタフェース及び前記仮想インタフェースに到着したパケットに対して前記仮想スイッチコントローラから通知された制御内容に応じた処理を行うパケット処理機能部とを備え、前記仮想スイッチコントローラは、コンテナごとに独立したスイッチ制御情報を記憶する記憶手段と、前記仮想スイッチを制御するネットワーク制御機能部とを備え、前記ネットワーク制御機能部は、前記仮想スイッチのパケット処理機能部が受信したコンテナ内への通信に係るパケットのうちコンテナを利用するユーザのコントローラからのスイッチ制御信号に係るパケットを前記仮想スイッチコントローラのネットワーク制御機能部に転送するとともに他のパケットは仮想インタフェースを介してコンテナ内に転送するよう前記仮想スイッチを制御する第１の機能部と、仮想スイッチから前記第１の機能部の制御により転送されたスイッチ制御信号を、該スイッチ制御信号に係るユーザが利用するコンテナのスイッチ制御信号として前記記憶手段に記憶するとともに、該スイッチ制御信号に基づき前記仮想スイッチのパケット処理機能部を制御する第２の機能部とを備えたことを特徴とする。
【００１２】
また、本願発明は、コンテナ型仮想化技術によりＯＳ（Operating System）上に構築された仮想化環境である１つ以上のコンテナと、前記ＯＳ上に構築され前記コンテナ内のプロセスから共用される仮想スイッチとを備えた環境下において、仮想スイッチコントローラが前記仮想スイッチを制御する方法であって、前記仮想スイッチは、外部と接続する物理インタフェースと、前記１つ以上のコンテナに対応して生成され且つそれぞれ対応するコンテナと接続する１つ以上の仮想インタフェースと、前記物理インタフェース及び前記仮想インタフェースに到着したパケットに対して前記仮想スイッチコントローラから通知された制御内容に応じた処理を行うパケット処理機能部とを備え、前記仮想スイッチコントローラは、コンテナごとに独立したスイッチ制御情報を記憶する記憶手段と、前記仮想スイッチを制御するネットワーク制御機能部とを備え、前記ネットワーク制御機能部が、前記仮想スイッチのパケット処理機能部が受信したコンテナ内への通信に係るパケットのうちコンテナを利用するユーザのコントローラからのスイッチ制御信号に係るパケットを前記仮想スイッチコントローラのネットワーク制御機能部に転送するとともに他のパケットは仮想インタフェースを介してコンテナ内に転送するよう前記仮想スイッチを制御する第１のステップと、前記ネットワーク制御機能部が、仮想スイッチから前記第１のステップの制御により転送されたスイッチ制御信号を、該スイッチ制御信号に係るユーザが利用するコンテナのスイッチ制御信号として前記記憶手段に記憶するとともに、該スイッチ制御信号に基づき前記仮想スイッチのパケット処理機能部を制御する第２のステップとを含むことを特徴とする。
【発明の効果】
【００１３】
本発明によれば、各コンテナで仮想スイッチを共用しつつも、コンテナ毎に仮想スイッチを独立して制御することが可能になるので、コンテナ内のプロセスからみると各コンテナに専用の仮想スイッチが存在するように見える。換言すれば、各コンテナに擬似的な仮想スイッチ（以下、疑似仮想スイッチ（ｐｖＳＷ：Pseudo Virtual Switch）と言う）を提供することができる。これにより、コンテナ型仮想化技術による制約を受けることなく、且つ、コンテナ間のセキュリティレベルを向上させることができる。
【図面の簡単な説明】
【００１４】
【図１】仮想スイッチ制御システムの構成図
【図２】仮想スイッチの構成図
【図３】仮想スイッチコントローラの構成図
【図４】ＤＢの記憶情報の一例
【図５】コンテナ情報の一例
【図６】疑似仮想スイッチ情報の一例
【図７】仮想スイッチ情報の一例
【図８】ユーザ情報
【図９】仮想スイッチ制御システムの概略動作を説明する図
【図１０】仮想スイッチの制御内容例
【図１１】仮想スイッチ制御システムの動作を説明するシーケンスチャート
【図１２】仮想スイッチ制御システムの概略動作を説明する図
【図１３】仮想スイッチの制御内容例
【図１４】仮想スイッチ制御システムの動作を説明するシーケンスチャート
【図１５】コンテナを他のサーバに移動させた際の動作を説明する図
【図１６】コンテナを他のサーバに移動させた際の動作を説明するシーケンスチャート
【図１７】仮想スイッチ用の設定ファイルを生成するフローチャート
【発明を実施するための形態】
【００１５】
本発明の一実施の形態に係る仮想スイッチ制御システムについて図面を参照して説明する。図１は仮想スイッチ制御システムの構成図である。
【００１６】
仮想スイッチ制御システムでは、図１に示すように、サーバ１００は、ＯＳ１１０上に構築された１つ以上のコンテナ１２０，１３０と、ＯＳ１１０上に構築された１つ以上の仮想スイッチ１５０と、ＯＳ１１０上に構築された仮想スイッチコントローラ１９０とを備えている。なお、仮想スイッチコントローラ１９０は仮想スイッチ１５０と通信できるのであれば実装位置は不問であり、ＯＳ１１０外やサーバ１００とは別のコンピュータに実装するようにしてもよい。
【００１７】
コンテナ１２０，１３０は、ＯＳ１１０のユーザ空間に形成されプロセスレベルでリソースが分離された仮想化環境であり、コンテナ間で名前空間やプロセス空間が分離している。コンテナ１２０，１３０は、コンテナを利用するユーザ毎に構築されるものであり、サーバ１００には複数のコンテナ１２０，１３０を構築可能、すなわち複数のユーザにコンテナを提供可能となっている。コンテナ１２０，１３０には、コンテナを利用するユーザの指示等により、その内部に１つ以上のユーザプロセス１２１，１３１を生成することができる。ここで「コンテナを利用するユーザ」とは例えば事業者が本システムを利用してコンテナ提供サービスを行っている場合に当該コンテナ提供サービスを受けるものであり、ユーザはユーザプロセス１２１，１３１として形成されたアプリケーションにより、ユーザの顧客等に対して各種サービスを提供することができる。なお、本システムを利用する他の形態としては、複数のサービスを運営する事業者がそれらサービスを提供するために、１台のサーバ上にサービスごとにコンテナを生成し、別々の管理者をあてる場合が考えられ、この場合管理者が「コンテナを利用するユーザ」に該当する。また、本システムを利用する他の形態としては、研究開発等において、複数の検証システムを構築する場合に、物理装置削減のためサーバを共有することを目的として、１サーバ上に検証システム毎にコンテナを生成し、複数の検証システムから１サーバを共有するが、各検証システムに対して仮想スイッチがそれぞれの検証システム毎に存在するように見せたい場合が考えられ、この場合研究開発者が「コンテナを利用するユーザ」に該当する。なお、本システムを利用する形態はこれらに限定されるものではない。
【００１８】
本発明に係る仮想スイッチ制御システムは、コンテナ１２０，１３０に擬似的に１つ以上の仮想スイッチ（疑似仮想スイッチ）１２９，１３９が存在しているように見えるよう、仮想スイッチ１５０を制御するものである。
【００１９】
仮想スイッチ１５０は、ＯＳ１１０のカーネル空間に実装されており、各コンテナ１２０，１３０で共用される。仮想スイッチ１５０は、１つのサーバ１００上に１つ以上構築されている。図２に仮想スイッチ１５０の構成図を示す。仮想スイッチ１５０は、図２に示すように、サーバ１００の外部のネットワーク３００と接続する１つ以上の物理インタフェース（Ｅｔｈ）１５１と、コンテナ１２０，１３０と接続するｎ個（ｎは自然数）の仮想インタフェース（ｖＥｔｈ）１５２と、パケット処理機能部１５３とを備えている。
【００２０】
仮想インタフェース１５２は、コンテナ１２０，１３０側のネットワークインタフェースであり、サーバ１００内に存在するコンテナ１２０，１３０に対応して生成されている。パケット処理機能部１５３は、物理インタフェース１５１及び仮想インタフェース１５２に到着したパケットに対して、仮想スイッチコントローラ１９０から通知された制御内容に応じた処理を行うことにより、各コンテナ１２０，１３０の疑似仮想スイッチ１２９，１３９のパケット処理機能を実質的に代行し、これによりあたかも各コンテナ１２０，１３０に疑似仮想スイッチ１２９，１３９が存在するかのように見せかけることができる。なお、疑似仮想スイッチ１２９，１３９は、各コンテナ１２０，１３０に存在しない場合もあるし、２つ以上存在する場合もある。
【００２１】
仮想スイッチ１５０は、  ＶＬＡＮ（Virtual Local Area Network）、ＭＰＬＳ（Multi-Protocol Label Switching）、ＶｘＬＡＮ（Virtual eXtensible Local Area Network）等の仮想ネットワークを構築する１つ以上のプロトコルに対応し、ヘッダに含まれる識別ＩＤから仮想ネットワークのユーザを識別可能である。
【００２２】
仮想スイッチコントローラ１９０は、ＯＳ１１０のユーザ空間に実装されており仮想スイッチ１５０を制御する。図３に仮想スイッチコントローラ１９０の構成図を示す。仮想スイッチコントローラ１９０は、図３に示すように、ネットワーク制御機能部１９１（特許請求の範囲の「パケット制御部」に相当する。）と、サーバ間連携機能部１９２と、ＤＢ（Data Base）１９３とを備えている。
【００２３】
ネットワーク制御機能部１９１は、仮想スイッチ１５０を、例えばＯｐｅｎＦｌｏｗやＮＥＴＣＯＮＦ、ＦｏｒＣＥＳ（Forwarding and Control Element Separation）、ＸＭＰＰ（eXtensible Messaging and Presence Protocol）などのプロトコルを用いて制御する。また、ネットワーク制御機能部１９１は、仮想スイッチ１５０に到着した特定の制御トラヒック（前述のプロトコルやＡＰＩ（Application Programming Interface）用のプロトコル等）のみを仮想スイッチコントローラ１９０に転送することで各コンテナ１２０，１３０内に疑似仮想スイッチ１２９，１３９があるかのように見せかけ、ユーザ毎に疑似仮想スイッチ１２９，１３９を提供する機能をもつ。
【００２４】
サーバ間連携機能部１９２は、コンテナ１２０，１３０を別サーバへ移動させる場合において、移動元のコンテナ１２０，１３０のネットワーク設定を移動先に移す機能を有する。
【００２５】
ＤＢ１９３は、サーバ１００内のコンテナ１２０，１３０、疑似仮想スイッチ１２９，１３９、利用ユーザに関する情報等を保持する機能を有する。図４にＤＢに保持されている情報を示す。図４に示すように、ＤＢ１９３は、コンテナ情報２０１と、疑似仮想スイッチ情報２０２と、仮想スイッチ情報２０３と、ユーザ情報２０４とを保持する。
【００２６】
コンテナ情報２０１は、図５に例示するように、コンテナと疑似仮想スイッチの紐付け状態を示すものであり、コンテナを識別するコンテナＩＤと、疑似仮想スイッチを識別する疑似仮想スイッチＩＤを保持する。
【００２７】
疑似仮想スイッチ情報２０２は、図６に例示するように、疑似仮想スイッチ１２９，１３９の各種情報を保持するものであり、疑似仮想スイッチＩＤと、コンテナ内ポートと仮想インタフェース１５２のマッピング情報と、仮想インタフェース１５２と仮想ネットワークのマッピング情報と、制御用アドレス／ポート番号情報と、設定内容情報とを保持する。ここで、コンテナ内ポートとは、コンテナ内から見た擬似仮想スイッチ１２９，１３９のポート名を意味する。また、制御用アドレス／ポート番号情報とは、後述するように、ユーザのコントローラ（後述する）が疑似仮想スイッチ１２９，１３９に向けてスイッチ制御用信号に係るパケットを送出する際に、宛先として用いるアドレス／ポート番号を示すものであり、後述するように当該制御用アドレス／ポート番号を宛先とするパケットは仮想スイッチコントローラ１９０に到達する。設定内容情報は、ユーザのコントローラから受信したスイッチ制御信号に含まれる疑似仮想スイッチ１２９，１３９の設定情報であり、例えばパケットフィルタ設定情報、ＮＡＴ（Network Address Translator）設定情報、ＶＰＮ（Virtual Private Network）設定情報などが挙げられる。
【００２８】
仮想スイッチ情報２０３は、図７に例示するように、仮想スイッチ１５０毎の各種情報を保持するものであり、仮想スイッチＩＤと、物理インタフェース情報と、仮想インタフェース情報と、設定内容情報を保持する。ここで、設定内容情報は、仮想スイッチ１５０の設定情報であり、例えばフィルタ設定情報、ＮＡＴ設定情報、ＶＰＮ設定情報など挙げられる。
【００２９】
ユーザ情報２０４は、図８に例示するように、ユーザの認証情報、及び、ユーザと疑似仮想スイッチ１２９，１３９の紐付け状態を保持するものであり、ユーザＩＤと、認証情報と、当該ユーザに紐付けられた１つ以上の疑似仮想スイッチ１２９，１３９の情報とを保持する。
【００３０】
ネットワーク３００は、例えばＶＬＡＮ、ＭＰＬＳ、ＶｘＬＡＮ等の仮想ネットワークを構築する１つ以上のプロトコルに対応する。なお、仮想ネットワークを構築するためのプロトコルは前述のもの以外のものであってもよい。
【００３１】
次に、本実施の形態に係る仮想スイッチ制御システムの動作について図９を参照して説明する。図９は仮想スイッチ制御システムの概略動作を説明する図、図１０は仮想スイッチの制御内容の一例、図１１は仮想スイッチ制御システムの動作を説明するシーケンスチャートである。
【００３２】
まず、ユーザＡは、仮想スイッチコントローラ１９０に対して疑似仮想スイッチ作成を通知する（ステップＳ１）。ここで通知する疑似仮想スイッチ作成には、作成される疑似仮想スイッチを利用するアプリケーションの識別情報を含む。或いは、作成される疑似仮想スイッチを利用するコンテナの識別情報を含む。
【００３３】
仮想スイッチコントローラ１９０は、該当するアプリケーションが実行されているコンテナの識別子から、該当コンテナＩＤに関するＤＢ１９３に疑似仮想スイッチ情報２０２を書き込み（ステップＳ２）、当該疑似仮想スイッチ情報２０２に含まれる制御用アドレス／ポート番号情報をユーザに応答する（ステップＳ３）。
【００３４】
なお、ステップＳ１〜Ｓ３の処理におけるユーザＡと仮想スイッチコントローラ１９０間の通信は、本願発明とは別の仕組み・経路で行われる。例えば、サーバ１００は、ユーザＡに対してコンテナの生成などを制御するためのＷｅｂインタフェースを提供し、当該Ｗｅｂインタフェースを介して前記ステップＳ１〜Ｓ３を実施することが挙げられる。
【００３５】
次に、仮想スイッチコントローラ１９０は、仮想スイッチ１５０に対して、ユーザＡのコントローラ３０１から受信したスイッチ制御信号に係るパケットを仮想スイッチコントローラ１９０に転送されるように制御する（ステップＳ４）。なお、ここでユーザＡのコントローラ３０１とは、仮想スイッチの制御を行う機能を有する制御アプリケーションであり、ユーザＡの有する端末や他のサーバ上、またはユーザＡのコンテナ内に実装されている。
【００３６】
次に、ユーザＡのコントローラ３０１から、前記ステップＳ３で通知された制御用アドレス／ポート番号宛てに、ユーザ認証に係るスイッチ制御信号を送信すると（ステップＳ５）、当該スイッチ制御信号に係るパケットは仮想スイッチコントローラ１９０に転送される（ステップＳ６）。仮想スイッチコントローラ１９０は、スイッチ制御信号を受信すると、ユーザ認証を行い（ステップＳ７）、当該ユーザが利用しているコンテナの疑似仮想スイッチの設定情報をユーザＡのコントローラ３０１に送信する（ステップＳ８）。
【００３７】
次に、ユーザＡのコントローラ３０１から、前記ステップＳ３で通知された制御用アドレス／ポート番号宛てに、パケットフィルタリング設定など各種スイッチ設定に係るスイッチ制御信号（図１０参照）を送信すると（ステップＳ９）、当該スイッチ制御信号に係るパケットは仮想スイッチコントローラ１９０に転送される（ステップＳ１０）。仮想スイッチコントローラ１９０は、スイッチ制御信号を受信すると、当該設定情報をＤＢ１９３に書き込み（ステップＳ１１）、仮想スイッチ１５０が当該設定情報に基づく動作を行うように仮想スイッチ１５０を制御する（ステップＳ１２）。
【００３８】
以降、端末３０２からユーザＡのアプリケーションへの通信に係るパケット、すなわちユーザＡの有するコントローラ３０１からのスイッチ制御信号に係るパケット以外のパケットは（ステップＳ１３）、仮想スイッチ１５０においてパケットフィルタリングなどの処理が行われ（ステップＳ１４）、コンテナ内のユーザＡの当該アプリケーションに転送される（スイッチＳ１５）。なお、ここで端末３０２とは、ユーザＡに係るものに限定されるものではなく、ユーザＡのアプリケーションによるサービスを受ける顧客等の端末等を想定したものである。
【００３９】
次に、上述のように設定された環境下において、ユーザが疑似仮想スイッチの設定を変更する場合について説明する。ここでは、ユーザＡのアプリケーションへのＴＣＰ８０番ポート宛てのパケットがフィルタリングされるよう設定を更新する場合について説明する。図１２は仮想スイッチ制御システムの概略動作を説明する図、図１３は仮想スイッチの制御内容の一例、図１４は仮想スイッチ制御システムの動作を説明するシーケンスチャートである。
【００４０】
ユーザＡのコントローラ３０１から、前記ステップＳ３で通知された制御用アドレス／ポート番号宛てに、ユーザ認証に係るスイッチ制御信号を送信すると（ステップＳ２１）、当該スイッチ制御信号に係るパケットは仮想スイッチコントローラ１９０に転送される（ステップＳ２２）。仮想スイッチコントローラ１９０は、スイッチ制御信号を受信すると、ユーザ認証を行い（ステップＳ２３）、当該ユーザが利用しているコンテナの疑似仮想スイッチの設定情報をユーザのコントローラ３０１に送信する（ステップＳ２４）。
【００４１】
次に、ユーザＡの有するコントローラ３０１から、前記ステップＳ３で通知された制御用アドレス／ポート番号宛てに、パケットフィルタリング設定など各種スイッチ設定に係るスイッチ制御信号（図１３参照）を送信すると（ステップＳ２５）、当該スイッチ制御信号に係るパケットは仮想スイッチコントローラ１９０に転送される（ステップＳ２６）。仮想スイッチコントローラ１９０は、スイッチ制御信号を受信すると、当該設定情報をＤＢ１９３に書き込み（ステップＳ２７）、仮想スイッチ１５０が当該設定情報に基づく動作を行うように仮想スイッチ１５０を制御する（ステップＳ２８）。
【００４２】
以降、端末３０２からユーザＡのアプリケーションへのＴＣＰ８０番ポート宛てのパケットは（ステップＳ２９）、仮想スイッチ１５０においてパケットフィルタリングされる（ステップＳ３０）。
【００４３】
次に、コンテナを別のサーバに移動させた場合の動作について図面を参照して説明する。図１５はコンテナの移動を説明する図、図１６はコンテナ移動時の動作を説明するシーケンスチャートである。ここでは、図１５に示すように、サーバ１００Ａからサーバ１００Ｂへ、ユーザＡのコンテナが移動したものとする。
【００４４】
サーバ１００Ａの仮想スイッチコントローラ１９０Ａは、コンテナが移動したことを検知すると（ステップＳ５１）、コンテナの移動先を取得し（ステップＳ５２）、移動先のコンテナが構築されているサーバ１００ＢにユーザＡのアプリケーションが存在するかを確認する（ステップＳ５３）。サーバ１００Ｂの仮想スイッチコントローラ１９０Ｂは、サーバ１００Ａの仮想スイッチコントローラ１９０Ａに対して、ユーザＡのアプリケーションが存在していることを通知する（ステップＳ５４）。
【００４５】
次に、サーバ１００Ａの仮想スイッチコントローラ１９０Ａは、ユーザＡのアプリケーション用の疑似仮想スイッチの設定情報をサーバ１００Ｂの仮想スイッチコントローラ１９０Ｂに通知する（ステップＳ５５）。次に、サーバ１００Ｂの仮想スイッチコントローラ１９０Ｂは、該当ユーザアプリケーションが実行されているコンテナのＩＤから、該当コンテナＩＤに関するＤＢに疑似仮想スイッチの情報を書き込み（ステップＳ５６）、書き込み完了をサーバ１００Ａの仮想スイッチコントローラ１９０Ａに通知する（ステップＳ５７）。サーバ１００Ａの仮想スイッチコントローラ１９０Ａは、サーバ１００Ａの仮想スイッチ１５０Ａに対して、ユーザＡのアプリケーション用の設定を削除するよう指示する（ステップＳ５８）。一方、サーバ１００Ｂの仮想スイッチコントローラ１９０Ｂは、ユーザＡ向けのスイッチ制御信号に係るパケットのみ仮想スイッチコントローラ１９０Ｂに転送されるよう仮想スイッチ１５０Ｂを制御するとともに、前記ステップＳ５５で仮想スイッチコントローラ１９０Ａから受け取った疑似仮想スイッチの設定情報を仮想スイッチ１５０Ｂに設定する（ステップＳ５９）。
【００４６】
次に、ＤＢ１９３内の疑似仮想スイッチ情報２０２の設定情報から、仮想スイッチ１５０用の設定ファイル（コンフィグファイル）を生成する方法について図１７を参照して説明する。
【００４７】
仮想スイッチコントローラ１９０は、ＤＢ１９３内の疑似仮想スイッチ情報２０２の設定内容が更新された場合、更新された設定内容を抽出する（ステップ１０１）。次に、仮想スイッチコントローラ１９０は、抽出された設定内容のｉ行目について、制御種別を判断する（ステップＳ１０２）。
【００４８】
仮想スイッチコントローラ１９０は、制御種別が「ＮＡＴ」の場合、ｉ行目の設定内容に記載のコンテナ内ポート番号を仮想インタフェースに変換し、該当仮想インタフェース間でのＮＡＴ処理を設定する（ステップＳ１０３，Ｓ１０４）。また、仮想スイッチコントローラ１９０は、制御種別が「Ｆｉｌｔｅｒ」の場合、ｉ行目の設定内容に記載のコンテナ内ポート番号を仮想インタフェースに変換し、該当仮想インタフェースのパケットフィルタリング処理を設定する（ステップＳ１０５，Ｓ１０６）。また、仮想スイッチコントローラ１９０は、制御種別が「ＶＰＮ」の場合、ｉ行目の設定内容に記載のコンテナ内ポート番号を仮想インタフェースに変換し、該当仮想インタフェースから、設定内容に記載の宛先ＩＰアドレスに対してＶＰＮの生成処理を設定する（ステップＳ１０７，Ｓ１０８）。
【００４９】
次に、仮想スイッチコントローラ１９０は、既存の仮想スイッチの設定内容と重複する部分がある場合には（ステップＳ１０９）、これまでに決定した設定内容を初期化し、更新内容を実行できない旨のエラーをユーザＡのコントローラ３０１に通知する（ステップＳ１１０）。以上の動作を設定情報の各行について実施する（ステップＳ１１１，Ｓ１１２）。
【００５０】
以上のように本実施の形態に係る仮想スイッチ制御システムによれば、コンテナからみると該コンテナ専用の疑似仮想スイッチが存在しているようにみえるが、スイッチング処理自体はコンテナで共用の仮想スイッチが行う。これにより、高いセキュリティレベルを確保しつつ、スイッチング処理の効率化を図ることができる。
【符号の説明】
【００５１】
１００，１００Ａ，１００Ｂ…サーバ
１１０…ＯＳ
１２０，１３０…コンテナ
１２１，１３１…プロセス（アプリケーション）
１２９，１３９…疑似仮想スイッチ
１５０，１５０Ａ，１５０Ｂ…仮想スイッチ
１９０，１９０Ａ，１９０Ｂ…仮想スイッチコントローラ
１９１…ネットワーク制御機能部
１９２…サーバ間連携機能部
１９３…ＤＢ
３０１…ユーザＡのコントローラ
３０２…端末
【図１】
0006570033.tif 000002
【図２】
0006570033.tif 000003
【図３】
0006570033.tif 000004
【図４】
0006570033.tif 000005
【図５】
0006570033.tif 000006
【図６】
0006570033.tif 000007
【図７】
0006570033.tif 000008
【図８】
0006570033.tif 000009
【図９】
0006570033.tif 000010
【図１０】
0006570033.tif 000011
【図１１】
0006570033.tif 000012
【図１２】
0006570033.tif 000013
【図１３】
0006570033.tif 000014
【図１４】
0006570033.tif 000015
【図１５】
0006570033.tif 000016
【図１６】
0006570033.tif 000017
【図１７】
0006570033.tif 000018