Alex_McAvoy

想要成为渔夫的猎手

网络层数据包转发测试

【基本方法】

在网络层测试中,测试技术指标以为关注对象

但由于每个包都必须经过数据链路层封装才能传输,即每个包都存在一个与之对应的帧

因此,在网络层测试中仍以帧为对象定义每条测试流量

【地址学习】

为确保被测设备能够在稳定的工作状态下直接转发每个 IP 测试数据包,需要先进行地址学习

即以学习 IP 地址与 MAC 地址映射关系为目的,事先学习转发 IP 测试包时所需的 MAC 地址,以完成 ARP 表的更新

下图为被测设备第三层地址学习示意图

【吞吐量】

概述

吞吐量测试是为了找到在没有丢包的情况下路由器能够转发的最大速率

吞吐量测试的判定唯一标准是:零丟包

通常看两个方面的性能:整机吞吐量、端口吞吐量

参与端口 测试对象
端口吞吐量 一对同种类型端口,各种类型端口都要进行一次同种类型端口直接的测试 端口和线卡的能力
整机吞吐量 全部或者多种类型的端口 背板或者交换网络的能力

测试方法

在吞吐量测试过程中,常根据需要选择以下测试方法:步进法、二分搜索法、混合法

步进法:假设每次测试时速率的变化量为 $Δv$,如果在某个速率 $v$ 下的包能够正确转发,但在速率 $v+Δv$ 时包出现丢失,则 $v$ 就是吞吐量

二分搜索法:设置初始帧速率、最小速率和最大速率,如果测试时出现丢帧,则下一轮测试的速率为当前速率与最小速率间的中值,否则下一轮测试的速率为当前速率与最大速率间的中值,直到不丢帧时,当前速率即为吞吐量

帧大小的影响

吞吐量随帧大小的不同而改变

在 RFC2544 中,对以太网测试帧大小的建议为 64、128、256、512、1024、1280、1518 字节

时长建议每次持续 60 秒以上

各种网络下帧长与最大理论速率的关系如下:

【背对背】

背对背描述的是路由器在数据急剧增加、甚至达到该物理介质的理论速率时的表现

背对背测试通过向被测设备发送具有合法最小帧间隙的突发数据包,确定被测设备在不丢包的情况下能够处理的最大数据包数目,从而考察路由器接口对于突发数据的缓存能力

背对背测试与吞吐量测试都反映了路由器的数据包转发能力,但吞吐量测试重在转发引擎的转发能力,其单位是:包/秒,背对背测试重在接口缓存能力,其单位是:包

RFC2544 没有规定测试采用的算法,但最常用的算法是:

  1. 在每轮背对背测试中,以最大帧速率向 DUT 传送特定数量的测试帧
  2. 统计 DUT 转发的帧数
  3. 如果出现丢帧,则减少帧数或测试持续时间,否则增加帧数或测试持续时间
  4. 重复上述测试过程,直至找到没有丢帧时的最大帧数,此时,结果即为背对背值

为了保证足够的数据包数目,发送具有合法的最小帧间隙的突发数据包的持续时间必须大于等于 2 秒钟,并且测试应该至少进行 50 次,最终取平均值

【丢包率】

概述

丢包率测试是为了确定 DUT 在不同的负载和帧长度条件下的丢包率,该参数可以反映过载情况下网络设备的性能,有助于表明一个设备在面对广播风暴等网络异常情况下的行为

实际的测试方法是以一定速率向 DUT 发送一定数目的包,并对 DUT 转发的包的数量进行统计,最终结果为:

其中,$X$ 代表发送包数量,$Y$ 代表接收包数量

帧划分

根据作用的不同,帧可以划分为多种类型,如:数据帧、学习帧、路由更新帧等,网络设备应当采取合适的丢弃策略,尽量保证关键帧和重要帧的顺利传输

例如:若丢失了某个关键的路由信息帧,就有可能导致大量数据不能交换,从而引起更大的丢失率

丢包率测试主要考虑待测设备在超负荷运转情况下的异常行为,包括包的丢失、重发、乱序和错发等

在接收时不能简单统计收到帧的个数,必须加以识别,这需要对帧进行编号,接收时可以通过对帧编号的查对来判断各种不同的异常情况

需要注意的是,重发和乱序不算作丢失,但在接收帧总数里不能重复统计收到的重复帧

测试方法

在测试丢包率时,为了达到反映测试设备在超负荷情况下的实际运行情况,同时真实反映设备丢包率的情况,可采用三种方式:

  • 一对一端口发送和接收:反映单端口的丢包情况,两端口可以随机选取,重复测量 10 次计算平均值即可
  • 部分网状多对一/一对多端口测试:通过多个发送端口以一定速率向待测设备的某个接收端口发送数据,或者一个发送端口以一定速率随机发向多个接收端口,这种情况下,需要测量更多次数来反映平均性能
  • 多对多全网状测试:多个结点形成一个连通图,即任意端口要发送报文到其余各端口,任意端口要收到其余各端口发向自身的报文

【延迟】

概述

延迟测试是确定数据包经过 DUT 传输所需要的时间,以反映 DUT 执行转发操作的速度以及转发队列的处理情况,延迟越小,说明路由器处理数据包的速度越快

延迟测试时,必须要测得以下两个参数:

  • 输入帧的最后一位到达输入端口的时刻
  • 输出帧的第一位出现在输出端口的时刻

在存储转发设备和位转发设备中对延迟的定义不同:

  • 存储转发方式设备:延迟 = 输出帧的第一位出现在输出端口的时刻 – 输入帧的最后一位到达输入端口的时刻
  • 位转发设备:延迟 = 输出帧的第一位出现在输出端口的时刻 – 输入帧的第一位的末尾到达输入端口的时刻

在实际情况下,设备被看成一种存储转发设备,设备的延迟仍然从输入的最后一位开始计算,到输出的第一位结束,即使这个计算结果是负的,这样计算的目的就是要将设备作为一个整体来看待,而不考虑设备的内部结构

标记帧方法

在一个测试流中,每个帧的开始标志和结束标志都是相同的,为进行区分,引入了标记帧方法,即通过在整个报文中特定位置加入特殊标记来测试

对带有标记的帧,要求:

  • 不能在传输过程中丢失
  • 转发的时候网络设备应该已经工作在稳定状态,即标记帧设置在测试流的中间

由于整个报文的延迟是和报文中任意位的延迟是相等的,这样一来,测试就转化为:记录网络设备接收带有标记的帧的时间和发送带有标记的帧的时间

测试过程

具体的测试过程为:

  1. 为确保在不丢包的情况下进行测试,要确定 DUT 在各个帧长下的吞吐量
  2. 针对每一个特定的帧长,以已经确定好的不超过吞吐量的发送速率发送该帧的数据流,该发送过程应该维持至少 120 秒
  3. 在数据流发送 60 秒之后,在其中的某一个帧中打上标记,并记录下该帧被发送的时间戳 A
  4. 测试设备的接收端必须能够识别该标记信息,并记录下接收到携带该标记的帧的时间戳 B
  5. 时间戳 B 减去时间戳 A,结果即为延迟

【系统重启】

系统重启测试主要集中在系统重启时间的测试上

引发系统重启有三种可能:

  • reset 引起重启:使用 DUT 设备软件的 reset 方式进行软件系统重启
  • 硬件重启:使用 DUT 设备硬件的 reset 按钮进行硬件系统重启
  • 电源中断重启:与上述相似,不同之处在于重启 DUT 时需要关闭电源 10 秒钟

为避免因等待接收路由更新引入新的延迟,通常采用直连网络或静态路由进行测试,测试过程如下:

  1. 确定最小帧长下的吞吐量
  2. 以最小帧长吞吐量的速率持续地发送数据流
  3. 重启 DUT
  4. 从数据包开始转发起一直监测输出端口,分别记录复位前测试端口接收到的最后数据包的时间(时间戳 A)、复位后测试端口接收到的第一个数据包的时间(时间戳 B)
  5. 重启时间由时间戳 B 减去时间戳 A 所得到
感谢您对我的支持,让我继续努力分享有用的技术与知识点!