最近项目中要用到netconf协议也和设备之间进行连接,学习一下netconf协议并且记录下来
一:什么是netconf
netconf协议也可以叫做网络配置协议,它提供了一套管理网络设备的机制,用户可以使用这套机制增加,修改,删除网络设备的配置,获取网络设备的配置和状态信息。通过netconf协议,网络设备可以提供规范的应用程序编程接口API,应用程序可以直接使用这些API,向网络设备发送和获取配置。
简单的说就是使用这个协议完成通过程序来对网络设备进行操作
二: netconf协议
netconf协议是基于可扩展标记语言XML的网络配置和管理协议,使用简单的基于RPC机制实现客户端和服务端之间的通信。客户端可以是脚本或者网管上运行的一个应用程序。服务器是一个典型的网络设备。
netconf提供了一种通过运行网络管理软件的中心计算机来远程管理和监控设备的方法。有点如下
1:netconf协议以XML格式定义消息,运用RPC机制修改配置信息,这样既能方便管理配置信息,又能满足来自不同制造商设备之间的互操作性
2:可减少由于人工配置错误引起的网络故障
3:可提高使用配置工具升级系统软件的效率
4:扩展性好,不同制造商设备可以定义自己的协议操作,以实现独特的管理功能
5:netconf提供了认证,鉴权等安全机制,保证了消息传递的安全
三: netconf协议框架
netconf协议采用了分层结构。每层分别对协议的某一方面进行包装,并向上层提供相关服务。分层结构使每层只关注协议的一个方面,实现起来更简单,同时使各层之间的依赖,内部实现的变更对其他层的影响降到最低。
netconf协议在概念上可以划分为4层:
1: 安全传输层为客户端与服务器之间交互提供通讯路径
2:消息层提供一种简单的不依赖传输协议层的,生成rpc请求和回应消息框架的机制。client把RPC请求内容封装在一个元素内,发送给server;server把请求处理结果封装在一个元素内,回应给client
3:操作层定义一组基本的操作,作为RPC的调用方法,可以使XML编码的参数调用这些方法。
4:内容层有管理对象的数据模型定义,数据模型定义依赖netconf的实现情况
netconf报文结构:
netconf建模语言:
Schema:Schema是为了描述XML文档而定义的一套规则。Schema文件中定义了设备所有管理对象,以及管理对象的层次关系,读写属性和约束条件。设备通过Schema文件向网管提供配置和管理设备的接口
YANG:YANG是专门为netconf协议设计的数据建模语言,用来为netconf协议设计可操作的配置数据,状态数据模型,远程调用模型和通知机制等。YANG数据模型定位为一个面向机器的模型接口,明确定义数据结构及其约束,可以更灵活,更完整的进行数据描述。
netconf会话基本流程
1:客户端触发netconf会话建立,完成SSH连接建立,并进行认证与授权
2:客户端和服务端完成netconf会话建立和能力协商
3:客户端发送一个或多个请求给服务器,进行RPC交互。例如:修改并提交配置,查询配置数据或状态,对设备进行维护操作
4:客户端关闭netconf会话
5:SSH连接关闭
netconf的基本操作
get查询数据:
查询是指设备当前运行的状态数据,即只能从配置数据库中获取数据。所以,不需要使用source参数指定配置数据库。操作成功,server回复的元素中含有参数,封装了获取的结果数据。否则在消息中返回。例如:
RPC请求:
RPC应答:
get-config查询配置数据
操作用来查询全部或部分指定配置数据
source:正在查询的配置数据库名称
filter:此参数用来标识要查询配置数据库的范围。如果此参数不存在,则返回设备上所有的配置