实验评测技术方案¶
至此,实验者应当已经全面完成硬件路由器的全部软硬件设计与实现,本节阐述本实验评测的具体技术方案。实验评测将会充分测试实验者路由器的如下功能和性能指标:
- 连通性:接入路由器的主机之间两两连通
- 吞吐率
- (小包)转发速率
- 转发延迟
- 路由表容量
值得注意的是,实际路由器的如下特性也同样重要,但在本实验中暂不进行测试:
- 路由表更新速率:全网路由表在按一定的速率持续更新,路由器需要为此提供支持
- 路由器软件的内存安全问题,以及其他安全问题
- 其他功能和性能指标
后文将实验者路由器称为被测路由器。进行后文测试时,同组的被测路由器应当使用相同的硬件设计和软件设计,仅允许软件中 IP 地址和/或 MAC 地址的配置有所不同。同时,为加快路由收敛,被测路由器 RIP 路由协议的定时器参数选取为:更新定时器为 3 秒,超时定时器为 30 秒,垃圾回收定时器为 30 秒,与 RFC 文档规定不同。
此外,测试者进行评测时需要注意为实验者拍摄照片、录像并保存。
单路由器功能与性能测试¶
本小节测试单路由器的功能(转发正确性及基本的稳定性)以及性能(转发表容量、转发速率及吞吐率),测试流程为:
首先,将被测路由器四个接口的 Link-Local 地址和直连路由按下表所示配置。MAC 地址按附件 mac-assignment.txt
配置(下同)。
接口 | Link-Local 地址 | 直连路由 |
---|---|---|
0 | fe80::1/64 |
2a0e:aa06:497::/64 |
1 | fe80::1/64 |
2a0e:aa06:497:1::/64 |
2 | fe80::1/64 |
2a0e:aa06:497:2::/64 |
3 | fe80::1/64 |
2a0e:aa06:497:3::/64 |
网络测试仪以及测试主机的 IP 地址相应配置(下同),测试主机默认路由(或 2a0e:aa06:497::/48
的路由)的下一跳 IP 地址修改为与其相连的被测路由器相应接口的 IP 地址。
将被测路由器四个接口与网络测试仪四个接口两两相连,然后进行如下测试:
- 转发正确性及路由表容量:给定一张路由表,在网络测试仪的所有接口上运行标准 RIP 路由协议,网络测试仪向被测路由器的对应接口广播路由信息,同时在所有接口接收被测路由器广播的路由信息。通过将收到的路由信息与网络测试仪最初广播的路由信息比较,可以初步判断被测路由器能否接受该路由表。进一步,对于路由表中每一条路由,网络测试仪在该路由的网络前缀中随机选择 1 个 IP 地址(需确保该 IP 地址经过路由表最长前缀匹配后,仍然匹配到该路由;若不存在这样的 IP 地址,则说明该路由被前缀长度更长的路由完全覆盖,此时跳过该路由的测试),生成目标 IP 地址为该地址的 IP 分组,并向被测路由器的某个接口发送(该接口应当不同于该路由的下一跳接口),然后尝试从该路由的下一跳接口接收这一 IP 分组。若成功接收,说明被测路由器能够正确转发目标 IP 地址为该网络前缀的 IP 分组。若被测路由器能够转发该路由表中所有网络前缀对应的 IP 分组,认为被测路由器能够正确接受该路由表。通过改变给定路由表的大小(依次选择附件
fib_shuffled.txt
中路由表的前 1、2、3、 ... 、5000、 ... 项,或采用二分的方法),即可测试被测路由器能够接受的最大的路由表,其大小认定为被测路由器的路由表容量。如此选择路由表,可以保证路由表前缀长度的分布与互联网全网路由表的分布基本相同。 - 基本的稳定性:给定一张恰好占满被测路由器的路由表(即大小为被测路由器路由表容量的路由表),在网络测试仪的所有接口上运行标准 RIP 路由协议。若被测路由器正常运行超过 5 分钟,则认定被测路由器具有基本的稳定性。
- (小包)转发速率及吞吐率:给定一张恰好占满被测路由器的路由表(即大小为被测路由器路由表容量的路由表),在网络测试仪的所有接口上运行标准 RIP 路由协议,将路由信息发送给被测路由器。后续测试时,网络测试仪可以暂时关闭 RIP 协议,防止其干扰测试流量。此时,给定 IP 分组大小,网络测试仪同时向被测路由器所有接口连续不断发送该大小的测试 IP 分组。其中,每个测试 IP 分组的目标 IP 地址随机生成,并确保所有接口的测试 IP 分组不会在被测路由器的任何一个出接口拥塞(即发往不同接口的测试 IP 分组的下一跳接口各不相同)。发送时,网络测试仪分别记录每个接口的统计信息,包括发送字节数及发送分组数。同时,网络测试仪从被测路由器所有接口接收 IP 分组并进行正确性校验,并分别记录每个接口的统计信息,包括接收正确字节数、接收正确分组数及接收错误分组数。此外,网络测试仪记录测试的持续时间。所有接口每秒接收正确的分组数之和认定为该分组大小下的转发速率。通过改变分组大小(如 46、128、256、512、1024、1500 字节),绘制“IP 分组大小—转发速率”图线以及“IP 分组大小—吞吐率”图线,其中,吞吐率 = (IP 分组大小 + 38) × 转发速率。IP 分组大小为 46 字节时的转发速率认定为被测路由器的小包转发速率;不同 IP 分组大小下的吞吐率的最小值认定为被测路由器的吞吐率。
- 转发延迟:在上述测试时同时测量转发延迟,并记录。
若被测路由器的小包转发速率达到或超过 5.9519Mpps,且吞吐率达到或超过 3.99995Gbps,则认定该被测路由器能够线速转发。
此外,网络测试仪保证将整个路由表分散在其发送定时器的整个周期内均匀发送,或限制其每个接口的 RIP 报文发送速率不超过 0.5Mbps(若通过 RIP 路由协议每 3 秒发送 5000 条路由,所需的速率大约为 278.507kbps),防止发送过快导致被测路由器无法及时处理。
测试数据记录于下表:
被测路由器组号 | 路由表容量(条) | 小包转发速率(Mpps) | 吞吐率(Gbps) |
---|---|---|---|
0 | |||
1 | |||
2 | |||
3 | |||
4 | |||
5 |
组内互联互通测试¶
本小节测试相同实现的三个路由器的互联互通性(如是否能正确交换路由信息,或是否能连续逐跳转发),测试流程为:
地址配置 将三个相同的被测路由器准备好,这些被测路由器四个接口的 Link-Local 地址可以配置为任意合法值,但是,这些 Link-Local 地址需要各不相同,这是因为在后续各种拓扑的测试中,某些接口可能被接入同一链路。然后,将这些被测路由器四个接口的直连路由按下表所示配置:
被测路由器编号 | 接口 | 直连路由 |
---|---|---|
0 | 0 | 2a0e:aa06:497::/64 |
0 | 1 | 2a0e:aa06:497:1::/64 |
0 | 2 | 2a0e:aa06:497:2::/64 |
0 | 3 | 2a0e:aa06:497:3::/64 |
1 | 0 | 2a0e:aa06:497:100::/64 |
1 | 1 | 2a0e:aa06:497:101::/64 |
1 | 2 | 2a0e:aa06:497:102::/64 |
1 | 3 | 2a0e:aa06:497:103::/64 |
2 | 0 | 2a0e:aa06:497:200::/64 |
2 | 1 | 2a0e:aa06:497:201::/64 |
2 | 2 | 2a0e:aa06:497:202::/64 |
2 | 3 | 2a0e:aa06:497:203::/64 |
此后各种拓扑的测试均采用这一配置。
环状拓扑(ring) 将三个相同的被测路由器 R0、R1 及 R2 如下图所示互相连接:
/---------\ /---------\
+-----+ | 3 | | 3 | +-----+
| PC0 |<--->|2 R0 1|<--->|0 R1 2|<--->| PC1 |
+-----+ | 0 | | 1 | +-----+
\---------/ \---------/
^ ^
| /---------\ |
| | 3 | |
\->|1 R2 0|<-/
| 2 |
\---------/
^ +-----+
+->| PC2 |
+-----+
将三个被测路由器与三个测试主机如上图所示相连,然后进行如下测试:
- 连通性:首先在 PC0 上运行
ping -c 5 2a0e:aa06:497:102::2
,然后运行sudo ping -c 1000 -i 0.01 2a0e:aa06:497:102::2
。然后在 PC0 上运行ping -c 5 2a0e:aa06:497:202::2
,接着运行sudo ping -c 1000 -i 0.01 2a0e:aa06:497:202::2
。最后在 PC1 上运行ping -c 5 2a0e:aa06:497:202::2
,接着运行sudo ping -c 1000 -i 0.01 2a0e:aa06:497:202::2
。若上述三种情况后一条命令丢包率均不超过 1‰ 则认定被测路由器在该拓扑下连通。测试时注意观察 hop limit(下同)。 - 小包转发速率及吞吐率(可选,下同):将 PC0 以及 PC2 替换为网络测试仪,可以简单地测试被测路由器在该拓扑下的小包转发速率及吞吐率。
- 故障恢复:移去 R0—R2 的链路,模拟链路发生故障,然后重复上述“连通性”及“小包转发速率及吞吐率”测试。接着,恢复 R0—R2 的链路,然后重复上述“连通性”及“小包转发速率及吞吐率”测试。测试时注意观察连通性恢复时长以及 hop limit 变化。
测试数据记录于下表:
被测路由器组号 | 连通性(1/0) | 故障恢复(1/0) |
---|---|---|
0 | ||
1 | ||
2 | ||
3 | ||
4 | ||
5 |
IX 拓扑(ix) 将三个相同的被测路由器 R0、R1 及 R2 如下图所示互相连接:
+-----------------------------------+
| switch |
| 0 1 2 |
+-----------------------------------+
↕ ↕ ↕
/---------\ /---------\ /---------\
| 0 | | 0 | | 0 |
|1 R0 3| |1 R1 3| |1 R2 3|
| 2 | | 2 | | 2 |
\---------/ \---------/ \---------/
↕ ↕ ↕
+-----+ +-----+ +-----+
| PC0 | | PC1 | | PC2 |
+-----+ +-----+ +-----+
将三个被测路由器与三个测试主机如上图所示相连,然后进行如下测试:
- 连通性:首先在 PC0 上运行
ping -c 3 2a0e:aa06:497:101::2
,然后运行sudo ping -c 1000 -i 0.01 2a0e:aa06:497:101::2
。然后在 PC0 上运行ping -c 3 2a0e:aa06:497:201::2
,接着运行sudo ping -c 1000 -i 0.01 2a0e:aa06:497:201::2
。最后在 PC1 上运行ping -c 3 2a0e:aa06:497:201::2
,接着运行sudo ping -c 1000 -i 0.01 2a0e:aa06:497:201::2
。若上述三种情况后一条命令丢包率均不超过 1‰ 则认定被测路由器在该拓扑下连通。
测试数据记录于下表:
被测路由器组号 | 连通性(1/0) |
---|---|
0 | |
1 | |
2 | |
3 | |
4 | |
5 |
组间互联互通测试¶
本小节测试全班六组不同实现的六个路由器的互联互通性。测试基本思想与组内互联互通测试类似,但 R0~R5 分别使用每组的被测路由器。具体测试流程如下,测试时所有 PC 均连接 2 号接口:
地址配置 将所有组的被测路由器准备好,这些被测路由器四个接口的 Link-Local 地址可以配置为任意合法值,但是,这些 Link-Local 地址需要各不相同,这是因为在后续各种拓扑的测试中,某些接口可能被接入同一链路。然后,将这些被测路由器四个接口的直连路由按下表所示配置:
被测路由器组号 | 接口 | 直连路由 |
---|---|---|
0 | 0 | 2a0e:aa06:490::/64 |
0 | 1 | 2a0e:aa06:490:1::/64 |
0 | 2 | 2a0e:aa06:490:2::/64 |
0 | 3 | 2a0e:aa06:490:3::/64 |
1 | 0 | 2a0e:aa06:491::/64 |
1 | 1 | 2a0e:aa06:491:1::/64 |
1 | 2 | 2a0e:aa06:491:2::/64 |
1 | 3 | 2a0e:aa06:491:3::/64 |
2 | 0 | 2a0e:aa06:492::/64 |
2 | 1 | 2a0e:aa06:492:1::/64 |
2 | 2 | 2a0e:aa06:492:2::/64 |
2 | 3 | 2a0e:aa06:492:3::/64 |
3 | 0 | 2a0e:aa06:493::/64 |
3 | 1 | 2a0e:aa06:493:1::/64 |
3 | 2 | 2a0e:aa06:493:2::/64 |
3 | 3 | 2a0e:aa06:493:3::/64 |
4 | 0 | 2a0e:aa06:494::/64 |
4 | 1 | 2a0e:aa06:494:1::/64 |
4 | 2 | 2a0e:aa06:494:2::/64 |
4 | 3 | 2a0e:aa06:494:3::/64 |
5 | 0 | 2a0e:aa06:495::/64 |
5 | 1 | 2a0e:aa06:495:1::/64 |
5 | 2 | 2a0e:aa06:495:2::/64 |
5 | 3 | 2a0e:aa06:495:3::/64 |
此后各种拓扑的测试均采用这一配置。
环状拓扑 将所有组的被测路由器如下图所示互相连接,然后测试“连通性”以及“故障恢复”(测试时,每条链路移去并恢复一次):
R0<->R1<->R2<->R3<->R4<->R5
^ ^
+------------------------+
IX 拓扑 将所有组的被测路由器如下图所示互相连接,然后测试“连通性”:
S W I T C H
↕ ↕ ↕ ↕ ↕ ↕
R0 R1 R2 R3 R4 R5
测试数据记录于下表:
拓扑 | 连通性(1/0) | 故障恢复(1/0) | 小包转发速率(Mpps) | 吞吐率(Gbps) |
---|---|---|---|---|
环状拓扑 | N/A | N/A | ||
IX 拓扑 | N/A | N/A | N/A |
真实互联网测试¶
在组间互联互通测试的两种拓扑的基础上,将测试者 PC 加入到网络中,并对测试网络发布默认路由、对互联网发布测试网络的所有前缀(可以以聚合的形式发布),使得测试网络接入互联网。
然后,将主机的 DNS 服务器地址配置为:
2606:4700:4700::1111
2001:4860:4860::8888
最后,进行如下测试:
- 访问 https://bgp.he.net/ ,查看网页是否加载正常。
- 运行
traceroute -6 bgp.he.net
命令,查看路由是否正常。 - 从 https://mirrors6.tuna.tsinghua.edu.cn/ 下载文件,观察传输速率是否正常。
- 测试其他常用网络功能是否正常。