ARTICLE DETAIL

资讯详情

深耕商务建站与企业官网运营的一线实战洞察。

yang模型中rpc_NETCONF、YANG、ncclient理论和实战(上)

yang模型中rpc_NETCONF、YANG、ncclient理论和实战(上) 在该等背景情形之下, IETF于2006年12月首先发布了RFC 4741, 此即那个基于XML, 用以取代CLI、SNMP的网络配置和管理协议 , 在接下来几年历经多次修改调整加以修订后, IETF又于2011年6月将涵盖着RFC 6241作为最终稿予以再度发布。年龄虽说不算小, 然而要是倒退10年, 你去问一个网络工程师什么是更别提YANG了, 大概率你会瞧见对方一脸懵地看着你, 因为那时主流的思科IOS设备压根不支持, 当时思科对此并不感兴趣, 而是自行弄出了分别在2007年和2012年诞生的WSMAWeb Agent和onePK这两个API, 是自己关起门来搞的。若干年里, 顺着思科的行进轨迹, 从CCNA开始, 历经CCNP, 再到CCIE, 一路艰难磨炼成长起来的网络工程师们全然未曾听闻过存在着这样一项极为小众的技术, 其在书本中不会被讲授, 考试时也不会有涉及, 工作期间基本上也用不上。时光流转, 过去十年情况不同了, 如今随着SDN以及网络运维自动化技术的迅猛兴起此技术在诞生十多年后, 终于在传统计算机网络这个领域里获得了一定程度的曝光机会, 接着与gRPC一同借助这样的时代契机, 成功站在了风口之上顺势腾飞起来。理论部分对于相关的理论部分而言, 互联网络上存在诸多的资料情形状态, 然而最为具有权威性的必然是RFC 6241, 在此处进行一番总结之举动作出说明呈现出来:1. 那个被称之为的协议框架分成了四层, 自低向高依次是, 安全传输这一层, 消息处于这一层, 操作处于这样一层还有内容处于这样一层:2. 其编码格式是基于XML的, 基于XML去做网络管理, 主要原因是看中了XML所具备的强大的数据表示能力, 对于初学者而言, XML实际上并不怎么友好, 比不上JSON、YAML那般易读且容易上手, 不过这只是我个人的观点。3. 网络架构乃是由客户端以及服务器共同成构的, 我们所用的主机即为客户端所在之处, 服务器涉及的是被操控的交换机或者路由器, 其默认所使用的端口是830并且能够予以更改。4. 在协议里头, 存在着一项关键的概念, 被称作数据集( ), 数据集具备这样的作用, 那就是用于存放一份配置数据的备份, 其目的在于保障设备能够从开机之际的初始状态, 顺利进入到它能够正常运行的工作状态(简单来讲, 就是更改了配置以后需要进行write操作, 否则重启设备之后配置将会丢失)。数据集具体分为(类似于思科的那种结构), Start-up(类似于思科的那种模式)和(思科IOS - XR会运用到的那种类型, 总共可以划分出有三种类型, 而其中唯有这样一种情况, 是强制要求必须使用的。讲完的理论部分下面再来看看YANG。什么是数据模型在讲YANG之前我们首先需要知道什么是数据模型。数据模型所起的作用, 在于对一组带有统一标准的数据予以描述, 并且利用清晰明确的参数以及模型, 把数据的呈现朝着标准化、规范化的方向转变。打个比方, 不同的厂商之间, 对于一些属于行业范畴的术语的规范以及具体参数, 存在着较为显著的差异, 比如说, 用于区分路由协议优先级的要素, 在思科那边被称作管理距离( )的事物, 到了另一边却被改称为Route , 并且, 它们给予各个路由协议的AD和RP值也是不尽相同的, 比如说, RIP在思科的AD是120, 在的RP为100 , 再比如说, OSPF在思科的AD为110, 而在这边, OSPF还被划分成OSPF (RP值为10), OSPF (RP值为150)。虽不同厂商间, 于某些技术标准, 有着这般那般之差异, 然对绝大部分技术, 其仍遵循统一标准, 诸如VLAN。用来描述VLAN的数据无外乎如下几点1. VLAN ID (1-4096的整数rw类型)2. 作为用字符串来进行代表的VLAN名称, 其类型为rw , 这就是VLAN Name了。3. VLAN状态该状态是以枚举形式来体现的, 有表示为down/up的情况还有表示为/no的情形, 属于ro类型。有一套模型, 能看到类似于这样的情况, 它明确定义了数据的具体内容, 还规定了其数据的类型, 以及相应的范围, 并且包含rw、ro类型, 像这样的一套模型, 就被称作数据模型。YANGYANG 是一种语言, 这种语言是“以网络为中心的数据模型语言” , 它在2010年10月被提出, 当时是由IETF提出的, 那个时候是在RFC 6020中提出的, 2010年10月也就是终稿发布之前的一年, 其诞生的时候目的很明确, 它一开始是专门为量身打造的建模语言, 不过现在它也被REST采用, 现在它还被其他协议采用。YANG模型(Model)YANG模型被划分成标准Open或者以及私有这两种类别, 当中标准类别里较为知名的存在由IETF、IEEE等具有国际知名度机构所制定的那种模型就中由IETF制定的YANG模型最为常见。除开标准YANG模型以外, 各个厂家依据自家产品存有差异设计了拥有私有性质的YANG模型, 像思科、、华为、、诺基亚等亦具自家的YANG模型。那其中思科的YANG模型, 它又被划分成了Cisco和Cisco这两部分, 这里面的前者, 是思科旗下所有诸如IOS-XE、IOS-XR、NX-OS那么些操作系统通用的YANG模型, 里头的后者则是在一些操作系统上独占的YANG模型。YANG模块()模块, 其为YANG所定义之基本单位, 一个模块, 既能用以去定义一个单一的数据类型, 又能够去增加一个业已存在的数据模型以及其他的节点。这是一个名为ietf-的。它是经IETF制定的。其作用是把设备端口参数予以描述的YANG模块。在下载YANG模块大部分标准的、私有(的 YANG 模型)存放在(某地方)上, 截至 2020 年 9 月, 标准模型里有由 IETF、IEEE、ETSI 等国际知名组织和协会制定的 YANG 模块, 而私有模型中有由包含思科、华为、诺基亚、富士通在内的厂商自己制定的 YANG 模块。上述所有标准以及私有的YANG模型, 还有与之对应的模块, 我们能够借助git clone来进行下载。git clone https://github.com/YangModels/yang.git下载完成以后, 当前的目录之中多出了一个被叫做yang的子目录, 在这个子目录里, yang//ietf/RFC内部存放着全部经由IETF制定而成的YANG模块, 这里面还涵盖上面我们所举例子里边的ietf-模块不在截图范围之内。用cat ietf-.yang查看该模块的内容你或许会发问, 怎会跟上边咱们所举例子里的ietf - 模块内容不一样呢, 是由于上面那个例子之中, 我们是以树形格式也就是Tree View去展开ietf - 模块的, 而在这儿运用cat查看的却是该模块的源代码, 我们能够借助pyang这个模块, 以树形格式的形态去查看一个YANG模块的详细结构。Pyang那专为YANG单独开发的开源模块Pyang, 具备三个主要功能, 其一, 是用于验证YANG模块代码的精确性, 其二, 是把YANG模块转变为其他格式如我们之前所讲的树形格式, 其三, 是自YANG模块里生成代码, 在此我们着重讲述怎样利用Pyang将刚才提到的ietf-.yang这个模块转化为树形格式。首先通过pip下载安装pyang循着路径, 回到那名为 yang//ietf/RFC 的目录之下, 借助命令 pyang -f tree ietf - 所具备有的功能, 能够把那被称作 ietf - 的 YANG 模块, 转变为树形模式予以查看。实验环节先阐述完理论之后, 紧接着开展实验。此实验的环境极为简单, 仅仅是一台7主机与一台思科3850的交换机进行直接连接。实验拓扑主机操作系统 7交换机型号WS-C3850-48P-SOS版本用于交换机之处: 是IOS-XE 16.09.05 , 此版本名为Fuji。主机IP: 172.16.224.27交换机IP: 172.16.224.28实验设计的端口为交换机的/0/33其初始配置如下开始实验前先提几点使用的重点实验步骤: 首先是要在交换机上进行开启操作, 其方法是比较简单的, 是在全局模式下面输入 -yang 以及 ssh ( ssh 是可选的, 前面理论部分已经讲述过了, 默认所使用的是 SSH 作为安全传输层协议, 所以 ssh 这条命令默认情况下就是处于开启状态的, 并不需要特意去进行配置) 就可以达成。其余的关于交换机的初始配置内容, 像是开启 SSH 以及创建特权级别为 15 的用户等, 就请读者自己去完成, 在这里就不做讲解了。SW(config)#netconf-yang SW(config)#netconf ssh (默认是开启的)2. 回到主机通过SSH访问交换机的830端口3. 当连接达成成功状态之后, 交换机就会回复出一个hello包, 还会有一长串的一连串内容, 这一系列内容就是该交换机所支持的yang model, 其中包括思科方面的, 还有IETF的, 鉴于回显的内容数量过多, 所以在下图当中仅仅截取了一部分内容用来作为相应的演示:4. 随后, 我们进行复制粘贴, 将下列 XML 代码用于向交换机回复一个 hello 包, 交换机不会做出任何回应, 之后 , 主机和交换机之间的便建立成功。urn:ietf:params:netconf:base:1.0]]]]这里简要讲述一下XML语言之行文的格式以及所包含的内容, XML指令是以起始的, 当中:里5. 发送, 如下的, XML代码, 向交换机, 查询, Gi1/0/33端口, 的配置:1/0/33]]]]紧跟着, 交换机会针对一个rpc -reply包作出回复, 这个包是下图红框里的那部分, 后续的内容呢便是我们所请求的Gi1/0/33端口的配置信息, 这里涵盖了该端口下面的内容, 还有IP地址, 而IP地址此时是为空的。6. 要是你感觉交换机所回复的, 那个rpc - reply不太容易去读, 那么你能够把它从事后, 复制粘贴到Code ()里头, 借由Code下面XML所提供的Tree View, 或者是藉由/, 从而使得交换机的rpc - reply内容, 变得更加容易去读。注意复制RPC-REPLY内容时不要把末尾的使之放在其中整体一并执行了复制操作, 在此方面其前提是它们并非属于那种XML所定义的语言范畴里头部分, 不然的话Code操作就将出现报错情况:7. 下面这段XML代码的使用, 是接下来我们要用来查询交换机的 , 请自行尝试, 这里就不放截图了:这里, 我是故意不做那个缩进的, 目的在于告诉你一件事, 这件事就是 XML 并不存在对你实行严格要求代码缩进这一情况。]]]]8. 拿下面这段XML代码借助它来给端口Gi1/0/33增加上一个, 其包含的内容是说test XML, 表明这是我们经由配置所达成的:1/0/33test XML]]]]这里, 我们运用了前文理论部分所提及的基本操作, 一般而言, 其下面会衔接一个, 用于表示需要去修改配置的目标, 此目标表示的乃是数据集, 在这里, 我们所要更改的便是这个数据集也能够使用/, 后面所讲的是这里我们采用了前面讲到的思科私有YANG模型。回到交换机上验证Gi1/0/33的配置9. 最后, 我们运用下面这段XML代码, 为Gi1/0/33配置一个IP地址, 此IP地址为10.1.1.2 , 子网掩码是/24。1/0/33 10.1.1.2 255.255.255.0]]]]之后回到交换机上验证Gi1/0/33的配置和YANG相关的理论以及实战讲到这儿就先告一段落了。能够看到, 借由复制粘贴XML代码这种操作手段, 针对传统工程师而言, 是极为不适应的。虽说不太易于运用, 然而确实属于SDN时代网工们须掌握的技能当中的一项。下一篇呢, 我会接续讲解专门面向客户端所开发的第三方模块, 瞧瞧结合起来是否会更简便一些。
返回列表
PREV
查看更多资讯
NEXT
返回资讯列表