Hyper-V 網路驅動程式

相容性

此驅動程式與 Windows Server 2012 R2、2016 和 Windows 10 相容。

特性

校驗和解除安裝

netvsc 驅動程式支援校驗和解除安裝,只要 Hyper-V 主機版本支援。 Windows Server 2016 和 Azure 支援 IPv4 和 IPv6 的 TCP 和 UDP 校驗和解除安裝。 Windows Server 2012 僅支援 TCP 的校驗和解除安裝。

接收端縮放

Hyper-V 支援接收端縮放。對於 TCP 和 UDP,資料包可以根據 IP 地址和埠號分配到可用的佇列中。

對於 TCP 和 UDP,我們可以透過 ethtool 命令在 L3 和 L4 之間切換雜湊級別。 TCP/UDP over IPv4 和 v6 可以設定不同。預設雜湊級別為 L4。我們目前只允許從訪客內部切換 TX 雜湊級別。

在 Azure 上,分片的 UDP 資料包在使用 L4 雜湊時具有較高的丟包率。在這種情況下,建議使用 L3 雜湊。

例如,對於 eth0 上的 UDP over IPv4

要在雜湊中包含 UDP 埠號

ethtool -N eth0 rx-flow-hash udp4 sdfn

要在雜湊中排除 UDP 埠號

ethtool -N eth0 rx-flow-hash udp4 sd

要顯示 UDP 雜湊級別

ethtool -n eth0 rx-flow-hash udp4

通用接收解除安裝,又名 GRO

該驅動程式支援 GRO,並且預設情況下已啟用。 GRO 合併類似的資料包,並顯著降低重 Rx 負載下的 CPU 使用率。

大型接收解除安裝 (LRO) 或接收端合併 (RSC)

該驅動程式支援 vSwitch 功能中的 LRO/RSC。它透過儘可能合併多個 TCP 段來減少每個資料包的處理開銷。該功能預設在 Windows Server 2019 及更高版本上執行的 VM 上啟用。可以透過 ethtool 命令更改它

ethtool -K eth0 lro on
ethtool -K eth0 lro off

SR-IOV 支援

Hyper-V 支援 SR-IOV 作為硬體加速選項。如果在 vSwitch 和訪客配置中都啟用了 SR-IOV,則虛擬函式 (VF) 裝置將作為 PCI 裝置傳遞給訪客。在這種情況下,合成 (netvsc) 和 VF 裝置在訪客作業系統中都可見,並且兩個 NIC 具有相同的 MAC 地址。

VF 由 netvsc 裝置控制。當 VF 可用並啟動時,netvsc 驅動程式將透明地將資料路徑切換到 VF。網路狀態(地址、防火牆等)應僅應用於 netvsc 裝置;在大多數情況下,不應直接訪問從屬裝置。例外情況是,如果需要一些特殊的佇列規則或流方向,則應將它們直接應用於 VF 從屬裝置。

接收緩衝區

資料包被接收到探測裝置時建立的接收區域中。接收區域被分成 MTU 大小的塊,每個塊可能包含一個或多個數據包。可以透過 ethtool Rx 環引數更改接收部分的數量。

有一個類似的傳送緩衝區,用於聚合要傳送的資料包。傳送區域被分成塊,通常為 6144 位元組,每個部分可能包含一個或多個數據包。小資料包通常透過複製到傳送緩衝區來傳輸。但是,如果緩衝區暫時耗盡,或者要傳輸的資料包是 LSO 資料包,則驅動程式將向主機提供指向 SKB 中資料的指標。這試圖在資料複製的開銷和重新對映 VM 記憶體以供主機訪問的影響之間實現平衡。

XDP 支援

XDP(eXpress Data Path)是一項功能,可以在資料包到達 NIC 卡的早期階段執行 eBPF 位元組碼。目標是提高資料包處理的效能,減少 SKB 分配和其他上層網路的開銷。

hv_netvsc 以本機模式支援 XDP,並且還會透明地在關聯的 VF NIC 上設定 XDP 程式。

在合成 NIC (netvsc) 上設定/取消設定 XDP 程式會自動傳播到 VF NIC。不建議直接在 VF NIC 上設定/取消設定 XDP 程式,也不會傳播到合成 NIC,並且可能會被合成 NIC 的設定覆蓋。

XDP 程式無法在啟用 LRO (RSC) 的情況下執行,因此您需要在執行 XDP 之前停用 LRO

ethtool -K eth0 lro off

尚不支援 XDP_REDIRECT 操作。