摘要
随着网络向日常商业活动的延伸,企业通过网络提供增值服务的增加,网络自身必须具有安全性,可以预知风险,甚至需要保证服务质量。网络设备可以通过管理时延、抖动、带宽和丢包来达到服务质量保证目的。本文介绍了QoS(Quality of Service,服务质量)技术,指出传统QoS测试存在的不足,提出Spirent TestCenter QoS测试解决方案。
1  引言
骨干网络中传输着很多应用程序流量,其中包含对延时敏感的话音数据流量和对带宽消耗很大的视频数据流量。随着网络向日常商业活动的延伸,企业通过网络提供增值服务的增加,网络自身必须具有安全性,可以预知风险,甚至需要保证服务质量。网络设备可以通过管理时延,抖动,带宽和丢包来达到服务质量(Quality of Service,QoS)保证目的。
QoS技术主要包含两大部分,第一部分是流量分类,网络设备可以根据IPP,DSCP值或者ACL等方式识别数据包,数据包被识别之后根据用户定义规则打上特定标签,标签表示优先级别,有的数据包根据规则直接丢弃。第二部分是队列和调度,设备可以将不同优先级别数据包排入不同队列,调度就是传输的时候根据事先定义好的调度算法,确定不同队列传输的先后顺序和数量。
随着服务质量需求的进一步提高,一台设备的QoS不能满足需要,用户需要自起点到终点得到提供统一的带宽保证,类似于一条专线,这就催生了设备之间的QoS协议,RSVP-TE,这个协议可以为每个客户在沿途设备预留资源,从而达到统一占用资源的目的。
2  QoS测试
2.1  QoS测量的指标
常用的QoS测量指标有丢包、时延、抖动、乱序和多包等。丢包比较容易理解,就是传输过程中被丢弃的数据包数量,有两种表达方式,一种是丢包百分比,另一种是丢包数量;时延是测试仪表发出数据包到接收的时间;RFC4689定义了抖动,抖动是两个连续的数据包之间,时延之差的绝对值,TestCenter可以精确计算出最大、最小和平均抖动值;乱序是测试仪器接收到数据包的顺序和发出的不同,DUT虽然没有丢包,但是改变了数据包的先后顺序;多包是DUT多复制了部分数据包,导致测试仪器接收的数据包数量大于发出的数量。
实际网络中,各种应用程序流量特点不同,重点关心的QoS指标也不完全相同,如视频流量优先级比较高,MPEG流量一般都是突发的,所以抖动和丢包对视频的影响更大;语音流量需要恒定带宽,抖动、乱序和和丢包的影响较大;邮件和Web数据流量优先级相对较低;P2P流量优先级最低,只能使用剩余带宽资源,DUT的转发模式是尽力而为。应用程序流量特点参见图1。
图1  应用程序流量特点
2.2  传统QoS测试的不足
传统发流调度方式是基于流的调度,传统测试仪表发流的时候不考虑流量优先级,只是按照数据包大小和发流速率调度。在相对宏观的时间角度看,例如秒级别,每一条Stream都能按照预先设定的带宽发送流量,但是如果从很小的时间间隔来观察带宽,例如微秒级别,几微秒就读取各条流带宽一次,则可以发现每一个Stream都有不同程度的突发,这些突发流量可能导致DUT性能下降,也可能导致丢包。
QoS策略是全网策略,需要全网统一规划,需要网络边缘到网络边缘的统一布署,策略不能相互冲突。数据包到达边缘设备的时候,就第一次被重新排序,继续传输到下一跳网络设备,第二跳设备再执行自己的QoS策略,以此类推。现网中,核心设备的入接口连接到边缘设备,收到的数据包应该是被重新排序的,而不是没有经过QoS处理的流量。传统测试仪表发送流量的时候没有考虑这个因素,测试仪表发送流量是按照尽力而为(Best Effort)的方式,没有经过QoS处理,不能模拟现实网络中的数据流量。
传统测试方法,每一个QoS测试指标逐个测试,测试需要很长时间,如果遇到指标叠加测试,指标组合方式就更多了。测试结束之后,每个组合指标代表什么意义,代表什么服务质量,代表什么QoS等级没有定义,用户没有整体感觉,不知道哪种指标组合算是合格,哪种不合格。
2.3  Spirent TestCenter QoS测试特点
针对传统QoS测试不足之处,Spirent TestCenter新增了优先调度和服务等级功能,这两个功能很好地弥补了传统测试仪表的不足。
优先调度(Priority Based)是基于Stream Block的优先调度,这种调度方式确保优先级高的Stream Block可以发出匀速流量。TestCenter选用基于优先级的调度方式之后,可以消除突发,保证发出恒定带宽流量。设置方法见图2。
图2  优先调度设置方法
优先级调度模式改变了传统的尽力而为的发流模式,使测试仪表具有数据包重新排序能力,可以模拟真实的网络环境,模拟边缘设备向核心设备发送流量。
服务等级(Service Class)也是TestCenter新特性,TestCenter可以事先确定服务等级,服务等级是由用户自定义的一组QoS指标以及指标范围(见图3),没有丢包和乱序,最大时延<7ms为Network Control级别,10个乱序1000个丢包,最大时延<7ms是Real Time级别,剩余是Best Effort级别。
图3  服务等级
在Stream Block上关联这些服务等级,TestCenter就可以自动测量流量是否满足服务等级要求,报告系统中,满足要求显示Pass,不满足要求显示Fail(见图4)。服务等级可以将多种QoS指标合并测试,提高测试效率。
图4  TestCenter可以自动测量流量是否满足服务等级要求
3.4  Spirent TestCenter QoS测试举例
QoS测试分为3大类,分别是2层Cos验证,3层QoS转发验证和3层QoS控制层验证,每大类又分很多常见测试场景,Spirent TestCenter支持所有QoS测试场景。这里用以太网源端口CIR测试和WFQ测试为例。
(1)以太网源端口CIR测试
CIR是Committed Information Rate的简写,也叫Mean Rate,是一个时间单位之内,承诺传输流量的平均值;Bc(Committed Burst)也叫Burst Size,是一个时间单位之内,允许用户突发的流量;Tc也叫Time Interval是时间单位,时间单位一般是毫秒级别的。3个指标的关系是Mean Rate = Burst Size / Time Interval。
测试目标是检验DUT基于2层源端口的CIR是否可以正常工作。
测试拓扑结构如图5所示,左边3个端口向右边1个端口发送流量,3个端口发送流量之和大于1个端口的接收能力,造成拥塞状态。
图5  测试拓扑结构示意图
在DUT上将所有端口划分在一个VLAN之内,配置DUT的2层QoS策略,第一个端口的CIR为600Mbit/s,第二个端口的CIR为300Mbit/s,第三个端口的优先级设置是尽力而为。
在Spirent TestCenter上每个端口添加200,000个Host,4个端口共计800,000个Host。设置方法见图6和图7。
图6  设置方式1
图7  设置方式2
配置2层流量,选择流量的源和目标端口,图8的左边选择封装类型为EthernetII,这样测试仪器发出的流量就是2层流量,不包含IP包头。
图8  配置2层流量示意图
3条流分别设定发出固定带宽流量是600Mbit/s,300Mbit/s和1000Mbit/s(见图9)。
图9  3条流分别设定发出固定带宽流量是600Mbit/s,300Mbit/s和1000Mbit/s
查看测试结果,前两条流丢包速率为0,第三条流丢包速率有计数,表示DUT的CIR工作正常,前面两条流没有丢包,第三条流有丢包(见图10)。
图10  测试结果示意图
(2)WFQ测试
QoS的主要技术有流量分类、队列、调度和拥塞避免机制。流量分类是流量的识别过程,这个过程是为了区分不同优先级流量,分别对待;队列是将不同优先级流量排入不同队列的过程;调度是QoS非常重要的一个环节,调度算法决定了哪个队列应该发送多少个数据包,不同调度方法,结果差别很大;拥塞避免机制是和队列一起工作的,当数据包排队到一个阀值之后,设备开启拥塞避免功能,队列中随机丢弃部分数据包,避免拥塞。
WFQ是Weighted Fair Queuing的简写,基于权重的公平队列,WFQ使用源IP地址、端口号、优先级、协议等信息进行Hash计算,不同Hash值进入不同队列,每一个队列都是先进先出(FIFO)方式。WFQ是设备根据权重给予高优先级流量更多发流机会,流的权重是通过IP优先级确定的。调度算法是系统为每一个数据包计算发送完成时间(FT),最先完成的数据包先发送(见图11)。这种调度算法的特点是先进不一定先出,数据包大小和优先级会影响计算完成时间的结果。不足之处是不能提供固定带宽保证,复杂的分类和调度限制了设备的性能。WFQ FT计算公式是:
图11  WFQ调度算法示意图
●如果端口正在发流则公式为:FT(Pk+1) = FT(Pk) + Size(Pk+1)/(IPPrec+1)。
●如果不发流则为:FT(P0) = Now + Size(P0)/(IPPrec+1)。
CBWFQ是基于级别的WFQ,由WFQ技术发展而来。CBWFQ可以将数据流根据各种条件分级别,同级别的数据包排入一个队列。当数据包被分级完毕之后,可以为该级别数据流量制定传输特性,如带宽、传输的权重、传输限制等。
WFQ测试属于3层QoS控制层验证,测试目的是检测DUT的WFQ算法是否可以正常工作。
测试使用两个端口,一个发送端口,一个接收端口,发送端利用DiffServ Code设置3条流,优先级分别是EF,AF-43和AF-32。接收端口观察流的时延和抖动,查看是否高优先级的流时延相对较小,抖动较小;低优先级的流时延相对较大,抖动较大。测试拓扑结构如图12所示。
图12  测试拓扑结构示意图
在DUT上正确使用WFQ,流量出端口配置限速700Mbit/s,制造拥塞状态。
Spirent TestCenter上构造3条流,流量分别是100Mbit/s,300Mbit/s和600Mbit/s;帧长分别是128,256和512;优先级分别是EF,AF-43和AF-32。具体参见图13,图14,图15。
图13  Spirent TestCenter上构造三条流
图14  Spirent TestCenter上构造三条流
图15  Spirent TestCenter上构造三条流
查看测试结果,可以看到,3条流抖动的平均值不同,可以看出权重大的流优先调度,抖动相对较小(见图16)。