您的位置:首页 > 理论基础 > 计算机网络

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个数量级别的性能提升。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: