VPC-SIハイパーバイザによって提供される順序で vNIC インターフェイスを割り当てます。ハイパーバイザの CLI や GUI にリストされている vNIC の順序が、ハイパーバイザが VM に提供する方法と同じであることは保証できません。
VPC-SI が vNIC を検出する順序は PCI バスの列挙順に従い、準仮想デバイスも PCI バスで表されます。PCI バスは、同じレベルの追加デバイスの前にブリッジが探索される深さ優先の方法で列挙されます。すべてのネットワーク インターフェイスのタイプが同じ場合、PCI
トポロジを認識するだけで vNIC の正しい順序を取得できます。ネットワーク インターフェイスのタイプが異なる場合、その順序は PCI トポロジに加えて VM 内のデバイスドライバのロード順序に依存します。デバイスドライバのロード順序は、ソフトウェアのリリース順と同じである保証はありませんが、一般的には準仮想デバイスがパススルーデバイスよりも優先されます。
NIC を識別するために使用できる方式はいくつかあります。
仮想 PCI ID
PCI バス上のデバイスは、ドメイン、バス、デバイス、および機能番号と呼ばれる一意のタプルによって識別されます。これらの識別子は、いくつかの方法で識別できます。
ゲスト内では、lspci ユーティリティによって次のようにバスの設定が表示されます。
# lspci
00:00.0 Host bridge: Intel Corporation 440FX - 82441FX PMC [Natoma] (rev 02)
00:01.0 ISA bridge: Intel Corporation 82371SB PIIX3 ISA [Natoma/Triton II]
00:01.1 IDE interface: Intel Corporation 82371SB PIIX3 IDE [Natoma/Triton II]
00:01.2 USB controller: Intel Corporation 82371SB PIIX3 USB [Natoma/Triton II] (rev 01)
00:01.3 Bridge: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 03)
00:02.0 VGA compatible controller: Cirrus Logic GD 5446
00:03.0 System peripheral: Intel Corporation 6300ESB Watchdog Timer
00:04.0 Unclassified device [00ff]: Red Hat, Inc Virtio memory balloon
00:05.0 Ethernet controller: Red Hat, Inc Virtio network device
00:06.0 Ethernet controller: Red Hat, Inc Virtio network device
この仮想バスのドメイン、バス、デバイス、および機能番号を次に示します。
表 2. 仮想 PCI ID
回線
|
ドメイン
|
バス
|
デバイス
|
機能
|
00:00.0 Host bridge: Intel Corporation 440FX - 82441FX PMC [Natoma] (rev 02)
|
0
|
0
|
0
|
0
|
00:01.0 ISA bridge: Intel Corporation 82371SB PIIX3 ISA [Natoma/Triton II]
|
0
|
0
|
1
|
0
|
00:01.1 IDE インターフェイス:Intel Corporation 82371SB PIIX3 IDE [Natoma/Triton II]
|
0
|
0
|
1
|
1
|
00:01.2 USB コントローラ:Intel Corporation 82371SB PIIX3 USB [Natoma/Triton II] (rev 01)
|
0
|
0
|
1
|
2
|
00:01.3 ブリッジ:Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 03)
|
0
|
0
|
1
|
3
|
00:02.0 VGA 互換コントローラ:Cirrus Logic GD 5446
|
0
|
0
|
2
|
0
|
00:03.0 システム周辺機器:Intel Corporation 6300ESB ウォッチドッグタイマー
|
0
|
0
|
3
|
0
|
00:04.0 未分類のデバイス [00ff]:Red Hat、Inc Virtio メモリバルーニング
|
0
|
0
|
4
|
0
|
00:05.0 イーサネットコントローラ:Red Hat、Inc Virtio ネットワークデバイス
|
0
|
0
|
5
|
0
|
00:06.0 イーサネットコントローラ:Red Hat、Inc Virtio ネットワークデバイス
|
0
|
0
|
6
|
0
|
libvirt ベースの仮想マシンの場合は、virsh dumpxml コマンドから仮想 PCI バストポロジを取得できます。libvirt スキーマでは、デバイス番号に slot という用語が使用されることに注意してください。これは、前の例で使用した仮想マシンにおける xml の説明のスニペットです。
<interface type='bridge'>
<mac address='52:54:00:c2:d0:5f'/>
<source bridge='br3043'/>
<target dev='vnet0'/>
<model type='virtio'/>
<driver name='vhost' queues='8'/>
<alias name='net0'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
</interface>
<interface type='bridge'>
<mac address='52:54:00:c3:60:eb'/>
<source bridge='br0'/>
<target dev='vnet1'/>
<model type='virtio'/>
<alias name='net1'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
</interface>
インターフェイスタイプおよびインスタンス番号
ここで NIC は、Linux デバイスドライバの名前(virtio_net、vmxnet3、ixgbe、i40e など)とそのインスタンス番号を使用して、そのタイプによって識別されます。インスタンス番号は、そのタイプのインターフェイスの PCI
列挙順に基づいています。インスタンス番号 1 から始まります。インターフェイスタイプは、パススルーインターフェイスと SR-IOV 仮想機能だけでなく、両方の準仮想タイプを識別するために使用できます。PCI バス上のデバイスの PCI 列挙の順序は、ホスト
OS 上のlspci ユーティリティで確認できます。
たとえば、次のゲスト PCI トポロジの CF は、virtio_net インターフェイス番号 1 が 00:05.0 のイーサネットコントローラであり、virtio_net インターフェイス番号 2 が 00:06.0 のイーサネットコントローラであることを示しています。出力は、ゲストで実行された
lspci コマンドからのものです 。
# lspci
00:00.0 Host bridge: Intel Corporation 440FX - 82441FX PMC [Natoma] (rev 02)
00:01.0 ISA bridge: Intel Corporation 82371SB PIIX3 ISA [Natoma/Triton II]
00:01.1 IDE interface: Intel Corporation 82371SB PIIX3 IDE [Natoma/Triton II]
00:01.2 USB controller: Intel Corporation 82371SB PIIX3 USB [Natoma/Triton II] (rev 01)
00:01.3 Bridge: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 03)
00:02.0 VGA compatible controller: Cirrus Logic GD 5446
00:03.0 System peripheral: Intel Corporation 6300ESB Watchdog Timer
00:04.0 Unclassified device [00ff]: Red Hat, Inc Virtio memory balloon
00:05.0 Ethernet controller: Red Hat, Inc Virtio network device
00:06.0 Ethernet controller: Red Hat, Inc Virtio network device
サポートされている Linux ドライバの完全なリストを次に示します。
表 3. サポートされている Linux ドライバ
タイプ
|
PCI ベンダー/デバイス ID
|
ドライバ名
|
VIRTIO(KVM 用の準仮想 NIC)
|
0x10af / 0x1000
|
virtio_net
|
VMXNET3(VMware 用の準仮想 NIC)
|
0x15ad / 0x07b0
|
vmxnet3
|
Intel 10 ギガビットイーサネット
|
0x8086 / 0x10b6
0x8086 / 0x10c6
0x8086 / 0x10c7
0x8086 / 0x10c8
0x8086 / 0x150b
0x8086 / 0x10dd
0x8086 / 0x10ec
0x8086 / 0x10f1
0x8086 / 0x10e1
0x8086 / 0x10db
0x8086 / 0x1508
0x8086 / 0x10f7
0x8086 / 0x10fc
0x8086 / 0x1517
0x8086 / 0x10fb
0x8086 / 0x1507
0x8086 / 0x1514
0x8086 / 0x10f9
0x8086 / 0x152a
0x8086 / 0x1529
0x8086 / 0x151c
0x8086 / 0x10f8
0x8086 / 0x1528
0x8086 / 0x154d
0x8086 / 0x154f
0x8086 / 0x1557
|
ixgbe
|
Intel 10 ギガビット NIC 仮想機能
|
0x8086 / 0x10ed
0x8086 / 0x1515
|
ixgbevf
|
Cisco UCS NIC
|
0x1137 / 0x0043
0x1137 / 0x0044
0x1137 / 0x0071
|
enic
|
Mellanox ConnectX-5
|
0x15b3 / 0x1017
0x15b3 / 0x1018
|
mlx5_core
|
Intel XL 710 ファミリ NIC(PF)
|
0x8086 / 0x1572(40 ギガ)
0x8086 / 0x1574(40 ギガ)
0x8086 / 0x1580(40 ギガ)
0x8086 / 0x1581(40 ギガ)
0x8086 / 0x1583(40 ギガ)
0x8086 / 0x1584(40 ギガ)
0x8086 / 0x1585(40 ギガ)
0x8086 / 0x158a(25 ギガ)
0x8086 / 0x158b(25 ギガ)
|
i40e**
|
Intel XL 710 ファミリ NIC 仮想機能
|
0x8086 / 0x154c
|
i40evf
|
* * 注:i40eドライバの使用時に、ホスト上で作成された SRIOV VF に対して MAC アドレスの割り当てが動的に行われないという既知の問題が存在します。StarOS VM を起動するには、MAC アドレスの割り当てが必要です。回避策として、MAC アドレスの割り当てはホストから設定する必要があります。詳細は次のリンクを参照してください。https://www.intel.com/content/dam/www/public/us/en/documents/technology-briefs/xl710-sr-iov-config-guide-gbe-linux-brief.pdf