热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

YANG,NETCONF,RESTCONF,XML之间的关系

本文为转载,原连接:https:www.zhihu.comquestion40822826简单说一下吧做要解释这些要从netconf说起。netconf

本文为转载,原连接:https://www.zhihu.com/question/40822826


简单说一下吧 做要解释这些要从netconf说起。 netconf是什么? netconf是一种协议用于给网络设备发送配置。 什么意思呢,比如我有一台路由器,我想配一条静态路由,正常的办法是什么呢,我连上面去打命令。
这是最最一般的配置方法了,所以最开始我们网络工程师很吃香,特别是会各种机器设备配置的人。
netconf你可以理解成一种通用的协议,它就是那个会各种配置的人,你只要吩咐他做什么事情,他就会按你说的去做。
这样我的配置就可以写成脚本了,而且关注点变成了配置数据的本身而不是设备的相关命令。
理想的情况,所有的设备都用相同的配置,netconf会自己处理他们到相应的机器的上。听上去很完美是不是?
然而现实是骨干的,网络设备的配置结构往往是是不同的。实现同样的功能的不同设备需要的配置结构也往往不同。比如思科设备接口上配置一个address 只要知道接口名 ip版本 和地址掩码就足够了 但是juniper的机器上不但要知道这些还要额外提供一个unit 号来标识逻辑接口。
这就TM尴尬了。
特别是现在nfv大潮下,nfv是干毛的,网络功能虚拟化,既然虚拟化我就更关注的是功能本身而不是实现这个功能的设备,对于管理人员来说,他往往就只想告诉一套nfv系统,我要什么功能,比如 我要一号站点能联网我要DHCP服务我要VPN,而单纯利用netconf是无法配置的,因为还要求具体的配置结构。这可咋整!
没事儿,我们只要给对应的设备所需的配置结构来个模型不就行了?到时候不就是完形填空吗,yang model就是吃这口饭的,我只需知道对应设备的yang model就可以向管理者请求对应设备所需的信息了,具体结构上的问题有yang model来解释。
什么叫做结构上的问题呢?还是举刚才那个例子
思科为啥不需要unit号来指定逻辑端口呢?因为它的逻辑端口藏在接口名里
所以它的配置类似这样


接口名{
ip{
address x.x.x.x
mask x.x.x.x
}
}


但是juniper的额外需要一个unit号来表示逻辑端口
所以它的配置类似这样


接口名{
unit x {
ip{
address x.x.x.x
mask x.x.x.x
}
}
}


当然实际上他们的yang model 要比这个复杂的多,比如juniper还有family 这个层级这里就是举一个例子
但是对于上层用户管理来说,他只用填逻辑口号,接口名,地址以及ip版本就可以了,他不需要知道具体到底实际的配置长啥样了,因为有可能及其复杂233.
是不是感觉很完美了,这样NFV可以让服务提供商随意换设备了,底层是思科华为还是juniper没啥所谓,反正只要有yang model我们就知道到底怎么配一台机器了。
XML呢,刚说过netconf是一种协议,它实际是个服务器,接受客户端发来的请求来配置自己,所以每台设备上都有一个netconf server,这里的信息交互就是用xml来实现的,所以yang model其实就是一种描述XML结构的模型。
好了,继续向下说到restconf了,这要从rest api说起,需要读者有一点web开发的知识。什么是rest api呢?
说白了这是一种利用HTTP协议来做RPC的办法。我们做NFV呢往往会有一个dashboard,管理员可以利用这个dashboard来配置他想要的功能,这个dashboard很多时候都是一个web application,web application有很多好处,比如客户端可以轻松跨平台,只要有浏览器就行。轻松远程接入等等好处。现代的很多web application往往是这样的结构 一个前端,可以理解为客户端,一个后端,往往就是一个web service了。而REST api就是web service的一种。这里不具体展开了,没有几千字是说不完的。
那么rest api 往往是这样工作的接受一个json格式的数据,然后根据请求的方法和url do something。
我们关注NFV,简单设计一个NFV的dashboard无非就是让用户能去配置机器嘛,
最简单的结构无非就是这样


dashboard
|
| config
|
web service
|
| config + yang
|
netconf client
|
|request XML
|
|
device


这个restconf的作用就在web service 那一层,简单的讲就是怎么把你发来的config和所请求的yang映射到一个URL上的,有了这个URL就能把yang model的数填了,填完了你就有对应的设备的配置结构了,然后根据这个在生成xml就可以把请求发到对应的设备上配置啦。



总结:
- NETCONF与RESTCONF是一个纬度,都是用来操作和维护网络设备的协议,RESTCONF是轻量级NETCONF。类似协议还有SNMP。协议定义了一线基本的增、删、改和查的方法。
- XML是一种数据表示格式,类似的还有JSON格式,表达用户要操作的数据本身。但数据是千变万化的,什么才是符合设备期望的格式呢?
- YANG是描述业务数据模型的语言,表达数据的模板,描述什么才是符合设备期望的数据,类似C语言数据结构,有了它,就知道怎么填空。




推荐阅读
  • 我有一个SpringRestController,它处理API调用的版本1。继承在SpringRestControllerpackagerest.v1;RestCon ... [详细]
  • 本文详细介绍如何利用已搭建的LAMP(Linux、Apache、MySQL、PHP)环境,快速创建一个基于WordPress的内容管理系统(CMS)。WordPress是一款流行的开源博客平台,适用于个人或小型团队使用。 ... [详细]
  • SpringMVC RestTemplate的几种请求调用(转)
    SpringMVCRestTemplate的几种请求调用(转),Go语言社区,Golang程序员人脉社 ... [详细]
  • 远程过程调用(RPC)是一种允许客户端通过网络请求服务器执行特定功能的技术。它简化了分布式系统的交互,使开发者可以像调用本地函数一样调用远程服务,并获得返回结果。本文将深入探讨RPC的工作原理、发展历程及其在现代技术中的应用。 ... [详细]
  • 本文详细介绍了网络存储技术的基本概念、分类及应用场景。通过分析直连式存储(DAS)、网络附加存储(NAS)和存储区域网络(SAN)的特点,帮助读者理解不同存储方式的优势与局限性。 ... [详细]
  • Kubernetes 持久化存储与数据卷详解
    本文深入探讨 Kubernetes 中持久化存储的使用场景、PV/PVC/StorageClass 的基本操作及其实现原理,旨在帮助读者理解如何高效管理容器化应用的数据持久化需求。 ... [详细]
  • 阿里云ecs怎么配置php环境,阿里云ecs配置选择 ... [详细]
  • 采用IKE方式建立IPsec安全隧道
    一、【组网和实验环境】按如上的接口ip先作配置,再作ipsec的相关配置,配置文本见文章最后本文实验采用的交换机是H3C模拟器,下载地址如 ... [详细]
  • 本文介绍如何使用 Angular 6 的 HttpClient 模块来获取 HTTP 响应头,包括代码示例和常见问题的解决方案。 ... [详细]
  • 简化报表生成:EasyReport工具的全面解析
    本文详细介绍了EasyReport,一个易于使用的开源Web报表工具。该工具支持Hadoop、HBase及多种关系型数据库,能够将SQL查询结果转换为HTML表格,并提供Excel导出、图表显示和表头冻结等功能。 ... [详细]
  • ssm框架整合及工程分层1.先创建一个新的project1.1配置pom.xml ... [详细]
  • Spring Boot 中静态资源映射详解
    本文深入探讨了 Spring Boot 如何简化 Web 应用中的静态资源管理,包括默认的静态资源映射规则、WebJars 的使用以及静态首页的处理方法。通过本文,您将了解如何高效地管理和引用静态资源。 ... [详细]
  • 本文详细介绍了Java中实现异步调用的多种方式,包括线程创建、Future接口、CompletableFuture类以及Spring框架的@Async注解。通过代码示例和深入解析,帮助读者理解并掌握这些技术。 ... [详细]
  • 深入解析Hadoop的核心组件与工作原理
    本文详细介绍了Hadoop的三大核心组件:分布式文件系统HDFS、资源管理器YARN和分布式计算框架MapReduce。通过分析这些组件的工作机制,帮助读者更好地理解Hadoop的架构及其在大数据处理中的应用。 ... [详细]
  • 深入解析Spring Cloud微服务架构与分布式系统实战
    本文详细介绍了Spring Cloud在微服务架构和分布式系统中的应用,结合实际案例和最新技术,帮助读者全面掌握微服务的实现与优化。 ... [详细]
author-avatar
寤丨惘_191
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有