wireguard作者JasonDonenfeld最近宣布了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仍然需要在内核空间和用户空间之间不断进行上下文切换。要消除此性能瓶颈,需要将虚拟NIC和加密等整个堆栈移至内核中。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
