はじめに
このドキュメントでは、NFVISプラットフォームがエンタープライズネットワークおよびサービスネットワークでVNFと通信するために提供する仮想ネットワーキング方式について説明します。
使用するコンポーネント
このドキュメントの情報は、次のハードウェアおよびソフトウェア コンポーネントに基づくものです。
- NFVIS 4.7.1-FC4を実行するENCS5412
- nfvis 4.12.1-FC2を実行するc8300 uCPE 1N20
このドキュメントの情報は、特定のラボ環境にあるデバイスに基づいて作成されました。このドキュメントで使用するすべてのデバイスは、クリアな(デフォルト)設定で作業を開始しています。本稼働中のネットワークでは、各コマンドによって起こる可能性がある影響を十分確認してください。
NFVISのネットワーキングの概要
内部管理ネットワーク(int-mgmt-net)とブリッジ(int-mgmt-br)は、10.20.0.0/24サブネットから管理IPアドレスを割り当てて、VNFモニタリングのために内部的に使用されます。
ENCS54XXプラットフォーム

図 1.ハードウェアスイッチとWAN/LANアップリンクNICの内部接続
Catalyst 8200のuCPE
-
NFVISには、デフォルトでWANポートまたはGE0/2 LANポート経由でアクセスして管理できます。
-
WANネットワーク(wan-netおよびwan2-net)とWANブリッジ(wan-brおよびwan2-br)は、デフォルトでDHCPを有効にするように設定されています。GE0-0はデフォルトでWANブリッジに関連付けられ、GE0-1はWAN2ブリッジに関連付けられます。
-
Catalyst 8200 UCPEの管理IPアドレス192.168.1.1には、GE0-2を介してアクセスできます。
-
GE0-2はLANブリッジに関連付けられています。
-
内部管理ネットワーク(int-mgmt-net)とブリッジ(int-mgmt-br)が作成され、内部でシステムモニタリングに使用されます。

図 2: 8200 NICに割り当てられた内部ブリッジングおよび仮想スイッチ
Catalyst 8300 uCPE 1N20
1. NFVISには、管理用にFPGE(前面パネルギガビットイーサネット)WANポートまたはGE0-2 LANポートを介してデフォルトでアクセスできます
2. WANネットワーク(wan-net)とWANブリッジ(wan-br)は、デフォルトでDHCPを有効にするように設定されています。GE0-0はデフォルトでWANブリッジに関連付けられる
3. WANネットワーク(wan2-net)とWANブリッジ(wan2-br)はデフォルトで作成されますが、物理ポートには関連付けられません
4. GE0-2はLANブリッジに関連付けられており、他のすべてのポートはOVSに関連付けられていません
5. C8300-uCPEの管理IP 192.168.1.1には、GE0-2を介してアクセスできます
6. 内部管理ネットワーク(int-mgmt-net)とブリッジ(int-mgmt-br)が作成され、システムモニタリングのために内部で使用されます。

図 3: 8300 NICに割り当てられた内部ブリッジングおよび仮想スイッチ
ネットワーク仮想化テクノロジー
オープンvSwitch(OVS)
Open vSwitch(OVS)は、オープンソースのマルチレイヤ仮想スイッチであり、プログラムによる拡張によってネットワークの自動化を実現すると同時に、NetFlow、sFlow、IPFIX、RSPAN、CLI、LACP、802.1agなどの標準的な管理インターフェイスおよびプロトコルをサポートするように設計されています。大規模な仮想化環境で広く使用されており、特にハイパーバイザで仮想マシン(VM)間のネットワークトラフィックを管理するために使用されます。 NFVISインターフェイスを通じて直接管理される高度なネットワークトポロジとポリシーを作成でき、ネットワーク機能の仮想化に対応した汎用性の高い環境を提供します。

図 4:Linuxカーネル内のOVS設定
OVSブリッジ
仮想ネットワークブリッジとフローのルールを使用して、ホスト間でパケットを転送する物理スイッチのように動作し、仮想化されるだけです。

図 5.wan-brブリッジに接続された2つのVMまたはVNFの実装例
コンテキストスイッチング障害
ネットワークパケットがネットワークインターフェイスカード(NIC)に到着すると、プロセッサに対して割り込みをトリガーし、即座に対応が必要であることを示す信号を送信します。CPUは現在のタスクを一時停止して、割り込みを処理します。このプロセスは割り込み処理と呼ばれます。このフェーズの間、CPUはオペレーティングシステムカーネルの制御下で、NICからのパケットをメモリに読み込み、パケットの宛先と目的に基づいて次のステップを決定します。目標は、遅延を最小限に抑え、スループットを最大化しながら、目的のアプリケーションにパケットを迅速に処理またはルーティングすることです。
コンテキストスイッチングは、ある環境(コンテキスト)で実行されているタスクを別の環境(コンテキスト)に切り替えるプロセスです。これは、ユーザモードとカーネルモードの間を移動する場合に特に関連します。
-
ユーザモード:ほとんどのアプリケーションが実行される制限処理モードです。ユーザモードのアプリケーションは、ハードウェアや参照メモリに直接アクセスすることはできず、これらの操作を実行するにはオペレーティングシステムのカーネルと通信する必要があります。
-
カーネルモード:オペレーティングシステムにハードウェアとすべてのメモリへのフルアクセスを許可します。カーネルは任意のCPU命令を実行し、任意のメモリアドレスを参照できます。カーネルモードは、ハードウェアデバイスの管理、メモリ、システムコールの実行などのタスクを実行するために必要です。
カーネルレベルの特権を必要とする操作(ネットワークパケットの読み取りなど)をアプリケーションが実行する必要がある場合、コンテキストスイッチが発生します。CPUはユーザモードからカーネルモードに移行して動作を実行します。完了すると、別のコンテキストスイッチがCPUをユーザモードに戻し、アプリケーションの実行を続行します。このスイッチングプロセスは、システムの安定性とセキュリティを維持するために重要ですが、パフォーマンスに影響を与える可能性のあるオーバーヘッドが発生します。
OVSは主にオペレーティングシステムのユーザ空間で実行され、データスループットが増加するとボトルネックになる可能性があります。これは、パケットを処理するためにCPUをカーネルモードに移行するには、より多くのコンテキストスイッチが必要になるため、パフォーマンスが低下するためです。 この制限は、パケットレートが高い環境や正確なタイミングが重要な環境では特に顕著です。 これらのパフォーマンスの制限に対処し、最新の高速ネットワークの要求を満たすために、DPDK(Data Plane Development Kit)やSR-IOV(Single Root I/O Virtualization)などのテクノロジーが開発されました。
データプレーン開発キット(DPDK)
DPDKは、幅広いCPUアーキテクチャでパケット処理のワークロードを高速化するために設計されたライブラリとドライバのセットです。従来のカーネルネットワーキングスタックをバイパスすることで(コンテキストスイッチングを回避)、DPDKはデータプレーンのスループットを大幅に向上させ、遅延を低減できます。これは、低遅延の通信を必要とする高スループットのVNFに特に有効で、NFVISはパフォーマンス重視のネットワーク機能に最適なプラットフォームです。

図 6.従来のOVS(左側)およびDPDK OVS(右側)コンテキストスイッチングの最適化
OVS用のDPDKのサポートは、ENCS用のNFVIS 3.10.1およびその他のプラットフォーム用の3.12.2で開始されました。
- SRIOV付近のサービスチェーンスループットは、DPDK以外のOVSよりも優れています。
- VNFには仮想ドライバが必要です。
- 対応プラットフォーム:
- ENCS 3.10.1以降
- UCSE、UCS-C、CSP5K 3.12.1以降
- ポートチャネル用のDPDKは4.12.1からサポートされています。
- パケット/トラフィックキャプチャ:DPDKではサポートされません。
- PNICでのトラフィックのスパン:DPDKではサポートされません。
- OVS-DPDKを有効にした後は、個別の機能として無効にすることはできません。DPDKを無効にする唯一の方法は、工場出荷時の設定にリセットすることです。
データのコピー
従来のネットワーキングアプローチでは、VMメモリ内の宛先に到達する前にデータを何度もコピーする必要があります。たとえば、パケットはNICからカーネル空間にコピーされ、次に仮想スイッチ(OVSなど)で処理するためにユーザ空間にコピーされ、最後にVMメモリにコピーされます。カーネルネットワーキングスタックをバイパスすることでDPDKが提供するパフォーマンスの向上にもかかわらず、各コピー操作で遅延が発生し、CPU使用率が増加します。
これらのオーバーヘッドには、メモリコピーと、パケットをVMに転送する前にユーザ領域内でパケットを処理するのに必要な処理時間が含まれます。PCIe PassthroughおよびSR-IOVは、従来の仮想化方法と同じ程度にホストオペレーティングシステムを使用せずに、(NICのような)物理ネットワークデバイスを複数のVM間で直接共有できるようにすることで、これらのボトルネックに対処します。
PCIeパススルー
この戦略では、ハイパーバイザをバイパスして、仮想ネットワーク機能(VNF)がネットワークインターフェイスカード(NIC)に直接アクセスできるようにし、ほぼ最大のスループットを実現します。このアプローチはPCIパススルーと呼ばれ、ハイパーバイザの介入なしに完全なNICをゲストオペレーティングシステム専用にすることができます。この設定では、仮想マシンはNICに直接接続されているかのように動作します。たとえば、2枚のNICカードが使用可能な場合、それぞれに異なるVNFを排他的に割り当てて、ダイレクトアクセスを提供できます。
ただし、この方法には欠点があります。2つのNICだけが使用可能で、2つの別個のVNFによって排他的に使用される場合、使用可能な専用のNICがないため、追加のVNF(3つ目のVNFなど)はNICアクセスなしで残されます。 別のソリューションとして、シングルルートI/O仮想化(SR-IOV)を使用する方法があります。
シングルルートI/O仮想化(SR-IOV)
ネットワークインターフェイスカード(NIC)などの単一の物理PCIデバイスを複数の個別の仮想デバイスとして認識できるようにする仕様です。このテクノロジーは、物理ネットワークデバイスへのVMの直接アクセスを提供し、オーバーヘッドを削減してI/Oパフォーマンスを向上させます。単一のPCIeデバイスを複数の仮想スライスに分割し、各スライスを異なるVMまたはVNFに割り当てることにより、限られた数のNICによる制限を効果的に解決します。これらの仮想スライスは仮想機能(VF)と呼ばれ、複数のVNF間でNICリソースを共有できます。物理機能(PF)は、SR-IOV機能を促進する実際の物理コンポーネントを指します。
SR-IOVを活用することで、NFVISは専用のNICリソースを特定のVNFに割り当てることができます。これにより、ネットワークパケットのダイレクトメモリアクセス(DMA)を各VMメモリに直接割り当てることが容易になり、高いパフォーマンスと低遅延を実現できます。このアプローチでは、パケットを処理するだけのCPUの関与が最小限に抑えられるため、CPU使用率が低下します。これは、保証された帯域幅を必要とするアプリケーションや、厳しいパフォーマンス要件を持つアプリケーションで特に役立ちます。

図 7NFVIS SR-IOV PCIeリソースのハードウェア機能による分離
物理機能(PF)
これらの機能はフル装備のPCIe機能で、特定のネットワーク機能を提供する専用のハードウェアボックスを参照します。これらの機能はすべて、他のPCIeデバイスと同様に検出、管理、および操作が可能なPCIe機能です。物理機能には、PCIeデバイスの設定と制御に使用できるSR-IOV機能が含まれます。
仮想関数(VF)
最小限の構成リソース(軽量)で機能を合理化し、I/OをシンプルなPCIe機能として処理することに重点を置いています。すべての仮想関数は、物理関数から生成されます。デバイスハードウェアによって、仮想機能の数が制限されます。1つのイーサネットポートである物理デバイスは、多数の仮想機能に対応できます。その後、それらの機能を異なる仮想マシンに割り当てることができます。
NFVIS対応ハードウェアでのSR-IOVアクセラレーションの推奨ドライバ
Platform |
NIC |
NICドライバ |
ENCS 54XX |
バックプレーンスイッチ |
i40e |
ENCS 54XX |
GE0-0およびGE0-1 |
igb |
Catalyst 8200のuCPE |
GE0-0およびGE0-1 |
ixgbe |
Catalyst 8200のuCPE |
GE0-2およびGE0-5 |
igb |
DPDKとSR-IOVの使用例
DPDKプリファレンス
特に、ネットワークトラフィックが主に水平方向(つまり、同じサーバ内にとどまる)に流れるシナリオでは、DPDKはSR-IOVを上回ります。理論的根拠は単純です。NICにアクセスせずにトラフィックをサーバ内部で管理しても、SR-IOVには利点がありません。実際、SR-IOVは、トラフィックパスを不必要に拡張し、NICリソースを消費するため、非効率性を招く可能性があります。したがって、内部サーバトラフィック管理では、DPDKを活用する方がより効率的な選択です。

図 8.East-to-WestトラフィックでのDPDKおよびSR-IOVパケットトラバーサル
SR-IOVプリファレンス
ネットワークトラフィックが北から南へ、または東から西へ、特にサーバ間を流れる状況では、SR-IOVを使用する方がDPDKよりも有利です。これは特にサーバ間通信に当てはまります。このようなトラフィックは必ずNICを通過する必要があるため、DPDK拡張OVSを選択すると、不必要に複雑さが増し、パフォーマンスの制約が発生する可能性があります。したがって、このような状況ではSR-IOVが望ましい選択肢となり、サーバ間トラフィックを処理するための簡単で効率的なパスが提供されます。

図 9.北から南へのトラフィックでのDPDKおよびSR-IOVパケットトラバーサル
ヒント:前述のように、DPDKがOVSとともに使用されるシナリオを除き、Virtual Network Function(VNF;仮想ネットワーク機能)内でSR-IOVをDPDKと統合することで、SR-IOVベースのセットアップのパフォーマンスを強化できることを覚えておいてください。
コンフィギュレーション
DPDKの有効化
GUIからDPDKを有効にするには、Configuration > Virtual Machine > Networking > Networksの順に移動する必要があります。メニューに入ったら、スイッチをクリックして機能をアクティブにします

図 10DPDKアクティベーション用のスライドボタンをGUIで使用可能
CLIの場合、コンフィギュレーションモードでグローバルシステム設定からこのコマンドを有効にする必要があります。
nfvis(config)# system settings dpdk enable
注意:NFVISから工場出荷時の初期状態にリセットしない限り、DPDKを無効にすることはできません。
新しいネットワークを作成して新しいOVSブリッジに関連付ける
Configuration > Virtual Machine > Networking > Networksの順に選択します。Networksページで、Networksテーブルの左上のプラス記号(+)をクリックします。

図 11NFVIS GUIからのネットワークテーブルビュー
ネットワークに名前を付け、新しいブリッジに関連付けます。VLANとインターフェイスのバインドオプションは、ネットワークインフラストラクチャのニーズによって異なる場合があります。

図12. NFVIS GUIで仮想ネットワークを作成するための「Add Network」モーダル
submitボタンをクリックすると、Networksテーブルに追加された、新しく作成されたネットワークをレビューできる必要があります。

図 13.NFVIS GUIからのネットワークのテーブルビュー。「Refresh Icon」が右上隅にあります(赤で強調表示)。
注:新しいネットワークがテーブルに表示されない場合は、右上の更新ボタンをクリックするか、ページ全体を更新してください。
CLIからで実行した場合、すべてのネットワークとブリッジはコンフィギュレーションモードで作成され、ワークフローはGUIバージョンと同じです。
1. 新しいブリッジを作成します。
nfvis(config)# bridges bridge inter-vnf-br2
nfvis(config-bridge-inter-vnf-br2)# commit
2. 新しいネットワークを作成し、以前に作成したブリッジに関連付けます
nfvis(config)# networks network inter-vnf-net2 bridge inter-vnf-br2 trunk true native-vlan 1
nfvis(config-network-inter-vnf-net2)# commit
VNFの接続
ネットワークトポロジまたは単一VFNの導入から開始するには、Configuration > Deployに移動する必要があります。 VMまたはコンテナを選択リストからトポロジ作成領域にドラッグすると、仮想化インフラストラクチャの作成を開始できます。

図 14.導入例:c8000v-1はGe0-0 SR-IOVパススルーに接続され、カスタマイズされたOVS vnf間ネットワークです。c8000v-2には、c8000v-2と通信する2つのOVS接続があります1、c8000v-3、およびc8000v-3には1つのOVS intra-vnf接続があり、c8000v-2との通信およびGe0-2 LANポートブリッジ(OVS)を介した出力インターフェイスを許可します。
CLIからイメージと同じトポロジを作成できる場合:
c8000v-1の設定:
nfvis(config)# vm_lifecycle tenants tenant admin deployments deployment c8000v-1 vm_group c8000v-1 image c8000v-universalk9_16G_serial.17.09.04a.tar.gz flavor C8000V-small
nfvis(config-vm_group-c8kv_group)# interfaces interface 0 network GE0-0-SRIOV-1
nfvis(config-interface-0)# exit
nfvis(config-vm_group-c8kv_group)# interfaces interface 1 network inter-vnf-net
nfvis(config-interface-1)# exit
nfvis(config-vm_group-c8kv_group)# port_forwarding port ssh protocol TCP vnf_port 22 external_port_range 2228 2228
nfvis(config-external_port_range-2228/2228)# commit
c8000v-2の設定
nfvis(config)# vm_lifecycle tenants tenant admin deployments deployment c8000v-2 vm_group c8000v-2 image c8000v-universalk9_16G_serial.17.09.04a.tar.gz flavor C8000V-small
nfvis(config-vm_group-c8kv_group)# interfaces interface 0 network inter-vnf-net
nfvis(config-interface-0)# exit
nfvis(config-vm_group-c8kv_group)# interfaces interface 1 network inter-vnf-net2
nfvis(config-interface-1)# exit
nfvis(config-vm_group-c8kv_group)# port_forwarding port ssh protocol TCP vnf_port 22 external_port_range 2229 2229
nfvis(config-external_port_range-2229/2229)# commit
c8000v-3の設定:
nfvis(config)# vm_lifecycle tenants tenant admin deployments deployment c8000v-3 vm_group c8000v-3 image c8000v-universalk9_16G_serial.17.09.04a.tar.gz flavor C8000V-small
nfvis(config-vm_group-c8kv_group)# interfaces interface 0 network inter-vnf-net2
nfvis(config-interface-0)# exit
nfvis(config-vm_group-c8kv_group)# interfaces interface 1 lan-net
nfvis(config-interface-1)# exit
nfvis(config-vm_group-c8kv_group)# port_forwarding port ssh protocol TCP vnf_port 22 external_port_range 2230 2230
nfvis(config-external_port_range-2230/2230)# commit
関連記事およびドキュメント
エンタープライズNFVディープダイブおよびハンズオンラボ
USBを使用したEnterprise NFVISのインストール