路由器性能测试中蛇形测试的局限性探讨
2013-09-29王素彬赵隽琪
郭 亮 ,王素彬 ,赵隽琪 ,陈 骅
(1.中国电信股份有限公司广东研究院 广州 510630;2.思博伦通信科技北京有限公司 北京 100191)
1 引言
在路由器性能测试中,为了使被测设备处于一定的流量压力下,测试人员需要构造测试环境保证所有端口都有收发双向的数据转发流量。在测试一些端口密度相对较大的产品时,通常有两种方法实现此目的:全端口测试和蛇形测试。
如图1所示,全端口测试是一种被测设备所有的端口都与测试仪表直接相连,由测试仪表发送所有端口之间的全网状测试流量,以评估被测设备最大性能的测试方法。
图1 全端口测试拓扑
如图2所示,蛇形测试是指被测设备仅用两个端口与测试仪直接相连,其余端口使用跳线在设备上进行环接,并配合一定的流量转发策略,使测试流量从与仪表直连的一个端口输入设备,从一个端口转发出去后再由另一个端口输入设备,如此反复多次后由另一个与仪表直连的端口输出,从而实现所有参与的端口均有流量输入和输出。
图2 蛇形测试拓扑
为实现蛇形测试,需要根据被测设备的情况设置流量转发策略。如果是二层交换机,可以将被测设备端口设置为无标签(untag)模式,每两个一组划分到一个单独VLAN,VLAN之间通过外部跳线桥接的方式实现蛇形转发。
如果是路由器,可以通过以下多种方式实现。
·通过配置策略路由,设定由连接测试仪的端口1进入的流量通过端口2转发,端口2外部跳线连接端口3,由端口3进入的流量通过端口4转发……直至最后连接测试仪的另一个端口;反向流亦然。
·将被测设备端口每两个一组划分到一个单独的虚拟路由器,虚拟路由器之间通过外部跳线串联并启用静态或动态路由实现蛇形转发。
·将被测设备端口每两个一组发送到一个单独的2层或3层MPLS VPN,不同VPN之间通过外部跳线串接,从而实现蛇形转发。
虽然从测试流量的负载上看,全端口测试和蛇形测试是一样的,但深入分析发现,蛇形测试有很多缺陷,下面从几个方面进行分析。
2 时延/抖动测试问题
时延和抖动是数据通信设备性能测试中非常重要的测试内容之一。
现在交换机在有些应用场合对时延的要求非常高,典型的就是云计算的数据中心交换机。数据中心交换机是典型的高密度交换机,其重要应用领域是金融机构,如证券交易所、期货交易所等。交换机的时延,可能直接影响竞价成功与否、成交价格高低。特别是在国外金融市场有很多高频交易(high frequency trading,HFT),通过金融建模和高性能计算机系统,进行高频率的交易,通过大量交易积累来获取高额利润。这种交易,对于数据中心交换机的时延要求非常高。国外有过统计,时延1μs等于损失1亿美元。所以很多数据中心交换机,如Arista、Cisco Nexus交换机,时延都可以达到400 ns以下。智能变电站内的工业交换机,也对时延有严格的要求。
抖动则对另外一些实时应用 (如视频、语音、1588v2等)的质量有重大影响。这类业务中很大一部分是Internet应用,过大的抖动,给用户体验造成严重影响。一定范围内的抖动,可以通过终端的设置,例如合理的缓冲区设置得到平滑。但是超过一定范围的抖动,则会引起缓冲区的溢出(overrun)或者欠载(underrun),引起语音、视频质量的劣化。
显而易见,用全端口拓扑,可以测试交换机每一个报文经过出入物理端口和交换矩阵的每一条路径上的时延、抖动,而使用蛇形拓扑测试的时延和抖动,则是从物理端口1进入物理端口48处的整条蛇形路径的端到端时延和抖动。在现网中,以太网分组一般情况下都是从交换机的一个端口进,经过交换矩阵交换,从另外一个端口出,没有经过蛇形路径。所以使用蛇形拓扑测试对于时延和抖动测试无现实意义。
3 分组丢失情况下的负载问题
在上述例子中,简单地看全端口拓扑和蛇形拓扑,似乎都对交换机施加了同样的全负载压力,但仔细分析,蛇形拓扑在有些情况下不能达到额定的负载。在全端口测试下,不管交换机是否丢失分组,测试仪表总是向被测交换机施加额定的负载。而蛇形测试下,如果有分组丢失,那么就达不到额定的负载。
比如在蛇形拓扑下,假设参与蛇形测试的端口总数为24,测试仪表向端口1发送 1 000帧/s,那么被测设备单方向的额定负载是24 000帧/s。如果在端口1→端口2的转发中,丢了5个分组,那么端口2环回给端口3的流量就只有995帧/s了,即使在整个蛇形路径的后面部分不再丢失分组,那么被测设备在这个方向上得到的额定负载也就是 1 000+995×23=23 885帧/s,和额定的负载差了115帧/s。如果分组丢失更多或者路径上更多的部分分组丢失,那么施加到交换机上的负载和额定负载相差更多。
4 测试流量分布问题
在构建测试流量的时候,根据不同的测试场景和需求通常有3种测试流量分布的方式,如图3所示。
图3 流量分布模式
·fully meshed模式,指流量从每一个端口发往所有其他的端口。
·backbone模式,指流量从部分端口发往另一部分端口,既可以是单向的,也可以是双向的。
·pair模式,指流量在一对或多对端口之间转发,既可以是单向的,也可以是双向的。
在全端口测试时,测试人员可以根据需要选择任意一种或者多种方式的组合来构建流量,以达到不同的测试效果;而在蛇形测试时,所有参与测试的端口只可能构建pair模式的流量。
而不同模式下对被测设备的压力也是不同的。图4、图5形象地说明了这一情况。
图4 pair模式下被测设备的压力情况
图5 fully meshed模式下被测设备的压力情况
在pair模式下,测试流量可能只对端口下的转发处理芯片构成压力,而在fully meshed模式下,则是对交换引擎/交换矩阵/背板构成压力。
5 流量模型问题
在全端口测试中,由于所有端口同时发起流量,并且都是相互独立的,在出端口短期内有很大机率会形成小突发(burst)。在现网中,这称为microburst,在现网非常常见,需要交换机具备一定的突发处理能力。很多厂商的交换机,如Cisco、Arista、Juniper等都在公开测试中宣称他们的设备具有处理microburst的能力。
图6为microburst形成机制示意。
图6 microburst形成机制
在蛇形测试中,每个端口的流量模型是由第一个端口决定的。如果每对端口之间都能不丢失分组地转发,那么流量基本上是从端口1复制到端口3,到端口5……是顺序转发,不会出现如图6所示的microburst,无法解压缓冲区。在这种情况下,蛇形拓扑很有可能获得比全端口测试法更好的测试结果,但这种更好的测试结果对于评估设备的真实工作能力毫无益处。
6 表项填充和查表
交换机上有很多地址表,比如二层交换机有MAC地址表,三层交换机有MAC地址表、FIB表等。以MAC地址表为例,学习和查找是基于散列算法,以MAC和VLAN为索引进行散列,得到散列索引值,再进行地址表学习和查找。这就存在散列冲突,处理散列冲突对于地址学习和交换机的性能很重要。
看一下全端口拓扑和蛇拓扑的不同情况。在全端口下,一般测试用的每个端口的测试流量的MAC地址是不同的,端口VLAN则根据测试配置决定。在蛇形拓扑下每个端口的测试流量的MAC地址是完全相同,都是端口1和端口48发送的测试帧的地址,而端口1、端口3、端口5等的VLAN是各不相同。两种情况下,通过
全网状拓扑和蛇形拓扑在采用多地址下测试结果、在采用单一地址测试端口密度较低的低端设备时,差别微乎其微。但测试流量所用地址越多,被测设备端口密度越高,通过散列算法填表和查表的差异就越明显。
一般情况下,全端口拓扑的地址分布比较符合现网的情况,而蛇形拓扑这种不同端口下学习到相同MAC地址的情况在现网中很少见,而且会认为是生成树出现循环的征兆。相比蛇形拓扑,全端口拓扑的测试结果更有实际意义。
对于3层交换设备来说,FIB表依据最长匹配原则,采用搜索树算法、全端口拓扑,每个测试端口和被测交换机/路由器先建立路由邻接关系,然后通告大量路由给被测交换机/路由器,最后在这些通告的路由子网之间建立测试流量测试性能,这完全是现网场景下的性能评估,对搜索树的覆盖率很高。而采用蛇形拓扑,只能进行纯数据层面的测试,无法再建立协议平面,如果采用L2 VPN实现蛇形,那么完全没有路由,采用L3 VPN,最多只能在每个端口VRF路由表中设置若干条静态路由,以保证连通性,所以通常是端口1和端口48单一地址之间的简单流量,和现网相去甚远。由此可知,全端口拓扑和蛇形拓扑差别还是比较大的。
7 其他方面的原因
由于上述几方面原因,流量模型的不同,对设备施加的压力不同,设备的能耗、散热都不一样。一般来说,当设备压力大、CPU负载高时,能耗大、散热量高,引起问题的可能性较大。从这个角度说,全端口比蛇形拓扑更有可能测试出问题。
另外,全端口拓扑更容易进行问题定位,现在的测试仪表一般都有基于每一条流的大量实时统计,很容易分析出是哪个端口到哪个端口的流量发生问题。蛇形拓扑测试出问题,定位很难,不方便很快确定问题出现在哪一段,测试者看到的只是端到端的问题,一般要做二次测试来定位。
8 结束语
对于连通性测试或者某些功能测试,蛇形拓扑是一种性价比非常高,而且也非常有效的测试方案,用两个端口就可以达到测试目的,仪表利用率很高。但是对于路由器性能测试,不管是从评测机构和企业设备选型或评测鉴定角度,还是从设备厂商日常研发测试角度,都建议采用全端口拓扑进行测试。
1 RFC 2544.Benchmarking Methodology for Network Interconnect Devices,1999