第30周:阶段项目——XDP 高性能包过滤防火墙
目标:综合运用前 5 周知识,实现一个基于 XDP 的高性能包过滤防火墙,对比 iptables 体现 XDP 优势。
1. 项目架构
1.1 整体架构
1 | 网络包 |
1.2 关键设计
1 | 防火墙规则: |
2. BPF 程序
2.1 firewall.bpf.c
1 | // firewall.bpf.c |
3. 用户态管理工具
3.1 fwctl 主程序
1 | // fwctl.c — 用户态管理工具 |
4. 项目结构
1 | xdp_firewall/ |
5. 性能测试
5.1 测试工具
1 | # === pktgen 打流(XDP 防火墙)=== |
5.2 测试场景
1 |
|
5.3 性能基准参考
1 | 性能对比(10GbE NIC,64B 包): |
6. 性能测试报告模板
1 | ======================================== |
7. 与 iptables 对比
7.1 架构差异
1 | iptables: |
7.2 对比表
| 特性 | iptables | XDP |
|---|---|---|
| 执行点 | Netfilter hook | 驱动级 |
| 匹配方式 | 线性链 | Hash (O(1)) |
| 规则数性能 | O(n) | O(1) |
| 10K 规则吞吐 | 1-3 Mpps | 12-14 Mpps |
| 延迟 | μs 级 | ns 级 |
| 编程性 | 静态(iptables -A) | 动态(热升级) |
| 调试 | iptables -L | bpftrace, bpftool |
| 跨平台 | 任意内核 | Linux 4.8+ |
| 容器友好 | 困难 | Cilium 集成 |
8. 优化方向
8.1 高级特性
1 | 1. SIMD 加速 |
8.2 调试工具
1 | # 反汇编 XDP 程序 |
9. 项目交付清单
1 | 交付物: |
10. 总结
1 | 通过这个项目,你已经掌握: |