10、基于多核通用硬件的多千兆数据包捕获:PFQ引擎解析

PFQ多千兆数据包捕获引擎解析

基于多核通用硬件的多千兆数据包捕获:PFQ引擎解析

在网络监控和数据分析领域,高效的数据包捕获至关重要。本文将介绍一种名为PFQ的新型数据包捕获引擎,它能够灵活地分离用户空间和内核空间的并行性,且性能开销极小。

1. 相关技术背景

在介绍PFQ之前,先了解一些相关的技术方案。有些方案基于高度定制的驱动,分离并行轮询线程而非依赖NAPI,但大量使用内核级轮询会导致高CPU利用率。还有些方案专注于在多核间分配工作以构建高性能软件路由器,依赖Click模块化路由器及其修改后的轮询驱动来实现良好性能。另外,Packetshader是一个性能卓越的软件路由器,围绕GPU加速计算密集型和内存密集型功能构建,也依赖高度修改的驱动并引入了多项优化。而PFQ与这些基于修改驱动的方案有所不同,它是一种通用架构,对原生驱动和修改后的驱动都有益。

2. PFQ捕获引擎架构

PFQ捕获引擎主要由以下几个组件构成:
- 数据包获取器(Packet fetcher)
- 它是唯一按逐个数据包方式处理的组件。接收数据包后,将关联指针插入其批处理队列。
- 当队列(长度可配置)填满时,队列中的所有数据包将由下一个模块一次性批量处理。
- 批量处理能提高内存访问的时间局部性,减少缓存未命中和对共享数据并发访问的概率。例如,批量释放数据包可将释放成本降低多达75%。经测量,最佳队列长度约为一百个数据包。由于数据包在入队前已打时间戳,该组件不影响计时准确性。
- 数据包导向块(Packet steering block)
- 主要功能是选择哪些套接字需要接收捕获

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值