SONiC系统管理3
基于SONiC-YANG的系统配置管理
为了解决前面提到的CLI和基于配置文件方式的配置管理方法的缺点,SONiC代码中增加了模型驱动的管理架构,不过SONiC系统支持的SONiC-YANG模型和其它标准模型有所不同,这也是SONiC文件中把SONiC系统支持的模型特别称为SONiC-YANG的原因,避免和其它标准YANG模型混淆。
SONiC 系统通过专门的ConfigMgr服务提供对外的管理接口供外部管理系统调用,基于YANG定义的设备模型将作为外部管理系统和SONiC系统之间进行交互时的一种双方都必须遵守的约定。ConfigMgr服务将依据该模型对外部管理系统提交的配置信息进行一致性验证和依赖关系检查,系统还可以支持将系统配置的更新作为一个事务进行提交或回滚。
SONiC支持gRPC/gNMI协议,ConfigMgr服务完成gRPC服务器的功能,同时提供配置信息验证、事务管理、数据存储等功能。
YANG作为最新的网络管理和描述网络模型的语言,派生出了很多支持YANG的工具和方法,如PYang,基于Python的YANG语言转换工具,可以把YANG模型转换成基于XMI的YIN模型,或者其它的面向对象方法描述的模型。Goyang,基于Go语言的yang工具。
因为基于YANG定义设备模型有很多优势,业界定义了很多种不同标准的YANG Model,如IETF YANG, IEEE YANG, OpenConifg YANG等,采用不同YANG模型的网络管理系统和网络设备之间并不能互联互通。
SONiC没有直接采用这些YANG模型种的任意一种,而是基于自身需要,在YANG基本语法的基础上,基于SONiC的模式约束,定义了SONiC YANG。这种方式既可以利用各种YANG工具,同时也避免了大量的标准YANG模型到SAI模型对象之间的转换,代价是外部管理系统在管理SONiC系统的时候需要重新适配SONiC YANG。