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 操作。