48小时系统班试听入口

【网工必看】Netconf协议学习笔记(一)

发布作者:新盟教育 发布日期:2022-08-09 浏览人数:9807人

网工必看!速速来看!

Netconf简介


网络配置协议NETCONF(Network Configuration Protocol)提供一套管理网络设备的机制,用户可以使用这套机制增加、修改、删除网络设备的配置,获取网络设备的配置和状态信息。


通过NETCONF协议,网络设备可以提供规范的应用程序编程接口API(Application Programming Interface),应用程序可以直接使用这些API,向网络设备发送和获取配置。



Netconf协议


NETCONF(Network Configuration Protocol)是基于可扩展标记语言XML(Extensible Markup Language)的网络配置和管理协议,使用简单的基于RPC(Remote Procedure Call)机制实现客户端和服务器之间通信。


客户端可以是脚本或者网管上运行的一个应用程序。服务器是一个典型的网络设备。


NETCONF提供了一种通过运行网络管理软件的中心计算机(即网络管理工作站)来远程管理和监控设备的方法。其优点如下:


1.NETCONF协议以XML格式定义消息,运用RPC机制修改配置信息,这样既能方便管理配置信息,又能满足来自不同制造商设备之间的互操作性。


2.可减少由于人工配置错误引起的网络故障。


3.可提高使用配置工具升级系统软件的效率。


4.扩展性好,不同制造商设备可以定义自己的协议操作,以实现独特的管理功能。


5.NETCONF提供了认证、鉴权等安全机制,保证了消息传递的安全。



Netconf与SNMP比较


特性SNMPNETCONF
配置管理SNMP在进行设备数据操作时,如果多个用户对同一个配置量进行操作,协议没有提供保护锁定机制。NETCONF提供保护锁定机制,防止多用户操作产生冲突。
查询SNMP能够对某个表的一条或多条记录进行操作,查询中需要多次交互才能够完成。NETCONF针对整个系统的配置数据可直接进行操作,且定义了过滤功能。
扩展性扩展性差。扩展性好:协议模型采取分层定义,各层之间相互独立,当对协议中的某一层进行扩展时,能够最大限度不影响到其上层协议。协议采用了XML编码,使得协议在管理能力上和系统兼容性方面也具有一定的可扩展性。
安全性以目前最新的SNMPv3为例,SNMPv3在安全上存在的主要问题是,SNMPv3全部自己定义,未有扩展的余地。NETCONF利用现有的安全协议提供安全保证,并不与具体的安全协议绑定。在使用中,NETCONF要比SNMP更灵活。**说明:**NETCONF传输层首选推荐SSH协议,XML信息通过SSH协议承载。  



Netconf协议框架


NETCONF协议采用了分层结构。每层分别对协议的某一方面进行包装,并向上层提供相关服务。分层结构使每层只关注协议的一个方面,实现起来更简单,同时使各层之间的依赖、内部实现的变更对其他层的影响降到最低。


NETCONF协议在概念上可以划分为4层:


1.安全传输(Secure Transport)层为客户端和服务器之间交互提供通讯路径。


2.消息(Messages)(RPC) (Remote Procedure Call,远程调用) 层提供一种简单的不依赖传输协议层的,生成RPC请求和回应消息框架的机制。


Client把RPC请求内容封装在一个元素内,发送给Server;Server把请求处理结果封装在一个元素内,回应给Client。


3.操作(Operations)层定义一组基本的操作,作为RPC的调用方法,可以使用XML编码的参数调用这些方法。


4.内容(Content)层由管理对象的数据模型定义,数据模型定义依赖NETCONF的实现情况。


0809-1.jpeg


Netconf报文结构:


0809-2.jpeg



Netconf基本网络结构


NETCONF基本网络架构的主要元素:


1.客户端(Client)


主要作用如下:


①利用NETCONF协议对网络设备进行系统管理。


②向NETCONF Server发送请求,查询或修改一个或多个具体的参数值。


③接收NETCONF Server主动发送的告警和事件,以获知被管理设备的当前状态。


2.服务器(Server)


主要用于维护被管理设备的信息数据并响应客户端的请求。


①服务器收到客户端的请求后会进行数据解析,然后给客户端返回响应。


②当设备发生故障或其他事件时,服务器利用Notification机制主动将设备的告警和事件通知给客户端,向客户端报告设备的当前状态变化。


3.配置数据集(Datastores)


NETCONF定义了一个或多个配置数据集的存在,并允许对它们进行配置操作。配置数据集被定义为使设备从其初始默认状态进入期望的操作状态所需的完整配置数据集合。


运行的配置数据集保存网络设备上当前处于活动状态的完整配置。在设备上只存在一个此类型的配置数据集,并且始终存在。NETCONF协议使用引用此数据库。


基本模型中只存在配置数据集。其他配置数据集可以由能力集定义,且只在宣称支持该能力集的设备上可用。例如:


①备用配置数据集。存放设备将要提交到的各项配置数据的集合。管理员可以在上进行操作,对的任何改变不会直接影响网络设备。可以通过指令将备用配置数据提交为设备运行数据。


华为设备支持的备用配置数据集在不同会话间独立,不存在会话间配置数据共享,所以配置备用配置数据集时,不需要额外的加锁操作。


②启动配置数据集。存放设备启动时所加载的配置数据,相当于已保存的配置文件


NETCONF会话是Client与Server之间的逻辑连接,网络设备必须至少支持一个NETCONF会话。Client从运行的Server上获取的信息包括配置数据和状态数据。


①Client从运行的Server上获取的信息包括配置数据和状态数据。


②Client可以修改配置数据,并通过操作配置数据,使Server的状态迁移到用户期望的状态。


③Client不能修改状态数据,状态数据主要是Server的运行状态和统计的相关信息。



Netconf建模语言


1.Schema:


Schema是为了描述XML文档而定义的一套规则。Schema文件中定义了设备所有管理对象,以及管理对象的层次关系、读写属性和约束条件。


设备通过Schema文件向网管提供配置和管理设备的接口。Schema文件类似于SNMP的MIB文件。


2.YANG:


YANG是专门为NETCONF协议设计的数据建模语言,用来为NETCONF协议设计可操作的配置数据、状态数据模型、远程调用(RPCs)模型和通知机制等。


YANG数据模型定位为一个面向机器的模型接口,明确定义数据结构及其约束,可以更灵活、更完整的进行数据描述。



相关概念


NETCONF Client和Server之间使用RPC机制进行通信。Client必须和Server成功建立一个安全的、面向连接的会话才能进行通信。


Client向Server发送一个RPC请求,Server处理完用户请求后,给Client发送一个回应消息。Client的RPC请求和Server的回应消息全部使用XML编码。


NETCONF协议提供了定义capabilities语法语意规范,协议允许Client与Server交互各自支持的capabilities,Client只能发送Server支持的capabilities范围内的操作请求。


XML编码:


XML作为NETCONF协议的编码格式,用文本文件表示复杂的层次化数据,即支持使用传统的文本编译工具,也支持使用XML专用的编辑工具读取、保存和操作配置数据。


基于XML网络管理的主要思想是利用XML的强大数据表示能力,使用XML描述被管理数据和管理操作,使管理信息成为计算机可以理解的数据库,提高计算机对网络管理数据的处理能力,从而提高网络管理能力。


总而言之,基于XML的网络管理的主要优点:


1.具有强大的数据表示能力。


2.方便高效安全的进行大量数据传输。


3.很好的适应网络配置管理的需求。


XML编码格式文件头为<?xml version="1.0" encoding="UTF-8"?>,其中:


①<?:表示一条指令的开始。


②xml:表示此文件是XML文件。


③version:NETCONF协议版本号。"1.0"表示使用XML1.0标准版本。


④encoding:字符集编码格式,当前仅支持UTF-8编码。


⑤?>:表示一条指令的结束。


RPC模式:


NETCONF协议使用RPC通信模式,采用XML编码的和元素提供独立于传输层协议的请求和回应消息框架。一些基本的RPC元素如表所示。


元素说明

元素用来封装Client发送给NETCONF Server端的请求

元素用来封装请求的应答消息,NETCONF Server给每个操作回应一个使用元素封装的应答消息。

在处理请求过程中,如果发生任何错误,则在元素内只封装元素返回给Client。

在处理请求过程中,如果没有发生任何错误,则在元素内封装一个元素返回给Client。

 

能力集(Capabliity)


NETCONF能力集是补充基本NETCONF规范的一组功能。该能力由统一资源标识符(URI)标识。


能力集扩展了设备的基本操作,描述了附加操作和操作中允许的内容。客户端可以发现服务器的功能,并使用由这些能力集定义的任何其他操作,参数和内容。


能力集定义可以命名一个或多个依赖的能力集。为了支持一种能力集,服务器必须支持它所依赖的任何能力集。


Netconf鉴权机制:


NETCONF鉴权机制用于管理特定用户执行NETCONF操作和访问NETCONF资源权限。


NETCONF鉴权支持的内容如下:


1.协议操作(Protocol Operation)鉴权:允许使用指定的NETCONF协议操作。


例如:、、、等操作。


2.模块(Module)鉴权:允许访问指定的特性模块。


例如:Telnet-client、L3VPN、OSPF、Fault-MGR、Device-MGR、ISIS等特性模块。


3.数据节点(Data-node)鉴权:允许查询、修改指定的数据节点。


例如


/ifm/interfaces/interface/ifAdminStatus/devm/globalPara/maxChassisNum等数据节点。


NETCONF鉴权机制用于管理特定用户执行NETCONF操作和访问NETCONF资源权限,使这些用户只能执行或访问NETCONF协议规定的操作和能力集中预配置好的子集。



Netconf会话和能力集


Netconf会话基本流程:


1.客户端触发NETCONF会话建立,完成SSH连接建立,并进行认证与授权。


2.客户端和服务器完成NETCONF会话建立和能力协商。


3.客户端发送一个或多个请求给服务器,进行RPC交互(鉴权)。例如:


①修改并提交配置。

②查询配置数据或状态。

③对设备进行维护操作。


4.客户端关闭NETCONF会话。


5.SSH连接关闭。


能力集交互:


能力集扩展了设备的基本操作,描述了附加操作和操作中允许的内容。客户端可以发现服务器的功能,并使用由这些能力集定义的任何其他操作,参数和内容。


能力协商是在会话建立阶段,双方通过发送消息给对方来通告自己支持的能力。当NETCONF会话打开,每一端(包括Client和Server)必须发送一个包含自身能力列表的消息。双方至少要发送NETCONF基本能力:


"urn:ietf:params:netconf:base:1.0"或"urn:ietf:params:netconf:base:1.1"。


除了基本功能,NETCONF协议还允许客户端发现服务器端支持的其它能力列表。


在交换过Hello消息后,Server等待Client发送请求。Server为每个请求回应。


————————————————

(未完待续)


 网工界市场认可度极高的华为认证,你考了吗?


拿下华为HCIE认证之后,你可以:

  • 跨越90%企业的招聘硬门槛

  • 增加70%就业机会

  • 拿下BAT全国TOP100大厂敲门砖

  • 体系化得到网络技术硬实力

  • 技术大佬年薪可达30w+