BPF(Berkeley Packet Filter)内核应用性能调优之 高效的驱动级网络数据包处理
2017-10-17 10:55
459 查看
BPF(Berkeley Packet Filter)内核应用性能调优之 高效的驱动级网络数据包处理
在高效数据包处理转发和SDN功能实现的过程中,BPF机制可以简单粗暴优雅的解决如下痛点:1. 数据包转发效率的性能调优,比如交换器路由器海量数据包的转发处理中的性能优化;音视频流媒体处理过程中大容量一致性数据包的实时直播性优化,降低音视频数据在数据中心服务器的直播delay
2. SDN中在最底层第一时间实现数据平面(Data Plan)和控制平面(Control Plan)数据包的解析和分离
对BPF了解不多,应该听说过Linux内核对数据包skbuff的Netfliter钩子机制以及iptable的应用,BPF比Netfilter处在数据协议栈的更底层,更高效,而且更关键的是他比Netfliter更加灵活。
利用BPF,在数据链路层网卡驱动eth_recv_skbuff()的地方,利用内核微码的灵活形式简单实现对协议数据包的MAC/IP/UDP的高效过滤和匹配,匹配规则利用微码自定义。
匹配成功的数据包直接通过RAW-SOCKET punt到用户空间,完美绕开整个TCP/IP协议栈的处理;
规则不匹配的数据包route默认通道,走Linux内核默认的TCP/IP协议栈处理。
在对效率和delay要求比较高的应用场景,比如音视频CDN,流媒体直播实时realy中可以达到2个数量级别的性能提升。
相关文章推荐
- 京东如何处理数据中心网络对于应用性能的影响
- 使用 libevent 和 libev 提高网络应用性能
- 应用层与驱动层同步事件处理方法
- 【Android应用开发技术:网络通信】Android下的JSON处理
- 使用 libevent 和 libev 提高网络应用性能
- c#网络通信框架networkcomms内核解析之八 数据包的核心处理器
- 关于网络性能调优
- 使用 libevent 和 libev 提高网络应用性能
- LAMP 系统性能调优之内核调优措施
- 【识记】Linux 性能调优分析图_CPU_内存_磁盘_网络
- Linux内核数据包处理流程-数据包接收
- Java应用Tomcat执行过程之性能调优
- Linux 内核网络参数的意义及应用
- arm 驱动基础:字符设备中断实现过程(内核->驱动->应用)
- iOS应用性能调优的25个建议和技巧
- Linux 2.6内核中提高网络I/O性能的新方法-epoll
- iOS应用性能调优的25个建议和技巧
- 高性能Linux服务器构建实战:运维监控、性能调优与集群应用 读书笔记001
- 网络数据包收发流程(一):从驱动到协议栈
- 提升网络应用性能十招