超细节!十年码农讲述eBPF和XDP技术!
当前正流行网络技是什么?那就是eBPF和XDP技术,Cilium+eBPF超级火热,Google GCP也刚刚全面转过来。
新技术出现的历史原因
廉颇老矣,尚能饭否
iptables/netfilter
iptables/netfilter 是上个时代Linux网络提供的优秀的防火墙技术,扩展性强,能够满足当时大部分网络应用需求,如果不知道iptables/netfilter是什么,请参考这两篇文章:一个奇葩的网络问题,把技术砖家"搞蒙了" ;洞悉linux下的Netfilter&iptables,里面对iptables/netfilter技术有详细介绍。
精彩文章&视频推荐:
简短概述Linux并发控制与原子操作
超详细干货!eBPF入门与实践指南
详细讲解,Linux内核——文件系统(建议收藏)
[Linux内核的高速公路!]简要概述XDP
2022年了,我不允许还有人不懂操作系统——内存管理
【嵌入式底层原理开发】Linux内核协议栈层次结构分析|网络开发模型|发送与接收数据包|策略高级路由选择_哔哩哔哩_bilibiliwww.bilibili.com/video/BV1TG411t7z8/
但该框架也存在很多明显问题:
- 路径太长
netfilter 框架在IP层,报文需要经过链路层,IP层才能被处理,如果是需要丢弃报文,会白白浪费很多CPU资源,影响整体性能;
- O(N)匹配
如上图所示,极端情况下,报文需要依次遍历所有规则,才能匹配中,极大影响报文处理性能;
- 规则太多
netfilter 框架类似一套可以自由添加策略规则专家系统,并没有对添加规则进行合并优化,这些都严重依赖操作人员技术水平,随着规模的增大,规则数量n成指数级增长,而报文处理又是0(n)复杂度,最终性能会直线下降。
内核协议栈
随着互联网流量越来愈大, 网卡性能越来越强,Linux内核协议栈在10Mbps/100Mbps网卡的慢速时代是没有任何问题的,那个时候应用程序大部分时间在等网卡送上来数据。