はじめに
このドキュメントでは、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(CatOS)
-
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パススルーおよびSR-IOVは、ホストのオペレーティングシステムを従来の仮想化方法と同じ程度に使用せずに、物理ネットワークデバイス(NICなど)を複数のVM間で直接共有できるようにすることで、これらのボトルネックに対処します。
PCIeパススルー
この戦略では、ハイパーバイザをバイパスして、仮想ネットワーク機能(VNF)がネットワークインターフェイスカード(NIC)に直接アクセスできるようにし、ほぼ最大のスループットを実現します。このアプローチはPCIパススルーと呼ばれ、ハイパーバイザの介入なしに完全なNICをゲストオペレーティングシステム専用にすることができます。この設定では、仮想マシンはNICに直接接続されているかのように動作します。たとえば、2枚のNICカードが使用可能な場合、それぞれが異なるVNFに排他的に割り当てられ、直接アクセスが提供されます。
ただし、この方法には欠点があります。2つのNICだけが使用可能で、2つの別個のVNFによって排他的に使用される場合、使用可能な専用のNICがないため、3つ目のVNFなどの追加の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(CatOS) |
GE0-0およびGE0-1 |
IXGBE |
Catalyst 8200 uCPE(CatOS) |
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.ノース – to – サウスのトラフィックにおけるDPDKおよびSR-IOVのパケットトラバーサル
ヒント:前述のようにOVSとDPDKを組み合わせて使用するシナリオを除き、仮想ネットワーク機能(VNF)内でSR-IOVとDPDKを統合することで、SR-IOVベースのセットアップのパフォーマンスを向上させることができます。
コンフィギュレーション
DPDKの有効化
GUIからDPDKを有効にするには、Configuration > Virtual Machine > Networking > Networksの順に移動する必要があります。メニューが表示されたら、スイッチをクリックして機能をアクティブにします
図 10DPDKアクティベーションのGUIで使用可能なスライドボタン
CLIの場合は、コンフィギュレーションモードでグローバルシステム設定から有効にする必要があります。
nfvis(config)# system settings dpdk enable
注意:DPDKは、NFVISから工場出荷時の設定にリセットしない限り無効にできません。
新しいネットワークを作成して新しいOVSブリッジに関連付ける
Configuration > Virtual Machine > Networking > Networksの順に移動します。Networksページで、Networksテーブルの左上のプラス記号(+)をクリックします。
図 11NFVIS GUIからのネットワークテーブルビュー
ネットワークに名前を付け、新しいブリッジに関連付けます。VLANとインターフェイスのバインドオプションは、ネットワークインフラストラクチャのニーズによって異なります。
図12. NFVIS GUIで仮想ネットワークを作成するための「ネットワークの追加」モーダル
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-1およびc8000v-3と通信する2つのOVS接続があり、c8000v-3にはc8000v-2との通信とGe0-2経由のの出力インターフェイスををする1つのOVSVNF接続がありますポートブリッジ(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のインストール