您的位置:首页 > 理论基础 > 计算机网络

基于零拷贝的网络数据包捕获技术简述

2011-07-25 09:47 471 查看
基于零拷贝的网络数据包捕获技术简述

所谓零拷贝是指在某节点的报文收发过程中不会出现任何内存间的拷贝,发送时数据包由应用程序的用户缓冲区直接经过网络接口到达外部网络,接收时网络接口直接将数据包送入用户缓冲区。这是“真正的零拷贝(True Zero Copy)”。

如图1零拷贝工作流程图所示,图形的上部为传统的捕包模块,下部为采用零拷贝技术的捕包模块。零拷贝技术通过操作系统给网卡和用户区开了一段共用内存,网卡接收到的数据都被写到这段共用内存中,在这段内存区中存在着接收环和发送环,接收环存储着从网卡上接收来的数据,发送环存储着要通过网卡进行发送的用户数据。因为这段内存是网卡和用户区共用的,所以只要网卡接收到数据,用户程序就可以直接对这些数据进行访问和操作。同样的只要用户区程序有网络数据要发送,就可以由网卡程序直接发送。这减少了不必要的系统数据调用,减少了中断,使CPU能够有更多的时间来处理其它事情。

零拷贝具有很高的性能,我们将Libpcap捕包模块与零拷贝技术进行试验对比,得出下表的性能对比图,其中网卡为Intel 845系列千兆光纤网卡。

包都是传统的Libpcap系统的5倍以上,该技术极大地提高了系统的数据处理能力,使得CPU能够有更多的宝贵时间来处理其他的高级应用。

原文地址 http://blog.csdn.net/efan_linux/archive/2009/09/27/4600892.aspx TAG network sniffer libpcap http://blogold.chinaunix.net/u3/106533/showart_2099950.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: