实验三:Netconf 接口配置实验(基于Schema API)

article/2025/11/10 2:45:00

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、Netconf简介
    • 1.基本网络架构
    • 2.协议框架
    • 3.报文格式
    • 4.会话建立过程
  • 二、实验步骤
    • 1.设备预配
    • 2.运维代码编写
    • 3.实验结果


前言

云时代对网络的关键诉求之一是网络自动化,包括业务快速按需自动发放、自动化运维等。传统的命令行和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 >元素返回给NETCONF Client。

4.会话建立过程

NETCONF协议使用RPC通信模式,NETCONF Client和Server之间使用RPC机制进行通信。Client必须和Server成功建立一个安全的、面向连接的会话才能进行通信。Client向Server发送一个RPC请求,Server处理完用户请求后,给Client发送一个回应消息。
在这里插入图片描述
NETCONF会话建立和关闭的基本流程如下:

  • Client触发NETCONF会话建立,完成SSH连接建立,并进行认证与授权。
  • Client和Server完成NETCONF会话建立和能力协商。
  • Client发送一个或多个请求给Server,进行RPC交互(鉴权)。例如: 修改并提交配置。 查询配置数据或状态 对设备进行维护操作。
  • Client关闭NETCONF会话。
  • SSH连接关闭。

二、实验步骤

编写代码通过 NetConf 完成设备接口创建动作:
在这里插入图片描述

1.设备预配

system-view immediately
aaa
local-user huaweiuser password irreversible-cipher Huawei@123
local-user huaweiuser level 3
local-user huaweiuser service-type ssh
undo local-user policy security-enhance 
quit
ssh user huaweiuser
ssh user huaweiuser authentication-type password
ssh user huaweiuser service-type all
stelnet server enable
snetconf server enable
netconf
protocol inbound ssh port 830
quit
user-interface vty 0 4
authen aaa
protocol inbound ssh
quit
int MEth0/0/0
ip add X.X.X.X 24
undo shut
quit

2.运维代码编写

from ncclient import manager
from ncclient import operations
import time# 建立数据
CREATE_INTERFACE = '''<config>
<ethernet xmlns="http://www.huawei.com/netconf/vrp" content-version="1.0" format-version="1.0"><ethernetIfs><ethernetIf operation="merge"><ifName>GE1/0/2</ifName><l2Enable>disable</l2Enable></ethernetIf></ethernetIfs>
</ethernet><ifm xmlns="http://www.huawei.com/netconf/vrp" content-version="1.0" format-version="1.0"><interfaces><interface operation="merge"><ifName>GE1/0/2</ifName><ifDescr>Config by NETCONF</ifDescr><ifmAm4><am4CfgAddrs><am4CfgAddr operation="create"><subnetMask>255.255.255.0</subnetMask><addrType>main</addrType><ifIpAddr>192.168.4.3</ifIpAddr></am4CfgAddr></am4CfgAddrs></ifmAm4></interface></interfaces></ifm></config>'''# 对于ifm部分(xmlns以及version部分),要具体根据报错提示进行修改尝试,可能存在标准参考结构依旧无法运行的情况,所以需要结合开发参考文档以及根据实际运行情况来尝试修改
# 此份数据模板结构,来自二次开发参考文档
GET_INTERFACE = '''<ifm xmlns="http://www.huawei.com/netconf/vrp" content-version="1.0" format-version="1.0"><interfaces><interface><ifName>GE1/0/2</ifName><ifAdminStatus></ifAdminStatus><ipv4Config><addrCfgType></addrCfgType><am4CfgAddrs><am4CfgAddr><ifIpAddr></ifIpAddr><subnetMask></subnetMask><addrType></addrType></am4CfgAddr></am4CfgAddrs></ipv4Config></interface></interfaces></ifm>
'''# 建立Netconf连接
def nc_proc(host, port, username, password):return manager.connect(host=ip,port=netconf_port,username=netconf_user,password=netconf_password,hostkey_verify=False,device_params={'name': "huawei"})if __name__ == '__main__':# 设备参数ip = '192.168.1.13'netconf_port = '830'netconf_user = 'huaweiuser'netconf_password = 'Huawei@123'm = nc_proc(ip, netconf_port, netconf_user, netconf_password)# 接口数据配置DATA_1 = m.edit_config(target='running', config=CREATE_INTERFACE)print(DATA_1)time.sleep(0.5)# 接口数据查询----注意:此处get方法的参数格式以及target均与edit_config()不同,当报错为target not be excepted 时,应注意检查此处格式与target参数DATA_2 = m.get(("subtree", GET_INTERFACE))# DATA_2 = m.get(target='subtree', config=GET_INTERFACE)print(DATA_2)m.close_session()

3.实验结果

<?xml version="1.0" encoding="UTF-8"?>
<rpc-reply message-id="urn:uuid:c3e55dcb-7208-4b78-bed6-845d16412e51" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" flow-id="22"><ok/>
</rpc-reply><?xml version="1.0" encoding="UTF-8"?>
<rpc-reply message-id="urn:uuid:9141dd60-90cf-4573-b7c7-77d616745b63" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"><data><ifm xmlns="http://www.huawei.com/netconf/vrp" format-version="1.0" content-version="1.0"><interfaces><interface><ifName>GE1/0/2</ifName><ifAdminStatus>down</ifAdminStatus><ipv4Config><addrCfgType>config</addrCfgType><am4CfgAddrs><am4CfgAddr><ifIpAddr>192.168.4.3</ifIpAddr><subnetMask>255.255.255.0</subnetMask><addrType>main</addrType></am4CfgAddr></am4CfgAddrs></ipv4Config></interface></interfaces></ifm></data>
</rpc-reply>Process finished with exit code 0

http://chatgpt.dhexx.cn/article/ahcuX5LS.shtml

相关文章

Java NetConf 使用

1. 参考资料 工具包GIT地址 : https://github.com/Juniper/netconf-java 使用教程 : https://www.juniper.net/documentation/cn/zh/software/junos/netconf-java-toolkit/topics/task/netconf-java-toolkit-program-creating-and-executing.html 2. 下载&编译工具包 # 1. …

ComNet

1 ComNet 简介 ComNet设计的核心思想就是用深度神经网络来代替OFDM接收机&#xff0c;和FC-DNN类似。但是最大的不同之处&#xff0c;对接收机进行细化&#xff0c;将接收机分为了为信道估计子网和信号检测子网。每个子网由一个DNN构造&#xff0c;使用现有的简单、传统的解决…

「Python 网络自动化」NETCONF —— Python 使用 NETCONF 管理配置 H3C 网络设备

「Python 网络自动化」系列文章总目录 Nornir 中文手册——基于 Nornir3.0 官方文档的不完全翻译 文章目录 NETCONF 简单介绍NETCONF 协议结构NETCONF 报文结构请求报文格式报文回复格式 NETCONF 配置数据库NETCONF 支持的操作 实验操作基础环境配置网络环境设备配置代码环境 …

OF-CONFIG和NETCONF协议

一、OF-CONFIG协议 1.1 OF-CONFIG设计需求 1.1.1 实现对OF v1.3.1协议设备进行配置的设计需求 1.1.2 实现操作运维的设计需求 1.1.3交换机管理协议需求 1.2 OF-CONFIG协议的数据模型 1.3 OF-CONFIG的传输协议 二、NETCONF协议 2.1 NETCONF协议相对SNMP协议的优点 2.2 …

netconf是啥

netconf是啥 1 历史路由器配置方法&#xff1a;2 问题来了3 解决4 Netconf 是什么参考 1 历史路由器配置方法&#xff1a; 传统路由器配置方法中&#xff0c;以路由器来看&#xff0c;那就要去官网上查看文档&#xff0c;学习产品文档&#xff0c;然后在交换机上输入命令&…

从NETCONF/YANG看网络配置自动化

阅读冗长的NETCONF/YANG的RFC文档是相当乏味枯燥的&#xff0c;结合开发实践&#xff0c;本文试图删其繁&#xff0c;撮其要&#xff0c;给出NETCONF/YANG的轮廓和要点。 引子 NETCONF和YANG的目的是以可编程的方式实现网络配置的自动化&#xff0c;从而简化和加快网络设备和服…

SDN之NETCONF Call Home

本文主要内容都来自于今年二月发布的RFC8071 - NETCONF Call Home and RESTCONF Call Home&#xff0c;该RFC从2015年4月提出到最终发布一共修改了17个版本&#xff0c;其间修改内容可以点击查看详细内容。 介绍 NETCONF Call Home支持两种安全传输网络配置协议分别是Secure …

NETCONF原理

NETCONF简介 网络配置协议NETCONF&#xff08;Network Configuration Protocol&#xff09;提供一套管理网络设备的机制&#xff0c;用户可以使用这套机制增加、修改、删除网络设备的配置&#xff0c;获取网络设备的配置和状态信息。通过NETCONF协议&#xff0c;网络设备可以提…

NETCONF YANG原理

NETCONF YANG原理 网络管理技术背景NETCONF协议介绍YAGN建模语言介绍RESTCONF协议 网络管理技术背景 前言 对于设备的配置管理&#xff0c;工程师更习惯使用CLI命令行的方式与设备交互。该方式简单直接&#xff0c;便于理解。但是在网络自动化领域&#xff0c;CLI方式与设备交…

NetConf Brower使用

1.下载MG-SOFT NETCONF Browser Professional Edition 官方地址 2. 安装MG-SOFT NETCONF Browser 下一步下一步操作即可。 3.连接设备 打开的时候选择Continue即可&#xff0c;无须license。 点击File->Connect ,如下&#xff1a; 输入设备用户名称&#xff1a; 这…

Netconf协议学习笔记

Netconf简介 网络配置协议NETCONF&#xff08;Network Configuration Protocol&#xff09;提供一套管理网络设备的机制&#xff0c;用户可以使用这套机制增加、修改、删除网络设备的配置&#xff0c;获取网络设备的配置和状态信息。通过NETCONF协议&#xff0c;网络设备可以提…

NETCONF、RESTCONF和YANG

目录 一、NETCONF、RESTCONF和YANG是之间什么关系&#xff1f; 二、Netconf简介 2.1、一般使用工具&#xff1a;MG-Soft 简介 三、Netconf YANG 原理与实践 3.1、NETCONF协议 3.2、YANG建模语言 3.3、RESTCONF协议 网管协议&#xff1a; SNMP&#xff08;基于UDP&#…

NETCONF--从NETCONF/YANG看网络配置自动化

阅读冗长的NETCONF/YANG的RFC文档是相当乏味枯燥的&#xff0c;结合开发实践&#xff0c;本文试图删其繁&#xff0c;撮其要&#xff0c;给出NETCONF/YANG的轮廓和要点。 引子 NETCONF和YANG的目的是以可编程的方式实现网络配置的自动化&#xff0c;从而简化和加快网络设备和服…

Netconf

Netconf属于软件定义网络的管理和控制协议。 ETCONF协议&#xff0c;由RFC 6241定义&#xff0c;用以替代命令行界面(command line interface, CLI)、简单网络管理协议(Simple Network Management Protocol, SNMP)以及其它专有配置机制。管理软件可以使用NETCONF协议将配置数据…

NetConf简介之一篇文章读懂NetConf

一、背景 有的人早上不起床刷手机&#xff0c;有的人起床之后再卫生间刷手机&#xff0c;有的人在上班的地铁上刷手机&#xff0c;有的人在下班之后的班车上刷手机&#xff0c;有的人在晚上不睡觉刷手机。这其中有许多离不开技术&#xff0c;其中有一个技术就是网络。 网络互…

NETCONF协议详解

目录 目录概述NETCONF11协议详解 1 安全传输层2 消息层 21 hello 211 几种常用的能力 22 rpc和rpc-reply23 notification 3 操作层 31 get32 get-config33 edit-config34 copy-config35 delete-config36 lock37 unlock38 close-session39 kill-session 4 内容层 标准地图相关网…

netconf简介

简介 根据rfc6241 Network Configuration Protocol (NETCONF)介绍&#xff0c;netconf协议提供一种简单的机制&#xff0c;通过该机制网络设备进行管理。协议可以是设备对外提供一套完整并且规范的配置接口&#xff0c;管理者可以通过这些标准接口对设备进行配置操作。 netconf…

五、南向接口协议(四)——NetConf协议

文章目录 1 什么是NetConf协议2 NetConf协议的其他特点3 NETCONF协议框架3.1 NETCONF传输层3.2 NETCONF消息层&#xff08;采用RPC协议&#xff09;3.3 NETCONF操作层&#xff08;NETCONF核心&#xff09;3.4 NETCONF内容层 4 操作举例4.1 <get-config>4.2 <edit-conf…

Netconf网络配置协议讲解

目录 什么是Netconf 为什么要提出Netconf 数据的类别 传统网络配置协议 Netconf配置协议 Netconf协议架构 安全传输层 消息层 操作层 内容层 Netconf配置设备流程 通过Python进行Netconf配置 Restconf 什么是Netconf NETCONF&#xff08;Network Configuration Pr…

netconf协议

最近项目中要用到netconf协议也和设备之间进行连接&#xff0c;学习一下netconf协议并且记录下来 一&#xff1a;什么是netconf netconf协议也可以叫做网络配置协议&#xff0c;它提供了一套管理网络设备的机制&#xff0c;用户可以使用这套机制增加&#xff0c;修改&#xff0…