IT资讯 WireGuardNT:Windows 内核下的高性能 WireGuard 实现

aidan · 2021-08-11 09:00:06 · 热度: 26

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

WireGuardNT:Windows 内核下的高性能 WireGuard 实现

相关项目和源代码: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 性能的影响已经消失,功耗和电池使用量也更低。

WireGuardNT:Windows 内核下的高性能 WireGuard 实现 WireGuardNT:Windows 内核下的高性能 WireGuard 实现

WireGuardNT:Windows 内核下的高性能 WireGuard 实现 WireGuardNT:Windows 内核下的高性能 WireGuard 实现

猜你喜欢:
暂无回复。
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册