0. 引言
网络设备治理的一大懊恼来自于差别厂商的设备使用差别的操作系统,,这些系统命令花样不统一, 对协议的支持水平纷歧致,甚至在系统逻辑上也纷歧致. 笔者所治理的网络有十几个品牌的系统,,在系统升级,版本治理, 漏洞与宁静治理上都要花费较多的时间和精力。
SONiC 的泛起,较好地缓解了这些痛苦, 它的统一系统、不宕机升级、高度定制化等等特性, 资助笔者节约了大宗的时间和精力 。
正文开始前, 请允许我介绍一下开源、开放网络和 SDN。后续的文章中会对其看法有较多的引用,掌握这些看法, 我们上手 SONiC 的速度就快了许多。
1.开源、开放网络和 SDN 看法
什么是开源,什么是开放型网络,什么是软件界说网络,他们又有如何的关系,有哪些差别呢?我们先来看一下下面的这个图:
可以看出,它们三者互为关系,可是又有许多相同和差别点。我们先来了解一下看法吧。
1.1.SDN (SoftWare-Defined Networking, 软件界说网络)?[1]
SDN (软件界说网络, SoftWare-Defined Networking )通常被认为是一种将控制平面与网络内的包转发(数据)平面解耦的体系结构。在这种情况下,可以从中心位置进行网络配置和治理,而不是通过网络连接每个特定的交换机或效劳器。这使得企业和效劳提供商能够快速响应业务需求的变革。
SDN 的主要组成部分之一是SDN控制器。它通过应用程序编程接口 (api) 与应用程序通信。与此同时,它还使用OpenFlow 等接口与交换机或路由器通信。因为 OpenFlow 协议是网络中普遍保存的开源组件的一个例子,所以有些人认为 SDN 和开源软件是一样的。实际上,大大都 SDN 架构仍然在第三方或商业硬件上使用闭源软件或开源软件。
1.2.开源 (Open Sources)??[2]
“开源”这个术语指的是人们可以修改和共享的工具,因为它的设计是果真可会见的。这个术语起源于软件开发中,指创立盘算机程序的特定要领。然现在天,“开源”代表了更广泛的价值,我们称之为“开源方法”。开源方法可以是项目、产品或计划,具备以下原则,开放的交流、协作加入、快速的原型设计、透明的、可被治理的和面向社区的开发历程。
1.3.开源软件 (Open Source Software)?[3]
开源软件即是开放源代码的软件,是任何人都可以检查、修改和增强源代码的软件。“源代码”是大大都盘算机用户从未见过的软件的组成;它是盘算机程序员可以利用的代码,以改变软件(程序或应用程序)的事情方法。可以会见盘算机程序源代码的程序员可以通过添加特性或修复不可正常事情的部分来革新程序。“开源软件”是相关于“闭源软件”而言的,有些软件的源代码只有创立它的个人、团队或组织才华修改,并且坚持对它的独吞控制。人们称这种软件为“专有的”或“闭源的”软件。
可是现在我们在互联网领域听到的大大都 Open Source 多指开源软件,其实已经远远缩小了 Open Source 的看法了。
在了解开放型网络之前,需要了解一下开放型网络是如何来的,起源来自于一个开放盘算项目。
1.4. 开放盘算项目 (Open Compute Project)?[4]
开放盘算项目 (OCP,Open Compute Project),开放盘算项目 (OCP) 是一个协作社区,专注于重新设计硬件技术,以有效地支持对盘算型基础设施不绝增长的需求。 故事源于2009年,Facebook 为数百万人提供一种新的效劳,这种效劳是一个分享照片和视频的社交平台,平台呈指数级增长。展望未来,该公司意识到,它必须重新考虑其基础设施的本钱,通过控制本钱和能源消耗来承载大宗涌入的新用户和数据。就在那时,Facebook 启动了一个项目,设计世界上最节能的数据中心,以尽可能低的本钱处理前所未有规模的数据。一个由工程师组成的小团队花了两年时间重新开始设计和建造数据中心,涉及内容包括:软件、效劳器、机架、电源和冷却系统。目前这个数据中心着落在俄勒冈州的普林维尔。与该公司之前的设施相比,这个全新的数据中心节能率提高了38%,运营本钱降低了24%,与此同时带来了更大的立异。 2011年,Facebook 与 Intel 和 Rackspace、高盛和 Andy Bechtolsheim 配合提倡了开放盘算项目,并建立了开放盘算项目基金会。五名成员希望在硬件领域提倡一场运动,就像我们在开源软件中看到的那种创立力和协作,这就是正在爆发的事情。
1.5.开放型网络 (Open Networking)??[5]
1.5.1.什么是开放型网络?
开放型网络的基本需要几个条件,首先是建立在开放标准之上,通常我们常听到的开放标准例如 OpenFlow 协议等,再有就是能够支持开放网络的硬件,我们称之为“裸设备”,再其次就是可以自由选择自主装置的网络操作系统,只有具备这些才华突破软件和硬件在网络层面的固有特性,使我们能够拿到一个可交付的、灵活的、可伸缩的、可编程的以及适应种种需求的网络。
1.5.2.开放型网络简史?[6]
我们把开放型网络界说为从2013年开始,为什么开放型网络界说为从2013开始?在互联网上一直保存着某种水平的开放型网络,这次我们可以把重点放在,什么时候开放型网络硬件和软件成为主流和易于使用,什么时候开放型网络装置情况的界说和宣布。首先我们来看一下开放型网络中比较重点的界说:
1.5.3. 开放性网络装置情况 (ONIE)??[7]
开放性网络装置情况, ONIE – Open Network Install Environment
轻量级 Linux 情况,允许装置、卸载、调试的网络操作系统,开放性网络装置情况使得开放型网络成为可能。
我们通过一个例子来比照一下开放性网络装置情况在界说前后我们的使用上有何差别。
开放性网络装置情况未界说前,我们对网络设备装置调试可能的办法:
1)? 开打交换机移除 CF/SD卡
2)? 在 CF/SD 卡上制作镜像文件
3)? 把 CF/SD 卡放回交换机
4)? 启动交换机进入对话模式
5)? 挂载 CF/SD卡
6)? 拷贝/解压镜像在 CF/SD/卡上
7)? 设置启动参数
8)? 生存和重置新的镜像
开放性网络装置情况界说后,我们对网络设备装置调试可能的办法:
1)? 通过 USB 装置开放性网络装置情况 (如果预先未装置开放性网络装置情况的情况)
2)? 启动交换机并在开放网络装置情况中选择需要的操作
a)? 装置操作系统
b)? 翻开命令行模式
c)? 卸载操作系统
3)? 升级开放网络装置情况
4)? 完成
可以看出,通过开放性网络装置情况,可更为便当地治理网络设备,省去了频繁的硬件操作,从开放性网络装置情况层面实现了网络操作系统的变换。
虽然,要组成开放型网络,除了解决了装置情况,还需要硬件支持,虽然开放型网络需要包括开放的盘算硬件/开放的网络硬件 (Switches)。
1.5.4. 开放的网络硬件(Open Switches)??[8]
1.5.4.1.怎么理解硬件开放?
开放可以代表许多工具,从装置差别的网络操作系统到向民众提供完整的设计包,最具代表的是“源于开放盘算项目网络组”,对,就是我们前面提到的那个组织 Open Compute Project (OCP),网络组建立于2013年,硬件设计孝敬者包括 Edge-Core, Quanta, Facebook, Mellanox 等。其中所有提交的设计都是开放的,包括构建网络设备所需的数据。
1.5.4.2.常见的开放硬件
我们常见的开放硬件有以下两种:
1)? Brite-BOX
Dell ON Series, HPE Altoline, Arista, Broadcom
由戴尔和 HPE 等知名厂商销售的品牌支持交换机
通常带有厂商的网络操作系统,但也可以运行其他网络操作系统, 许多这类型交换机是由白牌交换机革新而来。
2) White-Box
Mellanox, Edge-Core, Quanta 通用的交换机和硬件支持通常具备开放型网络装置情况。
1.5.5. 开放的网络软件 (Open Networking Software)??[9]
1.5.5.1. 开源网络操作系统
前面我们讲了开放性网络装置情况,它是给开放网络操作系统准备的,现在我们来了解一下它。
开放网络 Linux (ONL, Open Networking Linux), 即交换机平台支持的网络操作系统。
ONL 由于良好的体现泛起了跨多平台流传现象,NTT, Facebook, Google, Cord, Stratum 等多家公司的平台都提供了支持,并且差别的网络设备都开始支持 ONL。
1.5.5.2. 什么使得网络软件开放?
网络操作系统 Linux化,使得 Linux 为基础的网络,其提供了硬件和网络的笼统的逻辑,并使用开源的网络栈。
例如: FRR, BIRD
虽然大大都厂商都有一些非开放的依赖,如硬件指令集,转发 ASIC API/SDK,以及一些笼统的网络控制集,一般普遍基于 Debian Linux,
例如: OPX, SONIC, ONL, 等等。
OpenSwitch(OPX), Dell OS10 Open Edition (Debian + CPS) + Quagga/FRR, focused on Dell Open Networking switches
CoRD, ONOS Controller with Indigo agent on switchesFRR, Routing suite used by most open networking software
这里特别提出 SAI 是第一个跨平台的开源交换机笼统。(后面我们会解释什么是 SAI)
1.6.开源网络操作系统剖析??[10]
我们先来看一个架构逻辑来理解一下开源网络操作系统原理:
这里,我们可以看出绿色部分属于开源部分,紫色部分使闭源部分,青色部分 Linux,浅蓝色为硬件层,大致分为硬件,平台,应用层三个层面,而平台层面的驱动和硬件控制接口是闭源的,可是应用层面已经把传感器进程,网络治理,网络控制协议层笼统出来。
1.7.开放的网络操作系统 (Network Operating System)??[11]
虽然网络操作系统组件并不是完全开源,虽然许多芯片厂商关于交换机的笼统接口照旧只支持二进制,可是随着SAI和P4的泛起,我们发明了一些变革,我们也有理由相信未来会越来越好,下面给各人做一个比照:
OpenNSL |
非开源 | 仅开放API |
OF-DPA | 非开源 | 兼容OpenFlow vX 标准 |
SAI | 非开源 | 兼容SAI vX 标准 |
P4 Runtime | 非开源 | 兼容P4 vX 标准 |
SDKLT | 开源SDK | |
OtherCavium OpenXPS | 开源 |
兼容 SAI 标准 |
说到开放的网络操作系统,不得不提到以下几个例子:Microsoft Azure SonicOpen Network Linux, Network API (SAI, OpenNSL), OpenSwitch (OPX).
这个我们发明许多支持SAI标准,那么什么是 SAI?
1.8.SAI (Switch Abstraction Interface)??[12]
交换机笼统接口 (SAI) , 他是跨平台的交换机平台接口,可以看成是一个用户级的驱动,交换机笼统接口 (SAI) 是一种标准化的 API,API 涵盖多种功效,使用者不需要担心硬件厂商的约束,不必体贴其交换专用集成电路、网络处理单位或其是一个软件交换机,都可接纳统一的方法治理。其目的都是围绕简化厂商 SDK。
交换机笼统接口 (SAI) 在所有硬件上运行相同的应用程序货仓,这使得 SAI 接口具备简单性,一致性。使用者不需要体贴网络硬件供应商的硬件体系结构的开发和革新,通过始终一致性的编程接口可以很容易的应用最新最好的硬件,并且新的应用程序可移植性更强,bug 更低。这其中以 Microsoft, Dell, Facebook, Broadcom, Intel, Mellanox为代表。
1.8.1.SAI 生长迅速
1.8.2.SAI 笼统的交换机系统的系统架构
我们可以看到 SAI 是建立在开放的 ASIC 笼统之上的,API 通过 C 语言接口与网络专用芯片通信,接口大致分为几类功效:
须要功效,选配功效,自界说功效
1.8.3.SAI 支持的功效摘要
我们来看一下 SAI 支持的功效摘要:
须要功效 | 描述 |
sai_switch_api_t | Top-level switch object |
sai_port_api_t | Port management |
sai_fdb_api_t | Forwarding database |
sai_vlan_api_t | VLAN management |
sai_vr_api_t | Virtual router |
sai_route_interface_api_t | Routing interface |
sai_route_api_t | Routing table |
sai_neighbor_api_t | Neighbor table |
sai_next_hop_t | Next hop table |
sai_next_hop_api_t | Next hop group |
sai_qos_api_t | Quality of service |
sai_acl_api_t | ACL management |
LAG, STP, Control packet send/recevie |
参考文献:
[1] https://en.wikipedia.org/wiki/Software-defined_networking
[2] https://en.wikipedia.org/wiki/Open_source
[3] https://en.wikipedia.org/wiki/Open-source_software
[4] https://www.opencompute.org/about
[5] https://aptira.com/what-is-open-networking/
[6] https://events19.linuxfoundation.org/wp-content/uploads/2017/11/Open-Hardware-and-Open-Networking-Software-How-We-Got-Here-and-Where-We-are-Going-Steven-Noble-Big-Switch-Networks-_-NetDEF.pdf
[7] https://www.opencompute.org/wiki/Networking/ONIE
[8] https://www.openswitch.net/about/
[9] http://opennetlinux.org/
[10] https://events19.linuxfoundation.org/wp-content/uploads/2017/11/Open-Hardware-and-Open-Networking-Software-How-We-Got-Here-and-Where-We-are-Going-Steven-Noble-Big-Switch-Networks-_-NetDEF.pdf
[11] https://events19.linuxfoundation.org/wp-content/uploads/2017/11/Open-Hardware-and-Open-Networking-Software-How-We-Got-Here-and-Where-We-are-Going-Steven-Noble-Big-Switch-Networks-_-NetDEF.pdf
[12] https://www.opencompute.org/documents/switch-abstraction-interface
[13] https://github.com/Azure/SONiC/wiki/Architecture
[14] https://github.com/Azure/SONiC/wiki/Sonic-Roadmap-Planning