得益于开源软件,我们现在可以控制和修改 IT 系统中几乎每个组件的行为。我们可以修改从内核中的网络堆栈到用户空间中的 Web 服务器代码的所有内容,以进行改进或实现新功能。
完全控制我们的硬件和软件堆栈的最后一个障碍是物理网络硬件。这些设备通常由我们喜爱的开源工具构建,但它们被呈现为黑匣子,网络运营商无法轻易修改。
诸如 OpenFlow 和 P4 等开放标准承诺通过可编程 API 开放对这些设备的访问来改善现状,但它们仍然需要有人编写控制器来以多供应商、符合标准的方式重新实现正常的交换机功能,例如转发和路由。这促使我们小组编写了 Faucet 软件定义网络 (SDN) 控制器,该控制器使任何人都可以充分实现可编程网络的梦想。
Faucet 的工作原理
Faucet 是一款紧凑的开源 OpenFlow 控制器,使用户能够以运行服务器集群的方式运行其网络。Faucet 通过将 DevOps 工作流程引入网络,使网络对所有人来说都平易近人。它通过使网络功能(如路由协议、邻居发现和交换算法)易于管理、测试和扩展来实现这一点,方法是将它们移动到服务器上运行的常规软件,而不是将这些功能嵌入交换机或路由器的固件中的传统方法。Faucet 的工作原理是摄取表示网络拓扑和所需网络功能的 YAML 配置文件,并完成使用 OpenFlow 对网络上的每个设备进行编程的工作。
Faucet 的故事始于 2015 年 9 月,当时 REANNZ 基于怀卡托大学的 WAND 网络研究小组的原型代码编写了 Faucet 的第一个版本。从那时起,这些团体以及新西兰和更远地区的许多其他团体合作编写和维护了一个功能齐全的 OpenFlow 控制器,该控制器可以被大众使用。我们从一开始就致力于成为一个开源项目,因为我们认为这是使我们的贡献可用于帮助社区的最佳方式,并且我们很高兴迄今为止收到了来自 40 多位不同开发人员的代码更改。

Brad Cowie。 CC BY-SA 4.0
测试和跨供应商兼容性
在编写网络控制器时,至关重要的是在每次发布时交付可工作的代码,这些代码在升级时不会破坏生产部署。因此,可测试性是 Faucet 的重要指导原则之一。我们有一个全面的测试套件,它不仅使用 linting 和静态分析来测试代码质量,而且我们还测试了启用不同 Faucet 功能的大量网络拓扑。此测试在每次代码更改时自动执行。
我们的测试套件还允许我们鉴定支持 Faucet 所有功能的硬件设备。这使得跨供应商 SDN 兼容性成为现实,因为许多供应商运行 Faucet 测试套件作为其 QA 流程的一部分,以验证其固件是否支持 Faucet。这也使我们能够避免编写额外的驱动程序或供应商扩展来编程新设备,这还具有保持我们的代码库小巧且一致的额外好处。
现实世界中的 Faucet
Faucet 已在全球许多不同的网络中部署。最近,我们与 ACM/IEEE 超级计算会议 2018 (SC18) 会议合作,部署了一个大型 Faucet 网络,作为 SCinet 网络的一部分,该网络为展厅的展位提供每秒太比特的互联网。我们构建的网络采用了来自 Allied Telesis、Cisco 和 NoviFlow 的硬件,我们设法超过了每秒 9 太比特的容量。

SCinet 网络前的 Faucet SC18 团队合影。
NoviFlow 设备运行裸机 Tofino P4 专用集成电路 (ASIC) 是该网络的核心路由器。NoviFlow 将 OpenFlow 编写为 P4 应用程序,这使 Faucet 能够将 OpenFlow 用作 P4 之上的运行时 API。我们编写了一些 Ansible 自动化代码,以与 SC18 客户连接数据库集成,并动态生成 Faucet 配置。数据库为每个展位分配了一个 VLAN 和子网信息。
Faucet 的工作是在核心路由器上进行 VLAN 间路由,并与两个核心 SCinet 路由器进行边界网关协议 (BGP) 对等,以允许展位路由到互联网。Faucet 内的链路聚合控制协议 (LACP) 实现使我们能够将 2x100G 链路捆绑到每个上游路由器,以实现弹性(以防出现光纤问题)。每个展位都通过一个接入交换机(由供应商之一提供)获得互联网连接 - 1Gb、10Gb 或 100Gb,该交换机也由 Faucet 控制。接入交换机执行转发并在每个接入端口上实施安全策略以保护网络。额外的网络安全由 CyberReboot 的 Poseidon 提供,Poseidon 是一种与 Faucet 集成的机器学习工具,可以识别网络上可疑的终端主机。网络上的所有服务,例如动态主机配置协议 (DHCP) 和 BGP,均由在 Linux 服务器上作为网络功能虚拟化 (NFV) 服务运行的开源守护程序(例如,dhcpd 和 BIRD)提供。
我们认为 SC18 部署证明了 Faucet 和 OpenFlow 在运行真正的、大规模生产网络方面的成熟度。我们还希望看到其他人通过部署 SDN 来迎接控制其网络的挑战。要了解有关 faucet 以及如何部署它的更多信息,请访问 我们的网站,该网站提供指向教程、文档和用户讨论邮件列表的链接。对于那些有兴趣参与我们的开源项目的人,我们有一个 开发者指南,以帮助首次贡献者。最后,为了跟踪我们的进度以及未来会议、教程或类似于 SC18 的部署的公告,请在 Twitter 上关注我们。
Brad Cowie 将在 1 月 21 日至 25 日于新西兰基督城举行的 linux.conf.au 大会上展示 使用开源 SDN 控制器部署高速生产网络。
评论已关闭。