一种测试路由器数据通路鲁棒性的方法和系统
技术领域
本发明涉及路由器测试领域,更具体地说,涉及一种测试路由器数据通路鲁棒性的方法和系统。
背景技术
图1以考察路由器的LAN To WAN数据通路鲁棒性为例,示出了对路由器的LAN To WAN数据通路鲁棒性进行测试的一般拓扑。由于芯片方案相同或者多个芯片方案能力相当,通常路由器的LAN(局域网,Local Area Network)接口和WAN((广域网,Wide Area Network)接口支持的速率模式是相同的,例如均为千兆以太网。通常的做法是,LAN接口连接具有千兆以太网卡的测试PC,WAN接口同样连接具有千兆以太网卡的测试PC,然后使用发包工具从一端测试PC向另一端的测试PC持续长时间产生大小为吞吐量(Throughput)的测试流量。根据RFC 2889的定义,吞吐量是网络设备在丢包率为零的情况下转发能力的最大值。因此,上述方法是在所测试路由器所能支持的最大无丢包转发流量下进行的。通过长时间以相同的速率让收包接口和发包接口转发大量的包,从而说明该数据通路的鲁棒性。一般的判断标准是:测试结束后所测试路由器各方面的功能是否均正常;整个测试过程中的转发流量水平能否达到预期值。
然而,现有技术存在的问题是,仅仅考察了资源充足的情况下各种设备驱动的收发包处理逻辑的鲁棒性,而路由器产品因其应用场景和产品定位不同,通常存储资源和芯片处理能力都是有一定的不同的上限。路由器的受限资源包括处理器和存储介质。其中处理器的处理能力决定了该款产品支持的外围接口及其速率和功能,而存储器通常包括ROM和RAM。其中ROM中存放系统引导程序和嵌入式系统的代码,RAM用于为嵌入式系统启动和运行过程中所需的存储空间分配内存。而路由器作为一种存储转发式的网络设备,在数据包通过数据通路的过程中,需要申请相应的存储空间对其进行缓存,处理并转发完成后其占用的空间才会被释放。而嵌入式系统空载运行起来之后RAM中空余的存储空间通常都是非常有限的。在现有的技术方案中,收包接口和发包接口的速率模式是相互匹配的,虽然CPU有处理时延,但是收发包接口均在平衡的状态下动态的缓存和转发包,基本上不会出现收发包队列缓存大量数据包而占用大量内存,新的数据包申请内存进行存储时访问失败的情况。而不管是无线介质还是有线介质,其物理层数据转发的最高速率通常相差不大,因此在使用相互匹配的速率进行测试的过程中,不管在进行有线到无线或者无线到有线的数据转发测试,通常无法测试到其中一端收包队列(堆栈)和发包队列(堆栈)为满而存储资源不可继续访问的边界情况,为设备的鲁棒性留下了测试的盲点。路由器属于典型的资源受限型嵌入式系统,设备驱动在开发的过程中,通常仅从收发逻辑上进行设计和验证,而难以验证各种异常情况下是否会出现问题。由于测试过程中未能涵盖软件处理的各种分支逻辑,导致按照现有测试方案对所测试的路由器进行严格的长时间稳定性测试后虽然测试结果正常,但用户在实际使用环境中还存在较多的系统死机、功能异常等的稳定性问题。
发明内容
本发明要解决的技术问题在于,针对现有技术的上述无法对异常边界情况下的鲁棒性进行测试的缺陷,提供一种测试路由器数据通路鲁棒性的方法和系统。
本发明解决其技术问题所采用的技术方案是:构造一种测试路由器数据通路鲁棒性的方法,包括:
配置路由器的第一接口、第二接口、与所述第一接口连接的第一配测装置、与所述第二接口连接的第二配测装置,使得所述第一配测装置能够访问所述第二配测装置;
设置所述第一配测装置工作在第一带宽,所述第二配测装置工作在第二带宽,其中第一带宽远大于第二带宽;
由所述第一配测装置向所述第一接口持续发送时长为T的测试流量,由第二配测装置通过所述第二接口接收所述测试流量;
检测所述路由器的工作状态是否正常并得出检测结果。
在本发明所述的测试路由器数据通路鲁棒性的方法中,所述第一接口为LAN接口,所述第二接口为WAN接口或WLAN接口;或
所述第一接口为WAN接口,所述第二接口为LAN接口或WLAN接口;或
所述第一接口为WLAN接口,所述第二接口为LAN接口或WAN接口。
在本发明所述的测试路由器数据通路鲁棒性的方法中,检测所述路由器的工作状态是否正常并得出检测结果包括监控所述路由器的内存使用情况。
在本发明所述的测试路由器数据通路鲁棒性的方法中,检测所述路由器的工作状态是否正常并得出检测结果包括测试所述路由器的第一接口并观察其响应。
在本发明所述的测试路由器数据通路鲁棒性的方法中,检测所述路由器的工作状态是否正常并得出检测结果包括访问所述路由器的管理页面并观察其响应。
在本发明所述的测试路由器数据通路鲁棒性的方法中,检测所述路由器的工作状态是否正常并得出检测结果包括检测测试流量发送完成后所述路由器的使用情况。
本发明还提供一种测试路由器数据通路鲁棒性的系统,所述路由器具有第一接口、第二接口,包括:
配置模块,用于配置路由器的第一接口、第二接口、与所述第一接口连接的第一配测装置、与所述第二接口连接的第二配测装置,使得所述第一配测装置能够访问所述第二配测装置;
带宽设置模块,用于设置所述第一配测装置工作在第一带宽,所述第二配测装置工作在第二带宽,其中第一带宽远大于第二带宽;
第一配测装置,用于向所述第一接口持续发送时长为T的测试流量;
第二配测装置,用于通过所述第二接口接收所述测试流量;
检测单元,用于检测所述路由器的工作状态是否正常并得出检测结果。
在本发明所述的测试路由器数据通路鲁棒性的系统中,所述第一接口为LAN接口,所述第二接口为WAN接口或WLAN接口;或
所述第一接口为WAN接口,所述第二接口为LAN接口或WLAN接口;或
所述第一接口为WLAN接口,所述第二接口为LAN接口或WAN接口。
本发明的有益效果是,通过配置路由器的两个待测接口以及与两个待测接口分别连接的两个配测装置,保证两个接口之间的连通性,然后将作为路由器的收包接口的对应配测装置设置在高带宽速率上,将作为路由器的发包接口对应的配测装置设置在低带宽速率上,且保证高带宽速率远远高于低带宽速率,使得发送队列(堆栈)和接收队列(堆栈)将处于满的状态。
从而达到了验证在资源不足情况下,软件收发包的分支处理逻辑是否存在缺陷的效果。可以在较短的时间内发现原有长时间大流量稳定性测试无法发现的问题,作为原有基本稳定性测试的之后的进一步验证测试,从一个方面提高了嵌入式系统数据通路的鲁棒性,使得在用户的复杂应用场景下运行更加稳定。
附图说明
下面将结合附图及实施例对本发明作进一步说明,附图中:
图1是路由器LAN to WAN稳定性测试拓扑示意图;
图2是路由器嵌入式系统及其外围接口的逻辑连接示意图;
图3是依据本发明一实施例的测试路由器数据通路鲁棒性的方法流程示意图;
图4示出了依据本发明一实施例的测试路由器数据通路鲁棒性的系统。
具体实施方式
图2是路由器嵌入式系统及其外围接口的逻辑连接示意图。其中,路由器嵌入式系统实现的是协议栈和NAT(网络地址转换,Network AddressTranslation),实现各种协议的处理和路由功能。WAN、LAN、WLAN是该嵌入式系统周边的物理接口,分别对应着路由器的WAN接口、LAN接口、WLAN接口。每一个接口都有专门的接口设备驱动进行处理,实现了收包(Rx)和发包(Tx)的功能。图2为了描述方便,仅示出了路由器的部分组成,其它组件未示出。其中,图2中的WAN接口、WLAN接口、LAN接口仅示出了一个,这里仅为示意,还可以依据实际需要设置多个WAN接口、多个WLAN接口、多个LAN接口。
路由器收发包的一般过程是:物理接口设备收到承载数据包的物理层信息,从中提取出数据包信息,产生中断并交给收包模块处理;收包模块申请内存用做数据包处理的缓存,成功后交给CPU进行进一步的处理和转发;获得CPU时间片后,CPU根据协议栈和NAT的逻辑对收到的包进行处理,包括协议的解析和转换,以及路由等功能的实现,然后将该数据包转发到正确的出口接口上去;出口接口申请内存存放待转发数据包,等待出口接口设备空闲后将该数据包交由物理设备发送。
LAN接口介质不局限于Ethernet、Wi-Fi、PoE、USB等等。WAN接口介质不局限于Ethernet、Wi-Fi、DSL、3G、3.75G、Fiber、PoE、4G等。只要是通信过程中能够使用的接口,就能够采用本发明的测试路由器数据通路鲁棒性的方法,本发明对接口的类型以及接口连接的介质类型不加以限制。
图3是依据本发明一实施例的测试路由器数据通路鲁棒性的方法流程示意图,方法300包括:
步骤301,配置路由器的第一接口、第二接口、与所述第一接口连接的第一配测装置、与所述第二接口连接的第二配测装置,使得所述第一配测装置能够访问所述第二配测装置;
步骤302,设置所述第一配测装置工作在第一带宽,所述第二配测装置工作在第二带宽,其中第一带宽远大于第二带宽;
步骤303,由所述第一配测装置向所述第一接口持续发送时长为T的测试流量,由第二配测装置通过所述第二接口接收所述测试流量;这里的时间长度T可以根据需要进行设置,本发明对此不进行限制。
步骤304,检测所述路由器的工作状态是否正常并得出检测结果。
其中,路由器可以有多种接口,例如,LAN接口、WAN接口、WLAN接口,路由器还可以有多个LAN接口。本发明对此不做限制。
在本发明一实施例中,如果要测试LAN接口到WAN接口的数据通路鲁棒性,则第一接口即为LAN接口,第二接口即为WAN接口。LAN接口和WAN接口的最高带宽为1000Mbps,最低带宽为10Mbps。在此实施例中,第一配测装置和第二配测装置可以工作在例如全双工模式。在步骤302中,设置第一带宽(路由器的收包接口速率)为1000Mbps,第二带宽(路由器的发包接口速率)为10Mbps。从第一接口(路由器的收包接口)打入测试流量,第二接口(路由器的发包接口)的发包速率将会达到极限;维持该流量,路由器的发包接口发包队列将会首先被填满,产生大量的内存申请操作用于缓存数据包而导致存储资源不足,从而达到所测试数据通路的边界条件。第一带宽、第二带宽的数值由待测路由器决定,不同设备取值不同。可以选取待测路由器所支持的最大带宽、最小带宽,或者在最大带宽、最小带宽之间选取相差较大的两值。异常的边界情况,例如当路由器嵌入式系统的内存管理为动态申请内存时,收发包操作均会请求申请内存,成功获得后进行协议栈的相关操作后完成转发并将申请到的内存完全归还给系统,但是在存储资源不足的情况下,进行新资源的申请将会进入不同的软件逻辑分支,是一种典型的边界情况。又例如收发包采用一定长度队列的处理方式,而该队列具有独立的内存空间,那么队列放满后再进行收发包操作将是一种极端的边界情况。在本发明中,测试LAN接口、WAN接口之间的数据通路鲁棒性,则可以将第一配测装置和第二配测装置设置为全双工模式,当然还可以为半双工模式或其他工作模式,本发明对此不做限制。如果是测试WLAN接口与其它接口之间数据通路的鲁棒性,则可以将第一配测装置和第二配测装置设置为半双工模式。
步骤304中检测所述路由器的工作状态是否正常并得出检测结果主要包括以下内容:监控所述路由器的内存使用情况;检测所述路由器的工作状态是否正常并得出检测结果包括测试所述路由器的第一接口并观察其响应,观察该接口支持的简单协议交互过程是否仍能够正常完成;检测所述路由器的工作状态是否正常并得出检测结果包括访问所述路由器的管理页面并观察其响应,观察管理页面是否可正常打开和进行管理操作;检测所述路由器的工作状态是否正常并得出检测结果包括检测测试流量发送完成后所述路由器的使用情况。
在本发明中,第一接口为LAN接口、WLAN接口、WAN接口中的任一种,第二接口为与第一接口不同的其它接口之一。例如:第一接口为WAN接口,第二接口WLAN接口或LAN接口;第一接口为WLAN接口,第二接口为LAN接口或WAN接口;第一接口为LAN接口,第二接口为WAN接口或WLAN接口。
在本发明中,只要保证路由器的收包接口(在本发明中定义为第一接口)的带宽速率远远高于路由器的发包接口的带宽速率,使得发送队列(堆栈)和接收队列(堆栈)均处于满的状态。从而可以在较短的时间内较好的验证发送和接收队列(堆栈)软件处理的鲁棒性,提供一种异常情况下的测试方法。
带宽速率的设置可以通过强制协商的方式实现。实例一:通过强制协商的方式将有线端的以太网芯片的数据速率协商为较低速率,小于无线通路的数据速率,从无线接口对应的第一配测装置将测试流量发送到路由器的收包接口,这样有线端的发送队列(堆栈)和无线端的接收队列(堆栈)将处于满的状态。实例二:通过强制设置低数据速率的无线网卡,使待测设备的无线端数据速率小于有线端的数据速率,从有线接口对应的第一配测装置将测试流量发送到路由器的收包接口,这样无线端的发送队列(堆栈)和有线端的接收队列(堆栈)将处于满的状态。这样可以在较短的时间内较好的验证发送和接收队列(堆栈)软件处理的鲁棒性,为路由器产品压力测试提出了一种较好的思路和解决方法。本方案可用于例如但不限于路由器的测试。
图4示出了依据本发明一实施例的测试路由器数据通路鲁棒性的系统400,路由器具有第一接口、第二接口,系统400包括配置模块401、带宽设置模块402、与所述第一接口连接的第一配测装置403、与所述第二接口连接的第二配测装置404、检测单元405。
配置模块401,用于配置路由器的第一接口、第二接口、第一配测装置403、第二配测装置404,使得第一配测装置403能够访问第二配测装置404;
带宽设置模块402,用于设置第一配测装置403工作在第一带宽,所述第二配测装置404工作在第二带宽,其中第一带宽远大于第二带宽;第一带宽、第二带宽的数值由待测路由器决定,不同设备取值不同。可以选取待测路由器所支持的最大带宽、最小带宽,或者在最大带宽、最小带宽之间选取相差较大的两值。
第一配测装置403,用于向第一接口持续发送时长为T的测试流量;
第二配测装置404,用于通过第二接口接收所述测试流量;
检测单元405,用于检测路由器的工作状态是否正常并得出检测结果。
系统400中的配置模块401、带宽设置模块402主要是为了实现第一接口和第二接口的数据连通性进行相关的基本设置。第一配测装置403、第二配测装置404,可以使用现有技术中的相应配测设备比如以太网卡等等来实现。可以使用各种网络收发包设备、网络流量产生和分析仪器等作为配测装置,比如以太网卡、无线网卡、SmartBits系列测试仪器等,第一配测装置为流量产生设备,第二配测设备为流量接收设备,以上设备都可作为第一配测装置、第二配测装置,不管使用哪种设备作为配测装置,只要能够满足与待测路由器的匹配即可。
检测单元405,可以监控路由器嵌入式系统内存使用情况;通过ping或arp测试路由器的第一接口并观察其响应;访问所述路由器的管理页面并观察其响应;检测测试流量加载完成后路由器能否正常使用等等。对于转发速率,正常情况下应该达到预期水平,即受限于低速接口所应该达到的转发水平,如果远小于预期水平说明路由器对于该边界异常情况的处理虽然没有严重逻辑缺陷,但不是最优的。对于内存使用,正常情况下应该有余量,且能够动态地回收,如果出现内存耗尽或者访问出错则说明待测路由器存在鲁棒性问题。在测试流量加载完成之后,正常情况下路由器的各个功能模块能够恢复正常工作,如果不能恢复正常工作、死机或者设备异常(无线不工作、有线不收发包、NAT(Network Address Translation)转发不成功)等则说明待测路由器存在鲁棒性问题。详见下表所示:
在本发明一实施例中,如果要测试LAN接口到WAN接口的数据通路鲁棒性,则第一接口即为LAN接口,第二接口即为WAN接口。LAN接口和WAN接口的最高带宽为1000Mbps,最低带宽为10Mbps。在此实施例中,第一配测装置和第二配测装置可以工作在例如全双工模式。在步骤302中,设置第一带宽(路由器的收包接口速率)为1000Mbps,第二带宽(路由器的发包接口速率)为10Mbps。从第一接口(路由器的收包接口)打入测试流量,第二接口(路由器的发包接口)的发包速率将会达到极限;维持该流量,路由器的发包接口发包队列将会首先被填满,产生大量的内存申请操作用于缓存数据包而导致存储资源不足,从而达到所测试数据通路的边界条件。
关于上文测试路由器数据通路鲁棒性的方法300的全部内容适用于测试路由器数据通路鲁棒性的系统400,详细内容参见图300及其相关描述,此处不再赘述。