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

Deviations - 修改自那个 Module

<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> Model URI = urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring Module Name = module=ietf-netconf-monitoring Revision = 2010-10-04 Protocol Features = NULL Deviations = cisco-xr-ietf-netconf-monitoring-deviations

使用 ncclient 操作 NETCONF 设备, 使用参见 ncclient-github

获取 running 配置:

from ncclient import manager host = "10.1.1.22" username = "cisco" password = "cisco" device_params = {"name": "iosxr"} with manager.connect(host=host, port=830, username=user, hostkey_verify=False, password=password) as m: c = m.get_config(source='running').data_xml with open("%s.xml" % host, 'w') as f: f.write(c)

上面演示了 NETCONF 中 get-config 操作,其余配置或过滤的功能,可参考文档。

需要注意一点的是,在配置时,payload 的生成一般通过上面介绍的 YANG-Suite 工具。

YANG 与 RESTCONF

RESTCONF 和 NETCONF 很像,简单来说,就是将 HTTP 融入了 NETCONF 中,采用 REST 风格替代 SSH 和 RPC 的交互方式。

更详细的内容,可参看这一篇。RESTCONF,下面主要集中在具体操作。

先来看下 RESTCONF URL 的内容:

https://<ADDRESS>/<ROOT>/<DATASTORE>/[YANGMODULE:]CONTAINER/<LEAF>[?<OPTIONS>]

ADDRESS:表示 RESTCONF 代理的 IP

ROOT:表示 restconf 请求的入口点

DATASTORE:被查询的数据库

[YANGMODULE:]CONTAINER - 使用基础的模块名称

: 在 Container 内的独立 node

?:返回结果的过滤参数

这里以 NSO - 思科的产品为例,直接操作设备也同理,比如 IOS-XE 的设备。

首先查询是否具有 RESTCONF 功能:

:8080/.well-known/host-meta # Response 包含具有 RESTCONF 内容 <XRD xmlns='http://docs.oasis-open.org/ns/xri/xrd-1.0'> <Link href='http://www.likecs.com/restconf'/> </XRD> # 里面的内容表示 ROOT 的内容,作为 RESTCONF 的入口点。

查看 NETCONF 支持的能力:

:8080/restconf/data/netconf-state/

查看 RESTCONF 支持的能力:

:8080/restconf/data/restconf-state/

NOTE:

需要在 Headers 中,指定发送和接受数据的格式:

Content-type:

application/yang-data+json

application/yang-data+xml

Accept:

application/yang-data+json

application/yang-data+xml

查询 NSO 纳管的设备 - GET Method:

:8080/restconf/data/tailf-ncs:devices/device=ASR9K/name/

修改接口描述 - Patch Method:

:8080/restconf/data/tailf-ncs:devices/device=ASR9K/config/tailf-ned-cisco-ios-xr:interface/TenGigE/ { "tailf-ned-cisco-ios-xr:TenGigE": { "id": "0/0/1/0", "description": "restconf-test" } } 总结

YANG 的本质是一种对数据进行结构化描述的语言,本身不是数据,而是起到约束数据的作用。

至于为什么需要 YANG,原因在于传统 CLI 的方式,不在适合当代网络的要求。而且结构化,统一的数据更容易被机器所处理。

现在 YANG 被广泛使用,特别是可编程化的特点,像让自动化,动态编排服务,甚至网络自我调节与优化都成为了可能。

下图中很好的描述了 YANG 所发挥的作用,在设备上通过 YANG 的定义,提供如 RESTCONF,NETCONF 的接口,让其通过 HTTP 或 RPC 管理设备。

在控制器中,根据定义的 YANG Module 来开发各种客户端,去调用设备。

Cisco Connect Toronto 2018 model-driven programmability for cisco i…

参考

RFC6020 - YANG

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

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