- 论坛徽章:
- 0
|
本帖最后由 panghaoyu 于 2013-10-29 09:30 编辑
一个好的包捕获系统应该尽可能少的丢包,实时捕获流经系统的所有数据包,而且应该较少地占用 CPU 资源,使得系统拥有更多的时间来对数据包内容的进行处理。在包捕获硬件方面,当前市场上有很多千兆以太网报文处理网卡,如 Endace 公司生产的 DAG 网卡、Liberouter 及SCAMPI 项目开发的 COMBO 网卡等。由于基于硬件的捕包方式价格比较昂贵,而且系统缺乏一定的灵活性,难以适应当今瞬息万变的网络发展现状与具体的流量分析需求。
在包捕获软件方面,设计了很多优秀的包捕获函数库如Libpcap、nCap、DMA-Ring 和 PF_RING 等。Libpcap 是一个优秀的数据包捕获函数库,由网卡驱动、操作系统内核协议栈以及套接字接口三个部分组成,由于消耗了较高的 CPU 资源、引入了较高的包传输延时等问题,效率较低。为了提高包捕获的效率,很多研究人员已经做了大量的工作,包括从操作系统和应用软件两个方面进行优化。
在操作系统方面:由于很多网络应用都有实时性的要求,增加了一些实时的内核来提高网络的实时性;为了避免频繁的中断造成的中断活锁现象,Linux 内核中引入了一些新的 API 函数,简称NAPI(NewAPI),通过在重负载的情况下采用轮询的方式来提高包捕获系统的性能。在应用软件方面:一种方式是减少内存拷贝次数,Libpcap-mmap、nCap、DMA-RING 和 PF_RING都采用了这种方式;第二种方式是减少系统调用的次数。综合分析以上包捕获技术,发现以上没有任何一种包捕获接口的速度能达到千兆线速的处理目标,即使它们的设计目标是这样;第二,都是基于单核的系统来进行设计,没有考虑到发挥多核平台和多收发队列网卡的优势来增加系统的吞吐量
-------------------------------
我没有太多这方面的的开发经验,只是了解一点。
我希望借助 endace dag 卡(Endace Dag 4.3 GE Dual Port PCI-X traffic capture card)或者(Endace DAG 3.52 Network Monitoring Card)或者 (Endace DAG 3.51 Network Monitoring Card)
或者借助 PF_RING 的方式,实现抓取一个千兆端口的数据,(峰值 有数百M),我只需要过滤出 用户请求HTTP的 URL即可,我想知道怎么编写并部署
服务器主机(插卡的那台机器)上的抓包分析程序,还有,endace dag 卡的驱动老版本的去哪儿找啊
求各位前辈指点。谢谢大家了 |
|