JP5930181B2 - 通信制御装置、通信制御方法および通信制御プログラム - Google Patents

通信制御装置、通信制御方法および通信制御プログラム Download PDF

Info

Publication number
JP5930181B2
JP5930181B2 JP2012063287A JP2012063287A JP5930181B2 JP 5930181 B2 JP5930181 B2 JP 5930181B2 JP 2012063287 A JP2012063287 A JP 2012063287A JP 2012063287 A JP2012063287 A JP 2012063287A JP 5930181 B2 JP5930181 B2 JP 5930181B2
Authority
JP
Japan
Prior art keywords
policy
data
communication control
network interface
computer environment
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2012063287A
Other languages
English (en)
Other versions
JP2013197919A (ja
Inventor
聡 辻
聡 辻
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP2012063287A priority Critical patent/JP5930181B2/ja
Publication of JP2013197919A publication Critical patent/JP2013197919A/ja
Application granted granted Critical
Publication of JP5930181B2 publication Critical patent/JP5930181B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Description

本発明は仮想化環境を導入した通信制御装置、通信制御方法および通信制御プログラムに関する。
サーバ仮想化技術が広く利用されるようになってきている。サーバ仮想化技術は、仮想化技術によって実現された論理的なコンピュータ(以下、仮想マシン)を用いて、物理的なサーバ機器上に仮想マシンで実現されたサーバを導入する技術である。サーバ仮想化技術を用いることで、例えば物理的なサーバ機器の台数を減らすことができる。
サーバ仮想化技術では、サーバを仮想化する仮想化環境を導入する必要があり、例えば、VMware社のVMware(登録商標)、Citrix社のXen Server(登録商標)、Microsoft社のHyper−Vなどが仮想化環境のための製品として提供されている。ただし、仮想化環境では、仮想マシンに仮想的なハードウェアを提供しているために、直接アクセスする場合に比べて性能が落ちるという難点がある。
この問題点を解決するために、CPUやチップセット、ネットワークインタフェースカードを中心に、仮想マシンを直接アクセス可能にする仮想化支援技術の導入が提案されている。たとえば、CPUやチップセットに組み込まれるIntel社のVT−dやAMD社のAMD−V、拡張デバイスに組み込まれるSR−IOV(Single Route-I/O Virtualization)といったものが挙げられる。これらの技術を利用することで、仮想マシンが直接ハードウェアを扱えるようになるため、仮想化環境であっても高い性能を得ることができる。
また、仮想化環境における通信ネットワーク(ネットワーク)に関する処理に関しては、仮想化支援技術を用いない場合、ネットワークインタフェースカードで受信したパケットが仮想化環境の管理領域を経由して適切な仮想マシンに配送される。管理領域内には、ソフトウェアで実現された仮想的なネットワークスイッチ(仮想スイッチ)が存在し、仮想マシンとの通信を中継する機能を提供する。しかしながら、全てのパケットが仮想スイッチを経由するため、ネットワークの負荷が上がると管理領域の負荷も上昇してしまうという問題点がある。この問題についても、仮想化支援技術を用いることで、解決することができる。
このような、仮想化支援技術の例として、Microsoft社のVMQ(Virtual Machine Queue)が非特許文献1に記載されている。VMQでは、VMQに対応したネットワークインタフェースカードを用いる。このVMQではネットワークインタフェースカードに備えられた受信用のキューを各仮想マシンに割り当て、ネットワークから届いたパケットのパケットヘッダの情報を用いてどの受信キューに受信するかを決定する。受信用のキューに格納されたパケットはキューに対応付けられた仮想マシンに直接転送される。パケットが仮想マシンに直接転送されるため、管理領域に負荷をかけることなく仮想マシンへのパケット転送が可能となる。
また、非特許文献2には、このような仮想化支援技術を利用した仮想スイッチ処理のオフローディング技術が開示されている。仮想スイッチ処理では、仮想化環境またはネットワーク管理者の管理ポリシに従って、通信フロー単位でパケットを「管理領域を通過させる」あるいは「直接ネットワークインタフェースカードに転送する」という切り替えを動的に行う。非特許文献2のオフローディング技術では、複数の仮想インタフェースを備えたネットワークインタフェースカードを利用する。より詳しくは、各仮想マシンに仮想インタフェースを割り当て、ネットワークインタフェースカードに搭載されたネットワークインタフェースコントローラにてIP(Internet Protocol)アドレスなどのパケットヘッダの情報に従って仮想インタフェースを選択し、仮想インタフェースを経由して仮想マシンにパケットを配送する。
Ali Dabagh, Don Stanwyck、"Virtual Machine Queue Architecture Review"、Availablefrom http://download.microsoft.com/download/d/1/d/d1dd7745-426b-4cc3-a269-abbbe427cOef/net-t719_ddcO8.pptx 辻 聡、飯星 貴裕、狩野 秀一、"vswitch処理の動的オフロード方式の実装と評価"、電子情報通信学会技術研究報告 vol.111、No.43、NS2011−29、pp.69−74、2011年5月
しかしながら、上述した非特許文献1、2に開示された技術には、いくつか解決すべき課題がある。まず、ネットワークインタフェースコントローラが備えるパケット配送先決定機能によって、識別可能な通信フローの粒度が制限されてしまうことである。例えば、非特許文献1の技術では、パケットの宛先MAC(Media Access Control)アドレスとVLAN(Virtual LAN)Tagに従って受信キューを選択する。ところがイーサネット(登録商標)とTCP/IPを用いたネットワークでは、MACアドレスやVLAN Tagの他に、IPアドレス、L4ポート番号、L4プロトコルといった情報がパケットヘッダに含まれている。
したがって、同じ宛先MACアドレス宛てのパケットであっても、特定のL4ポート番号を持つパケットのみを仮想マシンに直接転送することは、ネットワークインタフェースコントローラがその粒度で受信キューを選択する機能を持たない限り、非特許文献1の技術では実現することができない。
さらに、パケットが管理領域を経由しないで仮想マシンに直接転送されると、管理領域は仮想マシンがどのような通信を行っているかを知ることができない。このために、ポリシに合わないパケットが流れていたとしても、それに応じた処理を実行することができなくなる。
また、上記パケットヘッダだけでなく、パケットのデータ部の情報を用いてパケットの配送先を決定することも考えられる。例えば、パケットのデータ部に含まれるHTTP(Hyper Text Transport Protocol)のリクエストに含まれるURL(Uniform Resource Locator)に応じてパケットの配送先を決定することが挙げられる。すなわち、仮想化環境やネットワークの管理者のポリシによって、パケットの配送先を制御する粒度が異なるという課題が存在する。
そこで、本発明の目的は、ネットワーク管理者のポリシに従ったパケットの配送制御が、ネットワークインタフェースの機能により制限されることなく、実行可能となる通信制御装置、通信制御方法および通信制御プログラムを提供することにある。
本発明による通信制御装置は、計算機環境とネットワークインタフェースとを備える通信制御装置であって、前記ネットワークインタフェースが、あらかじめ設定されたデータ識別情報に従って、ネットワークから受信したデータの転送先である計算機環境を決定する転送制御手段を有し、前記ネットワークインタフェースから転送されたデータに対して、所定のポリシが登録されたスレーブポリシテーブルを参照して、前記転送されたデータへの前記所定のポリシの適用を管理する、前記計算機環境に対応して設けられたポリシ管理手段と、前記スレーブポリシテーブルのマスタポリシテーブルを有し、前記計算機環境および前記ポリシ管理手段を管理する管理手段と、を有し、前記ポリシ管理手段が、前記転送されたデータに適用するポリシに関するエントリが存在しない場合、前記管理手段に対して前記転送されたデータに関する問い合わせを行い、前記管理手段が前記問い合わせに応じたポリシ処理を前記ポリシ管理手段へ送信する、ことを特徴とする。
本発明による通信制御方法は、計算機環境と、前記計算機環境を管理する管理手段と、前記計算機環境のネットワークインタフェースとを備える通信制御装置における通信制御方法であって、前記ネットワークインタフェースが、あらかじめ設定されたデータ識別情報に従って、ネットワークから受信したデータの転送先である計算機環境を決定し、前記計算機環境に対応して設けられたポリシ管理手段が前記ネットワークインタフェースから転送されたデータに対して、所定のポリシが登録されたスレーブポリシテーブルを参照して、前記転送されたデータへの前記所定のポリシの適用を管理し、前記転送されたデータに適用するポリシに関するエントリが存在しない場合に、前記管理手段に対して前記転送されたデータに関する問い合わせを行い、前記管理手段が、前記スレーブポリシテーブルのマスタポリシテーブルを参照して、前記問い合わせに応じたポリシ処理を前記ポリシ管理手段へ送信する、ことを特徴とする。
本発明による通信制御プログラムは、計算機環境と、前記計算機環境を管理する管理手段と、前記計算機環境のネットワークインタフェースとを備える通信制御装置におけるコンピュータを機能させるプログラムであって、前記ネットワークインタフェースが、あらかじめ設定されたデータ識別情報に従って、ネットワークから受信したデータの転送先である計算機環境を決定し、前記計算機環境に対応して設けられたポリシ管理手段が前記ネットワークインタフェースから転送されたデータに対して、所定のポリシが登録されたスレーブポリシテーブルを参照して、前記転送されたデータへの前記所定のポリシの適用を管理し、前記転送されたデータに適用するポリシに関するエントリが存在しない場合に、前記管理手段に対して前記転送されたデータに関する問い合わせを行い、前記管理手段が、前記スレーブポリシテーブルのマスタポリシテーブルを参照して、前記問い合わせに応じたポリシ処理を前記ポリシ管理手段へ送信するように前記コンピュータを機能させることを特徴とする。


本発明によれば、ネットワークインタフェースの機能によって制限されることなく、ネットワーク管理者のポリシに従ったパケットの配送制御を実行することができる。
図1は本発明の第1実施形態による通信制御装置の機能構成を示すブロック図である。 図2は図1に示す通信制御装置の動作を示すシーケンス図である。 図3はネットワークインタフェースカードの動作を示すフローチャートである。 図4は仮想マシンの動作の一部を示すフローチャートである。 図5は仮想マシンの動作の一部を示すフローチャートである。 図6は管理領域の動作を示すフローチャートである。 図7は本発明の第2実施形態による通信制御装置の機能構成を示すブロック図である。 図8は図7に示す通信制御装置の動作を示すシーケンス図である。 図9はオフロード管理領域の動作の一部を示すフローチャートである。 図10はオフロード管理領域の動作の一部を示すフローチャートである。 図11は管理領域の動作を示すフローチャートである。 図12は本発明の第3実施形態による通信制御装置の機能構成を示すブロック図である。
以下で説明する本発明の実施形態によれば、仮想マシン(仮想計算機)がポリシに従ってデータ処理を行う際に、当該ポリシに合致しないデータについては管理領域へ問い合わせ、管理領域のポリシ制御に従って当該データ処理を実行する。より具体的には、実施形態による通信制御装置は、ユーザが使用する計算機環境と、それを管理する管理領域と、計算機環境から直接アクセス可能なネットワークインタフェースと、を備え、計算機環境および管理領域は計算機環境が送受信するデータへ適用するポリシをスレーブポリシテーブルで管理する第1ポリシ管理手段とマスタポリシテーブルで管理する第2ポリシ管理手段とをそれぞれ備えている。第1ポリシ管理手段はデータの送受信の際に、スレーブポリシテーブルを参照し、該当するエントリが存在しない場合には、管理領域に問い合わせを行う。問い合わせを受けた管理領域はマスタポリシテーブルを参照し、その参照結果を第1ポリシ管理手段に送信する。このように、計算機環境に係るデータの送受信の際に、管理領域のポリシを適用できるような構成を採用することで、上述した課題を解決することができる。すなわち、ネットワークインタフェースの機能により、管理者が意図したポリシに従ったデータ配送制御に制限がかかる場合でも、管理者の意図通りにポリシを適用できるようになる。以下、図面を参照しながら本発明の実施形態について詳細に説明する。
1.第1実施形態
1.1)システム構成
図1に示すように、本実施形態による通信制御装置1aは、ネットワークインタフェースカード2(以下、NIC2と記す。)および仮想化環境3からなる。NIC2は、仮想化環境3のインターネット等のネットワークに対する物理的なインタフェースであり、サーバやPC(Personal Computer)が備えるPCI−Express等の拡張スロットに装着されるカードとしての形態の他に、チップセットに組み込まれる形態あるいは独立したチップとしてマザーボードに搭載される形態などが考えられる。
NIC2は、NICコントローラ20、仮想インタフェース22、フローテーブル24、および管理インタフェース26を含む。NICコントローラ20は、パケットの送受信を制御するコントローラであり、仮想化環境3内の仮想マシン(ローカル仮想マシン)にパケットを転送する際、フローテーブル24を参照して、使用する仮想インタフェース22を選択する。
仮想インタフェース22は仮想化環境3とNIC2とのインタフェースであり、1つ以上備えられる。この仮想インタフェース22の物理アドレスを仮想マシンに通知することで、仮想マシンはNIC2に直接アクセス可能となる。
フローテーブル24は、ローカル仮想マシン宛てのパケットに関して、パケットヘッダなどの通信フローを識別する情報と転送すべき仮想インタフェースとを対応付けたテーブルであり、NICコントローラ20がパケットの配送先を決定するために使用する。仮想化環境3は、管理インタフェース26を通してフローテーブル24にアクセスすることができ、エントリの追加や削除といった操作が可能である。
管理インタフェース26は仮想化環境3からフローテーブル24を操作するために利用されるインタフェースである。管理インタフェース26から直接フローテーブル24を操作することもできるが、管理インタフェース26へのアクセスに応じてNICコントローラ20がフローテーブル24に対する操作を実行することもできる。
仮想化環境3は複数の仮想マシン4aおよび管理領域(Control Domain)5から構成される。仮想化環境3は、汎用のPCやサーバなどに導入され、管理領域5によって管理される。管理領域5は、各仮想マシン4aに対して、PCやサーバが備えるCPUやメモリ、I/Oといった資源を仮想的に割り当てる。
さらに、仮想化環境3は、管理領域5が仮想マシン4aの管理を行うために、管理領域5に対して、管理操作を行うための管理用データ通信の仕組みを提供する。このデータ通信の仕組みの例として、共有メモリを採用することが考えられる。この共有メモリの仕組みはVMwareやXenServerなど、一般に広く流通している仮想化環境で一般的に用いられている。また、仮想マシン4a同士が高速にデータを送受信するために共有メモリの仕組みを用いることもでき、XenServerでは、XVMSocketライブラリが存在する。
仮想マシン4aは、vCPU(virtual Central Processing Unit)40、メモリ41、仮想ネットワークインタフェース42、および管理インタフェース(Management Interface)46を有する。仮想マシン4aでは、仮想マシンのユーザによるアプリケーションプロセスが稼働する。また、メモリ41には、管理領域5の管理者が定めるポリシをセットするためのスレーブポリシテーブル44が構成される。なお、仮想マシン4aには、必要に応じて、I/O機能などが更に設けられてもよい。
vCPU40は、管理領域5によって割り当てられた仮想的なCPUである。物理的な実CPUと直接対応付けられる場合もあれば、同一の実CPUを複数の仮想マシン4aで共有する場合もある。これは仮想化環境3に依存する。
vCPU40では、OS(Operating System)や様々なアプリケーションプロセスが稼働する。OSではプロセス同士あるいは仮想マシン4a同士が通信を行うための通信機能が提供される。一般的には、この通信機能は、通信機能を提供するために必要なプロトコルを実現するモジュールを階層的に積み上げたプロトコルスタックとして提供される。
メモリ41は、管理領域5によって仮想マシン4aに割り当てられたメモリ領域である。vCPU40が処理を実行する上で、アプリケーションコードやデータを保存するために用いられる。
仮想ネットワークインタフェース42は、仮想化環境3によって仮想マシン4aに仮想的に提供されたインタフェースであり、パケットの送受信機能を仮想マシン4aに提供する。仮想ネットワークインタフェース42は、仮想マシン4aに必要に応じて1つ以上備えられる。仮想ネットワークインタフェース42はNIC2の仮想インタフェース22および管理領域5の仮想スイッチ52に接続される。
スレーブポリシテーブル44は、メモリ41内に構築されるテーブル状のデータ構造を有し、管理領域5により設定された、仮想化環境3の管理者のポリシを保持する。このポリシには、パケットヘッダのような通信フローを識別する情報とその情報を持つパケットに対する処理とが含まれる。通信フローを識別する情報として、パケットヘッダ以外にパケットのデータ部の特定範囲のデータを用いることもできる。
スレーブポリシテーブル44は、パケットの送受信時に、パケットに対して行う処理を決定するために使用される。パケットに対する処理として、ネットワークからパケットを受信した際には、「パケットをアプリケーションプロセスに渡す」、アプリケーションプロセスからデータを送信する際には、「仮想ネットワークインタフェース42を介して、仮想インタフェース22にパケットを転送する」、「仮想ネットワークインタフェース42を介して管理領域5にパケットを転送する」、両方の通信方向に共通する処理として、「パケットをドロップさせる」、「パケットヘッダを書き換える」といったことが例として挙げられる。
スレーブポリシテーブル44は、あらかじめエントリを追加しておくことも可能であるが、パケットの送受信のたびに必要に応じて、エントリを追加しておく運用方法も考えられる。この場合、スレーブポリシテーブル44は、管理領域5に備えられるマスタポリシテーブル54のサブセットとなる。スレーブポリシテーブル44に該当するエントリが登録されていない場合は、管理インタフェース46を通じて管理領域5に問い合わせを行い、該当するパケットの処理内容に関する情報を取得する。
管理インタフェース46は、ポリシについての情報を仮想マシン4aと管理領域5との間で送受信するためのインタフェースである。例えば、スレーブポリシテーブル44にエントリが登録されていないパケットを送受信する際に、どのような処理を適用するかの問い合わせや、そのレスポンスの送受信に使用される。この管理インタフェース46の実現形態の1つとして、仮想化環境3が提供する、仮想マシン4aと管理領域5との間の共有メモリ領域を用いることが考えられる。この管理インタフェース46は、仮想ネットワークインタフェース42として実現することも考えられる。
管理領域5は、仮想化環境3を管理するための領域であり、一般的な仮想化環境では、ハイパーバイザー等と呼ばれる。管理領域5は、フローコントローラ(Flow Controller)50、仮想スイッチ(Virtual Switch)52、マスタポリシテーブル(Master Policy Table)54と、を含む。フローコントローラ50は、フローテーブル24やスレーブポリシテーブル44を制御するためのコントローラである。これらのテーブルを操作する際に、マスタポリシテーブル54を参照し、テーブルのエントリの追加や削除を行う。
仮想スイッチ52は、ソフトウェアで実現された仮想的なスイッチであり、仮想化支援技術を利用しない場合に、仮想マシン4aに対してパケットスイッチングの機能を提供する。仮想スイッッチ52は、各仮想マシン4aと接続されているだけでなく、仮想インタフェース22のうちの少なくとも一つに接続される。
マスタポリシテーブル54は、仮想化環境3の管理者のポリシを保持するテーブルである。このテーブルに記憶される情報は、スレーブポリシテーブル44と同様の構成をとる。マスタポリシテーブル54は、管理者の設定した全てのポリシを保持する。なお、マスタポリシテーブル54は、管理領域5の内部に備えられる代わりに、ネットワークを介して外部ノードに備えられることも可能である。この場合、仮想マシン4aからのポリシに関する問い合わせは、管理領域5を経由するなどしてネットワークを介して行われるが、本質的な動作に違いはない。
1.2)動作
次に図2〜図6を参照しながら、本実施形態によるシステムの動作を詳細に説明する。なお、本実施形態では、仮想インタフェース22が各仮想マシン4aに予め割り当てられ、フローテーブル24は、仮想マシン4a宛てのパケットが仮想インタフェース22を経由して仮想マシン4aに直接配送されるように設定されているものとする。この設定を行う手法についての説明は、非特許文献2に示されているので省略する。
また、本実施形態では、説明を容易にするために、フローテーブル24に登録可能な通信フローの識別情報を、非特許文献1に合わせて宛先MACアドレスとVLAN Tagのみであると仮定する。さらに、マスタポリシテーブル54やスレーブポリシテーブル44で保持されるポリシの通信フローの識別情報は、宛先MACアドレスとVLAN Tagに加えて、宛先IPアドレス、送信元IPアドレス、宛先L4ポート番号、送信元L4ポート番号、L4プロトコルで構成されるものとする。ただし、フローテーブル24、マスタポリシテーブル54およびスレーブポリシテーブル44に登録する通信フローの識別情報は、これらに限定されるものではない。
a)システム動作
図2において、まず、NIC2がパケットをネットワークから受信する(ステップS200)。次に、NIC2は、パケットヘッダに含まれる宛先MACアドレスとVLAN Tagの情報を用いてフローテーブル24を参照し、パケットの出力先となる仮想インタフェース22を選択する(ステップS201)。続いて、NIC2は、選択した仮想インタフェース22を通じてパケットを適切な仮想マシン4aに配送する(ステップS202)。
仮想インタフェース22から仮想ネットワークインタフェース42を通してパケットを受信すると、仮想マシン4aは、受信したパケットのヘッダを用いてスレーブポリシテーブル44を参照し、該当するエントリが登録されているか否かをチェックする(ステップS203)。スレーブポリシテーブル44に該当するエントリが登録されている場合(ステップ203の「有り」)、仮想マシン4aは、そのエントリに含まれる処理をパケットに対して実行する(ステップS204)。スレーブポリシテーブル44に該当するエントリが存在しない場合(ステップ203の「なし」)、仮想マシン4aは管理インタフェース46を通じて管理領域5に問い合わせを行う(ステップS205)。問い合わせの内容には、少なくともスレーブポリシテーブル44で管理する通信フローの識別に使用する情報が含まれている。
仮想マシン4aから問い合わせを受けた管理領域5は、当該問い合わせに含まれる通信フローの識別情報を用いて、マスタポリシテーブル54を参照し、問い合わせのあった通信フローに属するパケットに対する処理内容を決定する(ステップS206)。続いて、管理領域5は決定した処理内容を問い合わせ元の仮想マシン4aに通知する(ステップS207)。
仮想マシン4aは、管理領域5から通知された処理内容にしたがってパケットを処理し、スレーブポリシテーブル44に問い合わせを行った通信フローの識別情報と処理内容とを登録する(ステップS208,S209)。
b)ネットワークインタフェスカード(NIC)の動作
図3において、NICコントローラ20は、ネットワークからパケットを受信したか否かを判定し(ステップS300)、パケットを受信していない場合には(ステップS300のNo)、パケットの受信を待機する。パケットを受信した場合(ステップS300のYes)、NICコントローラ20はパケットヘッダの情報からフローテーブル24を参照し、パケットの出力先となる仮想インタフェース22を決定する(ステップS301)。NICコントローラ20は、決定した仮想インタフェース22を通じて、適切な仮想マシン4aにパケットを転送する(ステップS302)。
c)仮想マシンの動作
図4において、vCPU40は、仮想ネットワークインタフェース42を通してNIC2からパケットが転送されてきたか否かを判定する(ステップS400)。パケットを受信していない場合には(ステップS400のNo)、パケットの受信を待機する。パケットが転送されてきた場合(ステップS400のYes)、vCPU40は、パケットヘッダの情報からスレーブポリシテーブル44を参照し(ステップS401)、ポリシに合ったパケットであるか否か、つまり、このパケットが属する通信フローに該当するエントリが存在するか否かを判定する(ステップS402)。
スレーブポリシテーブル44に該当するエントリが存在しない場合(ステップS402のNo)、vCPU40は、通信機能(プロトコルスタック)を用いて管理インタフェース46を通し管理領域5に問い合わせを行い(ステップS403)、管理領域5からの応答を待つ(ステップS404)。問い合わせには通信フローの識別に使用する情報が含まれ、管理領域5からの応答には、少なくとも問い合わせの識別子と問い合わせ対象の通信フローに属するパケットに対する処理内容が含まれる。
管理領域5から問い合わせに対する応答があれば(ステップS404のYes)、vCPU40は、当該応答に含まれる処理内容に従ってパケットを処理し(ステップS405)、スレーブポリシテーブル44に当該問い合わせを行った通信フローの識別情報と処理内容とを登録する(ステップS406)。なお、ステップS405とステップS406とは独立であるため、並行して実行することも、実行順を逆にすることも可能である。
ステップS402において、受信したパケットが属する通信フローがスレーブポリシテーブル44に登録されている場合(ステップS402のYes)、vCPU40は当該エントリに記載されている処理内容にしたがってパケットを処理する(ステップS407)。
図5に示すように、仮想マシン4aで稼働するアプリケーションプロセスなどがデータ転送要求を出した場合には(ステップS408のYes)、vCPU40は、データ転送要求に従ってパケットを構築し(ステップS409)、構築したパケットに対して図4のステップS401以降の処理を実行する。データ転送要求は、例えば、アプリケーションプロセスがソケットインタフェースを使用してOSにシステムコールを発行することでなされる。
d)管理領域の動作
図6において、フローコントローラ50は、仮想マシン4aから問い合わせがあったかどうかを判定する(ステップS500)。問い合わせがなければ(ステップS500のNo)、仮想マシンからの通知を待つ。問い合わせがあれば(ステップS500のYes)、フローコントローラ50は、パケットヘッダの情報からマスタポリシテーブル54を参照し、問い合わせのあったパケットの属する通信フローに対する処理を決定する(ステップS501)。そして、フローコントローラ50は、問い合わせを行った仮想マシン4aに対して処理内容を通知する(ステップS502)。
なお、仮想マシン4aと管理領域5との間で、通過パケット数などの、通信フローの統計情報を管理インタフェース46を通じて送受信し、統計情報に応じて、管理領域5がスレーブオフロードポリシの内容を変更する要求を仮想マシン4aに出すことも考えられる。
1.3)効果
上述したように、本実施形態によれば、仮想マシン4aにポリシを管理するスレーブポリシテーブル44が設けられ、パケットの送受信時に仮想マシン内のポリシを参照し、一致するエントリが存在しない場合に管理領域5に問い合わせる。したがって、ネットワークインタフェースカード(NIC)2の機能上の制限によらず、仮想化環境の管理者のポリシに従って通信フローの制御を行うことができる。
2.第2実施形態
以下、本発明の第2実施形態による通信制御装置の構成および動作について説明するが、図1に示す第1実施形態と同じ機能構成を有するブロックには同一参照番号を付して説明は簡略化する。
2.1)システム構成
図7に示すように、本実施形態による通信制御装置1bは、NIC2および仮想化環境3bからなる。NIC2の機能構成は、第1実施形態と同じであるから同一の参照番号を付して説明は省略する。
仮想化環境3bは、複数の仮想マシン4bと、オフロード管理領域6と、管理領域5と、を有する。第1実施形態と異なるのは仮想マシン4bおよびオフロード管理領域6であるが、機能が第1実施形態と同一であるブロックには同一の参照番号を付し詳細な説明を省略する。
各仮想マシン4bは、vCPU40と、メモリ41と、オフロードインタフェース48とから構成される。仮想マシン4bでは仮想マシンのユーザによるアプリケーションプロセスが稼動する。なお、仮想マシン4bには、その構成に応じて、I/O機能などが設けられてもよい。
オフロードインタフェース48は、オフロード管理領域6とのインタフェースであり、仮想化支援技術を使用してデータを送受信するのに用いられる。このデータとしては、仮想マシン4b上でOSが稼動し通信機能が提供されている場合、通信プロトコルに従ったパケットなどが考えられる。本実施形態では、説明を簡潔にするために、仮想マシン4bとオフロード管理領域6との間のデータは、仮想マシン4b上で稼動するOSがサポートする通信プロトコルに従ったパケットであるとする。ここで通信プロトコルは例えばTCP/IPである。オフロードインタフェース48の実現手段としては、仮想化環境3が提供する共有メモリ領域を利用することや、オフロード管理領域6と仮想マシン4bとを仮想ネットワークインタフェースを用いて接続しデータの送受信に用いること、などが考えられる。
オフロード管理領域6は、オフロードコントローラ60と、仮想ネットワークインタフェース42と、管理インタフェース46と、スレーブポリシテーブル44と、から構成される。オフロードコントローラ60以外の構成要素は第1実施形態の仮想マシン4aの構成要素と同様であるから同一の参照番号を付して詳細な説明を省略する。スレーブポリシテーブル44は、第1実施形態と同様にメモリ内に構築されたデータ構造であってもよい。
オフロード管理領域6は、仮想マシン4bに対して少なくとも1つ備えられ、ネットワークと仮想マシン4bとの間に位置してパケットの中継を行う。仮想マシン4bがデータを送信する際は、vCPU40にて構築されたパケットを、オフロードコントローラ60で処理する際に、スレーブポリシテーブル44を参照し、パケットに対してポリシに従った処理を実行する。スレーブポリシテーブル44に有効なエントリが登録されていない場合は、管理インタフェース46を通じて管理領域5に問い合わせを行う。
また、オフロード管理領域6は、パケットに対して、仮想化環境の管理者またはネットワーク管理者のポリシを適用する処理を行う。オフロード管理領域6の管理者は、仮想化環境3bの管理者と同一であることが望ましいが、本実施形態では、少なくとも仮想マシン4bの管理者とは異なるものとする。オフロード管理領域6は、たとえば、仮想マシン4bとは異なる仮想マシンとして実現することも考えられる。
NIC2がパケットを受信し仮想マシン4bにパケットを転送する場合、NIC2からのパケットをオフロード管理領域6が受け取る。オフロード管理領域6のオフロードコントローラ60は、スレーブオフロードテーブル44を参照し、パケットに対してポリシに従った処理を実行する。スレーブポリシテーブル44に有効なエントリが登録されていない場合は、管理インタフェース46を通じて管理領域5に問い合わせを行う。スレーブポリシテーブル44に登録されている処理内容は、第1実施形態と同様に処理される。
2.2)動作
次に図8〜図11を参照しながら、本実施形態によるシステムの動作を詳細に説明する。なお、本実施形態では、仮想インタフェース22が各オフロード管理領域6に予め割り当てられ、仮想マシン4b宛のパケットは仮想インタフェース22を経由してオフロード管理領域6に直接配送されるようにフローテーブル24が設定されているものとする。フローテーブル24、マスタポリシテーブル54およびスレーブポリシテーブル44に登録可能なフローの識別情報の条件は第1実施形態の場合と同様である。
a)システム動作
図8において、NIC2の処理(S200−S202)は、図2に示す第1実施形態の場合と同様であるから、同一の参照符号を付して詳細な説明を省略する。
オフロード管理領域6は、NIC2からパケットを受信すると、パケットヘッダの情報を用いてスレーブポリシテーブル44を参照し、該当するエントリがスレーブポリシテーブル44に登録されているかどうかをチェックする(ステップS601)。スレーブポリシテーブル44に該当するエントリが登録されていれば(ステップS601の「有り」)、そのエントリに含まれる処理をパケットに対して実行する(ステップS602)。スレーブポリシテーブル44にエントリが登録されていない場合には(ステップS601の「なし」)、オフロード管理領域6は、管理インタフェース46を通じて管理領域5に問い合わせを行う(ステップS603)。問い合わせの内容には、少なくともスレーブポリシテーブル44で管理する通信フローの識別に使用する情報が含まれている。
オフロード管理領域6から問い合わせを受けると、管理領域5は、当該問い合わせに含まれる通信フローの識別情報を用いて、マスタポリシテーブル54を参照し、問い合わせのあった通信フローに属するパケットに対する処理内容を決定する(ステップS604)。続いて、管理領域5は、決定した処理内容を問い合わせ元のオフロード管理領域6に通知する(ステップS605)。
管理領域5から当該通信フローに対する処理内容を受け取ると、オフロード管理領域6は通知された処理内容にしたがってパケットを処理し(ステップS606)、続いて管理インタフェース46を通じてスレーブポリシテーブル44に当該問い合わせを行った通信フローの識別情報と処理内容とを登録する(ステップS607)。
b)オフロード管理領域の動作
図9において、オフロードコントローラ60は、NIC2からパケットが転送されてきたかどうかを判定する(ステップS700)。パケットが転送されてきていない場合には(ステップS700のNo)、パケットの受信を待つ。パケットが転送されてきた場合には(ステップS700のYes)、オフロードコントローラ60は、パケットヘッダの情報からスレーブポリシテーブル44を参照し(ステップS701)、ポリシに合ったパケットであるかどうか、つまり、このパケットが属する通信フローに該当するエントリが存在するかどうか判定する(ステップS702)。
スレーブポリシテーブル44に該当するエントリが存在しない場合(ステップS702のNo)、オフロードコントローラ60は、管理インタフェース46を通じて管理領域5に問い合わせを行う(ステップS703)。問い合わせの内容には、少なくともスレーブポリシテーブル44で通信フローの識別に使用する情報が含まれている。
問い合わせを行った後、オフロードコントローラ60は、管理領域5から応答があったかどうかを判定する(ステップS704)。管理領域5からの応答には、少なくとも問い合わせの識別子と問い合わせ対象の通信フローに属するパケットに対する処理内容が含まれる。管理領域5から応答が届いていない場合には(ステップS704のNo)、応答を待つ。管理領域5から応答があれば(ステップS704のYes)、オフロードコントローラ60は、応答に含まれる処理内容に従ってパケットを処理し(ステップS705)、管理インタフェース46を通じて、当該問い合わせを行った通信フローの識別情報と処理内容とをスレーブポリシテーブル44に登録する(ステップS706)。ステップS705およびS706の処理は独立であるため、並行して実行することも、実行順序を反対にすることも可能である。
受信パケットが属する通信フローがスレーブポリシテーブル44に登録されている場合(ステップS702のYes)、オフロードコントローラ60は、当該エントリに記載されている処理内容にしたがってパケットを処理する(ステップS707)。
図10に示すように、仮想マシン4bで稼働するアプリケーションプロセスなどがデータ転送要求を出した場合(ステップS708のYes)、オフロードコントローラ60は、図9のステップS701以降の処理を実行する。
c)管理領域の動作
図11において、フローコントローラ50は、オフロード管理領域6から問い合わせがあったか否かを判定する(ステップS800)。問い合わせがない場合には(ステップS800のNo)、問い合わせを待つ。問い合わせがあると(ステップS800のYes)、フローコントローラ50は、パケットヘッダの情報からマスタポリシテーブル54を参照し、問い合わせのあったパケットの属する通信フローに対する処理を決定する(ステップS801)。続いて、フローコントローラ50は、問い合わせを行ったオフロード管理領域6に対して処理内容を通知する(ステップS802)。
2.3)効果
本実施形態によれば、通信フローの制御機能を仮想マシンからオフロード管理領域に分離させることで、管理主体が仮想マシンとオフロード管理領域と分けられ、仮想マシンの負荷を軽減することができる。また、このことによって仮想化環境の管理者、またはネットワーク管理者のポリシを、仮想マシンに対して確実に適用することができるようになる。つまり、仮想マシンの管理者が、仮想化環境の管理者、またはネットワーク管理者のポリシに合わない通信フローの制御を行うことを防ぐことができる。
3.第3実施形態
図7に示す第2実施形態では、1つのオフロード管理領域6が1つの仮想マシン4bに対応づけられているが、本発明はこれに限定されるものではない。
図12に示すように、本実施形態による通信制御装置1cの仮想化環境3cでは、1つのオフロード管理領域6が複数の仮想マシン4bに対するポリシ制御を行うように構成される。具体的には、あるオフロード管理領域6が2以上の仮想マシン4bと接続されており、これらの2以上の仮想マシン4b宛てのパケットに対するポリシ制御をオフロード管理領域6が実行してもよい。
また、仮想化環境3cが提供する共有メモリなどの仕組みを用いてオフロード管理領域6同士のオフロードコントローラ60が直接データ転送を行えるようにすることで、同一仮想化環境3c内に存在する仮想マシン4b同士のデータ転送を管理領域5を介さずに行うことも可能である。
本実施形態によれば、上述した第2実施形態と同様に、通信フローの制御機能を仮想マシンからオフロード管理領域に分離させることで、管理主体が仮想マシンとオフロード管理領域と分けられ、仮想マシンの負荷を軽減することができる。また、このことによって仮想化環境の管理者、またはネットワーク管理者のポリシを、仮想マシンに対して確実に適用することができるようになる。つまり、仮想マシンの管理者が、仮想化環境の管理者、またはネットワーク管理者のポリシに合わない通信フローの制御を行うことを防ぐことができる。さらに、オフロード管理領域6同士が直接データ転送を行えるようにすることで、仮想マシン4b同士のデータ転送を管理領域5を介さずに行うことが可能となり、管理領域5の負荷も軽減される。
本発明は、計算機環境と、計算機環境を管理する管理領域と、ネットワークインタフェースと、を備える通信制御装置に適用可能である。また、仮想化環境の管理者と仮想マシンの管理者が異なる場合に、仮想化環境の管理者の管理ポリシで運用する通信装置に適用できる。
1a,1b,1c 通信制御装置
2 ネットワークインタフェースカード(NIC)
3a、3b、3c 仮想化環境
4a,4b 仮想マシン
5 管理領域
6 オフロード管理領域
20 ネットワークインタフェースコントローラ
22 仮想インタフェース
24 フローテーブル
26 管理インタフェース
40 vCPU
41 メモリ
42 仮想ネットワークインタフェース
44 スレーブポリシテーブル
46 管理インタフェース
48 オフロードインタフェース
50 オフロードコントローラ
52 仮想スイッチ
54 マスタポリシテーブル
60 オフロードコントローラ

Claims (9)

  1. 計算機環境とネットワークインタフェースとを備える通信制御装置であって、
    前記ネットワークインタフェースが、あらかじめ設定されたデータ識別情報に従って、ネットワークから受信したデータの転送先である計算機環境を決定する転送制御手段を有し、
    前記ネットワークインタフェースから転送されたデータに対して、所定のポリシが登録されたスレーブポリシテーブルを参照して、前記転送されたデータへの前記所定のポリシの適用を管理する、前記計算機環境に対応して設けられたポリシ管理手段と、
    前記スレーブポリシテーブルのマスタポリシテーブルを有し、前記計算機環境および前記ポリシ管理手段を管理する管理手段と、
    を有し、
    前記ポリシ管理手段が、前記転送されたデータに適用するポリシに関するエントリが存在しない場合、前記管理手段に対して前記転送されたデータに関する問い合わせを行い、前記管理手段が前記問い合わせに応じたポリシ処理を前記ポリシ管理手段へ送信する、ことを特徴とする通信制御装置。
  2. 前記管理手段が、前記スレーブポリシテーブルに、前記マスタポリシテーブルに従った通信フローの識別情報と当該通信フローに適用すべき処理情報とを設定する、ことを特徴とする請求項1に記載の通信制御装置。
  3. 前記計算機環境、前記ポリシ管理手段および前記管理手段が仮想化環境を用いて構築され、前記仮想化環境と前記計算機環境とが前記ネットワークインタフェースに直接アクセス可能であることを特徴とする請求項1または2に記載の通信制御装置。
  4. 前記ポリシ管理手段が、前記計算機環境に含まれることを特徴とする請求項1−3のいずれか1項に記載の通信制御装置。
  5. 前記ポリシ管理手段が、前記計算機環境と前記ネットワークインタフェースとの間に設けられた通信フロー制御手段に含まれることを特徴とする請求項1−3のいずれか1項に記載の通信制御装置。
  6. 計算機環境と、前記計算機環境を管理する管理手段と、前記計算機環境のネットワークインタフェースとを備える通信制御装置における通信制御方法であって、
    前記ネットワークインタフェースが、あらかじめ設定されたデータ識別情報に従って、ネットワークから受信したデータの転送先である計算機環境を決定し、
    前記計算機環境に対応して設けられたポリシ管理手段が前記ネットワークインタフェースから転送されたデータに対して、所定のポリシが登録されたスレーブポリシテーブルを参照して、前記転送されたデータへの前記所定のポリシの適用を管理し、前記転送されたデータに適用するポリシに関するエントリが存在しない場合に、前記管理手段に対して前記転送されたデータに関する問い合わせを行い、
    前記管理手段が、前記スレーブポリシテーブルのマスタポリシテーブルを参照して、前記問い合わせに応じたポリシ処理を前記ポリシ管理手段へ送信する、
    ことを特徴とする通信制御方法。
  7. 前記ポリシ管理手段は、通信フローの識別情報と当該通信フローに適用すべき処理情報とが登録された前記スレーブポリシテーブルを参照することでポリシ適用管理を行ことを特徴とする請求項6に記載の通信制御方法。
  8. 前記計算機環境、前記ポリシ管理手段および前記管理手段が仮想化環境を用いて構築され、前記仮想化環境と前記計算機環境とが前記ネットワークインタフェースに直接アクセス可能であることを特徴とする請求項6または7に記載の通信制御方法。
  9. 計算機環境と、前記計算機環境を管理する管理手段と、前記計算機環境のネットワークインタフェースとを備える通信制御装置におけるコンピュータを機能させるプログラムであって、
    前記ネットワークインタフェースが、あらかじめ設定されたデータ識別情報に従って、ネットワークから受信したデータの転送先である計算機環境を決定し、
    前記計算機環境に対応して設けられたポリシ管理手段が前記ネットワークインタフェースから転送されたデータに対して、所定のポリシが登録されたスレーブポリシテーブルを参照して、前記転送されたデータへの前記所定のポリシの適用を管理し、前記転送されたデータに適用するポリシに関するエントリが存在しない場合に、前記管理手段に対して前記転送されたデータに関する問い合わせを行い、
    前記管理手段が、前記スレーブポリシテーブルのマスタポリシテーブルを参照して、前記問い合わせに応じたポリシ処理を前記ポリシ管理手段へ送信する、
    ように前記コンピュータを機能させることを特徴とするプログラム。
JP2012063287A 2012-03-21 2012-03-21 通信制御装置、通信制御方法および通信制御プログラム Active JP5930181B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2012063287A JP5930181B2 (ja) 2012-03-21 2012-03-21 通信制御装置、通信制御方法および通信制御プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012063287A JP5930181B2 (ja) 2012-03-21 2012-03-21 通信制御装置、通信制御方法および通信制御プログラム

Publications (2)

Publication Number Publication Date
JP2013197919A JP2013197919A (ja) 2013-09-30
JP5930181B2 true JP5930181B2 (ja) 2016-06-08

Family

ID=49396329

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012063287A Active JP5930181B2 (ja) 2012-03-21 2012-03-21 通信制御装置、通信制御方法および通信制御プログラム

Country Status (1)

Country Link
JP (1) JP5930181B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016056210A1 (ja) * 2014-10-10 2016-04-14 日本電気株式会社 サーバ、フロー制御方法および仮想スイッチ用プログラム
JP6333498B1 (ja) 2017-03-31 2018-05-30 三菱電機株式会社 情報処理装置および情報処理方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011068091A1 (ja) * 2009-12-04 2011-06-09 日本電気株式会社 サーバ及びフロー制御プログラム
JP5402688B2 (ja) * 2010-02-02 2014-01-29 日本電気株式会社 パケット転送システム、パケット転送システム内におけるパケット集中回避方法

Also Published As

Publication number Publication date
JP2013197919A (ja) 2013-09-30

Similar Documents

Publication Publication Date Title
US11934341B2 (en) Virtual RDMA switching for containerized
US10635474B2 (en) Systems and methods for virtio based optimization of data packet paths between a virtual machine and a network device for live virtual machine migration
US10402341B2 (en) Kernel-assisted inter-process data transfer
US8769040B2 (en) Service providing system, a virtual machine server, a service providing method, and a program thereof
JP5222651B2 (ja) 仮想計算機システムおよび仮想計算機システムの制御方法
US9274825B2 (en) Virtualization gateway between virtualized and non-virtualized networks
US9086907B2 (en) Apparatus and method for managing virtual machine addresses
US20150095505A1 (en) Resolving network address conflicts
JP2016009486A (ja) ソフトウェア確定ネットワークにおける仮想マシンと仮想化コンテナを用いたローカルサービスチェーン
KR20120008474A (ko) 개방 가상화 형식 메타데이터 기반 네트워크 구성 및/또는 프로비저닝을 위한 방법 및 시스템
CN105262685A (zh) 一种报文处理方法和装置
Garzarella et al. Virtual device passthrough for high speed VM networking
JP2010061283A (ja) ロードバランサ設定プログラム,ロードバランサ設定方法及びロードバランサ設定装置
CN112910685B (zh) 实现对容器网络统一管理的方法及装置
CN110830574B (zh) 一种基于docker容器实现内网负载均衡的方法
US10116515B2 (en) Binding application communication ports to dynamic subsets of network interfaces
US20220239632A1 (en) Load balancing and secure tunneling for cloud-based network controllers
JP2014195178A (ja) 情報処理装置、送信制御方法および送信制御プログラム
JP5930181B2 (ja) 通信制御装置、通信制御方法および通信制御プログラム
US9559865B2 (en) Virtual network device in a cloud computing environment
US11635970B2 (en) Integrated network boot operating system installation leveraging hyperconverged storage
US10261921B2 (en) Universal secure platform virtualization system and method thereof
US11038954B2 (en) Secure public connectivity to virtual machines of a cloud computing environment
US11431569B2 (en) Communication apparatus, system, rollback method, and non-transitory medium
US11722368B2 (en) Setting change method and recording medium recording setting change program

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150205

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20151008

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20151021

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20151221

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20160406

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160419

R150 Certificate of patent or registration of utility model

Ref document number: 5930181

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150