Skip to content

eBPF 路由

概述

Landscape Router 使用 eBPF 技术在内核层面实现高性能数据包转发,绕过传统的 Netfilter 框架,大幅提升路由性能。

前置要求

当前 LAN 和 WAN 要能正常通信,需要开启对应网卡的路由转发功能。

开启路由转发

配置位置

在网卡配置界面中,找到对应的 WAN 和 LAN 网卡,开启"路由转发服务"选项。


加速原理

Netfilter 数据包流程

下图展示了 Netfilter 的完整数据包处理流程:

Netfilter 数据包流程

图片来源:Wikipedia - Netfilter(CC BY-SA 3.0 许可)

传统路由 vs eBPF 路由

传统方式(Netfilter/iptables/nftables)

数据包需要经过多个处理阶段:

text
网卡接收 → 进入内核网络栈 → Netfilter Hooks → 路由判断 → NAT → 转发判断 → 发送

eBPF 加速方式

核心优势

Landscape Router 的转发工作在 Ingress/Egress (qdisc) 层完成,即在进入 Netfilter 之前就决定转发目标并直接发送到网卡。

加速路径:

text
网卡接收 → eBPF 处理(TC 层) → 直接转发到目标网卡
         ↓ 绕过 Netfilter

性能特点

特性说明
转发位置TC(Traffic Control)层,在 Netfilter 之前
NAT 集成目前 NAT 连接信息尚未完全共享到 eBPF 实现
直连流量对直连流量几乎无损耗
容器判断是否转发到 Docker 容器的判断也在此完成

当前限制

由于 NAT 连接信息尚未完全集成到 eBPF 路由中,当前加速效果还不是最优。这是从 0 到 1 的实现,后续会持续优化。


性能测试

测试指标说明

  • RX-PPS:每秒接收数据包数量(Received Packets Per Second)
  • RX-BPS:每秒接收数据速率(Received Bits Per Second)

测试环境 1

配置

  • 操作系统:Arch Linux(内核 6.12.63-1-lts)
  • CPU:AMD 2700X(PVE 虚拟 4 物理核心)
  • 网卡:直通 X520-DA2(10Gbps)

测试结果

小包性能(64 字节)

64字节小包测试

大包性能(1500 字节)

1500字节大包测试


测试环境 2

配置

  • 操作系统:Arch Linux(内核 6.12.63-1-lts)
  • CPU:AMD 2700X(PVE 虚拟 4 物理核心 / 8 线程)
  • 网卡:直通 X520-DA2(10Gbps)

测试结果

小包性能(64 字节)

64字节小包测试

大包性能(1500 字节)

1500字节大包测试


相关文档