使用 PPPoE 半桥模式解决 UniFi 网关 PPPoE 性能瓶颈

UniFi 网关在 PPPoE 连接上经常会遭遇严重的吞吐量下降,因为它们的 CPU 缺乏对 PPPoE 和 NAT 的硬件加速支持。通过将 PPPoE 拨号过程卸载到独立的基于 OpenWrt 的设备上——这种技术被称为 PPPoE 半桥(PPPoE Half-Bridge)——用户可以通过通过 DHCP 提供公网 IPv4 地址,而不是要求网关本身处理 PPPoE 会话,从而使 UniFi 网关恢复全线速性能。

UniFi PPPoE 性能问题的根本原因

大多数 UniFi 网关,包括 UDM Pro、UDM SE、UDM Pro Max、UXG Pro 和 EFG,都使用不支持 PPPoE 硬件加速的 OEM 平台。这造成了显著的性能瓶颈,因为 PPPoE 协议要求路由器对每个数据包进行封装和解封装,而这一过程在 Linux 和 pfSense 实现中通常是单线程的。

由于处理过程被绑定到单个 CPU 核心,因此无论设备上有多少个可用核心,吞吐量都会受到限制。观察到的性能基准测试突显了这一差距:

  • UDM Pro/SE: 在 PPPoE 下通常为 1200 Mbps 到 1500 Mbps。
  • UDM Pro Max: 在 PPPoE 下通常为 1400 Mbps 到 1800 Mbps。
  • EFG: 在 PPPoE 下通常为 1400 Mbps 到 2400 Mbps。
  • UCG Fiber: 可以超过 5000 Mbps,因为它使用了 MediaTek Filogic 880 SoC,该芯片包含原生的 PPPoE 硬件加速。

PPPoE 半桥加速的工作原理

PPPoE 半桥(也称为 Zero IP Bridge)将计算密集型的 PPPoE 拨号和会话管理任务转移到专门的卸载设备上。与其让 UniFi 网关拨号 ISP,不如由卸载设备处理 PPPoE 会话,获取公网 IPv4 地址,然后通过本地 DHCP 服务器将该地址“交给” UniFi 网关。

在这种架构中,卸载设备本身并不持有公网 IP;它只是作为 IP 地址的透明透传。UniFi 网关通过 DHCP 接收公网 IPv4,从而使其能够将 CPU 资源集中在路由、NAT 和 IDS/IPS 上,而无需承担 PPPoE 封装的开销。

虽然一些 ISP 提供的 ONT/ONU 设备可以通过“Advanced DMZ”或“IP Passthrough”等功能提供类似的功能,但许多设备并不具备,因此需要自定义实现。

使用 OpenWrt 实现该方案

ArcBox Labs 使用 OpenWrt 和 Banana Pi BPI-R4 Pro 实现了这一方案。该实现依赖 hotplug.d 机制,以便在建立 PPPoE 会话时自动配置桥接。

技术工作流程

该过程由两个主要文件管理:99-half-bridge(触发器)和 start-half-bridge.sh(逻辑)。执行流程如下:

  1. 防火墙调整: 在 OpenWrt 防火墙的 WAN 侧禁用 NAT/MASQUERADE。
  2. IP 提取: 脚本从 PPPoE 虚拟接口(例如 ppp0)读取拨号获得的公网 IPv4 地址。
  3. DHCP 配置: 脚本计算公网 IP 的 /24 子网,并将 OpenWrt DHCP 服务器配置为将该特定的公网 IPv4 分配给下游的 UniFi 网关。
  4. 基于源的路由: 实现策略路由,使得数据包只有在匹配分配给下游路由器的源 IP 时才通过 PPPoE 虚拟接口发出。这使得系统能够同时支持多个 PPPoE 连接。
  5. 接口重置: 重启物理接口以触发 UniFi 网关通过 DHCP 请求新 IP。
  6. ARP Fix: 由于 UniFi 的 ARP 实现存在问题,因此在 OpenWrt 上添加了静态 ARP 条目(ip neigh replace)以确保通信稳定。

使用这种方法,ArcBox Labs 报告称其突破了 5000 Mbps 的 PPPoE 吞吐量。

社区洞察与反驳观点

关于此实现的各种技术讨论突出了几个争议点和替代视角:

硬件 vs. 协议开销

用户认为性能下降严格来说是硬件差距,而不是 PPPoE 协议本身固有的缺陷。正如一位用户所言:

The UCG Fiber numbers make the case: this is a SoC acceleration gap, not a PPPoE overhead problem. Half-bridge is a workaround for hardware Ubiquiti shipped.

ISP 普及率与准确性

目前关于 PPPoE 的普及程度存在很大争议。虽然作者称其在 AT&T Fiber 和 Xfinity 等美国主要供应商的广泛使用,但社区成员纠正了这些说法,指出 Xfinity (DOCSIS) 和 AT&T Fiber (XGSPON) 使用的并非是在数据链路层使用 PPPoE。

替代方案

一些用户建议,如果用户已经部署了一个功能强大的 OpenWrt 盒子来处理 PPPoE 会话,那么直接替换掉 UniFi 网关可能比通过桥接更有效率。其他人则提到了使用特定的硬件,如 WAS-110,以在某些供应商(例如 Bell Canada)处实现全速 PPPoE。

Sources