多核CPU下基于PFRING和设备轮询机制高性能包捕获技.ppt
文本预览下载声明
多核CPU下基于
PFRING和设备轮询机制
的高性能包捕获技
内容提要
自我介绍
技术背景
理论知识
解决方案
·参考资料
1自我介绍
齐战胜,研发部,北京分公司,软件研发工程师
主要做协议分析、还原。参与的项目有抽查工具
、NF-7800、NF9300、NF9600等。
为了解决NF-7800的千兆抓包问题,开始研究
Linux下高性能抓包的解决方法。
2技术背景
被动数据捕获技术在网络安全领域有着极其丰
富的应用。如IDS(入侵检测系统)、防火墙以及
些部署在网络出口的互联网内容分析系统等。
随着网络带宽的增加,网络传输速率的提高,
传统的数据包捕获技术越来越不能满足要求。本
文从Lnux/Unx平台下的 Libpcap网络数据包捕获
函数库入手,研究 Linux/Unⅸ平台下高性能的数
据包捕获解决方案。
3理论知识
Libpcap简介
NAP技术简介
1) Libpcap简介
1)NAP技术简介
2儿 Libpcap工作机制
2NAP|工作机制
3儿 Libpcap抓包性能分3)NAP的性能分析
析
3.1 Libpcap简介
3.1.1 Libpcap简介
popcap是 Unix/Linux平台下的网络数据包捕获的
函数库。它是一个独立于系统的用户层包捕获AP
接口,为底层网络监听提供了一个可移植的框架。
应用: Sniffer、 Wireshark、 Snort、 Tcpdump等。
3.1.1 LibPcap简介
LibPcap特点
)可从以太网、虚拟接口等一个或多个网络接口
捕获数据包
2)平台无关性;
3)具有基于BPF的数据包过滤特性。完善了系
统的数据包过滤体系。
3.1.2 Libpcap工作机制
Libpcap组成
Libpcap主要由两部分组成:网络分接头
( Network Tap)和数据过滤器( Packet Filter
网络分接头从网络设备驱动程序中收集数据拷贝
数据过滤器决定是否接受该数据包
3.1.2 Libpcap工作机制
Libpcap捕包流程
libpcap的包捕获机制就是在数据链
路层加一个旁路处理。当一个数据包
到达网络接口时, libpcap首先利用
已经创建的 Socket从链路层驱动程序
中获得该数据包的拷贝,再通过Tap
函数将数据包发给BPF过滤器。BPF
过滤器根据用户已经定义好的过滤规
则对数据包进行逐一匹配,匹配成功
则放入内核缓冲区(一次拷贝),并传
递给用户缓冲区(又一次拷贝),匹
配失败则直接丢弃。如果没有设置过
滤规则,所有数据包都将放入内核缓
冲区,并传递给用户层缓冲区。
3.1.2 Libpcap工作机制
程序框架
/第一步:查找可以捕获数据包的设备
第五步:对捕获的数据进行类型转换,
device pcap lookupdev(errbuf)
转化成以太数据包类型/
产第二步:创建捕获句柄,准备进行捕获”
eth =(struct libnet ethernet hdr )ptr
p= pcap open live(device, 8000, 1, 500,
/第六步:对以太头部进行分析,判断所
errbuf)
包含的数据包类型,做进一步的处理*/
*第三步:如果用户设置了过滤条件,则编
if(eth-ether type
译和安装过滤代码
ntohs(ETHERTYPE IP)
pcap_ compile(p, fcode, filter_ string, 0,
type =
netmask);
ntohS(ETHERTYPE_ ARP))
pcap_ netfilter(p, fcode
第四步:进入(死)循环,反复捕获数据
/最后一步:关闭捕获句柄,一个简单技
for(;;)
巧是在程序初始化时增加信号处理函数
以便在程序退出前执行本条代码
while(ptr =(char )(pcap next(p, hdr)))
pcap close(p)
NULL)
显示全部