簡介
本文檔介紹如何分析CLI和通用型別NED跟蹤並確定Cisco Crosswork NSO中外部錯誤的原因。
必要條件
需求
- 本檔案的疑難排解方面適用於目前支援的所有網路元素驅動程式(NED)版本和Cisco® Crosswork網路服務協調器(NSO)版本。
- 為了排除NED外部錯誤,您需要啟用NED跟蹤日誌並有權訪問這些日誌。
- 為了準確評估NED外部錯誤,建議瞭解由NSO管理的網路裝置及其API。
採用元件
- Crosswork NSO 6.4.3
- NED cisco-iosxr-7.64.1
外部錯誤型別
NED外部錯誤表示NED和裝置之間的通訊故障。它們分為三大類:
- NED收到來自它不期望的網路裝置的響應。
- NED從網路裝置接收違反NED中的yang模型的響應。
- NED在分配的時間內未收到響應。
意外響應的類別是目前最常見的類別,是NED可能會遇到的外部錯誤。它包括返回錯誤消息、資訊消息或任何其它型別資訊的裝置,這些資訊與NSO期望返回的資訊型別不匹配。NED旨在處理可以安全忽略的資訊性消息或警告。許多NED具有自定義需要忽略的消息或需要將哪些消息視為外部錯誤所需的設定。
當NED在or操作期間收到與楊氏模型不匹配的資訊時,您會看到NED引發的sync-from
外部compare-config
錯誤。典型示例是yang模型,該模型接受指定葉的值0到8,但在此OS的最新版本中,範圍已增加到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」,可以跳過此命令。
這些命令會清除跟蹤檔案中的任何舊資料,並使用裝置上的當前配置來準備這些資料。此時,您使用或您的NSO服務重ncs_cli
現發現的問題。如果在提交操作期間遇到錯誤,則必須捕獲CLI輸出以commit dry-run
供commit dry-run outformat native
將來參考。
在NED README檔案中,可以找到標有「如何報告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的最新版本中是否仍存在相同行為。此外,請檢查NED中包含的README-ned-settings.md檔案中是否有任何可用的ned-settings,以檢視是否有任何設定允許您自定義此行為。如果最新的NED仍存在問題,而NED設定無法解決該問題,請與TAC建立案例。提供:
- NSO版本
- 使用最新NED時,NED跟蹤捕獲一個操作,
compare-config
然後是傳送不commit
正確命令的操作。
- NED當前正在傳送的命令
- 正確的命令,最好以實際裝置CLI上的示例的形式顯示
- 存在問題的裝置的版本和型號
- 使用此NED的網路中當前的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的最新版本中是否仍存在相同行為。此外,請檢查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-settings
每個NED都有一系列終端設定,以幫助您自定義NSO與裝置互動的方式。Ned-settings記錄在NED內部的README-ned-settings.md檔案中,並且通常與NED和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的思科TAC提交案例時,提供:
- NSO版本
- NED跟蹤設定為日誌記錄級別調試
- NED跟蹤必須捕獲或
compare-config
操sync-from
作
- NED跟蹤必須捕獲您要協助的特定問題
- 其他裝置或NED的相關資訊,也顯示問題
- 同一NED上相似裝置的所有資訊未顯示問題
附註:除了工具本身的任何問題外,思科不支援使用NSO NED Builder工具構建的NETCONF NED。
提示:對於Crosswork NSO開發人員提供的NED,請使用Technology:NMS(網路管理服務和子技術:網路服務協調器(NSO)- NED