Sun's Blog

bird 2.0.9版本babel protocol bug

时间: 分类: 系统应用

2022-02-20 bird发布了2.0.9版本,增加了些功能和修复了一些已知bug.于是我下载新的bird在一个机器安装,make后暂时我未发现任何异常,但是过了几分钟后我发现IGP路由居然消失了,同时消失的还有IGP邻居。

我傻眼后立即查看新版文档,由于我使用babel协议做为我的IGP路由,看到文档后发现Babel新增了一个 MAC authentication support,心想是不是新版babel与我的旧版2.0.8的babel不兼容导致,于是我又新装了一个机器,很遗憾的是这两个新版本的bird之间依然看不到babel 路由和邻居。

这个时候我怀疑bird 2.0.9可能有bug,于是我去DN42 IRC去咨询DN42管理员burble大佬,大佬似乎有点不信说应该会向下兼容,而且新增的babel协议验证默认是关闭的。大佬也没使用babel协议,我的问题burble也无能为力。

那下来只能去bird的mail-list去寻求解决方法了,我发了邮件到bird mail-list,邮件内容告知我遇到的babel协议问题,并贴上了我的配置文件说明2.0.8版本是正常的。 bird作者Maria Matejka很快回复了说经过他的本地测试,没发现我所说的问题,并要求我提供一个配置。我提供后几天作者也没回复。

然后我每天看下bird的mail-list 直到几天后有人又发了个babel协议相关的bug。人家提出的bug说birdc configure后babel的接口会消失(后来DN42中文群主lantian也提到这个bug)看来跟我的bug似乎毫无关联,但是实际上是一回事。后来作者修复的代码证实是babel新增的mac验证代码写反了导致bird的babel协议工作不正常。

    -    if (ic && iface_is_valid(p, iface))
    +    if (ic && !iface_is_valid(p, iface))

最后总结下,如果和我一样使用bird的babel协议做为IGP内部路由。官方的bird 2.0.9 release包甚至是系统自带的package包是有问题的,很可能官方不会重新发布release包,那么该bug会一直存在于官方的release包。

不过官方反应还算迅速,及时在其git库更新代码,请使用git版本的源码或者修改官方release包中的proto/babel/babel.c代码编译安装。
https://gitlab.nic.cz/labs/bird/-/commit/fcb4dd0c831339c4374ace17d8f2ae6ebfeed279

Powered by Typecho | Web ui: Layui