wireguardNT:Windows 内核下的高性能 wireguard 实现

网友投稿 1444 2023-04-10

本站部分文章、图片属于网络上可搜索到的公开信息,均用于学习和交流用途,不能代表睿象云的观点、立场或意见。我们接受网民的监督,如发现任何违法内容或侵犯了您的权益,请第一时间联系小编邮箱jiasou666@gmail.com 处理。

wireguardNT:Windows 内核下的高性能 wireguard 实现

wireguard 作者 Jason Donenfeld 最近宣布了 wireguardNT 项目,这是面向 Windows 内核的 wireguard 原生移植。和其他版本一样,wireguardNT 的小写为 "wireguard-nt",它一开始只是 Linux 版本代码库的端口。经过初步移植工作取得成功后,NT 代码库迅速分化,以更好地适应原生 NTisms 和 NDIS(Windows 网络栈)API。最后的结果是为 NT 内核实现了一个深度集成且高性能的 wireguard,它利用了 NT 内核和 NDIS 的全部功能。

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 实现

上一篇:一篇学会SQL中的递归的用法
下一篇:一日二技:MongoDB与 Scrapy 的小技巧各一个
相关文章

 发表评论

暂时没有评论,来抢沙发吧~