JP2019062491A - Virtualization communication apparatus and virtualization communication method - Google Patents

Virtualization communication apparatus and virtualization communication method Download PDF

Info

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
Application number
JP2017187356A
Other languages
Japanese (ja)
Other versions
JP6778169B2 (en
Inventor
中村 哲朗
Tetsuro Nakamura
哲朗 中村
高田 直樹
Naoki Takada
直樹 高田
泰文 小川
Yasufumi Ogawa
泰文 小川
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.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone 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 Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Priority to JP2017187356A priority Critical patent/JP6778169B2/en
Publication of JP2019062491A publication Critical patent/JP2019062491A/en
Application granted granted Critical
Publication of JP6778169B2 publication Critical patent/JP6778169B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

To reduce the management cost due to information dependent on individual hardware of a physical port in a virtualized communication apparatus for operating a virtual machine.SOLUTION: A physical machine 1 includes an NIC port 50 that is a communication interface, a virtual IF 21 recognized as a virtual communication interface from a virtual machine 10 operating in the physical machine 1, a queue abstraction process 22 for performing packet transfer processing between each virtual machine 10 and each queue 51. The queue abstraction process 22 includes a queue-side driver 36b dependent on hardware of the NIC port 50 for performing packet transfer processing with the queue 51 and an IF-side driver 36a dependent on hardware of the NIC port 50 for performing packet transfer processing with the virtual machine 10 via the virtual IF 21.SELECTED DRAWING: Figure 2

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 physical machine 101 has two virtual machines 110 (110-1 and 110-2), an IVC 120, and two NIC ports 150. The IVC 120 has a switching function that mediates communication between the virtual machines 110 and communication between the virtual machines 110 and other devices via the NIC port 150. For example, in FIG. 4, the flow in which a packet input from the NIC port 150 arrives at the virtual machine 110-1 via the IVC 120 is indicated by a bold arrow.

また、物理マシン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 physical machine 101 and the functional unit configured by software, the functional unit (NIC port 150) configured by hardware is surrounded by a thick line.
Hereinafter, as details of the implementation system of the IVC 120 illustrated in FIG. 4, virtual switch systems described in Non-Patent Documents 1 and 2 will be described in FIG. 5, and SR-IOV (Single Root I) described in Non-Patent Documents 3-5. The (/ O Virtualization) method is described in FIG.

図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 physical machine 102 and a switching unit 146 corresponds to the IVC 120 in FIG. Each virtual IF 121 is associated with the virtual machine 110 in charge of transmission / reception in one-to-one correspondence. For example, the virtual machine 110-1 corresponds to the virtual IF 121-1, and the virtual machine 110-2 corresponds to the virtual IF 121-2.

図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 physical machine 102 once terminates the packet received by the NIC port 150 at the switching unit 146. Then, the switching unit 146 performs software processing of distributing traffic in the terminated packet to the virtual machine 110 based on an identifier (such as a MAC address) of the virtual machine 110.
Although not shown, packets transmitted from the virtual machine 110 to another device via the NIC port 150, and packets between the virtual machines 110-1 and 110-2 looped back inside the same physical machine 102 are the same. Are distributed as software by the switching unit 146.

スイッチング部146は、アドレス学習部142と、アドレステーブル143と、アドレス照合部144とを有する。アドレステーブル143には、仮想マシン110ごとのMACアドレスが登録される。アドレス照合部144は、到着したパケットのヘッダに記載されるアドレス情報とアドレステーブル143とを照合して(アドレスマッチングして)、パケットの転送先を決定する。アドレス学習部142は、スイッチング部146を通過するパケットのヘッダに記載されるアドレス情報に応じて、アドレステーブル143に登録するMACアドレスの情報を更新する。   The switching unit 146 includes an address learning unit 142, an address table 143, and an address comparison unit 144. In the address table 143, the MAC address of each virtual machine 110 is registered. The address collating unit 144 collates the address information described in the header of the arrived packet with the address table 143 (address matching) to determine the transfer destination of the packet. The address learning unit 142 updates MAC address information registered in the address table 143 according to the address information described in the header of the packet passing through the switching unit 146.

図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 IVC 120 in FIG. 4 is installed as hardware in the NIC port 150 in the physical machine 103. Physically, one NIC port 150 is divided into a plurality of logical port units VF (Virtual Function) 155 using a hardware function.
The NIC port 150 includes two VFs 155 (155-1 and 155-2) and a switching unit 156. Each VF 155 is associated 1: 1 with the VF driver 111 in the virtual machine 110 in charge of transmission and reception. For example, the VF driver 111-1 and the VF 155-1 in the virtual machine 110-1 correspond to each other, and the VF driver 111-2 and the VF 155-2 in the virtual machine 110-2 correspond to each other. That is, each VF 155 is directly connected to the associated virtual machine 110 without passing through a virtualization layer such as the virtual switch of FIG.

スイッチング部156は、図5のスイッチング部146の機能をハードウェア的に実現したものである。つまり、アドレス学習部142の機能を有するアドレス学習部152と、アドレステーブル143の機能を有するアドレステーブル153と、アドレス照合部144の機能を有するアドレス照合部154とが、それぞれスイッチング部156に備えられている。スイッチング部156により、MACアドレスによるトラフィックの振り分けがハードウェア的に可能となる。   The switching unit 156 is a hardware implementation of the function of the switching unit 146 of FIG. That is, the switching unit 156 includes the address learning unit 152 having the function of the address learning unit 142, the address table 153 having the function of the address table 143, and the address collating unit 154 having the function of the address collating unit 144. ing. The switching unit 156 enables hardware distribution of traffic by MAC address.

なお、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 NIC port 150 by learning by the address learning unit 152, but also a mechanism capable of directly updating the contents of the address table 153 from the outside of the NIC port 150 has been proposed.
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

Ben Pfaff他、「The Design and Implementation of Open vSwitch.」、In: NSDI. 2015. p.117-130.Ben Pfaff et al., "The Design and Implementation of Open vSwitch.", In: NSDI. 2015. p. 117-130. Reza Rahimi他、「A High-Performance OpenFlow Software Switch」、In: High Performance Switching and Routing (HPSR)、 2016 IEEE 17th International Conference on. IEEE 2016. p.93-99.Reza Rahimi et al., "A High-Performance OpenFlow Software Switch", In: High Performance Switching and Routing (HPSR), 2016 IEEE 17th International Conference on. IEEE 2016. p.93-99. PCI-SIG、「Single Root I/O Virtualization and Sharing Specification Revision 1.0」、[online]、2007年9月11日、[2017年9月15日検索]、インターネット<URL:http://pcisig.com/single-root-io-virtualization-and-sharing-specification-revision-10>PCI-SIG, "Single Root I / O Virtualization and Sharing Specification Revision 1.0", [online], September 11, 2007, [September 15, 2017 Search], Internet <URL: http://pcisi.com / single-root-io-virtualization-and-sharing-specification-revision-10> Intel、「PCI-SIG Single Root I/O Virtualization (SR-IOV) Support in Intel Virtualization Technology for Connectivity」、[online]、[2017年9月15日検索]、インターネット<URL:https://www.intel.com/content/dam/doc/white-paper/pci-sig-single-root-io-virtualization-support-in-virtualization-technology-for-connectivity-paper.pdf>Intel, "PCI-SIG Single Root I / O Virtualization (SR-IOV) Support in Intel Virtualization Technology for Connectivity", [online], [September 15, 2017 search], Internet <URL: https: // www. intel.com/content/dam/doc/white-paper/pci-sig-single-root-io-virtualization-support-in-virtualization-technology-for-connectivity-paper.pdf> Yaozu Dong他、「High Performance Network Virtualization with SR-IOV」、 Journal of Parallel and Distributed Computing 2012 72.11: 1471-1480.Yaozu Dong et al., "High Performance Network Virtualization with SR-IOV", Journal of Parallel and Distributed Computing 2012 72.11: 1471-1480. Intel、「Intel Ethernet Flow Director」、[online]、[2017年9月15日検索]、インターネット<URL:https://www.intel.co.jp/content/www/jp/ja/ethernet-products/ethernet-flow-director-video.html>Intel, "Intel Ethernet Flow Director", [online], [search September 15, 2017], Internet <URL: https://www.intel.co.jp/content/www/jp/en/ethernet-products /ethernet-flow-director-video.html> DPDK(Data Plane Development Kit)、「9. Generic flow API (rte_flow)」、[online]、[2017年9月15日検索]、インターネット<URL:http://dpdk.org/doc/guides/prog_guide/rte_flow.html>Data Plane Development Kit (DPDK), “9. Generic flow API (rte_flow)”, [online], [September 15, 2017 search], Internet <URL: http://dpdk.org/doc/guides/prog_guide /rte_flow.html>

図5の仮想スイッチ方式よりも図6のSR−IOV方式のほうが、NICポート150内のハードウェアにパケット転送処理を負担させるために、一般的に性能は向上する。   The SR-IOV method of FIG. 6 generally improves the performance because the hardware in the NIC port 150 bears the packet transfer processing compared to the virtual switch method of FIG.

一方で、図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 NIC port 150 of hardware is provided by a plurality of vendors, the implementation of each vendor requires the VF driver 111 depending on the individual hardware. Therefore, an operator who operates application software on the virtual machine 110 needs to be aware of the VF driver 111 depending on the individual hardware.
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.

本実施形態に係わる仮想化通信装置として動作する物理マシンの構成図である。It is a block diagram of the physical machine which operate | moves as a virtualization communication apparatus concerning this embodiment. 本実施形態に係わる図1の物理マシンの詳細な構成図である。It is a detailed block diagram of the physical machine of FIG. 1 concerning this embodiment. 本実施形態に係わるキュー抽象化プロセスの動作を示すフローチャートである。It is a flowchart which shows operation | movement of the queue abstraction process concerning this embodiment. IVCを適用した物理マシンの構成図である。It is a block diagram of the physical machine which applied IVC. 仮想スイッチ方式の構成図である。It is a block diagram of a virtual switch system. SR−IOV方式の構成図である。It is a block diagram of SR-IOV system.

以下、本発明の一実施形態について、図面を参照して詳細に説明する。   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 physical machine 1 operating as a virtualized communication device.
The physical machine 1 is configured as a computer having a CPU (Central Processing Unit), a memory, a storage unit (storage unit) such as a hard disk, and a network interface.
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 physical machines 1 shown in FIG. 1 are connected.

物理マシン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 physical machine 1 shares its functions in the following three layers.
(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 queue abstraction process 22, and the queue 51 are in one-to-one correspondence. For example, the virtual IF 21-1, the queue abstraction process 22-1, and the queue 51-1 are associated with the virtual machine 10-1 (thick arrows).
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 NIC port 50 to which each queue 51 belongs may be any NIC port 50 in the physical machine 1.

図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 address comparison unit 54 in the NIC port 50 refers to the address table 53 to determine which queue 51 the received packet is to be stored. That is, packets transmitted to and received from different virtual machines 10 are stored in different queues 51.
Here, the configuration of the switching unit 156 (address collating unit 154, address table 153) used in the NIC port 150 of FIG. 6 may be diverted to the NIC port 50 of the physical machine 1 of FIG. That is, the physical machine 1 uses the address table 153 of FIG. 6 as the address table 53 of FIG. 1 and uses the address comparison unit 154 of FIG. 6 as the address comparison unit 54 of FIG.
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 queue driver 36 b-1 in the queue abstraction process 22-1 corresponding to the queue 51-1. The queue driver (port driver) 36 b is a driver for transmitting and receiving packets to and from the corresponding queue 51, and is prepared in advance depending on the hardware of the NIC port 50 accommodating the queue 51.
The packet transfer unit 36 is a processing unit that transfers a packet between the IF driver 36 a and the queue driver 36 b. In FIG. 1, the packet transfer unit 36-1 transfers the packet received from the queue driver 36b-1 to the IF driver 36a-1.

IF側ドライバ36aは、対応する仮想マシン10との間でパケットの送受信を行うためのドライバであり、NICポート50のハードウェアには非依存の(一般的な)ドライバである。図1では、IF側ドライバ36a−1は、仮想IF21−1を介して対応する仮想マシン10−1にパケットを転送する。
このように、仮想マシン10と物理デバイスであるNICポート50との間にキュー抽象化プロセス22を用意し、各キュー抽象化プロセス22に仮想IF21を用意することでハードウェアの抽象化レベルを上げ、仮想マシン10のハードウェア依存性を軽減させることができる。
The IF driver 36 a is a driver for transmitting and receiving packets to and from the corresponding virtual machine 10, and is a (general) driver independent of the hardware of the NIC port 50. In FIG. 1, the IF driver 36a-1 transfers a packet to the corresponding virtual machine 10-1 via the virtual IF 21-1.
As described above, the queue abstraction process 22 is provided between the virtual machine 10 and the physical device NIC port 50, and the virtual IF 21 is provided for each queue abstraction process 22 to increase the hardware abstraction level. The hardware dependency of the virtual machine 10 can be reduced.

図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 physical machine 1 of FIG.
The queue abstraction process 22 of the physical machine 1 includes the setting input unit 31, the setting list 32, and the address creating unit 33 in addition to the IF driver 36a, the packet transfer unit 36, and the queue driver 36b shown in FIG. The driver creation unit 34, the virtual IF creation unit 35, the queue search unit 37, and the NIC setting unit 38 are included.
Furthermore, a queue management table 23 and a table setting API (table setting unit) 24 exist as the (2) virtual host layer of the physical machine 1 described above.

設定入力部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 input unit 31 stores the setting contents of the queue abstraction process 22 to which the own belongs, input from the administrator, as the setting list 32. The following is an example of the setting list 32.
(Setting 1) own ID number. For example, “id”: 3 ”is registered in the setting list 32 as content indicating that the queue abstraction process 22 of its own is the“ 3 ”.
(Setting 2) Information of the NIC port 50 and the queue 51 corresponding to the own queue abstraction process 22. For example, when using the “1” queue 51 in the “0” NIC port 50, ““ nic ”: {“ port ”: 0,“ queue ”: 1}” is registered in the setting list 32 .
(Setting 3) Information of the virtual IF 21 and the virtual machine 10 corresponding to its own queue abstraction process 22. For example, when making virtual machine 10 use virtual IF 21 (vNIC port) of MAC address “A0-B1-C3-A4-B5-C6” from directory path “/ tmp / vhost0”, ““ vhost ”: {“ mac “:“ A0-B1-C3-A4-B5-C6 ”,“ path ”:“ / tmp / vhost0 ”} is registered in the setting list 32.

アドレス作成部33は、(設定3)のMACアドレスを設定入力部31から管理者に手入力させる手間を削減するために、既に仮想マシン10に使用されているMACアドレスと重複しないアドレス(ユニークなアドレス)を、例えばランダムなデータとして作成する。つまり、(設定3)のMACアドレスは、各仮想マシン10を一意に特定するための固有情報として使用される。   The address creating unit 33 does not overlap with the MAC address already used in the virtual machine 10 in order to reduce the trouble of manually entering the MAC address of (setting 3) from the setting input unit 31 to the administrator (unique An address is created, for example, as random data. That is, the MAC address of (setting 3) is used as unique information for uniquely identifying each virtual machine 10.

なお、図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 address learning unit 152 that updates the data contents of the address table 153 in the NIC port 150. In FIG. 2, as a means for updating the data contents of the address table 53 instead of the address learning unit 152, a table setting API 24 independent of the NIC setting unit 38 for each queue abstraction process 22 and the queue abstraction process 22. And.
The NIC setting unit 38 sets a matching rule indicating a notification flow of a packet flow in the physical machine 1 in the address table 53 in the NIC port 50 (setting 2) via the table setting API 24. The matching rule is a rule to transfer a packet in which the MAC address of (setting 3) is specified to the queue 51 of (setting 2).
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 table setting API 24 is, for example, “Generic Flow API” described in Non-Patent Documents 6 and 7, and is an API for writing a matching rule directly in the address table 53 from the outside of the NIC port 50.
For example, when the dst MAC (destination MAC address) of the packet is “A0-B1-C3-A4-B5-C6” for the NIC port 50 of physical port “1”, the packet is placed in the “2” -th queue 51 The matching rule for loading packets is set by the following command via the table setting API 24.
"Flow create 1 ingress pattern eth / eth dst is a0-b1-c3-a4-b5-c6 / end actions queue index 2 / 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 driver creating unit 34 creates the queue driver 36 b according to (setting 2) of the setting list 32 and creates the IF driver 36 a according to (setting 3) of the setting list 32.
The virtual IF creating unit 35 creates the virtual IF 21 corresponding to the IF driver 36a according to (setting 3) of the setting list 32.
The queue searching unit 37 searches the queue 51 of (setting 2) to be associated with the own queue abstraction process 22 from the member list of the usable queues 51 registered in the queue management table 23.

キュー管理テーブル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 physical machine 1 independently of the number of queue abstraction processes 22. The queue management table 23 includes a member list of available NIC ports 50 (port) in the physical machine 1, an available queue 51 in the NIC port 50, and an unavailable queue 51. Maintain a member list. Hereinafter, a setting example of the queue management table 23 will be exemplified by a structured text file. In this example, six usable queues 51 of “1, 2, 4, 5, 6, 8” exist in the “0” NIC port 50, and the “1” NIC port 50 exists. It indicates that there are five usable queues 51 of “0, 1, 4, 6, 7”.

Figure 2019062491
Figure 2019062491

図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 queue abstraction process 22.
As S11, the physical machine 1 receives an instruction for activating the queue abstraction process 22, and activates the queue abstraction process 22 in accordance with the following arguments associated with the instruction.
The ID number of the queue abstraction process 22 registered in the setting list 32 as (setting 1).
The number of the NIC port 50 registered in the setting list 32 as (Setting 2).
The ID (directory path) of the virtual IF 21 to be registered in the setting list 32 as (Setting 3).
The MAC address of the virtual IF 21 (specific information of the virtual machine 10) registered in the setting list 32 as (Setting 3).

S12として、キュー探索部37は、S11で起動したキュー抽象化プロセス22に割り当てるための使用可能な(現時点で未使用の)キュー51を、キュー管理テーブル23から探索する。この使用可能なキュー51は、S11の(設定2)として指定されたNICポート50に属するキュー51から探索される。キュー探索部37は、S12で使用可能なキュー51が探索できたときには(Yes)S13に進み、探索できなかったときには(No)S25に進む。   As S12, the queue search unit 37 searches the queue management table 23 for an available (currently unused) queue 51 to be assigned to the queue abstraction process 22 started in S11. This usable queue 51 is searched from the queue 51 belonging to the NIC port 50 designated as (setting 2) in S11. The queue search unit 37 proceeds to S13 when the usable queue 51 can be searched in S12 (Yes), and proceeds to S25 when the search can not be performed (No).

なお、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 queue search unit 37 is a value indicating success or a value indicating failure.
Further, when the result of S12 is Yes and the process proceeds to S13, the queue searching unit 37 registers the searched queue 51 in the setting list 32 as the queue 51 of (setting 2). Further, the driver creating unit 34 creates the queue driver 36 b corresponding to the queue 51 registered in the setting list 32.

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 unit 35 creates the virtual IF 21 based on the directory path registered as (setting 3) of the setting list 32. If the virtual IF creation unit 35 succeeds in creating the virtual IF 21 (Yes), it proceeds to S14, and if it fails (No), it proceeds to S24. When the determination in S13 is YES and the process proceeds to S14, the driver creating unit 34 creates the IF driver 36a for the created virtual IF 21.

S14として、NIC設定部38は、設定リスト32の(設定2)として登録したNICポート50内のアドレステーブル53に対して、図2の説明で前記したマッチングルールを設定する。NIC設定部38は、この設定に成功したときには(Yes)S15に進み、失敗したときには(No)S23に進む。   In S14, the NIC setting unit 38 sets the matching rule described above with reference to FIG. 2 in the address table 53 in the NIC port 50 registered as (setting 2) in the setting list 32. If the NIC setting unit 38 succeeds in this setting (Yes), it proceeds to S15, and if it fails (No), it proceeds to S23.

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 packet transfer unit 36 starts packet transfer between the virtual machine 10 and the NIC port 50. As described in FIG. 1, the IF driver 36 a is used for packet transmission and reception between the packet transfer unit 36 and the virtual machine 10 (virtual IF 21). The queue driver 36 b is used for packet transmission and reception between the packet transfer unit 36 and the NIC port 50 (queue 51).
As S16, the physical machine 1 determines whether an instruction for stopping the queue abstraction process 22 has been received. The physical machine 1 proceeds to S21 if Yes in S16, and continues transfer of S15 if No.

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 packet transfer unit 36 stops the packet transfer started at S15.
As S22, the NIC setting unit 38 deletes the setting of the NIC port 50 set in S14.
As S23, the virtual IF creating unit 35 deletes the virtual IF 21 created in S13. The driver creating unit 34 also deletes the IF driver 36 a corresponding to the deleted virtual IF 21.
As S24, the queue search unit 37 releases the queue 51 acquired in S12. That is, the queue search unit 37 registers in the queue management table 23 that the status of the queue 51 is to be shifted from "in use" to "unused (usable)". The driver creating unit 34 also deletes the queue driver 36 b corresponding to the deleted queue 51.
As S25, the physical machine 1 stops the queue abstraction process 22 started in S11.

以上説明した本実施形態では、図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 address comparison unit 144 in FIG. 5 has realized the packet matching process using the MAC address or the like as software. On the other hand, in FIG. 1, since the packet matching process can be offloaded to the address comparison unit 54 in the NIC port 50 which is physical hardware, the throughput performance of the entire system can be improved.

また、図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 switching unit 146 is performing packet transfer processing via a plurality of (two) virtual IFs 121. Therefore, when the number of virtual IFs 121 increases, the processing load is concentrated on the process of one switching unit 146, and the transfer performance is degraded.
On the other hand, in FIG. 1, one virtual IF 21 and one queue abstraction process 22 are generated for one virtual machine 10. That is, since the three queue abstraction processes 22 independently (in parallel) perform packet transfer processing for the three virtual machines 10, the processing load is properly distributed. This can improve the scalability of the entire system. Furthermore, as described above, since the packet matching process is offloaded to the address comparison unit 54 in the NIC port 50, the load on the queue abstraction process 22 alone can be reduced.

次に、図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 NIC port 50. This suppresses the dependence on physical hardware and improves versatility.
For example, in the SR-IOV method of FIG. 6, since the VF driver 111 corresponding to each NIC port 50 is required in each virtual machine 110, the type of NIC port 50 mounted on the physical machine 103 is considered. The virtual machine 110 needs to be built. As a result, it is necessary for the operator to manage which virtual machine 110 operates on which physical machine 103, and the role of virtualization for concealing physicality is partially lost.

一方、本実施形態では、ドライバ作成部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 driver creation unit 34, a configuration is adopted in which the queue driver 36b including hardware dependency information and the IF driver 36a not including hardware dependency information are separately prepared. did. Then, the hardware-dependent information for the queue driver 36 b is input in advance by the administrator or the like in addition to the instruction for activating the queue abstraction process 22 in S 11.
As a result, the information depending on the individual hardware is absorbed on the side of the queue driver 36b, so that the virtual IF 21 and the IF driver 36a are virtual machines as general communication devices not depending on the individual hardware. Emulated from 10.
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 queue drivers 36b-1 and 36b-2, and the hardware specifications of the manufacturing vendor B are reflected in the queue drivers 36b-3. On the other hand, drivers independent of the vendors A and B can be used as the three IF drivers 36a (36a-1, 36a-2, 36a-3).

また、図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 switching unit 156 as a full set inside the NIC port 50, the cost of the NIC port 50 becomes high, and the usable NIC port 50 is limited. There was a problem of being
On the other hand, in the present embodiment, although the address collating unit 54 is provided as a function in the NIC port 50, a learning function (corresponding to the address learning unit 152) for updating the address table 53 referred to by the address collating unit 54 is provided. Functions may be present but not required. In FIG. 2, a means for updating the address table 53 via the table setting API 24 from the NIC setting unit 38 outside the NIC port 50 is used. As a result, the number of functions required of the NIC port 50 can be smaller than that of the SR-IOV method, and the versatility of the hardware is improved.

以上説明したように、本実施形態では、仮想マシン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 IVC 120 used for packet forwarding between the virtual machines 10 or between the virtual machines 10 and the NIC port 50 has the configuration shown in FIGS. In this configuration, the queue abstraction process 22 is activated (distributed) for each virtual machine 10, and packets are transmitted and received from the queue abstraction process 22 through the virtual IF 21. As a result, since the virtual machine 10 does not need to be aware of the NIC port 50 which is a specific hardware, it is possible to reduce the hardware dependency.
Furthermore, by offloading the packet transfer processing to the address comparison unit 54 in the NIC port 50 (using hardware acceleration), the throughput performance can be improved.

なお、本実施形態においては、本発明に係る仮想化通信装置の内部構成として、図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 NIC port 50 has been described, it is not limited to these numbers and configurations. Further, according to the present invention, general computer hardware resources can be realized by a program operated as each means of the resource management system. Then, this program can be distributed via a communication line, or recorded and distributed in a recording medium such as a CD-ROM.

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 virtual machine 21 virtual IF
22 Queue abstraction process (port abstraction process)
23 queue management table 24 table setting API (table setting part)
31 setting input unit 32 setting list 33 address creating unit 34 driver creating unit 35 virtual IF creating unit 36 packet transfer unit 36 a IF driver 36 b queue driver (port driver)
37 queue search unit 38 NIC setting unit 50 NIC port (physical port)
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.
前記各仮想マシンは、自身のパケット転送処理を担当する前記ポート抽象化プロセスおよび前記仮想IFを、他の前記仮想マシンとは別々に構成することを特徴とする
請求項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.
JP2017187356A 2017-09-28 2017-09-28 Virtualization communication device and virtualization communication method Active JP6778169B2 (en)

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)

* Cited by examiner, † Cited by third party
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

Patent Citations (4)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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