真正理解fboss,要从它处理的任务开始:Face@book 开放交换系统 用于控制网络交换机的软件。在日常自动化场景里,常见问题是输入边界、依赖和失败处理如果不清楚就很难稳定复用,这正是评估时需要盯住的地方。试跑可以从用一项范围明确的真实任务完成最小试跑开始,并把配置时间、输出质量、异常信息和维护痕迹写进验收记录。它更像给愿意先做小范围验证并复查原始文档的团队准备的可审查方案,是否长期使用应由试跑数据决定。
Face@book开放交换系统(FBOSS)
FBOSS 是 Face@book 用于控制和管理网络的软件堆栈 开关。
组件
FBOSS 由许多用户空间应用程序、库和 公用事业。
FBOSS 最初的开源版本主要由代理组成 守护进程,但我们正在努力发布额外的部分和功能 好吧。
代理守护进程
FBOSS 的核心部分之一是代理守护进程,它运行在每个 开关,并控制硬件转发ASIC。 代理守护进程发送 将信息转发到硬件,并实现一些控制平面 协议如 ARP 和 NDP。 代理提供thrift APIs用于管理 路由,允许外部路由控制进程获取其路由 信息被编程到硬件转发表中。
代理代码可以在 fboss/agent 中找到
代理需要 JSON 配置文件来指定其端口和 VLAN 配置。 一些示例配置文件可以在下面找到 fboss/agent/configs。 这些文件并不是真正适合人类的 消费——在 Face@book,我们拥有为我们生成这些文件的工具。
路由守护进程
FBOSS 代理管理硬件 ASIC 中的转发表,但它 需要通过thrift APIs获知当前路线。
我们最初的开源版本尚不包含路由协议守护进程 能够与代理交谈。 我们使用的路由协议守护进程 Face@book 对于我们的环境来说是相当特定的,并且可能不会那么有用 到开源社区。 对于 Face@book 之外的更一般用途,它 应该可以修改现有的开源路由工具来与 FBOSS代理,但我们还没有实现这个。 与此同时,我们有 fboss/agent/tools 中包含一个小示例 python 脚本,可以手动 添加和删除路线。
管理工具
显然,需要额外的工具和实用程序来与 FBOSS代理,报告其状态,生成配置文件,以及 调试问题。
目前我们还没有准备好很多工具来开源发布, 但我们希望在未来几周内提供更多此类服务。 在 同时,thrift编译器可以自动生成python-remote脚本 允许手动调用代理的各种 Thrift 接口。
建筑
有关如何构建 FBOSS 的说明,请参阅 BUILD.md 文档。
未来发展
FBOSS 专为处理 Face@book 数据的需求而设计 中心网络,但我们希望它对更广泛的社区也有用。 但是,请注意,FBOSS 的初始版本可能需要 修改和额外开发以支持其他网络配置 超出了 Face@book 使用的功能。 在它更加成熟之前,FBOSS 可能会 主要是网络软件开发人员感兴趣,而不是网络 希望将其用作交钥匙解决方案的管理员。
我们期待得到社区的反馈,希望FBOSS能够 作为其他希望进行网络编程的用户的起点 开关。
Face@book 正在进行 FBOSS 开发,我们计划继续发布 更多组件、附加功能以及对现有工具的改进。