IP技术 -- 4 NETCONF

NETCONF协议与传统的命令行/SNMP协议一样,是一种网络设备管理协议,它提供了一套配置、查询网络配置和状态的机制,而YANG模型是NETCONF的数据模型,类似于MIB是SNMP的数据模型,用来描述基于NETCONF协议通信的客户端和服务器之间的交互模型。

为什么要使用NETCONF & YANG?

云时代对网络的关键诉求之一是网络自动化,包括业务快速自动发放,自动化运维等,传统的命令行和SNMP/MIB已经不适应云化网络的需求,这主要体现在1. 传统的命令行是人机接口,配置过程复杂,人工学习、配置和维护的成本特别高,而且不同厂商差异大,互通比较困难。


当用户提出某个具体需求时,工程师将需求分解为具体的功能,这时,在实施配置之前,一个初学者需要先人工阅读手册,了解不同厂商的功能实现和命令行格式的差异,配置是否有约束和依赖等。当完成这个学习之后,在人工逐个的输入设备可以识别的命令行,整个过程是聚焦于设备和功能的。由此可见,命令行并不适合于大规模的自动化部署/运维


而在NETCONF & Yang场景中,不同厂商的定义差异由APP进行,工程师不需要关注YANG模型具体定义的差异,从而将焦点从设备和功能的实现差异,转移到用户需求上,工程师只需要操作图形化界面的App就可以实现自动化的配置

同样,SNMP配置效率低,支持write的节点少,不支持事务机制,可编程性差,目前主要被用于做监控类的协议

NETCONF的主要特点和实现原理:
NETCONF通信是C/S架构,通常客户端是网管、控制器或APP,服务器端是网络设备、路由器、交换机等,客户端和服务器上
存在同样的YANG模型,基于这些同样的YANG模型,客户端可以生成符合NETCONF通信规范的xml报文,服务器端也可有识别xml报文,执行响应的操作,达到通信的目的。

NETCONF采用分层的协议框架,包括对象层、操作层、PRC层和传输层,


1. 对象层即内容层,用于定义配置数据模型,例如YANG模型,它的主要特点是,配置/状态/统计数据分离,用户可以单独查询某一类信息,而且支持执行批量操作,配置和查询速度都比SNMP快
2. 操作层定义了一系列的基本协议操作,这些操作可以被RPC方法调用,它的主要特点是支持事务和回滚,可以分阶段进行配置,或者遇到失败时中断或回退
3. RPC层也叫消息层,为RPC和notification通知提供了一个简单、独立的传输机制
4. 传输层提供客户端和服务器之间的通信路径,并提供了认证、加密和完整性校验

NETCONF支持对数据的分类存储和迁移,包括running运行数据集,candidate备选数据集合startup启动数据集,
<running/>用来存放网络设备上当前处于活动状态的完整配置
<candidate/>用来于存放设备将要提交到<running/>的各项配置数据的集合,对<candidate/>的任何改变都不会影响网络设备
<startup/>用于存放设备启动时所加载的配置数据,相当于已保存的数据文件
它们之间既实现了配置隔离,又可以通过不同的操作进行配置数据迁移

NETCONF定义了更丰富的操作类型,并支持基于能力集进行扩展,通过这些丰富的操作类型,NETCONF可以对设备进行多种不同的操作,以满足不同的使用场景

两阶段配置示例--NETCONF会话基本流程:
假定用户想通过客户端配置设备接口的IP地址,在完成SSH连接、认证和授权后,
1. 由客户端启动NETCONF会话建立,并通过hello消息进行双方能力的通告


2. 能力协商成功后,客户端需要申请锁定运行数据集,避免自己的配置和其它客户端有冲突


3. 复杂运行数据集的最新配置到候选数据集,保证修改前的配置同步到最新状态


4. 编辑备选数据集的配置


5. 提交备选数据集的配置到运行数据集


6. 解锁运行数据集,最后,关闭NETCONF会话和SSH连接

以上就是一个简单的两阶段配置示例的过程,通过xml报文的请求和响应,设备接口的IP地址被成功的修改,

发布了165 篇原创文章 · 获赞 46 · 访问量 8万+

猜你喜欢

转载自blog.csdn.net/f2157120/article/details/104203131