天天看点

SONiC:为Microsoft全球云提供支持的网络交换机软件

微软运行着全球最大的公有云之一,在构建和管理全球性、高性能、高可用性和安全网络方面又宝贵的经验。经验告诉我们,运行书包个数据中心和数万台交换机,我们需要:

在网络的各层都使用最佳的交换机硬件在不影响最终用户使用的情况下部署新功能在几个小时内安全可靠地推出更新,而不再是需要数月的周期利用云端深度遥测和全自动化解决故障让我们的软件定义网络软件能够使用统一的结构轻松控制网络中的所有硬件元素,以消除重复并减少故障。

为了满足这些需求,微软率先开发了开放式交换机软件sonic,这是网络交换机操作和管理上的突破。微软将这一创新贡献给开源社区,使得它能够在sonic github存储库上下载使用。sonic是一个独特的可扩展平台,拥有一个大型的且不断增长的硬件和软件合作伙伴生态系统,提供多个交换平台和各种软件组件。

交换机抽象接口(sai)加速硬件创新

sonic是建立在交换机抽象接口(sai)的基础上,它定义了一个标准化的api。网络硬件供应商可以通过它来开发创新的硬件平台,可以在保持与asic的编程接口一致的前提下,提升速度,微软在2015年将sai进行开源。这种方式使得运营商能够在芯片、cpu、功率、端口密度、光、速度等方面快速创新,同时保持其在多个平台上实现统一的软件解决方案。

figure 1. sonic: one investment to unblock hardware innovation

带有容器的模块化设计加速软件演进

sonic是首个将单片交换机软件拆分为多个容器化组件的解决方案。sonic支持细粒度故障恢复和在线升级,且不会宕机。它与交换机状态服务(swss)结合使用,交换机状态服务利用开源键值存储的优势来管理所有交换机状态并促进交换机向其目标状态服务转变。用户可以使用新代码(包括边界网关协议(bgp)之类的协议)升级有缺陷的容器,而不需要更换整个交换机的镜像,也不需要数据平面停机。这种性能是sonic平台的可服务性和可扩展性的关键因素。

容器化还使得sonic具有极高的可扩展性,sonic的核心是针对云网络场景,其中简化和规模化管理是最优先需要考虑的。运营人员以最小的工作量插入新组件、第三方、专有或开源软件,并根据其特定场景定制sonic.

figure 2. sonic: plug and play extensibility

监控和诊断功能是大规模网络管理的关键,微软在诸如早期检测故障、故障相关和自动恢复机制等领域不断创新。这些创新如netbouncer和everflow,都在sonic中提供,它们代表着微软多年运营经验的巅峰。

快速发展的生态系统

sonic和sai在过去的一年中获得了业界广泛的支持,大多数主要网络芯片供应商都在其asic上支持sai:

barefoot networks: tofino博通: trident and tomahawkcavium: xpliant盛科: goldengatemellanox: spectrummarvell: presteranephos: taurus

社区在积极地为sai版本添加新的功能和扩展:

博通、marvell、barefoot、微软正在推动sai的监控和遥测功能发展,以深入了解asic和强大的分析功能。mellanox、cavium、戴尔、盛科为sai提供协议通知,以支持更丰富的协议支持和大规模网络场景,例如mpls、增强acl模式、桥接模式、l2/l3组播、分段路由和802.1br。戴尔和metaswitch通过添加l3快速重路由和bfd,为sai带来了故障弹性和性能。由mellanox和博通推动的管道模型以及戴尔的多npu丰富了sai和建立在顶层的网络协议栈应用的基础设施。

在开放计算项目峰会2017(ocp 2017)上,微软演示了来自多个交换机尝试的100 gbit交换机,sonic已经启用了最新最快的sku。支持sonic的平台包括:

arista: 7050和7060系列centec: e580和e582系列dell: s6000 on, s6100-on以及z9100-on系列edgecore: as7512 series, wedge-100bfacebook: wedge-100ingrasys: s9100系列marvell: rd-bc3-4825g6cg-a4和rd-arm-48xg6cg-a4系列mellanox: sn2700系列

通过使用sonic,云计算社区有了多样化的选择,他们可以选择最好的解决方案。合作伙伴正在加入sonic生态系统,使得生态系统更加丰富:

arista的容器化eos组件(如eos bgp)能够在sonic上运行,sonic社区现在可以轻松访问arista丰富的eos软件套件。canonical使用sonic作为ubuntu的快照。它使得maas能够将sonic部署到哦交换机以及使用sonic来部署服务器。统一的网络和服务部署将显著提高运营商的敏捷性。docker通过swarm来管理sonic容器,凭借其简单的服务模型,swarm可以大规模管理和更新sonic。mellanox使用sonic来释放spectrum asic中基于硬件的数据包生成功能,该功能有助于故障诊断和故障排除。

通过社区和我们的合作伙伴生态系统合作,微软正在寻求彻底改变当今和未来网络的方式。

sonic完全在github上开源,以供业界同仁、研究人员、学生和创新者使用。借助sonic容器化方式和软件仿真工具,开发人员可以体验在microsoft azure中使用的交换机软件,并提供惠及数百万用户的组件。sonic将使整个云计算社区受益,我们对此平台背后日益强大的合作伙伴关系感到高兴。

本文转自d1net(转载)

继续阅读