[论文解读] Flexible failure detection and fast reroute using eBPF and SRv6
本文提出了一种基于eBPF的快速故障检测与SRv6 TI-LFA快速重路由机制,利用内核空间执行实现低延迟、高鲁棒性的监控。在CPU压力下实现了亚10ms的故障检测,通过消除调度器抖动并实现仅需8%吞吐量开销的内核触发、中断驱动处理,优于用户空间BFD实现。
Segment Routing is a modern variant of source routing that is being gradually deployed by network operators. Large ISPs use it for traffic engineering and fast reroute purposes. Its IPv6 dataplane, named SRv6, goes beyond the initial MPLS dataplane, notably by enabling network programmability. With SRv6, it becomes possible to define transparent network functions on routers and endhosts. These functions are mapped to IPv6 addresses and their execution is scheduled by segments placed in the forwarded packets. We have recently extended the Linux SRv6 implementation to enable the execution of specific eBPF code upon reception of an SRv6 packet containing local segments. eBPF is a virtual machine that is included in the Linux kernel. We leverage this new feature of Linux 4.18 to propose and implement flexible eBPF-based fast-reroute and failure detection schemes. Our lab measurements confirm that they provide good performance and enable faster failure detections than existing BFD implementations on Linux routers and servers.
研究动机与目标
- 解决高CPU负载下用户空间BFD守护进程在Linux路由器中的性能限制。
- 通过eBPF与SRv6在Linux内核中实现灵活、轻量级的故障检测与快速重路由。
- 通过将监控逻辑卸载至内核,相比传统BFD减少配置复杂性并提高鲁棒性。
- 证明基于内核的eBPF功能可实现比用户空间守护进程更快、更可靠的故障检测。
- 提供轻量级、一体化的存活监控与快速重路由解决方案,避免使用应用层协议。
提出的方法
- 扩展Linux SRv6以支持eBPF,利用End.BPF钩子在内核空间直接执行自定义网络功能。
- 实现基于BPF的从属功能,通过跟踪探测时间戳并检测超时来监控链路存活状态。
- 使用内核级中断而非系统调度轮询来触发故障检测,降低抖动并提升响应速度。
- 将基于eBPF的故障检测与SRv6 TI-LFA集成,实现拓扑无关的备份路径。
- 使用eBPF映射实现持久化状态存储,并利用BPF辅助函数进行数据包操作与封装。
- 在受控CPU负载的实验室环境中部署该方案,与传统BFD及bird的用户空间实现进行性能对比。
实验结果
研究问题
- RQ1在CPU压力下,基于内核的eBPF故障检测是否能实现比用户空间BFD守护进程更低的检测延迟和更高的鲁棒性?
- RQ2与传统BFD相比,eBPF监控在高系统负载下的性能退化程度如何?
- RQ3eBPF与SRv6的集成如何实现高效、灵活的快速重路由,而无需额外的网络状态或配置?
- RQ4在Linux内核中执行eBPF程序进行故障检测与TI-LFA重路由的性能开销是多少?
- RQ5能否实现一个极简的、完全基于内核空间的BFD类似功能,而无需依赖应用层协议?
主要发现
- 即使在高CPU负载下,基于eBPF的从属功能在10ms探测间隔和30ms检测时间下仍实现了完美的故障检测,而用户空间BFD实现则失败。
- 通过使用中断驱动处理而非系统调度轮询,eBPF从属功能降低了抖动并提高了可靠性。
- 基于eBPF的故障检测方案在使用激进定时器时实现了亚10ms的检测时间,优于传统BFD实现。
- 使用eBPF的SRv6 TI-LFA实现仅在正常操作中引入8%吞吐量开销,主动重路由时为25%,其中大部分开销源于SRH封装。
- eBPF从属功能仅150行代码,证明了完全在内核空间实现轻量级、高性能监控的可行性。
- 该方案支持非对称监控,仅主节点发送探测包,从属功能在内核空间运行,无需对称的应用层协议。
更好的研究,从现在开始
从阅读论文到最终审阅,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。