Alex_McAvoy

想要成为渔夫的猎手

以太网 MAC 子层测试

【地址学习】

在测试开始之前,让被测试交换机学习测试中将要用到的 MAC 地址

由于任何地址未被学习的帧都会被 DUT 作为洪泛帧转发,这减少了测试过程中被正确转发帧的数量,因此要求先学习 MAC 地址,再验证地址学习结果,最后进行测试

在地址学习时,要注意以下两点:

1.测试仪表向 DUT 发送地址学习帧的速率不可太大,以免因 DUT 地址学习速率上的限制而导致地址学习失败,一般要求地址学习速率 $\leq$ 50 帧每秒

2.由于交换机地址表存在地址老化问题,即对于一个当前地址表中的地址项,若在地址老化时间内未被调用,则该地址将会从地址表缓存中被自动删除

因此要调整被测试交换机的地址老化时间,使其足够长,确保在测试结束前所学到的地址都不被老化,一般来说,地址老化时间大于测试学习时间、测试持续时间、配置测试设备时间之和

【帧长测试】

理论上,选择任何一种长度在 64~1518 字节之间的测试帧都是被允许的

但是,帧长选择影响交换机的转发性能

帧长越大,交换机在单位时间内所要处理的帧数就越少;帧长越小,交换机在单位时间内所要处理的帧数就越多,交换机在帧接收、地址处理、帧转发以及拥塞控制上的压力就越大,最终会影响交换机的转发速率、丢帧率和吞吐量等性能指标

为了全面地反映被测试设备的性能,有必要在不同的帧长度下运行有关的以太网测试,三种常见的测试帧长方案如下:

  • 完备性的测试方案:对所有长度的帧,进行测试
  • 快速的测试方案:选择某些有代表性的帧长进行测试(RFC1242 建议,以太网快速测试可以采用 64、128、512、1024、1280、1518 字节等不同长度的帧)
  • 基于统计的测试方案:以对设备所在网络环境的帧长监测与帧长分布统计信息为基础,确定相应的测试帧长

【帧格式测试】

测试仪表仅对测试帧进行统计,为此需要对普通帧测试帧加以必要的区分

在基本格式上,测试帧与普通以太网帧相同,但需要加入一个独特的签名字段,该字段出现在以太网帧的第 56 字节后或位于整个帧的结尾处

签名字段具有足够的可区分性,以帮助测试仪表从所接收的流量中提取出测试帧流量,并过滤掉那些不属于提交负载的普通帧流量

下图给出了一个来自思博伦通信公司的签名字段的实例,该字段共 20B

  • 流标识(Stream ID):4B,用于区分不同的测试流,具有相同流标识的帧属于同一测试流,32bit 的流标识最多可以支持 $2^{32}$ 条测试流
  • 序列号(Sequence):6B,用来指出帧在所在测试流中的顺序
  • 时间戳(Timestamp):4B,用来计算帧的传输时延

【吞吐量查找算法】

由于在测量吞吐量时,需要提供相应的查找算法,该算法必须能够通过调整加载在 DUT 上的负载来逼近或找到在零丢帧率下的最大转发速率

步进查找法

设当前负载为 $Load$,初始负载为 $Load_0$,步进长度 $△Load$

将初始负载 $Load_0$ 赋值给当前负载 $Load$,即令:$Load=Load_0$,并判断当前负载下的丢帧率是否为零

如果为零,令:$Load=Load+△Load$,再度观察丢帧率

  • 若丢帧率不为零:停止对 $Load$ 的步进,并将该负载下的转发率作为要查找的吞吐量
  • 若丢帧率为零:继续步进

如果不为零,令:$Load=Load-△Load$,再度观察丢帧率

  • 若丢帧率不为零:继续步进
  • 若丢帧率为零:停止对 $Load$ 的步进,并将该负载下的转发率作为要查找的吞吐量

测试准确度取决于步长的大小,步长越小,所报告的吞吐量越接近实际结果,但步进次数越多,查找速率越慢

二分迭代法

设最小负载 $Load_{Min}$、最大负载 $Load_{Max}$、当前负载为 $Load$、初始负载 $Load_0$

将初始负载 $Load_0$ 赋值给当前负载,即令:$Load=Load_0$,并判断当前负载下的丢帧率是否为零

如果为零,令:

再度观察丢帧率,反复迭代,一旦丢帧率不为零间隔小于迭代分辨率时,停止迭代,并将当前负载下的转发率作为所要查找的吞吐量

如果不为零,令:

再度观察丢帧率,反复迭代,一旦丢帧率为零间隔小于迭代分辨率时,停止迭代,并将当前负载下的转发率作为所要查找的吞吐量

测试准确度由迭代分辨率决定,迭代分辨率越小,吞吐量越接近实际结果,迭代次数越多

混合算法

步进算法具有较二分迭代更快的查找速率,而二分迭代法具有较步进算法更准确的查找结果,混合算法兼顾两者优点,具有较好的查找速率与查找准确度

首先,采用步进查找算法来快速找到或逼近 DUT 的吞吐量所对应的负载大概范围或区间,然后,在上述区间内进行二分迭代查找

举例来说,当初始负载 $Load_0$ 未有丢帧现象,在第 $n$ 次步进时,首次观测到丢帧,那么就中止后续的步进过程,转而在区间 $[Load_0+(n-1)△Load,Load0+n△Load]$ 内进行二分迭代查找

若事先对 DUT 吞吐量所对应的区间有所了解,可直接在该区间内运行二分迭代查找算法,以加快整个测试进程

【吞吐量测试】

全网状流量

测试目的

通过确定 DUT 在全网状流量下的吞吐量、丢帧率和转发率,即可反映出交换机的整机交换转发性能

通过调整负载的大小,可以测试 DUT 在不同负载下的转发速率和丢帧率,并从中找到零丢帧率下的吞吐量

测试拓扑

在全网状双向流量模式下,测试仪表生成相应的测试流发往被测交换机(DUT)的各个源端口,测试仪表观测在 DUT 各个目标端口所能成功收到的帧数,通过对结果的统计计算转发速率和丢帧率

测试参数

测试帧长设定为 64、128、256、512、1024、1280、1518 字节,至少要选择其中的五个不同帧长实施测试

突发帧中的帧间隙被指定成 96 比特长度的最小合法帧间隔,以能够反映极限帧间隙下的交换机性能,这个间隔在 10Mbps 以太网中相当于 9.6μs,在 100Mbps 以太网中相当于 960ns,在 1Gbps 以太网中相当于 96ns

端口工作模式,可选择半双工或者全双工

为反映 DUT 在执行不同数量地址查找时的交换能力,需要让测试仪表所生成的测试流中包含若干不同的帧目的地址,通常按照 $2^n$ 的方式来进行,即按照 1、2、4、8、16、32、64、128、256、…… 的数量去改变设置

对于在每端口采用多个地址的测试来讲,测试帧中的源地址和目标地址对还应是随机分布的,以真实反映 DUT 的地址查找性能

为了整个测试期间所有的端口平等而且满负载工作,以确保整个测试的平衡,即在不同的目的端口上,发往每个端口的目的地址在数量上有相等的分布,每一个目的端口都不会超负荷,每个端口以循环轮转的方式发送测试帧给其它端口

测试时长,在 1~300 秒之间调整,推荐的测试时间为 30 秒

测试结果报告

对于负载,规定以媒质的最大理论负载的百分比表示

对于丢帧率,应当在测试结束时度量,而不应该以传输过程中的每秒为单位进行度量

对于转发速率,应当报告为每秒内设备能够被观察到的成功转发到正确目的接口的测试帧的数量,同时作为对一个特定提交负载的响应,要指出所对应的提交负载值

部分网状

一对多/多对多测试

一对多/多对多测试是为确定当从 DUT 的一个端口传输到多个端口或从多个端口传输到一个端口时的吞吐量

常被用来确定 DUT 利用一个以太网端口转发来自多个以太网端口的交换流量的能力,如用于确定一款非对称交换机上行端口为所有其他非上行端口进行数据帧转发的能力

主要的测试参数设置、测试过程、测试结果的统计以及测试结果的报告方式均可参照全网状吞吐量测试

与全网状吞吐量测试的主要区别在于流量方式的不同:

  • 当测试为多对一时,来自多个端口的测试帧必须发往一个端口
  • 当测试为一对多时,来自一个端口的测试帧必须以循环轮转方式发往多个端口

单向流量测试

单向流量测试是为了确定 DUT 上一半端口向另一半的端口发送单向流量时 DUT 的吞吐量

如下图,以 DUT 上 8 个端口为例,给出了相应的测试拓扑,其中,1-4 端口为发送端口,5-8 端口为接收端口

主要的测试参数设置、测试过程、测试结果的统计以及测试结果的报告方式均可参照全网状吞吐量测试

与全网状测试类似,在端口地址配置上,为了确保每一次的流量传送中不同接收端口上的目的地址有相等的分布,以保持测试的平衡,在测试过程中每一个发送端口必须以循环轮转的方式将测试帧发送给所有的接收端口

【最大转发速率测试】

最大转发速率测试是为了度量 DUT 设备在负载发生变化时的转发率峰值

测试拓扑如下:

测试仪表生成的测试帧作为负载传输到 DUT 的第一个端口(port1),观测与度量在 DUT 的第二个端口(port2)进行

为了能够在负载 Load_T 和 Load_MOL 之间找到最大转发速率,须引入步进查找算法,设置一个合适的步进长度,对负载进行步进,从一组重复的 DUT 转发率测试结果中找到其中的峰值作为最大转发率最终报告值

步长值越小,测量结果越精确,但测试所需要的次数就越多

感谢您对我的支持,让我继续努力分享有用的技术与知识点!