Linux VM 搭配 Microsoft Azure 網路介面卡

瞭解如何使用 Microsoft Azure 網路介面卡 (MANA) 在 Azure 改善 Linux 虛擬機器 (VM) 的效能和可用性。

如需 Windows 支援,請參閱 Windows VM 搭配 Microsoft Azure 網路介面卡

如需 MANA 的詳細資訊,請參閱 Microsoft Azure 網路介面卡概觀

支援的 Azure Marketplace 映像

許多 Azure Marketplace 的 Linux 映像在 MANA 有內建的乙太網路驅動程式支援:

作業系統支援細節詳見 Azure 加速網路概覽

附註

新版 MANA 功能正在積極開發中,且 Linux 分銷商與 Microsoft 合作,透過上游變更來更新核心程序。 更新的步調會因分銷商而異。 發行版本和核心程序越新,就越有可能擁有最新更新。

檢查 MANA 支援的狀態

由於 MANA 功能集同時需要主機硬體和 VM 軟體元件,您必須執行下列檢查,確保 MANA 可在 VM 正常運作。

Azure 入口網站檢查

確保至少有一個 NIC 已啟用加速網路:

  1. 在 VM 的 Azure 入口網站頁面,從左側功能表選取 [網路]
  2. [網路設定] 頁面上,將 [網路介面] 選為您的 NIC。
  3. [NIC 概觀] 窗格的 [基本資訊] 底下,注意 [加速網路] 設為 [啟用][停用]

硬體檢查

啟用加速網路功能後,您可以在虛擬機器將底層 MANA NIC 指定為 PCI 裝置:

$ lspci
7870:00:00.0 Ethernet controller: Microsoft Corporation Device 00ba

如果你看到其他乙太網路控制器裝置,你就不會使用 MANA。 在 後續步驟 中,你也應該確認 MANA 介面已正確初始化並結合。

核心程序版本檢查

確認您的 VM 已安裝 MANA 乙太網路驅動程式:

$ grep /mana*.ko /lib/modules/$(uname -r)/modules.builtin || find /lib/modules/$(uname -r)/kernel -name mana*.ko*

kernel/drivers/net/ethernet/microsoft/mana/mana.ko

更新核心程序

MANA 的乙太網路驅動程式已包含在核心程序 5.15 版和更新版本。 核心程序 6.2 版包含 InfiniBand/RDMA 和 DPDK 等功能的 Linux 支援。 舊版或分支核心程序版本 (5.15 和 6.1) 需要向後移植的支援。 作業系統支援細節詳見 Azure 加速網路概覽

若要更新 VM 的 Linux 核心程序,請檢查特定發行版本的文件。

確認流量流經 MANA

您為 VM 設定的每個虛擬 NIC (vNIC),在啟用加速網路功能後,都會在 VM 中產生兩個網路介面。 以下範例示範單一 NIC 組態的 eth0enP30832p0s0

$ ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
    link/ether 00:22:48:71:c2:8c brd ff:ff:ff:ff:ff:ff
    alias Network Device
3: enP30832p0s0: <BROADCAST,MULTICAST,CHILD,UP,LOWER_UP> mtu 1500 qdisc mq master eth0 state UP mode DEFAULT group default qlen 1000
    link/ether 00:22:48:71:c2:8c brd ff:ff:ff:ff:ff:ff
    altname enP30832s1296119428

eth0 介面是網路虛擬服務用戶端 (NetVSC) 驅動程式所服務的主要連接埠,也是 vNIC 的可路由介面。 相關聯的 enP* 介面代表 MANA 虛擬函式 (VF),在此案例中繫結至 eth0 介面。 您可以從可路由的 ethN 介面取得 MANA VF 的封包和位元組計數:

$ ethtool -S eth0 | grep -E "^[ \t]+vf"
     vf_rx_packets: 226418
     vf_rx_bytes: 99557501
     vf_tx_packets: 300422
     vf_tx_bytes: 76231291
     vf_tx_dropped: 0

如果與 VF 相關的值為 0 或沒有遞增,表示你沒有在使用虛擬函數。

後續步驟