2. 华北水利水电大学 软件学院, 郑州 450011
网络数据包吞吐量测试是评价网络性能的重要指标, 对于不同帧长的以太网数据包, 由于开销所占数据包比重不同, 网络处理能力差异较大.在现场可编程门阵列中, 采用硬件的方式产生线速网络吞吐量测试帧, 远端从机环回测试帧, 回传测试结果, 可以分别测试网络的上下行网络吞吐量, 准确评价网络链路的吞吐量.结果表明, 使用透子网的网络吞吐量测试方法可以很好地用于不同网络节点间的吞吐量测试, 是一种实用、有效的测试手段.
2. School of Software, North China University of Water Resources and Electric Power, Zhengzhou 450011, China
The network throughput is an important specification to evaluate the network performance, and the ability of network processing is difference due to the proportion of overhead in packets. The test network was designed based on field programmable gate array, which rate can reach line speed. The work status of slave machine is controlled by host, which sends back the test results. The uplink and downlink throughput can be tested by this way, further, the network performance is evaluated. It shows that method with cross subnet test throughput of the network can be used for different nodes of the network.
随着Internet的日益普及和快速发展,终端用户访问Internet的业务量在不断增加,网络需要提供如WWW浏览、FTP文件传输、DNS域名解析、电子邮件等服务,这些因素会导致网络流量的急剧增加.如果网络平台的吞吐量太小,就会成为网络瓶颈,给整个网络的传输效率带来负面影响.因此,在对网络平台进行性能测试时,考查吞吐量是一项十分重要的技术指标,有助于更好地评价其性能[1].
1 透子网吞吐量测试原理吞吐量是用来测试网络设备包转发能力的重要参数,通常指设备在不丢包条件下的最大传输速率.目前测试吞吐量的方法主要分为2类:一类是基于软件的有限吞吐量测试;另一类是基于硬件的方法进行满负荷、全线速的吞吐量测试.
软件测试的优点在于实现方便,不需要过多的硬件支持,只需要一块网卡即可实现对吞吐量的测试,测试成本相对较低.但其缺点也同样明显,定时精度差,无法线速产生测试需要的数据帧,导致误差比较大,不能真实反映出网络设备的实际吞吐量,所以较少使用.因此,为了线速地产生吞吐量测试帧,使测试误差精确到1帧,目前更多的是采用硬件方法来进行吞吐量的测试.
硬件方法测试吞吐量通常采用二分法:在测试中以全线速递减的方式发送吞吐量测试帧,并统计待测设备接收到的测试帧,如果发送的帧与接收的帧数量相等,那么就将发送速率以折半二分法的方法提高并重新测试;如果接收帧少于发送帧数,那么发送帧则采用折半二分法的方法降低发送速率重新测试,直至使用二分法测量出发送数据帧数等于接收数据帧数时的最大发送数据包的速率,即为网络吞吐量[2].
采用双端口进行网络吞吐量测试的好处在于使用一台测试仪器即可完成链路吞吐量的测试,并可分别对不同的上下行链路进行测试,由于在同一测试仪器中,时钟同步问题比较好解决.
在实际情况中,吞吐量测试由于测试节点通常不在同一个区域,双端口测试仪器也无法实现空间上处于2个不同子网的网络节点.对于物理上处于不同位置的测试节点,双端口测试仪器不太适合.因此在测量2个距离较远的网络节点之间的吞吐量时,使用2台单端口的测试仪器能更方便地测试网络吞吐量.
采用2台单端口测试仪器测试网络吞吐量的具体方法:一台作为主控机,一台作为远端从机,主机控制从机的收发动作,通知从机产生下行测试帧和回送上行测试数据.
目前单端口测试仪器通常采用UDP数据包作为测试帧,在同一子网内测试吞吐量,测试帧的源MAC地址和源IP地址不会被替换掉,因此在远端的从机可以直接将上行测试帧的源MAC地址和源IP地址与目的MAC地址和目的IP地址进行交换形成下行测试帧.
而在跨子网进行吞吐量测试时,测试帧的源MAC地址和源IP地址会被Router的源MAC地址、源IP地址和源UDP端口号所替换,这种情况导致处于不同子网的从机节点无法知道上行测试帧的初始源MAC地址、源IP地址、源UDP端口号,从而无法形成正确的下行测试帧送到主控机测试侧.
在该研究中,为了实现跨越子网测试网络吞吐量,必须保证远端的从机节点能正确地接收到主控机的原始IP地址和UDP端口号,以便在从机端形成下行测试帧时能正确地送到主控机节点.为了实现这一点,在该研究中,采用的方法是在发送测试帧数据的固定位置中包内包含发送源端IP地址和UDP端口号,以便于远端环回测试帧形成环回目的IP地址和UDP端口号.这样的原理在于UDP帧数据包中的净荷数据无论经过多少层Router,都不会被替换,同样净荷中的源IP地址和源UDP端口号能被从机侧正确接收[3].
采用同样的方法,在进行透子网网络参数测试时,可以将主机侧的其他参数同样传送到从机侧,如主机发送帧数、主机侧发送周期、发送时间标签等,可用于从机侧测试上行吞吐量、上行时延、抖动及背靠背帧等参数.
2 方案设计实现单端口透子网吞吐量测试主要由主控机模块和智能远端2部分组成.
主控机模块主要包括3部分:智能远端的控制帧发生模块、全线速通用测试帧产生模块、接收测试帧统计模块.
控制帧发生模块控制智能远端的工作状态,启动远端智能吞吐量的下行测试,请求远端发回统计结果和发送其他智能端的数据统计结果.其数据帧格式为UDP帧,在帧数据指定长度位置加入控制帧标志“ei41.edu.cn.comm”对应的ESC码.
全线速通用测试帧产生模块是根据测试需要,生成不同网络线速的测试数据,最高可以达到全线速.其数据帧格式为UDP帧,帧头和帧数据内容可以根据要求进行设置,主机侧根据实际测试要求,按照折半搜索的方法进行网络数据吞吐量的测试,直到在设定的测试周期内数据帧未丢失为止.线速发生的关键点在于设计帧之间的间隔[4].
如果使用纯软件的方式实现数据帧,其时间精度最大能达到μs级,而线速设计时,其最小时间间隔为12个CLK,时间精度达到1CLK,步进间隔要求为12.5ns,这是软件所不能实现的.
在该设计中采用软硬件结合的方式实现测试帧不同线速的生成,即采用软件的方法生成整个测试帧,然后启动硬件成帧发生器,根据设定的时间参数、突发次数,FPGA按照设计的电路读取软件放置于DPRAM中的通用测试帧,将数据帧打上时间信息、数据帧序号后通过接口MAC帧芯片发送出去.网络线速的控制根据接口实际适配结果而定,在该设计中由于采用BCM5461作为MAC层接口芯片,其恢复时钟为125MHz、25MHz和2.5MHz,分别对应于1000、100、10Mbit/s,对应的线速计算公式为
(1) |
其中:MediaSpeed为适配线路速率,PreamableSize为前导码长度,FrameSize为测试数据帧长度,GapSize为帧间隔.式(1) 经过化简后可以得到
(2) |
在硬件设计中,调整发送的帧数据线速是通过调节帧间隔来实现的,即通过设置GapSize的不同CLK个数,实现对线速的最终调节[5].由式(2) 得
(3) |
接收测试帧统计模块通过识别测试帧标志“ei41.edu.cn.data”来进行接收环回帧的个数统计,然后通过与在该时间段内的发生测试帧进行帧数比较,进而实现对当前吞吐量测试的判定.
智能远端从机模块除了需要实现线速网络数据发生外,主要实现的功能是解析测试帧内的测试数据,识别吞吐量测试帧,统计上行吞吐量测试帧,并将统计结果根据要求回传到主控机端,根据主控机端指令形成下行的吞吐量测试帧.下行测试帧的目的IP地址为上行测试帧的源IP地址,下行测试帧的源IP地址为上行测试帧的目的IP地址.
在网络吞吐量测试设计中,网络中的数据帧主要包括控制帧和通用测试帧2种帧格式.数据帧采用标准UDP帧格式,其MAC地址和IP地址、UDP端口号以及帧数据内容均可设置.
控制帧采用固定帧长(128B),标志为“ei41.edu.cn.comm”.其帧格式如图 1所示.
通用测试帧是用于测试上行吞吐量和下行吞吐量时,网络上实际传送的数据帧,其用于主机端和智能远端统计测试周期内上、下行帧数据量.在设计中,测试帧标志为“ei41.edu.cn.data”.通用测试帧的内容格式如图 2所示.
由于对不同帧长的数据包,网络中转设备差异较大,通常帧长度小的数据帧,其帧开销所占比例较大,从而中转设备处理开销所占时间比重较大.结果帧小的数据帧中转时开销大,从而导致其吞吐量比长帧的吞吐量小,所以有必要对不同长度的数据帧分别进行吞吐量测试.
通常通用测试帧帧长可以采用固定的64、128、256、512、1024、1280、1518B协议帧来设计,也可以根据用户实际测试要求自行设定[6].
基于FPGA的全线速测试帧发生模块通过软件生成固定的帧数据并放置到DPRAM中,同时软件需要设置好时间控制参数,即帧间隔和帧发生方式(突发或者连续方式).软件设置好后启动发生过程,硬件电路从FPGA内部的DPRAM中读取设定好的帧数据,添加时间和序号信息,最后硬件电路完成CRC32计算,并将原来软件设置的FCS进行替换,整个线速发生电路框图如图 3所示.
由于同一网络链路,其上、下行链路通常是不对称的,其上行、下行、双向吞吐量也是不相同的.为了真实地反映网络实际情况,有必要分别测试其上行、下行和双向网络吞吐量.在一个测试周期内,2台单端口测试仪器及待测试网络链路组成一个测试系统.其中一台测试仪器设置为主机模式,另一台仪器设置为远端智能工作模式.所有的测试参数均在主机侧进行设置,包括测试周期、测试步进、数据帧发生模式、目的和源IP地址以及源和目的UDP端口号等.远端智能机只需进行远端智能设置,将其设置为吞吐量远端智能工作模式即可.
主控机工作流程如下.
1) 判断远端智能设备是否在同一子网内,是则直接发送测试启动帧,启动远端智能设备进入智能测试状态;否则先通过发送ARP地址查询帧发现网关地址,然后发送透网测试启动帧,启动处于另一子网的远端智能设备进入智能测试状态.
2) 发送通路验证测试帧,以进行网络通路验证.
3) 按需求可分别进行上、下行吞吐量及双向吞吐量测试.
在此仅以上、下行吞吐量测试对测试流程进行简略介绍.
上行吞吐量测试如下.
1) 结合硬件设计,在不同测试周期内以不同线速发送吞吐量测试帧,进行网络各种性能测试.
2) 一个测试周期完成,发送停止测试帧,让智能设备退出吞吐量数据帧测试状态.
3) 发送上行测试参数请求帧,请求智能端回传上行统计数据.
4) 解析智能端回传数据,计算数据帧有无丢失.如有丢失,返回步骤1),降速测试.如无数据帧丢失,比较是否逼近步进线速,如果未逼近步进线速,则提高测试发生线速,直至无数据帧丢失,同时满足步进线速.此时为实际上行吞吐量测试.
下行吞吐量测试如下.
1) 开始一个测试周期,统计下行测试帧数量.
2) 一个测试周期完成,发送下行测试参数请求帧,请求智能端回传下行发送数据帧数量.
3) 解析智能端回传数据,计算数据帧有无丢失.如有丢失,发送测试控制帧给智能端,请求降速测试,返回步骤1).如无数据帧丢失,比较是否逼近步进线速,如果未逼近步进线速,则发送测试控制帧给智能端,请求提高测试发生线速,返回步骤1),直至无数据帧丢失,同时满足步进线速.此时为实际下行吞吐量测试.
3 测试结果针对某路由器为核心组成的小型网络进行了上行吞吐量测试,网络适配为100Mbit/s的速率,实际上行吞吐量(测试周期为2s)测试结果如表 1所示.
从表 1中可以看出,吞吐量与帧长有关,帧长越长,其线速越高,吞吐量也越大.在进行1280B和1518B的长帧测试时,吞吐量都达到了线速,没发生丢包情况;而在处理64B、128B短帧时,吞吐量达不到线速,存在不同程度的丢包现象.
4 结束语吞吐量是评价网络性能的一项重要指标.如何准确地评价网络的吞吐量性能具有十分重要的意义.该种单端口吞吐量测试设计技术被应用于中电41所的网络测试仪器AV5214的设计中,可以很有效地测试不同节点之间的上、下行吞吐量.其不仅可以用于子网内部节点,也可以用于不同网络节点之间的吞吐量测试,采用硬件线速产生测试帧的设计方法保证了吞吐量测试的准确性,实际测试数据也很好地证实了这一点.
[1] |
马涛, 龚荣凡. 网络数据小包吞吐量测试与分析[J]. 电子技术应用, 2008(11): 95–97.
Ma Tao, Gong Rongfan. Test and analysis on throughout of mini network packets[J].Application of Electronic Technique, 2008(11): 95–97. |
[2] |
徐波, 韦韬, 邹维. RFC 2544网络设备评测协议实现技术[J]. 计算机工程, 2003(10): 140–142.
B o, Wei Tao, Zou Wei. Implementation of network devices benchmark RFC2544[J].Computer Engineering, 2003(10): 140–142. doi: 10.3969/j.issn.1000-3428.2003.10.057 |
[3] |
江勇, 袁海军, 孙昊, 等. 一种单端口全线速测试WAN网络吞吐量的方法及装置: 中国, CN103078767A[P]. 2013-05-01.
Jiang Yong, Yuan Haijun, Sun Hao, et al. A method and device of single port for speed testing throughout of WAN network: China, CN103078767A[P]. 2013-05-01. |
[4] |
赵传强, 刘元安, 刘凯明, 等. 面向吞吐量效率的无线Mesh网络机会主义路由[J]. 北京邮电大学学报, 2011(2): 81–84.
Zhao Chuanqiang, Liu Yuan-an, Liu Kaiming, et al. A throughput efficiency oriented opportunistic routing in wireless mesh networks[J].Journal of Beijing University of Posts and Telecommunications, 2011(2): 81–84. |
[5] |
覃团发, 廖素芸, 罗会平, 等. 支持网络编码的无线Mesh网络路由协议[J]. 北京邮电大学学报, 2009(1): 14–18.
Qin Tuanfa, Liao Suyun, Luo Huiping, et al. A network coding-aware routing protocol in wireless mesh network[J].Journal of Beijing University of Posts and Telecommunications, 2009(1): 14–18. |
[6] |
董超, 陈贵海, 于卫波, 等. 优化分组长度的IEEE 802. 11网络性能[J]. 北京邮电大学学报, 2011(5): 71–75.
Dong Chao, Chen Guihai, Yu Weibo, et al. A study dealed with IEEE 802.11 networks using packet size optimization[J].Journal of Beijing University of Posts and Telecommunications, 2011(5): 71–75. |