11 月 4 日(北京时间,下同),我院常务副院长(正院级)、网络学部院士 Soha 在进行 Juniper 网络设备与 BIRD(BIRD Internet Routing Daemon,下同)互操作验证、在 GRE 隧道(点对点链路)使用 OSPFv3 宣告 IPv4 单播路由时发现,Juniper 设备工作正常而 BIRD 认为 Juniper 设备不可达。Soha 院士随即与近期刚通读 OSPFv2/OSPFv3 有关的各类 RFC 的我院院长、网络学部院士 twd2 对该问题进行调查。
经过调试研究,两位院士发现在此场景下,BIRD 认为 Juniper 设备不可达的原因是 Juniper 设备对于点对点链路发送的 Link LSA 中的链路本地地址为 0,从而无法解析下一跳。RFC 中并没有对此情况(即如何填写非 IPv6 地址簇实例的 Link LSA 中的链路本地地址)进行规定。而对于点对点链路来说,不需要下一跳地址、直接将 IP 分组发送到该链路的接口上是可行的。因此,Soha 院士在 BIRD 中对下一跳解析的环节新增了一个判断:若链路类型为点对点,则直接使用该链路的接口作为下一跳。这也是 Juniper 设备对于这种场景的做法。
11 月 9 日,上述 patch 已被 BIRD 负责 OSPF 维护的 Ondřej Zajíček 合并进了 BIRD 主线[1]。这标志着我院 Soha 院士作为第一作者、twd2 院士作为第二共同第一作者,正式成为了 BIRD 的贡献者,为世界计算机网络互联基础设施做出了贡献。同时,我院网络学部总工程师 Nick Cao 于之前提交的对 BIRD 中 Babel 协议实现的改进(patch 第 3 版)也正在被维护者 Ondřej Zajíček 审阅,目前已获得了其认可,之后也有极大可能会被合并进主线。
这是我院首次在路由协议软件中做出贡献。此前,我院曾多次向 Linux 内核、LLVM 编译器、GCC 编译器、gem5 模拟器、Rocket 处理器核等开源软硬件社区提交过多份 patch 并获得接收。希望我院各位同志能再接再厉,为开源世界贡献更多力量。
[1]: https://gitlab.nic.cz/labs/bird/-/commit/31aa62ae6d2e111e87c08b4b27a16ead968f0689