Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

JDM アーキテクチャの概要

非集約型Junos OSについて

多くのネットワーク機器ベンダーは、従来、ソフトウェアを専用のハードウェアに縛り付け、バンドルおよびパッケージ化されたソフトウェアとハードウェアの組み合わせを顧客に販売してきました。しかし、細分化されたJunos OSアーキテクチャにより、ジュニパーネットワークのデバイスは、クラウド指向でオープン、より柔軟な実装シナリオに依存するネットワークに合わせて調整できるようになりました。

細分化されたJunos OSアーキテクチャの基本原理は、緊密に束ねられたJunos OSソフトウェアと独自のハードウェアを、ジュニパーネットワークスのハードウェアだけでなく、ホワイトボックスやベアメタルサーバーでも実行できる仮想化コンポーネントに分解(分離)することです。この新しいアーキテクチャでは、Juniper デバイスマネージャー(JDM)は、ソフトウェアコンポーネントを管理する仮想化ルートコンテナです。

JDM は、細分化された Junos OS アーキテクチャにおける唯一のルート コンテナです(複数のルート コンテナが許可されるインダストリ モデルは他にもありますが、細分化された Junos OS アーキテクチャはその一つではありません)。細分化されたJunos OSは 、シングルルート モデルです。JDM の主要な機能の 1 つは、プラットフォーム上の変更やアクティビティが基盤となるホスト OS (通常は Linux) に影響を与えるのを防ぐことです。ルートエンティティとして、JDMはそのタスクに適しています。JDMのもう1つの主要な機能は、デバイスのハードウェアを従来のJunos OSベースの物理システムにできるだけ近づけることです。これには、なんらかの形のルート機能も必要です。

図 1 は、アーキテクチャ全体の中で JDM が占める重要な位置を示しています。

図1:Juniper デバイスマネージャーPosition of the Juniper Device Managerの位置

VNFは、完全に仮想化されたネットワーク環境をサポートするために必要なすべてのコンポーネントを含む統合製品です。VNFは、ネットワークの最適化に重点を置いています。

JDMでは以下が可能です。

  • ライフサイクル中のゲスト仮想ネットワーク機能(VNF)の管理。

  • サードパーティ製モジュールのインストール。

  • VNFサービスチェーンの形成

  • ゲストVNFイメージ(バイナリファイル)の管理。

  • システムインベントリとリソース使用の制御。

基本アーキテクチャの一部の実装には、通常のLinuxプラットフォームのハードウェアポートだけでなく、パケット転送エンジンも含まれていることに注意してください。これにより、ジュニパーネットワークスのデータプレーンと汎用プラットフォームのベアメタルハードウェアをより適切に統合できます。

細分化されたJunos OSアーキテクチャにより、JDM はファイアウォールや NAT(ネットワークアドレス変換)機能などの仮想化されたネットワーク機能を処理できます。JDMと統合されるその他のVNFおよびコンテナは、ジュニパーネットワークス製品でも、ネイティブLinuxアプリケーションとしてのサードパーティ製品でもかまいません。分離されたJunos OSの基本アーキテクチャを 図2に概略的に示します。

図2:基本的な細分化されたJunos OSアーキテクチャ Juniper Networks software-based platform architecture for virtualized network devices, showing control plane, management, guest VM, Linux apps, and x86 CPU.
手記:

基本的な細分化された Junos OS アーキテクチャをさまざまなプラットフォームに実装するには、複数の方法があります。詳細は大きく異なる場合があります。このトピックでは、アーキテクチャ全体について説明します。

固定ハードウェア上で実行される単純なソフトウェアプロセスの仮想化には、プロセス間通信の分野でいくつかの課題があります。たとえば、NAT機能を備えたVNFは、同じデバイス上でコンテナとして実行されているファイアウォールとどのように連携しますか?結局のところ、デバイス全体に外部イーサネットポートが1つまたは2つしかない場合があり、プロセスは依然としてデバイスの内部にあります。利点の 1 つは、これらの仮想化プロセス間のインターフェイスが、おそらく SXE ポートとして仮想化されることが多いという事実です。つまり、プロセス間で直接、またはプロセスとホストOS、次にホストOSと別のプロセスの間で、MACレイヤーブリッジのタイプを設定できます。これにより、トラフィックがデバイスに出入りする際のサービスのチェイニングがサポートされます。

JDMは、使い慣れたJunos OS CLIをユーザーに提供し、基盤となるLinuxカーネルとのすべてのやり取りを処理することで、ジュニパーネットワークスのデバイスの「ルックアンドフィール」を維持します。

細分化されたJunos OSのメリットには、次のようなものがあります。

  • サーバープラットフォームを管理するように、システム全体を管理できます。

  • お客様は、サードパーティのアプリケーション、ツール、サービス(Chef、Wiireshark、Quaggaなど)を仮想マシン(VM)またはコンテナにインストールできます。

  • これらのアプリケーションとツールは、一般的なLinuxリポジトリを使用してアップグレードでき、Junos OSのリリースに依存しません。

  • モジュール方式では、モジュール内に障害が封じ込められるため、信頼性が向上します。

  • コントロールプレーンとデータプレーンは、APIを介して直接プログラムできます。

物理コンポーネントと仮想コンポーネントの理解

細分化された Junos OS ネットワーク機能仮想化(NFV)環境では、デバイス コンポーネントは物理または仮想である可能性があります。インターフェイス(ポート)、パケットやフレームがデバイスを通過する経路、およびCPUコアやディスク容量などにも、物理と仮想の区別を適用できます。

細分化された Junos OS 仕様には、アーキテクチャ モデルが含まれています。家の建築モデルには、キッチン、屋根、ダイニング ルームを含む方向を含めることができ、さまざまな種類の住居を表すことができます。海辺のコテージから宮殿のような邸宅まで。これらの家はすべて非常に異なって見えますが、それでも基本的な建築モデルに従っており、多くの特徴を共有しています。

同様に、細分化されたJunos OSアーキテクチャモデルの場合、モデルは、単純なCPE(顧客構内機器)から大規模なデータセンターに設置された複雑なスイッチング機器まで、大きく異なるタイプのプラットフォームを対象としていますが、プラットフォームに共通するいくつかの基本的な特性があります。

これらのプラットフォームに共通する特徴は何ですか?細分化されたJunos OSプラットフォームはすべて、3つのレイヤー上に構築されています。これらの層と、考えられるいくつかのコンテンツを 図 3 に示します。

図3:細分化されたJunos OSLayered architecture diagram for a Juniper Networks system with Customer Software Layer for VNFs like vSRX 2.0, Platform Software Layer with Linux-KVM, and Hardware Layer featuring PFE and various ports.の物理層と仮想層

最下層はハードウェア層です。プラットフォームハードウェアには、メモリ(RAM)とディスク容量(SSD)に加えて、管理に使用される外部NICポートを備えたマルチコアCPUが搭載されています。場合によっては、コントロールプレーンとデータプレーンに使用される単一のNICポートがありますが、そのポートを使用して、ユーザートラフィックストリームのパケット転送エンジンと通信することもできます。

プラットフォームのソフトウェア層は、ハードウェア層の上に位置します。すべてのプラットフォーム依存機能はここで実行されます。これらの機能には、さまざまな仮想コンポーネント間のトラフィックをブリッジングするためのソフトウェアスイッチング機能を含めることができます。プラットフォームは Linux またはカーネルベースの仮想マシン(KVM)で実行され、一部のモデルでは、Phone Home エージェントがベンダーまたはサービス プロバイダーのデバイスに接続して自動構成タスクを実行します。Phone Home Agent は、小規模な CPE プラットフォームに特に適しています。

プラットフォームソフトウェア層の上には、カスタマソフトウェア層があり、プラットフォームに依存しないさまざまな機能を実行します。コンポーネントには、仮想SRX デバイス(vSRX仮想ファイアウォール)や Junos コントロールプレーン(JCP)などのジュニパーネットワークスの仮想マシンが含まれる場合があります。JCPはJDMと連携して、ジュニパーネットワークスの専用プラットフォームに似せつつ、はるかに柔軟性の高いデバイスを作成します。この柔軟性の多くは、仮想化ネットワーク機能(VNF)を実装する1つ以上のVNFをサポートする機能からもたらされます。これらのVNFは、NAT(ネットワークアドレス変換)、DNS(特殊ドメイン生成アルゴリズム)サーバー検索など、多くのタイプのタスクで構成されています。

一般に、CPU コアの数は決まっており、ディスク容量は有限です。しかし、仮想環境では、リソースの割り当てと使用はより複雑になります。インターフェイス、ディスク容量、メモリ、コアなどの仮想リソースは、VNFイメージによって決定される時点で実行中のVNF間で分割されます。

物理デバイスを共有する仮想マシン(VM)またはコンテナのいずれであっても、VNFはしばしば相互に通信する必要があります。パケットまたはフレームは、物理インターフェイス(ポート)を介してデバイスに入り、初期VNFに配信されます。トラフィックフローを何らかの処理した後、VNFはトラフィックを別のVNFに(設定されている場合は)に渡してから、トラフィックが物理デバイスを離れます。これらのVNFは、デバイス内を通過するデータプレーンサービスチェーンを形成します。

分離されたVMまたはコンテナであるVNFは、どのようにして一方から他方にトラフィックを渡すのでしょうか?サービスチェーンは、物理インターフェイスから1つ以上の内部仮想インターフェイスにトラフィックを渡すように設定されています。そのため、各VMまたはコンテナには仮想NICが関連付けられており、すべてデバイス内の仮想スイッチまたはブリッジ機能によって接続されています。物理インターフェイスと仮想インターフェイス間の通信を可能にするこの一般的な関係を 図 4 に示します。

図4:物理コンポーネントと仮想コンポーネントの通信 Network architecture diagram showing virtual machines communicating with a physical network via a hypervisor and virtual networking components.

プラットフォームによって異なる可能性があるこの一般的なモデルでは、データは物理 NIC のポートから入力され、宛先 MAC アドレスに基づいて、仮想スイッチ機能を介して仮想 NIC 1 を介して仮想マシン 1 にブリッジされます。トラフィックは、物理ポートに戻されてデバイスから出るまで、別の構成済み仮想インターフェイスを介して仮想マシン2つ以上のVNFにブリッジすることもできます。

設定上、これらのインターフェイスには、ge-0/0/0 や fxp0 などの使い慣れた指定もあれば、sxe0 や hsxe0 などの新しい指定もあります。一部は 実在するが、内部ポート (sxe0 など) であり、一部はデバイスを動作させるために必要な完全な仮想コンストラクト (hsxe0 など) である。

分散型の Junos OS VM

クラウドコンピューティングにより、大規模なデータセンターに散在するエンドポイントや複数のデータセンター間に散在するエンドポイントを接続するために必要なエンドユーザーのサーバー機能とネットワーク機能の両方で、仮想環境でアプリケーションを実行できます。アプリケーションやネットワーク機能は、仮想化ネットワーク機能(VNF)によって実装できます。これら 2 種類のパッケージの違いと、なぜどちらか一方の種類を使用するのでしょうか?

VNFとコンテナの両方で、数十または数百のVNFが1台の物理サーバーを共有して、ハードウェアの多重化が可能です。これにより、新しいサービスの迅速な導入だけでなく、使用頻度が高い時(延長が使用可能な場合)や物理的なメンテナンス時(移行が可能な場合)のワークロードの拡張や移行も可能になります。

クラウドコンピューティング環境では、VNFを使用して、現代のネットワークのビッグデータを特徴付ける大規模なサーバーファームでの負荷の高い作業を行うのが一般的です。サーバーの仮想化により、さまざまな開発環境、ハードウェアプラットフォーム、またはオペレーティングシステム向けに作成されたアプリケーションを、適切なソフトウェアスイートを実行する汎用ハードウェア上で実行することができます。

VNFは、ハイパーバイザーに依存して物理環境を管理し、特定の時間に実行中のVNF間でリソースを割り当てます。一般的なハイパーバイザーには、Xen、KVM、VMWare ESXiなどがありますが、他にも多くのハイパーバイザーがあります。VNFはハイパーバイザー上のユーザースペースで実行され、VMアプリケーションのオペレーティングシステムの完全な実装が含まれます。たとえば、C++ 言語で記述され、Microsoft Windows オペレーティング システムでコンパイルおよび実行されるアプリケーションは、ハイパーバイザーを使用して Linux オペレーティング システムで実行できます。この場合、Windows はゲスト OS です。

ハイパーバイザーは、VNFのハードウェアのエミュレートされたビューをゲストオペレーティングシステムに提供します。メモリのディスク容量などの他のリソースの中でも、ハイパーバイザーは、異なるVMのエンドポイントが異なるサーバーまたはホストに存在する場合(一般的な状況)、ネットワークインターフェイスカード(NIC)の仮想化ビューを提供します。ハイパーバイザーは物理NICを管理し、仮想化されたインターフェイスのみをVNFに公開します。

また、ハイパーバイザーは仮想スイッチ環境も実行しており、VLANフレームレイヤーのVNFが、同じボックス内または(仮想)ネットワークを介してパケットを交換できます。

VNFの最大の利点は、ほとんどのアプリケーションをハイパーバイザー環境に簡単に移植でき、変更なしで適切に動作できることです。

最大の欠点は、VNF全体の機能がドメインネームシステム(DNS)などの単純なサービスを提供することであっても、ゲストオペレーティングシステムのリソースを大量に消費するオーバーヘッドには、オペレーティングシステムの完全なバージョンが含まれていなければならないことが多いことです。

コンテナはVNFとは異なり、仮想環境で独立したタスクとして実行することを目的に構築されています。コンテナは、VNFのようにOS全体をコンテナ化しません。コンテナーはさまざまな方法でコーディングおよびバンドルできますが、保守と拡張が簡単な標準コンテナーを構築する方法もあります。標準コンテナは、でたらめに作成されたコンテナよりもはるかにオープンです。

標準Linuxコンテナは、標準コンテナと呼ばれるソフトウェア配信の単位を定義します。標準コンテナーは、ゲスト オペレーティング システム全体をカプセル化する代わりに、アプリケーションと、アプリケーションが実行するようにプログラムされているタスクを実行するために必要な依存関係のみをカプセル化します。この 1 つのランタイム要素は変更できますが、拡張機能に必要な追加の依存関係を含めるためにコンテナーを再構築する必要があります。コンテナの全体的なアーキテクチャを 図5に示します。

図5:コンテナ – アーキテクチャの全体 Containerized system architecture showing hardware, host operating system kernel, applications, and three isolated containers: Container 1, Container Root, Container 2.

コンテナーは、ハイパーバイザーではなく、ホスト OS カーネルで実行されます。コンテナアーキテクチャでは、コンテナエンジンを使用して基盤となるプラットフォームを管理します。VNFを引き続き実行したい場合は、コンテナでハイパーバイザーとゲストOS環境全体をパッケージ化することもできます。

標準コンテナには次のものが含まれます。

  • 構成ファイル。

  • 一連の標準操作。

  • 実行環境。

コンテナという名前は、世界中で商品を輸送するために使用される輸送用コンテナから借用されています。輸送用コンテナは、コンテナを処理するために特別に構築された機器によって積み込み、ラベル付け、積み重ね、吊り上げ、および積み降ろしができる標準的な配送単位です。中に何が入っていても、コンテナは標準的な方法で扱うことができ、各コンテナには他のコンテナでは使用できない独自のユーザースペースがあります。Dockerは、物理サーバー上でコンテナを実行するための一般的なコンテナ管理システムですが、DrawbridgeやRocketなどの代替手段を検討することもできます。

各コンテナには仮想インターフェイスが割り当てられます。Dockerなどのコンテナ管理システムには、複数の仮想インターフェイスと物理NICを接続する仮想イーサネットブリッジが含まれています。コンテナ内の設定変数と環境変数によって、どのコンテナが相互に通信できるか、どのコンテナが外部ネットワークを使用できるかなどが決まります。通常、外部ネットワークは NAT で実現されますが、コンテナは多くの場合、同じネットワーク アドレス空間を使用するため、他の方法もあります。

コンテナの最大の利点は、デバイスにロードして、VNFよりもはるかに高速に実行できることです。また、コンテナはリソースの使用を控えめに行います。同じハードウェア上で、VNFよりも多くのコンテナを実行できます。これは、コンテナーが完全なゲスト オペレーティング システムやブート時間を必要としないためです。コンテナの読み込みと実行は、数十秒ではなく、数ミリ秒で完了します。ただし、コンテナの最大の欠点は、VNFがネイティブな状態で実行できるのに対し、コンテナは何らかの標準または一般的な実装に準拠するように特別に記述する必要があることです。

Virtio と SR-IOV の使用法

virtio を使用するか、適切なハードウェアとシングルルート I/O 仮想化 (SR-IOV) を使用して、Linux ベースの仮想化デバイスとネットワーク機能仮想化 (NFV) モジュール間の通信を有効にすることができます。それぞれの方法には異なる特徴があります。

Virtio の使用状況を理解する

物理デバイスが仮想化されると、物理 NIC インターフェイスと外部物理スイッチの両方、および仮想 NIC インターフェイスと内部仮想スイッチの両方が共存します。そのため、デバイス内の孤立したVNFが、それぞれ独自のメモリとディスク容量、CPUサイクルを持ち、相互に通信しようとすると、使用中の複数のポート、MACアドレス、IPアドレスが課題となります。virtio ライブラリを使用すると、分離された仮想関数間のトラフィックフローがよりシンプルで簡単になります。

Virtio は、便利な仮想化関数の標準 Linux libvirt ライブラリの一部であり、通常、ほとんどのバージョンの Linux に含まれています。Virtioは、VNF間通信のためのソフトウェアのみのアプローチです。Virtio は、個々の仮想プロセスを接続する方法を提供します。virtio のバンドルされた性質により、Linux を実行するデバイスであればどのデバイスでも virtio を使用できます。

Virtio により、VNF とコンテナはシンプルな内部ブリッジを使用してトラフィックを送受信できます。トラフィックは引き続き外部ブリッジを通って出入りできます。外部ブリッジは、ブリッジの一端にある仮想化された内部 NIC インターフェイスと、ブリッジのもう一端にある物理外部 NIC インターフェイスを使用して、パケットとフレームを送受信します。内部ブリッジにはいくつかの種類があり、ホストOSの仮想化された内部スイッチ機能を介して、2つの仮想化された内部NICインターフェイスをブリッジングしてリンクします。virtio の全体的なアーキテクチャを 図 6 に示します。

図 6:Virtio Network architecture of virtual machines showing VMs connected to a virtual switch or bridge, linked to a physical NIC and port. による VNF ブリッジング

図6は、ホストOSで動作する単一の物理NICカードを備えたサーバーデバイスの内部構造を示しています(デバイスの外側のカバーは示されていません)。ホスト OS には、virtio で実装された仮想スイッチまたはブリッジが含まれます。OS の上には、複数の仮想マシンが virtio を介して通信する仮想 NIC を採用しています。図では 1 から N までの番号が付けられた複数の仮想マシンが実行されています。標準の "ドット ドット ドット" 表記は、図に示されていない使用可能な仮想マシンと NIC を示します。点線は、virtio を使用した可能なデータパスを示しています。デバイスに出入りするトラフィックは、物理 NIC とポートを介して行われることに注意してください。

図 6 は、内部ブリッジを介してデバイスに出入りするトラフィックも示しています。仮想マシン 1 は、仮想化された内部 NIC インターフェイスを物理外部 NIC インターフェイスにリンクします。仮想マシン 2 と仮想マシン N は、ホスト OS の内部ブリッジを介して内部仮想 NIC をリンクします。 これらのインターフェイスには、VLANラベルまたは内部インターフェイス名が関連付けられている場合があることに注意してください。VNF 間のこの内部ブリッジを介して送信されたフレームがデバイスから離れることはありません。ホストOSにおけるブリッジ(および仮想化されたスイッチ機能)の位置をメモします。 デバイスでのシンプルブリッジングの使用に注意してください。これらのブリッジは、通常の Linux コマンドまたは CLI 構成ステートメントを使用して構成できます。スクリプトを使用してプロセスを自動化できます。

Virtioは、ディスクおよびネットワークデバイスドライバーの仮想化標準です。ゲストデバイスドライバー(仮想化された機能のデバイスドライバー)のみが、仮想環境で実行されている ことを知る 必要があります。これらのドライバーはハイパーバイザーと連携し、仮想機能は、複雑さが増す見返りにパフォーマンス上の利点を得ます。Virtio は、アーキテクチャ的には Xen 準仮想化デバイスドライバー (Xen での実行時に高速化するためにゲストに追加されるドライバー) と似ていますが、同じではありません。VMWareのゲストツールもvirtioに似ています。

トラフィックの大部分はホストOSのCPU(より明確には仮想化された内部ブリッジ)に集中していることに注意してください。そのため、ホストCPUは、デバイスの拡張に合わせて適切にパフォーマンスを発揮できる必要があります。

SR-IOV の使用状況について

物理デバイスを仮想化すると、物理ネットワーク インターフェイス カード(NIC)インターフェイスと外部物理スイッチの両方、および仮想 NIC インターフェイスと内部仮想スイッチの両方が共存します。そのため、デバイス内の隔離された仮想マシン(VM)またはコンテナが、それぞれ独自のメモリとディスク容量、およびCPUサイクルを持ち、相互に通信しようとすると、使用中の複数のポート、MACアドレス、およびIPアドレスが課題をもたらします。

SR-IOV は、仮想化された機能の概念を物理 NIC にまで拡張します。単一の物理カードは、上位レイヤーで実行される仮想機能に対応する物理NICポートごとに最大16個のパーティションに分割されます。これらの仮想機能間の通信は、個々の NIC を持つデバイス間の通信が通常処理されるのと同じ方法、つまりブリッジを使用して処理されます。SR-IOV には、SR-IOV NIC スイッチを作成、削除、列挙、および照会するための一連の標準メソッドと、設定可能な標準パラメーターが含まれています。

SR-IOV の 単一ルート 部分は、実際には NIC の 1 つの プライマリ 部分のみがすべての 操作を制御するという事実 を指します。SR-IOV対応 NIC は、標準イーサネットポートであり、どのネットワークカードと同じビット 単位の物理的機能 を提供します。

ただし、SR-IOV にはいくつかの仮想機能も用意されており、これらは入出力タスクを処理する単純なキューによって実現されます。デバイス上で実行されている各VNFは、これらのNICパーティションの1つにマッピングされるため、VNF自体がNICハードウェアリソースに直接アクセスできます。NIC には、フレームをトラフィック キューに分類するシンプルなレイヤー 2 ソーター機能もあります。パケットは、ダイレクトメモリアクセス(DMA)を使用して、ネットワーク仮想機能とVMのメモリの間で直接移動され、ハイパーバイザーを完全にバイパスします。SR-IOV 操作における NIC の役割を 図 7 に示します。

図 7:SR-IOV VNF Communication Using SR-IOVを使用した VNF 通信

ハイパーバイザーは、仮想ネットワーク機能へのVNFの割り当てと物理カードの管理には関与しますが、パケット内のデータの転送には関与しません。VNF 間通信は、仮想 NIC 1、仮想 NIC 2、仮想 NIC N によって実行されることに注意してください。また、すべての仮想機能を追跡するNICの一部(図には示されていません)と、VNFと外部デバイスポート間のトラフィックを行き来するソーターもあります。

SR-IOV をサポートできるかどうかは、データ転送に DMA を使用するかどうかは、プラットフォームのハードウェア、特に NIC ハードウェアと、VNF またはコンテナのソフトウェアに依存します。パーティション分割可能なNICと必要な内部ブリッジングは、より高価になる傾向があり、そのため、それらを使用すると、より小さなデバイスのコストが大幅に増加する可能性があります。VNFとコンテナの書き換えも簡単な作業ではありません。

Virtio と SR-IOV の比較

Virtio は、便利な仮想化関数の標準 libvirt ライブラリの一部であり、通常、Linux のほとんどのバージョンに含まれています。Virtio はソフトウェアのみのアプローチを採用しています。SR-IOVでは、特定の方法で記述されたソフトウェアと専用のハードウェアが必要なため、シンプルなデバイスであってもコストが増加します。

一般的に、virtio の使用は迅速かつ簡単です。Libvirt はすべての Linux ディストリビューションの一部であり、ブリッジを確立するコマンドはよく理解されています。ただし、virtio はパフォーマンスの負担をすべてホスト OS に負わせます。ホスト OS は通常、VNF 間のすべてのトラフィックをデバイス内外にブリッジします。

一般的に、SR-IOV はレイテンシと CPU 使用率を低減します。つまり、ほぼネイティブな非仮想化デバイスのパフォーマンスです。ただし、VNFは1台のマシンのNICリソースに依存するため、あるデバイスから別のデバイスへのVNFの移行は複雑になります。また、VNFの転送状態は、SR-IOV NICに組み込まれたレイヤー2スイッチに存在します。このため、転送のルールはハードウェアにコード化され、頻繁に変更できないため、転送の柔軟性は低下しています。

virtio のサポートはほぼ普遍的ですが、SR-IOV のサポートは NIC ハードウェアやプラットフォームによって異なります。ジュニパーネットワークスNFX250ネットワークサービスプラットフォームは、SR-IOV機能をサポートしており、各物理NICポートに16個のパーティションを使用できます。

特定のVNFは、virtioまたはSR-IOVのいずれか、または両方の方法を同時に使用できることに注意してください(サポートされている場合)。

手記:

Virtio は、仮想化されたデバイスと NFV モジュール間の接続を確立するための推奨される方法です。