数据模型与网络自动化 (3)

数据模型与网络自动化

这时就可以通过 Pyang 工具,来浏览内容:

root@a8af90280cf1:/src/633# pyang -f tree ietf-interfaces.yang module: ietf-interfaces +--rw interfaces | +--rw interface* [name] | +--rw name string | +--rw description? string | +--rw type identityref | +--rw enabled? boolean | +--rw link-up-down-trap-enable? enumeration {if-mib}? +--ro interfaces-state +--ro interface* [name] +--ro name string +--ro type identityref +--ro admin-status enumeration {if-mib}? +--ro oper-status enumeration +--ro last-change? yang:date-and-time +--ro if-index int32 {if-mib}? +--ro phys-address? yang:phys-address +--ro higher-layer-if* interface-state-ref +--ro lower-layer-if* interface-state-ref +--ro speed? yang:gauge64 +--ro statistics +--ro discontinuity-time yang:date-and-time +--ro in-octets? yang:counter64 +--ro in-unicast-pkts? yang:counter64 +--ro in-broadcast-pkts? yang:counter64 +--ro in-multicast-pkts? yang:counter64 +--ro in-discards? yang:counter32 +--ro in-errors? yang:counter32 +--ro in-unknown-protos? yang:counter32 +--ro out-octets? yang:counter64 +--ro out-unicast-pkts? yang:counter64 +--ro out-broadcast-pkts? yang:counter64 +--ro out-multicast-pkts? yang:counter64 +--ro out-discards? yang:counter32 +--ro out-errors? yang:counter32

还可以转换成 js 浏览:

pyang -f jstree ietf-interfaces.yang >> ietf-interfaces.html

数据模型与网络自动化

更多命令可以查看帮助文档。

这时,对于网络工程师来说,可以将其从学习各厂商不同的配置命令转化到学习 Yang Module 中,更加聚焦功能,而不用在花费时间去学习相同的功能不同的命令。

YANG-Suite 介绍

YANG-Explorer 是一个用于浏览 YANG Model 的 WEB 服务,并提供生成 NETCONF RPC payload 等实用的功能。但由于其使用 Flash 编写,但在 2020 12 月后,Flash 已经被禁用,导致该工具无法使用。有兴趣的同学,可以安装老版本带 flash 的浏览器测试学习。

安装可以采用 docker:

YANG

docker pull robertcsapo/yang-explorer docker run -it --rm -p 8088:8088 robertcsapo/yang-explorer

最新 CISCO 很开源了一个产品为 YANG-Suite,基于 YANG-Explorer 拓展了许多功能,并可以使用 docker-compose 启动,兼容性更好,预计未来会主流接受。

比如下面使用其生成 NETCONF RPC Payload

Screenshot showing the selected YangModel, various parameters such as the selected value, mode, datastore, and RPC window with the RPC textbox displaying the RPC

YANG 与 NETCONF

YANG 在早期是专为 NETCONF 而开发的一种语言,后来才被普及到各个语言中,关于 NETCONF 的介绍,可以参考这篇。

下面主要涉及具体的操作,使用的设备是 ASR9000(IOS-XR 6.3.3)版本。

由于 NETCONF 本身采用 C/S 架构,需要在设备端打开:

netconf agent ssh

在客户端方面,可以使用 ssh 进行测试:

NETCONF 会首先使用 Hello 建立链接,报告所拥有的能力。

[root@localhost ~]# ssh cisco@ip -p 830 -s netconf Password: <hello xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> <capabilities> <capability>urn:ietf:params:netconf:base:1.1</capability> <capability>urn:ietf:params:netconf:capability:candidate:1.0</capability> <capability>urn:ietf:params:netconf:capability:rollback-on-error:1.0</capability> <capability>urn:ietf:params:netconf:capability:validate:1.1</capability> <capability>urn:ietf:params:netconf:capability:confirmed-commit:1.1</capability> <capability>urn:ietf:params:netconf:capability:notification:1.0</capability> <capability>urn:ietf:params:netconf:capability:interleave:1.0</capability> <capability>urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring?module=ietf-netconf-monitoring&amp;revision=2010-10-04&amp;deviations=cisco-xr-ietf-netconf-monitoring-deviations</capability> <capability>?module=cisco-xr-ietf-netconf-monitoring-deviations&amp;revision=2016-02-16</capability> <capability>?module=Cisco-IOS-XR-Ethernet-SPAN-cfg&amp;revision=2015-11-09</capability> <capability>?module=Cisco-IOS-XR-Ethernet-SPAN-datatypes&amp;revision=2015-11-09</capability> <capability>

每个 capability 都可包含四部分内容:

Model URI

Module Name ,Revision Date

Protocol Features

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpfpgj.html