跳转至

实验评测技术方案

至此,实验者应当已经全面完成硬件路由器的全部软硬件设计与实现,本节阐述本实验评测的具体技术方案。实验评测将会充分测试实验者路由器的如下功能和性能指标:

  • 连通性:接入路由器的主机之间两两连通
  • 吞吐率
  • (小包)转发速率
  • 路由表容量

值得注意的是,实际路由器的如下特性也同样重要,但在本实验中暂不进行测试:

  • 路由表更新速率:全网路由表在按一定的速率持续更新,路由器需要为此提供支持
  • 路由器软件的内存安全问题,以及其他安全问题
  • 其他功能和性能指标

后文将实验者路由器称为被测路由器。进行后文测试时,同组的被测路由器应当使用相同的硬件设计和软件设计,仅允许 IP 地址和/或 MAC 地址配置有所不同。同时,为加快路由收敛,被测路由器 RIP 路由协议的定时器参数选取为:更新定时器为 3 秒,超时定时器为 30 秒,垃圾回收定时器为 30 秒,与 RFC 文档规定不同。

此外,测试者进行评测时需要注意为实验者拍摄照片、录像并保存。

单路由器功能与性能测试

本小节测试单路由器的功能(转发正确性及基本的稳定性)以及性能(转发表容量、转发速率及吞吐率),测试流程为:

首先,将被测路由器四个接口的 IP 地址按下表所示配置。MAC 地址由实验者选定,但需要注意每台被测路由器的每个接口的 MAC 地址应当各不相同(下同)。

接口 IP 地址
0 10.0.0.1/24
1 10.0.1.1/24
2 10.0.2.1/24
3 10.0.3.1/24

网络测试仪以及测试主机的 IP 地址相应配置(下同),测试主机默认路由(或 10.0.0.0/8 的路由)的下一跳 IP 地址修改为与其相连的被测路由器相应接口的 IP 地址。

将被测路由器四个接口与网络测试仪四个接口两两相连,然后进行如下测试:

  • 转发正确性及路由表容量:给定一张路由表,在网络测试仪的所有接口上运行标准 RIP 路由协议,网络测试仪向被测路由器的对应接口广播路由信息,同时在所有接口接收被测路由器广播的路由信息。通过将收到的路由信息与网络测试仪最初广播的路由信息比较,可以初步判断被测路由器能否接受该路由表。进一步,对于路由表中每一条路由,网络测试仪在该路由的网络前缀中随机选择 1 个 IP 地址(需确保该 IP 地址经过路由表最长前缀匹配后,仍然匹配到该路由;若不存在这样的 IP 地址,则说明该路由被前缀长度更长的路由完全覆盖,此时跳过该路由的测试),生成目标 IP 地址为该地址的 IP 分组,并向被测路由器的某个接口发送(该接口应当不同于该路由的下一跳接口),然后尝试从该路由的下一跳接口接收这一 IP 分组。若成功接收,说明被测路由器能够正确转发目标 IP 地址为该网络前缀的 IP 分组。若被测路由器能够转发该路由表中所有网络前缀对应的 IP 分组,认为被测路由器能够正确接受该路由表。通过改变给定路由表的大小(依次选择附件 fib_shuffled.txt 中路由表的前 1 、 2 、 3 、 ... 、 20000 项,或采用二分的方法),即可测试被测路由器能够接受的最大的路由表,其大小认定为被测路由器的路由表容量。如此选择路由表,可以保证路由表前缀长度的分布与 IPv4 全网路由表的分布基本相同。
  • 基本的稳定性:给定一张恰好占满被测路由器的路由表(即大小为被测路由器路由表容量的路由表),在网络测试仪的所有接口上运行标准 RIP 路由协议。若被测路由器正常运行超过 5 分钟,则认定被测路由器具有基本的稳定性。
  • (小包)转发速率及吞吐率:给定一张恰好占满被测路由器的路由表(即大小为被测路由器路由表容量的路由表),在网络测试仪的所有接口上运行标准 RIP 路由协议,将路由信息发送给被测路由器。后续测试时,网络测试仪可以暂时关闭 RIP 协议,防止其干扰测试流量。此时,给定 IP 分组大小,网络测试仪同时向被测路由器所有接口连续不断发送该大小的测试 IP 分组。其中,每个测试 IP 分组的目标 IP 地址随机生成,并确保所有接口的测试 IP 分组不会在被测路由器的任何一个出接口拥塞(即发往不同接口的测试 IP 分组的下一跳接口各不相同)。发送时,网络测试仪分别记录每个接口的统计信息,包括发送字节数及发送分组数。同时,网络测试仪从被测路由器所有接口接收 IP 分组并进行正确性校验,并分别记录每个接口的统计信息,包括接收正确字节数、接收正确分组数及接收错误分组数。此外,网络测试仪记录测试的持续时间。所有接口每秒接收正确的分组数之和认定为该分组大小下的转发速率。通过改变分组大小(46、128、256、512、1024、1500 字节),绘制“IP 分组大小—转发速率”图线以及“IP 分组大小—带宽”图线,其中,带宽 = (IP 分组大小 + 38) × 转发速率。IP 分组大小为 46 字节时的转发速率认定为被测路由器的小包转发速率;IP 分组大小为 1500 字节时的带宽认定为被测路由器的吞吐率。

若被测路由器的小包转发速率达到或超过 5.94Mpps ,且吞吐率达到或超过 3.99Gbps ,则认定该被测路由器能够线速转发。

此外,网络测试仪保证将整个路由表分散在其发送定时器的整个周期内均匀发送,或限制其每个接口的 RIP 报文发送速率不超过 1.5Mbps (若通过 RIP 路由协议每 3 秒发送 20000 条路由,所需的速率大约为 1.1648Mbps),防止发送过快导致被测路由器无法及时处理。

测试数据记录于下表:

被测路由器组号 路由表容量(条) 小包转发速率(Mpps) 吞吐率(Gbps)
0
1
2
3
4
5

组内互联互通测试

本小节测试相同实现的三个路由器的互联互通性(如是否能正确交换路由信息,或是否能连续逐跳转发),测试流程为:

链状拓扑(chain) 将三个相同的被测路由器 R0 、 R1 及 R2 如下图所示互相连接,然后将这些被测路由器四个接口的 IP 地址按下表所示配置:

            /---------\     /---------\     /---------\
+-----+     |    2    |     |    2    |     |    2    |     +-----+
| PC0 |<--->|0  R0   1|<--->|0  R1   1|<--->|0  R2   1|<--->| PC1 |
+-----+     |    3    |     |    3    |     |    3    |     +-----+
            \---------/     \---------/     \---------/
被测路由器编号 接口 IP 地址
0 0 10.0.0.1/24
0 1 10.255.0.1/30
0 2 10.0.2.1/24
0 3 10.0.3.1/24
1 0 10.255.0.2/30
1 1 10.255.1.1/30
1 2 10.1.2.1/24
1 3 10.1.3.1/24
2 0 10.255.1.2/30
2 1 10.2.1.1/24
2 2 10.2.2.1/24
2 3 10.2.3.1/24

将三个被测路由器与两个测试主机如上图所示相连,然后进行如下测试:

  • 连通性:首先在 PC0 上运行 ping -c 5 10.2.1.2 ,然后运行 sudo ping -c 1000 -i 0.01 10.2.1.2 ,若后一命令丢包率不超过 1‰ 则认定被测路由器在该拓扑下连通。测试时注意观察 TTL (下同)。
  • 小包转发速率及吞吐率(可选,下同):将 PC0 以及 PC1 替换为网络测试仪,可以简单地测试被测路由器在该拓扑下的小包转发速率及吞吐率。

测试数据记录于下表:

被测路由器组号 连通性(1/0) 小包转发速率(Mpps) 吞吐率(Gbps)
0
1
2
3
4
5

环状拓扑(ring) 将三个相同的被测路由器 R0 、 R1 及 R2 如下图所示互相连接,然后将这些被测路由器四个接口的 IP 地址按下表所示配置:

            /---------\     /---------\
+-----+     |    3    |     |    3    |     +-----+
| PC0 |<--->|2  R0   1|<--->|0  R1   2|<--->| PC1 |
+-----+     |    0    |     |    1    |     +-----+
            \---------/     \---------/
                 ^               ^
                 |  /---------\  |
                 |  |    3    |  |
                 \->|1  R2   0|<-/
                    |    2    |
                    \---------/
                         ^  +-----+
                         +->| PC2 |
                            +-----+
被测路由器编号 接口 IP 地址
0 0 10.255.2.2/30
0 1 10.255.0.1/30
0 2 10.0.2.1/24
0 3 10.0.3.1/24
1 0 10.255.0.2/30
1 1 10.255.1.1/30
1 2 10.1.2.1/24
1 3 10.1.3.1/24
2 0 10.255.1.2/30
2 1 10.255.2.1/30
2 2 10.2.2.1/24
2 3 10.2.3.1/24

将三个被测路由器与三个测试主机如上图所示相连,然后进行如下测试:

  • 连通性:首先在 PC0 上运行 ping -c 5 10.1.2.2 ,然后运行 sudo ping -c 1000 -i 0.01 10.1.2.2 。然后在 PC0 上运行 ping -c 5 10.2.2.2 ,接着运行 sudo ping -c 1000 -i 0.01 10.2.2.2 。最后在 PC1 上运行 ping -c 5 10.2.2.2 ,接着运行 sudo ping -c 1000 -i 0.01 10.2.2.2 。若上述三种情况后一命令丢包率均不超过 1‰ 则认定被测路由器在该拓扑下连通。
  • 故障恢复:移去 R0—R2 的链路,模拟链路发生故障,然后重复上述“连通性”测试。接着,恢复 R0—R2 的链路,然后重复上述“连通性”测试。

测试数据记录于下表:

被测路由器组号 连通性(1/0) 故障恢复(1/0)
0
1
2
3
4
5

IX 拓扑(ix) 将三个相同的被测路由器 R0 、 R1 及 R2 如下图所示互相连接,然后将这些被测路由器四个接口的 IP 地址按下表所示配置:

+-----------------------------------+
|              switch               |
|    0            1            2    |
+-----------------------------------+
     ↕            ↕            ↕
/---------\  /---------\  /---------\
|    0    |  |    0    |  |    0    |
|2  R0   3|  |2  R1   3|  |2  R2   3|
|    1    |  |    1    |  |    1    |
\---------/  \---------/  \---------/
     ↕            ↕            ↕
  +-----+      +-----+      +-----+
  | PC0 |      | PC1 |      | PC2 |
  +-----+      +-----+      +-----+
被测路由器编号 接口 IP 地址
0 0 10.255.255.1/24
0 1 10.0.1.1/24
0 2 10.0.2.1/24
0 3 10.0.3.1/24
1 0 10.255.255.2/24
1 1 10.1.1.1/24
1 2 10.1.2.1/24
1 3 10.1.3.1/24
2 0 10.255.255.3/24
2 1 10.2.1.1/24
2 2 10.2.2.1/24
2 3 10.2.3.1/24

将三个被测路由器与三个测试主机如上图所示相连,然后进行如下测试:

  • 连通性:首先在 PC0 上运行 ping -c 3 10.1.1.2 ,然后运行 sudo ping -c 1000 -i 0.01 10.1.1.2 。然后在 PC0 上运行 ping -c 3 10.2.1.2 ,接着运行 sudo ping -c 1000 -i 0.01 10.2.1.2 。最后在 PC1 上运行 ping -c 3 10.2.1.2 ,接着运行 sudo ping -c 1000 -i 0.01 10.2.1.2 。若上述三种情况后一命令丢包率均不超过 1‰ 则认定被测路由器在该拓扑下连通。

测试数据记录于下表:

被测路由器组号 连通性(1/0)
0
1
2
3
4
5

组间互联互通测试

本小节测试全班六组不同实现的六个路由器的互联互通性。测试基本思想与组内互联互通测试类似,但 R0~R5 分别使用每组的被测路由器。具体测试流程如下,测试时所有 PC 均连接 2 号接口:

环状拓扑 将所有组的被测路由器如下图所示互相连接,并将这些被测路由器四个接口的 IP 地址按下表所示配置,然后测试“连通性”以及“故障恢复”(测试时,每条链路移去并恢复一次):

R0<->R1<->R2<->R3<->R4<->R5
^                        ^
+------------------------+
被测路由器组号 接口 IP 地址
0 0 10.255.5.2/30
0 1 10.255.0.1/30
0 2 10.0.2.1/24
0 3 10.0.3.1/24
1 0 10.255.0.2/30
1 1 10.255.1.1/30
1 2 10.1.2.1/24
1 3 10.1.3.1/24
2 0 10.255.1.2/30
2 1 10.255.2.1/30
2 2 10.2.2.1/24
2 3 10.2.3.1/24
3 0 10.255.2.2/30
3 1 10.255.3.1/30
3 2 10.3.2.1/24
3 3 10.3.3.1/24
4 0 10.255.3.2/30
4 1 10.255.4.1/30
4 2 10.4.2.1/24
4 3 10.4.3.1/24
5 0 10.255.4.2/30
5 1 10.255.5.1/30
5 2 10.5.2.1/24
5 3 10.5.3.1/24

IX 拓扑 将所有组的被测路由器如下图所示互相连接,并将这些被测路由器四个接口的 IP 地址按下表所示配置,然后测试“连通性”:

S   W   I   T   C   H
  ↕  ↕  ↕  ↕  ↕  ↕
  R0 R1 R2 R3 R4 R5
被测路由器组号 接口 IP 地址
0 0 10.255.255.1/24
0 1 10.0.1.1/24
0 2 10.0.2.1/24
0 3 10.0.3.1/24
1 0 10.255.255.2/24
1 1 10.1.1.1/24
1 2 10.1.2.1/24
1 3 10.1.3.1/24
2 0 10.255.255.3/24
2 1 10.2.1.1/24
2 2 10.2.2.1/24
2 3 10.2.3.1/24
3 0 10.255.255.4/24
3 1 10.3.1.1/24
3 2 10.3.2.1/24
3 3 10.3.3.1/24
4 0 10.255.255.5/24
4 1 10.4.1.1/24
4 2 10.4.2.1/24
4 3 10.4.3.1/24
5 0 10.255.255.6/24
5 1 10.5.1.1/24
5 2 10.5.2.1/24
5 3 10.5.3.1/24

测试数据记录于下表:

拓扑 连通性(1/0) 故障恢复(1/0) 小包转发速率(Mpps) 吞吐率(Gbps)
环状拓扑 N/A N/A
IX 拓扑 N/A N/A N/A

最后更新: 2021年1月10日
作者: Harry Chen (2.84%), Wende Tan (97.16%)