JP2019062491A - Virtualization communication apparatus and virtualization communication method - Google Patents
Virtualization communication apparatus and virtualization communication method Download PDFInfo
- Publication number
- JP2019062491A JP2019062491A JP2017187356A JP2017187356A JP2019062491A JP 2019062491 A JP2019062491 A JP 2019062491A JP 2017187356 A JP2017187356 A JP 2017187356A JP 2017187356 A JP2017187356 A JP 2017187356A JP 2019062491 A JP2019062491 A JP 2019062491A
- Authority
- JP
- Japan
- Prior art keywords
- virtual
- port
- queue
- packet
- virtual machine
- 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.)
- Granted
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
Description
本発明は、仮想化通信装置、および、仮想化通信方法の技術に関する。 The present invention relates to a virtualized communication apparatus and a technology of a virtualized communication method.
仮想化技術を使ってネットワーク機能を物理マシン上に構築するNFV(Network Functions Virtualization)という取り組みがなされている。専用ハードウェアで実現されてきた機能を仮想化技術によりソフトウェアとして動作させることで、汎用性を高め、柔軟なシステム構築ができる。
なお、物理マシン上に構築された仮想マシンであるVM(Virtual Machine)が行う通信として、同じ物理マシン上の他のVMとの間の通信(VM−VM間通信)や、物理マシンに搭載されるNIC(Network Interface Card)を経由する他の物理マシンとの間の通信(NIC−VM間通信)などが挙げられる。これらの通信でのパケット転送には、仮想マシン間連携技術であるIVC(Inter-VM Communication)が利用される。
There has been an effort called Network Functions Virtualization (NFV) to build network functions on physical machines using virtualization technology. By operating functions realized with dedicated hardware as software by virtualization technology, versatility can be improved and flexible system construction can be achieved.
Communication performed by a VM (Virtual Machine), which is a virtual machine built on a physical machine, includes communication with other VMs on the same physical machine (VM-VM communication), and is installed in the physical machine. Communication (NIC-VM communication) with another physical machine via a network interface card (NIC). For packet transfer in these communications, inter-VM communication (IVC), which is an inter-virtual machine cooperation technology, is used.
図4は、IVCを適用した物理マシンの構成図である。
物理マシン101は、2台の仮想マシン110(110−1,110−2)と、IVC120と、2つのNICポート150とを有する。IVC120は、仮想マシン110間の通信や、仮想マシン110とNICポート150を介した他装置との間の通信を仲介するスイッチング機能を有する。例えば、図4では、NICポート150から入力されたパケットが、IVC120を経由して、仮想マシン110−1に到着する流れを太線矢印で示している。
FIG. 4 is a block diagram of a physical machine to which IVC is applied.
The
また、物理マシン101内のハードウェアで構成された機能部と、ソフトウェアで構成された機能部とを区別するため、ハードウェアで構成された機能部(NICポート150)を太線で囲んでいる。
以下、図4に示したIVC120の実現方式の詳細として、非特許文献1,2に記載の仮想スイッチ方式を図5で説明し、非特許文献3〜5に記載のSR−IOV(Single Root I/O Virtualization)方式を図6で説明する。
Also, in order to distinguish between the functional unit configured by hardware in the
Hereinafter, as details of the implementation system of the
図5は、仮想スイッチ方式の構成図である。
物理マシン102内の2つの仮想IF121(121−1,121−2)と、スイッチング部146とを備える仮想スイッチが図4のIVC120に相当する。各仮想IF121は、それぞれ送受信を担当する仮想マシン110と1:1で対応付けられている。例えば、仮想マシン110−1と仮想IF121−1とが対応し、仮想マシン110−2と仮想IF121−2とが対応する。
FIG. 5 is a block diagram of a virtual switch system.
A virtual switch including two virtual IFs 121 (121-1, 121-2) in the
図5の太線矢印で示すように、物理マシン102は、NICポート150で受信したパケットをスイッチング部146で一度終端する。そして、スイッチング部146は、終端したパケット内のトラフィックを、仮想マシン110の識別子(MACアドレスなど)によって仮想マシン110に振り分ける処理をソフトウェア的に行う。
なお、図示は省略したが、仮想マシン110からNICポート150経由で他装置に送信するパケットや、同じ物理マシン102の内部で折り返される仮想マシン110−1と110−2との間のパケットも同様に、スイッチング部146によりソフトウェア的に振り分けられる。
As indicated by thick arrows in FIG. 5, the
Although not shown, packets transmitted from the virtual machine 110 to another device via the
スイッチング部146は、アドレス学習部142と、アドレステーブル143と、アドレス照合部144とを有する。アドレステーブル143には、仮想マシン110ごとのMACアドレスが登録される。アドレス照合部144は、到着したパケットのヘッダに記載されるアドレス情報とアドレステーブル143とを照合して(アドレスマッチングして)、パケットの転送先を決定する。アドレス学習部142は、スイッチング部146を通過するパケットのヘッダに記載されるアドレス情報に応じて、アドレステーブル143に登録するMACアドレスの情報を更新する。
The
図6は、SR−IOV方式の構成図である。
物理マシン103内のNICポート150に、図4のIVC120に相当する機能がハードウェアとして搭載されている。物理的に1つのNICポート150は、ハードウェアの機能を用いて複数の論理的なポート単位であるVF(Virtual Function)155に分割される。
NICポート150は、2つのVF155(155−1,155−2)と、スイッチング部156とを備える。各VF155は、それぞれ送受信を担当する仮想マシン110内のVFドライバ111と1:1で対応付けられている。例えば、仮想マシン110−1内のVFドライバ111−1とVF155−1とが対応し、仮想マシン110−2内のVFドライバ111−2とVF155−2とが対応する。つまり、図5の仮想スイッチのような仮想化層を介さずに、各VF155は対応付けられている仮想マシン110と直接接続する。
FIG. 6 is a block diagram of the SR-IOV system.
A function corresponding to the
The NIC
スイッチング部156は、図5のスイッチング部146の機能をハードウェア的に実現したものである。つまり、アドレス学習部142の機能を有するアドレス学習部152と、アドレステーブル143の機能を有するアドレステーブル153と、アドレス照合部144の機能を有するアドレス照合部154とが、それぞれスイッチング部156に備えられている。スイッチング部156により、MACアドレスによるトラフィックの振り分けがハードウェア的に可能となる。
The
なお、NICポート150内のアドレステーブル153は、アドレス学習部152による学習で更新する方法だけでなく、NICポート150の外部から直接アドレステーブル153の内容を更新できるようなしくみも提案されている。
例えば、非特許文献6,7に記載の「Generic Flow API」は、Intel社が提供するDPDK(Data Plane Development Kit)という通信高速化技術において、アドレステーブル153(Flow Table)の制御を外部から可能とするための仕様である。
Not only the method of updating the address table 153 in the
For example, “Generic Flow API” described in Non Patent Literatures 6 and 7 enables control of the address table 153 (Flow Table) from outside in the communication acceleration technology called DPDK (Data Plane Development Kit) provided by Intel. It is a specification to
図5の仮想スイッチ方式よりも図6のSR−IOV方式のほうが、NICポート150内のハードウェアにパケット転送処理を負担させるために、一般的に性能は向上する。
The SR-IOV method of FIG. 6 generally improves the performance because the hardware in the
一方で、図6のSR−IOV方式では、ハードウェアのNICポート150は複数のベンダにより提供されるので、それぞれのベンダの実装により個別のハードウェアに依存したVFドライバ111が必要になる。そのため、仮想マシン110上でアプリケーションソフトを動作させる運用者にとっては、個別のハードウェアに依存したVFドライバ111を意識する必要が生じてしまう。
そのため、仮想マシン110というハードウェアの依存情報が隠蔽される抽象的な動作環境の特性を活かして、特定の個別のハードウェアに依存する情報を運用者に意識させないことで、運用者の管理コストを削減することが求められる。
On the other hand, in the SR-IOV method of FIG. 6, since the
Therefore, taking advantage of the characteristic of an abstract operating environment in which hardware dependency information such as virtual machine 110 is concealed, the manager's management cost can be avoided by making the operator not aware of the information depending on specific individual hardware. To reduce the
そこで、本発明は、仮想マシンを動作させる仮想化通信装置において、物理ポートについての個別のハードウェアに依存する情報に起因した管理コストを削減することを、主な課題とする。 Therefore, the present invention has as its main object to reduce the management cost due to the information that depends on the individual hardware for the physical port in the virtualized communication device that operates the virtual machine.
前記課題を解決するために、本発明の仮想化通信装置は、以下の特徴を有する。
本発明は、仮想化通信装置内で動作する仮想マシンごとにその仮想マシンに対して送受信するパケットを格納するためのパケットバッファを備え、前記仮想化通信装置内にハードウェアとして搭載される通信インタフェースである物理ポートと、
前記仮想化通信装置内で動作する前記仮想マシンから仮想的な通信インタフェースとして認識される仮想IFと、
前記各仮想マシンと前記各パケットバッファとの間のパケット転送処理を行うポート抽象化プロセスとを有しており、
前記ポート抽象化プロセスが、前記パケットバッファとの間のパケット転送処理を行うための前記物理ポートのハードウェアに依存するポート側ドライバと、前記仮想IFを介して前記仮想マシンとの間のパケット転送処理を行うための前記物理ポートのハードウェアに依存しないIF側ドライバとを有することを特徴とする。
In order to solve the above-mentioned subject, a virtualization communication device of the present invention has the following features.
The present invention comprises a packet buffer for storing a packet to be transmitted to and received from a virtual machine for each virtual machine operating in the virtualized communication apparatus, and a communication interface mounted as hardware in the virtualized communication apparatus. Physical port, which is
A virtual IF recognized as a virtual communication interface from the virtual machine operating in the virtualized communication device;
A port abstraction process for performing packet transfer processing between each of the virtual machines and each of the packet buffers;
A packet transfer between a port side driver that depends on the hardware of the physical port for performing a packet transfer process with the packet buffer by the port abstraction process, and a packet transfer between the virtual machine via the virtual IF And a hardware-independent IF-side driver of the physical port for performing processing.
これにより、ポート側ドライバの側で個別のハードウェアに依存する情報が吸収されることで、仮想IFおよびIF側ドライバは、個別のハードウェアに依存しない一般的な通信デバイスとして、仮想マシンから利用することができる。よって、仮想マシンの運用者は、仮想マシンを動作させる仮想化通信装置の物理ポートについての個別のハードウェアに依存する情報を意識しなくても済むため、個別のハードウェアに依存する情報に起因した管理コストを削減することができる。 As a result, the virtual IF and the IF driver are used from the virtual machine as a general communication device that does not depend on individual hardware, because information dependent on the individual hardware is absorbed on the port side driver side. can do. Therefore, the operator of the virtual machine does not have to be aware of the information that depends on the individual hardware for the physical port of the virtualized communication device that operates the virtual machine, so the information that depends on the individual hardware depends on it. Management costs can be reduced.
本発明は、前記各仮想マシンが、自身のパケット転送処理を担当する前記ポート抽象化プロセスおよび前記仮想IFを、他の前記仮想マシンとは別々に構成することを特徴とする。 The present invention is characterized in that each of the virtual machines configures the port abstraction process and the virtual IF, which are in charge of its own packet transfer processing, separately from the other virtual machines.
これにより、1台の物理マシン内で複数の仮想マシンが動作する場合でも、ポート抽象化プロセスと仮想IFとの組が仮想マシンごとに複数組用意される。よって、複数のポート抽象化プロセスがそれぞれ独立にパケット転送処理を行うため、処理負荷が適切に分散される。 Thus, even when a plurality of virtual machines operate in one physical machine, a plurality of sets of port abstraction processes and virtual IFs are prepared for each virtual machine. Therefore, the processing load is properly distributed since the plurality of port abstraction processes independently perform packet transfer processing.
本発明は、前記物理ポートが、自身の前記物理ポート内に到着したパケットのアドレス情報と、アドレステーブルに登録されている前記仮想マシンごとの固有のアドレス情報とを照合することで、到着したパケットを前記各パケットバッファに振り分けるためのアドレス照合部を有することを特徴とする。 In the present invention, the packet arrived by the physical port collating the address information of the packet that has arrived in the physical port of its own with the unique address information of each virtual machine registered in the address table. And an address collating unit for distributing the packet to each of the packet buffers.
これにより、パケット転送処理のうちの主要かつ負荷が高いアドレス照合処理を、物理ポートというハードウェア内に設けられたアドレス照合部にオフロードさせることで、転送性能を向上させることができる。 As a result, transfer performance can be improved by offloading the main and high-load address collating process in the packet transfer process to an address collating unit provided in hardware called a physical port.
本発明は、前記仮想化通信装置が、さらに、前記ポート抽象化プロセスごとに設定される前記仮想マシンごとの固有のアドレス情報を、前記物理ポートの外部から前記アドレステーブルに登録するためのテーブル設定部を有することを特徴とする。 In the present invention, a table setting for the virtualized communication apparatus to further register unique address information for each virtual machine set for each of the port abstraction processes from outside the physical port in the address table It has a part.
これにより、物理ポートの内部構成として、アドレステーブルを更新するためのラーニング機能を設ける必要がなくなったため、物理ポートに求められる機能の簡素化により、ハードウェアの汎用性が向上する。 As a result, since it is not necessary to provide a learning function for updating the address table as an internal configuration of the physical port, the versatility of the hardware is improved by simplifying the function required for the physical port.
本発明によれば、仮想マシンを動作させる仮想化通信装置において、物理ポートについての個別のハードウェアに依存する情報に起因した管理コストを削減することができる。 According to the present invention, in a virtualized communication apparatus for operating a virtual machine, it is possible to reduce the management cost due to the information depending on the individual hardware for the physical port.
以下、本発明の一実施形態について、図面を参照して詳細に説明する。 Hereinafter, an embodiment of the present invention will be described in detail with reference to the drawings.
図1は、仮想化通信装置として動作する物理マシン1の構成図である。
物理マシン1は、CPU(Central Processing Unit)と、メモリと、ハードディスクなどの記憶手段(記憶部)と、ネットワークインタフェースとを有するコンピュータとして構成される。
このコンピュータは、CPUが、メモリ上に読み込んだプログラム(アプリケーションや、その略のアプリとも呼ばれる)を実行することにより、各処理部により構成される制御部(制御手段)を動作させる。
また、この図1で示した物理マシン1を複数台接続した通信システムを構築することも可能である。
FIG. 1 is a block diagram of a
The
The computer operates a control unit (control means) configured of each processing unit by the CPU executing a program (also called an application or an abbreviation of the application) read into the memory.
It is also possible to construct a communication system in which a plurality of
物理マシン1は、以下の3階層でそれぞれの機能を分担している。
(1)仮想ゲスト層として、3台の仮想マシン10(10−1,10−2,10−3)が存在する。
(2)仮想ホスト層として、1台の仮想マシン10に対して、1つの仮想IF21と、その仮想IF21と接続するキュー抽象化プロセス(ポート抽象化プロセス)22とが存在する。
(3)ハードウェア層として、1台の仮想マシン10に対して、1つのキュー(パケットバッファ)51が存在し、そのキュー51はいずれかのNICポート(物理ポート)50内に形成される。なお、キュー51とは、仮想マシン10に対して送受信するパケットを一時的に格納するパケットバッファであり、例えば、リングバッファなどにより実装される。
The
(1) Three virtual machines 10 (10-1, 10-2, 10-3) exist as virtual guest layers.
(2) One virtual IF 21 and a queue abstraction process (port abstraction process) 22 connected to the virtual IF 21 exist for one virtual machine 10 as a virtual host layer.
(3) As a hardware layer, one queue (packet buffer) 51 exists for one virtual machine 10, and the queue 51 is formed in one of the NIC ports (physical port) 50. The queue 51 is a packet buffer that temporarily stores packets to be transmitted to and received from the virtual machine 10, and is implemented by, for example, a ring buffer.
仮想マシン10と、仮想IF21と、キュー抽象化プロセス22と、キュー51とは1:1対応である。例えば、仮想マシン10−1に対して、仮想IF21−1と、キュー抽象化プロセス22−1と、キュー51−1とが対応付けられる(太線矢印)。
同様に、仮想マシン10−2に対して、仮想IF21−2と、キュー抽象化プロセス22−2と、キュー51−2とが対応付けられる(破線矢印)。さらに、仮想マシン10−3に対して、仮想IF21−3と、キュー抽象化プロセス22−3と、キュー51−3とが対応付けられる(破線矢印)。
ここで、キュー51−1とキュー51−2とは、第1のNICポート50−1内に用意され、キュー51−3は、第2のNICポート50−2内に用意される。このように、各キュー51が属するNICポート50は、物理マシン1内のどのNICポート50であってもよい。
The virtual machine 10, the virtual IF 21, the
Similarly, the virtual IF 21-2, the queue abstraction process 22-2, and the queue 51-2 are associated with the virtual machine 10-2 (broken line arrow). Furthermore, the virtual IF 21-3, the queue abstraction process 22-3, and the queue 51-3 are associated with the virtual machine 10-3 (broken line arrow).
Here, the queue 51-1 and the queue 51-2 are prepared in the first NIC port 50-1, and the queue 51-3 is prepared in the second NIC port 50-2. Thus, the
図1では、NICポート50−1が受信したパケットを、仮想マシン10−1に転送するまでの経路を太線矢印で例示した。以下、この経路に沿って説明する。
まず、NICポート50内のアドレス照合部54は、アドレステーブル53を参照して、受信したパケットをどのキュー51に格納するかを決定する。つまり、別々の仮想マシン10に対して送受信するパケットは、別々のキュー51に格納される。
ここで、図6のNICポート150で使用されていたスイッチング部156(アドレス照合部154、アドレステーブル153)の構成を、図1の物理マシン1のNICポート50に流用してもよい。つまり、物理マシン1は、図6のアドレステーブル153を図1のアドレステーブル53として用い、図6のアドレス照合部154を図1のアドレス照合部54として用いる。
これにより、転送パケットのアドレスマッチング処理をハードウェア(アドレス照合部54)にオフロードさせる(逃がす)ことで、パケット転送処理のスループット性能を向上させることができる。
In FIG. 1, a path until the packet received by the NIC port 50-1 is transferred to the virtual machine 10-1 is illustrated by a thick arrow. The following description will be made along this route.
First, the
Here, the configuration of the switching unit 156 (
Thus, the throughput performance of the packet transfer process can be improved by offloading (releasing) the address matching process of the transfer packet to the hardware (address collating unit 54).
次に、キュー51−1に格納されたパケットは、キュー51−1に対応するキュー抽象化プロセス22−1内のキュー側ドライバ36b−1に転送される。キュー側ドライバ(ポート側ドライバ)36bは、対応するキュー51との間でパケットの送受信を行うためのドライバであり、キュー51を収容するNICポート50のハードウェアに依存してあらかじめ用意される。
パケット転送部36は、IF側ドライバ36aとキュー側ドライバ36bとの間でパケットを転送する処理部である。図1では、パケット転送部36−1は、キュー側ドライバ36b−1から受信したパケットを、IF側ドライバ36a−1に転送する。
Next, the packet stored in the queue 51-1 is transferred to the
The
IF側ドライバ36aは、対応する仮想マシン10との間でパケットの送受信を行うためのドライバであり、NICポート50のハードウェアには非依存の(一般的な)ドライバである。図1では、IF側ドライバ36a−1は、仮想IF21−1を介して対応する仮想マシン10−1にパケットを転送する。
このように、仮想マシン10と物理デバイスであるNICポート50との間にキュー抽象化プロセス22を用意し、各キュー抽象化プロセス22に仮想IF21を用意することでハードウェアの抽象化レベルを上げ、仮想マシン10のハードウェア依存性を軽減させることができる。
The
As described above, the
図2は、図1の物理マシン1の詳細な構成図である。
物理マシン1のキュー抽象化プロセス22は、図1で示したIF側ドライバ36aとパケット転送部36とキュー側ドライバ36bとに加え、設定入力部31と、設定リスト32と、アドレス作成部33と、ドライバ作成部34と、仮想IF作成部35と、キュー探索部37と、NIC設定部38とを有する。
さらに、物理マシン1の前記した(2)仮想ホスト層として、キュー管理テーブル23とテーブル設定API(テーブル設定部)24とが存在する。
FIG. 2 is a detailed block diagram of the
The
Furthermore, a queue management table 23 and a table setting API (table setting unit) 24 exist as the (2) virtual host layer of the
設定入力部31は、管理者から入力された自身が属するキュー抽象化プロセス22についての設定内容を設定リスト32として保存する。以下が、設定リスト32の一例である。
(設定1)自身のID番号。例えば、自身のキュー抽象化プロセス22が「3」番であることを示す内容として、「“id”: 3」が設定リスト32に登録される。
(設定2)自身のキュー抽象化プロセス22に対応するNICポート50およびキュー51の情報。例えば「0」番のNICポート50内の「1」番のキュー51を使用するときには、「“nic”:{“port”: 0, “queue”: 1}」が設定リスト32に登録される。
(設定3)自身のキュー抽象化プロセス22に対応する仮想IF21および仮想マシン10の情報。例えばMACアドレス「A0-B1-C3-A4-B5-C6」の仮想IF21(vNICポート)をディレクトリパス「/tmp/vhost0」から仮想マシン10に使用させる場合は、「“vhost”:{“mac”:”A0-B1-C3-A4-B5-C6”, “path”:”/tmp/vhost0”}」が設定リスト32に登録される。
The setting
(Setting 1) own ID number. For example, “id”: 3 ”is registered in the
(Setting 2) Information of the
(Setting 3) Information of the virtual IF 21 and the virtual machine 10 corresponding to its own
アドレス作成部33は、(設定3)のMACアドレスを設定入力部31から管理者に手入力させる手間を削減するために、既に仮想マシン10に使用されているMACアドレスと重複しないアドレス(ユニークなアドレス)を、例えばランダムなデータとして作成する。つまり、(設定3)のMACアドレスは、各仮想マシン10を一意に特定するための固有情報として使用される。
The
なお、図6ではNICポート150内のアドレステーブル153のデータ内容を更新するアドレス学習部152を示した。図2では、このアドレス学習部152の代わりに、アドレステーブル53のデータ内容を更新する手段として、キュー抽象化プロセス22ごとのNIC設定部38と、キュー抽象化プロセス22とは独立したテーブル設定API24とを有する。
NIC設定部38は、物理マシン1内のパケットフローの通知経路を示すマッチングルールを、テーブル設定API24を介して(設定2)のNICポート50内のアドレステーブル53に設定する。マッチングルールは、(設定3)のMACアドレスが指定されたパケットを、(設定2)のキュー51に転送する旨のルールである。
なお、マッチングルールの設定契機は、例えば、物理マシン1の初期化時(電源投入時)に加え、その後のアドレステーブル53の内容変更時である。
Note that FIG. 6 shows the
The
The setting rule of the matching rule is, for example, the time of initialization of the physical machine 1 (when the power is turned on) and the time of changing the contents of the address table 53 thereafter.
テーブル設定API24は、例えば、非特許文献6、7に記載の「Generic Flow API」であり、アドレステーブル53にNICポート50の外部から直接マッチングルールを書き込むためのAPIである。
例えば、物理port「1」のNICポート50に対して、パケットのdst MAC(宛先MACアドレス)が「A0-B1-C3-A4-B5-C6」の際には「2」番目のキュー51にパケットを積む、というマッチングルールは、テーブル設定API24を介して以下のコマンドにより設定される。
「flow create 1 ingress pattern eth / eth dst is a0-b1-c3-a4-b5-c6 / end actions queue index 2 / end」
このマッチングルールは、例えばルール「0」としてアドレステーブル53に設定される。以下がその設定結果を示す応答メッセージである。
「Flow rule #0 created」
The
For example, when the dst MAC (destination MAC address) of the packet is “A0-B1-C3-A4-B5-C6” for the
"Flow create 1 ingress pattern eth / eth dst is a0-b1-c3-a4-b5-c6 / end
This matching rule is set in the address table 53 as, for example, a rule “0”. The following is a response message indicating the setting result.
"Flow rule # 0 created"
ドライバ作成部34は、設定リスト32の(設定2)に従ってキュー側ドライバ36bを作成し、設定リスト32の(設定3)に従ってIF側ドライバ36aを作成する。
仮想IF作成部35は、設定リスト32の(設定3)に従って、IF側ドライバ36aに対応する仮想IF21を作成する。
キュー探索部37は、キュー管理テーブル23に登録されている使用可能なキュー51のメンバリストから、自身のキュー抽象化プロセス22と対応付けるための(設定2)のキュー51を探索する。
The
The virtual IF creating
The
キュー管理テーブル23は、キュー抽象化プロセス22の数とは独立して物理マシン1ごとに存在するテーブルである。キュー管理テーブル23は、物理マシン1内の使用可能なNICポート50(port)のメンバリスト、そのNICポート50内の使用可能な(available)キュー51と、使用中の(unavailable)キュー51とのメンバリストを保持する。以下にキュー管理テーブル23の設定例を構造化テキストファイルで例示する。この例では、「0」番のNICポート50には「1,2,4,5,6,8」番という6つの使用可能なキュー51が存在し、「1」番のNICポート50には「0,1,4,6,7」番という5つの使用可能なキュー51が存在することを示している。
The queue management table 23 is a table that exists for each
図3は、キュー抽象化プロセス22の動作を示すフローチャートである。
S11として、物理マシン1は、キュー抽象化プロセス22を起動するための命令を受け、その命令に付随する以下の引数に従ってキュー抽象化プロセス22を起動する。
・(設定1)として設定リスト32に登録するキュー抽象化プロセス22のID番号。
・(設定2)として設定リスト32に登録するNICポート50の番号。
・(設定3)として設定リスト32に登録する仮想IF21のID(ディレクトリパス)。
・(設定3)として設定リスト32に登録する仮想IF21のMACアドレス(仮想マシン10の固有情報)。
FIG. 3 is a flow chart illustrating the operation of the
As S11, the
The ID number of the
The number of the
The ID (directory path) of the virtual IF 21 to be registered in the
The MAC address of the virtual IF 21 (specific information of the virtual machine 10) registered in the
S12として、キュー探索部37は、S11で起動したキュー抽象化プロセス22に割り当てるための使用可能な(現時点で未使用の)キュー51を、キュー管理テーブル23から探索する。この使用可能なキュー51は、S11の(設定2)として指定されたNICポート50に属するキュー51から探索される。キュー探索部37は、S12で使用可能なキュー51が探索できたときには(Yes)S13に進み、探索できなかったときには(No)S25に進む。
As S12, the
なお、S12のYes/Noの判定処理は、例えば、キュー探索部37の機能を実装したサブルーチンからの戻り値が、成功を示す値か、失敗を示す値かにより行われる。
また、S12でYesとなりS13に進むときには、キュー探索部37は、探索できたキュー51を(設定2)のキュー51として設定リスト32に登録する。さらに、ドライバ作成部34は、設定リスト32に登録したキュー51に対応するキュー側ドライバ36bを作成する。
The determination process of Yes / No in S12 is performed, for example, depending on whether the return value from the subroutine implementing the function of the
Further, when the result of S12 is Yes and the process proceeds to S13, the
S13として、仮想IF作成部35は、設定リスト32の(設定3)として登録したディレクトリパスに基づき、仮想IF21を作成する。仮想IF作成部35は、この仮想IF21の作成に成功したときには(Yes)S14に進み、失敗したときには(No)S24に進む。なお、S13でYesとなりS14に進むときには、ドライバ作成部34は、作成した仮想IF21に対してIF側ドライバ36aを作成する。
As S13, the virtual IF creating
S14として、NIC設定部38は、設定リスト32の(設定2)として登録したNICポート50内のアドレステーブル53に対して、図2の説明で前記したマッチングルールを設定する。NIC設定部38は、この設定に成功したときには(Yes)S15に進み、失敗したときには(No)S23に進む。
In S14, the
S15として、パケット転送部36は、仮想マシン10とNICポート50との間でのパケット転送を開始する。図1で説明したように、パケット転送部36と仮想マシン10(仮想IF21)との間のパケット送受信には、IF側ドライバ36aが使用される。パケット転送部36とNICポート50(キュー51)との間のパケット送受信には、キュー側ドライバ36bが使用される。
S16として、物理マシン1は、キュー抽象化プロセス22を停止するための命令を受けたか否かを判定する。物理マシン1は、S16でYesならS21に進み、NoならS15の転送を継続する。
As S15, the
As S16, the
S21として、パケット転送部36は、S15で開始したパケット転送を停止する。
S22として、NIC設定部38は、S14で設定したNICポート50の設定を削除する。
S23として、仮想IF作成部35は、S13で作成した仮想IF21を削除する。ドライバ作成部34は、削除された仮想IF21に対応するIF側ドライバ36aも削除する。
S24として、キュー探索部37は、S12で取得したキュー51を解放する。つまり、キュー探索部37は、キュー51の状態を“使用中”から“未使用(使用可能)”に移行する旨を、キュー管理テーブル23に登録する。ドライバ作成部34は、削除されたキュー51に対応するキュー側ドライバ36bも削除する。
S25として、物理マシン1は、S11で起動したキュー抽象化プロセス22を停止する。
At S21, the
As S22, the
As S23, the virtual IF creating
As S24, the
As S25, the
以上説明した本実施形態では、図5の仮想スイッチ方式や、図6のSR−IOV方式における以下の問題点を解決する仕組みを備えることで、通信性能の向上と、管理コストの削減とをバランスよく実現する。 In the present embodiment described above, by providing a mechanism for solving the following problems in the virtual switch system of FIG. 5 and the SR-IOV system of FIG. 6, the balance between improvement of communication performance and reduction of management cost is achieved. Achieve well.
まず、図5の仮想スイッチ方式のソフトウェア的な振分け処理における転送性能の低下という問題に対し、図1,図2で述べた本実施形態の方式は、NICポート50というハードウェア内に機能部を設けることにより、転送性能を向上させている。
例えば、図5のアドレス照合部144は、MACアドレスなどによるパケットマッチング処理をソフトウェア的に実現していた。一方、図1では、物理ハードウェアであるNICポート50内のアドレス照合部54にパケットマッチング処理をオフロードできるため、システム全体のスループット性能を向上させることができる。
First of all, the system of this embodiment described in FIG. 1 and FIG. By providing them, transfer performance is improved.
For example, the
また、図5の仮想スイッチ方式では、1つのスイッチング部146のプロセスが、複数の(2つの)仮想IF121を介してパケット転送処理を行っていた。よって、仮想IF121の数が増加したときには、1つのスイッチング部146のプロセスに処理負荷が集中することで、転送性能が低下してしまっていた。
一方、図1では、1つの仮想マシン10に対して、1つの仮想IF21と、1つのキュー抽象化プロセス22とが生成される。つまり、3つの仮想マシン10に対するパケット転送処理は、3つのキュー抽象化プロセス22がそれぞれ独立に(並列して)行うため、処理負荷が適切に分散される。これにより、システム全体のスケーラビリティを向上させることができる。さらに、前記したように、NICポート50内のアドレス照合部54にパケットマッチング処理をオフロードしているため、キュー抽象化プロセス22単体の負荷を削減できる。
Further, in the virtual switch system of FIG. 5, the process of one
On the other hand, in FIG. 1, one virtual IF 21 and one
次に、図6のSR−IOV方式の物理ハードウェアへの依存性が高いことにより運用コストが増加してしまう問題に対し、図1,図2で述べた本実施形態の方式は、仮想マシン10とNICポート50との間に物理ハードウェアの依存性を吸収する適切な前記した(2)仮想ホスト層を設ける。これにより、物理ハードウェアへの依存を抑え、汎用性を向上させている。
例えば、図6のSR−IOV方式では、各NICポート50に対応したVFドライバ111が各仮想マシン110の中に必要となるため、物理マシン103に搭載されているNICポート50の種類を意識して仮想マシン110を構築する必要がある。その結果、どの仮想マシン110がどの物理マシン103で動作するかを運用者が管理する必要があり、物理を隠蔽する仮想化の役割が一部損なわれてしまう。
Next, against the problem that the operation cost increases due to the high dependency of the SR-IOV method on the physical hardware of FIG. 6, the method of the embodiment of the present invention described in FIG. 1 and FIG. The above-mentioned (2) virtual host layer is appropriately provided to absorb physical hardware dependency between 10 and the
For example, in the SR-IOV method of FIG. 6, since the VF driver 111 corresponding to each
一方、本実施形態では、ドライバ作成部34が作成する送受信ドライバとして、ハードウェア依存情報を含むキュー側ドライバ36bと、ハードウェア依存情報を含まないIF側ドライバ36aとを別々に用意する構成を採用した。そして、キュー側ドライバ36bのための個別のハードウェアに依存する情報は、S11でキュー抽象化プロセス22を起動するための命令に付随して、あらかじめ管理者などが入力しておく。
これにより、キュー側ドライバ36bの側で個別のハードウェアに依存する情報が吸収されることで、仮想IF21およびIF側ドライバ36aは、個別のハードウェアに依存しない一般的な通信デバイスとして、仮想マシン10からエミュレーションされる。
例えば、図1で第1のNICポート50−1を製造ベンダAが提供し、第2のNICポート50−2を製造ベンダBが提供していたとする。キュー側ドライバ36b−1、36b−2は、製造ベンダAのハードウェア仕様が反映され、キュー側ドライバ36b−3は、製造ベンダBのハードウェア仕様が反映される。一方、3つのIF側ドライバ36a(36a−1、36a−2、36a−3)として、いずれもベンダA、Bに依存しないドライバを使用することができる。
On the other hand, in the present embodiment, as the transmission / reception driver created by the
As a result, the information depending on the individual hardware is absorbed on the side of the
For example, it is assumed that the manufacturing vendor A provides the first NIC port 50-1 and the manufacturing vendor B provides the second NIC port 50-2 in FIG. The hardware specifications of the manufacturing vendor A are reflected in the
また、図6のSR−IOV方式では、NICポート50の内部にスイッチング部156の機能をフルセットで用意する必要があるため、NICポート50のコストが高くなり、使用可能なNICポート50が限られてしまうという問題があった。
一方、本実施形態では、NICポート50内の機能として、アドレス照合部54は備えているものの、そのアドレス照合部54が参照するアドレステーブル53を更新するためのラーニング機能(アドレス学習部152に相当する機能)は、存在してもよいが必須では無い。図2では、NICポート50の外部であるNIC設定部38からテーブル設定API24を介したアドレステーブル53を更新する手段を用いている。これにより、NICポート50に求められる機能がSR−IOV方式よりも少なくて済むため、ハードウェアの汎用性が向上する。
Further, in the SR-IOV method of FIG. 6, since it is necessary to prepare the function of the
On the other hand, in the present embodiment, although the
以上説明したように、本実施形態では、仮想マシン10間、または、仮想マシン10とNICポート50との間のパケットフォワーディングで利用されるIVC120として、図1,図2に示した構成を有する。この構成では、仮想マシン10ごとにキュー抽象化プロセス22を起動し(分散型とし)、そのキュー抽象化プロセス22から仮想IF21を介してパケットを送受信することを特徴とする。これにより、仮想マシン10からは特定のハードウェアであるNICポート50は意識しなくて済むため、ハードウェア依存性を軽減させることができる。
さらに、NICポート50内のアドレス照合部54にパケット転送処理をオフロードすることで(ハードウェアアクセラレーションを用いることで)、スループット性能を向上させることができる。
As described above, in the present embodiment, the
Furthermore, by offloading the packet transfer processing to the
なお、本実施形態においては、本発明に係る仮想化通信装置の内部構成として、図1に示す3台の仮想マシン10と、3つのキュー抽象化プロセス22と、3つのキュー51と、2つのNICポート50とで説明したが、これらの個数や構成に限定されない。また、本発明では、一般的なコンピュータのハードウェア資源を、リソース管理システムの各手段として動作させるプログラムによって実現することができる。そして、このプログラムは、通信回線を介して配布したり、CD−ROM等の記録媒体に記録して配布したりすることも可能である。
In the present embodiment, as an internal configuration of the virtualization communication apparatus according to the present invention, three virtual machines 10 shown in FIG. 1, three queue abstraction processes 22, three queues 51, and two. Although the
1 物理マシン(仮想化通信装置)
10 仮想マシン
21 仮想IF
22 キュー抽象化プロセス(ポート抽象化プロセス)
23 キュー管理テーブル
24 テーブル設定API(テーブル設定部)
31 設定入力部
32 設定リスト
33 アドレス作成部
34 ドライバ作成部
35 仮想IF作成部
36 パケット転送部
36a IF側ドライバ
36b キュー側ドライバ(ポート側ドライバ)
37 キュー探索部
38 NIC設定部
50 NICポート(物理ポート)
51 キュー(パケットバッファ)
53 アドレステーブル
54 アドレス照合部
56 スイッチング部
1 Physical machine (virtualized communication device)
10
22 Queue abstraction process (port abstraction process)
23 queue management table 24 table setting API (table setting part)
31
37
51 queue (packet buffer)
53 address table 54 address collation unit 56 switching unit
Claims (5)
前記仮想化通信装置内で動作する前記仮想マシンから仮想的な通信インタフェースとして認識される仮想IFと、
前記各仮想マシンと前記各パケットバッファとの間のパケット転送処理を行うポート抽象化プロセスとを有しており、
前記ポート抽象化プロセスは、前記パケットバッファとの間のパケット転送処理を行うための前記物理ポートのハードウェアに依存するポート側ドライバと、前記仮想IFを介して前記仮想マシンとの間のパケット転送処理を行うための前記物理ポートのハードウェアに依存しないIF側ドライバとを有することを特徴とする
仮想化通信装置。 A physical port that is a communication interface mounted as hardware in the virtualized communication device, including a packet buffer for storing packets transmitted to and received from the virtual machine for each virtual machine operating in the virtualized communication device When,
A virtual IF recognized as a virtual communication interface from the virtual machine operating in the virtualized communication device;
A port abstraction process for performing packet transfer processing between each of the virtual machines and each of the packet buffers;
The port abstraction process transfers a packet between a port side driver that depends on the hardware of the physical port for performing packet transfer processing to and from the packet buffer, and the virtual machine via the virtual IF. A virtualized communication apparatus comprising: an IF-side driver that does not depend on the hardware of the physical port for performing processing.
請求項1に記載の仮想化通信装置。 The virtual communication according to claim 1, wherein each of the virtual machines configures the port abstraction process and the virtual IF that are in charge of its own packet transfer processing separately from the other virtual machines. apparatus.
請求項1に記載の仮想化通信装置。 The physical port compares the address information of the packet that has arrived in the physical port of its own with the unique address information of each of the virtual machines registered in the address table, so that each packet has arrived. The virtualized communication apparatus according to claim 1, further comprising an address collation unit for allocating to a buffer.
請求項3に記載の仮想化通信装置。 The virtualized communication apparatus further includes a table setting unit for registering unique address information of each virtual machine set for each of the port abstraction processes from the outside of the physical port in the address table. The virtualized communication device according to claim 3.
前記仮想化通信装置内で動作する仮想マシンごとにその仮想マシンに対して送受信するパケットを格納するためのパケットバッファを備え、前記仮想化通信装置内にハードウェアとして搭載される通信インタフェースである物理ポートと、
前記仮想化通信装置内で動作する前記仮想マシンから仮想的な通信インタフェースとして認識される仮想IFと、
前記各仮想マシンと前記各パケットバッファとの間のパケット転送処理を行うポート抽象化プロセスとを有しており、
前記ポート抽象化プロセスは、前記パケットバッファとの間のパケット転送処理を行うための前記物理ポートのハードウェアに依存するポート側ドライバと、前記仮想IFを介して前記仮想マシンとの間のパケット転送処理を行うための前記物理ポートのハードウェアに依存しないIF側ドライバとを用いて、パケット転送処理を行うことを特徴とする
仮想化通信方法。 The virtualized communication device is
Each virtual machine operating in the virtualized communication apparatus has a packet buffer for storing a packet to be transmitted to or received from the virtual machine, and a physical is a communication interface mounted as hardware in the virtualized communication apparatus. With port
A virtual IF recognized as a virtual communication interface from the virtual machine operating in the virtualized communication device;
A port abstraction process for performing packet transfer processing between each of the virtual machines and each of the packet buffers;
The port abstraction process transfers a packet between a port side driver that depends on the hardware of the physical port for performing packet transfer processing to and from the packet buffer, and the virtual machine via the virtual IF. Packet transfer processing is performed using an IF-side driver that does not depend on the hardware of the physical port for processing.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017187356A JP6778169B2 (en) | 2017-09-28 | 2017-09-28 | Virtualization communication device and virtualization communication method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017187356A JP6778169B2 (en) | 2017-09-28 | 2017-09-28 | Virtualization communication device and virtualization communication method |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2019062491A true JP2019062491A (en) | 2019-04-18 |
JP6778169B2 JP6778169B2 (en) | 2020-10-28 |
Family
ID=66178669
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2017187356A Active JP6778169B2 (en) | 2017-09-28 | 2017-09-28 | Virtualization communication device and virtualization communication method |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP6778169B2 (en) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005102037A (en) * | 2003-09-26 | 2005-04-14 | Renesas Technology Corp | Packet communication device |
JP2009134697A (en) * | 2007-11-21 | 2009-06-18 | Ind Technol Res Inst | Remote interface apparatus, control system, and method thereof |
US20150277954A1 (en) * | 2014-03-31 | 2015-10-01 | Electronics And Telecommunications Research Institute | Apparatus and method for mapping of tenant based dynamic processor |
JP2017521806A (en) * | 2014-06-26 | 2017-08-03 | グバーネット インコーポレイテッドGubernet Inc. | Scheduling method and apparatus in a multiprocessing environment |
-
2017
- 2017-09-28 JP JP2017187356A patent/JP6778169B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005102037A (en) * | 2003-09-26 | 2005-04-14 | Renesas Technology Corp | Packet communication device |
JP2009134697A (en) * | 2007-11-21 | 2009-06-18 | Ind Technol Res Inst | Remote interface apparatus, control system, and method thereof |
US20150277954A1 (en) * | 2014-03-31 | 2015-10-01 | Electronics And Telecommunications Research Institute | Apparatus and method for mapping of tenant based dynamic processor |
JP2017521806A (en) * | 2014-06-26 | 2017-08-03 | グバーネット インコーポレイテッドGubernet Inc. | Scheduling method and apparatus in a multiprocessing environment |
Non-Patent Citations (1)
Title |
---|
中村 哲朗 ほか: "汎用NICを用いたアクセラレーション技術の検討", 電子情報通信学会 2018年総合大会講演論文集 通信2, JPN6020037049, 6 March 2018 (2018-03-06), pages 33, ISSN: 0004358809 * |
Also Published As
Publication number | Publication date |
---|---|
JP6778169B2 (en) | 2020-10-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11934341B2 (en) | Virtual RDMA switching for containerized | |
US9893977B2 (en) | System and method for supporting live migration of virtual machines in a virtualization environment | |
US11716292B2 (en) | System and method for supporting scalable representation of switch port status in a high performance computing environment | |
KR101747518B1 (en) | Local service chaining with virtual machines and virtualized containers in software defined networking | |
US10178054B2 (en) | Method and apparatus for accelerating VM-to-VM network traffic using CPU cache | |
US9935899B2 (en) | Server switch integration in a virtualized system | |
US20170223105A1 (en) | System and method for policing network traffic flows using a ternary content addressable memory in a high performance computing environment | |
US20080189432A1 (en) | Method and system for vm migration in an infiniband network | |
US10872056B2 (en) | Remote memory access using memory mapped addressing among multiple compute nodes | |
EP2831731A1 (en) | System and method for supporting live migration of virtual machines in a virtualization environment | |
EP4004721B1 (en) | Computer device including process isolated containers with assigned virtual functions | |
US9858096B2 (en) | Communication device migration method of extension function and communication system | |
Lettieri et al. | A survey of fast packet I/O technologies for network function virtualization | |
US10708198B1 (en) | Methods and apparatus to reduce packet flooding and duplicate packets in a multi-fabric virtual network | |
Zhang et al. | Residency aware inter-VM communication in virtualized cloud: Performance measurement and analysis | |
US9612877B1 (en) | High performance computing in a virtualized environment | |
EP4004751B1 (en) | Pinned physical memory supporting direct memory access for virtual memory backed containers | |
US10659391B1 (en) | Methods and apparatus to preserve packet order in a multi-fabric virtual network | |
US9559865B2 (en) | Virtual network device in a cloud computing environment | |
JP6778169B2 (en) | Virtualization communication device and virtualization communication method | |
US20210326150A1 (en) | Integrated network boot operating system installation leveraging hyperconverged storage | |
Huang | High performance network I/O in virtual machines over modern interconnects | |
Sankh et al. | Survey of Approaches to Improve Inter Virtual Machine Communication Efficiency on Xen Platform |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20190826 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20200625 |
|
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: 20201006 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20201009 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6778169 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |