文档详情

多核CPU下基于PFRING和设备轮询机制高性能包捕获技.ppt

发布:2020-12-22约1.67千字共51页下载文档
文本预览下载声明
多核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)
显示全部
相似文档