SONIC 简介
定义及架构
SONIC (Software for Open Networking in the Cloud) 主要是运行在开放交换机上的开源网络操作系统,其包含了一个功能齐全的网络层设备。截至 2018 年,SONIC 支持 BGP,LLDP,link aggregation/LACP 和 VLAN (trunking)。SONIC 是基于 Linux 的,运行在 Debian Jessie 上。主要架构包含:硬件配件(Hardware components)、驱动程序(Drivers)、Linux 内核接口、一些源文件、SONIC 开放源、其他应用。其架构如下图:
从架构图中,可知 SONIC 通过交换机抽象接口(SAI)来编写专用集成电路(ASIC),从而促使 SONIC 可兼容所有的 ASIC。
交换机系统服务——SWSS
SONIC 使用 SWSS(switch state service)来充当 ASIC 的控制模块,通过数据库来连接网络应用程序和硬件交换机进行通信以及状态的更新。我的理解就是,SWSS 为 SONIC 提供了数据接口。下图为 SWSS 的架构图:
在图中网络应用程序通过访问 APP_DB 这个数据库来进行读写操作。编制代理(Orchestration Agent)负责为 APP_DB 和 ASIC_DB 之间进行信息同步。值得注意的上述两个数据库都是非关系型数据库(NoSQL DB)并且选择键值对数据库,现阶段主要使用的是 Redis 数据库。
路由套件——Quagga
Quagga 为 SONIC 提供 BGP 路由功能并将其传播到 ASIC,Quagga 为路由器之间交换路由信息提供服务。
在 SONIC 中主要应用 Quagga 服务的有:BGPd(BGP 守护进程)和 Zebra。当有路由信息来的时候,BGPd 先进行处理,决定是否放入 SONIC 内核路由表,然后 Zebra 使用 fpmsyncd (转发平面管理器)来对转发平面进行编程。使得 APP_DB 中的路由表更新,之后 SONIC 处理内核路由表的更新。简而言之,Quagga 来判断路由信息是否更新,SONIC 负责更新内核路由表。
SONIC 特性
第二层特性(数据链路层)
提供同一局域网中的设备之间的通信服务。
LLDP
链路层发现协议(Link Layer Discovery Protocol,LLDP),提供允许网络设备分布关于自身身份和能力的信息。
LACP
链路聚合控制协议(Link Aggregation Control Protocol,LACP),将多个物理端口组合成一个逻辑通道,即链路聚合。上层协议将聚合之后的链路看成单个通道,这样可以提供更高的吞吐量,使得物理链路发生故障,仍然保证流量可以通过其他链路流过。
STP
生成树协议(Spanning Tree Protocol,STP),用于搭建一个无环路的网络拓扑,防止拓扑中存在循环。
VLAN(trunking)
虚拟局域网(Virtual Local Area Network,VLAN),在逻辑上,将一个局域网划分为多个虚拟局域网。
第三层特性(网络层)
提供不同局域网之间的数据路由通信服务。
Inter-VLAN routing
通过一个外部路由器或者是交换机,可以实现不同VLAN之间的通信。
BGP
边界网关协议(Border Gateway Protocol,BGP),用于在同一或不同自治系统之间的路由。
SONIC 特性测试实验
第二次特性测试实验
-
LLDP 测试实验
使用
show lldp neighbors
来查看 LLDP 中的邻居信息,从而可以验证是否交换了 LLDP TLVs(类型-长度-值)等信息。 -
LACP 测试实验
通过模拟两条物理链路中一条发生故障,测试设备之间是否能够正常通信来判断 LACP 中冗余的功能。
-
STP 测试实验
当前 SONIC 不支持 STP。
-
VLAN(trunking)测试实验
创建如下图所示的拓扑关系,通过 ping 不同设备来验证 同一 VLAN 内部可 ping 通,不同 VLAN 之间无法 ping 通的结果。
第三层特性测试实验
-
Inter-VLAN routing 测试实验
依旧使用上图拓扑,通过 ping 通不同 VLAN 之间的通信来验证 VLAN 间路由特性。
-
BGP 测试实验
创建两个独立的自治系统,测试不同自治系统之间的主机是否能够 ping 通。实验拓扑图如下。
SONIC 易用性
SONIC 易用性主要表现在:
- SONIC 提供了许多命令,让用户可通过命令行的形式查看当前配置或修改配置
- SONIC 还允许用户对配置数据库直接修改,即 config_db.json 配置文件,方便用户大批量修改
SONIC 的未来
对于大部分网络特性,SONIC 都可以成功部署。因为 SONIC 允许网络管理员在数据平面不停机的情况下更新特性配置,所以使用 SONIC 的开放交换机可适用于大型数据中心和企业网络中部分用例。
与此同时,SONIC 将软硬件分开,使得网络管理员不需要对软件进行任何更改的情况下跟上硬件的步伐,大大减少了软件的开发费用。
SONIC 最大的特点就是其开放性,管理员可根据自己需要定制扩展交换机上的软件,同时减轻了非专业人员的使用困难。目前来看,SONIC 是白盒交换机的发展基础,将为交换机提供一个开放的网络操作系统。