高速网络流量测量系统的设计中国科学院

上传人:好** 文档编号:115380129 上传时间:2019-11-13 格式:DOC 页数:7 大小:222KB
返回 下载 相关 举报
高速网络流量测量系统的设计中国科学院_第1页
第1页 / 共7页
高速网络流量测量系统的设计中国科学院_第2页
第2页 / 共7页
高速网络流量测量系统的设计中国科学院_第3页
第3页 / 共7页
高速网络流量测量系统的设计中国科学院_第4页
第4页 / 共7页
高速网络流量测量系统的设计中国科学院_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《高速网络流量测量系统的设计中国科学院》由会员分享,可在线阅读,更多相关《高速网络流量测量系统的设计中国科学院(7页珍藏版)》请在金锄头文库上搜索。

1、高速IP网络流量测量系统的设计与实现王风宇1,2,云晓春1,3,申伟东41(中国科学院 计算技术研究所 信息智能与信息安全研究中心,北京 100080)2(中国科学院 研究生院,北京 100039)3(哈尔滨工业大学 计算机网络与信息安全技术研究中心, 黑龙江 哈尔滨 150001)4(西安交通大学,电子与信息工程学院, 陕西 西安710049)摘要:网络流量测量是网络流量分析建模的基础,也是网络性能监测的主要方法。不断提高的网络带宽,使网络流量测量面临很大的困难。本文在分析传统网络流量测量系统存在的问题的基础上,采用零拷贝分组捕获和裸设备存储(零拷贝存储)等关键技术,设计并实现了一个被动式网

2、络流量测量系统,使系统性能得到大幅提高,并具有较好的时间精确度。关键词:网络流量测量;分组捕获;零拷贝;裸设备;TSC(Timestamp Counter)时间戳Design and Implementation of a High-speed Network Traffic Measurement System Wang Feng-Yu* *, Yun Xiao-Chun* *, Shen Wei-Dong*(Research Center of Information Intelligent and Information Security, Institute of Computing

3、Technology, Chinese Academy of Sciences, Beijing 100080)*(Graduate University of Chinese Academy of Science, Beijing 100039)*(Research Center of Computer Network and Information Security Technology, Harbin Institute of Technology, Harbin,150001)*(Institute of Electronic and information Engineering,

4、Xian Jiaotong University, Xian 710049)Abstract Through analyzing the problems of traditional network traffic measurement system, a passive network traffic measurement system is designed based on zero-copy packet capture, raw device storage and so on. The performance and the precision of network traf

5、fic measurement are improved greatly. This system is suitable for the traffic measurement of 1Gb/s network. Keyword network traffic measurement; packet capture; zero copy; raw device; TSC(Timestamp Counter)1. 引言Internet的服务类型不断增多,业务量成倍增长,对网络服务质量的要求也越来越高,好的服务质量依赖于网络的规划设计,以及运行时的控制和调整,而这些都要以真实网络流量的测量和分析

6、为基础。网络流量测量在网络规划、故障诊断、应用与协议性能等方面都有重要意义。当前大部分被动网络流量测量软件解决方案是基于UNIX/LINUX提供的Libpcap库,Libpcap是一个与实现无关的访问操作系统所提供的分组捕获机制的分组捕获函数库,广泛应用的网络监听程序TCPDUMP就是在它基础上开发的。操作系统所提供的分组捕获机制主要有三种:BPF (BSD分组过滤器)1,DLPI(数据链路提供程序接口),及Linux下的SOCK_PACKET类型套接口,它们的实现机制基本类似。但这一类型的已有测量工具在性能方面有一定的局限性,一方面由于分组传输过程中一些关键通信路径(如系统调用,内存数据拷贝

7、等)的存在,导致Libpcap平台本身效率不高;另一方面,带宽的提高,对流量数据的时间精确度及存储速率和空间也提出了更高的要求。清华大学针对Libpcap的性能问题作了一些改进2,但由于测量目的不同,其中还是存在一些影响性能的因素。基于这种状况,很多研究机构致力于基于硬件设备的流量测量系统,把数据采集和时间戳等部分功能集中在专用捕包卡上34。基于硬件的解决方案具有很好的性能和时间精确度,但是这类方案与软件解决方案相比成本高、难以发布、灵活性不好。如何在有限的硬件支持下,解决传统网络流量测量中存在的关键问题,提高流量测量系统的性能,是我们的主要目标。本文第二部分分析了高速网络流量测量中存在的问题

8、,并给出了相应的解决方案,包括基于零拷贝的分组捕获平台、裸设备存储方案以及基于TSC计数器的硬件时钟等;第三部分在千兆网络环境对该系统进行了测试评估;最后对网络流量测量系统作了总结。2. 高速IP流量测量系统设计被动网络流量测量包括三个基本处理/传输环节,首先数据从网卡传送到应用程序空间;然后进行字段提取及在线统计;最后传送到到存储设备。其中第一和第三个环节是整个系统的关键所在,处理不好,就会成为整个系统的瓶颈。通过分析可知,在高速网络流量测量中面临的的几个关键问题是:分组捕获的效率;高精度时间的获取;突发流量缓冲;高速数据存储。我们在分析和解决这些问题的基础上,设计了基于双零拷贝的高速网络流

9、量测量系统DZC-TMS(Double Zero-Copy Traffic Measurement System),系统的设计和实现是基于Linux操作系统的,系统模型如图1所示,下面小节分别对各个部分加以说明。图1. 基于双零拷贝的高速网络流量测量系统模型2.1 基于零拷贝的分组捕获平台在传统的流量测量工具中,数据从网卡到应用程序空间的过程多数是基于类似Libpcap的分组捕获模型实现的。这种分组捕获模型如图2(a)所示(内核部分我们以BPF为例1)。在这种模型中数据传输是通过操作系统内核来完成的,网络分组到达后,首先以DMA方式传送到内核缓冲区,并发出硬中断,网卡驱动在硬中断处理程序中把到

10、达的分组提交给BPF分组过滤器,经分组过滤器经过滤后才到达用户空间,其中存在很多影响系统性能的因素:数据分组通过单分组驱动机制从内核空间向用户空间传送,效率不高;用户进程频繁的系统调用,消耗大量的资源;处理过程中经过了从网卡到内核缓冲区,再从BPF拷贝到用户空间缓冲区的过程,内存拷贝操作要消耗大量的CPU周期和内存资源。为了提高高速网络环境下分组捕获的性能,有必要减少分组传输过程的中间环节、减少或消除数据拷贝次数。由此我们设计了零拷贝分组捕获方案56,其模型如图2(b)所示。零拷贝的基本思想是:数据报从网络设备到用户程序空间传递的过程中,减少数据拷贝次数,减少系统调用,降低CPU在这方面的负载

11、。实现零拷贝用到的最主要技术是DMA数据传输、缓冲区访问同步以及内存区域映射技术。零拷贝分组捕获方案主要由三个部分组成:用户网络接口UNI、内核代理模块、网卡驱动程序。用户网络接口处于用户空间,用户网络接口UNI类似于Libpcap接口,封装了底层通信的实现细节,通过对用户网络接口UNI的访问,应用进程能够实现与网络硬件接口之间的零拷贝传输。其他两部分位于系统空间,内核代理负责用户空间的虚拟地址和内核空间物理地址转换,并创建缓冲区管理队列;网卡驱动程序则通过和内核代理的交互修改缓冲区队列状态,通知分组的到达,并获取DMA操作所需的存储区的物理地址,提供给DMA进行网络分组传输。 (a). 传统

12、分组捕获模型(b). 零拷贝分组捕获模型图2. 两种分组捕获过程的比较用户缓冲区和网络接口之间分组的零拷贝传输是通过网络接口DMA方式来实现的。由于用户进程使用的是虚拟内存地址,而网络接口直接使用内核提供的物理地址,在应用程序缓冲区和网络接口之间使用DMA传输必须解决用户缓冲区的虚拟地址到物理地址的转换问题。我们在应用进程空间静态分配一块连续的页对齐的内存作为用户数据缓冲区,把用户数据缓冲区分为2KB的块,因为在Linux系统中页大小是4KB,存放数据分组的数据块又要大于一个MTU(最大传输单元),这样每页只放2个数据分组,保证了一个数据分组不会跨越两个页,方便了DMA操作。用户进程向内核代理

13、通告用户数据缓冲区的起始虚拟地址和缓冲区大小。Linux操作系统为每个进程维护了一个三级页表,以实现虚拟地址到物理地址的转换。内核代理利用该三级页表完成虚拟地址页到物理地址页的转换并将物理页面锁定于内存中。我们建立了一个地址映射表AddrMapTable,用于存储虚拟地址页和物理地址页之间的对应关系,这个地址映射表覆盖了所有用于分组传输的用户缓冲块的物理地址。传统工作方式下,网卡通过硬中断方式通知分组的到达。然而中断响应的代价很高,在高速网络下,频繁的中断会使操作系统自陷在中断响应中,形成活锁。文献7中实现了一种半轮询机制,在大流量情况下使用软中断轮询机制,否则使用硬中断机制,使效率得到了很大

14、提高。由于流量测量还要考虑分组到达时间的精确度,我们在这个基础上作了修改,采用纯轮询机制。零拷贝分组捕获中分组的传输过程如下:在应用进程空间静态分配用户数据缓冲区,向内核代理通告用户数据缓冲区的起始虚拟地址和缓冲区大小。内核代理模块建立了两个环形队列用来管理数据缓冲区,接收队列RecBusyQ和接收空闲队列RecFreeQ。每个队列都包含了指向用户缓冲区数据块的索引。分组到达网络接口卡时,直接以DMA方式存储到用户空间缓冲区,然后发出硬中断。在硬中断响应开始,关闭网卡硬中断,通过软中断进入轮询操作,如果接收了新的分组,则往接收队列添加分组索引,并从空闲队列取得空闲数据块索引,然后通过地址映射表

15、AddrMapTable找到对应的数据块物理地址,提供给网卡驱动程序供以后DMA使用。接收队列、接收空闲队列以及地址映射表放在连续的内存空间,然后通过内存映射技术使应用程序也能够访问。当到达的分组达到一定数量,唤醒应用进程,应用进程从接收队列获得数据块索引,得到用户缓冲区地址,当处理完索引指向的分组后将其添加到接收空闲队列。从内核空间到用户空间的批量分组传送,减少了用户进程的系统调用和状态切换。2.2基于TSC(Timestamp Counter)的时间戳分组到达的时间精确度对于流量分析具有重要意义,不论时间间隔分布,还是相关系数分析,都需要分组到达的精确的时间,否则会影响流量分析和建模的准确

16、性。基于硬件的测量系统在捕包卡上添加了时间戳功能48,效果比较理想,但成本较高,灵活性不好。Linux操作系统提供的时间函数gettimeofday()最多能够达到微秒级的时间精确度,TCPDump程序就是通过这种方法取得的分组到达时间,但这种方法系统调用过程比较复杂。这里我们借助Intel处理器中的TSC计数器来获得时间戳,开机时TSC的记数器清零,然后在每个处理器时钟周期都完成一次自增,因此它的精密程度近乎CPU时钟频率。这个计数器使用一个64位的寄存器来存储,它的长度可以允许2GHz的处理器连续使用292年而不溢出。这种方法需要特定的模式支持并且与处理器的速度有关,但通过这个方法可以有效解决时间戳的精确度,而且由于直接访问寄存器,减少了系统调用环节,还可以最大程度的减小对系统性能的影响。虽

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号