IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 日本電気株式会社の特許一覧

<>
  • 特許-基盤システム及び通信方法 図1
  • 特許-基盤システム及び通信方法 図2
  • 特許-基盤システム及び通信方法 図3
  • 特許-基盤システム及び通信方法 図4
  • 特許-基盤システム及び通信方法 図5
  • 特許-基盤システム及び通信方法 図6
  • 特許-基盤システム及び通信方法 図7
  • 特許-基盤システム及び通信方法 図8
  • 特許-基盤システム及び通信方法 図9
  • 特許-基盤システム及び通信方法 図10
  • 特許-基盤システム及び通信方法 図11
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-12-02
(45)【発行日】2024-12-10
(54)【発明の名称】基盤システム及び通信方法
(51)【国際特許分類】
   H04L 41/0895 20220101AFI20241203BHJP
   H04L 41/40 20220101ALI20241203BHJP
   H04L 61/2503 20220101ALI20241203BHJP
【FI】
H04L41/0895
H04L41/40
H04L61/2503
【請求項の数】 6
(21)【出願番号】P 2023508413
(86)(22)【出願日】2021-03-26
(86)【国際出願番号】 JP2021013104
(87)【国際公開番号】W WO2022201544
(87)【国際公開日】2022-09-29
【審査請求日】2023-08-23
(73)【特許権者】
【識別番号】000004237
【氏名又は名称】日本電気株式会社
(74)【代理人】
【識別番号】100103894
【弁理士】
【氏名又は名称】家入 健
(72)【発明者】
【氏名】高橋 敏明
【審査官】小林 義晴
(56)【参考文献】
【文献】米国特許出願公開第2008/0151893(US,A1)
【文献】特開2020-205571(JP,A)
【文献】米国特許出願公開第2022/276886(US,A1)
【文献】米国特許出願公開第2020/97310(US,A1)
【文献】米国特許出願公開第2009/268611(US,A1)
【文献】中国特許出願公開第112398687(CN,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 41/0895
H04L 41/40
H04L 61/2503
(57)【特許請求の範囲】
【請求項1】
複数の仮想NIC(Network Interface Card)を有するコンテナを実行するためのリソースが実装され、異なる論理ネットワークに接続する複数の仮想NICを備えたVM(Virtual Machine)と、
前記VMの複数の前記仮想NICのそれぞれが前記コンテナのいずれかの前記仮想NICにつながる通信経路が構成されるよう制御するコントローラと
を有する基盤システム。
【請求項2】
前記コントローラは、前記基盤システムの外部から前記コンテナへの通信が、前記コンテナの複数の前記仮想NICのうち当該通信で用いられる前記論理ネットワークに対応する前記仮想NICに転送されるように、NAT(Network Address Translation)の設定を行う
請求項1に記載の基盤システム。
【請求項3】
前記コントローラは、前記基盤システムの外部から前記コンテナへの通信のうち、所定のアクセス先への通信についてアドレスの変換が行われないように、前記NATの設定を行う
請求項2に記載の基盤システム。
【請求項4】
前記コントローラは、
前記コンテナから前記基盤システムの外部への通信について、アクセス先に応じた前記論理ネットワークを使うようにルーティングの設定を行い、
前記コンテナから前記基盤システムの外部への通信の送信元が、前記VMの複数の前記仮想NICのうち当該通信で用いられる前記論理ネットワークに接続する前記仮想NICのアドレスになるように、NATの設定を行う
請求項1に記載の基盤システム。
【請求項5】
前記コントローラは、前記コンテナから前記基盤システムの外部への通信のうち、所定の送信元の通信についてアドレスの変換が行われないように、前記NATの設定を行う
請求項4に記載の基盤システム。
【請求項6】
異なる論理ネットワークに接続する複数の仮想NICを備えたVMが、複数の仮想NICを有するコンテナを実行し、
コントローラが、前記VMの複数の前記仮想NICのそれぞれが前記コンテナのいずれかの前記仮想NICにつながる通信経路が構成されるよう制御する
通信方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、基盤システム及び通信方法に関する。
【背景技術】
【0002】
ソフトウェアの仮想的な動作環境として、コンテナが知られている。例えば、特許文献1では、処理ユニットが、コンテナを使うことによって、ユーザ端末のための仮想化ネットワーク機能のビジネス・サービスを提供することを開示している。
【先行技術文献】
【特許文献】
【0003】
【文献】特表2019-519180号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
コンテナによるスケール性及び柔軟性の高いサービス提供は、KubernetesというCaaS(Container as a Service)基盤ソフトウェアを中心に主にWebサービスの分野で広く利用され始めている。ただし、その適用領域としてはベストエフォートでのサービス提供をする領域が一般的であった。しかし、近年では高品質サービスにおいても通信容量が増大し、コンテナ実装によるスケール性及び柔軟性を求めるユースケースが発生している。この種のユースケースにおいて、用途ごとにネットワークを分離してパフォーマンスマネジメントを実施したいといった要望が存在するが、CaaS基盤が1つのネットワークしか使用しないという構成の都合上、この要望には応えられないという問題があった。
【0005】
CNI(Container Network Interface)の一種であるMultus-CNIは、コンテナのネットワークを分ける機能を提供するが、この機能では、新たに追加されるネットワークはCaaS基盤の外で管理されることが前提とされている。このため、この技術の採用はスケール性及び柔軟性の低下につながるとされてきた。
【0006】
そこで、本明細書に開示される実施形態が達成しようとする目的の1つは、コンテナを用いた動作環境において、新規な手法によりネットワークの分離を実現することができる基盤システム及び通信方法を提供することである。
【課題を解決するための手段】
【0007】
本開示の第1の態様にかかる基盤システムは、
複数の仮想NIC(Network Interface Card)を有するコンテナを実行するためのリソースが実装され、異なる論理ネットワークに接続する複数の仮想NICを備えたVM(Virtual Machine)と、
前記VMの複数の前記仮想NICのそれぞれが前記コンテナのいずれかの前記仮想NICにつながる通信経路が構成されるよう制御するコントローラと
を有する。
【0008】
本開示の第2の態様にかかる通信方法では、
異なる論理ネットワークに接続する複数の仮想NICを備えたVMが、複数の仮想NICを有するコンテナを実行し、
コントローラが、前記VMの複数の前記仮想NICのそれぞれが前記コンテナのいずれかの前記仮想NICにつながる通信経路が構成されるよう制御する。
【発明の効果】
【0009】
本開示によれば、コンテナを用いた動作環境において、新規な手法によりネットワークの分離を実現することができる基盤システム及び通信方法を提供できる。
【図面の簡単な説明】
【0010】
図1】実施の形態の概要にかかる基盤システムの構成の一例を示すブロック図である。
図2】比較例にかかる基盤システムの構成を示すブロック図である。
図3】実施の形態にかかる基盤システムの構成の一例を示すブロック図である。
図4】論理ネットワークを示す模式図である。
図5】比較例にかかる基盤システムにおいて、外部からコンテナに対し通信する流れを示す図である。
図6】実施の形態にかかる基盤システムにおいて、外部からコンテナに対し通信する流れを示す図である。
図7】比較例にかかる基盤システムにおいて、コンテナから外部に向けて通信する流れを示す図である。
図8】宛先のサブネットと論理ネットワークとを対応付けた情報の例を示す表である。
図9】コントローラがコンテナの起動時に設定するルーティングテーブルの例を示す表である。
図10】実施の形態にかかる基盤システムにおいて、コンテナから外部へ通信する流れを示す図である。
図11】コンピュータの構成の一例を示すブロック図である。
【発明を実施するための形態】
【0011】
<実施の形態の概要>
実施の形態の詳細を説明する前に、実施の形態の概要について説明する。図1は、実施の形態の概要にかかる基盤システム1の構成の一例を示すブロック図である。図1に示すように、基盤システム1は、VM(仮想マシン:Virtual Machine)2と、コントローラ3とを有する。ここで、VM2は、複数の仮想NIC(Network Interface Card)を有するコンテナを実行するためのリソースが実装されるVMであり、かつ、異なる論理ネットワークに接続する複数の仮想NICを備えたVMである。また、コントローラ3は、VM2の複数の仮想NICのそれぞれが、コンテナのいずれかの仮想NICにつながる通信経路が構成されるよう制御する。
【0012】
上記構成を備える基盤システム1では、VM2の複数のインターフェースを使い分けることで、VM2上で動作するコンテナは、通信に利用する論理ネットワークを使い分けることができる。このため、基盤システム1によれば、コンテナを用いた動作環境において、新規な手法によりネットワークの分離を実現することができる。
【0013】
<実施の形態の詳細>
実施の形態の詳細の理解を助けるために、まず、比較例について説明する。図2は、比較例にかかる基盤システム9の構成を示すブロック図である。この比較例にかかる基盤システム9の構成は、CaaS基盤をIaaS(Infrastructure as a Service)基盤上に構築する構成となっている。基盤システム9の全体構成としては、コントローラ10と、外部からの通信を適切に振り分けるためのロードバランサ21と、コンテナを動作させるための物理サーバ30、31とを含む。図2に示した例では、2つの物理サーバ30、31が示されているが、この物理サーバの数には制限がなく、同様の構成を持った任意の台数の物理サーバを有していればよい。なお、これら複数の物理サーバは、一般的なIaaS機能により全体が1つのリソースとして取り扱われる。なお、物理サーバは1台であってもよい。
【0014】
物理サーバ31は物理サーバ30と同様の構成であるため、物理サーバ31についての説明は省略する。物理サーバ30には、NIC45と、仮想スイッチ40と、VM50、51が存在する。NIC45は、物理的なNICであり、物理サーバ30からの通信及び物理サーバ30への通信に用いられるインターフェースである。仮想スイッチ40は、IaaS機能のネットワーク機能を実現する仮想スイッチである。すなわち、仮想スイッチ40は、IaaSのサービスにより提供されるネットワーク機能に用いられる仮想スイッチである。VM50、51は、IaaS機能により生成され実際にコンテナを稼働するためのVMである。すなわち、VM50、51は、IaaSのサービスにより提供されるVMであり、このVM上でコンテナが稼働する。なお、図2に示した例では、2つのVM50、51が示されているが、このVMの数には制限がなく、同様の構成を持った任意の台数のVMを有していればよい。なお、VMは1台であってもよい。
【0015】
図2に示した例では、VM50上には、CaaSのサービスにより提供されるコンテナ90、91が動作している。なお、各VM上に動作するコンテナの数は任意である。
【0016】
コントローラ10は、コンテナを管理する装置であり、コンテナの起動、コンテナの通信の設定などを含む種々の管理処理を実行する。コントローラ10は、コンテナオーケストレーターとして動作する装置である。
ロードバランサ21は、外部からの通信を、VM50、51を含む同様な構成の全VMに適切にバランシングする。IaaS機能が物理サーバ全体を1つのリソースとして取り扱うことから、CaaS機能は物理サーバも横断して全てのVMを1つのリソースとして取り扱う。つまり、CaaSのサービスでは、基盤システム9に含まれる全てのVMが1つのリソースとして取り扱われる。
【0017】
VM51はVM50と同様な構成であるため、VM51についての説明は省略する。VM50には、仮想NIC61と、ネットワーク機能部70と、ブリッジ81が存在する。仮想NIC61は、IaaS機能が分離したネットワークそれぞれに接続するためのNICである。すなわち、VM51は、仮想NIC61を介して、IaaSのサービスにより提供されたネットワークと接続する。ネットワーク機能部70は、コンテナ90、91の通信の中継処理を行う処理部であり、コンテナオーケストレーションを実現するため等に用いられる。ブリッジ81は、VM50上で動作するコンテナ90、91とネットワーク機能部70とを接続する仮想的なブリッジである。
【0018】
コンテナ90、91は仮想NIC901を備えており、コンテナ90、91が起動される際、コンテナ90、91の仮想NIC901がブリッジ81に接続するように起動処理が行われる。コンテナ90、91にその他の仮想NIC(例えば、図2に示す仮想NIC902、903)を追加することも可能である。しかしながら、これらの仮想NICは一般的には、CaaS機能であるネットワーク機能部70とは接続されず、ユーザが自身でネットワーク構成を構築する必要がある。
【0019】
図2に示した比較例の構成では、VM50内において、コンテナ90(コンテナ91)から、基盤システム9の外部への通信のルートは、一つである。同様に、図2に示した比較例の構成では、VM50内において、基盤システム9の外部からコンテナ90(コンテナ91)への通信のルートは、一つである。
【0020】
次に、実施の形態にかかる基盤システム5について説明する。図3は、実施の形態にかかる基盤システム5の構成の一例を示すブロック図である。基盤システム5も、基盤システム9と同様、その構成は、CaaS基盤をIaaS基盤上に構築する構成となっている。本実施の形態にかかる基盤システム5のコントローラ10は、図1のコントローラ3に対応している。このため、コントローラ10は、VMの複数の仮想NICのそれぞれがコンテナのいずれかの仮想NICにつながる通信経路が構成されるよう制御する。以下、基盤システム5について説明するが、基盤システム9と同様の構成及び処理については、適宜説明を省略する。
【0021】
図3では、ネットワークとして、コンテナ間の通信用ネットワーク(後述する論理ネットワーク101)と、2種類の外部向けネットワーク(論理ネットワーク102、103)の、計3種類のネットワークが構成される場合の基盤システム5の例を示す。なお、ここでは、外部向けネットワークとして2種類のネットワークを想定しているが、外部向けネットワークの種類数に制限はない。
【0022】
図3に示すように、基盤システム5は、比較例の基盤システム9に対して、ロードバランサ22、23が追加されている。ロードバランサは構成したいネットワークの数だけ必要となる。ここでは、上述の通り3種類のネットワークが構成されているため、基盤システム5は、3つのロードバランサ21、22、23を備える。すなわち、ロードバランサ21、22、23は、それぞれ、異なるネットワークの負荷分散を行う。
【0023】
本実施の形態では、VM50、51は、VM50a、51aに置き換わっている。VM50a、51aは、図1のVM2に対応している。このため、VM50a、51aは、コンテナを実行するためのリソースを提供するVMであり、後述するように、異なる論理ネットワークに接続する複数の仮想NIC61、62、63を備えている。VM51aはVM50aと同様な構成であるため、VM51aについての説明は省略する。VM50aは、図3に示すように、図2に示したVM50に対して、仮想NIC62、63が追加されるとともに、それぞれの仮想NICと対応するブリッジ82、83が追加されている。すなわち、VM50aは、仮想NIC61とこれに対応するブリッジ81と、仮想NIC62とこれに対応するブリッジ82と、仮想NIC63とこれに対応するブリッジ83とを有している。仮想NIC61~63と、ブリッジ81~83は、それぞれ、次のようなIP(Internet Protocol)アドレスを持つ。すなわち、仮想NIC及びブリッジの各ペアは、互いに異なるサブネットに所属するIPアドレスを持つ。つまり、仮想NIC61及びブリッジ81は、第1のサブネットに所属しており、仮想NIC62及びブリッジ82は、第2のサブネットに所属しており、仮想NIC63及びブリッジ83は、第3のサブネットに所属している。
【0024】
ここで、本実施の形態では、一例として、IaaS機能により、図4のような論理ネットワークが構築されているものとする。すなわち、IaaSのサービスにより、図4のような論理ネットワークが提供されている。具体的には、図4に示すように、論理ネットワーク101、102、103の3つ論理ネットワークが提供されている。論理ネットワーク101には、コントローラ10と、ロードバランサ21と、仮想NIC61とが接続している。また、必要に応じて、論理ネットワーク101には、外部の別のノード111が接続している。このように、仮想NIC61は、IaaS機能により作成された論理ネットワーク101を介して、ロードバランサ21と接続しており、ロードバランサ21配下のメンバの1つとして取り扱われる。ロードバランサ21は、VMが複数ある場合、適切に負荷分散を行う。また、論理ネットワーク102には、ロードバランサ22と、仮想NIC62とが接続している。また、必要に応じて、論理ネットワーク102には、外部の別のノード112が接続している。このように、仮想NIC62は、IaaS機能により作成された論理ネットワーク102を介して、ロードバランサ22と接続しており、ロードバランサ22配下のメンバの1つとして取り扱われる。ロードバランサ22は、VMが複数ある場合、適切に負荷分散を行う。同様に、論理ネットワーク103には、ロードバランサ23と、仮想NIC63とが接続している。また、必要に応じて、論理ネットワーク103には、外部の別のノード113が接続している。このように、仮想NIC63は、IaaS機能により作成された論理ネットワーク103を介して、ロードバランサ23と接続しており、ロードバランサ23配下のメンバの1つとして取り扱われる。ロードバランサ23は、VMが複数ある場合、適切に負荷分散を行う。
【0025】
これら3種類の論理ネットワーク101、102、103は、IaaS機能により、適切に分離させることができる。分離はVLAN(Virtual Local Area Network)やVXLAN(Virtual eXtensible Local Area Network)による実装が一般的であるが、方式は問わない。
【0026】
ブリッジ81~83のサブネット及びIPアドレスは、コントローラ10が管理し決定する。コントローラ10がコンテナ90、91を起動する際、コントローラ10は、コンテナ90、91がブリッジ81~83に接続する仮想NIC901~903を内部に持つようにするとともに、それぞれにIPアドレスを割り振る。ここで、仮想NIC901は、ブリッジ81に接続するための仮想NICであり、仮想NIC902は、ブリッジ82に接続するための仮想NICであり、仮想NIC903は、ブリッジ83に接続するための仮想NICである。また、コンテナ90、91は、デフォルトネットワークのブリッジのIPアドレスとして、ブリッジ81のIPアドレスを用いるよう設定する。ネットワーク機能部70はNAT(Network Address Translation)機能とRouting機能を持ち、送信元IPアドレスや宛先IPアドレスを用途に応じて変換する。その際、ネットワーク機能部70は、必要に応じてコントローラ10のCaaSコントローラ機能と連携して処理を行う。なお、ネットワーク機能部70の上述した処理は、Linux(登録商標)の場合、例えばiptablesによる実装が可能である。
【0027】
次に、図を参照しつつ、CaaS基盤外からコンテナへの通信方法、およびコンテナからCaaS基盤外への通信方法を、コンテナ通信で一般的に用いられるHTTP通信を例に説明する。
【0028】
まず、外部からコンテナへの通信について説明する。
図5は、図2で示した比較例にかかる基盤システム9において、外部からコンテナに対し通信する流れを示す図である。この流れは一般的なCaaS基盤機能による通信の流れの1つであり、比較例及び本実施の形態においても、このような流れで通信が行われるものとして説明する。外部からコンテナ90、91へアクセスする際には、次のようにアクセスが行われる。すなわち、CaaS基盤(基盤システム9)の入り口を代表するロードバランサ21のIPアドレスと、CaaS基盤(基盤システム9)内のアクセスしたい機能を特定するポート番号又はパス名とを指定してアクセスが行われる。ロードバランサ21は、負荷分散のために、いずれかのVM(VM50又はVM51)に適切に負荷を振り分け、いずれかのVMの仮想NIC61へ通信を転送する。ネットワーク機能部70はコントローラ10から予め、ポート番号又はパス名がどのコンテナに対応するかを示す情報を与えられている。ネットワーク機能部70は、要求されたサービスを提供できるコンテナに対する適切な負荷分散をふまえながら、通信の宛先としてコンテナ90又は91のいずれかのIPアドレスに宛先を変換する。これにより、ネットワーク機能部70は、ブリッジ81を通して最終的にコンテナ90又は91へと通信を到達させる。NAT変換を利用しているため、折り返しの通信は適切に送信元へ戻すことができる。
【0029】
図6は、図3で示した実施の形態にかかる基盤システム5において、外部からコンテナに対し通信する流れを示す図である。なお、図6では、一例として、ロードバランサ22を介してコンテナへ通信する例である。すなわち、図6は、図4に示した論理ネットワーク102と接続しているアクセス元からコンテナへの通信の流れを示している。
【0030】
基盤システム5において、ロードバランサ21、仮想NIC61、ブリッジ81を介した通信は、図5を参照した上記説明と同様に行われる。すなわち、論理ネットワーク101と接続しているアクセス元からコンテナへの通信は、仮想NIC61を介してネットワーク機能部70に到達し、コントローラ10により設定された情報に基づいてブリッジ81を介してコンテナ90又は91に転送される。このとき、仮想NIC901にアクセスされる。基盤システム5においては、同様の動作が、ロードバランサ22、仮想NIC62、ブリッジ82を介した通信でも行われる。すなわち、論理ネットワーク102と接続しているアクセス元からコンテナへの通信は、仮想NIC62を介してネットワーク機能部70に到達し、コントローラ10により設定された情報に基づいてブリッジ82を介してコンテナ90又は91に転送される。このとき、仮想NIC902にアクセスされる。さらに、基盤システム5においては、同様の動作が、ロードバランサ23、仮想NIC63、ブリッジ83を介した通信でも行われる。すなわち、論理ネットワーク103と接続しているアクセス元からコンテナへの通信は、仮想NIC63を介してネットワーク機能部70に到達し、コントローラ10により設定された情報に基づいてブリッジ83を介してコンテナ90又は91に転送される。このとき、仮想NIC903にアクセスされる。このため、本実施の形態では、仮想NIC61が通信を受信した場合だけでなく、仮想NIC62が受信した場合、及び、仮想NIC63が受信した場合でも、上述した転送が可能となるように、コントローラ10は、設定を行う。つまり、コントローラ10は、NAT変換の定義情報、すなわち、ポート番号又はパス名とコンテナとの対応関係を示す情報を予めネットワーク機能部70に与える。このようにして外部に提供するコンテナの機能をネットワークに紐づけることで、コンテナの機能毎にネットワークを分離することが可能となる。
【0031】
このように、本実施の形態では、コントローラ10は、CaaS基盤(基盤システム5)の外部からコンテナへの通信が、コンテナの複数の仮想NICのうち当該通信で用いられる論理ネットワークに対応する仮想NICに転送されるように、NATの設定を行う。これにより、外部からコンテナへの通信において、複数のネットワークを使い分けることができる。
【0032】
ここで、コントローラ10は、特定のネットワークからアクセス不能となるように設定してもよい。これは、アクセスを禁止する経路については、コントローラ10がネットワーク機能部70にNAT変換のための情報を与えないことで、実現できる。例えばポート番号Xへのアクセスのうち、ロードバランサ22を通した通信によるアクセスを不能としたい場合を考える。この場合、コントローラ10が「宛先の仮想NIC62、ポート番号X」の通信をNAT変換する情報をネットワーク機能部70に与えなければ、ロードバランサ22が所属するネットワークからポートXの機能へアクセスすることはできなくなる。
【0033】
このように、コントローラ10は、CaaS基盤(基盤システム5)の外部からコンテナへの通信のうち、所定のアクセス先への通信についてアドレスの変換が行われないように、NATの設定を行ってもよい。このようにすることで、特定のネットワークからのアクセスを不能とすることができる。
【0034】
次に、コンテナから外部への通信について説明する。
図7は、図2で示した比較例にかかる基盤システム9において、コンテナから外部に向けて通信する流れを示す図である。この流れも一般的なCaaS基盤機能による通信の流れの1つであり、比較例及び本実施の形態においても、このような流れで通信が行われるものとして説明する。コンテナ90からCaaS基盤(基盤システム9)の外部、すなわちCaaS基盤の内部に存在しないIPアドレスへ通信する場合、コンテナに設定されたデフォルトゲートウェイであるブリッジ81に向けて通信が行われる。そして、ネットワーク機能部70によって、送信元が仮想NIC61のIPアドレスに変更され、VMから外部のIPアドレスに向けて通信が実施される。NAT変換を利用しているため、折り返しの通信は適切に送信元へ戻すことができる。
【0035】
これに対し、本実施の形態にかかる基盤システム5においては、コンテナから外部へネットワークを使い分けて通信するために、コントローラ10に次のような情報が予め登録されている。すなわち、コントローラ10には、宛先のサブネットと、論理ネットワークとを対応付けた情報が予め登録されている。図8は、宛先のサブネットと論理ネットワークとを対応付けた情報の例を示す表である。図8に示した例では、外部の宛先のサブネットAと、論理ネットワーク102とを対応付けており、外部の宛先のサブネットBと、論理ネットワーク103とを対応付けており、外部の宛先のサブネットCと、論理ネットワーク103とを対応付けている。コントローラ10は、図8のような対応関係を示す情報を入力として受け取り、入力を受けたコントローラ10はコンテナを起動する際に、宛先に対応するブリッジから通信が出ていくようにコンテナのルーティングテーブルを設定する。図9は、図8のような対応関係を示す情報がコントローラ10に登録された場合に、コントローラ10がコンテナの起動時に設定するルーティングテーブルの例を示している。図9に示すルーティングテーブルでは、外部の宛先のサブネットAと、ブリッジ82のIPアドレスとを対応付けている。また、このルーティングテーブルでは、外部の宛先のサブネットBと、ブリッジ83のIPアドレスとを対応付けており、外部の宛先のサブネットCと、ブリッジ83のIPアドレスとを対応付けている。これにより、例えば、外部への通信における宛先がサブネットAに属している場合、コンテナ90、91からの当該宛先への通信は、仮想NIC902及びブリッジ82を介して、ネットワーク機能部70に転送される。ネットワーク機能部70には、コントローラ10によって次のような設定が行われる。すなわち、ネットワーク機能部70は、送信元のブリッジのサブネットに従い、送信元を、当該ブリッジに対応する仮想NIC(すなわち、仮想NIC61、62、又は63のいずれか)のIPアドレスに変換するように設定されている。本実施の形態で示した例では、ブリッジ81のサブネットは仮想NIC61のIPアドレスに、ブリッジ82のサブネットは仮想NIC62のIPアドレスに、ブリッジ83のサブネットは仮想NIC63のIPアドレスに変換するよう設定されている。
【0036】
図10は、図3で示した実施の形態にかかる基盤システム5において、コンテナから外部へ通信する流れを示す図である。なお、図10では、一例として、仮想NIC62に繋がるネットワークを通して外部へ通信する際の流れを示している。上述の通り、事前にルーティング設定が行われているため、コンテナ90はブリッジ82に向けて通信を行う。この際にネットワーク機能部70は送信元を仮想NIC62のIPアドレスに変更し、VMから外部のIPアドレスに向けて通信を実施する。
【0037】
このように、本実施の形態では、コントローラ10は、コンテナからCaaS基盤(基盤システム5)の外部への通信について、アクセス先に応じた論理ネットワークを使うようにルーティングの設定を行う。そして、コントローラ10は、コンテナから外部への通信の送信元が、VMの複数の仮想NICのうち当該通信で用いられる論理ネットワークに接続する仮想NICのアドレスになるように、NATの設定を行う。これにより、コンテナから外部への通信において、複数のネットワークを使い分けることができる。
【0038】
ここで、コントローラ10は、コンテナを外部ネットワークに接続させないように設定してもよい。具体的には、コントローラ10が、コンテナ生成の際に、ネットワーク機能部70に対し、特定のブリッジからの通信をNATしないように設定することで、コンテナを外部ネットワークに接続させないことが可能となる。例えば特定のコンテナを仮想NIC62と繋がるネットワークに接続させたくない場合は、そのコンテナのIPアドレスが送信元の場合に変換を行わずドロップさせるようにすることで、そのコンテナは仮想NIC62から出ていく通信が実施できないようになる。
【0039】
このように、コントローラ10は、コンテナからCaaS基盤(基盤システム5)の外部への通信のうち、所定の送信元の通信についてアドレスの変換が行われないように、NATの設定を行ってもよい。このようにすることで、コンテナから外部への通信を制限することが可能となる。
【0040】
以上、実施の形態について説明した。上述した基盤システム5では、VMの複数のインターフェースを使い分けることで、VM上で動作するコンテナは、通信に利用する論理ネットワークを使い分けることができる。
特に、基盤システム5によれば、CaaS基盤が実現するスケール性及び柔軟性を維持したまま、用途に応じたネットワーク分離が実現できる。この結果、外部通信は適切に分離され、また分離に用いられるヘッダを利用したパフォーマンスマネジメントなども実現が可能になる。例えば重要な通信を1つの論理ネットワークに通し、その論理ネットワークの優先度をIaaSでのレイヤの操作で最大にすることで、一部の通信のみを最優先で通すといったことが可能になる。その理由としては、既存技術であるコンテナオーケストレーションの機能によってコンテナのスケール性及び柔軟性を維持したまま、コンテナの通信のインターフェースをIaaSにより提供されるネットワークに接続する構成を取ったことにある。また、基盤システム5によれば、分離されたネットワークとコンテナの紐づけを行い、ネットワーク毎に接続可能なコンテナ実装機能を管理できる。その理由は、外部からCaaS基盤に通信する際に用いられるVMの仮想NICや、コンテナから外部へ通信する際に用いられるブリッジをネットワークごとに設けることで、それらのIPアドレスに基づいたアクセス管理ができるようになったことにある。
【0041】
なお、物理サーバ30、31、コントローラ10、又はロードバランサ21、22、23についての上述した機能(処理)は、例えば次のような構成を有するコンピュータ500により実現されてもよい。
【0042】
図11は、一例として、物理サーバ30、31、コントローラ10、又はロードバランサ21、22、23の処理を実現するコンピュータ500の構成を示すブロック図である。図11に示すように、コンピュータ500は、メモリ501、及び、プロセッサ502を含む。
【0043】
メモリ501は、例えば、揮発性メモリ及び不揮発性メモリの組み合わせによって構成される。メモリ501は、プロセッサ502により実行される、1以上の命令を含むソフトウェア(コンピュータプログラム)などを格納するために使用される。
【0044】
プロセッサ502は、メモリ501からソフトウェア(コンピュータプログラム)を読み出して実行することで、物理サーバ30、31、コントローラ10、又はロードバランサ21、22、23の処理を行う。
【0045】
プロセッサ502は、例えば、マイクロプロセッサ、MPU(Micro Processor Unit)、又はCPU(Central Processing Unit)などであってもよい。プロセッサ502は、複数のプロセッサを含んでもよい。
【0046】
なお、上述したプログラムは、様々なタイプの非一時的なコンピュータ可読媒体(non-transitory computer readable medium)を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体(tangible storage medium)を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体(例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ)、光磁気記録媒体(例えば光磁気ディスク)、CD-ROM(Read Only Memory)CD-R、CD-R/W、半導体メモリ(例えば、マスクROM、PROM(Programmable ROM)、EPROM(Erasable PROM)、フラッシュROM、RAM(Random Access Memory))を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体(transitory computer readable medium)によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【0047】
以上、実施の形態を参照して本願発明を説明したが、本願発明は上記によって限定されるものではない。本願発明の構成や詳細には、発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【0048】
上記の実施形態の一部又は全部は、以下の付記のようにも記載され得るが、以下には限られない。
(付記1)
複数の仮想NIC(Network Interface Card)を有するコンテナを実行するためのリソースが実装され、異なる論理ネットワークに接続する複数の仮想NICを備えたVM(Virtual Machine)と、
前記VMの複数の前記仮想NICのそれぞれが前記コンテナのいずれかの前記仮想NICにつながる通信経路が構成されるよう制御するコントローラと
を有する基盤システム。
(付記2)
前記コントローラは、前記基盤システムの外部から前記コンテナへの通信が、前記コンテナの複数の前記仮想NICのうち当該通信で用いられる前記論理ネットワークに対応する前記仮想NICに転送されるように、NAT(Network Address Translation)の設定を行う
付記1に記載の基盤システム。
(付記3)
前記コントローラは、前記基盤システムの外部から前記コンテナへの通信のうち、所定のアクセス先への通信についてアドレスの変換が行われないように、前記NATの設定を行う
付記2に記載の基盤システム。
(付記4)
前記コントローラは、
前記コンテナから前記基盤システムの外部への通信について、アクセス先に応じた前記論理ネットワークを使うようにルーティングの設定を行い、
前記コンテナから前記基盤システムの外部への通信の送信元が、前記VMの複数の前記仮想NICのうち当該通信で用いられる前記論理ネットワークに接続する前記仮想NICのアドレスになるように、NATの設定を行う
付記1に記載の基盤システム。
(付記5)
前記コントローラは、前記コンテナから前記基盤システムの外部への通信のうち、所定の送信元の通信についてアドレスの変換が行われないように、前記NATの設定を行う
付記4に記載の基盤システム。
(付記6)
異なる論理ネットワークに接続する複数の仮想NICを備えたVMが、複数の仮想NICを有するコンテナを実行し、
コントローラが、前記VMの複数の前記仮想NICのそれぞれが前記コンテナのいずれかの前記仮想NICにつながる通信経路が構成されるよう制御する
通信方法。
【符号の説明】
【0049】
1 基盤システム
2 VM
3 コントローラ
5 基盤システム
9 基盤システム
10 コントローラ
21 ロードバランサ
22 ロードバランサ
23 ロードバランサ
30 物理サーバ
31 物理サーバ
40 仮想スイッチ
61 仮想NIC
62 仮想NIC
63 仮想NIC
70 ネットワーク機能部
81 ブリッジ
82 ブリッジ
83 ブリッジ
90 コンテナ
91 コンテナ
101 論理ネットワーク
102 論理ネットワーク
103 論理ネットワーク
111 ノード
112 ノード
113 ノード
500 コンピュータ
501 メモリ
502 プロセッサ
901 仮想NIC
902 仮想NIC
903 仮想NIC
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11