跳转至

课程要求

课程实验分为如下两个部分:编程作业和真机评测。总代码量约 400 行。

编程作业:校历第 4 周 - 第 9 周周日(2024 年 4 月 28 日)22:00:00

真机评测(单人):校历第 10 周 - 第 12 周周日(2024 年 5 月 19 日)22:00:00

真机评测(互联):校历第 13 周 - 第 14 周周日(2024 年 6 月 2 日)22:00:00

以上截止时间都以东八区(UTC+8)为准。在截止时间之前,你需要提交代码、完成评测并且标记最终提交。如果不标记最终提交,则以截止时间前最后一次评测结果为准。如果未能在截止时间前完成,可以在实验平台上指定补交的评测结果,但会扣除分数。扣除后的分数计算规则如下:

\[ S' = S \times \min(0.8, 0.95^D) \]

其中 \(S\) 是作业原始得分, \(D\) 是向上取整的迟交天数(即 deadline 后 24 小时内都记为迟交一天)。

编程作业

目前,一共包括四个编程实验如下(总代码量约 220 行):

  • eui64:基于 EUI64 构造 IPv6 Link Local 地址,代码量约 10 行
  • internet-checksum:进行 UDP 和 ICMPv6 校验和的检验和计算,代码量约 80 行
  • lookup:路由表的查询和更新,代码量约 60 行
  • protocol-ospf/protocol:OSPF/RIPng 协议的处理,代码量约 70 行

你需要在 TANLabs 上登录,并且在网站上创建属于你的作业 GitLab 仓库。你需要使用 Git 往你的作业仓库中提交你的代码,然后在 TANLabs 查看评测结果。评测的流程和要求详见 TANLabs 网站上的说明。

编程作业占实验的 20% 分数。参加硬件路由器实验(计网联合实验)的同学也需要完成编程实验(并得到这一部分满分)。每个实验占四分之一的编程作业分数,每个实验的所有数据点均分分数。你需要标注一次提交作为最终提交来计算最终成绩,这一部分的分数可以在 TANLabs 上看到。

真机评测

第二部分,你需要在以下四个选项中,选择一个完成:

  1. 实现 OSPF 协议的路由器(推荐)
  2. 实现 RIPng 协议的路由器
  3. 实现 DHCPv6 协议的路由器
  4. 实现 TFTP 协议的客户端和服务端

真机评测占实验的 80% 分数。个人评测和互联评测各占 真机评测 分数的一半(即各占 40%)。你需要在 TANLabs 上标记你的最终评测,每次评测会显示各项评测的原始结果,但不提供分数。

和编程作业一样,你也需要把代码提交到 GitLab 上,然后在 TANLabs 上进行远程的树莓派的评测,分为个人和互联两种评测方法。

实现 OSPF 协议路由器(推荐)

你需要基于编程作业的代码,修改 Homework/ospf/main.cpp,实现一个支持 OSPF 协议的路由器。总代码量约 125 行。

特点:理解难度最大,代码量最小。

实现 RIPng 协议路由器

你需要基于编程作业的代码,修改 Homework/router/main.cpp,实现一个支持 RIPng 协议的路由器。总代码量约 185 行。

特点:理解难度较大,代码量较小。

实现 DHCPv6 协议服务器

你需要基于编程作业的代码,修改 Homework/dhcpv6/main.cpp,实现一个支持 DHCPv6 协议的服务器。总代码量约 195 行。

特点:理解难度中等,代码量中等。

实现 TFTP 协议的客户端和服务端

你需要基于编程作业的代码,修改 Homework/tftp/client.cppHomework/tftp/server.cpp,实现一个 TFTP 协议的客户端和服务端。总代码量约 480 行。

特点:理解难度最低,代码量最大。


最后更新: 2024年2月25日
作者:Jiajie Chen (87.69%), Wende Tan (1.54%), Haixuan Tong (10.77%)

评论