分组局域网流量控制

局域网流量控制  时间:2021-05-20  阅读:()

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

关键词:网络流量测量;分组捕获;零拷贝;裸设备;TSC(TimestampCounter)时间戳DesignandImplementationofaHigh-speedNetworkTrafficMeasurementSystemWangFeng-Yu***,YunXiao-Chun****,ShenWei-Dong*****(ResearchCenterofInformationIntelligentandInformationSecurity,InstituteofComputingTechnology,ChineseAcademyofSciences,Beijing100080)**(GraduateUniversityofChineseAcademyofScience,Beijing100039)***(ResearchCenterofComputerNetworkandInformationSecurityTechnology,HarbinInstituteofTechnology,Harbin,150001)****(InstituteofElectronicandinformationEngineering,Xi'anJiaotongUniversity,Xi'an710049)AbstractThroughanalyzingtheproblemsoftraditionalnetworktrafficmeasurementsystem,apassivenetworktrafficmeasurementsystemisdesignedbasedonzero-copypacketcapture,rawdevicestorageandsoon.
Theperformanceandtheprecisionofnetworktrafficmeasurementareimprovedgreatly.
Thissystemissuitableforthetrafficmeasurementof1Gb/snetwork.
Keywordnetworktrafficmeasurement;packetcapture;zerocopy;rawdevice;TSC(TimestampCounter)引言Internet的服务类型不断增多,业务量成倍增长,对网络服务质量的要求也越来越高,好的服务质量依赖于网络的规划设计,以及运行时的控制和调整,而这些都要以真实网络流量的测量和分析为基础.
网络流量测量在网络规划、故障诊断、应用与协议性能等方面都有重要意义.

当前大部分被动网络流量测量软件解决方案是基于UNIX/LINUX提供的Libpcap库,Libpcap是一个与实现无关的访问操作系统所提供的分组捕获机制的分组捕获函数库,广泛应用的网络监听程序TCPDUMP就是在它基础上开发的.
操作系统所提供的分组捕获机制主要有三种:BPF(BSD分组过滤器)[1],DLPI(数据链路提供程序接口),及Linux下的SOCK_PACKET类型套接口,它们的实现机制基本类似.
但这一类型的已有测量工具在性能方面有一定的局限性,一方面由于分组传输过程中一些关键通信路径(如系统调用,内存数据拷贝等)的存在,导致Libpcap平台本身效率不高;另一方面,带宽的提高,对流量数据的时间精确度及存储速率和空间也提出了更高的要求.
清华大学针对Libpcap的性能问题作了一些改进[2],但由于测量目的不同,其中还是存在一些影响性能的因素.

基于这种状况,很多研究机构致力于基于硬件设备的流量测量系统,把数据采集和时间戳等部分功能集中在专用捕包卡上[3][4].
基于硬件的解决方案具有很好的性能和时间精确度,但是这类方案与软件解决方案相比成本高、难以发布、灵活性不好.

如何在有限的硬件支持下,解决传统网络流量测量中存在的关键问题,提高流量测量系统的性能,是我们的主要目标.
本文第二部分分析了高速网络流量测量中存在的问题,并给出了相应的解决方案,包括基于零拷贝的分组捕获平台、裸设备存储方案以及基于TSC计数器的硬件时钟等;第三部分在千兆网络环境对该系统进行了测试评估;最后对网络流量测量系统作了总结.

2.
高速IP流量测量系统设计被动网络流量测量包括三个基本处理/传输环节,首先数据从网卡传送到应用程序空间;然后进行字段提取及在线统计;最后传送到到存储设备.
其中第一和第三个环节是整个系统的关键所在,处理不好,就会成为整个系统的瓶颈.
通过分析可知,在高速网络流量测量中面临的的几个关键问题是:分组捕获的效率;高精度时间的获取;突发流量缓冲;高速数据存储.
我们在分析和解决这些问题的基础上,设计了基于双零拷贝的高速网络流量测量系统DZC-TMS(DoubleZero-CopyTrafficMeasurementSystem),系统的设计和实现是基于Linux操作系统的,系统模型如图1所示,下面小节分别对各个部分加以说明.
图1.
基于双零拷贝的高速网络流量测量系统模型2.
1基于零拷贝的分组捕获平台在传统的流量测量工具中,数据从网卡到应用程序空间的过程多数是基于类似Libpcap的分组捕获模型实现的.
这种分组捕获模型如图2(a)所示(内核部分我们以BPF为例[1]).
在这种模型中数据传输是通过操作系统内核来完成的,网络分组到达后,首先以DMA方式传送到内核缓冲区,并发出硬中断,网卡驱动在硬中断处理程序中把到达的分组提交给BPF分组过滤器,经分组过滤器经过滤后才到达用户空间,其中存在很多影响系统性能的因素:数据分组通过单分组驱动机制从内核空间向用户空间传送,效率不高;用户进程频繁的系统调用,消耗大量的资源;处理过程中经过了从网卡到内核缓冲区,再从BPF拷贝到用户空间缓冲区的过程,内存拷贝操作要消耗大量的CPU周期和内存资源.
为了提高高速网络环境下分组捕获的性能,有必要减少分组传输过程的中间环节、减少或消除数据拷贝次数.
由此我们设计了零拷贝分组捕获方案[5][6],其模型如图2(b)所示.
零拷贝的基本思想是:数据报从网络设备到用户程序空间传递的过程中,减少数据拷贝次数,减少系统调用,降低CPU在这方面的负载.
实现零拷贝用到的最主要技术是DMA数据传输、缓冲区访问同步以及内存区域映射技术.

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

(a).
传统分组捕获模型(b).
零拷贝分组捕获模型图2.
两种分组捕获过程的比较用户缓冲区和网络接口之间分组的零拷贝传输是通过网络接口DMA方式来实现的.
由于用户进程使用的是虚拟内存地址,而网络接口直接使用内核提供的物理地址,在应用程序缓冲区和网络接口之间使用DMA传输必须解决用户缓冲区的虚拟地址到物理地址的转换问题.
我们在应用进程空间静态分配一块连续的页对齐的内存作为用户数据缓冲区,把用户数据缓冲区分为2KB的块,因为在Linux系统中页大小是4KB,存放数据分组的数据块又要大于一个MTU(最大传输单元),这样每页只放2个数据分组,保证了一个数据分组不会跨越两个页,方便了DMA操作.
用户进程向内核代理通告用户数据缓冲区的起始虚拟地址和缓冲区大小.
Linux操作系统为每个进程维护了一个三级页表,以实现虚拟地址到物理地址的转换.
内核代理利用该三级页表完成虚拟地址页到物理地址页的转换并将物理页面锁定于内存中.
我们建立了一个地址映射表AddrMapTable,用于存储虚拟地址页和物理地址页之间的对应关系,这个地址映射表覆盖了所有用于分组传输的用户缓冲块的物理地址.

传统工作方式下,网卡通过硬中断方式通知分组的到达.
然而中断响应的代价很高,在高速网络下,频繁的中断会使操作系统自陷在中断响应中,形成活锁.
文献[7]中实现了一种半轮询机制,在大流量情况下使用软中断轮询机制,否则使用硬中断机制,使效率得到了很大提高.
由于流量测量还要考虑分组到达时间的精确度,我们在这个基础上作了修改,采用纯轮询机制.

零拷贝分组捕获中分组的传输过程如下:在应用进程空间静态分配用户数据缓冲区,向内核代理通告用户数据缓冲区的起始虚拟地址和缓冲区大小.
内核代理模块建立了两个环形队列用来管理数据缓冲区,接收队列RecBusyQ和接收空闲队列RecFreeQ.
每个队列都包含了指向用户缓冲区数据块的索引.
分组到达网络接口卡时,直接以DMA方式存储到用户空间缓冲区,然后发出硬中断.
在硬中断响应开始,关闭网卡硬中断,通过软中断进入轮询操作,如果接收了新的分组,则往接收队列添加分组索引,并从空闲队列取得空闲数据块索引,然后通过地址映射表AddrMapTable找到对应的数据块物理地址,提供给网卡驱动程序供以后DMA使用.
接收队列、接收空闲队列以及地址映射表放在连续的内存空间,然后通过内存映射技术使应用程序也能够访问.
当到达的分组达到一定数量,唤醒应用进程,应用进程从接收队列获得数据块索引,得到用户缓冲区地址,当处理完索引指向的分组后将其添加到接收空闲队列.
从内核空间到用户空间的批量分组传送,减少了用户进程的系统调用和状态切换.

2.
2基于TSC(TimestampCounter)的时间戳分组到达的时间精确度对于流量分析具有重要意义,不论时间间隔分布,还是相关系数分析,都需要分组到达的精确的时间,否则会影响流量分析和建模的准确性.
基于硬件的测量系统在捕包卡上添加了时间戳功能[4][8],效果比较理想,但成本较高,灵活性不好.

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

虽然TSC可以依CPU状况提供精确到纳秒级的时间,由于网卡的缓存,以及中断响应时间具有不确定性,实际应用中精确度不高.
为了最大程度的提高时间精确度,我们放弃了中断和轮询相结合的半轮询机制,采用了内核全轮询机制,在轮询获知分组到达时添加时间戳,这样在软件部分得知分组到达的第一时间加入时间戳.
同时,我们在Linux下采用了实时操作系统内核模块RTLinux,保证了轮询进程的高优先级别,确保了对网卡轮询的精确性.

2.
3基于裸设备的存储方案提取所需要的数据以后,接下来的问题就是如何把数据存储到硬盘.
广域网网络流量具有自相似特征,也就是说在不同的时间尺度上存在突发性[9],如果没有缓冲措施平抑高峰流量的到达,硬盘存储速率难以满足要求.
我们采取了循环缓冲方案,网络数据采集程序和存储程序分处不同的线程,放弃了阻塞进程的同步方式,当循环缓冲区满时,丢弃新到的包,这样可以防止不必要的阻塞影响系统整体性能.

相比于总线速度和内存速度,硬盘存储速度要低得多,是流量测量的主要瓶颈.
有了内存的缓冲作用,这里可以不考虑网络流量峰值,只要求达到平均速度.
根据需求的不同,网络流量测量只存储IP包的一部分字段,随着存储字段的增加,对硬盘存储速度的要求也就提高.
DZC-TMS系统中,每个IP分组我们存储48字节(20字节IP头+20字节TCP头+8字节时间戳).
DZC-TMS采用基于裸设备(rawdevice)的存储方案.
裸设备是没有建立文件系统的设备,是一种特殊字符设备.
在Linux下,把裸设备绑定到块设备(例如磁盘),就可以像访问块设备一样对裸设备进行读写操作了.
但不同的是,在文件系统方式下,数据首先从用户空间复制到内核空间,然后通过DMA执行I/O操作,而在裸设备方式下数据不再复制到内核空间,而是DMA直接操作用户缓冲区的数据,所以裸设备的访问是零拷贝I/O.

由于裸设备的I/O操作包括对用户进程存储区的直接硬件访问,要求用户进程存储区要从一个块的起始地址开始,最简单的方法就是通过Linux下的函数调用valloc()来分配从块的起始地址开始的缓冲区,同时要求存储区的大小是块的大小的倍数.

由于使用裸设备避免了经过Linux文件系统层,数据直接在磁盘和应用程序之间进行传输,所以在磁盘读写非常频繁,以至于磁盘读写成为系统瓶颈的情况下,采用裸设备可以大大提高磁盘访问速度.
由于裸设备使用的是原始分区,没有采用文件系统的管理方式,Linux维护文件系统的开销也都没有了,这也能够有效减少CPU和内存的消耗.
为了对裸设备的性能加以验证,我们使用CPU主频1.
7G,内存为128MB的微机,在同一块硬盘上对裸设备和Linux文件系统管理下的文件作同样的写操作,连续写入1GB数据,结果对比如表-1所示,裸设备无论在速率还是资源占用上,都有优势,当然裸设备同时也带来了管理和操作上的困难,但在特定系统中,这是次要的.

表1.
裸设备与Linux文件系统写入性能对比3.
系统性能测试系统测试环境的配置为:双CPU-PⅣ2.
0G;4G内存;RedHatLinux7.
2-2.
4.
18-smp5操作系统+RTLinux内核模块;IntelPro1000千兆以太网卡;Ultra160-SCSI硬盘.
为了对测试结果加以量化,我们用RouterTester作为发包机,控制分组长度和发包速度,在不同分组长度条件下,提高发包速度,记录发生丢包之前达到的最高发包速度.
同时作为比较,我们用传统的Libpcap和Linux文件系统替换了零拷贝分组捕获和裸设备存储,做了同样的测试,测试结果如图3所示,DZC-TMS系统的最高测量速度随着分组长度的增加,快速提高,当分组长度为512字节时最高测量速率就可以达到约950Mb/s,此后基本不再有提高;而基于Libpcap和文件系统的流量测量系统的最高测量速度随着分组长度的增加提高不大,没有超过250Mb/s.
DZC-TMS流量测量系统在总体性能上远远高于传统的流量测量方法.

图3.
两种流量测量系统的性能对比在现有测试条件下,系统的瓶颈位于分组捕获部分,也就是说在达到最高测量速度时,在分组捕获部分首先出现丢包现象.
我们在实际网络中采用旁路监听方式采集了电信及教育网千兆网络出口的流量,系统运行稳定,没有出现丢包的现象,完全能够满足千兆网络的流量测量需求.

前面部分我们介绍了基于TSC时间戳可以达到纳秒级精确度,这里我们通过实验分析其执行性能以及网络分组到达的时间精确度.
我们测试了TSC时间获取和通过系统调用gettimeofday()获取时间的效率,在现有测试条件下,执行一次gettimeofday()所用的时间大约是520ns,而执行TSC时间获取所用的时间大约是32ns,二者的性能差别是明显的.
由于使用了SMP(SymmetricMulti-Processor)系统和实时操作系统模块RTLinux,任务分派到不同的CPU,而且设置分组轮询进程为高优先级,所以进程调度对时间精确度影响可以控制在微秒级.
由于网络流量研究一般是在一定的时间尺度范围内的[10],所以微秒级的时间精确度基本能够满足千兆网测量需求.

4.
结束语本文在分析传统网络流量测量方法所存在的问题的基础上,设计并实现了基于双零拷贝的网络流量测量系统DZC-TMS,使流量测量系统的性能得到极大提高,能够满足千兆网络的流量测量需求.
当然,本系统还存在一些局限性.
由于软件方案的限制,本系统在分组到达时间戳上的精确度还不够高,这个问题只能在硬件层次解决.
要测量更高带宽的流量,除了采用性能更高的计算机系统以外,分组捕获和存储系统之一必然成为整个测量系统中的瓶颈,如果存储系统成为瓶颈,则可以采用RAID0技术提高存储速度,甚至可以设计一个并行存储系统,通过局域网把存储任务分配到多台计算机;如果分组捕获成为瓶颈,则需要把网络流量分流到不同的测量系统.
当然这些都需要比较高的成本.
在高速网络流量测量中采用适当采样和压缩技术而又不丢失流量特征,将会极大缓解带宽提高带来的压力,是下一步重点研究的方向.

妮妮云(100元/月)阿里云香港BGP专线 2核 4G

妮妮云的来历妮妮云是 789 陈总 张总 三方共同投资建立的网站 本着“良心 便宜 稳定”的初衷 为小白用户避免被坑妮妮云的市场定位妮妮云主要代理市场稳定速度的云服务器产品,避免新手购买云服务器的时候众多商家不知道如何选择,妮妮云就帮你选择好了产品,无需承担购买风险,不用担心出现被跑路 被诈骗的情况。妮妮云的售后保证妮妮云退款 通过于合作商的友好协商,云服务器提供2天内全额退款,超过2天不退款 物...

香港E3 16G 390元/ 香港E5*2 32G 600元/ 香港站群 4-8C 1200元/ 美国200G高防 900/ 日本100M 700元

3C云国内IDC/ISP资质齐全商家,与香港公司联合运营, 已超6年运营 。本次为大家带来的是双12特惠活动,香港美国日本韩国|高速精品|高防|站群|大带宽等产品齐全,欢迎咨询问价。3C云科技有限公司官方网站:http://www.3cccy.com/客服QQ:937695003网页客服:点击咨询客户QQ交流群:1042709810价目表总览升级内存 60元 8G内存升级硬盘 1T机械 90元 2...

LOCVPS(29.6元/月)KVM架构 香港/美国机房全场8折

LOCVPS商家我们还是比较熟悉的老牌的国内服务商,包括他们还有其他的产品品牌。这不看到商家的信息,有新增KVM架构轻量/迷你套餐,提供的机房包括香港云地和美国洛杉矶,适用全场8折优惠,月付29.6元起。LOCVPS是一家成立于2011年的稳定老牌国人商家,主要从事XEN、KVM架构的国外VPS销售,主推洛杉矶MC、洛杉矶C3、香港邦联、香港沙田电信、香港大埔、日本东京、日本大阪、新加坡等数据中心...

局域网流量控制为你推荐
标准论文格式范例规范点击ipad支持ipad支持ipad国家标准苹果5C1:山东品牌商品馆iexplore.exe应用程序错误iexplore.exe应用程序错误苹果5.1完美越狱iOS5.1.1完美越狱教程morphvoxpro怎么用怎么使用morphvox proios5.1.1固件下载关于iphone4s 现在的系统是ios5.1.1,可以直接升级到系统ios6.1?
中文域名注册 日本vps 荷兰vps 华为云服务 服务器评测 狗爹 站群服务器 56折 建站代码 华为网络硬盘 新天域互联 万网空间购买 shopex主机 彩虹云 我的世界服务器ip 德隆中文网 华为云建站 supercache 中国联通宽带测试 rewritecond 更多