提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
云时代对网络的关键诉求之一是网络自动化,包括业务快速按需自动发放、自动化运维等。传统的命令行和SNMP已经不适应云化网络的诉求。
- 传统命令行是人机接口,配置过程复杂,厂商差异大,人工学习成本高。
- SNMP配置效率低,不支持事务机制,更多被用来做监控类协议。
一、Netconf简介
为了弥补传统命令行和SNMP的缺陷,基于可扩展标记语言XML(Extensible Markup Language)的NETCONF协议应运而生。其优点如下:
- NETCONF采用分层的协议框架,更适用云化网络按需、自动化、大数据的诉求。
- NETCONF协议以XML格式定义消息,运用RPC机制修改配置信息,这样既能方便管理配置信息,又能满足来自不同制造商设备之间的互操作性。
- NETCONF协议基于YANG模型对设备进行操作,可减少由于人工配置错误引起的网络故障。
- NETCONF提供了认证、鉴权等安全机制,保证了消息传递的安全。
- NETCONF支持对数据的分类存储和迁移,支持分阶段提交和配置隔离。实现事务机制验证回滚。配置整体生效,可以缩短对网络业务的影响时间。
- NETCONF定义了更丰富的操作接口,并支持基于能力集进行扩展。不同制造商设备可以定义自己的协议操作,以实现独特的管理功能。
网络配置协议NETCONF(Network Configuration Protocol)为网管和网络设备之间通信提供了一套协议,网管通过NETCONF协议对远端设备的配置进行下发、修改和删除等操作。网络设备提供了规范的应用程序编程接口API(Application Programming Interface),网管可以通过NETCONF使用这些API管理网络设备。
NETCONF是基于可扩展标记语言XML(Extensible Markup Language)的网络配置和管理协议,使用简单的基于RPC(Remote Procedure Call)机制实现客户端和服务器之间通信。客户端可以是脚本或者网管上运行的一个应用程序。服务器是一个典型的网络设备。
1.基本网络架构
整套系统必须包含至少一个NMS(Network Management System)作为整个网络的网管中心,NMS运行在NMS服务器上,对设备进行管理。
网络管理系统中的主要元素有:
- 客户端(Client),主要作用如下:
利用NETCONF协议对网络设备进行系统管理。
向NETCONF Server发送RPC请求,查询或修改一个或多个具体的参数值。
接收NETCONF Server主动发送的告警和事件,以获知被管理设备的当前状态。 - 服务器(Server),主要作用如下:
用于维护被管理设备的信息数据并响应客户端的请求。
NETCONF Server收到Client的请求后会进行数据解析,然后给NETCONF Client返回响应。
当设备发生故障或其他事件时,NETCONF Server利用Notification机制主动将设备的告警和事件通知给Client,向Client报告设备的当前状态变化。
2.协议框架
NETCONF协议采用了分层结构。每层分别对协议的某一方面进行包装,并向上层提供相关服务。
分层结构使每层只关注协议的一个方面,实现起来更简单,同时使各层之间的依赖、内部实现的变更对其他层的影响降到最低。
NETCONF协议划分为四层:由低到高分别为安全传输层、消息层、操作层和内容层。
-
安全传输层
提供了客户端和服务器之间的通信路径。NETCONF协议可以使用任何符合基本要求的传输层协议承载。
NETCONF传输层首选推荐SSH协议,XML信息通过SSH协议承载。当前华为支持SSH协议作为NETCONF协议的承载协议。 -
消息层
提供一种简易的不依赖于传输层,生成RPC和通知消息框架的通信协议。
客户端把RPC请求封装在一个元素内,发送给服务器;服务器把请求处理的结果封装在一个元素内,回应给客户端。 -
操作层
定义一组基本的操作,作为RPC的调用方法,可以使用XML编码的参数调用这些方法。 -
内容层
由管理数据内容的数据模型定义。目前主流的数据模型有Schema模型、YANG模型等。
Schema是为了描述XML文档而定义的一套规则。设备通过Schema文件向网管提供配置和管理设备的接口。Schema文件类似于SNMP的MIB文件。
YANG是专门为NETCONF协议设计的数据建模语言。客户端可以将RPC操作编译成XML格式的报文,XML遵循YANG模型约束进行客户端和服务器之间通信。
3.报文格式
NETCONF通信模式:
Client的RPC请求和Server的回应消息全部使用XML编码,XML编码的< rpc >和< rpc-reply >元素提供独立于传输层协议的请求和回应消息框架。如下为一些基本的RPC元素:
-
< rpc >
< rpc >元素是用来封装NETCONF Client发送给NETCONF Server的请求。 -
< rpc-reply >
< rpc-reply >元素用来封装< rpc >请求的应答消息,NETCONF Server给每个< rpc >操作回应一个使用< rpc-reply >元素封装的应答信息。 -
< rpc-error >
NETCONF Server在处理< rpc >请求的过程中,如果发生任何错误或告警,则在< rpc-reply >元素内只封装< rpc-error >元素返回给NETCONF Client。 -
< ok >
NETCONF Server在处理< rpc >请求的过程中,如果没有发生任何错误或告警,则在< rpc-reply >元素内封装一个< ok &g