wireguardNT:Windows 內核下的高性能 wireguard 實現
wireguard 作者 Jason Donenfeld 最近宣布了 wireguardNT 項目,這是面向 Windows 內核的 wireguard 原生移植。和其他版本一樣,wireguardNT 的小寫為 "wireguard-nt",它一開始只是 Linux 版本代碼庫的端口。經過初步移植工作取得成功后,NT 代碼庫迅速分化,以更好地適應原生 NTisms 和 NDIS(Windows 網絡棧)API。最后的結果是為 NT 內核實現了一個深度集成且高性能的 wireguard,它利用了 NT 內核和 NDIS 的全部功能。
相關項目和源代碼:https://git.zx2c4.com/wireguard-nt/about/
Jason 在公告中介紹了 wireguard 的背景,wireguard 在 Windows 下的早期實現是一個用 Go 開發的用戶空間實現——wireguard-go,負責將數據包傳入和傳出 Wintun 接口。
當時使用 wireguard-go 需要關聯一個虛擬網絡設備,Jason 不滿意 OpenVPN 項目提供的虛擬網絡接口 tap-windows,因此從頭實現了自己的 Wintun。Wintun 相對于 tap-windows 而言是一大改進,OpenVPN 項目之后自己也實現了對 Wintun 的支持。但 wireguard-go 仍然需要持續地在內核空間和用戶空間之間進行上下文切換。為了移除這一性能瓶頸,虛擬網卡和加密等整個堆棧都需要移到內核。
wireguardNT 的出現顯著減少了延遲并消除了 wireguard-go/Wintun 的上下文切換問題。測量顯示,內核模式實現 wireguardNT 比用戶空間實現 wireguard-go 要快 10-25%。Jason 還稱,當使用 wireguardNT 時,wireguard-go/Wintun 對 WiFi 性能的影響已經消失,功耗和電池使用量也更低。
本文轉自OSCHINA
本文標題:wireguardNT:Windows 內核下的高性能 wireguard 實現
本文地址:https://www.oschina.net/news/154780/wireguardnt-for-windows