Bird网络路由技术简介

互联网路由是一个非常神秘、然而却无所不在的基础平台。或许我们对随手点击转跳网页以及手机应用App无所不能已经习以为常,很少有人会想到这些数据是如何正确流动的。

对于复杂的三层/四层 TCP/IP路由,已经不是简单的局域网二层网络技术能够支持的,涉及到不同网络的互相发现和数据跨域传递,需要对TCP/IP协议有深入学习和了解。

开源路由软件栈

最早的开源路由协议栈软件是GNU组织开发的 Zebra 软件(已停止开发),在Zebra基础上又Fork出了 Quagga ,目前是学习研究路由协议的主要软件栈。Quagga也被很多公司用于内部研究和再开发(但是很少有对外发布,所以这些公司内部自研并不违反GPL)。

备注

Zebra和Quagga并没有实现所有的路由协议,但由于实现非常精简且支持主要协议,所以是学习研究的很好软件平台。

BIRD(BIRD Internet Routing Daemon)是比Quagga(Zebra)更为复杂和全面的路由软件堆栈,也是最为主流的路由软件。BIRD完整实现了全功能IP动态路由,并且基于GPL协议,面向主流Linux,FreeBSD以及其他UNIX系统。

由于BIRD实现功能丰富且完备,目前除了商业的Cisco/Junipter占据主要路由网络市场外,BIRD可能是最主要的开源替代,有大量的互联网交换(Internet exchanges)企业使用BIRD来构建核心路由(BIRD可能占据了互联网一半的骨干网络)。

  • London Internet Exchange (LINX), LONAP, DE-CIX 和 MSK-IX 这些互联网骨干交换中心都使用BIND作为路由服务器

  • Netflix(流媒体巨头),Equinix(世界最大数据中心和基础架构服务上),Amazon(Twitch游戏平台),甚至思科也将BIRD作为可选解决方案提供给客户

  • 2012年Euro-IX调查显示,BIRD是欧洲互联网交换使用最多的路由服务器

Kubernetes网络 解决方案中,企业级的 Calico网络Cilium网络 都选择BIRD作为路由解决基础架构。也就是说,如果需要实现超大规模多Kubernetes集群的容器网络路由,BIRD是生产级别的解决方案。

虽然BIRD功能丰富,但是其性能也非常卓越,在性能测试中,不论是小规模网络还是大规模复杂路由,其性能都不弱于 FRRouting (从Quagga项目Fork出来的开源路由软件)。

BIRD特色

  • 简明的配置文件 /etc/bird.conf 采用脚本语言配置,语法类似JunOS (Junipter)

参考