简介
本文档介绍如何分析CLI和通用类型NED跟踪并确定Cisco Crosswork NSO中外部错误的原因。
先决条件
要求
- 本文档的故障排除方面适用于所有当前支持的网络元件驱动程序(NED)版本和Cisco® Crosswork Network Service Orchestrator(NSO)版本。
- 要排除NED外部错误,您需要能够启用NED跟踪日志并有权访问这些日志。
- 为了准确评估NED外部错误,建议了解由NSO管理的网络设备及其API。
使用的组件
- Crosswork NSO 6.4.3
— 内置cisco-iosxr-7.64.1
外部错误类型
NED外部错误是NED和设备之间通信故障的标志。它们分为三大类:
- NED收到来自它不期望的网络设备的响应。
- NED从网络设备接收违反NED中yang模型的响应。
- NED在分配的时间内未收到响应。
意外响应的类别是目前最常见的类别,也是您的NED可能会遇到的外部错误。它包括返回错误消息、信息性消息或任何其他类型与NSO期望看到的返回信息不匹配信息的设备。NED旨在处理可以安全忽略的信息性消息或警告。许多NED具有可用于自定义忽略哪些消息或将哪些消息视为外部错误的终端设置。
当NED在or操作期间收到与yang模型不匹配的信息时,您可以看到NED引发的外部sync-from
错compare-config
误。典型示例是yang模型,该模型接受指定枝叶的值0到8,但在此操作系统的最新版本中,范围已增加到0到16。NED不接受值16,因为它在模型化范围之外。或者,当枝叶在yang模型中被标记为强制但设备未提供时,或者当设备在NSO期望整数时提供字符串时,可能会引发错误。
对于CLI和通用NED,如果NED接收未在NED Yang模型中建模的配置,则不会引发外部错误。而是以跟踪文件skipped line
中的形式记录。
最后,当NED在分配的时间内未从设备收到预期响应时,将引发外部错误。发生这种情况的原因是设备无响应且未发送响应,但是当NED无法识别来自设备的响应时,也会发生这种情况。
读取NED跟踪日志
跟踪日志是排除外部错误的最佳可用日志。
启用NED跟踪日志
从NSO CLI启用NED跟踪日志。
ncs_cli -C -u admin
admin@ncs# configure
admin@ncs(config)# devices device dev-1 ned-settings [ned-id] logging level debug
admin@ncs(config)# devices device dev-1 trace raw
admin@ncs(config)# commit
admin@ncs(config)# devices device dev-1 disconnect
admin@ncs(config)# devices clear-trace
admin@ncs(config)# devices device dev-1 compare-config
例[ned-id]
如,使用命令所针对的设备的ned-id。
警告:clear-trace命令清除当前日志目录中所有NED跟踪日志的数据。如果要保留此设备或任何其他设备的跟踪日志,必须先将其存档,然后再运行此命令。在当前的NSO版本中,您可以对单个设备执行clear-trace。
注意:如果找不到“ned-settings [ned-id] logging level debug”,可以跳过此命令。
这些命令可清除trace文件中的任何旧数据,并使用设备上的当前配置进行准备。此时,您使用或您的NSO服务重ncs_cli
复发现的问题。如果在提交操作期间遇到错误,您必须捕获CLI输出以commit dry-run
及commit dry-run outformat native
以供将来参考。
在NED自述文件中,您可以找到标有“如何报告NED问题和功能请求”的章节,了解更多详细说明。
CLI和通用NED
CLI和通用NED的NED跟踪分为不同的阶段,这些阶段对故障排除非常有用。为了排除外部错误,需要了解的最重要阶段是SHOW和PREPARE阶段。
当NSO从网络设备读取信息时,将调用SHOW阶段。它是和操作的sync-from
一部compare-config
分。在此步骤中,NSO在读取和解析来自设备的响应show running-config
之前,使用命令提示设备。从NSO发送到设备的传出消息以*** output
开头,而从设备发送到NSO的传入消息以 *** input.
注意:SHOW操作期间的外部错误包括当前yang模型下不接受的值和超时问题。
PREPARE阶段作为操作的一部分被commit
调用。在此阶段,NSO向设备发送指令。在PREPARE阶段开始时,NED会打印NSO打算对跟踪文件进行的更改的列表。完成此初始摘要后,NSO会向设备发送指令。对于某些设备,NSO批量发送命令,而对于其他设备,这些命令逐个发送。此行为可以使用支持此行为的NED的相关终端设置进行更改。例如,cisco-iosxr-cli NED具有NED设置 "write number-of-lines-to-send-in-chunk <1-1000> (default 100)"
对于CLI NED,通常将NSO发送的命令视为作为输入返回的输出。这是因为命令出现在设备的基于文本的UI中,而NSO将此UI中显示的所有文本视为输入。NSO逐个发送命令的示例可能如下所示:
*** output 1-Jan-2024::09:56:00.928 user: admin/425 thandle 7428 hostname NSO1 device test-device ***
interface GigabitEthernet 0/0/0/2.34280485 l2transport
*** input 1-Jan-2024::09:56:00.929 user: admin/425 thandle 7428 hostname NSO1 device test-device ***
interface GigabitEthernet 0/0/0/2.34280485 l2transport
注意:PREPARE操作期间的外部错误包括设备返回的任何不符合NSO期望的消息,如错误、警告或信息消息。
排除外部错误
排除CLI和通用NED的外部错误时:根据触发错误的操作,启用跟踪、重现问题并检查最新的SHOW或PREPARE阶段。
对于NSO抱怨设备提供的特定值的问题:
- NSO抱怨了配置的哪个部分?
- 对于此型号和设备版本,设备共享的配置是否正确?
- 您是否知道使用此NED的任何其他设备型号或版本具有更严格的输入要求?
对于NSO引发涉及超时的外部错误的问题:
- 在超时之前,NSO发送的最后一个命令是什么?
- NSO在继续之前等待什么?
很难确定NSO在等待什么。一些精益求精的NED会打印他们想要的regex表达式。在某些情况下,NSO正在查找的消息确实显示在跟踪文件中,但NSO无法识别该消息,并继续等待。
对于NSO因意外响应而引发外部错误的问题:
- 设备提供的具体响应是什么?
- NSO发送的什么命令触发了响应?
- 响应是否基于NSO发送的内容?
- 能否安全忽略来自设备的响应,或者必须中止提交?
- NSO是否以正确的顺序发送了正确的命令?
常见的具体问题:
转换问题
当NSO具有正确的意图,但它发送到设备的命令不完全正确时,会发生转换问题。当使用相同NED的不同设备版本或型号的语法稍有不同时,可能会发生这种情况。如果您使用的是旧版本的NED,请验证NED的最新版本中是否仍存在相同行为。此外,请检查README-ned-settings.md文件中是否包含任何可用的Ned-settings,以查看是否有任何设置允许您自定义此行为。如果最新的NED仍存在问题,而NED设置无法解决问题,请向TAC提交支持请求。提供:
- NSO版本
- 使用最新NED时,NED跟踪捕获一个操作,
compare-config
随后是发送不commit
正确命令的操作。
- NED当前发送的命令
- 正确的命令,最好以实际设备CLI的示例形式显示
- 存在问题的设备的版本和型号
- 使用此NED的网络中当前的NED行为正确的任何其他版本和型号。
订购问题
当NED以错误的顺序发送正确的命令时,会发生排序问题。对于某些设备和特定配置负载,顺序非常重要。如果您使用的是旧版本的NED,请验证NED的最新版本中是否仍存在相同行为。此外,请检查README-ned-settings.md文件中是否包含任何可用的Ned-settings,以查看是否有任何设置允许您自定义此行为。如果最新的NED仍存在问题,而NED设置无法解决问题,请向TAC提交支持请求。提供:
- NSO版本
- 使用最新的NED而不使用服务:NED跟踪捕获操作
compare-config
,随后是发送commit
错误顺序的操作。
- 错误提交
commit dry-run outformat native
的的输出。这将显示NED当前发送命令的顺序。
- 正确的顺序,最好以实际设备CLI上的示例的形式显示
- 与此订购要求相关的任何其他必备条件
注意:在极少数情况下,思科无法通过NED满足订购要求,在这种情况下,您可以实施多提交工作流程或向相关供应商提交错误报告。
无效值问题
当NSO允许设置的值范围不同于设备接受的值范围,或者当NSO不允许设置设备允许的所有值范围时,会出现无效值问题。例如,NSO允许您定义一个介于0和15之间的值,但设备只接受值0到8。当NED建模时考虑的是特定的设备型号和版本,而其他设备具有不同的期望时,可能会发生这种情况。如果您使用的是旧版本的NED,请验证NED的最新版本中是否仍存在相同行为。此外,请检查README-ned-settings.md文件中是否包含任何可用的Ned-settings,以查看是否有任何设置允许您自定义此行为。如果最新的NED仍存在问题,而NED设置无法解决问题,请向TAC提交支持请求。提供:
- NSO版本
- 对于允许设备不接受的数据的NSO,请使用最新的NED:NED跟踪,捕获
compare-config
一个操作,然commit
后发送被设备拒绝的值。
- 对于NSO,使用最新的NED对数据的解释比设备所允许的数据更为严格:NED跟踪在设备上配
sync-from
置当前未被NSO接受的数据后捕获操作。
- 正确的值范围
- 存在问题的设备的版本和型号
- 使用此NED的网络中当前的NED行为正确的任何其他版本和型号。
设备的错误、警告和参考消息:
当设备对NSO命令做出错误响应或其他消息时,可能会在NSO中触发外部错误。NSO NED有一个可以安全忽略的regex表达式的内部列表,以及触发Error的表达式。有几个NED具有允许自定义这些列表的NED设置,无需NED增强。例如:此 cisco-iosxr-cli NED ned-setting write config-warning.
如果最新的NED没有此类选项,请向TAC反映问题。提供:
- NSO版本
- 一个NED跟踪,用于捕
compare-config
获一个操作,后跟导致错误的操作
- 修改内部列表的请求和/或添加对最终设置选项的支持以自定义列表的请求
- 设备发送的特定消息导致问题
分辨率
用户错误
如果您确定NSO发送的命令不正确,请确保您向NSO提供的输入以及您的服务包生成了正确的更改。验证的输出是否与commit dry-run
您想要进行的更改匹配,以及的输出是否显示正确的命令和顺序以引发这些更改commit dry-run outformat native
。如果试运行预测出现意外更改,则必须验证输入到NSO或服务代码。如果试运行是正确的,但发送到NSO的命令不正确,请检查转换和排序问题解决方案。
网络设备
在某些情况下,外部错误是网络设备本身的配置、设置甚至漏洞(例如用户没有正确的授权或设备限制某些操作)的结果。评估配置或设备设置是否可以更改,以允许NSO更好地使用设备。
Ned设置
每个NED都有一系列终端设置,可帮助您自定义NSO与设备交互的方式。Ned-settings记录在NED内部的README-ned-settings.md文件中,且通常与NED不同。cisco-iosxr-cli NED的选项包括:更改NSO计算设备校验和的方式;批量发送多少命令;根据特定触发器或是NED必须使用还是将配置写入设备上的文件并使用sftp传输文件,以自定义要注入的附加命令"show running-config"
。
NED服务冲突
当使用服务包更改或删除配置时存在问题行为时,会发生NED-Service冲突,但如果在不使用服务包的情况下进行相同的配置更改,则不会出现。此类行为可能显示为添加或删除的意外配置,导致设备出现外部错误。这通常是由于对部分配置的服务拥有权造成的。服务包对NSO CDB配置的更改可能会覆盖NED逻辑,这通常会防止不正确的更改。如果您怀疑您遇到了此行为,请在不使用服务包的情况下尝试相同的配置更改进行验证。
有关服务所有权和可能的解决方案的详细信息,请参阅了解NSO服务所有权一文。
NED增强功能和TAC支持
如果没有其他可用选项,您可以通过Cisco TAC打开票证,并请求更新NED以满足您的需求。
思科提供的NSO NED基于您的使用案例进行更新。思科不会主动尝试覆盖所有可能的设备型号和版本,但会不断更新NED,以满足不断发展的网络和新用户的需求。您可以在此处找到Crosswork NSO开发人员提供的NED支持范围的摘要
注意:尽管思科尽了最大努力来维护广泛的内部测试环境,但我们却无法维持一个覆盖所有型号和版本的环境,来覆盖范围广泛的供应商。因此,我们需要您的帮助才能访问描述问题行为的设备。
向思科提供的NED的Cisco TAC提交案例时,请提供:
- NSO版本
- NED跟踪设置为日志记录级别调试
- NED跟踪必须捕获或
compare-config
操sync-from
作
- NED跟踪必须捕获您需要帮助的特定问题
- 其他设备或NED也可能出现问题的任何信息
- 有关同一NED上相似设备且未显示问题的任何信息
注意:除了工具本身的任何问题外,思科不支持使用NSO NED Builder工具构建的Netconf NED。
提示:对于Crosswork NSO开发人员提供的NED,请使用技术:NMS(网络管理服务和子技术:网络服务协调器(NSO)- NED