在 Linux Kernel 4.20 内核版本中将会有很多新的特性,包括对更多硬件的支持及其他改进。最新消息显示在 Linux Kernel 4.20 内核下没有合并 WireGuard 到内核主线中,它是一个安全 VPN 隧道的内核实现。Linux Kernel 4.20 内核除了提升性能改进外也在进行精简,比如移除可变长数组。
WireGuard 项目介绍 WireGuard 是一个 VPN 内核实现,代码行数少,优先考虑性能,配置简单,试图在做到配置简单的同时提供高性能。WireGuard 基于 UDP,数据包在一端加密之后封装在 UDP 包内发送到远程端点,然后解密。此前有消息称,WireGuard 作者已提交 WireGuard 供评审,准备合并到主线。WireGuard 的作者是 Jason Donenfeld,他在邮件中表示,WireGuard 已被多家大公司使用,并被整合到工具、发行版,移动手机和数据中心,是时候让它合并到 Linux 内核主线了。
Linux Kernel 4.20 不会合并 WireGuard 到内核主线中 使用 WireGuard 的还有用于 Linux 内核的新的 Zinc 加密 API,它也没有被合并到内核主线。 令人遗憾的是,即使 Linus Torvalds 本人也在2018年早些时候表达了希望尽早将 WireGuard 合并到新的 Linux 内核中来。WireGuard 也获得了许多上游开发商的赞誉,甚至还得到了美国参议员的推荐。但目前看来,下个版本的内核(Linux Kernel 4.20)并不会有 WireGuard。 虽然 WireGuard 暂未进入内核主线,但许多其他的发行版依然可以在没有主线内核的支持下使用 WireGuard,至少有提供用于 WireGuard 的内核代码树之外的包(DKMS)。 当然,我们希望 WireGuard 将在下一个 Linux 内核开发周期中被合并到内核主线,到那时候可以成为更好的 Linux VPN 解决方案。
附:Linux Kernel 4.20 移除可变长数组 Linux Kernel 4.20 除了不会合并 WireGuard 到内核主线外,还移除可变长数组。可变长数组(variable length array,简称 VLA)是指数组对象的长度在运行时而不是编译时确定。但使用 VLA 会存在问题,包括增加运行时开销,因为数组长度需要在运行时确定; LLVM Clang 编译器不支持结构内 VLA,它只支持 C99 风格的 VLA;存在安全隐患。Linus Torvalds 对 VLA 的使用公开表达过不赞成,认为相比固定长度,VLA 产生了更多的代码和更慢的代码。
相关主题 |