LINUX平台下用户空间控制网卡收发报文技术研究.pdfVIP

LINUX平台下用户空间控制网卡收发报文技术研究.pdf

  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文档。上传文档
查看更多
LINUX平台下用户空间控制网卡收发报文技术的研究木 刘峰黎忠文黄凯明 厦门人学计算机科学系,厦门361005 摘要:千兆网络时代的到来,使得在通用操作系统下远达不到线速捕获和发送数据包。本文实现 了一种在用户空间直接控制网卡收发数据包的技术,省去了数据包在内核和用户空间传递过程中的拷 贝,缓存,以及系统调用过程,从而使得网络报文的处理性能有很大提升。 关键词:内存映射接收缓冲环发送缓冲环用户空间控制 ’ 1引 言 当前大部分的入侵检测系统、防火墙等网络监视及防御系统都是基于运行在PC架构上的Linux平台。 程序,如:snort[6]等,线速地捕获网络数据包。然而,在网络进入千兆时代后,这种传统的数据包捕获机 制往往成为整个系统的性能瓶颈。 . 通过对原始报文接收过程进行分析,我们发现在原始报文接收过程中,当应用层想从网昔获得报文时 Buff中,而硬中断负责将数据报文从KernelBuff拷贝到第一个缓冲区 驱动报文处理器,再拷贝到Msg (sk__buff),在此之前网卡已经通过DMA方式将网络数据报文从网}拷贝到了KernelBuff,最后由应用层 通过系统调用将数据报文拷贝到坩户空间。 。 为了彻底消除数据包捕获过程中的系统额外开销,本文特意引入了一种新的技术,由用户空间控制数 据包的收发,而不是传统的由内核控制数据包的收发,屏蔽掉中断,旁路了系统协议栈,省去了系统调用, 内存分配及同收,及内存拷贝等开销,只是进行了一次网忙和内存缓冲区之间的DMA传输。 2用户空间控制网卡收发报文技术实现细节 如用户空间控制网鼍收发原理图所示:冈为对网#的操控是通过对网卡上的寄存器进行设置,所以用户 空间的麻用程序如果想直接控制网}就必须能够直接对网譬上的寄存器进行访问。同时通过内存映射可以 在用户空间直接对网旨上的寄存器进行操作,从而使网卡的收发控制由内核空间转移到了用户空间【3】。 2.1 内存映射 内存映射(Memory Mapping)的含义是把物理设备上的存储器的“物理地址”与内核或用户空间进程的 “虚拟地址空间”的一段地址建立关联起来。通过被关联的虚拟地址,内核或用户空间进程实现对物理设备 上存储器的直接存取。 作者简介一刘峰(1981一),男,硕士研究生,研究方向为计算机刚络安全。 . LINUX甲台下用户窄间拧制嘲卡收发报文技术的研究 1743 址和地址范同。然后通过内存映射函数mmap将网膏上寄存器的首地址映射到用户虚拟地址空间,这样就 可以在用户空间对网卡上的寄存器进行直接读写。同理,对丁网。}的两个缓冲环(接收缓冲环和发送缓冲 环【l】)也是如此映射处理,从而可以直接对数据包进行存取操作。 2.2修改网卡驱动 原来的网夤驱动程序在网膏初始化的时候产生两个缓冲环…。当有数据包到来的时候,网卡.通过DMA 方式将数据包拷贝剑接收缓冲环…,然后产生一个中断通知内核有新的数据包到来,然后内核处理新的数 据包,当这些数据被处理后,要重新申请新的内存缓冲区,且和一个未使用的接收描述符建立对应关系, 为将来数据包的到来做好准备,然后修改相应的接收尾索引【l】。相反,如果内核要发送一个数据包,内核 将从上层协议栈传递下来的数据包拷贝到发送缓冲环中的一个空的发送缓冲区,且与一个发送描述符…建 立对应关系,然后更新发送尾索引【I】。冈为缓冲环索引是一组网}上面的寄存器【I】,所以当有一个数据包 ’ 被内核接收或者发送后,网譬会立即知道。 , 修改的网忙驱动程序同样控制着这两个缓冲环,这两个缓冲环同样是在网膏初始化的时候产生,但是 在数据包的接收和发送过程中这两个缓冲环中的内存缓冲区是同定不变的,这是冈为数据包的接收和发送 过程避开了内核的干涉。通过内存映射用户空间的应用程序可以读取内核空间接收缓冲环中的数据,或者 在用户空间应用程序

文档评论(0)

whl005 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档