高速ネットワークの設定

高速ネットワークとは

高速ネットワークは、Cisco Catalyst 8000V VM などの VM で single root I/O virtualization(SR-IOV)を有効にします。高速ネットワークのパスは仮想スイッチをバイパスし、ネットワークトラフィックの速度を上げ、ネットワークのパフォーマンスを向上させ、ネットワークの遅延とジッターを減らします。

通常、VM に出入りするすべてのネットワークトラフィックは、ホストと仮想スイッチを通過します。ただし、高速ネットワークでは、ネットワークトラフィックは仮想マシンのネットワーク インターフェイス(NIC)に到着し、VM に転送されます。したがって、仮想スイッチが適用するすべてのネットワークポリシーがオフロードされ、ハードウェアに適用されます。

Microsoft Azure で使用できる高速ネットワーク機能の詳細については、「Create a Linux VM With Accelerated Networking Using Azure CLI」を参照してください。

高速ネットワークは、Cisco Catalyst 8000V のパブリッククラウドの展開および政府機関のクラウドの展開で使用できます。

Azure-PMD のサポート

Azure の Azure-PMD(ポーリングモードドライバ)機能は、パフォーマンスを重視するアプリケーション向けに、より高速なユーザー空間のパケット処理フレームワークを提供します。このフレームワークは、仮想マシンのカーネルのネットワークスタックをバイパスします。カーネルのネットワークスタックを使用する一般的なパケット処理では、プロセスは割り込み駆動型です。ネットワーク インターフェイスが着信パケットを受信すると、パケットを処理するためのカーネルへの割り込みと、カーネル空間からユーザー空間へのコンテキストの切り替えが発生します。Azure-PMD は、コンテキストの切り替えと割り込み駆動方式を排除し、高速なパケット処理のためにポーリングモードドライバを使用するユーザー空間の実装を採用しています。

Microsoft Azure で Cisco Catalyst 8000V を実行するために Azure-PMD 機能を有効にすることができます。この機能により、高速ネットワークを使用する以前のバージョンと比較して、Cisco Catalyst 8000V インスタンスのパフォーマンスが向上します。

サポートされている VM インスタンスタイプ

次の VM インスタンスタイプは、高速ネットワーク機能をサポートしています。

IOS XE バージョン サポートされている VM インスタンスタイプ

17.4.x 以降

DS2_v2、D2_v2

DS3_v2、D3_v2

DS4_v2、D4_v2

F16s_v2

F32s_v2

Mellanox ハードウェアのサポート

Microsoft Azure クラウドには、高速ネットワーク機能をサポートする 2 種類のハードウェアがあります。次の表は、高速ネットワーク機能でサポートされている Mellanox のバージョンを示しています。

表 1. IOS バージョンと高速ネットワークの互換性マトリックス

IOS XE バージョン

高速ネットワークのサポート

MLX4 のサポート

MLX5 のサポート

Azure-PMD のサポート

17.4.x 以降

対応

対応

対応

対応


(注)  


現在、Mellanox ConnectX-3(CX3)vNIC は MLX4 ドライバを使用し、ConnectX-4 vNIC(CX4)は MLX5 ドライバを使用しています。VM の展開に Azure が使用する必要のある NIC(MLX4 または MLX5)は指定できません。

Cisco IOS XE 17.4.1 リリースでは、CX3 ドライバと CX4 ドライバの両方に Azure DPDK のフェールセーフ、TAP、MLX IOD モデルのサポートが追加されました。Cisco IOS XE 17.8.1 リリースから、DPDK のフェールセーフ、TAP、MLX I/O モデルは、DPDK NETVSC PMD I/O モデルに置き換えられました。この更新により、高速化されたネットワーク機能を使用する際のオーバーヘッドが軽減されます。


(注)  


スループットライセンスのパフォーマンスを有効にするには、高速ネットワーク機能を有効にする必要があります。


高速ネットワークの有効化

Cisco Catalyst 8000V インスタンスで高速ネットワークを有効にするには、router# show platform software system hypervisor コマンドを実行します。

Router#show platform software system hypervisor
Hypervisor: AZURE
Manufacturer: Microsoft Corporation
Product Name: Virtual Machine
Serial Number: 0000-0016-9163-0690-4834-7207-16
UUID: 80cbc2ea-29e6-cc43-93e9-f541876836f2
Image Variant: None

Cloud Metadata
-------------------
Region: eastus
Zone:
Instance ID: eac2cb80-e629-43cc-93e9-f541876836f2
Instance Type: Standard_DS4_v2
Version:
Image ID:
Publisher:
Offer:
SKU:

Interface Info
-------------------
Interface Number : 0
IPv4 Public IP: 192.168.61.135
IPv4 Private IP: 10.0.0.4
IPv4 Subnet Mask: 255.255.0.0
IPv4 Network: 192.168.0.3
IPv4 Gateway: 10.0.0.1
MAC Address: 000D3A103B48

Interface Number : 1
IPv4 Public IP:
IPv4 Private IP: 10.0.1.4
IPv4 Subnet Mask: 255.255.0.0
IPv4 Network: 192.168.1.3
IPv4 Gateway: 10.0.0.1
MAC Address: 000D3A103348

Interface Number : 2
IPv4 Public IP:
IPv4 Private IP: 10.0.4.4
IPv4 Subnet Mask: 255.255.0.0
IPv4 Network: 192.168.2.3
IPv4 Gateway: 10.0.0.1
MAC Address: 00224827BA0F

Interface Number : 3
IPv4 Public IP:
IPv4 Private IP: 10.0.3.4
IPv4 Subnet Mask: 255.255.0.0
IPv4 Network: 192.168.3.3
IPv4 Gateway: 10.0.0.1
MAC Address: 00224827B2A6

Interface Number : 4
IPv4 Public IP:
IPv4 Private IP: 10.0.4.4
IPv4 Subnet Mask: 255.255.0.0
IPv4 Network: 192.168.4.3
IPv4 Gateway: 10.0.0.1
MAC Address: 00224827B5CB

注意    


Microsoft Azure の制限により、Cisco Catalyst 8000V ルータのすべてのインターフェイスで高速ネットワークを有効にすると、1500 バイトを超えるパケットが Azure インフラストラクチャ全体で送信された場合、パフォーマンスが大幅に低下する可能性があります。Azure は 1438 バイトでパケットのフラグメント化を開始しシーケンスのパケットがドロップするため、パフォーマンスの低下が発生します。これは既知の問題であり、現在 Microsoft でサポートケースが開かれています。


高速ネットワークを有効にするには、az network nic コマンドと --accelerated-networking オプションを使用して vNIC を作成または変更します。az network nic コマンドに関する Microsoft Azure のドキュメントを参照し、次の例も参照してください。


(注)  


Cisco Catalyst 8000V インスタンスの作成方法によっては、Cisco Catalyst 8000V NIC で高速ネットワークが最初に無効になっている場合があります。NIC で高速ネットワークが無効になっていて、インターフェイスで高速ネットワークを有効にする場合は、次の例に示すコマンドのいずれかを使用します。


例 1

この例は、az network nic create コマンドと --accelerated-networking true オプションを使用して vNIC の「mynic1」を作成し高速ネットワークを有効にする方法を示しています。

az network nic create -n mynic1 -g "RG1" --accelerated-networking true -l "east us" --vnet-name "vnetname" --subnet "subnet1"

例 2

この例は、az network nic create コマンドと --accelerated-networking true オプションを使用して vNIC の「mynic2」を作成し高速ネットワークを有効にする方法を示しています。

az network nic create -n "mynic2" -g "RG1" --accelerated-networking true -l "east us" --vnet-name "vnetname" --subnet "subnet1"

例 3

この例は、az network nic update コマンドと --accelerated-networking true オプションを使用して vNIC の「mynic3」を変更し高速ネットワークを有効にする方法を示しています。

az network nic update -n mynic3 -g rg1 --accelerated-networking true

高速ネットワークの無効化

Cisco Catalyst 8000V の高速ネットワークを無効にするには、az network nic コマンドと --accelerated-networking オプションを使用して vNIC を作成または変更します。

コマンドの詳細については、az network nic コマンドに関する Microsoft Azure のドキュメントを参照してください。

この例は、az network nic update コマンドと --accelerated-networking false オプションを使用して、vNIC の 「mynic1」 を変更して高速ネットワークを無効にする方法を示しています。

az network nic update -n "mynic1" -g rg1 --accelerated-networking false

高速ネットワークの確認

NIC で高速ネットワークを有効にした後、次の IOS コマンドを使用して、NIC で高速ネットワークが有効になっているかどうかを確認します。Azure インフラストラクチャは、Mellanox NIC を使用して SR-IOV または高速ネットワークを実現します。

次のコマンドを使用して、パケットを処理するための NIC の I/O ドライバとして Mellanox カーネルドライバを使用することにより、Cisco Catalyst 8000V NIC を確認できます。さらに、Azure インフラストラクチャの HyperV サーバーにある Mellanox NIC は、結合インターフェイスを Cisco Catalyst 8000V のゲスト VM に提供します。この VM は高速ネットワークに使用され、高速ネットワークが有効になっているときは常に結合された状態になっています。

Cisco Catalyst 8000V 17.4.x の高速ネットワークの確認(Azure-PMD を使用)

NIC で高速ネットワークを有効にした後、次の IOS コマンドを使用して、Azure-PMD を使用した高速ネットワークが NIC で有効になっているかどうかを確認します。Azure インフラストラクチャは、Mellanox NIC を使用して SR-IOV または高速ネットワークを実現します。

次のコマンドを使用して、パケットを処理するための NIC の I/O ドライバとして Mellanox Azure-PMD ドライバを使用することで、Cisco Catalyst 8000V NIC を確認します。さらに、Azure インフラストラクチャの HyperV サーバーにある Mellanox NIC は、結合インターフェイスを Cisco Catalyst 8000V のゲスト VM に提供します。この VM は高速ネットワークに使用され、高速ネットワークが有効になっている間、VM は結合された状態になります。結合インターフェイスは同じ MAC アドレスを共有することに注意してください。集約カウンタは Gi インターフェイスに表示され、非高速パケットカウンタは net_tap インターフェイスに表示されます。高速パケットカウンタは、net_mlx インターフェイスに表示されます。

次の例では、インターフェイス Gi2 が、パケットの大部分が net_mlx インターフェイス上を流れていることを示しています。

Router#show platform hard qfp act dat pmd controllers | inc NIC|good_packets
NIC extended stats for port 0  (Gi1) net_failsafe 000d.3a8f.1bf1 xstats count 13
  rx_good_packets: 411
  tx_good_packets: 326
NIC extended stats for port 1  (Bonded) net_mlx5 000d.3a8f.1bf1 xstats count 35
  rx_good_packets: 389
  tx_good_packets: 326
NIC extended stats for port 2  (Bonded) net_tap 000d.3a8f.1bf1 xstats count 13
  rx_good_packets: 22
  tx_good_packets: 0
NIC extended stats for port 3  (Gi2) net_failsafe 000d.3a8f.1040 xstats count 13
  rx_good_packets: 10638289
  tx_good_packets: 3634525
NIC extended stats for port 4  (Bonded) net_mlx5 000d.3a8f.1040 xstats count 35
  rx_good_packets: 10639534.  ==>>> This verifies Accelerated Networking is working properly for RX
  tx_good_packets: 3636099     ==>>> This verifies Accelerated Networking is working properly for TX
NIC extended stats for port 5  (Bonded) net_tap 000d.3a8f.1040 xstats count 13
  rx_good_packets: 291
  tx_good_packets: 0
NIC extended stats for port 6  (Gi3) net_failsafe 000d.3a8f.1a90 xstats count 13
  rx_good_packets: 3637187
  tx_good_packets: 10522981
NIC extended stats for port 7  (Bonded) net_mlx5 000d.3a8f.1a90 xstats count 35
  rx_good_packets: 3638631
  tx_good_packets: 10524554
NIC extended stats for port 8  (Bonded) net_tap 000d.3a8f.1a90 xstats count 13
  rx_good_packets: 28
  tx_good_packets: 0

Cisco Catalyst 8000V 17.8.x の高速ネットワークの確認(Azure PMD を使用)

Cisco IOS XE 17.8.1 リリースから、以前の DPDK のフェールセーフ、TAP、MLX I/O モデルは、DPDK NETVSC PMD I/O モデルに置き換えられました。次のコマンドを使用して、Cisco IOS XE リリース 17.8.x で実行されている Cisco Catalyst 8000V で高速ネットワーク機能を確認します。

show platform hardware qfp act dat pmd controllers コマンドは、net_netvsc ポートに結合されたデバイスを表示します。

Router#show platform hardware qfp active datapath pmd controllers | inc NIC |good_packets
NIC extended stats for port 0 (Gi2) net_netvsc 000d.3a10.3348 xstats count 56
rx_good_packets: 411
tx_good_packets: 350
tx_q0_good_packets: 311
rx_q0_good_packets: 100
vf_rx_good_packets: 487
vf_tx_good_packets: 350
NIC extended stats for port 1 (Gi1) net_netvsc 000d.3a10.3b48 xstats count 56
rx_good_packets: 60359
tx_good_packets: 55464
tx_q0_good_packets: 6579
rx_q0_good_packets: 5633
vf_rx_good_packets: 53780  ==>>> This verifies Accelerated Networking is working properly for RX
vf_tx_good_packets: 49831  ==>>> This verifies Accelerated Networking is working properly for TX
NIC extended stats for port 2 (Gi4) net_netvsc 0022.4827.b2a6 xstats count 56
rx_good_packets: 0
tx_good_packets: 0
tx_q0_good_packets: 0
rx_q0_good_packets: 0
vf_rx_good_packets: 0
vf_tx_good_packets: 0
NIC extended stats for port 3 (Gi5) net_netvsc 0022.4827.b5cb xstats count 56
rx_good_packets: 0
tx_good_packets: 0
tx_q0_good_packets: 0
rx_q0_good_packets: 0
vf_rx_good_packets: 0
vf_tx_good_packets: 0
NIC extended stats for port 4 (Gi3) net_netvsc 0022.4827.ba0f xstats count 56
rx_good_packets: 0
tx_good_packets: 0
tx_q0_good_packets: 0
rx_q0_good_packets: 0
vf_rx_good_packets: 0
vf_tx_good_packets: 0
NIC extended stats for port 5 (Bonded) net_mlx4 0022.4827.b2a6 xstats count 13
rx_good_packets: 0
tx_good_packets: 0
NIC extended stats for port 6 (Bonded) net_mlx4 0022.4827.b5cb xstats count 13
rx_good_packets: 0
tx_good_packets: 0
NIC extended stats for port 7 (Bonded) net_mlx4 000d.3a10.3b48 xstats count 13
rx_good_packets: 54726
tx_good_packets: 65464
NIC extended stats for port 8 (Bonded) net_mlx4 0022.4827.ba0f xstats count 13
rx_good_packets: 363863
tx_good_packets: 105245
NIC extended stats for port 9 (Bonded) net_mlx4 000d.3a10.3348 xstats count 13
rx_good_packets: 0
tx_good_packets: 0

show platform software vnic-if interface-mapping コマンドは、net_netvsc ドライバが Cisco IOS XE 17.8.1 リリースから使用されていることを示します。

show platform software vnic-if interface-mapping
-------------------------------------------------------------
 Interface Name        Driver Name         Mac Addr
-------------------------------------------------------------
 GigabitEthernet3       net_netvsc         000d.3a4e.7542
 GigabitEthernet2       net_netvsc         000d.3a4e.7163
 GigabitEthernet1       net_netvsc         000d.3a4e.757d
-------------------------------------------------------------

show platform software vnic database コマンドは、MLX4 または MLX5 が存在するかどうかを示し、使用されている PMD も示します。

show platform software vnic-if database
vNIC Database
  eth00_1572882209232255500
    Device Name : eth0
    Driver Name : mlx5_pci
    MAC Address : 000d.3a4e.757d
    PCI DBDF    : b421:00:02.0
    Server      : IFDEV_SERVER_KERN
    Management  : no
    Status      : bonded
  eth01_1572882212261074300
    Device Name : eth1
    Driver Name : mlx5_pci
    MAC Address : 000d.3a4e.7542
    PCI DBDF    : 83e2:00:02.0
    Server      : IFDEV_SERVER_KERN
    Management  : no
    Status      : bonded
  eth02_1572882215293497600
    Device Name : eth2
    Driver Name : mlx5_pci
    MAC Address : 000d.3a4e.7163
    PCI DBDF    : be1d:00:02.0
    Server      : IFDEV_SERVER_KERN
    Management  : no
    Status      : bonded
  eth_15__1572882218326526600
    Device Name : Gi1
    Driver Name : hv_netvsc
    MAC Address : 000d.3a4e.757d
    PCI DBDF    : 000d3a1f-26f8-000d-3a1f-26f8000d3a1f
    Server      : IFDEV_SERVER_UIO
    Management  : no
    Status      : supported
  eth_16__1572882223436559900
    Device Name : Gi2
    Driver Name : hv_netvsc
    MAC Address : 000d.3a4e.7163
    PCI DBDF    : 000d3a1f-26f8-000d-3a1f-26f8000d3a1f  
    Server      : IFDEV_SERVER_UIO
    Management  : no
    Status      : supported
  eth_17__1572882228553741500
    Device Name : Gi3
    Driver Name : hv_netvsc
    MAC Address : 000d.3a4e.7542
    PCI DBDF    : 000d3a1f-26f8-000d-3a1f-26f8000d3a1f    
    Server      : IFDEV_SERVER_UIO
    Management  : no
    Status      : supported