加速網路概觀
本文內容
福利
限制和條件約束
相關內容
警告
本文會參考 CentOS,這是生命週期結束 (EOL) 狀態的 Linux 發行版本。 請據以考慮您的使用和規劃。 如需詳細資訊,請參閱 CentOS 生命週期結束指導 。
本文說明加速網路的優點、條件約束及支援設定。 加速網路可在支援的虛擬機 (VM) 類型上啟用單一根目錄 I/O 虛擬化 (SR-IOV) ,大幅改善網路效能。 這個高效能資料路徑會略過主機,進而減少延遲、抖動及 CPU 使用率,供最嚴苛的網路工作負載使用。
下圖說明兩個 VM 如何在有與沒有加速網路的情況下通訊。
如果沒有加速網路 ,進出 VM 的所有網路流量都會周遊主機和虛擬交換器。
虛擬交換器 提供網路流量的所有原則強制執行。 原則包括網路安全組、存取控制清單、隔離及其他網路虛擬化服務。
如果使用加速網路 ,抵達 VM 網路介面 (NIC) 的網路流量會直接轉送至 VM。 加速網路卸載虛擬交換器套用的所有網路原則,並將它們套用在硬體中。 因為硬體會套用原則,因此 NIC 可以直接將網路流量轉送至 VM。 NIC 會略過主機和虛擬交換器,同時保留在主機中套用的所有原則。
加速網路具有下列優點:
較低的延遲和較高的每秒封包數目 。 從資料路徑中移除虛擬交換器,可以消除封包在主機中進行原則處理所花費的時間。 它也會增加 VM 可以處理的封包數。
減少抖動 。 虛擬交換器的處理時間取決於要套用的原則數量,以及執行處理之 CPU 的工作負載。 將原則強制執行卸載到硬體,可藉由將封包直接傳遞至 VM 來移除該變異性。 卸載還消除了主機到 VM 的通訊、所有軟體中斷以及所有內容切換。
CPU 使用率降低 。 略過主機中的虛擬交換器會導致處理網路流量的 CPU 使用率降低。
加速網路的優點僅適用於啟用它的 VM。
為了獲得最佳結果,請在相同 Azure 虛擬網路中的至少兩個 VM 上啟用加速網路。 當您跨虛擬網路通訊或連線內部部署時,這項功能對延遲的影響最小。
您無法在執行中的 VM 上啟用加速網路。 只有當 VM 停止並解除配置時,才可以在支援的 VM 上啟用加速網路功能。
您無法透過 Azure Resource Manager 部署具有加速網路的虛擬機器 (傳統版)。
Azure 平台不會更新 VM 中的 Mellanox NIC 驅動程式。 對於執行 Linux 和 FreeBSD 的 VM,建議客戶隨時掌握發行版所提供的最新核心更新。 對於執行 Windows 的 VM,如果稍後遇到使用 Marketplace 映像傳遞的驅動程式或套用至自定義映像的驅動程式,客戶應該從 NVIDIA 支援頁面套用更新的驅動程式。
加速網路適用於所有的全球 Azure 區域和 Azure Government 雲端。
下列版本的 Windows 支援加速網路:
Windows Server 2022
Windows Server 2019 Standard/Datacenter
Windows Server 2016 Standard/Datacenter
Windows Server 2012 R2 Standard/Datacenter
Windows 10 21H2 版或更新版本,包括 Windows 10 企業版多重工作階段
Windows 11,包括 Windows 11 企業版多重工作階段
下列來自 Azure Marketplace 的 Linux 和 FreeBSD 散發套件支援立即加速網路:
搭載 linux-azure 核心的 Ubuntu 14.04
Ubuntu 16.04 或更新版本
SLES12 SP3 或更新版本
RHEL 7.4 或更新版本
CentOS 7.4 或更新版本
CoreOS Linux
具有反向移植核心的 Debian "Stretch"
Debian "Buster" 或更新版本
搭載 Red Hat 相容核心 (RHCK) 的 Oracle Linux 7.4 和更新版本
使用 UEK 版本 5 的 Oracle Linux 7.5 和更新版本
FreeBSD 10.4、11.1、12.0 或更新版本
具有兩個或多個 vCPU 的一般用途和計算最佳化 VM 執行個體大小都支援加速網路。 在支援超執行緒的執行個體上,具有四個或多個 vCPU 的 VM 執行個體支援加速網路。
若要檢查 VM 大小是否支援加速網路,請參閱 Azure 中的虛擬機器大小 。
您可以使用 Azure CLI az vm list-skus 命令,直接查詢支援加速網路的 VM SKU 清單:
az vm list-skus \
--location westus \
--all true \
--resource-type virtualMachines \
--query '[].{size:size, name:name, acceleratedNetworkingEnabled: capabilities[?name==`AcceleratedNetworkingEnabled`].value | [0]}' \
--output table
注意
雖然 NC 和 NV 大小會出現在命令輸出中,但這些大小不支援加速網路。 在 NC 或 NV VM 上啟用加速網路沒有任何作用。
如果您使用支援加速網路的自定義映像,請確定您符合下列需求。
任何支援加速網路的自定義映像都必須包含針對 Azure 平臺上使用的網路配接器 (NIC) 啟用單一根 I/O 虛擬化的驅動程式。 此硬件清單包含 NVIDIA ConnectX-3、ConnectX-4 Lx、ConnectX-5 和 Microsoft Azure 網络適配器 (MANA) 。
加速網路需要客體OS映像,才能正確處理要以動態方式移除或新增的虛擬函式。 主機維護或即時移轉等案例會導致在維護事件之後動態撤銷虛擬函式和還原。 此外,應用程式必須確保它們系結至綜合裝置,而不是虛擬功能,以便在這些事件期間維護網路連線。
如需應用程式繫結需求的詳細資訊,請參閱加速網路在 Linux 和 FreeBSD VM 中的運作方式 。
加速網路需要將 NVIDIA 驅動程式標示為非受控裝置的網路設定。 cloud-init 19.4 版或更新版本的映像已正確設定網路功能,以在佈建期間支援加速網路。 我們強烈建議您不要在自訂映像上執行競爭的網路介面軟體 (例如 ifupdown 和 networkd),而且您不會直接在多個介面上執行 dhcpclient。
以下範例顯示 RHEL 或 CentOS 上 NetworkManager
的範例設定插入:
sudo cat <<EOF > /etc/udev/rules.d/68-azure-sriov-nm-unmanaged.rules
SUBSYSTEM=="net" , DRIVERS=="hv_pci" , ACTION!="remove" , ENV{NM_UNMANAGED}="1"
EOF
下列範例顯示 openSUSE 或 SLES 上 networkd
的範例設定插入:
sudo mkdir -p /etc/systemd/network
sudo cat > /etc/systemd/network/99-azure-unmanaged-devices.network <<EOF
[Match]
Driver=mlx4_en mlx5_en mlx4_core mlx5_core
[Link]
Unmanaged=yes
EOF
下列範例顯示 Ubuntu、Debian 或 Flatcar 上 networkd
的範例設定插入:
sudo mkdir -p /etc/systemd/network
sudo cat > /etc/systemd/network/99-azure-unmanaged-devices.network <<EOF
[Match]
Driver=mlx4_en mlx5_en mlx4_core mlx5_core
[Link]
Unmanaged=yes
EOF
針對 NVIDIA 驅動程式:確認封包正在 VF 介面上流動
針對 MANA 驅動程式:確認流量正流經 MANA