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