JP2017108231A - 通信制御プログラム、通信制御方法及び情報処理装置 - Google Patents
通信制御プログラム、通信制御方法及び情報処理装置 Download PDFInfo
- Publication number
- JP2017108231A JP2017108231A JP2015239153A JP2015239153A JP2017108231A JP 2017108231 A JP2017108231 A JP 2017108231A JP 2015239153 A JP2015239153 A JP 2015239153A JP 2015239153 A JP2015239153 A JP 2015239153A JP 2017108231 A JP2017108231 A JP 2017108231A
- Authority
- JP
- Japan
- Prior art keywords
- virtual
- virtual machine
- machine
- transmission
- communication
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/70—Virtual switches
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45579—I/O management, e.g. providing access to device drivers or storage
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45587—Isolation or security of virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45595—Network integration; Enabling network access in virtual machine instances
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Information Transfer Systems (AREA)
- Computer And Data Communications (AREA)
Abstract
【課題】ホストカーネルによる処理負担を軽減する。【解決手段】仮想スイッチのポート間の通信データ転送先情報を含む構成情報に、共通の物理マシンに生成された第1仮想マシンと第2仮想マシン間の1対1通信の設定を検出すること、1対1通信の設定を検出したとき、第1仮想マシンの送信バッファと第2仮想マシンの受信バッファを同じバッファ領域に、第1仮想マシンの受信バッファと第2仮想マシンの送信バッファを同じバッファ領域にそれぞれ設定すること、を有する処理をコンピュータに実行させる通信制御プログラム。【選択図】図7
Description
本発明は,通信制御プログラム、通信制御方法及び情報処理装置に関する。
情報処理装置であるコンピュータまたはサーバなどの物理マシンに、複数の仮想マシンを起動、生成、削除することで、様々なサービスシステムを構築することが行われる。それに伴い、物理マシンのOS(Operating System)のカーネル(ホストカーネル)内のソフトウエアによる仮想スイッチ機能を利用して、複数の仮想マシン間及び複数の仮想マシンと外部ネットワークとの間で所望のネットワークが構築される。
仮想化ソフトウエアにより複数の仮想マシンを動的に生成、削除することに対応するために、カーネルの仮想スイッチ機能により仮想マシンのネットワークを動的に生成、変更することが必要になる。
一方、近年のネットワーク業界において、上記のようにネットワーク機能をソフトウエア化(仮想ネットワーク機能、VNF: Virtual Network Function)し、汎用サーバ上の仮想マシンで実現するネットワーク機能の仮想化(NFV: Network Function Virtualization)の開発が進められている。NFVによるサービス提供形態としては、例えば各仮想マシンに異なる仮想ネットワーク機能を配備する形態がある。これを利用することで、外部ネットワークから受信したデータをサービスの内容に応じた適切な順序で複数の仮想マシンに転送することができ、柔軟なサービスを実現することが可能になる。
ネットワークや仮想スイッチについては、以下の特許文献1、2に記載されている。
しかしながら、提供するサービスの追加や仮想マシンの移動などにより仮想マシンの数が増加するに伴い、仮想マシン間の通信量が増大する傾向にある。仮想マシン間の通信量が増大すると、カーネル内の仮想スイッチ機能の負担が増大し、カーネルが過負荷状態になる可能性が高くなる。カーネルは、仮想マシン間の仮想スイッチ機能だけでなく、仮想スイッチ以外のプロセスの通信機能も有するので、仮想スイッチ機能の負担増大は、他の通信性能に影響を及ぼし、通信レスポンスの遅延やパケットロスが発生することがある。
そこで,開示の第1の側面の目的は,仮想スイッチ機能の負担を軽減する通信制御プログラム、通信制御方法及び情報処理装置を提供することにある。
開示の第1の側面は,仮想スイッチのポート間の通信データ転送先情報を含む構成情報に、共通の物理マシンに生成された第1仮想マシンと第2仮想マシン間の1対1通信の設定を検出すること、前記1対1通信の設定を検出したとき、前記第1仮想マシンの送信バッファと前記第2仮想マシンの受信バッファを同じバッファ領域に、前記第1仮想マシンの受信バッファと前記第2仮想マシンの送信バッファを同じバッファ領域にそれぞれ設定すること、を有する処理をコンピュータに実行させる通信制御プログラムである。
第1の側面によれば,仮想スイッチ機能の負担を軽減できる。
図1は、仮想ネットワーク機能により形成された仮想マシンのネットワーク機能の一例を示す図である。図1には、複数のユーザ端末11,12が、キャリア網17を介してウエブサーバ16にアクセスする構成例が示されている。そして、キャリア網17内に物理マシンであるサーバ13,14,15が配置され、サーバ13に複数の仮想マシンVM#0〜VM#3が配備されている。共通のサーバ13に配備された4つの仮想マシンそれぞれに、サーバ13のOSのカーネルにある仮想スイッチ機能により所望のネットワークが構築される。その結果、図1に示されるように、仮想マシンVM#0から仮想マシンVM#1,VM#3宛のパケットの送信と、仮想マシンVM#1から仮想マシンVM#2宛てのパケットの送信と、仮想マシンVM#2から異なる物理マシン14へのパケットの送信と、仮想マシンVM#3から異なる物理マシン15へのパケットの送信が可能になる。
例えば、仮想マシンVM#0にロードバランサLBのプログラムを実行させ、仮想マシンVM#1,3にファイアウオールFWのプログラムを実行させ、仮想マシンVM#2に命令検出システムを構築する場合、次の動作が可能になる。すなわち、各ユーザ端末からウエブサーバ16宛てのアクセス要求を、仮想マシンVM#0が仮想マシンVM#1,3に均等に振り分け、仮想マシンVM#1,3でファイアウオールの処理を行い、仮想マシンVM#2でコンピュータやネットワークに対する不正行為をデータの内容及びデータのやりとり手順から検出し、それぞれサーバ14,15を経由してウエブサーバ16に届ける。
図1において、同じサーバ13に生成された仮想マシンVM#1とVM#2との間には、1対1通信のネットワークが構築されている。この1対1通信のネットワークは、サーバ13のカーネルがもつ仮想ネットワーク機能により構築される仮想スイッチで構成される。
図2は、仮想マシンと仮想スイッチによる仮想ネットワークの第1の例を示す図である。図2では、図示しない物理マシンに2つの仮想マシンVM#1とVM#2とが生成されている。具体的には、ハイパーバイザHVが仮想マシンの構成情報に基づいて仮想マシンVM#1,VM#2を起動、生成する。
各仮想マシンVM#1、VM#2は、仮想マシンに構成された仮想的なネットワークインターフェース(vNIC:Virtual Network Interface Card、以下単に仮想NICと称する。)vNIC#1,vNIC#2と、それを駆動する仮想デバイスドライバ(virtual IO)virtio#1, virtio#2と、仮想デバイスドライバの仮想送受信キューvQUE#1, vQUE#2を有する。仮想デバイスドライバは、仮想NICを経由するデータの送受信を制御する。
また、物理マシンであるホストマシンのOSのホストカーネルHKは、仮想スイッチ機能により仮想スイッチvSWを構成する。仮想スイッチは、物理マシンのホストカーネル内のソフトウエアにより構築される仮想的なスイッチであり、例えば、L2スイッチである仮想ブリッジや、L3スイッチである仮想スイッチなどである。仮想ブリッジは、ブリッジインスタンスに設けられるポートの情報を保持する。
図2の例では、仮想スイッチvSWは仮想マシンVM#1,VM#2の仮想NIC間を接続するブリッジを構成する仮想ブリッジインスタンスbr0である。この仮想スイッチvSWは、仮想ネットワーク構成情報vNW_cfgに基づいて構築され、図2中の仮想ネットワーク構成情報vNW_cfgは、1つの仮想ブリッジインスタンスbr0のポート間の接続情報を有する。仮想ブリッジインスタンスbr0は、このポート間の接続情報に基づくホストカーネルHKによる制御によって、通信データの中継、転送を行う。
さらに、ホストカーネルHKは、仮想NICと仮想スイッチvSW間の通信データの受け渡しを行うバックエンドドライバvhost#1,vhost#2と、仮想マシンの仮想的な送受信キューである仮想キューvQUE#1,vQUE#2と物理マシンの実体的な送受信キューである物理キューpQUE#1, pQUE#2との間のアドレス変換テーブルA_TBL#1,A_TBL#2を有する。物理送受信キューは一種のFIFOによる待ち行列であり、実体はサーバのメモリ上に構成され、仮想マシンVM#1,VM#2は自身のアドレス空間にマッピングされた物理送受信キューを使用する。
また、ハイパーバイザHVは、仮想NICからのデータ通信のイベントを検出し、バックエンドドライバvhost#1, vhost#2に送信処理依頼を発行し、バックエンドドライバからデータ受信の通知を受けると対応する仮想NICに受信通知の割込を発行する。
仮想ネットワーク構成情報vNW_cfgによれば、仮想ブリッジインスタンスbr0は2つのポートvnet#1, vnet#2のみ有し、それらのポートは仮想マシンの仮想NICにそれぞれ接続される。(換言するとポート名vnet#1, vnet#2が仮想NICに接続されることを示している。)したがって、図2の例では、仮想マシンVM#1の仮想NIC(vNIC#1)と仮想マシンVM#2の仮想NIC(vNIC#2)とは、1対1通信を行う。つまり、仮想マシンVM#1の仮想NIC(vNIC#1)からの送信データは仮想マシンVM#2の仮想NIC(vNIC#2)により受信され、逆に、仮想マシンVM#2の仮想NIC(vNIC#2)からの送信データは仮想マシンVM#1の仮想NIC(vNIC#1)により受信される。仮想スイッチvSWは、仮想マシンVM#1の仮想NIC(vNIC#1)と仮想マシンVM#2の仮想NIC(vNIC#2)間を直接接続する仮想ネットワークを構築する。この例は、図1の仮想マシンVM#1とVM#2との間のネットワークに対応する。
図2による仮想マシンVM#1からVM#2へ仮想スイッチvSWを経由した通信処理の概略は次のとおりである。
S1:データ送信側の仮想マシンVM#1はデータを送出する仮想NIC(vNIC#1)の仮想デバイスドライバvirtio#1に対してデータの送信処理を依頼し、仮想デバイスドライバは送信データを仮想送受信キューvQUE#1に書き込む。
S2:ホストカーネルHKは、アドレス変換テーブルA_TBL#1を参照して送信データの書き込み先を示す仮想マシンのアドレスを物理マシンのアドレスに変換し、送信データを物理マシン内の送受信キューpQUE#1に書き込む。
S3:送信側の仮想デバイスドライバvirtio#1が、上記の送信データの書き込みと共に、仮想NIC(vNIC#1)経由で送信通知を出力する。
S4:送信通知に応答して、ハイパーバイザHVは、送信イベントを、仮想NIC(vNIC#1)に対応するバックエンドドライバvhost#1に出力し、送信処理を依頼する。
S5:バックエンドドライバvhost#1は、物理マシンの送受信キューpQUE#1からデータを取得し、仮想スイッチvSWに出力する。
S6:仮想スイッチvSWは、仮想ネットワーク構成情報vNW_cfgから送信データの出力先のポートvnet#2を決定し、決定した出力先のポートvnet#2とつながるバックエンドドライバvhost#2に対してデータを渡す。この仮想スイッチvSW(仮想ブリッジbr0)の動作は、ホストカーネルHKの仮想スイッチソフトウエアにより実行される。
S7:バックエンドドライバvhost#2は、ポートvnet#2とつながる仮想NIC(VNIC#2)に対応する物理マシンの送受信キューpQUE#2にデータを書き込み、ハイパーバイザHVに対して受信通知を行う。
S8:ハイパーバイザHVは、バックエンドドライバvhost#2に対応する仮想NIC(vNIC#2)を有する仮想マシンVM#2に対してデータの受信通知の割込を発行する。
S8、S9:受信側の仮想NICの仮想デバイスドライバvirtio#2は、仮想送受信キューvQUE#2から受信データを読み出す要求を発行し、アドレス変換テーブルA_TBL#2にしたがってアドレス変換されて物理マシンの物理送受信キューpQUE#2からデータを取得する。
図2には、仮想NIC(vNIC#1)側のアドレス変換テーブルA_TBL#1と、仮想NIC(vNIC#2)側のアドレス変換テーブルA_TBL#2とが示されている。仮想NIC(vNIC#1)側のアドレス変換テーブルA_TBL#1には、仮想マシンVM#1の送信キューアドレスvTx#1、受信キューアドレスvRx#1に対する、物理マシンの送信キューアドレスpTx#1、受信キューアドレスpRx#1が記憶されている。仮想NIC(vNIC#2)側のアドレス変換テーブルA_TBL#2も同様である。
図3は、仮想マシンと仮想スイッチによる仮想ネットワークの第2の例を示す図である。図3は、図2と異なり、仮想スイッチvSWが、仮想マシンVM#1の仮想NIC(vNIC#1)と物理NIC(pNIC#1)とを接続する仮想ブリッジbr1と、仮想マシンVM#2の仮想NIC(vNIC#2)と物理NIC(pNIC#2)とを接続する仮想ブリッジbr2とを有する。それ以外の構成は、図2と同じである。
仮想スイッチvSWの構成を定義する仮想ネットワーク構成情報vNW_cfgは、2つのブリッジインスタンスbr1,br2のポート情報を有する。ブリッジインスタンスbr1は、ポート名がvnet#1とpNIC#1であり、ポート名vnet#1は仮想NIC(vNIC#1)に接続されることを、ポート名pNIC#1は物理pNIC#1に接続されることを意味する。同様に、ブリッジインスタンスbr2は、ポート名がvnet#2とpNIC#2であり、ポート名vnet#2は仮想NIC(vNIC#2)に接続されることを、ポート名pNIC#2は物理pNIC#2に接続されることを意味する。これらのブリッジインスタンスはいずれも一種のL2スイッチである。しかし、これらのブリッジインスタンスは2つのポートしかないので、仮想マシンVM#1,VM#2の各vNIC#1, vNIC#2と物理NIC(pNIC#1, pNIC#2)との間でそれぞれ1対1通信を行うブリッジである。
なお、上記の例では、ポート名はブリッジのポートを特定すると共にポート名によって仮想NICか物理NICかが区別可能にされている。また、物理NICは図示しない外部ネットワークに接続される。
この仮想ブリッジbr1により、仮想マシンVM#1の仮想NIC(vNIC#1)と物理NIC(pNIC#1)との間で送信データ及び受信データの送受信が行われる。すなわち、仮想マシンVM#1がデータを送出する仮想NIC(vNIC#1)の仮想デバイスドライバvirtio#1に対してデータの送信処理を依頼すると、バックエンドドライバvhost#1からの送信データが物理NIC(pNIC#1)に出力される。逆に、物理NIC(pNIC#1)がデータを受信すると、バックエンドドライバvhost#1を経由して仮想マシンVM#1の仮想NIC(vNIC#1)に通知され、受信データが仮想デバイスドライバvirtio#1に受信される。
仮想ブリッジbr2による送信と受信も仮想ブリッジbr1と同様である。
図4は、仮想マシンと仮想スイッチによる仮想ネットワークの第3の例を示す図である。図4の第3の例では、図示しない物理マシンに3つの仮想マシンVM#1, VM#2, VM#3が起動(生成)され動作中である。これら仮想マシンそれぞれの仮想NIC(vNIC#1,vNIC#2,vNIC#3)は、ハイパーバイザHVを介してホストカーネルHKのバックエンドドライバvhost#1, vhost#2, vhost#3とそれぞれ接続される。そして、仮想ブリッジ(L2スイッチ)br3はこれら仮想NIC間の仮想ネットワークvNWを構築する。一般に、L2スイッチはブリッジと称される。また、後述するL3スイッチはスイッチと称される。
図4に示された仮想ネットワーク構成情報vNW_cfgは、仮想ブリッジbr3のブリッジインスタンスbr3の構成を有する。これによれば、ブリッジインスタンスbr3は3つのポートvnet#1, vnet#2, vnet#3を有する。さらに、マックアドレステーブルMC_TBLは、各ブリッジのポートvnet#1, vnet#2, vnet#3にそれぞれ接続される仮想NICのマックアドレスMAC#1, MAC#2, MAC#3を規定する。したがって、図4の仮想ネットワークvNWは、マックアドレステーブルMC_TBLを参照して、各ポートに入力される送信パケットを、その送信先マックアドレスに応じて対応するポートに出力する。
図4の第3の例では、仮想ネットワークvNWは、図2の第1の例のように1対の仮想NIC間の1対1通信を行うものではなく、3つの仮想NIC間を送信先マックアドレスに基づいてルーティングするL2スイッチである。
図5は、仮想マシンと仮想スイッチによる仮想ネットワークの第4の例を示す図である。図5の第4の例は、図4と同様に、物理マシンに3つの仮想マシンVM#1, VM#2, VM#3が起動、生成され、それら仮想マシンの仮想NIC(vNIC#1, vNIC#2, vNIC#3)間の仮想ネットワークvNWが、仮想スイッチvSW0により構築されている。各仮想マシンの仮想NIC(vNIC#1, vNIC#2, vNIC#3)は、それぞれ図示されるIPアドレスを有する。つまり、仮想スイッチvSW0は、外部のネットワークに対してIPアドレス192.168.10.xを有し、仮想スイッチvSW0による仮想ネットワークvNW内の3つの仮想NIC(vNIC#1, vNIC#2, vNIC#3)は、それぞれ異なるIPアドレス192.168.10.1, 192.168.10.2, 192.168.10.3を有する。
仮想ネットワークvNWを構成する仮想スイッチvSW0は、仮想ネットワーク構成情報vNW_cfg_3の入力ポートと出力ポートおよびプロトコル種別(TPC)と送信元IPアドレスと送信先IPアドレスを有するパケットのフロー情報にしたがって、入力するパケットの出力先ポートを決定してパケットをルーティングするL3スイッチである。
図5に示される仮想ネットワーク構成情報vNW_cfg_3は、フロー情報1として、入力ポート名vnet#1(仮想NIC(vNIC#1)に接続されるポート)、出力ポート名vnet#2(仮想NIC(vNIC#2)に接続されるポート)、送信元IPアドレス192.168.10.1、送信先IPアドレス192.168.10.2を有する。このフロー情報1によれば、仮想スイッチvSW0は、入力ポートvnet#1に入力された送信元IPアドレス192.168.10.1、送信先IPアドレス192.168.10.2のパケットを、出力ポートvnet#2にルーティングする。フロー情報2も同様であり、仮想スイッチvSW0は、入力ポートvnet#1に入力された送信元IPアドレス192.168.10.1、送信先IPアドレス192.168.10.3のパケットを、出力ポートvnet#3にルーティングする。
したがって、この仮想スイッチvSW0は、3つの仮想マシンVM#1, VM#2, VM#3それぞれの仮想NIC(vNIC#1, vNIC#2, vNIC#3)間の、vNIC#1からvNIC#2への経路1と、vNIC#1からvNIC#3への経路2を有するスイッチであり、図2のような1対1通信ではない。
一方、仮想ネットワーク構成情報vNW_cfg_3が図5の1つのフロー情報のみを有する場合は、図2のような1対1通信を行う仮想スイッチになる。
[仮想スイッチの課題]
上記のように、仮想ネットワークを構成する仮想スイッチは、L2スイッチ(ブリッジ)またはL3スイッチのいずれかの構成を有する。そして、仮想スイッチは、ホストカーネルHKが有する仮想スイッチプログラムによってパケットのスイッチング制御を実行する。
上記のように、仮想ネットワークを構成する仮想スイッチは、L2スイッチ(ブリッジ)またはL3スイッチのいずれかの構成を有する。そして、仮想スイッチは、ホストカーネルHKが有する仮想スイッチプログラムによってパケットのスイッチング制御を実行する。
したがって、物理マシンに生成される仮想マシンの数が増大すると、ホストカーネルHKの負荷が増大する。ホストカーネルHKは仮想マシンの仮想ネットワークを構成する仮想スイッチだけでなく、他のプロセスによる仮想スイッチも制御する。そこで、ホストカーネルHKによる仮想ネットワーク、仮想スイッチの制御の負荷を軽減する必要がある。
[本実施の形態]
図6は、本実施の形態における情報処理装置である物理マシン(サーバ)の構成を示す図である。図6の物理マシン20は、例えば、図1のサーバ13である。図6の物理マシン20は、プロセッサ(CPU)21と、メインメモリ22と、バス23と、IOバスコントローラ24とそれに接続されるHDDのような大容量で不揮発性の補助メモリ25と、IOバスコントローラ26とそれに接続されるネットワークインターフェース27(物理NIC)pNICを有する。
図6は、本実施の形態における情報処理装置である物理マシン(サーバ)の構成を示す図である。図6の物理マシン20は、例えば、図1のサーバ13である。図6の物理マシン20は、プロセッサ(CPU)21と、メインメモリ22と、バス23と、IOバスコントローラ24とそれに接続されるHDDのような大容量で不揮発性の補助メモリ25と、IOバスコントローラ26とそれに接続されるネットワークインターフェース27(物理NIC)pNICを有する。
補助メモリ25は、ホストカーネルHKを有するホストOS(Operating System)と、仮想マシンの起動、削除を行う仮想化ソフトウエアであるハイパーバイザHVとを記憶する。プロセッサ21は、ホストOSやハイパーバイザHVをメインメモリ22に展開して実行する。また、補助メモリ25は、ハイパーバイザHVが起動、生成する仮想マシンVM#1, VM#2のイメージファイルを記憶する。ハイパーバイザHVは、図示しない管理サーバや管理者端末からの起動指示に応じて、仮想マシンのイメージファイル内のゲストOSを起動し仮想マシンを起動する。
仮想マシンのイメージファイルには、ゲストOSや仮想マシンが実行するアプリケーションプログラムなどが含まれ、ゲストOSは仮想デバイスドライバやそれに対応する仮想NICなどを有する。
図7は、本実施の形態における物理マシンの仮想マシンとホストカーネルHKの構成を示す図である。図7の例では、2つの仮想マシンVM#1, VM#2が物理マシン(図示せず)に生成されている。仮想マシンVM#1は仮想デバイスドライバvirtio#1とその仮想NIC(vNIC#1)、仮想キュー(仮想送受信バッファ)vQUE#1を有する。同様に、仮想マシンVM#2は仮想デバイスドライバvirtio#2とその仮想NIC(vNIC#2) 、仮想キュー(仮想送受信バッファ)vQUE#2を有する。
図2で説明したとおり、仮想NICは仮想マシンに構成された仮想的なネットワークインターフェースカードであり、仮想デバイスドライバvirtioは仮想NICを経由するデータの送受信を制御する仮想マシン上のデバイスドライバである。また、仮想キューは仮想的なキューであり、仮想マシン上のアドレスに対応する。
ハイパーバイザHVは、物理マシン上に仮想マシンを起動し制御し削除する。ハイパーバイザHVは、仮想マシンと物理マシンとの間の動作を制御する。図7中のハイパーバイザHVは、仮想NICからの送信依頼に応答して物理マシン側のホストカーネルHK内のバックエンドドライバvhostに送信処理依頼を発行するイベント通知機能と、バックエンドドライバからデータ受信の通知を受けると対応する仮想NICに受信通知の割込を発生する割込発生機能とを有する。バックエンドドライバvhostは、仮想マシンの仮想NIC毎に生成される。
また、本実施の形態では、ハイパーバイザHVのイベント通知機能と割り込み発生機能は、仮想NIC間の直接パスが設定されている仮想NICからのデータ送信を検出すると、バックエンドドライバに送信処理依頼を発行せずに、直接パスの相手側の仮想NICに受信通知の割込を発生する。
一方、ホストカーネルHKは、仮想マシンの仮想デバイスドライバvirtioが送信データを仮想マシン上のアドレスにより仮想キューvQUEの送信キュー(送信バッファ)に書き込むと、アドレス変換テーブルA_TBLに基づいて、仮想マシン上のアドレスを物理マシン上のアドレスに変換し、物理マシン内の共有メモリに確保した物理キューpQUEの送信キュー(送信バッファ)に書き込む。逆に、バックエンドドライバvhostが物理キューpQUEに受信データを書き込んでハイパーバイザHVに受信通知を出力すると、ハイパーバイザHVの割り込み発生機能が受信割込を仮想NICに発行し、仮想デバイスドライバvirtioが仮想キューvQUEの受信キュー内の受信データを読み出した場合、ホストカーネルHKは、アドレス変換テーブルA_TBLに基づいて、仮想マシン上のアドレスを物理マシン上のアドレスに変換する。それにより、仮想デバイスドライバが物理キュー内の受信データを取得する。
仮想ネットスイッチvSWは、ホストカーネルHK内のプログラムにより構成される仮想のスイッチである。図7の仮想スイッチvSWは、仮想マシンVM#1の仮想NIC(vNIC#1)と仮想マシンVM#2の仮想NIC(vNIC#2)とに接続される。そして、仮想スイッチの構成が、仮想ネットワーク構成情報vNW_cfgに設定される。仮想ネットワーク構成情報vNW_cfgの種々の例は図2〜図5に示したとおりである。
さらに、各仮想NICの構成情報が仮想NIC情報テーブルvNIC_TBLに設定される。仮想NIC情報テーブルvNIC_cfgは、後述するとおり、各仮想NIC毎に対応するバックエンドドライバの識別子と、仮想スイッチに接続されるポート名(ポート識別子)と、各仮想NICに割り当てられる物理マシン内のメモリ領域に確保された物理キューのアドレスと、各仮想NICに設定された直接パスの相手側の仮想NICの識別子などを有する。
本実施の形態のホストカーネルHKは、VM間直接パス管理プログラム30を有する。VM間直接パス管理プログラム30は、仮想ネットワークの変更を検出する仮想ネットワーク変更検出部31と、変更された仮想ネットワークの構成情報から2つの仮想マシン間の直接パスが設定されているかを判定する直接パス設定判定部32と、直接パス設定判定部の判定結果に応じて直接パスの設定が新たに作成されていれば直接パスを作成し、既存の直接パスの設定が変更されて直接パスが消滅されていれば直接パスを削除する直接パス作成・削除部33とを有する。
これらのVM直接パス管理プログラム30については後で詳述する。
図8は、図7において直接パスが設定されていない場合の2つの仮想マシンとホストカーネルの構成を示す図である。図8内のアドレス変換テーブルA_TBL#1,A_TBL#2と、仮想ネットワーク構成情報vNW_cfgのブリッジインスタンスbr0のポート名は、図2と同じである。但し、図8には、仮想NIC情報テーブルvNIC_TBLが示されている。また、図8には、物理送受信キュー(送受信バッファ)pQUE#1, pQUE#2に送信キュー(送信バッファ)と受信キュー(受信バッファ)がそれぞれの物理マシンのアドレスpTx#1,vRx#1、pTx#2,vRx#2と共に示され、仮想送受信キューは実際に書き込まれないため示されていない。
仮想NIC情報テーブルvNIC_TBLには、仮想マシンVM#1の仮想NIC(vNIC#1)と仮想マシンVM#2の仮想NIC(vNIC#2)それぞれの情報が設定される。図8の例によれば、仮想NIC(vNIC#1)の情報は、仮想NIC(vNIC#1)に対応する仮想スイッチvSWのポート識別子vnet#1と、対応するバックエンドドライバの識別子vhost#1と、送受信キューの物理マシンのメモリアドレスpTx#1、pRx#1とが設定されている。
図8では、仮想NIC情報テーブルvNIC_TBLに直接パスが設定されておらず、図2と同様の動作で仮想マシンVM#1の仮想NIC(vNIC#1)と仮想マシンVM#2の仮想NIC(vNIC#2)との間で通信が実行される。その動作は、図2で説明したとおりである。図8中には、図2に示した各工程番号S1〜S10が示されている。
特に、仮想マシンVM#1の仮想デバイスドライバvirtio#1が送信データを送信キューに書き込むと、ホストカーネルHKが、書き込み先の仮想マシンの仮想送信キューのアドレスvTx#1を物理マシンの送信キューのアドレスpTx#1にアドレス変換し、物理送受信キューpQUE#1の送信キューに書き込む。この送受信キューは、前述のとおり、物理マシン内のメインメモリ内の領域である。
その後、バックエンドドライバvhost#1が送信キュー(アドレスpTx#1)から送信データを読み出してブリッジインスタンスbr0を経由して仮想NIC(vNIC#2)側のバックエンドドライバvhost#2に送信すると、バックエンドドライバvhost#2は物理送受信キューpQUE#2の受信キュー(アドレスpRx#1)に送信データを書き込む。そして、仮想マシンVM#2の仮想デバイスvirtio#2が、受信通知S8に応答して、仮想マシンのアドレスvRx#2で受信データを読み出すと、ホストカーネルHKが、物理マシンのアドレスpRx#2にアドレス変換して物理受信キューから受信データを読み出し、仮想マシンVM#2が受信データを受信する。
仮想マシンVM#2から仮想マシンVM#1宛てにデータを送信した場合は、上記と逆の動作になる。
図9は、本実施の形態に対応し直接パスが設定された例を示す。図9を参照して、本実施の形態のVM間直接パス管理プログラム30(図7)の動作の概略を説明すると、以下のとおりである。
すなわち、仮想NW変更検出部31が、仮想マシンのサービスシステムなどの管理者が入力するコマンドを監視し、仮想スイッチvSWの仮想ネットワーク構成情報vNW_cfgを変更するコマンドを検出すると、コマンドの内容を直接パス設定部32に通知する。それに応答して、直接パス設定判定部32が、コマンドの変更対象である仮想ネットワーク構成情報vNW_cfgを参照し、仮想マシン間の1対1通信が設定されたか否かを判定する。
この判定条件は、(1)変更対象のブリッジインスタンスに設けられるポートが2つだけであり、(2)(1)の2つのポートが2つの仮想NICにつながる(すなわちポート名がvnetのように仮想NICにつながることを意味している)ことである。また、変更対象がL3スイッチの場合は、L3スイッチの経路情報であるフロー情報に2つのポート名がそれぞれ1回のみ存在し、その2つのポートが入力と出力ポートであり、それぞれ仮想NICにつながることである。これらの条件については、後で再度詳述する。
1対1通信が設定されていた場合、直接パス作成・削除部33が、アドレス変換テーブルA_TBL#1(またはA_TBL#2、または両方)を書き換えて、1対1通信が設定された仮想マシンVM#1,VM#2間で1つの物理送受信キューを共有するようにする。図9の例では、仮想マシンVM#2側の物理送受信キューpQUE#2を共有させている。そのため、仮想マシンVM#1側のアドレス変換テーブルA_TBL#1の物理マシン側のアドレスを、仮想マシンVM#2側の物理送受信キューpQUE#2の受信キューアドレスpRx#2と送信キューアドレスpTx#2とに変更している。つまり、送信と受信が互い違いになるようにアドレス変換テーブルを変更する。
仮想マシンVM#1側の物理送受信キューpQUE#1を共有させる場合は、仮想マシンVM#2側のアドレス変換テーブルA_TBL#2の物理マシン側のアドレスを、仮想マシンVM#1側の物理送受信キューpQUE#1の受信キューアドレスpRx#1と送信キューアドレスpTx#1とに変更する。仮想マシンVM#1,VM#2間で、仮想マシンVM#1側の送信キュー(pTx#1)と仮想マシンVM#2側の受信キュー(pRx#2)とを共有しても良く、仮想マシンVM#1側の受信キュー(pRx#1)と仮想マシンVM#2側の送信キュー(pTx#2)とを共有しても良い。
さらに、直接パス作成・削除部33が、各仮想NIC(vNIC#1,vNIC#2)の仮想NIC情報テーブルvNIC_TBLに、それぞれ直接パスの相手側の仮想NICの識別子vNIC#2, vNIC#1を設定する。これにより、ホストカーネルの仮想スイッチを使用せずに、ハイパーバイザHVが2つの仮想NIC間の1対1通信を可能にすることができる。具体的には以下のとおりである。
本実施の形態によれば、ハイパーバイザHVは、仮想NIC(vNIC#1)からの送信通知を受信すると(S3)、仮想NIC情報テーブルvNIC_TBLを参照して送信通知元の仮想NIC(vNIC#1)に直接パスの相手側の仮想NIC識別子の設定があるか否かをチェックする(S11)。図9の場合、仮想NIC(vNIC#1)の仮想NIC構成テーブルには、直接パスの相手側の仮想NIC(vNIC#2)の設定が行われているため、ハイパーバイザHVは、直接パスの相手側の仮想NIC(vNIC#2)に受信通知の割込を発行する(S8)。
この場合、仮想マシンVM#1の仮想デバイスドライバvirtio#1による送信データの書き込みは、変更されたアドレス変換テーブルA_TBL#1に基づいて、共有する物理送受信キューpQUE#2の受信キュー(pRx#2)に行われる。したがって、受信通知の割込を受信した仮想マシンVM#2の仮想デバイスドライバvirtio#2は、物理受信キュー(pRx#2)から受信データを読み出すことができる。
このように、仮想マシンVM#1,VM#2間の直接パスを設定したことで、仮想マシンVM#1から仮想マシンVM#2宛ての送信データが仮想スイッチvSWを通過しなくなり、ホストカーネルHKが仮想スイッチvSWの動作制御を行う必要がなくなり、ホストカーネルHKの負荷を軽減できる。仮想マシンVM#1,VM#2間の通信は、ハイパーバイザHVで制御されるため仮想マシン間で直接行われ、物理マシンのホストカーネルHKによる制御処理を必要としない。
一方、管理者からの仮想スイッチの仮想ネットワーク構成情報vNW_cfgの設定を変更するコマンドが1対1通信を削除する場合は、上記と同様の動作で、直接パス作成・削除部33が、アドレス変換テーブルA_TBL#1を元の状態に戻し、仮想NIC構成テーブルvNIC_TBL内の直接パスの設定を削除する。これにより、送信データはホストカーネルHKが制御する仮想スイッチvSW経由で送信先に送信される。
図10は、本実施の形態におけるホストカーネルのVM間直接パス管理プログラムによる処理を示すフローチャート図である。図10には、直接パスを設定する場合と削除する場合が示されている。以下、直接パスを設定する処理を説明する。
[直接パスの設定処理]
事前の処理として、仮想マシンが起動されるときに、ホストカーネルHKは、各仮想マシンVMと物理マシン間の送信データと受信データの受け渡し用の送受信キューを物理マシン内の共有メモリ内に作成さする(S20)。
事前の処理として、仮想マシンが起動されるときに、ホストカーネルHKは、各仮想マシンVMと物理マシン間の送信データと受信データの受け渡し用の送受信キューを物理マシン内の共有メモリ内に作成さする(S20)。
図11は、送受信キューのアドレス変換テーブルの一例を示す図である。ホストカーネルは、図11中の左側のアドレス変換テーブルA_TBL_1を、仮想マシンVM#1,VM#2のアドレス変換テーブルとして作成する。このアドレス変換テーブルA_TBL_1は、図8に示したテーブルA_TBL#1,A_TBL#2と同じである。図8で説明したとおり、アドレス変換テーブルは、各仮想NICが使用する送信キュー/受信キューについて、仮想マシンのメモリアドレスと物理マシンのメモリアドレスの対応を保持する。そして、例えば、仮想デバイスドライバvirtioが仮想マシンのメモリアドレスに対してデータの書き込み処理を行うと、物理マシンのホストカーネルHKがこのアドレス変換テーブルを参照して仮想マシンのメモリアドレスを物理マシンのメモリアドレスに変換し、物理マシンの物理メモリにデータを書き込む。
さらに、別の事前の処理として、ホストカーネルHKは、仮想マシンを起動する際に、仮想NIC情報テーブルを作成する(S21)。
図12は、仮想NIC情報テーブルの一例を示す図である。ホストカーネルは、図12中の左側の仮想NIC構成テーブルvNIC_TBL_1を作成する。この例では、仮想マシンVM#1に仮想NIC(vNIC#1)が、VM#2に仮想NIC(vNIC#2)が構成され、それぞれの仮想NICとつながるバックエンドドライバ(vhost#1, vhost#2)、仮想NICに接続される仮想スイッチのポートID(vnet#1, vnet#2)およびそれぞれが使用する送信キュー/受信キューの物理マシンのアドレス(pTx#1/pRx#1, pTx#2,pRx#2)が設定されている。さらに、直接パスを確立した場合に接続相手の仮想NICのIDを格納するエントリ(直接パス相手仮想NIC)があり、起動時は設定されていないものとする。
図13は、仮想ブリッジの仮想ネットワーク構成情報の一例を示す図である。最初は、図13の左側の仮想ネットワーク構成情報vNW_cfgに示されるとおり、仮想ブリッジインスタンスbr0に対してブリッジポートvnet#1だけがバインドされているものとする。なお、この仮想ブリッジインスタンスの設定は管理者が入力する設定コマンドによりなされる。
図10に戻り、仮想NW変更検出部31は、管理者からの仮想ネットワーク構成情報を変更するコマンドを常時監視する(S22)。ここで、管理者は、仮想VM#1とVM#2の間の通信を確立するために、仮想ネットワーク構成情報内の、既に仮想マシンVM#1の仮想NIC(vNIC#1)に対応するブリッジポートvnet#1がバインドされているブリッジインスタンスbr0に、仮想マシンVM#2の仮想NIC(vNIC#2)に対応するブリッジポートvnet#2をバインドする設定コマンドを入力したとする。
そのため、仮想NW変更検出部31は、仮想ネットワークを変更するコマンドを検出する(S23のYES)。仮想NW変更検出部は、仮想ネットワーク構成情報を変更するコマンドの入力を検出すると、入力されたコマンドから変更対象のブリッジインスタンス名br0を取得し、直接パス設定判定部32にブリッジインスタンス名br0を通知する。
その通知に応答して、直接パス設定判定部32は、仮想ネットワーク構成情報のブリッジインスタンスbr0についての情報を参照し、バインドされているブリッジポートについて以下の条件をいずれも満たしているか判定する。
(1)ブリッジインスタンスbr0にバインドされるブリッジポートが2つだけである(S24)。
(2)(1)の2つのブリッジポートが仮想NICにつながる(ポート名が”vnet”から始まる)(S25)。
(1)ブリッジインスタンスbr0にバインドされるブリッジポートが2つだけである(S24)。
(2)(1)の2つのブリッジポートが仮想NICにつながる(ポート名が”vnet”から始まる)(S25)。
図13の右側の仮想NW構成情報vNW_cfg_2が、上記のコマンドにより変更された仮想NW構成情報である。この仮想NW構成情報vNW_cfg_2に示されたブリッジインスタンスbr0は、2つのポートのみを有し、その2つのポート名が仮想NICにつながるvnet#1,vnet#2である。したがって、ブリッジインスタンスbr0は、上記の2つの条件をいずれも満たし(S24,S25共にYES)、直接パス設定判定部32は、vnet#1、vnet#2に対応する仮想NIC間で直接パスを確立できると判定する。この判定により、直接パス設定判定部32が、仮想スイッチのポート間の通信データ転送先情報を含む構成情報(上記ブリッジインスタンスbr0の構成情報)に、共通の物理マシンに生成された第1仮想マシンと第2仮想マシン間の1対1通信の設定を検出したことを意味する。
そして、直接パス設定判定部は、仮想NIC情報テーブル(図12の左側のテーブルvNIC_TBL_1)からポートIDのvnet#1およびvnet#2に対応する仮想NIC(vNIC#1、vNIC#2)を取得し、直接パスを設定する旨とその対象となる仮想NIC(vNIC#1、vNIC#2)を直接パス設定・削除部33に通知する(図10はホストカーネルの処理故、通知処理は省略)。
そこで、直接パス設定・削除部33は、仮想NIC情報テーブルから仮想NIC(vNIC#2)が使用する送信キュー/受信キューの物理マシンのアドレスであるpTx#2,pRx#2を取得する(S30)。そして、直接パス設定・削除部は、アドレス変換テーブルA_TBLの仮想NIC(vNIC#1)側の送信キュー、受信キューの物理マシンのアドレスを、仮想NIC(vNIC#2)側のpRx#2,pTx#2にそれぞれ書き換え(S31)、さらに仮想NIC情報テーブルvNIC_TBLの直接パス相手仮想NICについて、vNIC#1側の直接パス相手仮想NICにvNIC#2を、vNIC#2の直接パス相手仮想NICにvNIC#1をそれぞれ設定する(S32)。
図11の右側が、直接パス設定・削除部により書き換えられたアドレス変換テーブルA_TBL_2である。仮想NIC(vNIC#1)側の送信キューアドレスついて、物理マシンの送信キューアドレスpTx#1が仮想NIC(vNIC#2)側の物理受信キューのアドレスpRx#2に、受信キューアドレスにおいて、物理マシンの受信キューアドレスpRx#2が仮想NIC(vNIC#2)の物理送信キューアドレスpTx#2にそれぞれ書き換えられている。この結果、仮想NIC(vNIC#1,vNIC#2)間で、仮想NIC(vNIC#2)側の物理送受信キューpQUE#2が共有されることになる。
また、図12の右側が、直接パス設定・削除部により書き換えられた仮想NIC情報テーブルvNIC_TBL_2である。仮想NIC(vNIC#1,vNIC#2)それぞれの直接パス相手仮想NICの欄に、相手の仮想NICの識別子vNIC#2,vNIC#1がそれぞれ設定されている。
上記の直接パス設定・削除部によるアドレス変換テーブルと仮想NIC構成テーブルの変更により、その後の仮想マシンVM#1,VM#2の仮想NIC(vNIC#1,vNIC#2)間の送信は、次のように処理される。
すなわち、ハイパーバイザHVは、仮想マシンVM#1の仮想NIC(vNIC#1)から送信通知を受けたとき、通知元の仮想NIC(vNIC#1)の仮想NIC情報vNIC_TBL_2を参照し、直接パスの設定があることを検出し、設定された直接パス相手仮想NIC(vNIC#2)に受信通知の割込を発行する(S33、図9内のS11,S8)。そして、アドレス変換テーブルA_TBL_2が書き換えられたことにより、図9に示したとおり、仮想マシンVM#1の仮想デバイスドライバvirtio#1の送信データの書き込みは、物理送受信キューpQUE#2内の受信キュー(pRx#2)に行われている。したがって、受信通知を受信した仮想NIC(vNIC#2)の仮想デバイスドライバvirtio#2は、受信キュー(pRx#2)から受信データを読み出すことができる。
逆に、ハイパーバイザHVは、仮想マシンVM#2の仮想NIC(vNIC#2)から送信通知を受けたとき、通知元の仮想NIC(vNIC#2)の仮想NIC情報vNIC_TBL_2を参照し、直接パスの設定があることを検出し、設定された直接パス相手仮想NIC(vNIC#1)に受信通知を発行する。
図14は、本実施の形態におけるハイパーバイザのイベント通知・割込発生機能のフローチャート図である。図2で説明したとおり、ハイパーバイザのイベント通知・割込発生機能は、仮想NICからの送信通知のイベントをその仮想NICに対応するホストカーネルのバックエンドドライバvhostに通知し、あるバックエンドドライバからの受信通知に応答してそのバックエンドドライバに対応する仮想NICに受信通知の割込を発行する。
それに対して、本実施の形態のイベント通知・割込発生機能は、仮想NICから送信通知のイベントを受信すると、仮想NIC情報テーブルを参照して直接パス相手仮想NICが登録されているか否かをチェックし、未登録なら上記と同様に仮想NICに対応するホストカーネルのバックエンドドライバvhostに通知し、登録済みならその直接パス相手仮想NICに受信通知の割込を発生する。
図14に示されるとおり、ハイパーバイザは、仮想NICからイベントを受信すると(S50のYES)、その仮想NICの仮想NIC情報に直接パスの設定があるか否かをチェックする(S51)。直接パスの設定があれば、ハイパーバイザは、直接パスの相手先仮想NICにイベントに対応する割込を発行する(S53)。直接パスの設定がなければ、ハイパーバイザは、イベントの通知元の仮想NICに対応するバックエンドドライバにイベントを通知する(S52)。また、ハイパーバイザは、バックエンドドライバからイベント通知を受信すると(S54のYES)、通知元のバックエンドドライバに対応する仮想NICにイベントの割込を発行する(S55)。
以上の通り、上記の実施の形態では、ブリッジインスタンスの構成情報から仮想NIC間の1対1通信パス(直接パス)の設定可否を判定し、直接パスが設定可能な場合は、仮想NIC構成テーブルに直接パスの相手仮想NICの識別子を設定し、アドレス変換テーブルを書き直して仮想NIC間で同じ物理送信キューと物理受信キューを共有する様にする。その結果、直接パスが設定された一方の仮想NICからの送信通知が発生すると、仮想ブリッジを使用せずに、ハイパーバイザのイベント通知・割込発生機能が仮想NICからの送信通知を共通パスの相手側の仮想NICに受信通知の割込を発行する。これにより、ブリッジの動作が削減され、ブリッジを制御するホストカーネルの負荷が軽減される。
[直接パスの削除処理]
次に、図10にしたがって、直接パスの削除処理について説明する。前提として仮想NIC(vNIC#1)と仮想NIC(vNIC#2)間で直接パスが設定されているものとする。そして、アドレス変換テーブル、仮想NIC情報テーブルおよび仮想ネットワーク構成情報は、それぞれ図11、図12、図13の右側に示すとおりである。
次に、図10にしたがって、直接パスの削除処理について説明する。前提として仮想NIC(vNIC#1)と仮想NIC(vNIC#2)間で直接パスが設定されているものとする。そして、アドレス変換テーブル、仮想NIC情報テーブルおよび仮想ネットワーク構成情報は、それぞれ図11、図12、図13の右側に示すとおりである。
図10の工程S20、S21は同じである。仮想NW変更検出部31は、管理者からの仮想ネットワーク構成情報を変更するコマンドを常時監視する(S23)。仮に、管理者が仮想マシンVM#1とVM#2間の1対1通信を切断するために、仮想ネットワーク構成情報についてブリッジインスタンスbr0にバインドされているvnet#2を解除するよう設定コマンドを入力したとする。その結果、設定コマンドにより、仮想ネットワーク構成情報は図13の左側のテーブルvNW_cfg_1になるとする。
仮想NW変更検出部は、仮想ネットワーク構成情報を変更するコマンドが入力されたことを検出すると(S23のYES)、入力されたコマンドから変更対象のブリッジインスタンス名br0を取得し、直接パス設定判定部32にその識別子br0を通知する。
そこで、直接パス設定判定部は、仮想ネットワーク構成情報vNW_cfg_1のブリッジインスタンスbr0の情報を参照し、バインドされているブリッジポートについて前述の条件(1)(2)を満たさないと判定する(S24のNO、S25のNO)。さらに、直接パス設定判定部は、仮想NIC情報テーブル(図12の右側のテーブルvNIC_TBL_2)を参照し、ブリッジポートvnet1に対応する仮想NIC(vNIC#1)が他の仮想NIC(vNIC#2)と直接パスを確立していることを認識し(S40のYES)、直接パス設定・削除部33に直接パスを削除する旨とその対象となる仮想NIC(vNIC#1、vNIC#2)を通知する。
これに応答して、直接パス設定・削除部は、仮想NIC情報テーブルvNIC_TBL_2から仮想NIC(vNIC#1)が使用する送信キューと受信キューの物理マシンのアドレスであるpTx#1、pRx#1を取得し(S41)、アドレス変換テーブルA_TBL_2の仮想NIC(vNIC#1)の送信キュー、受信キューの物理マシンのアドレスをpTx#1、pRx#1にそれぞれ書き換える(S42)。さらに、直接パス設定・削除部は、仮想NIC情報テーブルの直接パス相手仮想NICのエントリを削除する(S43)。この結果、アドレス変換テーブルは図11の左側のテーブルA_TBL_1に、仮想NIC情報テーブルは図12の左側のテーブルvNIC_TBL_1になる。
上記の直接パスの削除処理により、仮想マシンVM#1から仮想NIC(vNIC#1)を経由してデータを送信する場合の動作は次のとおりになる。まず、仮想マシンVM#1の仮想デバイスドライバvirtio#1が送信データを送信キューに書き込むと、物理送受信キューpQUE#1の送信キュー(pTx#1)に送信データが書き込まれる。そして、ハイパーバイザHVは、仮想NIC(vNIC#1)からの送信通知に応答して、仮想NIC情報テーブルvNIC_TBL_1を参照して、仮想NIC(vNIC#1、vNIC#2)が直接パスを確立していないことを確認し、通知元の仮想NIC(vNIC#1)に対応するバックエンドドライバvhost#1に送信処理依頼を発行する(S44)。それ以降の動作は、図2,図8で説明したとおりである。
[仮想スイッチがL3スイッチの例]
上記の実施の形態では、仮想ネットワークを構成する仮想スイッチがL2スイッチであるブリッジの例において、ブリッジインスタンスの構成情報から仮想NIC間の1対1通信パス(直接パス)の設定可否を判定した。それに対して、以下の実施の形態では、仮想ネットワークを構成する仮想スイッチがL3スイッチの例であり、そのフロー情報から仮想NIC間の1対1通信パス(直接パス)の設定可否を判定する。
上記の実施の形態では、仮想ネットワークを構成する仮想スイッチがL2スイッチであるブリッジの例において、ブリッジインスタンスの構成情報から仮想NIC間の1対1通信パス(直接パス)の設定可否を判定した。それに対して、以下の実施の形態では、仮想ネットワークを構成する仮想スイッチがL3スイッチの例であり、そのフロー情報から仮想NIC間の1対1通信パス(直接パス)の設定可否を判定する。
仮想スイッチにはオープン仮想スイッチ(Open vSwitch)のように、仮想スイッチにおけるデータのフローを識別して、フロー毎にデータの中継先を決定するものがある。このような仮想スイッチは、前述の仮想ネットワーク構成情報に加えてデータのフロー情報を保持している。例えば、図5に示した例はこれに該当する。
このような仮想スイッチを用いる物理マシンでは、直接パス設定判定部32は、仮想ネットワーク構成情報とフロー情報から直接パスの設定可否を判断する。その動作について以下に実施の形態例を説明する。
前提として、図7に示した仮想マシンVM#1の仮想NIC(vNIC#1)にはIPアドレスとして192.168.10.1が設定され、また仮想マシンVM#2の仮想NIC(vNIC#2)にはIPアドレスとして192.168.10.2が設定されているものとする。
図15は、仮想スイッチの仮想ネットワーク構成情報の一例を示す図である。管理者が仮想マシンVM#1とVM#2間での通信を確立するための設定コマンドを入力した結果、図15に示すように、フロー情報として、以下が設定される。
送信元IPアドレス:192.168.10.1
送信先IPアドレス:192.168.10.2
プロトコル種別:TCP
入力ポート名:vnet#1
出力ポート名:vnet#2
このフロー情報は、ポート名vnet#1からプロトコル種別がTCPで送信元IPアドレスが192.168.10.1、送信先IPアドレスが192.168.10.2のパケットが入力された場合は、仮想スイッチは、そのパケットをポート名vnet#2に出力(ルーティング)することを意味する。
送信元IPアドレス:192.168.10.1
送信先IPアドレス:192.168.10.2
プロトコル種別:TCP
入力ポート名:vnet#1
出力ポート名:vnet#2
このフロー情報は、ポート名vnet#1からプロトコル種別がTCPで送信元IPアドレスが192.168.10.1、送信先IPアドレスが192.168.10.2のパケットが入力された場合は、仮想スイッチは、そのパケットをポート名vnet#2に出力(ルーティング)することを意味する。
そこで、仮想NW変更判定部32は、仮想ネットワーク構成情報内の全てのフロー情報を参照し、入力ポート名と出力ポート名に現れるポートについて以下の全ての条件を満たしているものがあるか否か判定する。
(1)仮想スイッチの仮想ネットワーク構成テーブル内の全てのフロー情報において、入力ポート名または出力ポート名に1回(もしくは1回ずつ)しか現れないポートがある。
(2)(1)を満たすポートでお互いのポートが入力ポート名/出力ポート名となっているものがある。
(3)(2)の2つのポートが仮想マシンにつながる(ポート名が仮想マシンにつながることを示す”vnet”から始まる)。
(1)仮想スイッチの仮想ネットワーク構成テーブル内の全てのフロー情報において、入力ポート名または出力ポート名に1回(もしくは1回ずつ)しか現れないポートがある。
(2)(1)を満たすポートでお互いのポートが入力ポート名/出力ポート名となっているものがある。
(3)(2)の2つのポートが仮想マシンにつながる(ポート名が仮想マシンにつながることを示す”vnet”から始まる)。
図15の仮想ネットワーク構成情報vNW_cfg_4の例は、上記の3つの条件を全て満たしているため、直接パス設定判定部は、ポート名vnet#1、vnet#2に対応する仮想NIC(vNIC#1,vNIC#2)間で直接パスを確立できると判定する。この判定により、直接パス設定判定部32が、仮想スイッチのポート間の通信データ転送先情報を含む構成情報(上記フロー情報)に、共通の物理マシンに生成された第1仮想マシンと第2仮想マシン間の1対1通信の設定を検出したことを意味する。
図15とは反対に、図5に示した仮想ネットワーク構成情報vNW_cfg_3の場合、2つのフロー情報において、ポート名vnet#1が2回表れ、ポート名vnet#2,vnet#3がそれぞれ1回表れている。しかし、ポート名vnet#2,vnet#3は入力ポート名/出力ポート名として対に設定されていない。つまり、上記の条件(2)が満たされない。その結果、図5の仮想ネットワーク構成情報vNW_cfg_3の例では、仮想NIC間に直接パスを設定することはできない。
以上のとおり、仮想スイッチがオープン仮想スイッチ(Open vSwitch)のように仮想スイッチ構成とフロー情報を有する場合においても、仮想NIC間の1対1通信パスのような直接パスを設定することができる場合も、本実施の形態では、ホストカーネルのVM間直接パス管理プログラム30の直接パス設定判定部が直接パスが設定できることを検出し、直接パス設定/削除部が、アドレス変換テーブルを変更し、仮想NIC情報テーブルに直接パスの相手側仮想NICを設定することで、仮想スイッチを経由せずにハイパーバイザで仮想NIC間の通信パスを制御することができる。
以上の実施の形態をまとめると,次の付記のとおりである。
(付記1)
仮想スイッチのポート間の通信データ転送先情報を含む構成情報に、共通の物理マシンに生成された第1仮想マシンと第2仮想マシン間の1対1通信の設定を検出すること、
前記1対1通信の設定を検出したとき、前記第1仮想マシンの送信バッファと前記第2仮想マシンの受信バッファを同じバッファ領域に、前記第1仮想マシンの受信バッファと前記第2仮想マシンの送信バッファを同じバッファ領域にそれぞれ設定すること
を有する処理をコンピュータに実行させる通信制御プログラム。
仮想スイッチのポート間の通信データ転送先情報を含む構成情報に、共通の物理マシンに生成された第1仮想マシンと第2仮想マシン間の1対1通信の設定を検出すること、
前記1対1通信の設定を検出したとき、前記第1仮想マシンの送信バッファと前記第2仮想マシンの受信バッファを同じバッファ領域に、前記第1仮想マシンの受信バッファと前記第2仮想マシンの送信バッファを同じバッファ領域にそれぞれ設定すること
を有する処理をコンピュータに実行させる通信制御プログラム。
(付記2)
前記処理は、更に、
前記同じバッファ領域に設定した場合、前記第1仮想マシンの第1仮想ネットワークインターフェースの構成情報に、直接送信先情報として前記第2仮想マシンの第2仮想ネットワークインターフェースを、前記第2仮想ネットワークインターフェースの構成情報に、直接送信先情報として前記第1仮想ネットワークインターフェースを、それぞれ設定すること、
を有する付記1に記載の通信制御プログラム。
前記処理は、更に、
前記同じバッファ領域に設定した場合、前記第1仮想マシンの第1仮想ネットワークインターフェースの構成情報に、直接送信先情報として前記第2仮想マシンの第2仮想ネットワークインターフェースを、前記第2仮想ネットワークインターフェースの構成情報に、直接送信先情報として前記第1仮想ネットワークインターフェースを、それぞれ設定すること、
を有する付記1に記載の通信制御プログラム。
(付記3)
前記物理マシンは、前記第1仮想マシンからの送信通知を第1バックエンドドライバに通知し、第2バックエンドドライバからの受信通知を前記第2仮想マシンに通知し、前記第2仮想マシンからの送信通知を第2バックエンドドライバに通知し、第1バックエンドドライバからの受信通知を前記第1仮想マシンに通知するイベント通知・割込発生機能を有し、
前記イベント通知・割込発生機能は、前記第1仮想ネットワークインターフェースまたは前記第2仮想ネットワークインターフェースの構成情報に設定された前記直接接続先に基づいて、前記第1仮想マシンまたは前記第2仮想マシンの一方からの送信通知を他方に受信通知として通知する、付記2に記載の通信制御プログラム。
前記物理マシンは、前記第1仮想マシンからの送信通知を第1バックエンドドライバに通知し、第2バックエンドドライバからの受信通知を前記第2仮想マシンに通知し、前記第2仮想マシンからの送信通知を第2バックエンドドライバに通知し、第1バックエンドドライバからの受信通知を前記第1仮想マシンに通知するイベント通知・割込発生機能を有し、
前記イベント通知・割込発生機能は、前記第1仮想ネットワークインターフェースまたは前記第2仮想ネットワークインターフェースの構成情報に設定された前記直接接続先に基づいて、前記第1仮想マシンまたは前記第2仮想マシンの一方からの送信通知を他方に受信通知として通知する、付記2に記載の通信制御プログラム。
(付記4)
前記1対1通信の設定は、前記第1仮想ネットワークインターフェースと前記第2仮想ネットワークインターフェース間での1対1通信の設定を有し、
前記同じバッファ領域に設定される前記送信バッファと前記受信バッファは、それぞれ前記第1仮想ネットワークインターフェースと前記第2仮想ネットワークインターフェースの送信バッファと受信バッファを有する、付記2に記載の通信制御プログラム。
前記1対1通信の設定は、前記第1仮想ネットワークインターフェースと前記第2仮想ネットワークインターフェース間での1対1通信の設定を有し、
前記同じバッファ領域に設定される前記送信バッファと前記受信バッファは、それぞれ前記第1仮想ネットワークインターフェースと前記第2仮想ネットワークインターフェースの送信バッファと受信バッファを有する、付記2に記載の通信制御プログラム。
(付記5)
前記仮想スイッチの構成情報は、仮想ブリッジインスタンスと前記仮想ブリッジインスタンスにバインドされたポート情報を有し、
前記1対1通信の設定は、前記仮想ブリッジインスタンスのポート情報が2つのポートのみを有し、前記2つのポートが前記第1仮想ネットワークインターフェースと前記第2仮想ネットワークインターフェースにそれぞれ接続する設定を有する、付記2に記載の通信制御プログラム。
前記仮想スイッチの構成情報は、仮想ブリッジインスタンスと前記仮想ブリッジインスタンスにバインドされたポート情報を有し、
前記1対1通信の設定は、前記仮想ブリッジインスタンスのポート情報が2つのポートのみを有し、前記2つのポートが前記第1仮想ネットワークインターフェースと前記第2仮想ネットワークインターフェースにそれぞれ接続する設定を有する、付記2に記載の通信制御プログラム。
(付記6)
前記仮想スイッチの構成情報は、入力ポートと出力ポートとを含む通信データのフロー情報を有し、
前記1対1通信の設定は、前記フロー情報に1回しか含まれない2つのポートが前記入力ポートと前記出力ポートの対をなし、前記入力ポートと前記出力ポートがそれぞれ前記第1仮想ネットワークインターフェース及び前記第2仮想ネットワークインターフェースに接続する設定を有する、付記2に記載の通信制御プログラム。
前記仮想スイッチの構成情報は、入力ポートと出力ポートとを含む通信データのフロー情報を有し、
前記1対1通信の設定は、前記フロー情報に1回しか含まれない2つのポートが前記入力ポートと前記出力ポートの対をなし、前記入力ポートと前記出力ポートがそれぞれ前記第1仮想ネットワークインターフェース及び前記第2仮想ネットワークインターフェースに接続する設定を有する、付記2に記載の通信制御プログラム。
(付記7)
仮想スイッチのポート間の通信データ転送先情報を含む構成情報に、共通の物理マシンに生成された第1仮想マシンと第2仮想マシン間の1対1通信の設定を検出すること、
前記1対1通信の設定を検出したとき、前記第1仮想マシンの送信バッファと前記第2仮想マシンの受信バッファを同じバッファ領域に、前記第1仮想マシンの受信バッファと前記第2仮想マシンの送信バッファを同じバッファ領域にそれぞれ設定すること
を有する通信制御方法。
仮想スイッチのポート間の通信データ転送先情報を含む構成情報に、共通の物理マシンに生成された第1仮想マシンと第2仮想マシン間の1対1通信の設定を検出すること、
前記1対1通信の設定を検出したとき、前記第1仮想マシンの送信バッファと前記第2仮想マシンの受信バッファを同じバッファ領域に、前記第1仮想マシンの受信バッファと前記第2仮想マシンの送信バッファを同じバッファ領域にそれぞれ設定すること
を有する通信制御方法。
(付記8)
仮想スイッチのポート間の通信データ転送先情報を含む構成情報に、共通の物理マシンに生成された第1仮想マシンと第2仮想マシン間の1対1通信の設定を検出する直接パス設定検出部と、
前記直接パス設定検出部が前記1対1通信の設定を検出したとき、前記第1仮想マシンの送信バッファと前記第2仮想マシンの受信バッファを同じバッファ領域に、前記第1仮想マシンの受信バッファと前記第2仮想マシンの送信バッファを同じバッファ領域にそれぞれ設定する直接パス設定部と
を有する情報処理装置。
仮想スイッチのポート間の通信データ転送先情報を含む構成情報に、共通の物理マシンに生成された第1仮想マシンと第2仮想マシン間の1対1通信の設定を検出する直接パス設定検出部と、
前記直接パス設定検出部が前記1対1通信の設定を検出したとき、前記第1仮想マシンの送信バッファと前記第2仮想マシンの受信バッファを同じバッファ領域に、前記第1仮想マシンの受信バッファと前記第2仮想マシンの送信バッファを同じバッファ領域にそれぞれ設定する直接パス設定部と
を有する情報処理装置。
(付記9)
前記直接パス設定部は、前記直接パス設定検出部が前記1対1通信の設定を検出したとき、前記第1仮想マシンの第1仮想ネットワークインターフェースの構成情報に、直接送信先情報として前記第2仮想マシンの第2仮想ネットワークインターフェースを、前記第2仮想ネットワークインターフェースの構成情報に、直接送信先情報として前記第1仮想ネットワークインターフェースを、それぞれ設定する、
付記8に記載の情報処理装置。
前記直接パス設定部は、前記直接パス設定検出部が前記1対1通信の設定を検出したとき、前記第1仮想マシンの第1仮想ネットワークインターフェースの構成情報に、直接送信先情報として前記第2仮想マシンの第2仮想ネットワークインターフェースを、前記第2仮想ネットワークインターフェースの構成情報に、直接送信先情報として前記第1仮想ネットワークインターフェースを、それぞれ設定する、
付記8に記載の情報処理装置。
(付記10)
さらに、前記第1仮想マシンからの送信通知を第1バックエンドドライバに通知し、第2バックエンドドライバからの受信通知を前記第2仮想マシンに通知し、前記第2仮想マシンからの送信通知を第2バックエンドドライバに通知し、第1バックエンドドライバからの受信通知を前記第1仮想マシンに通知するイベント通知・割込発生機能を有し、
前記イベント通知・割込発生機能は、前記第1仮想ネットワークインターフェースまたは前記第2仮想ネットワークインターフェースの構成情報に設定された前記直接接続先に基づいて、前記第1仮想マシンまたは前記第2仮想マシンの一方からの送信通知を他方に受信通知として通知する、付記8または9に記載の情報処理装置。
さらに、前記第1仮想マシンからの送信通知を第1バックエンドドライバに通知し、第2バックエンドドライバからの受信通知を前記第2仮想マシンに通知し、前記第2仮想マシンからの送信通知を第2バックエンドドライバに通知し、第1バックエンドドライバからの受信通知を前記第1仮想マシンに通知するイベント通知・割込発生機能を有し、
前記イベント通知・割込発生機能は、前記第1仮想ネットワークインターフェースまたは前記第2仮想ネットワークインターフェースの構成情報に設定された前記直接接続先に基づいて、前記第1仮想マシンまたは前記第2仮想マシンの一方からの送信通知を他方に受信通知として通知する、付記8または9に記載の情報処理装置。
VM:仮想マシン
vNIC:仮想NIC(Network Interface Card)
virtio:仮想デバイスドライバ
HV:ハイパーバイザ
vhost:バックエンドドライバ
HK:ホストカーネル(ホストOS)
vNW:仮想スイッチ(ブリッジ):仮想ネットワークを構築する
QUE:キュー構造体(サーバのメモリ領域)
TBL1:仮想ネットワーク構成情報テーブル
TBL2:アドレス変換テーブル
TBL3:仮想NIC情報テーブル
VM間直接パス管理プログラム(ホストカーネル内)
イベント通知・割込発生機能(プログラム)(ハイパーバイザ内)
直接送受信制御機能(プログラム)(ハイパーバイザ内)
vNIC:仮想NIC(Network Interface Card)
virtio:仮想デバイスドライバ
HV:ハイパーバイザ
vhost:バックエンドドライバ
HK:ホストカーネル(ホストOS)
vNW:仮想スイッチ(ブリッジ):仮想ネットワークを構築する
QUE:キュー構造体(サーバのメモリ領域)
TBL1:仮想ネットワーク構成情報テーブル
TBL2:アドレス変換テーブル
TBL3:仮想NIC情報テーブル
VM間直接パス管理プログラム(ホストカーネル内)
イベント通知・割込発生機能(プログラム)(ハイパーバイザ内)
直接送受信制御機能(プログラム)(ハイパーバイザ内)
Claims (8)
- 仮想スイッチのポート間の通信データ転送先情報を含む構成情報に、共通の物理マシンに生成された第1仮想マシンと第2仮想マシン間の1対1通信の設定を検出すること、
前記1対1通信の設定を検出したとき、前記第1仮想マシンの送信バッファと前記第2仮想マシンの受信バッファを同じバッファ領域に、前記第1仮想マシンの受信バッファと前記第2仮想マシンの送信バッファを同じバッファ領域にそれぞれ設定すること
を有する処理をコンピュータに実行させる通信制御プログラム。 - 前記処理は、更に、
前記同じバッファ領域に設定した場合、前記第1仮想マシンの第1仮想ネットワークインターフェースの構成情報に、直接送信先情報として前記第2仮想マシンの第2仮想ネットワークインターフェースを、前記第2仮想ネットワークインターフェースの構成情報に、直接送信先情報として前記第1仮想ネットワークインターフェースを、それぞれ設定すること、
を有する請求項1に記載の通信制御プログラム。 - 前記物理マシンは、前記第1仮想マシンからの送信通知を第1バックエンドドライバに通知し、第2バックエンドドライバからの受信通知を前記第2仮想マシンに通知し、前記第2仮想マシンからの送信通知を第2バックエンドドライバに通知し、第1バックエンドドライバからの受信通知を前記第1仮想マシンに通知するイベント通知・割込発生機能を有し、
前記イベント通知・割込発生機能は、前記第1仮想ネットワークインターフェースまたは前記第2仮想ネットワークインターフェースの構成情報に設定された前記直接接続先に基づいて、前記第1仮想マシンまたは前記第2仮想マシンの一方からの送信通知を他方に受信通知として通知する、請求項2に記載の通信制御プログラム。 - 前記1対1通信の設定は、前記第1仮想ネットワークインターフェースと前記第2仮想ネットワークインターフェース間での1対1通信の設定を有し、
前記同じバッファ領域に設定される前記送信バッファと前記受信バッファは、それぞれ前記第1仮想ネットワークインターフェースと前記第2仮想ネットワークインターフェースの送信バッファと受信バッファを有する、請求項2に記載の通信制御プログラム。 - 前記仮想スイッチの構成情報は、仮想ブリッジインスタンスと前記仮想ブリッジインスタンスにバインドされたポート情報を有し、
前記1対1通信の設定は、前記仮想ブリッジインスタンスのポート情報が2つのポートのみを有し、前記2つのポートが前記第1仮想ネットワークインターフェースと前記第2仮想ネットワークインターフェースにそれぞれ接続する設定を有する、請求項2に記載の通信制御プログラム。 - 前記仮想スイッチの構成情報は、入力ポートと出力ポートとを含む通信データのフロー情報を有し、
前記1対1通信の設定は、前記フロー情報に1回しか含まれない2つのポートが前記入力ポートと前記出力ポートの対をなし、前記入力ポートと前記出力ポートがそれぞれ前記第1仮想ネットワークインターフェース及び前記第2仮想ネットワークインターフェースに接続する設定を有する、請求項2に記載の通信制御プログラム。 - 仮想スイッチのポート間の通信データ転送先情報を含む構成情報に、共通の物理マシンに生成された第1仮想マシンと第2仮想マシン間の1対1通信の設定を検出すること、
前記1対1通信の設定を検出したとき、前記第1仮想マシンの送信バッファと前記第2仮想マシンの受信バッファを同じバッファ領域に、前記第1仮想マシンの受信バッファと前記第2仮想マシンの送信バッファを同じバッファ領域にそれぞれ設定すること
を有する通信制御方法。 - 仮想スイッチのポート間の通信データ転送先情報を含む構成情報に、共通の物理マシンに生成された第1仮想マシンと第2仮想マシン間の1対1通信の設定を検出する直接パス設定検出部と、
前記直接パス設定検出部が前記1対1通信の設定を検出したとき、前記第1仮想マシンの送信バッファと前記第2仮想マシンの受信バッファを同じバッファ領域に、前記第1仮想マシンの受信バッファと前記第2仮想マシンの送信バッファを同じバッファ領域にそれぞれ設定する直接パス設定部と
を有する情報処理装置。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2015239153A JP2017108231A (ja) | 2015-12-08 | 2015-12-08 | 通信制御プログラム、通信制御方法及び情報処理装置 |
US15/334,926 US20170161090A1 (en) | 2015-12-08 | 2016-10-26 | Communication control program, communication control method, and information processing device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2015239153A JP2017108231A (ja) | 2015-12-08 | 2015-12-08 | 通信制御プログラム、通信制御方法及び情報処理装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2017108231A true JP2017108231A (ja) | 2017-06-15 |
Family
ID=58799040
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2015239153A Pending JP2017108231A (ja) | 2015-12-08 | 2015-12-08 | 通信制御プログラム、通信制御方法及び情報処理装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20170161090A1 (ja) |
JP (1) | JP2017108231A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2019164661A (ja) * | 2018-03-20 | 2019-09-26 | Necプラットフォームズ株式会社 | 情報処理装置、情報処理方法及びプログラム |
JP2022141463A (ja) * | 2021-03-15 | 2022-09-29 | Necプラットフォームズ株式会社 | 情報処理装置、情報処理方法及びプログラム |
Families Citing this family (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016199404A1 (ja) * | 2015-06-09 | 2016-12-15 | 日本電気株式会社 | ネットワーク検証装置、ネットワーク検証方法およびプログラム記録媒体 |
US10250496B2 (en) * | 2017-01-30 | 2019-04-02 | International Business Machines Corporation | Router based maximum transmission unit and data frame optimization for virtualized environments |
US10733112B2 (en) * | 2017-06-16 | 2020-08-04 | Alibaba Group Holding Limited | Method and apparatus for hardware virtualization |
US11277350B2 (en) | 2018-01-09 | 2022-03-15 | Intel Corporation | Communication of a large message using multiple network interface controllers |
US11310095B2 (en) * | 2018-01-17 | 2022-04-19 | Arista Networks, Inc. | Remote in-band management of a network interface controller |
US20190044827A1 (en) | 2018-03-30 | 2019-02-07 | Intel Corporatoin | Communication of a message using a network interface controller on a subnet |
CN110554977A (zh) * | 2018-05-30 | 2019-12-10 | 阿里巴巴集团控股有限公司 | 数据缓存方法、数据处理方法、计算机设备、存储介质 |
CN111224897A (zh) * | 2018-11-23 | 2020-06-02 | 北京金山云网络技术有限公司 | 一种流量转发方法、装置、交换机设备及智能网卡 |
US11962518B2 (en) | 2020-06-02 | 2024-04-16 | VMware LLC | Hardware acceleration techniques using flow selection |
EP4183119A1 (en) | 2020-07-14 | 2023-05-24 | Oracle International Corporation | Virtual layer-2 network |
US11636053B2 (en) | 2020-09-28 | 2023-04-25 | Vmware, Inc. | Emulating a local storage by accessing an external storage through a shared port of a NIC |
US11593278B2 (en) | 2020-09-28 | 2023-02-28 | Vmware, Inc. | Using machine executing on a NIC to access a third party storage not supported by a NIC or host |
US12021759B2 (en) | 2020-09-28 | 2024-06-25 | VMware LLC | Packet processing with hardware offload units |
US11606310B2 (en) * | 2020-09-28 | 2023-03-14 | Vmware, Inc. | Flow processing offload using virtual port identifiers |
US11736566B2 (en) | 2020-09-28 | 2023-08-22 | Vmware, Inc. | Using a NIC as a network accelerator to allow VM access to an external storage via a PF module, bus, and VF module |
US11829793B2 (en) | 2020-09-28 | 2023-11-28 | Vmware, Inc. | Unified management of virtual machines and bare metal computers |
US11757773B2 (en) | 2020-12-30 | 2023-09-12 | Oracle International Corporation | Layer-2 networking storm control in a virtualized cloud environment |
US11637770B2 (en) * | 2021-02-13 | 2023-04-25 | Oracle International Corporation | Invalidating cached flow information in a cloud infrastructure |
WO2022173555A1 (en) * | 2021-02-13 | 2022-08-18 | Oracle International Corporation | Invalidating cached flow information in a cloud infrastructure |
US11863376B2 (en) | 2021-12-22 | 2024-01-02 | Vmware, Inc. | Smart NIC leader election |
US11995024B2 (en) | 2021-12-22 | 2024-05-28 | VMware LLC | State sharing between smart NICs |
US11928062B2 (en) | 2022-06-21 | 2024-03-12 | VMware LLC | Accelerating data message classification with smart NICs |
US11899594B2 (en) | 2022-06-21 | 2024-02-13 | VMware LLC | Maintenance of data message classification cache on smart NIC |
US11928367B2 (en) | 2022-06-21 | 2024-03-12 | VMware LLC | Logical memory addressing for network devices |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7979260B1 (en) * | 2008-03-31 | 2011-07-12 | Symantec Corporation | Simulating PXE booting for virtualized machines |
JP5365051B2 (ja) * | 2008-03-31 | 2013-12-11 | 富士通株式会社 | 管理プログラム、管理装置及び管理方法 |
WO2010099407A1 (en) * | 2009-02-27 | 2010-09-02 | Broadcom Corporation | Method and system for virtual machine networking |
KR101272612B1 (ko) * | 2009-12-01 | 2013-06-10 | 한국전자통신연구원 | 공유 메모리 통신 환경에서의 통신 채널 전환 방법 및 장치 |
US20120320918A1 (en) * | 2011-06-14 | 2012-12-20 | International Business Business Machines | Bridge port between hardware lan and virtual switch |
US8761187B2 (en) * | 2011-06-14 | 2014-06-24 | Futurewei Technologies, Inc. | System and method for an in-server virtual switch |
JP5834999B2 (ja) * | 2012-02-27 | 2015-12-24 | 富士通株式会社 | データ収集方法、情報処理システムおよびプログラム |
CN103473136B (zh) * | 2013-09-02 | 2017-06-13 | 华为技术有限公司 | 一种虚拟机的资源配置方法和通信设备 |
US9680772B2 (en) * | 2013-09-09 | 2017-06-13 | Vmware, Inc. | System and method for managing configuration of virtual switches in a virtual machine network |
US9507617B1 (en) * | 2013-12-02 | 2016-11-29 | Trend Micro Incorporated | Inter-virtual machine communication using pseudo devices |
JP6020476B2 (ja) * | 2014-01-20 | 2016-11-02 | 横河電機株式会社 | プロセス制御装置及びその更新方法 |
-
2015
- 2015-12-08 JP JP2015239153A patent/JP2017108231A/ja active Pending
-
2016
- 2016-10-26 US US15/334,926 patent/US20170161090A1/en not_active Abandoned
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2019164661A (ja) * | 2018-03-20 | 2019-09-26 | Necプラットフォームズ株式会社 | 情報処理装置、情報処理方法及びプログラム |
JP7056870B2 (ja) | 2018-03-20 | 2022-04-19 | Necプラットフォームズ株式会社 | 情報処理装置、情報処理方法及びプログラム |
JP2022141463A (ja) * | 2021-03-15 | 2022-09-29 | Necプラットフォームズ株式会社 | 情報処理装置、情報処理方法及びプログラム |
JP7197212B2 (ja) | 2021-03-15 | 2022-12-27 | Necプラットフォームズ株式会社 | 情報処理装置、情報処理方法及びプログラム |
Also Published As
Publication number | Publication date |
---|---|
US20170161090A1 (en) | 2017-06-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2017108231A (ja) | 通信制御プログラム、通信制御方法及び情報処理装置 | |
CN112217746B (zh) | 云计算系统中报文处理的方法、主机和系统 | |
CN107278362B (zh) | 云计算系统中报文处理的方法、主机和系统 | |
US10698717B2 (en) | Accelerator virtualization method and apparatus, and centralized resource manager | |
US9742671B2 (en) | Switching method | |
JP5392137B2 (ja) | 通信処理のためのプログラム、コンピュータ及び方法 | |
CN108270676B (zh) | 一种基于Intel DPDK的网络数据处理方法及装置 | |
US20160212237A1 (en) | Management server, communication system and path management method | |
JP2015095784A (ja) | 情報処理システム、情報処理システムの制御方法及び情報処理装置の制御プログラム | |
JP6345604B2 (ja) | 通信装置、拡張機能の移動方法、及び通信システム | |
CN112637105B (zh) | 切换防火墙的方法、系统、装置及计算机可读存储介质 | |
US20160205033A1 (en) | Pool element status information synchronization method, pool register, and pool element | |
CN109032754B (zh) | 提高通信路径可靠性的方法和设备 | |
JP2015146504A (ja) | ネットワークスイッチ、ネットワークシステム及びネットワークシステムの制御方法 | |
JP6036445B2 (ja) | 通信システム、中継装置、通信方法、及びプログラム | |
CN111800340B (zh) | 数据包转发方法和装置 | |
JP6573046B1 (ja) | 情報処理装置、情報処理システムおよび情報処理プログラム | |
JP6657910B2 (ja) | 帯域設定方法、帯域設定プログラム、情報処理装置及び情報処理システム | |
WO2018221118A1 (ja) | 仮想ネットワークシステム、および仮想ネットワークシステムの通信方法 | |
CN110795212A (zh) | 基于框式设备的主备主控配置同步方法和装置 | |
JP2013197919A (ja) | 通信制御装置、通信制御方法および通信制御プログラム | |
EP4170981A1 (en) | Control system, control method, and non-transitory computer readable storage medium | |
JP2015156587A (ja) | ネットワークシステム、ネットワークスイッチ装置及び情報処理装置、並びに設定方法 | |
JP2013200805A (ja) | 信号振り分けシステム、信号振り分け方法及びコンピュータ・プログラム | |
JP2015142158A (ja) | 通信装置、及び機能実行モジュールの制御方法 |