一 、我们处理网络流量时,经常面临丢包的问题。丢包通常是应用程序无法及时对数据包进行处理,libpcap不得不丢掉造成的。通常的流量分析软件都是单进程的,例如:tcpdump、 snort。即使是多线程的软件(例如:suricata),也只是一个线程响应libpcap。现在的计 算机通常是多核架构,每台计算机有十几颗、几十颗CPU都很常见。但是,因为并发处理 能力的缺乏,造成一方面大量CPU闲置,一方面又因为处理能力的不足,流量分析软件不 得不丢包。 现在市面上有硬件设备,例如Netronome可以实现流量的分流,但是价格通常不菲。PF_RING 可以通过cluster实现流量的负载均衡,允许多个进程并发对同一个(或者一组)网卡捕获的数据包进行处理。PF_RING的负载均衡策略包括cluster_round_robin和 cluster_per_flow两种。cluster_round_robin是针对数据包的负载均衡,将数据包轮流 发给监听的进程;而cluster_per_flow是基于网络数据流,同一个网络流量发给同 一个进程。由于流量分析软件通常是针对数据流的,因此cluster_per_flow用处更大。
二、PF_RING是Luca Deri发明的提高内核处理数据包效率,并兼顾应用程序的补丁,如Libpcap和TCPDUMP等,以及一些辅助性程序(如ntop查看并分析网络流量等)。PF_RING是一种新型的网络socket,它可以极大的改进包捕获的速度。并且有如下特征:
1) 可以用于Linux 2.6.18以上的内核;
2) 4.x版本的pf_ring可以直接应用于内核,不需要给内核打补丁;
3) PF_RING驱动可以进行包捕获的加速;
4) 支持使用商用网络适配器的10 GB的硬件包过滤
5) 设备驱动无关(推荐使用支持NAPI的网卡(intel网卡)来获得最好的
iis7站长之家);
6) 基于内核的包捕获和采样;
7) Lipcap支持与基于pcap的应用程序的无缝集成;
8) 可以指定上百个头过滤到BPF中;
9) 内容检查,以至于只有符合负载过滤的包才能通过;
10)PF_RING的插件可以用于增强包解析和内容过滤;
11)可以工作在混杂模式(经过网卡的报文全部可以被捕获到);
三、主页及下载地址
PF_RING 主页: PF_RING主页
PF_RING 5.6.1(最新稳定版)下载地址: PF_RING 5.6.1(最新稳定版)