基于多空间内存共享高速网络链路数据包捕获方法.docVIP

基于多空间内存共享高速网络链路数据包捕获方法.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于多空间内存共享高速网络链路数据包捕获方法

基于多空间内存共享高速网络链路数据包捕获方法   摘要:结合共享内存和NAPI技术提出了一种基于通用硬件平台和开源软件实现的高速网络链路数据包捕获方案,能够将数据包的捕获能力和捕获效率提升到一个新水平。通过实验表明,在通用PC服务器上实现该方案完全能够满足千兆链路的监测需求,数据包处理能力可达到线速148.8万pps。   关键词:数据包捕获;共享内存;新的应用编程接口   中图分类号:TP393.06文献标志码:A   文章编号:1001-3695(2008)03-0807-04      网络测试是了解网络流量、分析业务性能的重要手段。如何实现高速链路流量捕获分析是目前人们非常关注的问题[1]。数据包捕获是被动测量的基本过程,一般有三种办法:a)基于专用硬件的采集方法,如HP/Agilent Advisor[2]、InMon sFlow Probe[3]、Endace DAG[4]等。由于专用硬件可编程性差、价格通常比较昂贵,其性价比往往难以满足用户的要求。b)基于网络处理器的数据包捕获方法。网络处理器(network processor,NP)[5]是专门为数据包处理而设计的可编程处理器,专门针对数据包处理部件进行优化,因此数据包的处理能力可以得到大幅度的提升。但是网络处理器通常价格比较昂贵,而且针对特定硬件进行开发的特点易造成开发难度加大、可移植性差等问题。c)基于通用PC架构,通过普通的网络接口卡捕获数据包的方法,如Ethereal[6]、Wireshark[7]等工具。该方法采用通用硬件平台的实现方式大大节约了成本,但是从网络链路上捕获数据包,再将捕获到的数据包从操作系统内核空间拷贝到用户空间需要占用大量的CPU资源。目前基于该方法实现的工具均不能提供监测百兆以上链路线速处理能力。      1研究背景      Libpcap[8]是由美国加州大学劳仑斯实验室开发的开源数据包捕获工具,对多种网络媒介提供良好的支持,并具有可跨平台移植的优势,使其自1994年正式发布以来就成为UNIX、类UNIX平台下开发流量监测分析程序首选的一款数据包捕获工具。依赖于操作系统,Libpcap为流量监测分析程序提供虚拟的数据包捕获平台。通过该平台流量监测分析程序能够直接访问网卡捕获的数据包,从而简化程序开发。Libpcap的工作流程可简要概括如下:a)接收来自操作系统内核空间缓存的数据包。b)对接收到的所有数据包进行过滤规则匹配。如果匹配成功就将数据包拷贝到用户空间缓存;否则直接丢弃数据包。c)运行在用户空间的流量监测分析程序调用Libpcap提供的API接口读取数据包信息。然而,随着网络技术的发展和高速网络链路的普及,Libpcap在数据包捕获性能方面的缺陷也逐渐暴露。探究其原因主要是数据包接收时产生的中断开销,将数据包从内核空间拷贝到用户空间的系统调用和内存拷贝需要消耗大量的CPU资源[8,15],这就使得基于Libpcap实现的流量监测分析程序很难适用于百兆以上链路环境中。   随着千兆网卡和千兆交换机等高速网络设备逐步进入主流市场,小区宽带接入网的出口带宽也纷纷升级到千兆速率,对千兆甚至更高速率链路的监测需求已经迫在眉睫。因此,有人提出了基于Linux NetFilter[9]机制实现的动态可挂载内核模块技术[10]。其基本思想是将数据包的解码和统计分析等功能实现为一个内核模块,转移到操作系统内核中运行,以达到数据包内存零拷贝和减少系统调用开销的目的。实验表明此方法与NAPI(new API)技术[11]相结合可以获得较高的性能,同时也存在诸多缺陷:a)在内核模块中不能调用C标准函数库,只能使用内核导出的少量系统调用,这就给监测和分析功能的开发实现带来了很大的麻烦;b)在内核中开发代码不仅容易出错而且不易调试,在程序中隐藏的BUG极有可能会导致系统崩溃,给用户造成无法估量的严重后果;c)出于安全方面的考虑,一般来说用户会拒绝在某些关键机器上运行内核程序。   NAPI技术是为解决中断活锁问题(interrupt livelock)[12]而引入的。高速外围设备的出现给操作系统引入了中断活锁问题,主要目的是降低设备对CPU的中断请求次数。目前在Linux、FreeBSD和Windows等主流操作系统中都采用了一种降低中断频率的技术――设备轮询[13]。采用轮询技术可以提高系统在重负载时的效率,但在轻负载时会增加系统对设备的响应延迟。中断技术在轻负载时可减小响应延迟,但在重负载时会引起中断活锁。NAPI则是一种中断与轮询相结合的技术,在轻负载时系统采用中断方式处理数据包;在重负载时只中断一次,随后采用轮询的方式处理多个数据包,从而减少中断次数。实验表明,在千兆链路监测应用中即使采用了NAPI技术,基于L

文档评论(0)

189****7685 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档