IP网络性能测试系统的设计与实现
作者:网络转载 发布时间:[ 2012/5/24 13:16:37 ] 推荐标签:
摘要:网络性能的实时监测已经成为一项必要的工作,网络性能测试终端正是这样一种设备。用嵌入式系统实现网络测试终端是一个理想的选择。文中介绍了一种以若干个测试终端组成一个测试网络来监控网络性能的方法,具体分析了嵌入式网络性能测试终端的软硬件设计,利用GPS解决多个测试终端时间同步的问题。给出了修改操作系统内核以获取高精度时间和文件系统设计及配置的方法。
随着计算机网络的普遍使用,人们越来越关注网络服务质量,某些应用程序和协议对网络服务质量也有一定的要求。网络的带宽、时延是表征网络服务质量的一个重要参数,通过对它们的测量和监督可以了解网络在一段时间内的服务质量。网络性能测试终端通过按一定的方式发送、接收各种网络测试包,计算各个测试点之间的丢包率、双向和单向的时延来监测网络服务质量。
网络时延的测量方式
本系统测量网络时延有两种方式:单向式和双向式。双向式测量的原理类似于网络应用程序ping。在这种方式下,网络时延可近似视为时间之差的1/2。这种方法的优点是不用同步发送方和接收方的时间,缺点是测试包在两个测试终端间的传递可能经过不同的路线。单向测量的过程与双向测量方式相似,但接收方不再将测试包返回,而是通过比较本机的接收时间和测试包里的时间戳,得到网络时延。在这种测试过程中,对多个测试终端的时间同步要求非常高,否则计算结果毫无意义。
对于一个具有一定规模的网络,可以用多个测试终端来监视网络的运行情况。在这种情况下,若干个测试终端组成一个测试网络,根据测试人员的要求,每个测试终端有相应的测试配置,例如测试包的类型、长短,发送过程的随机过程类型及参数等。整个测试网络由少量的测试控制服务器控制测试过程。测试终端和服务器的通信采用C/S结构,测试终端启动时从服务器得到测试配置,开始测试过程后记录测试结果并将结果发回测试服务器,服务器接收数据并存入数据库。本测试终端采用以三星公司的微处理器S3C4510B为核心的一个嵌入式系统来实现上述功能。
硬件设计
测试终端的硬件应具备以下功能:①有网络接口,可以发送多种网络测试包;②有高精度时钟源,并且多个时钟源间可以良好同步,用于单向测试;③有一定的用户接口,可以让用户设定基本的测试参数;④因为要进行多点长期运行,所以应该功耗低,便于携带安装。
微处理器单元
S3C4510B是三星公司的一款32/16位的基于arm7DTMI内核的微处理器。它功耗低,速度高(大约45Mips),片内资源丰富,自带有以太接口、两个32位的定时器、I2C接口、HDLC接口、串行通接口等。S3C4510B有6个DRAM片选组,4个ROM片选组,并且有SDRAM控制器,可以访问64MB的地址空间。由于地址空间大,接口丰富,总线宽度适宜,一些嵌入式操作系统如uClinux,ucOS-II可以顺利地移植到S3C4510B平台上。S3C4510B还自带有一个10~100MB的以太控制器,可以工作在半双工或全双工模式下,支持媒体独立接口(MII)和带缓冲的DMA接口,配上相应的物理层芯片可以轻易实现网络通讯。
存储器部分
通常,计算机系统都带有ROM和RAM两种存储器,ROM存储固定的代码,而RAM则作为堆栈来保存运行时的临时性数据。本测试终端的ROM存储器采用了一片AMD公司的AM29LV160。这是一种容量为2MB,16位宽的FLASH存储器(闪存)。FLASH存储器除了具有非易失的特点外,它的另一个很大的优点是可以在线被重新擦写。利用这个特点测试终端可以在测试中实时修改终端的配置和测试参数。不过,虽然FLASH存储器虽然可以被重新擦写,但读写速度都较慢,只适宜保存需固化的数据,如嵌入式操作系统的内核等等。
S3C4510B芯片里自带有8kB的静态RAM,但对于本应用来说,8kB的SRAM显然不能满足要求。SDRAM有大容量、高速度的优点,S3C4510B片内有SDRAM的接口,可以自动刷新SDRAM。本系统采用两片8MB16位宽的HY57V641620构成一个32位宽16MB的SDRAM存储器系统。启动时,启动程序(BOOTLOADER)将ROM中的用户程序拷贝到RAM中去,并终跳转到那里而完全脱离ROM运行,由于SDRAM读写速度较快。这样做还可以得到较好的运行效率。
GPS单元
做单向测试需要多个测试终端之间时间同步,使用NTP(网络时间协议)来进行多机同步是一个简单廉价的方案,但由于现在网络的速度较高,网络延迟的典型值一般为1~100μs,而新的NTP协议及其实现所能达到的精度仅为200μs,无法在本应用中使用。另外还可以采用电话系统授时和GPS授时,其中以GPS授时的精度高,通常小于1μs。考虑到本系统时间同步要求较高,所以选用GPS作为每个测试终端的时钟源。本设计采用的GPS接收机是NOVMAN的JUPITER-12。这种GPS有两路串行输出,能够输出标准的NEMA格式数据。在本设计中,GPS的主串行输出接在S3C4510的串口2上,处理器从串口2按NEMA0183格式读出GPS数据。
由于NEMA格式的串行数据里没有精确到毫秒级的数据,并且数据从串口读出本身也要耗费一些时间,所以利用串口2读出的数据不能做到精确的时间同步。大部分GPS接收机都有一个秒脉冲输出引脚,在GPS正确定位了足够数量的卫星后,该引脚上输出与协调世界时(UTC)的秒对齐的1Hz的脉冲。除了该输出外,JUPITER还提供一个10kHz的时钟方波输出。这个时钟也是与UTC的秒精确对齐的。利用这个信号配合从串口读出的数据可以做到精确授时。
用户输入输出接口
本终端允许用户人工干预测试过程,比如输入更改本机IP地址、测试服务器地址等,所以必须有一定的用户接口。系统的输入设备为一简易的4x4的小键盘,4根行扫描线和4根列扫描线分别与S3C4510B的8个通用IO引脚相连,当有键按下时输出一个字节的扫描码。输出设备为一自带汉字库的128x64的点阵式液晶显示模块TG12864E。这种液晶显示模块内置的LCD控制器ST7920与CPU接口简单。本系统中该LCD模块挂接在外部片选组0上。
软件设计
根据本应用的设计要求,本测试终端应该支持大部分的网络协议,并且其编程接口应该尽可能的丰富,系统软件应运行稳定可靠。尽管可以直接写程序控制S3C4510的网络接口收发数据,但即使实现部分的TCP/IP协议栈的功能也是非常耗时耗力的,所以系统的软件好是运行于带网络支持的操作系统上。uClinux是Linux操作系统的一个分支,支持包括S3C4510B在内越来越多的CPU。本系统采用的是uClinux2。4的内核及其对应的应用程序。并在此基础上构建了用户应用程序。
uClinux有着良好的内核用户定制界面,可以让用户选择系统所使用的库、内核特征、系统应用程序。根据本应用的要求,内核主要的特征如下:①支持网络(这是测试的核心内容);②支持串口仿真终端,为了调试方便;③支持JFFS2文件系统。这是一个在FLASH存储器上实现的支持读写操作的文件系统。利用这种文件系统,用户应用程序可以方便地向FLASH存储器写入数据。
除了这些定制的特征外,还要根据实际要求对内核做一些改动。
修改内核以支持GPS时间同步
本系统没有实时时钟(RTC),所以每次开机后都要通过GPS来设定系统时间,GPS精确授时通过S3C4510B的通用IO口完成。如前所述,GPS接收机正常工作后,输出一个与UTC精确对齐的秒脉冲,将该输出引脚接至S3C4510B的一个通用IO口上,每次系统启动初始化时钟部分时,从串口2读出当前UTC时间,然后读取该通用IO口,等待GPS接收机的秒脉冲,完毕后设置系统时间。系统运行后,每隔1h重复一次时间同步。
修改gettimeofday函数
在Linux操作系统里,该函数用来读取系统当前精确时间,其函数原型为intgettimeofday(structtimeval*tv,structtimezone*tz);
函数调用成功后,可得到精确到微秒的当前时间。无论是双向测试还是单向测试,测试包时间戳里的数据都是调用该函数得到的。从Pentium开始,IntelX86的芯片里带有一个64位的时间戳计数器(TSC),每个时钟使它加1。X86处理器所使用的Linux内核中该函数正是读取TSC来实现的(早期的则是读Intel8253)。遗憾的是,uClinux支持S3C4510B架构的内核版本里对该函数支持欠佳,仅仅精确到0。01s,S3C4510B里也没有时间戳计数器。所以必须对内核做一定的修改。
S3C4510B内部有两个32位计数器,可以工作在间隔模式(interval)和触发模式(toggle)。读取内部的TDATA1/TDATA2寄存器可以得到当前的计数器计数值,工作在间隔模式时,每当计数减到0产生一个时钟中断。在uClinux里,正是利用了计数器1产生的时钟中断来生成时钟滴答的,周期是0。01s。uClinux的系统时间更新是靠计算时钟滴答实现的,所以精度完全取决于时钟滴答的长短,故而精度较低。在uClinux的sys-gettimeofday函数中增加读取TDATA1寄存器计数值的代码,计算gettimeofday函数调用时刻偏移值(图3中阴影部分时间长度),可以让gettimeodfday函数输出高精度时间。
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11