FBOSS 是 Facebook 用于控制和管理网络交换机的软件堆栈。
FBOSS 由许多用户空间应用程序、库和实用程序组成。
FBOSS 的最初开源版本主要由代理守护程序组成,但我们也正在努力发布其他部分和功能。
FBOSS 的核心部分之一是代理守护进程,它在每个交换机上运行,并控制硬件转发 ASIC。 Agent守护进程向硬件发送转发信息,并实现一些控制平面协议,例如ARP和NDP。该代理提供用于管理路由的 Thrift API,以允许外部路由控制进程将其路由信息编程到硬件转发表中。
代理的代码可以在 fboss/agent 中找到
代理需要 JSON 配置文件来指定其端口和 VLAN 配置。一些示例配置文件可以在 fboss/agent/configs 下找到。这些文件并不是真正供人类使用的——在 Facebook,我们有工具可以为我们生成这些文件。
FBOSS 代理管理硬件 ASIC 中的转发表,但需要通过 Thrift API 获知当前路由。
我们最初的开源版本尚不包含能够与代理通信的路由协议守护进程。我们在 Facebook 使用的路由协议守护程序对于我们的环境来说是相当特定的,并且可能对开源社区没有那么有用。对于 Facebook 之外的更一般用途,应该可以修改现有的开源路由工具来与 FBOSS 代理对话,但我们尚未实现这一点。与此同时,我们在 fboss/agent/tools 中包含了一个小示例 python 脚本,可以手动添加和删除路由。
显然,需要额外的工具和实用程序来与 FBOSS 代理交互、报告其状态、生成配置文件和调试问题。
目前,我们还没有准备好许多可供开源发布的工具,但我们希望在未来几周内提供更多这些工具。同时,thrift编译器可以自动生成python-remote脚本,以允许手动调用代理的各种thrift接口。
有关如何构建 FBOSS 的说明,请参阅 BUILD.md 文档。
FBOSS 专为满足 Facebook 数据中心网络的需求而设计,但我们希望它也能对更广泛的社区有用。但请注意,FBOSS 的初始版本可能需要修改和额外开发,以支持 Facebook 使用的功能之外的其他网络配置。在 FBOSS 更加成熟之前,它的主要兴趣可能是网络软件开发人员,而不是希望将其用作统包解决方案的网络管理员。
我们期待得到社区的反馈,并且希望 FBOSS 能够成为其他希望对网络交换机进行编程的用户的起点。
Facebook 正在进行 FBOSS 开发,我们计划继续发布更多组件、附加功能以及对现有工具的改进。
请参阅许可证。