我试图通过NETCONF从一个IOS-XE设备中提取信息。
我使用两种不同的方法来实现这一点,并且不能在使用另一种方法的同时复制一种方法的成功:
使用Cisco的YANG Suite,我可以制作NETCONF RPC调用,将它们发送到IOS-XE设备,并得到适当的回复。例如,我希望获得GigabitEthernet1接口的操作状态GigabitEthernet1。YANG Suite说,它向设备发送了以下RPC:
Sending:
#360
GigabitEthernet1
##杨套房从这个装置中接收到:
GigabitEthernet1
up正如我们所看到的,该设备支持urn:ietf:params:xml:ns:yang:ietf-interfaces命名空间,并支持从/rpc/getfilter/interfaces-state/interface/oper-status/获得一个问题。
当请求设备的接口列表时,YANG Suite发送以下RPC:
到目前一切尚好。
在IOS-XE CLI上做一些奇怪的事情
然而,在CLI上,IOS表示它既不支持urn:ietf:params:xml:ns:yang:ietf-interfaces名称空间,也不支持/rpc/getfilter/interfaces-state/interface/oper-status/。
R1#show netconf schema
New Name Space 'urn:ietf:params:xml:ns:netconf:base:1.0'
[0, 1] required
[0, 1] required
...上面的输出显示,IOS设备支持的唯一模式是'urn:ietf:params:xml:ns:netconf:base:1.0'命名空间。
或者:
R1#show netconf schema | include ||interface
[0, 1] required
[0, 1] required
[0, 1] required
R1#当我试图在XML树之外发送任何RPC时(如show netconf schema over SSHv2中所见),它会失败。下面,我尝试通过本机NETCONF将YANG套件发送到设备上的RPC发送给设备,结果完全不同:
]]>]]>对IOS-XE的答复:
rpc
unknown-element
error
interfaces-state
]]>]]>我们可以看到,IOS说:“听着,我不知道你在谈论/rpc/get/filter/interfaces-state/时在说什么,interfaces-state不在我的XML树中。”
我认为IOS不知道(或支持) urn:ietf:params:xml:ns:yang:ietf-interfaces名称空间,这也是它不知道树的interfaces-state部分的原因。是的,在SSHv2上的NETCONF的初次问候语中,IOS-XE公然告诉我:看,我只知道很少的名称空间:
urn:ietf:params:netconf:base:1.0
urn:ietf:params:netconf:capability:writeable-running:1.0
urn:ietf:params:netconf:capability:startup:1.0
urn:ietf:params:netconf:capability:url:1.0
urn:cisco:params:netconf:capability:pi-data-model:1.0
urn:cisco:params:netconf:capability:notification:1.0
3375721824
]]>]]>上面列出的功能与杨套房提供的功能相去甚远。
注意:我在与SSH和YANG Suite连接时使用相同的用户名/密码,因此我认为这与权限无关:
R1#show runn | include netconf
username netconf privilege 15 password 0 netconf
netconf ssh
netconf-yang
netconf-yang feature candidate-datastore发布于 2022-12-26 21:07:24
所以,我似乎遇到了一个关于IOS-XE的众所周知的问题。我在网上找到的最好的文档是IPspace:https://blog.ipspace.net/2017/04/netconf-agents-on-cisco-ios-xe-16x.html。
IOS(至少16.3版)在其代码中有两个独立的NETCONF实现和子系统。我不知道他们的名字是什么,但为了我的目的,我会把他们称为遗产和正确的。除了我在这里的使用之外,这些标签没有任何意义,我在其他地方也没有看到它们。下面我列出了每个版本的主要特点:
netconf ssh命令启用netconf子系统)debug netconf all命令进行调试。ssh username@10.0.0.1 -s netconf连接到它。show netconf命令查看有关状态和状态的信息。netconf-yang命令启用netconf子系统)ssh username@10.0.0.1 -p 830 -s netconf连接到它。show netconf-yang命令查看有关状态和状态的信息。最后,我犯了三个错误,造成了我的问题:
netconf ssh命令启用了遗留的NETCONF实现。-p 830选项,因此SSH客户端连接到默认的SSH端口(TCP端口22)。从思科的文档来看,似乎思科将这两种实现称为“基于SSHv2的NETCONF”和"NETCONF/YANG“。请注意,这两个实现都运行在SSHv2上,而且都是基于YANG模型的。
发布于 2022-12-17 01:02:55
Cisco NETCONF使用SSH在端口830上传输。当使用netconf-yang命令启用NETCONF时,将启用SSH。我不相信您可以首先运行SSH,然后跨此连接使用NETCONF。与NETCONF连接使用SSH。
思科有几个关于这方面的文档,例如有一个数据检索示例的为Cisco IOS XE 16.X平台配置NETCONF/YANG。
https://networkengineering.stackexchange.com/questions/80891
复制相似问题