首页 > 其他分享 >NETCONF、XML、YANG之间的关系

NETCONF、XML、YANG之间的关系

时间:2023-04-02 22:31:36浏览次数:68  
标签:NETCONF XML 协议 RPC YANG 传输层

目录

  • NETCONF、XML、YANG之间的关系
  • 参考引用
  • 理解
  • XML
  • YANG
  • 操作层
  • 数据库
  • 基本能力
  • 标准能力集
  • 扩展能力集
  • 总结

NETCONF、XML、YANG之间的关系

参考引用

https://support.huawei.com/enterprise/zh/doc/EDOC1100202502/9698cb86

https://support.huawei.com/enterprise/zh/doc/EDOC1100278535/ddcce2b6#ZH-CN_CONCEPT_0139427258

IETF在2003年5月成立了Netconf工作组,该工作组主要是为了提出一个全新的基于XML的网络配置(NETCONF)协议而成立的。

理解

NETCONF本身并不是一个协议,并没有一种具体的协议叫NETCONF,NETCONF更像是一种方法论。像是TCP/IP协议栈一样,并没有一种协议叫TCP/IP,TCP/IP是一组协议的集合,每一层都拥有不同的协议,NETCONF也是如此,NETCONF本身有四层,相比TCP/IP它比较简单,没有标准体、对等体之分,只有就一个四层的标准体,如下所示:

  • 内容层
  • 操作层
  • 消息层: RPC
  • 传输层:ssh、https

TCP/IP协议栈每一层都有不同的协议,NETCONF也是如此,比如传输层就可以有多种协议可以选择。
NETCONF的传输层是用来承载数据并保证其安全的,NETCONF对传输层的要求不仅仅是承载数据,还要保证其安全,所以在传输层里面的协议可以有ssh、或https这样基于密码学设置的协议或应用.

NETCONF、XML、YANG之间的关系_XML

在消息层,只有一个协议叫RPC,RPC是干什么的?比如新建一个文件,那记事本的进程会向内核发起一个"写入"的系统调用,文件和内核处于同一个机器 ,这种调用属性本地系统调用。如果你是在一个NFS的目录里面写入一个文件,这个目录的实体并不在本地,那NFS的客户端就会向NFS的服务端发起一个“写入”的系统调用,里面清清楚楚的写着将此文件写入,这种通过网络发起的系统调用,这就是RPC,它在NFS当中的具体表现就是TCP/IP当中的一层,可以抓包看到。

而消息层和操作层相当于TCP/IP的应用层,这里面的就是格式化的内容了。这个内容当中也是分层了消息层和操作层。那封装过程肯定从上层向下层封装,从内容层开始产生数据,由消息层包裹起来,然后整体做为数据被包裹在RPC层,然后整体再被当成数据被包裹在传输层当中,这与传统的TCP/IP封装过程是类似的。

XML

一种比HTML更加强悍的标记语言,起源于1996年。XML是一种界定文本数据的简便而标准的方法。它曾经被人称作“Web上的ASCII码”。就好像你可以使用自己喜爱的编程语言来创建任何一种数据结构,然后同其他人在其他计算平台上使用的其他语言来共享一样。XML的标记用来说明你所描述的概念,而属性则用来控制它们的结构。所以,你可以定义自己所设计出的语法并同其他人共享。

XML一种标识语言,由于非常的强大,强大到RPC的消息也能在XML标记语言当中得以体现,当时正值NETCONF正需要一种强悍的标记语言,于是NETCONF就在XML标记语言的基础上开始设计,NETCONF设计了四层,除了传输层不能被在XML标记语言当中表示之外,内容层、操作层、甚至于消息层都能一并在XML当中得以体现。

YANG

各设备供应商在提供设备的同时,为方便管理都会提供一套独立的管理方法(比如使用不同的命令行),这些管理方法之间是独立的,不同类型的设备不能通用。随着网络规模的增大、设备种类的增加,使用传统的NETCONF管理已不能适应当前型号繁多的设备管理,为了能够统一管理、配置、监控网络中的各类设备,YANG应运而生。

所以YANG就是各种要求,就像是写论文的要求,就和严格遵守,YANG模型要求文件必须包括以下信息:

  1. 模块定义:一个模块可以从其它模块中导入数据,满足什么要求之后可以扩展
  2. 模块的名称空间,名字空间的名字必须全局唯一
  3. 对版本的要求
  4. 介绍信息,类似于注释信息

YANG是NETCONF(网络配置协议)的数据建模语言,客户端可以将RPC操作编译成XML格式的报文,XML遵循YANG模型约束进行客户端和服务器之间通信。

NETCONF、XML、YANG之间的关系_XML_02

内容层:YANG格式
操作层:YANG格式
消息层:YANG格式
传输层:ssh、https
# YANG提供RPC关键字,可以对其模型顶层的操作进行定义。
<rpc message-id="101" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
 <activate-software-image xmlns="http://acme.example.com/system">
  <image-name>acmefw-2.3</image-name>
 </activate-software-image>
</rpc>

操作层

数据库

在操作层可以指定对哪一个数据库进行操作

NETCONF、XML、YANG之间的关系_YANG_03

基本能力

NETCONF协议定义了基本能力base,基本能力定义了一系列操作,用于修改数据库配置、从数据库获取信息等。NETCONF基本能力定义的操作只是NETCONF必须实现的功能的最小集合,而不是功能的全集。

NETCONF支持的基本操作如下:

NETCONF、XML、YANG之间的关系_YANG_04

标准能力集

除了基本操作能力,NETCONF协议还定义了一系列标准能力集。这些标准能力定义了一些新的操作,使NETCONF功能更加强大,并使其在容错性、可扩展性等方面得到加强,最终将有利于实现基于NETCONF的开放式网络管理体系结构,为设备厂商扩展功能提供有效的途径。

扩展能力集

除了NETCONF定义的能力集,设备制造商也可以定义自己的能力集,以实现NETCONF定义以外的特色功能。

总结

  1. NETCONF一种方法论或协议集,是根据XML这种标记语言设计的,早期对建模语言没有具体要求。
  2. 随着设备品牌和型号越来越多,专门设计YANG这种建模语言让大家统一标准,由于YANG在设计之初就是为了NETCONF准备的,YANG也是以XML这种标记语言设计的。
  3. 由于两者都是通过XML语言设计的,前者又需要后者来规范标准,于是就这么愉快的在一起了。
  4. YNAG贯穿了消息层、操作层、内容层,这三层的内容全都都在YANG中有规定的规范,并最终以XML得以体现,比如YANG提供RPC关键字,专门用来定义消息层,但最终YANG起核心作用的还是在内容层,这一点要注意。
  5. YANG并没有规定传输层,所以在传输层协议的选择比较灵活,华为选择使用ssh。

问:如果所有厂商的netconf都是遵循业界标准来定义的,那是不是说,我在IOS-XE导出做的设备配置xml,可以直接应用在其他厂家支持netconf的路由器上?
答:这是不太行的通的,因为YANG文件有多种类型,不仅有标准的YANG,还有私有的YANG,如果是这样,那意思就是说只有遵循标准YANG编写的程序,在各大厂商上都能运行,如果是用厂商私有的YANG编写的程序,就只能自己跟自己玩。

问:如何看待XML与YANG之间的关系?
答:XML就只是一种标记语言,说白了就是一种即适合人类读取也适合机器读取的字符串文本而已,它规定了某种“形式”格式,就像我们写作文段落前面要空两个格。YANG是一种建模语言,说白也是一种约束规定,它规定了你就得把某种东西做成什么样子,比如它规定在网络设备内部不仅仅仅把IP地址当做是一个字符串处理,而是应该当做某种字典或其它的数据格式,这就相当于你在作文里面描述一个女性的时候不能用帅这个词,而应该用漂亮、温柔之类的词,这样无论任何人都知道你描述的人是位女性。XML规定了你要写成什么样的格式,而YANG规定了你要怎么写;



标签:NETCONF,XML,协议,RPC,YANG,传输层
From: https://blog.51cto.com/u_11580232/6165191

相关文章

  • mybatis OGNL表达式,xml查询中使用java的变量值
    1、参考struts2ongl访问静态变量与访问枚举Ognl表达式基本原理和使用方法2、java类packageorg.jeecg.mgt.cms.constant;publicclassEAd{publicstaticfinalIntegershow1=1;publicstaticfinalclassAA{publicstaticfinalIntegershow2......
  • Current request is not a multipart request 在tinymce中用XMLHttpRequest上传图片
    1、尝试解决。将header的content-type参数的值改为multipart/form-data。接着就报了therequestwasrejectedbecausenomultipartboundarywasfound 2、网上的方法都试遍了,发现还是无法找到解决方法。 最后的解决办法:将GET请求方法,改为POST就可以了。 ......
  • SAP UI5 XML 视图中数据绑定路径语法的难点和易混淆点的专题讲解
    本教程我们花费了四个篇幅的文章,讲解了SAPUI5XML视图里控件的数据绑定的语法:SAPUI5应用开发教程之七-JSON模型初探SAPUI5应用开发教程之八-多语言的支持SAPUI5应用开发教程之十七-聚合绑定在UI5复合控件中的使用SAPUI5应用开发教程之十八-SAP......
  • C#:解析XML文件的C#指南
    XML是一种常用的数据交换格式,C#提供了许多内置的类和方法来解析和操作XML文件。在这篇文章中,我们将介绍如何使用C#解析XML文件。读取XML文件要读取XML文件,我们可以使用XmlDocument类。以下是一个示例代码,它读取名为example.xml的XML文件并打印其内容:usingSystem;usingSys......
  • logback.xml配置分享
    前言个人习惯,仅供学习参考功能日志异步输出日志每天自动归档一次日志文件达到一定大小时,也会进行归档归档时,进行zip压缩,实测100MB压缩后为400KB左右归档的日......
  • spring-MVC web.xml springmvc-servlet.xml 配置文件
    springMVC配置文件web.xml<?xmlversion="1.0"encoding="UTF-8"?><web-appxmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns......
  • 在mybatis的xml文件中如何使用test标签
    1.等于条件的两种写法①将双引号和单引号的位置互换<!--test标签用来条件判断,为true则执行标签下的sql--><iftest='testString!=nullandtestString=="A"'>......
  • 001-Idea用法-在pom.xml文件中增加模板注释
    XML文件注释快捷键为:Ctrl+Shift+/  今天发现,在pom.xml文件中写注释,输入<!,没有任何提示,想写个完整的注释,还需要<!-- -->把这一串完整的写进去,然后中间空两格,再写中间......
  • idea注释模板 pom.xml 配置(经典)
    方法注释生成:Setting->Editor->LiveTemplates,自定义:TemplateGroup,再定义:MethodTemplate。**@ClassName$name$*@DescriptionTODO*@Param$params$*......
  • webxml attribute is required (or pre-existing WEB-INF/web.xml if executing in up
    发生缘由Maven项目打包出错了问题解决Maven工程正常的目录结构为:项目的根目录:   |--src#源码   |  |--main#主工程代码   |  |......