linux+FBOSSFBOSS负责管理交换机ASIC并提供更高级别的远程API,转换为特定的ASIC SDK方法 。外部处理的包括管理、控制,路由、配置和监控流程 。下图说明了交换机中的FBOSS、其他软件进程和硬件组件 。请注意,在我们的生产环境部署中,FBOSS与我们的服务器共享相同的Linux环境(例如,操作系统版本、打包系统),因此我们可以在服务器和交换机上使用相同的系统工具和库 。
![开源交换机操作系统](http://img.jiangsulong.com/220410/1632213E6-0.jpg)
文章插图
FBOSS由多个互连组件组成,有这几大类:交换机软件开发工具包(SDK),HwSwitch,硬件抽象层,SwSwitch,状态观察器,本地配置生成器,Thrift管理接口和QSFP服务 。FBOSS代理是主进程,运行着FBOSS大部分功能。交换机SDK与FBOSS代理打包在一起并进行编译 。SDK由外部的交换机ASIC供应商提供 。除QSFP服务之外的所有其他组件(作为其独立进程运行)驻留在FBOSS代理内 。
![开源交换机操作系统](http://img.jiangsulong.com/220410/1632211061-1.jpg)
文章插图
交换机SDK 。交换机SDK是ASIC供应商提供的软件,它暴露出用于与底层ASIC功能交互的API 。这些API包括ASIC初始化、安装转发表规则和监听事件处理程序 。
HwSwitch 。 HwSwitch代表交换机硬件的抽象 。HwSwitch的接口提供了用于配置交换机端口、向这些端口发送和接收数据包、以及为端口上的状态更改和这些端口上发生的数据包输入/输出事件注册回调的通用抽象 。除了通用抽象之外,ASIC特定实现也被推送到硬件抽象层,允许与交换机硬件进行交换机无关的交互 。虽然不是一个完美的抽象,但FBOSS已被移植到两个ASIC系列,并且正在进行更多移植 。
状态观察器(State Observers) 。通过保持协议状态变化,SwSwitch可以实现ARP,NDP,LACP和LLDP等底层控制协议 。通过称为状态观察(State Observation)的机制向协议通知状态变化 。具体而言,任何对象在初始化时都可以将自身注册为状态观察者 。通过这样做,每个未来的状态更改都会调用对象提供的回调 。回调提供了对有问题的状态更改、允许对象做出相应的反应 。例如,NDP将自身注册为状态观察器,以便它可以对端口更改事件做出反应 。通过这种方式,状态观察机制允许协议实现与关于状态管理的问题分离 。
Thrift管理接口 。网络的配置管理平面是与网络分离的 。每个FBOSS实例都包含一个本地控制平面,运行如BGP等协议,在微服务器上通过Thrift管理接口与集中式网络管理系统进行通信 。FBOSS Thrift接口的完整开源规范可公开获取的 。鉴于可以修改接口以满足我们的需求,Thrift为我们提供了一种简单而灵活的方式来管理和操作网络,从而提高稳定性和高可用性 。
QSFP服务 。 QSFP服务管理一组QSFP端口 。该服务检测QSFP模块的插入或移除、读取QSFP产品信息(例如制造商)、控制QSFP硬件功能(即改变功率配置)、监视QSFP模块 。FBOSS最初在FBOSS代理内部拥有QSFP服务 。但是随着该服务的不断发展,我们必须重新启动FBOSS代理和交换机来应用更改 。因此,我们将QSFP服务分离为一个单独的流程,以提高FBOSS的模块性和可靠性 。因此,FBOSS代理更可靠,因为QSFP服务中的任何重新启动或错误都不会直接影响代理 。但是由于QSFP服务是一个单独的进程,因此需要单独的工具进行打包、部署和监控 。此外,现在需要在QSFP服务和FBOSS代理之间进行精细的进程同步 。
状态管理 。FBOSS的软件状态管理机制专为高并发、快速读取和简单安全的更新而设计 。状态被建模为版本化的copy-on-write (写时复制)树 。树的根是主交换机状态类,根的每个子节点代表交换机状态的不同类别,例如端口或VLAN条目 。当树的一个分支发生更新时,如果有必要,将会复制并更新分支中一直到根的每个节点 。下图说明了由VLAN ARP表条目更新调用的交换机状态更新过程 。我们可以看到只重建了从修改后的ARP表到根目录的节点和链接 。在创建新树时,FBOSS代理仍然与先前的状态交互,而不需要捕获任何状态上的锁 。一旦完成整个树的copy-on-write过程,FBOSS将从新的交换机状态进行读取 。
![开源交换机操作系统](http://img.jiangsulong.com/220410/1632211U3-2.jpg)
文章插图
硬件特定状态 。硬件状态是保留在ASIC内部的状态 。每当需要在软件中更新硬件状态时,软件必须调用交换机SDK以检索新状态 。FBOSS HwSwitch在硬件状态的相应部分上获得读锁和写锁,直到更新完成 。基于锁定的状态更新的选择可能因SDK实现而异 。
推荐阅读
- 计算机网络安全知识点
- 交换机链路聚合最常用场景分析,记住一张表格即可
- cisco思科交换机命令参考大全,分享给个别需要的盆友们
- CPU处理器|打破x86/ARM垄断!中科院RISC-V开源处理器“香山”新归属敲定
- 开源免费的多功能数据库管理软件DBeaver
- 使用Linux操作系统的网络安全:您需要知道的一切
- 解决64位操作系统为Oracle服务器配置ODBC的问题
- 9大顶级开源云管理平台
- 如何实现交换机不同VLAN、不同网段之间互访?
- Deepin-linux操作系统下的tex文件的常用的编辑器介绍和安装