高速网络环境下数据包捕获技术的分析

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

高速网络环境下数据包捕获技术的分析

作者:王亚

来源:《数字技术与应用》2011年第12期

摘要:互联网的迅猛发展,网络带宽飞速增长,在高速网络环境下,传统的网络数据包捕获已经成为制约整个系统的性能提升的瓶颈,为了满足高速网络的数据包捕获的需求,对传统的网络数据包捕获存在的问题进行分析,在此基础上提出了改进措施,为后期研究高速网络下高性能的数据包捕获技术奠定基础。

关键词:高速网数据包捕获 Libpcap

中图分类号:TP393 文献标识码:A 文章编号:1007-9416(2011)12-0194-02

The Analysis of Packet Capture Technology in High Speed Network

wangya

(Fuyang Teachers College of computer and Information engineering Fuyang 236041)

Abstract:The rapid development of the Internet and the rapid growth of network bandwidth,in high-speed network environment,the traditional network data packet capture has become the constraints of the system performance bottleneck. In order to satisfy the high speed network packet capture demand,to analysis the existing problems of the traditional network packet capture,and put forward on this foundation improvement measures.,It lays the foundation for later research of high-speed network and high performance packet capture technology.

Keywords:high speed network;packet capture;Libpcap

1、引言

目前,对网络信息监控与检测的软件都是基于数据包捕获技术,如:入侵检测程序Snort、嗅探器Tcpdump等。数据包捕获技术是一种对网络上的数据包进行监听并截取的技术,可以将数据包原封不动的拷贝到捕包端的系统中。数据包捕获是入侵检测系统、网络协议

分析、网络防火墙、高性能通信系统、以及其他网络监视系统能够充分发挥其性能的前提。因此,这些软件性能的优劣直接受制于数据包捕获平台性能的优劣。

互联网的迅猛发展,网络带宽飞速增长,网络上的安全需求也在不断增加,目前网络带宽已经达到了千兆甚至万兆。在Internet/Intranet上,TCP/IP目前是占据主导地位的网络协议,但是基于软件进行协议处理的TCP/IP协议,却使得CPU传统的网络数据包捕获已经成为整个系统的性能的瓶颈承担了很大的负载。

在高速网络环境下,为了满足高速网络的数据包捕获的需求,对高速网络下高性能的数据包捕获技术进行研究已经成为趋势,本文主要从分析制约数据包捕获性能的瓶颈问题入手,给出相应的改进措施。

2、传统网络数据包捕获的分析

目前常用的传统的数据包捕获平台一般是通过调用Libpcap捕包函数库而实现的。Libpcap 主要包括三个部分:最底层的是针对硬件设备接口的数据包捕获机制,中间是针对内核级的包过滤机制,第三层是针对用户程序的接口。Libpcap支持BPF过滤机制,BPF主要由两部分组成:网络分接头和数据过滤器。网络分接头从网络设备驱动程序中收集数据拷贝,过滤器决定是否接受该数据包。

2.1 处理过程

图1给出了传统网络数据包捕获平台的框架以及数据包的流向:

从图中可以看出网络数据流经的路径:当有数据包到达网卡时,向CPU发起一个硬件中断请求,进入中断服务程序,然后调用网卡驱动程序中的函数来处理;当数据帧成功接收后,由网卡传至内核空间,由网卡驱动控制网卡上数据的收发,并对收到的新数据进行简单的处理后上交协议栈。由上层协议栈对数据按协议层次进行大量处理,最后将数据从内核空间拷贝到进程用户空间供应用程序使用。

2.2 存在的问题

通过对目前存在的数据包捕获平台机制进行分析研究,从统计数据中可以看出,在数据包捕获阶段,处理中断消耗了大量的系统资源;另外,由于中断的优先级高于用户进程,只有在数据包接收完之后才能返回用户空间对用户进程继续处理。如果中断频率过高,处理应用进程的时间就会被大量的抢占,导致用户进程等待过长,从而影响了整个应用系统性能,致使性能严重下降。值得注意的是,随着网络流量的增大,中断的次数也并不是同步增多,超过一定的流量反而下降,这也正说明了频繁的中断和大量上下文切换,降低了cache命中率,影响了系统的整体效率。

从以上分析发现影响捕包性能的主要因素在于:

(1)数据包在传输中冗余的拷贝。内存拷贝主要存在于内核协议栈在数据包的处理路径上的数据操作及内核空间对用户空间的内存拷贝。

(2)频繁的中断响应。中断响应出现在网卡接收到数据包且完成DMA操作后,这时网卡会通过中断告知CPU数据包传输已完成;

(3)上下文切换所造成的开销。中断响应及内核态与用户态间的切换都会导致上下文切换。

在网络流量较大时,这些从网卡到内核再到用户空间的数据包需要耗费系统大量的资源,严重影响的系统的整体性能。

3、改进措施

从以上分析可以发现,消耗大量的CPU时间以及影响系统性能的主要因素在一个数据包的接收过程中会发生多次内存拷贝,以及系统调用,加上频繁的中断处理,而留给数据包处理的时间相对较少。因此,为了提高系统吞吐量,减少在这些方面的性能开销,主要从以下几点措施进行改进:

3.1 减少数据包在传输中冗余的拷贝

Libpcap位于用户空间,网卡送来的数据包位于内核空间,这样的数据包从网络设备到Linux内核,需要发出中断请求,即每一个数据包到达时,都会被一个中断将其送到内核空间。此外,在内核缓冲队列中的数据包需要经过一次系统调用才能进入用户空间,系统,而系统调用也是通过中断机制实现的。于是,在整个过程中数据包经历了两次拷贝,一次数据包从网卡拷贝到内核空间,另一次从内核空间拷贝到用户空间。所以在底层的数据包捕获上采用零拷贝的思想。

首先利用DMA技术将网络数据包直接传递到系统内核预先分配的地址空间中,避免CPU 的参与;同时,将系统内核中存储数据包的内存区域映射到用户空间的应用程序,应用程序直接对这块内存进行访问,从而减少系统内核向用户空间的内存拷贝,同时减少了系统调用的开销。零拷贝技术实现的关键问题就是:内存映射和缓冲管理的问题。为了减少内存拷贝所引起的性能开销,使用户空间和内核空间共享一块缓冲区,并采取环形的管理方法,又考虑到用户级网络接口与Libpcap的对接问题,采用PF_RING套接字对其进行改进。

3.2 改进中断方式,减少频繁的中断响应

当数据包到达时,网卡及时接收将其送到内核空间,可以通过中断处理方式。此外还可以通过轮询方式,即系统每隔一定时间间隔就去检查一次网卡,若网卡上有数据包达到,就调用读取数据的程序。此种轮询方式处理,在系统负载较重的情况下非常有效,但在轻负载下,可

相关文档
最新文档