摘要: 网络性能测试技术在近些年来得到快速的发展,其中很重要的是对网络互连设备的测试,它为网络互连设备的制造商和用户提供了测量网络互连设备性能的有效手段。本文首先介绍了网络互连设备性能测试领域的一些技术背景,包括在测试中使用的性能指标和测试中的环境设置,这些是对网络互连设备性能测试系统的需求。接着本文介绍了一个网络互连设备性能测试系统的设计方案。我们使用这个测试系统对Cisco12000路由器进行了测试。
关键词: 性能测试,网络互连设备
1. 引言
随着互联网的广泛使用,互联网对于社会生活已经十分重要。用户和网络服务提供商都对网络互连设备的性能提出了非常高的要求。网络上的应用内容在不断增加,包括IP电话、电子商务等等,互联网的使用者和网络上的流量每年都在以指数的速度增长,这要求网络提供更高的带宽和更有效的使用方式。同时,互联网本身正在变得越来越复杂,在网络中使用了很多不同的技术(如ATM、帧中继、POS等),网络互连设备的容量、复杂性都在增加。网络互连设备的购买者需要测量手段,对网络互连设备的正确性和性能进行评测。这种需求激发了网络互连设备测试技术和测试设备的迅速发展。
互联网技术的基础是网络协议,对网络互连设备的测试大多针对网络协议进行。网络协议测试一般分为三类[1]:一致性测试、互操作性测试和性能测试。一致性测试是网络协议测试的基础,它的目的是测试网络实现和网络协议中的规定是否一致。互操作性测试用于测试网络互连设备之间互联互通的情况。性能测试在以上两种测试通过的基础上进行,它主要关注网络的性能。
网络测试技术是和网络传输技术同步发展的。在网络发展早期,网络传输速率很低,这一阶段网络互连设备的测试主要集中在网络协议的一致性测试方面,通过与网络互连设备动态交换信息,对网络协议实现的正确性进行测试。这一阶段的测试主要用软件来实现,一般不需要使用专用的硬件。当网络发展到一定阶段后,网络的应用范围大大扩大,对于网络的服务质量提出了比较高的要求,人们需要了解网络互连设备的具体性能指标,如吞吐量、延迟、丢失率等,采用的主要方法是对真实网络的环境进行仿真,由网络测试设备生成测试流量,测试被测设备在这种环境下的性能。这一阶段接口速率比较低,很多功能还可以用软件来实现。近几年来,随着接口技术的发展和路由、交换技术的发展,网络互连设备的性能有了相当大的提高,网络互连设备的转发速率越来越高,而且使用了很多复杂的技术在QoS方面提供支持。为了适应这种变化,很多在路由器和交换机上采用的技术也被使用到网络测试设备中,如高速网络接口技术、分布处理技术、实时操作系统等,而且网络流量的仿真和网络设备QoS功能的测试也成为目前网络测试研究的热点。
目前,已经有很多厂商在从事网络互连设备性能测试系统的研制和生产,主要的厂商包括Netcom Systems[5]、Agilent[6]、Adtech[7]、Ixia[8]等。网络互连设备性能测试系统的主要用户有两类。一类是网络互连设备的生产厂商,他们在网络互连设备的研制和开发过程中需要性能测试系统的帮助;另一类是网络互连设备的评估机构,他们需要使用性能测试系统对不同厂商的网络互连设备进行测试、评估,并将这些测试结果提供给网络互连设备的用户。
本文的背景为863计划重大项目“集成性能测试系统IP-TEST”。本文的组织如下:第
1
二部分介绍网络互连设备性能测试中使用的性能指标;第三部分介绍网络互连设备性能测试的环境设置;第四部分介绍一个网络互连设备性能测试系统的设计;第五部分介绍使用测试系统得到的一个测试结果;第六部分进行总结,并探讨未来的研究方向。 2. 性能测试使用的指标
网络互连设备的性能测试属于黑盒测试。在测试过程中,测试设备通过向被测设备施加激励并观测被测设备的外部行为来了解被测设备的性能。为了在不同的测试结果之间进行比较,需要对于测试激励和被观测量进行统一的规定。由于网络互连设备的性能测试还是一种比较新的技术,所以目前这方面的技术标准还很不完备,在实践中大量使用的是各厂商自己制定的测量标准,这些标准很多已经成为网络互连设备性能测试领域的事实标准。
在RFC1242[2]和RFC2544[4]中,对网络互连设备性能测试中一些基本的性能指标进行了定义。其中,目前主要使用的性能指标包括:吞吐量(Throughput),延迟(Latency),报文丢失率(Frame Loss Rate)和背靠背性能(Back-to-Back Performance)。下面对这些性能指标的含义做一个简单的介绍。 2.1 吞吐量
吞吐量的定义为:在不发生报文丢失的情况下,被测设备可以支持的最大传输率。吞吐量是网络互连设备最重要的性能指标之一。
上面定义的吞吐量在实际中很难通过少量的测试得到。首先,通过一组测试来寻找完全不丢失报文的最大传输率是比较困难的。目前,很多系统采用“折半查找”的方法来自动完成这个搜索过程,十分精确的寻找目标值需要大量的测试时间。所以,在实践中大多使用一个丢失阈值,只要报文丢失的数量在这个阈值之内就停止测试。其次,在定义中没有规定测试的总时间。从理论上讲,测试的时间应当无限长,但这在实际中是不可行的。考虑到测试过程中整个系统的稳定需要一定的时间,在实践中一般将测试时间设为几十秒到几分钟。
在吞吐量的测试中还有2个要求。第一,在测试中要使用固定长度的报文。由于网络设备实现的因素,报文长度有时对测试的结果是有影响的。为此,在[4]中,规定了一些典型的测试报文长度。第二,在报文中包含校验和的情况下,测试时被测设备一定要对校验和进行处理[2]。这些要求都是为了便于对测试结果进行比较。 2.2 延迟
延迟的定义为:测试报文通过被测设备所需的时间。延迟也是网络设备一个重要性能指标。延迟的大小和变化影响到很多网络应用的性能。例如在TCP的流量控制中,延迟的大小影响到反馈的速度,从而影响到TCP传输的流量特征;在多媒体的传输中,延迟的大小和延迟的变化严重影响传输的质量。
由于网络设备的转发实现包括Store-and-Forward和Cut-Through两种方式,针对这两种转发方式定义了不同的延迟[2]。对于Store-and-Forward设备,延迟的定义为:从“输入帧”的最后一位到达被测设备的输入端口开始,到“输出帧”的第一位到达被测设备输入端口为止的时间。对于Cut-Through设备,延迟的定义为:从“输入帧”的第一位到达输入端口开始,到“输出帧”的第一位到达输入端口为止的时间。在测试系统中,只需实现Cut-Through延迟的测试即可,Store-and-Forward延迟可以用下面的等式进行计算:
Store-and-Forward延迟 = Cut-Through延迟 - 报文长度 / 接收接口速率 延迟的测量结果是一个统计结果,目前普通采用以下三种方式:
(1) Instantaneous Latency:只提供对最大延迟、最小延迟和平均延迟的统计。这种延迟测量方式实现简单,而且不需要用户进行任何配置。其缺点是统计结果过于粗糙,而且对于最大延迟和最小延迟的统计具有很大的偶然性。
(2) Distributive Latency:统计延迟的分布情况。用户可以自己设定延迟统计区间的范围,测试结果中将给出落入每个区间报文的数量或百分比。用户在设定统计区间时必须了解延迟
2
的范围,合适的区间范围需要一定的试验后才能得到。
(3) Latency Over Time:将一定时间内所有报文的延迟都记录下来。从理论上讲,使用Latency Over Time测量得到的结果,可以计算得到前面两种延迟统计的结果。但是在实际中,这种测量方式需要消耗大量的资源,只能对少量的报文进行统计。
除了以上三种测量方式,对于延迟来说还有一个很重要的测量内容是对延迟抖动(Jitter)的测量。网络传输中的延迟抖动对于话音和多媒体的传输性能有很大的影响。虽然使用Latency Over Time的结果进行处理也可以得到延迟抖动的值,但是其系统开销要比直接进行延迟抖动的测量要大。 2.3 报文丢失率
报文丢失率的定义为:在固定负载的情况下,由于缺少资源导致的没有转发的报文的比例。报文丢失率的测试是吞吐量测试的一个补充。吞吐量的测试要求不能出现报文丢失,即测试结果是在网络设备没有过载的情况下得到的。而报文丢失率的测试主要在网络过载的情况下进行。 2.4 背靠背性能
背靠背性能的定义为:在最大速率下,在不发生报文丢失前提下被测设备可以接收的最大的突发报文序列(Burst)的长度。背靠背性能反映网络设备对于突发报文的容纳能力。它主要和以下一些因素有关:网络设备内部缓冲的大小;网络设备入、出端口之间的速率差;网络设备转发能力的大小;网络设备交换网络的调度算法等。 3. 性能测试的环境设置 在网络互连设备的性能测试中,测试环境的设置是一个很重要的内容。在记录测试结果时,不仅要记录测试得到的测量结果,而且要记录测试环境的设置。测试环境的设置包括:被测设备的配置情况;测试的流量模型;测试的流量组合方式;特殊流量(如路由更新报文、SNMP报文)的设置等。 3.1被测设备的配置情况
网络设备在不同配置情况下的性能有可能不同。在进行性能测试时,应当使被测设备的配置情况和在真实的运行环境下的配置尽可能相同。
在针对路由器的性能测试中,路由表大小对报文转发性能有很大的影响。在路由器转发报文的过程中,很大一部分开销用于路由查找。目前很多路由查找算法的性能和路由表项的个数有关,所以在对路由器进行性能测试的时候,其路由表的设置就成为一个很关键的因素。
网络接口的一些配置选项也会影响性能,如:单/双工的选择;是否进行校验和的计算等。网络设备中“过滤”(Filter)的设置也对网络设备的性能有很大的影响。一些网络设备支持地址过滤、协议过滤这样的功能,这些功能都消耗大量的系统资源。如果在实际应用中需要使用“过滤”功能,就需要在性能测试时配置这些功能。 3.2性能测试的流量模型
流量模型是性能测试中的一个重要问题。理想的情况是性能测试中使用的流量和真实网络环境中的流量相同或者近似。但是由于网络系统本身的复杂性、异构性和不确定性,很难对网络流量给出一个明确的模型。虽然目前一些研究者提出网络流量符合自相似模型(Self-Similar)[9],但是由于它的复杂性、难于实现和配置,较难应用于网络互连设备的性能测试中。目前在性能测试中使用了一些相对简单的流量模型。
目前使用的流量模型主要有以下两种:均匀(Constant)流量模型和突发(Bursty)流量模型。在均匀流量模型中,所产生的测试流量是恒定的,这主要体现在报文之间的时间间隔是固定的。而在突发流量模型中,报文之间的时间间隔是变化的。
流量模型可以使用有限状态机来描述,如图1所示。图1(a) 是均匀流量模型,它只有一个状态,以速度V1发送测试流量。图1(b) 和图1(c) 都是突发流量模型,它们的差别是
3
状态数目不同。图1(b) 中,以速度V1持续发送时间T1后,再以速度V2持续发送时间T2,之后循环这个过程。T1和T2既可以是常数,也可以是满足一定分布的随机数。
均匀流量模型虽然是最简单的,但它仍然是使用最广泛的一种流量模型。它的优点是实现和配置简单,便于对结果进行比较。突发流量模型可以用于测试网络设备在突发报文情况下的性能,在大多数的性能测试系统中都支持这种模型。
T1T1V1V1T2V2V1T3V2V3T2(a) constant model (b) bursty model with two states图1. 流量模型 (c) bursty model with three states 3.3 性能测试的流量组合方式
上面讨论了单个流的流量模型,这里讨论在多个端口和多个流的情况下,如何在性能测试中对多个流进行组合。在[3]中,有关流量组合方式进行了两种分类。一种分类从流量方向(Traffic Orientation)的角度出发,另一种分类从流量分布(Traffic Distribution)的角度出发。
从流量方向的角度出发,可以分为“单向流量”和“双向流量”。单向流量的定义为:所有进入测试设备输入端口的数据帧被转发到输出端口,而输出端口没有从设备外部收到任何数据帧。单向流量在性能测试中可以用于以下方面:测量吞吐量;测量最小帧间距;建立“多对一”或“一对多”的测试负载;检测“队头阻塞”(Head of Line Blocking);测量使用拥塞控制机制时的转发速率和吞吐量。双向流量的定义为:每个端口同时发送和接收数据帧。使用双向流量测试时,被测设备的每个端口既从测试设备接收报文,又向测试设备发送报文。当接口为全双工方式时,必须使用双向流量测试吞吐量和转发速率。
从流量分布的角度出发,分为非网格流量(Non-meshed traffic)、部分网格流量(Partially meshed traffic)和全网格流量(Fully meshed traffic)。非网格流量的定义为:从一个输入接口进入的数据帧只被转发到唯一的一个输出接口,并且输入接口和输出接口被分为相互排斥的接口对。这样,每两个接口被分为一组。每个接口只和与它同组的接口发生关系。部分网格流量的定义为:从一个或多个输入接口进入的数据帧被转发到一个或多个输出接口,每两个接口之间只存在单向的流量,发送和接收接口之间的关系可以为一对多、多对一或者多对多。全网格流量的定义为:从每个端口进入的数据帧被转发到其它所有接口,即每两个接口之间都存在双向的流量。全网格流量要求每个接口既发送报文,又接收报文。当接口为“半双工”时,由于在接收时要中断发送,这样的流量必然导致突发现象的发生。图2显示了在4个接口情况下三种流量分布的区别。需要说明的是,图2(a) 和图2(b) 中显示的只是非网格流量和部分网格流量的一种情况。在一个网络设备有N个接口的情况下,在非网格流量方式下,
131313242424(a) non-meshed (b) partially meshed图2. 流量分布 (c) fully meshed 4
最大的总流量数(即图2中有向边的个数)为N/2;在部分网格方式下,总流量数为N×(N-1);在全网格方式下,总流量数为N2/2。另外需要指出的是,以上三种方式并没有覆盖所有可能的流量分布情况。从测试的代价考虑,没有必要使用所有可能的情况,在性能测试中,只使用这些典型的流量分布就可以了。 3.4 特殊流量的设置
除了网络设备转发的数据流量外,一些特殊流量也对网络设备的性能有重要的影响,例如:广播报文、路由更新报文和管理报文[4]。
在大多数路由器的设计中,都对广播报文进行了特殊的处理。进入网络设备的广播报文会被转发到多个接口。在测试流量中加入广播报文的目的是观测广播流量是否对正常数据流量的转发有影响。在[4]中对广播报文的使用做了以下规定:
(1) 在测试流量中应当加入1%的广播报文。1%的比例大大高于网络的实际情况,这个比例只是为了加强广播报文的影响。如果设备不能处理这个比例的广播报文,可以将这个比例进一步减小。
(2) 广播报文的地址应当使路由器不需要对这些报文进行特殊的处理。 (3) 广播报文应当均匀的插入到测试流量中,例如每100个测试报文插入一个广播报文。 路由软件是路由器软件系统的一个重要组成部分,动态路由更新报文的处理可能对路由器的转发性能产生严重的影响。在网络实际运行中,路由更新报文是经常出现的,所以考察路由器在路由更新处理下的性能是很有必要的。路由更新报文的使用要注意以下几点[4]:路由更新报文应当作为到测试流量的第一个报文;路由更新报文应当能够引起被测路由器路由表发生改变,但不能影响测试数据报文的转发;路由更新报文应当以一定的速率间隔发送到被测路由器,对于不同的路由协议使用不同的速率。
在大部分的网络设备中都使用了管理协议(如SNMP)来进行网络设备的管理。在很多网络中会出现很多管理主机同时向同一网络设备发送查询(Query)报文的情况。网络设备在处理这些查询报文时会消耗一部分的系统资源,有可能影响到报文转发的性能。在测试中使用管理报文时应当每秒钟发送一个查询报文,并且网络设备应当通过回复(Response)报文返回查询的结果,测试设备应当对回复报文的内容进行检查[4]。 4. 性能测试系统的设计 在第2部分和第3部分中,我们对网络设备性能测试的需求进行了说明。根据这些需求,我们设计了性能测试系统。
测试仪4.1 测试系统的总体构成 (Tester)测试系统的总体构成如图3所示。考虑到测试系统与用户之间的交互和测试仪可扩展性等方面的因素,整个测
监控机试系统由被测设备(DUT: Device Under Test)、测试仪(Tester)(Monitor)和监控机(Monitor)这三部分组成。测试仪完成测试的基本功能,包括测试流量的产生和接收、测试统计量的测量、路由报文的产生和报文截取等。监控机通过消息机制完成
被测设备(DUT〕对测试仪的控制,并负责与用户的交互,包括测试参数的
图3. 测试系统总体构成 设定、测试结果的分析和显示等。
在测试系统中,测试仪的各测试接口与被测路由器的
各接口直接相连,测试仪和监控机之间通过100M以太网相连。当有多台测试仪参与测试时,各测试仪同监控机使用100M Hub进行连接,由监控机完成各测试仪之间的协调工作。当使用相隔较远的多台测试仪协同进行测试时,它们之间需要使用专用的测试通信通道。 4.2 测试系统的主要功能模块
下面介绍测试仪中包含的主要功能模块。
5
(1) 流量生成模块
流量生成模块用于产生测试所需要的网络流量。在网络互连设备性能测试领域中,普遍采用“流”作为测试流量生成的基本单位。“流”报文具有以下特征:有相同的源/目的端口,但可以有不同的源/目的IP地址对;有相同的报文长度和相同的QoS属性;有相同的分组类型(即协议域的值);有相同的填充模式;具有一定的流量模型。测试系统中实现的流量模型为图1(b)所示的两状态突发流量模型。
在测试系统中实现了千兆以太测试接口。由于在这样的接口速率下,测试流量的产生已经无法使用软件来完成,所以流量生成模块全部使用硬件(FPGA)来实现,每个网络接口最多可以支持256个“流”。下面提到的延迟测量模块和报文丢失测量模块也是使用硬件实现的。
(2) 路由仿真模块 测试系统中的路由仿真模块实现基于OSPF协议。它有两个主要功能。首先,该模块用于产生性能测试所需的路由更新报文流量。这个需求已经在3.4.2中介绍。该模块的另外一个作用是在被测路由器中生成大型的路由表。关于在被测路由器中生成大型路由表的必要性已经在2.2.1中说明。路由表对性能测试的影响已经在3.1中说明。路由表的配置可以由用户手工来完成,但是当路由表数目很多(上万条或几十万条)时,这个操作由用户来完成就相当困难了。通过测试系统中的路由仿真模块,可以很容易的将很大的路由表更新到被测路由器中,大大减轻了测试配置的工作量。 (3) 延迟测量模块 延迟测量模块支持2.2中说明的3种延迟测量方式。为了支持延迟的测量,在测试报文中携带了“时间戳”,用于记录测试报文离开测试发送端口的时间。在测试仪的多个测试端口之间,维护了一个精确的全局时钟。延迟测试的时间精度为100纳秒。
new(4) 报文丢失测量模块
本模块用于统计在测试过程中丢失或者
0110100110010000“乱序”的报文。“乱序”就是指报文在传输过
程中没有保持发送时的顺序。在[10]中指出,“乱序”现象在Internet上是相对比较多的。而在[11]win_minrcv_next中指出,部分“乱序”现象的发生是由于网络图4. 丢失测量算法示意图 设备中并行部件的使用。使用多个相同的部件
对网络报文进行并行处理是目前在网络设备中普遍使用的一种技术。和使用一个高速部件相比,使用多个低速部件来完成相同的功能更加经济和可靠。但是由于并行部件的使用使网络设备内部出现多条数据通路,如果不采用特殊的设计,也会导致“乱序”现象的发生。 本模块使用窗口机制来检测报文的丢失和“乱序”。其原理如图4所示。每个报文携带一个唯一的序号。win_min和rcv_next分别为检测窗口的下界和上界。new表示新到达的报文的序号。如果new等于rcv_next,说明报文顺序正确。如果new大于rcv_next,表明出现了报文丢失。如果new小于win_min,说明出现了重复的报文。如果落入窗口内,而对应的位置为0,说明出现了“乱序”的报文;否则说明出现了重复的报文。 4.3 测试的连接模型
测试系统的一个测试接口可以同时生成多个“流”。使用不同的流量生成方案,可以构成不同的测试连接模型。图5显示了两种不同的测试连接模型。图5(a)是“间接连接”模型,在该模型中每个测试端口模拟一个路由器,似乎所有主机产生的流量都通过路由器转发到被测设备的端口中。图5(b)是“直接连接”模型,该模型的效果是模拟所有主机都直接和被测路由器的端口直接相连。 测试模型的选择和测试接口的类型有很大的关系。当测试接口为“点到点”类型(如
6
POS接口)时,测试模型DUTDUTP1P2...PnP1P2...Pn只能使用“间接连接”模
...型,因为在实际网络中,...RouterRouter每个接口只能和一个网络
设备互连。当测试接口为广播类型(如以太接口)TesterTester时,可以选择“直接连接”
(a) 间接连接 (b) 直接连接 模型或“间接连接”模型。
当测试接口为以太类图5. 测试的连接模型 型时,“直接连接”模型和
“间接连接”模型在实现上的差别为:使用“间接连接”模型,所有“流”的源MAC地址都使用相同的值,这个地址就是测试接口所虚拟的路由器的MAC地址;如果使用“直接连接”模型,不仅每个“流”要使用不同的源MAC地址,而且如果一个“流”的源IP地址可以发生变化,每个源IP地址对应的源MAC地址也必须各不相同。目前测试系统选用的是“间接连接”模型。 5. 测试实践
报文长度 发送报文 接收报文
64 14880952 6109885128 8446114 6097579256 4529325 4529325512 2350099 2350099
丢失报文877106723485350 0 最大延迟
最小延迟 平均延迟
389773 223 385880 238057 231 235749 1761 202 1218 1750 375 1564 1518 812910 812910 0 2158 600 1000 表1. 测试结果
我们使用测试系统对Cisco12000路由器的转发能力进行了初步的测试。在测试中使用
了2个千兆以太测试接口。本测试只是为了检验测试系统的性能,所以在测试中都使用“线速”发送。每次测试持续10秒钟,使用了不同长度的报文。 测试结果显示在表1中。其中报文长度的单位为字节,延迟的单位为100纳秒。在报文长度为64字节或128字节时,出现了大量的报文丢失,而且延迟方面的性能也急剧下降。 6. 总结
本文总结了网络互连设备性能测试领域的一些技术背景,主要包括在测试的性能指标和测试中的测试环境设置,这些是对网络互连设备性能测试系统的需求。本文介绍了一个性能测试系统的设计,重点讨论了其中使用的关键技术。
目前在网络互连设备性能领域还缺少成熟的理论和模型,测试过程也没有统一的标准,在这些方面都还需要进一步的工作。
参考文献:
[1] 赵邑新. BGP-4协议一致性测试研究,硕士论文,2000年 [2] S. Bradner. Benchmarking Terminology for Network Interconnection Devices, RFC1242, July
1991. [3] R. Mandeville. Benchmarking Terminology for LAN Switching Devices, RFC2285, Feb 1998. [4] S. Bradner. Benchmarking Methodology for Network Interconnect Devices, RFC2544, Mar
1999.
[5] Netcom Systems, www.netcomsystems.com. [6] Agilent Technologies, www.agilent.com. [7] Adtech, Inc., www.adtech-inc.com.
7
[8] Ixia, www.ixiacom.com.
[9] W. S. Leland, M. S. Taqqo, W. Willinger, and D. V. Wilson. On the Self-Similar Nature of
Ethernet Traffic, Proc. ACM/SIGCOMM'93, San Francisco 1993, pp. 183-193.
[10] Vern Paxson. End-to-End Internet Packet Dynamics, IEEE/ACM Transaction on Networking,
Vol. 7, No. 3, June 1999. [11] Jon C. R. Bennett, et al. Packet Reordering is Not Pathological Network Behavior,
IEEE/ACM Transaction on Networking, Vol. 7, No. 6, Dec 1999.
Performance Testing for Network Interconnection Devices: Principle and Practice
Zhang Miao, Wu Jianping, Sheng Lijie, Cui Yong, Xu Mingwei
Institute of Computer Network Technology, Department of Computer Science and Technology,
Tsinghua University, Beijing 100084.
Abstract:
The technology of network performance testing is advanced very quickly in recent years. The performance testing of network interconnection device is one of most important areas of network performance testing. It provides an approach to assess the performance of network interconnection device for both the vendor and the user. In this paper, some technical background in performance testing for network interconnection devices is discussed. What to measure and how to measure in the performance testing are explained. Then the system design of a performance testing system for network interconnection devices is described. Using this system, we conduct a test with Cisco12000 router. Key Words:
Performance Testing, Network Interconnection Device
8
因篇幅问题不能全部显示,请点此查看更多更全内容