使用背景
pf_ring主要用来加速流量获取流程,通过创建循环buf和mmap零拷贝技术的使用,缩短数据到达应用层的时间,提高系统处理数据的效率,降低丢包的概率。
具体知识点可以参考
《PF_RING简介》
主要就是下面的图
目前还没用到DNA技术,听说要付费……
环境安装
以下内容来自于PF_RING官方网站《PF_RING官方网站》
有部分为本地实测内容,修改了一些,可能这个网站和最新的代码不太一样,有些地方需要先configure才能make。
不过好在依赖的东西不多,还是能顺利安装的。
下载代码
git clone https://github.com/ntop/PF_RING.git
网速不太流畅,多试试吧。
代码结构如下
安装内核模块
cd PF_RING/kernel
make
make install
加载模块
cd PF_RING/kernel
sudo insmod ./pf_ring.ko [min_num_slots=N] [enable_tx_capture=1|0] [ enable_ip_defrag=1|0]
参数 | 含义 |
---|---|
min_num_slots | 内核模块排队的最小数据包数(默认值–4096) |
enable_tx_capture | 1–捕获发出的包,0–不捕获发出的包 |
enable_ip_defrag | 设置为1以启用IP碎片整理,仅对RX流量进行碎片整理 |
修改驱动
如果您想在Intel适配器上实现万兆及以上的线速率数据包捕获,那么需要使用零拷贝驱动。首先查看网卡的驱动
ethtool -i eth1 | grep driver
driver: xxx
目前驱动支持
- 1 Gbit
e1000e (RX and TX)
Supported cards: Intel 8254x/8256x/82571/82572/82573/82574/82583
igb (RX and TX)
Supported cards: Intel 82575/82576/82580/I210/I350 - 10 Gbit
ixgbe/ixgbevf (RX and TX)
Supported cards: Intel 82599/X520/X540/X55x - 10/40 Gbit
i40e (RX and TX)
Supported cards: Intel X710/XL710 - 10/25/50/100 Gbit
ice (RX and TX)
Supported cards: E810