解决方案需求
数字化转型正在成为社会发展的新常态,智能AI技术、大数据和5G网络新技术将推动社会各行各业迈入数字新基建的新时代,构建一套完美的解决方案方能扬帆领航。
了解更多了解更多

IP网络路由交换高级测试技术探讨

作者:容域科技 发布时间:2021-07-12

1  与流量相关的L2-3层高级测试技术探讨

对于一个L2-3层网络设备,最基本、最重要的测试是流量转发性能测试。作为一个网络转发设备,首先要保证可以高速、低时延、稳定地转发流量。
 
相关的性能测试通常是通过流量生成器(一般是硬件测试仪表,可以发出线速的流量)来生成相应的流量让被测试设备承受不同的负载,检验其表现。通常会测试被测设备的容量(比如吞吐量),以及处理业务的特征如何(比如时延)。以交换机为例,不同的交换机由于采用了不同的硬件架构,性能表现会有所不同;同一个交换机在不同负载时会有不同的表现(例如重载时延和轻载时延的差异);交换机配置的不同也会引起不同的表现。 
 
为了尽量独立、公正(不受厂家的技术指标影响),IETF测试标准化工作组(BMWG)针对交换机的测试公布了下面这些主要的RFC(如RFC1242、RFC2544、RFC2285、RFC2889、RFC2432、RFC3918、RFC5180等)。这些RFC定义了测试标准的术语和方法,其中最重要的两个测试规范是RFC2544和RFC2889。 
我们不去讨论RFC2544和RFC2889的内容,只是来探讨一下这两个规范中的测试方法是否足够,在测试过程中是否考虑了如下内容:
 (1)包长的选择是否过于简单? 
 (2)可以随机变换发包间隔(发包速率)吗?
 (3)发包序列是否灵活多变?
 (4)数据包的地址数可以增加吗?
 (5)流量类型是否足够多?流量是否可以混合?
 (6)是否可以详细地统计成千上万条数据流,并从中快速找出你所需要的数据流?
 (7)是否可以跟踪数据流里的多个字段?
 (8)除了时延和抖动,是否可以清晰地知道数据包的时延分布?
 下面我们来逐条探讨上述提到的内容:
 (1)在流量包长的选择上,我们的测试应该支持更加丰富的包长类型。包长的选择应该支持递增、递减、定制、IMIX、高斯分布等,丰富的包长类型更加贴近网络上的真实情况。
 (2)在发包速率的选择上,数据包与数据包间隔(IPG)的变化,Burst与Burst之间间隔(IBG)的变化,Stream和Stream之间间隔(ISG)的变化都应该是可以配置的。流量数据包间隔的变化导致速率的不均匀性,直接可以考验被测试设备的速率计量以及限速准确性;而且这种变化的速率能模拟突发效果,反映真实数据流特性。
 (3)选择不同的发包序列。例如构造了2条流量,第1条是ICMP流,IP地址变化了100次,第2条是TCP流,端口号变化了100次,那么我就有了发包序列的选择。第一种发包序列是ICMP流和TCP流按照设定的速率同时发送。第二种发包序列是顺序发送:先把第一条流里的100个ICMP包都发送出去后,再发送第二条流里的100个TCP包,周而复始。通过调整发包顺序,使被测试设备经受更多情况的测试。
 (4)尽可能多地选择目的地址(IP、MAC等),在每一个方向上构造大量的DMAC、DIP,考验被测试设备在存在大量MAC或者ARP表项时的转发性能。
 (5)在测试过程中,我们应该选择尽可能多的流量类型(MAC、VLAN、IPv4、IPv6、TCP/UDP、MPLS等),甚至一些错误报文(如IP/TCP/UDP Checksum错误、IP TTL为0、FCS错误)、真实的应用层流量。丰富的流量类型可以更全面地检验被测试设备在应对不同业务流时的表现。
 (6)测试应该能够快速找出所需的测试数据流。目前测试仪表都可以发送数以百万的测试数据流,并且可以对这些数据流进行跟踪统计。但是由于测试流量条目众多,如何从这百万的测试流量中找出需要的测试流量,对于问题定位至关重要。例如:需要能快速地从这100万条流量中找出哪100条转发平均时延最大,或者哪100条流量丢包最严重。只有能够快速地找到所需要的流量,才能提高测试效率,减少问题定位的时间。
 (7)测试方法以及测试工具应该能够跟踪数据流里的多个字段。例如我们首先可以根据数据流的源IP地址进行跟踪,然后又想看到这条流的TOS是多少。能够同时跟踪数据流里多个字段的测试工具可以极大地提高测试效率。
 (8)不仅仅要测试时延和抖动,而且要能够清晰地得到时延分布。知道精确的时延分布,可以帮助研发人员更好地优化被测设备的转发性能。 
 

2 与路由相关的L2-3层高级测试技术探讨

 对于路由设备,其最基本最重要的测试包括:路由容量测试(路由条目、路由邻居数等)、大路由表情况下转发性能测试、路由收敛测试、路由震荡测试。那么,我们在做这些测试时,是否考虑了下面的情况:
 (1)仿真的路由条目掩码是否过于单一? 
 (2)仿真的路由拓扑是否过于简单?
 (3)是否考虑了应用层数据流在转发和路由收敛时的情况?
 (4)是否考虑了多种协议共同工作时的情况?
 (5)路由收敛时间测试的精度是否可以更高?
 (6)是否考虑了路由震荡的多种情况? 
下面我们来逐条分析上述提到的问题:
 (1)仿真的路由条目是否过于单一?现网上的路由设备中的路由条目掩码非常复杂,因此我们在对路由设备进行测试时,模拟的路由条目也要尽可能地模拟现网的情况,通告的路由条目的掩码要具有多样性,甚至把现网的路由条目灌入路由设备。
 (2)仿真的路由拓扑是否过于简单?以OSPF为例:我们是否只仿真了3类LSA或5类LSA?我们需要仿真出更复杂的网络拓扑,具有更多类型LSA的拓扑。
 (3)是否考虑了应用层数据流在转发和路由收敛时的情况?
· 
首先来看看转发的情况:传统的路由转发测试只是使用测试仪给被测试设备通告了路由后,打入无状态的L2/3流量,来检验路由设备在大路由表下的转发性能。由于这种测试方法并不能检验路由设备是否能在现网环境下高效地运行,因此我们不仅仅应该完成无状态数据流的转发测试,更要测试L4/7应用层流量跑在通告的路由拓扑上的情况。
· 
· 
我们再来看看应用层流量和无状态流量在路由震荡时的收敛情况,可以很清楚地看出,无状态流量可以很快地收敛,但是真实业务的流量收敛起来就慢了许多。
· 
 (4)是否考虑了多种协议共同工作时的情况?在测试中,路由设备应该同时启动多种路由协议,应该考虑组播路由协议和单播路由协议的协同工作,BFD和路由协议的协同工作,IPv4/v6路由协议的协同工作,甚至协议over协议的情况。
 (5)路由收敛时间测试的精度是否可以更高?传统的路由收敛测试方法是:(Frames Delta)/(TX Frame Rate)=Tconvergence,精度不高,并且随traffic的包长不同而造成测试精度不同。更先进的测试方法是:Tport3,first timestamp–Tport2,last timestamp=Tconvergence,精度高(20ns),测试精度只和测试仪背板时钟晶振有关,精度稳定。
  (6)是否考虑了路由震荡的多种情况?
· 
通告/撤销路由条目造成的震荡(邻居关系仍在,路由条目可能部分震荡,或者全部震荡;邻居关系震荡(邻居关系建立/断开),路由条目全部震荡)。
· 
· 
邻居关系震荡又有很多种情况,例如:有Graceful Restart和没有Graceful Restart,相关路由协议Start/Stop,主备控制板倒换,相关链路UP/Down,路由设备出现重启现象等。
· 
除了上述情况,我们在做L2-3层测试时,还有哪些地方需要注意呢?
(1)QoS(部署QoS时和没有部署QoS时,流量转发结果的比较)。
(2)访控列表(部署ACL时和没有部署ACL时,流量转发结果的比较)。
(3)系统测试(非单台被测试设备-DUT、多台设备组成的被测试系统-SUT、多协议、多种应用)。
(4)稳定性测试(多端口、满负载、长时间、大流量、正常/异常情况)。
(5)DUT状态(测试过程中,DUT的CPU利用率,内存占用状态等重要指标)等。
 

3  结束语

在越来越复杂的网络环境下,测试内容日趋复杂,高性能、功能强大且稳定的测试工具能够给测试工作者的工作带来极大的便利。在与流量相关的L2-3层高级测试项目中,测试仪表可以方便地构造出各种增强型测试方法学所需的流量模型,可以方便地对接收流量进行各种所需的统计,极大地提高了测试效率。对与路由相关的L2-3层高级测试,测试仪表支持的路由协议齐全,在同一测试端口上能同时进行多个协议的仿真,并且协议仿真、流量生成均有配置向导,极大地节约了学习成本,提高了测试效率。
 
 

全部方案

数字新基建
等保云灾备