寻找OpenConfig Yang和IETF Yang的前世今生:1.Yang的缘起
名词
亲爱的们,名词概念别混淆~
★ NETCONF是一种协议,实现该协议的建模语言有多种,目前最广泛使用的是YANG语言;
★ YANG是一种建模语言(xml的结构模型),是实现NETCONF的手段,不同组织定义的YANG存在差异,业界有很多种YANG模型。
Yang模型分类
(1)OpenConfig Yang
(2)IETF/公有/标准 Yang
(3)私有Yang
上述Yang归根结底都是netconf 协议中的Yang功能。
各厂商都在于积极地推动网络配置开放,企业只要基于这些Yang 文件编写控制器接口,就能通过下发一套Yang报文实现对各个厂商设备的控制,实现配置的兼容性。
.
Netconf的出现
有这样一个业务场景:需求为一个POD里面几十台交换机修改Qos配置(理解为对网元进行xx配置)
早期,人肉的方式,一台台修改,运维工程人员比较累(还可能出错)。
随着DevOps的流行,采用自动化脚本方式会节省不少人力物力。但是不同厂商不同设备,甚至不同版本之间配置指令(CLI)可能有较大差异,这意味着如果设备版本升级,运行的脚本就得更改,同时多个厂商设备,也会使脚本比较复杂,对运维人员要求较高。
减轻运维人员的工作量,办法总是有的,于是SNMP协议就出现了,xxx多好处,主要是能解决上面的问题。但是,它还是有缺点,特别是不能满足配置管理的需求。
然后,为了弥补SNMP的缺陷,基于可扩展标记语言XML的NETCONF协议应用而生。通俗的讲,NETCONF(Network Configuration Protocol)协议提供一套管理网络设备的机制,用户可以使用这套机制增加、修改、删除网络设备的配置,同时还可以获取网络设备的配置和状态信息。目前绝大多数的网络设备,包括华为的网络设备支持NETCONF协议,这些网络设备提供规范的API接口,应用程序可以直接使用这些API接口(以NETCONF协议报文),向网络设备发送配置指令或者获取配置信息。
Netconf 是 IETF 发布的标准协议,它的全称是 Network Configuration Protocal。从名字就可以看出来,Netconf 的作用是基于网络来安装、操作和删除设备的配置。在 Netconf 的架构中,网络设备充当 Netconf Server 的角色,而运维人员的这一侧则是 Netconf Client。此外,和 OSI 标准模型一样,Netconf 也是分层结构。
NETCONF是应用层协议,在逻辑上划分为4层,从下到上依次为:
01安全传输层
安全传输层在 Netconf Client 和 Netconf Server 之间提供安全的端到端连接。与 SNMP 采用非面向连接的UDP 协议不同,Netconf 采用面向连接的 TCP 协议,通常是 SSH 协议,保证连接的可靠性和安全性。
02消息层
消息层也称为 RPC(远程过程调用)层。Netconf Server(网络设备)上面部署了 Netconf 应用,Netconf Client 需要调用 Server 上的应用所提供的函数/方法,但由于 Client 和 Server 不在同一个内存空间,无法直接调用,所以需要通过网络来表达调用的语义,并传达调用的数据。这个过程,称为 RPC。它提供了一个简单的,与安全传输层无关的机制来封装操作层和内容层的数据:
• RPC 调用: <rpc> 元素所封装的消息
• RPC 结果: <rpc-reply> 元素所封装的消息
• 事件通知: 元素所封装的消息
03操作层
操作层定义了如图所示的 9 种基础操作集,其中:
• <get>、 <get-config> 用来对设备进行取值操作
• <edit-config>、 <copy-config>、 <delete-config> 用于配置设备参数
• 和 是在对设备进行操作时,为防止并发产生混乱的锁行为
• 和 用于结束一个会话操作
04内容层
顾名思义,内容层就是用来表达配置数据和状态数据,网络运维人员只需要关注数据本身,而不需要去关注设备的相关命令。基础网络设备在内容层所采用的数据格式通常是 XML,但也有厂商的数据格式采用了 JSON。
Yang的出现
在NETCONF的学习中,我们知道内容层就是用来表达配置数据和状态数据,网络运维人员只关注数据本身,而不需要去关注设备的相关命令。
而网络设备在内容层所采用的数据格式通常是XML,但也有厂商的数据格式采用的是JSON。
所以虽然不需要关注网络设备的操作命令,但是配置的数据还是需要有一定的结构。
YANG模型就是对内容层的建模,打个比方,向领导请假,领导说写个请假单,包含请假人的姓名,请假的起止时间,请假事由和代理人。于是我做了一个表格,包含了上述要求,并根据实际情况填入了真实信息。那么领导的描述,就可以理解为“建模”,而最后提交的填好内容的表格,就是将模型实例化了。
那么我们不禁思考:
是否可以理解为采用YANG模型,不同设备的差异可以通过代码去做适配呢?
YANG的出现推动了NETCONF的发展,为各厂商实现通用的模型奠定基础;通过YANG定义的网络模型在多厂商实现也推动NETCONF发展到新阶段。我们寻找OpenConfig Yang和IETF Yang的前世今生之旅尚未结束,下期我们将一起重点了解Yang的树形结构,请大家持续关注~
.
*注:部分文档来源于网络
.
下一篇:《Yang的语法结构》
.
- 点赞
- 收藏
- 关注作者
评论(0)