JP6548010B2 - 準仮想化ネットワークデバイス、情報処理装置、情報処理方法、および情報処理プログラム - Google Patents

準仮想化ネットワークデバイス、情報処理装置、情報処理方法、および情報処理プログラム Download PDF

Info

Publication number
JP6548010B2
JP6548010B2 JP2015121268A JP2015121268A JP6548010B2 JP 6548010 B2 JP6548010 B2 JP 6548010B2 JP 2015121268 A JP2015121268 A JP 2015121268A JP 2015121268 A JP2015121268 A JP 2015121268A JP 6548010 B2 JP6548010 B2 JP 6548010B2
Authority
JP
Japan
Prior art keywords
driver
virtual machine
virtio
operating system
interface
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2015121268A
Other languages
English (en)
Other versions
JP2017010070A (ja
Inventor
裕志 島本
裕志 島本
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP2015121268A priority Critical patent/JP6548010B2/ja
Publication of JP2017010070A publication Critical patent/JP2017010070A/ja
Application granted granted Critical
Publication of JP6548010B2 publication Critical patent/JP6548010B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)
  • Stored Programmes (AREA)

Description

本発明は、準仮想化ネットワークデバイス、情報処理装置、情報処理方法、および情報処理プログラムに関する。
上記技術分野において、特許文献1には、仮想制御プログラムが、仮想ネットワークデバイスを提供することが開示されている。また、仮想デバイスドライバと物理デバイスドライバとを介してデータ流通が行われるように、仮想制御プログラムが、仮想デバイスドライバと物理デバイスドライバとを接続させる技術が開示されている。
特開2012−93917号公報
しかしながら、上記文献に記載の技術では、ゲストオペレーティングシステム上のデバイスドライバに対して準仮想化ネットワークデバイスが対応できなかったので、デバイスドライバに適応しない準仮想化ネットワークデバイスを使用できなかった。
本発明の目的は、上述の課題を解決する技術を提供することにある。
上記目的を達成するため、本発明に係る準仮想化ネットワークデバイスは、
ゲストオペレーティングシステムの上で動作するアプリケーションが用いるデバイスドライバに応じて前記デバイスドライバとのインタフェースを初期化する初期化手段を備え
前記初期化手段は、前記デバイスドライバがポールモードドライバの場合、前記インタフェースを前記ポールモードドライバに適応したインタフェースとして初期化し、前記デバイスドライバがvirtioドライバの場合、前記インタフェースを前記virtioドライバに適応したインタフェースとして初期化する
上記目的を達成するため、本発明に係る情報処理装置は、
ホストオペレーティングシステム上で動作する仮想マシンと、前記仮想マシン上で動作するゲストペレーティングシステムとを有する情報処理装置であって、
前記ホストオペレーティングシステム上で動作し、前記仮想マシンを形成するプロセッサエミュレータと、
前記ゲストオペレーティングシステム上で動作するアプリケーションが用いるデバイスドライバに応じて、前記デバイスドライバとのインタフェースを初期化する初期化手段を備えた準仮想化ネットワークデバイスと、
を備え、
前記仮想マシンは、virtioドライバを用いる通常アプリケーションを備えた第1仮想マシンと、ポールモードドライバを用いる高速パケット通信アプリケーションを備えた第2仮想マシンとを備えた。
上記目的を達成するため、本発明に係る情報処理装置の制御方法は、
ホストオペレーティングシステム上で動作する仮想マシンと、前記仮想マシン上で動作するゲストペレーティングシステムとを有する情報処理装置の制御方法であって、
前記ホストオペレーティングシステム上で動作するプロセッサエミュレータが、前記仮想マシンを形成する仮想マシン形成ステップと、
準仮想化ネットワークデバイスの初期化手段が、前記ゲストオペレーティングシステム上で動作するアプリケーションが用いるデバイスドライバに応じて、前記デバイスドライバとのインタフェースを初期化する初期化ステップと、
を含み、
前記初期化ステップにおいてvirtioドライバとのインタフェースが初期化されると、前記形成された仮想マシンが前記virtioドライバを用いる通常アプリケーションを備えた第1仮想マシンとして動作し、前記初期化ステップにおいてポールモードドライバとのインタフェースが初期化されると、前記形成された仮想マシンが前記ポールモードドライバを用いる高速パケット通信アプリケーションを備えた第2仮想マシンとして動作する。
上記目的を達成するため、本発明に係る情報処理装置の制御プログラムは、
ホストオペレーティングシステム上で動作する仮想マシンと、前記仮想マシン上で動作するゲストペレーティングシステムとを有する情報処理装置の制御プログラムであって、
前記ホストオペレーティングシステム上で動作するプロセッサエミュレータが、前記仮想マシンを形成する仮想マシン形成ステップと、
前記ゲストオペレーティングシステム上で動作するアプリケーションが用いるデバイスドライバに応じて、前記デバイスドライバとのインタフェースを初期化する初期化ステップと、
をコンピュータに実行させ、
前記初期化ステップにおいてvirtioドライバとのインタフェースが初期化されると、前記形成された仮想マシンが前記virtioドライバを用いる通常アプリケーションを備えた第1仮想マシンとして動作し、前記初期化ステップにおいてポールモードドライバとのインタフェースが初期化されると、前記形成された仮想マシンが前記ポールモードドライバを用いる高速パケット通信アプリケーションを備えた第2仮想マシンとして動作するようコンピュータに実行させる。
本発明によれば、ゲストオペレーティングシステム上のデバイスドライバに対して準仮想化ネットワークデバイスが対応できるので、デバイスドライバに適応しない準仮想化ネットワークデバイスを使用することができる。
本発明の第1実施形態に係る準仮想化ネットワークデバイスの構成を説明するためのブロック図である。 本発明の第1実施形態に係る準仮想化ネットワークデバイスの初期化処理手順を説明するためのフローチャートである。 本発明の第2実施形態に係る情報処理装置の機能構成を説明するためのブロック図である。 本発明の第3実施形態に係る情報処理装置の機能構成を説明するためのブロック図である。 本発明の第3実施形態に係るvirtioデバイスの要部構成を説明するための図である。 本発明の第3実施形態におけるvirtioドライバ接続時のvirtioデバイスの動作を説明するための図である。 本発明の第3実施形態におけるポールモードドライバ接続時のvirtioデバイスの動作を説明するための図である。 本発明の第3実施形態に係る情報処理装置におけるvirtioデバイスの初期化処理手順を説明するためのフローチャートである。 本発明の第3実施形態に係る情報処理装置における通常アプリケーションのパケット受信処理手順を説明するための図である。 本発明の第3実施形態に係る情報処理装置における通常アプリケーションのパケット送信処理手順を説明するための図である。 本発明の第3実施形態に係る情報処理装置における高速パケット通信アプリケーションのパケット送受信処理手順を説明するための図である。
以下に、図面を参照して、本発明の実施の形態について例示的に詳しく説明する。ただし、以下の実施の形態に記載されている構成要素はあくまで例示であり、本発明の技術範囲をそれらのみに限定する趣旨のものではない。
[第1実施形態]
本発明の第1実施形態としての準仮想化ネットワークデバイスについて、図1を参照して説明する。準仮想化ネットワークデバイス100は、初期化部101を備えている。
初期化部101は、仮想マシン上で動作するゲストオペレーティングシステムの上で動作するアプリケーションが有するデバイスドライバの種類に適応したデバイスとして動作するように準仮想化ネットワークデバイス100のインタフェースを初期化する。
次に、準仮想化ネットワークデバイス100の初期化処理手順について図2を参照して説明する。
準仮想化ネットワークデバイス100の初期化部101は、ステップS201において、ゲストオペレーティングシステムからデバイスドライバの種類の通知を受ける。次いで、ステップS203において、初期化部101は、デバイスドライバの種類に応じて準仮想化ネットワークデバイス100のインタフェースを初期化して動作させる。
本実施形態によれば、初期化部101はアプリケーションが有するデバイスドライバの種類に適応したデバイスとして動作するように準仮想化ネットワークデバイス100のインタフェースを初期化する。
したがって、ゲストオペレーティングシステムに備わるデバイスドライバに適応したデバイスとして準仮想化ネットワークデバイス100を使用することができる。
[第2実施形態]
本発明の第2実施形態としての情報処理装置300について、図3を参照して説明する。情報処理装置300は、ハードウェア301を備えている。さらに、ハードウェア301上にはホストオペレーティングシステム302が動作し、ホストオペレーティングシステム302上には仮想スイッチ321と仮想マシン303が動作している。
仮想スイッチ321は、ハードウェア301に物理的ネットワークカードが接続された場合、この物理的ネットワークカードを通してネットワーク通信が可能である。
仮想マシン303は、仮想スイッチ321と接続するプロセッサエミュレータ331と、準仮想化ネットワークデバイス332とを備えている。
さらに、仮想マシン303上には、ゲストオペレーティングシステム304が動作し、ゲストオペレーティングシステム304上にはデバイスドライバ351を有するアプリケーション305が動作している。
また、準仮想化ネットワークデバイス332は、プロセッサエミュレータ331によって提供されたものであり、初期化部333を備えている。
初期化部333は、ゲストオペレーティングシステム304上で動作するアプリケーション305が有するデバイスドライバ351の種類に関してゲストオペレーティングシステム304から通知を受ける。そして、このデバイスドライバ351に適応したデバイスとして動作するように準仮想化ネットワークデバイス332のインタフェースを初期化する。これにより、準仮想化ネットワークデバイス332は、アプリケーション305が有するデバイスドライバ351に適応したデバイスとして動作する。
本実施形態によれば、アプリケーション305が有するデバイスドライバ351に適応したデバイスとして準仮想化ネットワークデバイス332を使用することができる。
したがって、アプリケーション305は、ゲストオペレーティングシステム304と仮想マシン303とを通してホストオペレーティングシステム302上の仮想スイッチ321の動作制御を行なうことができる。
なお、ホストオペレーティングシステム302上に2つ以上の仮想マシンが存在する場合は、それぞれの仮想マシンの準仮想化ネットワークデバイスを用いて、異なる仮想マシン上のアプリケーション間の通信を行なうことも可能である。
[第3実施形態]
次に本発明の第3実施形態に係る情報処理装置について、図4乃至図8を用いて説明する。
《前提技術》
SDN(Software-Defined Networking)と呼ばれるソフトウェアでネットワークを制御する技術が注目されている。さらに、NFV(Network Function Virtualization)と呼ばれるネットワーク機能を仮想化して、サービスの柔軟性を上げる技術が注目されている。汎用サーバを利用して、特定用途向けハードウェアを減らし、構成を簡略化して運用を容易にすることができる。これらの要素技術として仮想化が利用される。
サーバの仮想化においてKVM/qemu(Kernel-based Virtual Machine/qemu)に代表される仮想マシンモニタが、入出力機器のエミュレーションを行っている。仮想化におけるネットワークカードの標準的なエミュレーションデバイスとしてvirtioデバイスが存在する。virtioデバイスは仮想マシンで動作するゲストオペレーティングシステムにとって、一般的なPCI(Peripheral Component Interconnect)デバイスに見える。このため、ゲストオペレーティングシステムとして使用される多くのオペレーティングシステムがvirtioデバイスのデバイスドライバを提供している。
サーバの仮想化がデータセンタなどで一般化していくなかで、ファイアウォールやDPI(Deep Packet Inspection)のような大量のパケットを扱うネットワークサービスにおいて、高速なパケット通信が求められている。
ネットワークのパケット通信性能はサーバ仮想化において大きな課題となっている。PCIパススルーあるいはSR−IOV(Single Root I/O Virtualization)パススルー技術などを用いて物理デバイスをゲストオペレーティングシステムに直接扱わせることで、物理環境とほぼ同等の性能を得ることができる。しかし、仮想化を用いたメリットである柔軟性が失われてしまう。
一方、汎用サーバにおいて高速にパケット通信を行うためのアプリケーションを作成する開発キットであるDPDK(Data Plane Development Kit)が注目されている。
DPDKではポールモードドライバと呼ばれる機構を利用して、デバイスアクセスのレイテンシ(latency)を削減し、高速パケット通信を実現している。このため、高速なパケット通信アプリケーションはDPDKを利用して作成されるようになってきている。また、仮想化技術を用いたサービス柔軟性と運用の簡易化が進む中、DPDKを用いる高速パケット通信アプリケーションの適用が求められている。
ゲストオペレーティングシステムでDPDKを利用して、ネットワークのパケット通信性能を確保しようとした場合、virtioデバイスでは高速なパケット通信を行うことが困難となっている。すなわち、virtioデバイスは一般的なPCIデバイスをエミュレーションしている。このため、ドライバからのデバイスアクセスの際に、ホストオペレーティングシステムによるエミュレーションが入ることで、オーバヘッド(間接的あるいは付加的な処理の大きさ)が大きくなり、高速なパケット通信を行うことが困難となっている。
高速なパケット通信を実現するため、DPDKのポールモードドライバの動作に合わせた特殊なデバイスを仮想マシンに実装する案もある。しかし、このような特殊なデバイスは、そのデバイス専用のドライバをもったゲストオペレーティングシステムのみがアクセスできるものとなり、一般的なサーバアプリケーションで利用されるゲストオペレーティングシステムにとっては使えないデバイスとなる。そのため、デプロイ(deploy)するサービスのアプリケーションにおけるゲストオペレーティングシステムに合わせて仮想マシンの種別を変更することが必要となり、管理が煩雑となる。
《本実施形態の説明》
図4は、本実施形態に係る情報処理装置の機能構成を説明するためのブロック図である。図において情報処理装置400は、物理ネットワークインタフェースカード(NIC:Network Interface Card)411を搭載したハードウェア401を備えている。物理NIC411は、ハードウェア401に接続され、図示せぬネットワークとの間でパケットを送受信する。
ハードウェア401上ではホストオペレーティングシステム402が動作している。さらに、ホストオペレーティングシステム402上には、仮想スイッチ421と2つの仮想マシン(VM:Virtual Machine)403、404が動作している。なお、本実施形態ではホストオペレーティングシステム402としてLinux(登録商標)を使用している。
仮想マシン403、404のそれぞれは、KVM/qemuで実現されており、qemu431、441を有すると共に、qemu431、441によって提供される準仮想化ネットワークデバイスとしてのvirtioデバイス433、443を備えている。
また、仮想マシン403、404のvirtioデバイス433、443はqemu431、441が提供するvhost-userバックエンド機能432、442と仮想スイッチ421が提供するvhost-user422とを通して、仮想スイッチ421と接続されている。これにより、virtioデバイス433、443は仮想スイッチ421を介して物理NIC411を利用し、外部のネットワークを介して通信可能となっている。
virtioデバイス433、443は、仮想マシン403、404上で動作するゲストオペレーティングシステム405、406の上で動作するアプリケーション407、408が有するデバイスドライバと接続するときに用いる初期化部434、444を備えている。
ゲストオペレーティングシステム405上には、virtioドライバ471を有する通常アプリケーション407が動作している。
ゲストオペレーティングシステム406上には、DPDK481のポールモードドライバ482を有する高速パケット通信アプリケーション408が動作している。なお、本実施形態においては、高速パケット通信アプリケーション408は、DPDKを用いて作成されたものである。
仮想マシン403上で動作している通常アプリケーション407は、virtioドライバ471を用いて、virtioデバイス433と仮想スイッチ421と物理NIC411とを通じてネットワーク通信を行う。
仮想マシン404上で動作している高速パケット通信アプリケーション408は、ポールモードドライバ482を用いて、virtioデバイス443と仮想スイッチ421と物理NIC411とを通じてネットワーク通信を行う。
図5はvirtioデバイス433、443の要部構成を説明するための図である。図5に示すように、virtioデバイス433、443は初期化部434、444とvirtioドライバ用インタフェース501とポールモードドライバ用インタフェース502とを備えている。初期化部434、444は判定部535、545を有している。さらに、virtioドライバ用インタフェース501はPCIレジスタ511を有している。
仮想マシン403上で動作するゲストオペレーティングシステム405において、virtioデバイス433はPCIデバイスとして認識され、virtioドライバ471によって認識されて制御することができる。
すなわち、ゲストオペレーティングシステム405はvirtioデバイス433に対してPCIデバイスとして動作するようにvirtioデバイス433の初期化部434の判定部535に通知する。初期化部434がvirtioデバイス433を初期化することにより、図6に示すように、virtioドライバ471は、virtioデバイス433に対して、virtioドライバ用インタフェース501のPCIレジスタ511とメモリ602とを介して要求を行なうことができる。また、virtioデバイス433の処理完了通知はCPU(Central Processing Unit)601への割り込みを通じてvirtioドライバ471に伝えられる。パケットを送信する際は、メモリ602におかれたパケットを送信するようにPCIレジスタ511に送信命令を書き込む。virtioデバイス433はパケット送信が完了すると、CPU601に割り込みをかけ、virtioドライバ471はPCIレジスタ511とメモリ602とを使って送信完了を確認する。パケット受信の際は、virtioデバイス433がメモリ602にパケット情報を書き込み、CPU601へ割り込みをかける。virtioドライバ471は割り込みに対応して、メモリ602上のパケット情報を確認して、新たなパケットのためのメモリ領域をPCIレジスタ511を通じて設定する。
一方、仮想マシン404上で動作するゲストオペレーティングシステム406において、virtioデバイス443はPCIデバイスとして認識される。しかし、高速パケット通信アプリケーション408は、DPDK481のポールモードドライバ482を用いてvirtioデバイス443へポールモード専用のインタフェースでのアクセスを行う。これにより、virtioデバイス443におけるオーバヘッドを取り除き、高速パケット通信アプリケーション408が高速なパケット通信を行なうことができる。
すなわち、ゲストオペレーティングシステム406はvirtioデバイス443に対してポールモードドライバ482に適応したデバイスとして動作するようにvirtioデバイス443の初期化部444の判定部545に通知する。これにより、初期化部444によってvirtioデバイス443が初期化され、図7に示すように、ポールモードドライバ482による動作時は、全てメモリ702上で完結するように動作させる。つまり、メモリ702上に送受信それぞれのパケット操作領域を確保して動作する。パケット送信時は送信領域にパケットを書き込む。ポールモード動作時のvirtioデバイス443は、ポールモードドライバ用インタフェース502を用いてメモリ602上の送信領域を常にチェックしており、送信パケットが積まれたら、送信処理を行う。また、virtioデバイス443はパケットを受信した際に、メモリ702上の受信領域にパケットを書き込む。ポールモードドライバ482は常に受信領域をポーリングによりチェックするようにアプリケーションが作られている。このため、ポールモードドライバ482は、ポーリングによって受信パケットが存在することを見つけて、パケットを受信する。
したがって、高速パケット通信アプリケーション408は、virtioデバイス443を用いて仮想化のオーバヘッドが削減された高速通信を行うことができる。
次に、本実施形態に係る情報処理装置400におけるvirtioデバイス433、443の初期化処理手順を図8に示すフローチャートを参照して説明する。
ステップS801において、システム管理者が仮想マシン(VM:Virtual Machine)403、404を作成する。ステップS803において、ゲストオペレーティングシステム405、406を起動すると、ステップS805において、ゲストオペレーティングシステム405、406はvirtioデバイス433、443のプローブを行なう。このプローブの結果、ゲストオペレーティングシステム405は通常アプリケーション407が有するドライバの種類を判別し、virtioドライバ471に適応するようにvirtioデバイス433に要求する。また、ゲストオペレーティングシステム406は高速パケット通信アプリケーション408が有するドライバの種類を判別し、ポールモードドライバ482に適応するようにvirtioデバイス443に要求する。
この後、virtioデバイス433、443は初期化を開始する。ステップS807において、仮想マシン403、404に備わるvirtioデバイス433、443の初期化部434、444は、アプリケーション407、408が有するデバイスドライバがDPDKのポールモードドライバであるか否かを判定する。
ステップS807の判定の結果、DPDKのポールモードドライバである場合は、ステップS809において、初期化部434、444は、virtioデバイス433、443をポールモードドライバに適応したデバイスとして初期化する。この後、ステップS811において、初期化部434、444は、初期化が成功したか否かを判定し、初期化が成功しない場合はステップS813の処理に移行し、初期化が成功した場合は処理を終了する。
ステップS807の判定の結果、DPDKのポールモードドライバでない場合は、ステップS813において、初期化部434、444は、virtioデバイス433、443を標準的なvirtioデバイスとして初期化する。これにより、virtioデバイス433、443は、標準的なvirtioデバイスとして動作する。
本実施形態では、通常アプリケーション407が有するデバイスドライバはvirtioドライバ471であるので、初期化部434は、virtioデバイス433を標準的なvirtioデバイスとして初期化して動作させる。一方、高速パケット通信アプリケーション408が有するデバイスドライバはDPDK481のポールモードドライバ482であるので、初期化部444は、virtioデバイス443をポールモードドライバに適応したデバイスとして初期化して動作させる。なお、virtioデバイス443の初期化部444は、virtioデバイス443をポールモードドライバに適応したデバイスとして初期化できなかった場合、標準的なvirtioデバイスとして初期化する。これにより、virtioデバイス443を標準的なvirtioデバイスとして動作させる。この場合、高速パケット通信アプリケーション408は、オーバヘッドは大きくなるが、virtioデバイス443を使用することができる。このため、通常アプリケーション用と高速パケット通信アプリケーション用とのそれぞれに対応して提供する仮想マシンを分ける必要がなくなる。
次に、通常アプリケーション407がパケット通信を行なう場合の処理手順を図9を参照して説明する。
通常アプリケーション407はネットワークスタック901を通して仮想マシン403の外部と通信する。
図9は通常アプリケーション407がパケットを受信する場合の処理手順を説明する図である。通常アプリケーション407がパケットを受信する場合は、virtioデバイス433においてパケットを受信すると、virtioデバイス433は、virtioドライバ471に割り込みを使って、パケットの受信を通知する。virtioドライバ471は、パケット受信の割り込みに対応して、パケットデータを受け取る。このパケットデータは、ネットワークスタック901で処理された後に、通常アプリケーション407に渡される。
図10は、通常アプリケーション407がパケットを送信する場合の処理手順を説明する図である。通常アプリケーション407がパケットを送信する場合は、通常アプリケーション407がネットワークスタック901に送信データを渡す。そして、ネットワークスタック901はパケットを構築し、virtioドライバ471に渡す。virtioドライバ471はvirtioデバイス433にパケット送信指示を行う。virtioデバイス433がパケット送信を完了すると、virtioデバイス433は、virtioドライバ471に送信完了割り込みを行い、データ送信が完了する。
次に、高速パケット通信アプリケーション408がパケット通信を行なう場合の処理手順を説明する。図11は、高速パケット通信アプリケーション408がパケット通信を行なう場合の処理手順を説明する図である。
高速パケット通信アプリケーション408はDPDK481のポールモードドライバ482を通じてvirtioデバイス443を操作する。DPDK481においては、パケット受信処理はポーリング動作になる。すなわち、高速パケット通信アプリケーション408はポールモードドライバ482を通じてvirtioデバイス443から直接データを取りこむ。取り込むべきデータがvirtioデバイス443上に存在しない場合は、高速パケット通信アプリケーション408は何もせずに次の処理に進む。パケットを送信する場合は、高速パケット通信アプリケーション408は、ポールモードドライバ482を通じてvirtioデバイス443の送信ディスクリプタをチェックして空きがあればパケット送信を行う。送信ディスクリプタに空きがなければ、高速パケット通信アプリケーション408は何もせずに次の処理に進む。
なお、本実施形態ではホストオペレーティングシステム402としてLinux(登録商標)を用いたがこれに限定されることはない。また、本実施形態では高速パケット通信アプリケーション408およびポールモードドライバ482をDPDK481を用いて作成したものとしたが、これに限定されることはない。さらに、本実施形態では、準仮想化デバイスをvirtioとし、プロセッサエミュレータをqemuとしたがこれに限定されることはない。
[他の実施形態]
以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。また、それぞれの実施形態に含まれる別々の特徴を如何様に組み合わせたシステムまたは装置も、本発明の範疇に含まれる。
また、本発明は、複数の機器から構成されるシステムに適用されてもよいし、単体の装置に適用されてもよい。さらに、本発明は、実施形態の機能を実現する情報処理プログラムが、システムあるいは装置に直接あるいは遠隔から供給される場合にも適用可能である。したがって、本発明の機能をコンピュータで実現するために、コンピュータにインストールされるプログラム、あるいはそのプログラムを格納した媒体、そのプログラムをダウンロードさせるWWW(World Wide Web)サーバも、本発明の範疇に含まれる。特に、少なくとも、上述した実施形態に含まれる処理ステップをコンピュータに実行させるプログラムを格納した非一時的コンピュータ可読媒体(non-transitory computer readable medium)は本発明の範疇に含まれる。

Claims (10)

  1. ゲストオペレーティングシステムの上で動作するアプリケーションが用いるデバイスドライバに応じて前記デバイスドライバとのインタフェースを初期化する初期化手段を備え
    前記初期化手段は、前記デバイスドライバがポールモードドライバの場合、前記インタフェースを前記ポールモードドライバに適応したインタフェースとして初期化し、前記デバイスドライバがvirtioドライバの場合、前記インタフェースを前記virtioドライバに適応したインタフェースとして初期化する準仮想化ネットワークデバイス。
  2. 前記初期化手段は、前記ゲストオペレーティングシステムからの通知に基づき、前記デバイスドライバがポールモードドライバであるかvirtioドライバであるかを判定する判定手段を有し、前記判定手段による判定結果に応じた初期化を実行する請求項1に記載の準仮想化ネットワークデバイス。
  3. 前記ポールモードドライバに適応したインタフェースにおいては、前記ポールモードドライバを通じた高速パケット通信アプリケーションからのポーリングに応じてパケット通信を処理し、
    前記virtioドライバに適応したインタフェースにおいては、パケット受信時およびパケット送信完了時に前記virtioドライバに割込みを行いながら、ネットワークスタックを介して通常アプリケーションとのパケット通信を処理する請求項1または2に記載の準仮想化ネットワークデバイス。
  4. ホストオペレーティングシステム上で動作する仮想マシンと、前記仮想マシン上で動作するゲストペレーティングシステムとを有する情報処理装置であって、
    前記ホストオペレーティングシステム上で動作し、前記仮想マシンを形成するプロセッサエミュレータと、
    前記ゲストオペレーティングシステム上で動作するアプリケーションが用いるデバイスドライバに応じて、前記デバイスドライバとのインタフェースを初期化する初期化手段を備えた準仮想化ネットワークデバイスと、
    を備え、
    前記仮想マシンは、virtioドライバを用いる通常アプリケーションを備えた第1仮想マシンと、ポールモードドライバを用いる高速パケット通信アプリケーションを備えた第2仮想マシンとを備えた情報処理装置。
  5. 前記初期化手段は、前記ゲストオペレーティングシステムからの通知に基づき、前記デバイスドライバがポールモードドライバであるかvirtioドライバであるかを判定する判定手段を有し、前記判定手段による判定結果に応じた初期化を実行する請求項4に記載の情報処理装置。
  6. 前記デバイスドライバがポールモードドライバと判定されれば前記第2仮想マシンが形成され、前記デバイスドライバがvirtioドライバと判定されれば前記第1仮想マシンが形成される請求項5に記載の情報処理装置。
  7. 前記初期化手段により前記デバイスドライバがポールモードドライバと判定して実行された初期化が成功しなかった場合、前記第1仮想マシンが形成される請求項6に記載の情報処理装置。
  8. 前記第2仮想マシンにおいては、前記ポールモードドライバを通じた前記高速パケット通信アプリケーションからのポーリングに応じてパケット通信を処理し、
    前記第1仮想マシンにおいては、パケット受信時およびパケット送信完了時に前記virtioドライバに割込みを行いながら、ネットワークスタックを介して通常アプリケーションとのパケット通信を処理する請求項4乃至7のいずれか1項に記載の情報処理装置。
  9. ホストオペレーティングシステム上で動作する仮想マシンと、前記仮想マシン上で動作するゲストペレーティングシステムとを有する情報処理装置の制御方法であって、
    前記ホストオペレーティングシステム上で動作するプロセッサエミュレータが、前記仮想マシンを形成する仮想マシン形成ステップと、
    準仮想化ネットワークデバイスの初期化手段が、前記ゲストオペレーティングシステム上で動作するアプリケーションが用いるデバイスドライバに応じて、前記デバイスドライバとのインタフェースを初期化する初期化ステップと、
    を含み、
    前記初期化ステップにおいてvirtioドライバとのインタフェースが初期化されると、前記形成された仮想マシンが前記virtioドライバを用いる通常アプリケーションを備えた第1仮想マシンとして動作し、前記初期化ステップにおいてポールモードドライバとのインタフェースが初期化されると、前記形成された仮想マシンが前記ポールモードドライバを用いる高速パケット通信アプリケーションを備えた第2仮想マシンとして動作する情報処理装置の制御方法。
  10. ホストオペレーティングシステム上で動作する仮想マシンと、前記仮想マシン上で動作するゲストペレーティングシステムとを有する情報処理装置の制御プログラムであって、
    前記ホストオペレーティングシステム上で動作するプロセッサエミュレータが、前記仮想マシンを形成する仮想マシン形成ステップと、
    前記ゲストオペレーティングシステム上で動作するアプリケーションが用いるデバイスドライバに応じて、前記デバイスドライバとのインタフェースを初期化する初期化ステップと、
    をコンピュータに実行させ、
    前記初期化ステップにおいてvirtioドライバとのインタフェースが初期化されると、前記形成された仮想マシンが前記virtioドライバを用いる通常アプリケーションを備えた第1仮想マシンとして動作し、前記初期化ステップにおいてポールモードドライバとのインタフェースが初期化されると、前記形成された仮想マシンが前記ポールモードドライバを用いる高速パケット通信アプリケーションを備えた第2仮想マシンとして動作するようコンピュータに実行させる情報処理装置の制御プログラム。
JP2015121268A 2015-06-16 2015-06-16 準仮想化ネットワークデバイス、情報処理装置、情報処理方法、および情報処理プログラム Active JP6548010B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2015121268A JP6548010B2 (ja) 2015-06-16 2015-06-16 準仮想化ネットワークデバイス、情報処理装置、情報処理方法、および情報処理プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015121268A JP6548010B2 (ja) 2015-06-16 2015-06-16 準仮想化ネットワークデバイス、情報処理装置、情報処理方法、および情報処理プログラム

Publications (2)

Publication Number Publication Date
JP2017010070A JP2017010070A (ja) 2017-01-12
JP6548010B2 true JP6548010B2 (ja) 2019-07-24

Family

ID=57764413

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015121268A Active JP6548010B2 (ja) 2015-06-16 2015-06-16 準仮想化ネットワークデバイス、情報処理装置、情報処理方法、および情報処理プログラム

Country Status (1)

Country Link
JP (1) JP6548010B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US12001895B2 (en) * 2019-10-08 2024-06-04 Nippon Telegraph And Telephone Corporation Server delay control system, server delay control device, server delay control method, and program

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009134601A (ja) * 2007-11-30 2009-06-18 Fujitsu Ltd ディスクアクセス方式切替装置
JP4990940B2 (ja) * 2009-07-06 2012-08-01 株式会社日立製作所 計算機装置及びパス管理方法
JP2012018515A (ja) * 2010-07-07 2012-01-26 Fujitsu Ltd 情報処理装置,制御方法,制御プログラム
US9213567B2 (en) * 2010-10-01 2015-12-15 Futurewei Technologies, Inc. System and method for controlling the input/output of a virtualized network
US9311119B2 (en) * 2012-05-30 2016-04-12 Red Hat, Inc. Reconfiguring virtual machines
JP5960186B2 (ja) * 2014-04-03 2016-08-02 日本電信電話株式会社 仮想通信路構築システム、仮想通信路構築方法、及び仮想通信路構築プログラム

Also Published As

Publication number Publication date
JP2017010070A (ja) 2017-01-12

Similar Documents

Publication Publication Date Title
EP3556081B1 (en) Reconfigurable server
US9529773B2 (en) Systems and methods for enabling access to extensible remote storage over a network as local storage via a logical storage controller
US9176767B2 (en) Network interface card device pass-through with multiple nested hypervisors
JP7220163B2 (ja) ハードウェア仮想化のための方法及び装置
US8824492B2 (en) Accelerator system for remote data storage
JP6458798B2 (ja) コンピュータシステム、データ処理装置
US10684880B2 (en) Allocating and initializing I/O devices at virtual
US10169075B2 (en) Method for processing interrupt by virtualization platform, and related device
JP2009187368A (ja) Usbポートの共有制御方法
EP3242440A1 (en) Fault tolerant method, apparatus and system for virtual machine
US20150032910A1 (en) Input/output monitoring mechanism
JP7310924B2 (ja) サーバ内遅延制御装置、サーバ、サーバ内遅延制御方法およびプログラム
WO2014031430A1 (en) Systems and methods for sharing devices in a virtualization environment
CN109983741B (zh) 经由直接存储器访问设备在虚拟机之间传送分组
US10452570B1 (en) Presenting physical devices to virtual computers through bus controllers emulated on PCI express endpoints
JP7251648B2 (ja) サーバ内遅延制御システム、サーバ内遅延制御装置、サーバ内遅延制御方法およびプログラム
Zazo et al. A PCIe DMA engine to support the virtualization of 40 Gbps FPGA-accelerated network appliances
CN114691286A (zh) 服务器***、虚拟机创建方法及装置
JP6743696B2 (ja) 計算機システム、遠隔デバイスの接続管理方法及びプログラム
CN103092676A (zh) 虚拟机集群的模拟输入输出方法、装置及***
JP6548010B2 (ja) 準仮想化ネットワークデバイス、情報処理装置、情報処理方法、および情報処理プログラム
JP2015170887A (ja) パケット処理方法及びシステム
US9436644B1 (en) Apparatus and method for optimizing USB-over-IP data transactions
Xu et al. A hypervisor approach to enable live migration with passthrough SR-IOV network devices
US9229761B2 (en) Generating, at least in part, at least one packet indicating, at least in part, at least one command and/or issuing, at least in part, at least one result of execution, at least in part, of the at least one command

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180508

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20181228

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190124

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190315

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190402

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190521

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: 20190530

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190612

R150 Certificate of patent or registration of utility model

Ref document number: 6548010

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150