评测
网络拓扑¶
在 TANLabs 提交后,会在实验室的实验网络下进行真机评测。你的软件会运行在树莓派上,和平台提供的机器组成如下的拓扑:
这一阶段,R1 由 TANLabs 自动配置和提供,你代码所运行在的树莓派处于 PC1 和 R2 的位置。其中 PC1 运行 TFTP 客户端,R2 运行 TFTP 服务端。
初始状态下,R2 配置如下的路由:
fd00::1:0/122 dev r1pc1 scope link
fd00::3:0/122 dev r1r2 scope link
检查内容¶
评测时 TANLabs 将会自动逐项检查下列内容:
- 配置网络拓扑,在 R2 上运行标准 TFTP 服务器程序。
- (15% 分数)测试你写的 TFTP 客户端从标准 TFTP 服务端下载文件,在 R2 上创建文件
test2
,在 PC1 上运行client get fd00::3:2 test2
,判断 PC1 上test2
内容是否与 R2 上一致。期望输出:文件内容正确,diff 为空。 - (15% 分数)测试你写的 TFTP 客户端向标准 TFTP 服务端上传文件,在 PC1 上创建文件
test3
,在 PC1 上运行client put fd00::3:2 test3
,判断 R2 上test3
内容是否与 PC1 上一致。期望输出:文件内容正确,diff 为空。 - 停止 R2 上的标准 TFTP 服务器,在 R2 上运行你写的 TFTP 服务端。
- (15% 分数)测试标准 TFTP 客户端从你写的 TFTP 服务端下载文件,在 R2 上创建文件
test5
,在 PC1 上运行echo "get test5" | tftp fd00::3:2
,判断 PC1 上test5
内容是否与 R2 上一致。期望输出:文件内容正确,diff 为空。 - (15% 分数)测试标准 TFTP 客户端向你写的 TFTP 服务端上传文件,在 PC1 上创建文件
test6
,在 PC1 上运行echo "put test6" | tftp fd00::3:2
,判断 R2 上test6
内容是否与 PC1 上一致。期望输出:文件内容正确,diff 为空。 - (15% 分数)测试你写的 TFTP 客户端从你写的 TFTP 服务端下载文件,在 R2 上创建文件
test7
,在 PC1 上运行client get fd00::3:2 test7
,判断 PC1 上test7
内容是否与 R2 上一致。期望输出:文件内容正确,diff 为空。 - (15% 分数)测试你写的 TFTP 客户端从你写的 TFTP 服务端上传文件,在 PC1 上创建文件
test8
,在 PC1 上运行client put fd00::3:2 test8
,判断 R2 上test8
内容是否与 PC1 上一致。期望输出:文件内容正确,diff 为空。 - (10% 分数)测试你写的 TFTP 客户端从你写的 TFTP 服务端下载文件的性能(根据端到端 wall time 时间计算)。期望输出:输出了运行时间。
代码量:实现客户端约 170 行,实现服务端约 310 行。
设传输速度为 \(s\),所有同学中传输速度最大值为 \(s_{max}\),则性能分数 \(S\) 为:
\[
S = S_{total} \times e^{c \times (s/s_{max}-1)}
\]
其中 \(c\) 为未知常数。由于性能会计入分数,请在通过所有功能测试后,检查一下是否删除了不必要的影响性能的调试代码。
容易出错的地方
- 字节序;
- 分组长度的计算;
- 目的 MAC 地址出错。
如何提升文件传输性能?
你可以按照代码的框架进行分析,在测试文件传输性能的时候,代码中哪些部分的执行次数最多,然后估计哪些部分的占用时间最长,然后针对这部分进行优化。
最后更新:
2023年5月7日
作者: