簡介
本文檔介紹如何正確閱讀和理解NSO NED跟蹤的各個階段。
背景
Cisco® Crosswork網路服務協調器(NSO)可以產生NSO與NSO的網路元素驅動程式(NED)管理的裝置之間的詳細通訊追蹤。 對於基於Java的NED,這些包含跟蹤檔案是根據共用框架構建的。本文檔可幫助您瞭解此共用框架以及這些日誌中的詳細資訊。
必要條件
採用元件
- NSO 6.4
- NED cisco-iosxr-cli
- NED cisco-ios-cli
- NED cisco-nx-cli
- NED ZZZXROS-cli
- NED alu-sr-cli
- NED juniper-junos_nc-gen
簡介
本文檔假定您使用的是思科開發的Java NED。其中包括CLI、Generic和3PY NED。本文檔中介紹的階段和框架適用於Netconf NED,但為Netconf NED生成的跟蹤日誌不會以本文檔中所示的方式標籤它們。
儘管本文檔中描述的階段在所有Java NED之間共用,但作為該階段一部分運行的特定操作因各個NED的不同而不同。
資料型別
NED跟蹤檔案中的資料可以按3種不同類別檢視。
核心NSO與NED之間的通訊
NSO指示NED開始特定階段。NSO中的每個操作產生相同的階段序列,但每個NED對網路裝置運行唯一的指令。NED跟蹤檔案不會記錄NSO和NED之間流動的確切資料,但會記錄啟動階段的指令,以及指示階段已完成的NED響應。以>>開頭的行表示開始階段的說明。以<<開頭的行表示NED通知NSO階段已完成。
>> 20-Mar-2025::23:23:17.277 user: admin/56 thandle 86091 hostname ncs device xr-netsim0 trace-id=1ee09d76-4415-4bb8-bd39-05f99072bd54 CLI CONNECT to xr-netsim0-127.0.0.1:10025 as admin (Trace=raw)<< CONNECTED
<< 20-Mar-2025::23:23:17.623 user: admin/56 thandle 86091 hostname ncs device xr-netsim0 trace-id=1ee09d76-4415-4bb8-bd39-05f99072bd54 CONNECTED 0
>> 20-Mar-2025::23:24:41.703 user: admin/56 thandle 86213 hostname ncs device xr-netsim0 trace-id=1ee09d76-4415-4bb8-bd39-05f99072bd54 SHOW 0:
<< 20-Mar-2025::23:24:41.879 user: admin/56 thandle 86213 hostname ncs device xr-netsim0 trace-id=1ee09d76-4415-4bb8-bd39-05f99072bd54 SHOW
NED與南向裝置之間的通訊
在每個階段中,NED將對網路裝置運行命令,以實現每個階段的目標。從NED到裝置的通訊被標籤為,*** output
NED從裝置接收的通訊被標籤為*** input
。
*** output 20-Mar-2025::13:08:31.955 user: admin/316551 thandle 18978916 hostname ncs device xr-netsim0 trace-id=- ***
show running-config
*** input 20-Mar-2025::13:08:31.987 user: admin/316551 thandle 18978916 hostname ncs device xr-netsim0 trace-id=- ***
show running-config
Thu Jan 5 13:08:37.274 BRT
Building configuration...
!! IOS XR Configuration 7.2.1
...
在CLI NED中,輸入內容包含出現在裝置CLI上的所有資訊,包括NSO傳送的命令。
NED本身的內部記錄
NED記錄一定數量的資訊,這些資訊不會中繼到裝置或NSO。其中包括終端設定、資料處理以及NSO資料庫(CDB)中預期的更改。
此類資訊通常以開頭--
,但並不適用於此型別的所有資訊。
*** output 20-Mar-2025::13:08:31.955 user: admin/316551 thandle 18978916 hostname ncs device xr-netsim0 trace-id=- ***
-- BEGIN SHOW
-- [20-Mar-2025::13:08:31.956] progress: show: reading config...
-- Reading running config...
show running-config
按工序排列序號
本部分介紹常見操作的清單,並記錄每項操作的NSO啟動的預期階段順序。有關每個階段的更多詳細資訊,請參閱本文檔的「階段」部分。
附註:每個序列中均省略IS_ALIVE、SET_TIMEOUT和CLOSE階段,因為它們幾乎沒有故障排除值
連線
>> CLI CONNECT
<< CONNECTED
或
>> GENERIC CONNECT
<< CONNECTED
雖然功能上是CLI和通用連線階段幾乎完全相同,但CLI和通用型別NED使用不同的連線階段。
Check-Sync
>> CLI CONNECT
<< CONNECTED
>> GET_TRANS_ID
<< TRANS_ID
Sync-From
>> CLI CONNECT
<< CONNECTED
>> SHOW
<< SHOW
>> GET_TRANS_ID
<< TRANS_ID
或
>> CLI CONNECT
<< CONNECTED
>> SHOW
<< SHOW
<< PROVISIONAL TRANS_ID
某些NED已最佳化為使用PROVISIONAL TRANS_ID
而不是GET_TRANS_ID
使用。
Compare-Config
>> CLI CONNECT
<< CONNECTED
>> SHOW
<< SHOW
compare-config操作與sync-from操作非常相似,但它不會更新CDB。當compare-config檢測到配置差異時,它不會呼叫GET_TRANS_ID來更新校驗和。當不存在配置差異時,它會呼叫GET_TRANS_ID並更新校驗和。
提交
>> CLI CONNECT
<< CONNECTED
>> INITIALIZE
<< INITIALIZED
>> PREPARE
<< PREPARE OK
>> COMMIT
<< COMMIT OK
>> PERSIST
<< PERSIST OK
>> GET_TRANS_ID
<< TRANS_ID
提交乾式運行和提交無網路
這些操作不會與NED邏輯互動,也不會導致NED跟蹤檔案中生成任何日誌。
提交本地乾運行輸出格式
此操作不會向網路裝置傳送任何資料,但會使用NED邏輯。
>> CLI CONNECT
<< CONNECTED
>> PREPARE DRY
<< PREPARE DRY
Commit No-Overwrite
>> CLI CONNECT
<< CONNECTED
>> INITIALIZE
<< INITIALIZED
>> SHOW_PARTIAL
<< SHOW
>> PREPARE
<< PREPARE OK
>> COMMIT
<< COMMIT OK
>> PERSIST
<< PERSIST OK
>> GET_TRANS_ID
<< TRANS_ID
這一順序具有誤導性。它聲稱包括INITIALIZE階段,但NED不會在此階段觸發任何命令並實際跳過它。這是因為無覆蓋標籤不檢查校驗和,而是使用SHOW_PARTIAL檢查配置。
提交時出錯
>> CLI CONNECT
<< CONNECTED
>> INITIALIZE
<< INITIALIZED
>> PREPARE
>> CLOSE
<< CLOSED
>> CLI CONNECT
<< CONNECTED
>> SHOW_PARTIAL
<< SHOW
>> ABORT
<< ABORT OK
>> GET_TRANS_ID
<< TRANS_ID
提交過程中發生故障時,NSO會終止連線、重新連線並嘗試恢復系統。為此,NSO使用SHOW_PARTIAL檢查裝置的配置,並在ABORT階段開始提交之前,傳送一系列命令將當前配置恢復為配置。具有候選配置的裝置有備用方法恢復哪個NSO可以利用,具體取決於錯誤發生的時間。
Live-Status
>> CLI CONNECT
<< CONNECTED
>> COMMAND
<< COMMAND
階段
所有基於Java的NED使用相同的階段,但每個NED都根據它處理的特定裝置調整該階段的精確執行。
CLI連線、通用連線和重新連線
在CONNECT階段,NED列印有關自身的資訊,建立連線,禁用分頁(對於CLI NED)並收集裝置資訊。其中包括NSO和NED版本、NED設定、SSH演算法以及裝置型號和版本。它不會記錄密碼交換。
當NSO無法連線到裝置時,此階段的任何部分都可能負責。可能是NSO能夠建立SSH會話,但無法檢索裝置型號和版本。
操作完成後,NED會與裝置保持幾秒的會話。如果在該時間範圍內需要對同一裝置執行其他操作,則NED將記錄RECONNECT階段,而不是CLI/GENERIC CONNECT階段,並重新使用該資訊。
GET_TRANS_ID
GET_TRANS_ID階段收集資訊以計算校驗和。可以驗證此校驗和以確定裝置在提交或檢查同步操作期間是否不同步,或者可以儲存它以供將來檢查。思科選擇每台裝置可用的最輕量級選項。Cisco-ios-cli NED收集完整裝置配置以生成校驗和。cisco-iosxr NED使用提交清單,並驗證自上次同步以來是否更改了commit-id。
NED會列印在GET_TRANS_ID階段結束時計算的校驗和。
>> 15-Mar-2025::10:29:41.410 user: admin/205 thandle 1559 hostname ncs device alu0 GET_TRANS_ID
*** output 15-Mar-2025::10:29:41.411 user: admin/205 thandle 1559 hostname ncs device alu0 ***
-- get config method: cli dump
admin display-config
*** input 15-Mar-2025::10:29:41.415 user: admin/205 thandle 1559 hostname ncs device alu0 ***
admin display-config
...
<< 15-Mar-2025::10:29:42.045 user: admin/205 thandle 1559 hostname ncs device alu0 TRANS_ID 8f42fe893c448f47c155710bb909800b
GET_TRANS_ID在check-sync、從sync-from結束時、提交結束時或在比較配置結束時(如果未檢測到差異)呼叫。只有在check-sync期間,校驗和不作為GET_TRANS_ID的一部分進行更新。提交操作開始時,NSO還會驗證校驗和,但使用INITIALIZE而不是GET_TRANS_ID。
顯示
在SHOW階段,NED會收集裝置上的當前配置並對其進行分析,以便可以對其進行更新或與CDB進行比較。SHOW階段可由一個或多個命令組成,用於收集相關資料。某些NED會針對配置的不同部分提示一行多個SHOW階段。
<< 15-Mar-2025::14:17:07.190 user: admin/17279 thandle 7896374 hostname ncs device zte0 trace-id=438b8c CONNECTED 0
>> 15-Mar-2025::14:17:07.210 user: admin/17279 thandle 7896374 hostname ncs device zte0 trace-id=438b8c SHOW 0:
<< 15-Mar-2025::14:17:07.211 user: admin/17279 thandle 7896374 hostname ncs device zte0 trace-id=438b8c SHOW
>> 15-Mar-2025::14:17:07.211 user: admin/17279 thandle 7896374 hostname ncs device zte0 trace-id=438b8c SHOW 0:
<< 15-Mar-2025::14:17:07.212 user: admin/17279 thandle 7896374 hostname ncs device zte0 trace-id=438b8c SHOW
>> 15-Mar-2025::14:17:07.212 user: admin/17279 thandle 7896374 hostname ncs device zte0 trace-id=438b8c SHOW 0:
<< 15-Mar-2025::14:17:07.212 user: admin/17279 thandle 7896374 hostname ncs device zte0 trace-id=438b8c SHOW
>> 15-Mar-2025::14:17:07.213 user: admin/17279 thandle 7896374 hostname ncs device zte0 trace-id=438b8c SHOW 0:
<< 15-Mar-2025::14:17:07.213 user: admin/17279 thandle 7896374 hostname ncs device zte0 trace-id=438b8c SHOW
>> 15-Mar-2025::14:17:07.214 user: admin/17279 thandle 7896374 hostname ncs device zte0 trace-id=438b8c SHOW 0: <'vlan-configuration'>
<< 15-Mar-2025::14:17:07.214 user: admin/17279 thandle 7896374 hostname ncs device zte0 trace-id=438b8c SHOW
>> 15-Mar-2025::14:17:07.214 user: admin/17279 thandle 7896374 hostname ncs device zte0 trace-id=438b8c SHOW 0: <'switchvlan-configuration'>
<< 15-Mar-2025::14:17:07.215 user: admin/17279 thandle 7896374 hostname ncs device zte0 trace-id=438b8c SHOW
>> 15-Mar-2025::14:17:07.215 user: admin/17279 thandle 7896374 hostname ncs device zte0 trace-id=438b8c SHOW 0:
<< 15-Mar-2025::14:17:08.672 user: admin/17279 thandle 7896374 hostname ncs device zte0 trace-id=438b8c SHOW
<< 15-Mar-2025::14:17:08.672 user: admin/17279 thandle 7896374 hostname ncs device zte0 trace-id=438b8c PROVISIONAL TRANS_ID 8bb56df1e125549b62f96e8007866
收集資料後,NED會對其進行分析並為NSO做好準備。在CLI NED中,此程式由turbo-parser標籤。任何資料NSO無法理解且無法對映到當前yang模型都將記錄為跳過的行。
-- turbo-mode parsing (setvalues) :: performance numbers :
-- --------------------------------------------------------------------------------
-- number of lines parsed : 469
-- number of lines skipped : 2
-- time to parse config (ms) : 20
-- time to transfer xml to nso (ms) : 531
-- --------------------------------------------------------------------------------
-- skipped 2 lines in context '/' :
-- (line 16) : 'platform sslvpn use-pd'
-- (line 74) : 'pae'
-- --------------------------------------------------------------------------------
-- [15-Mar-2025::17:00:07.906] progress: show: populating cdb ok [531 ms]
-- transformed >= sorted 8 'neighbor ' lines for hash checksum
-- show trans_id = 12b6f28a48520ca4b5c6ebdfe3d333ee
-- done show [5055 ms]
<< 15-Mar-2025::17:00:07.912 user: nsoadmin/23219 thandle 3068964 hostname ncs device ios0 SHOW
臨時TRANS_ID
臨時TRANS_ID是在某些NED中實現的最佳化,用於在同步起始操作結束時替換GET_TRANS_ID。如果沒有這種最佳化NED(收集裝置的完整配置以計算校驗和時需要這些最佳化NED),則將在同步過程中兩次收集此資料。一次在SHOW階段,另一次在GET_TRANS_ID階段。在這些情況下,臨時TRANS_ID會替換GET_TRANS_ID,以便重新使用SHOW操作中的資料。
cisco-iosxr-cli NED中存在此最佳化的特殊實現。此NED不需要完整配置,但配置可能很大,以至於GET_TRANS_ID啟動時SSH會話超時需要花費足夠長的分析時間。為避免這種情況,NED會收集作為SHOW的一部分所需的資訊,並改用臨時TRANS_ID。
初始化
INITIALIZE階段類似於GET_TRANS_ID。它收集相同的資料並計算校驗和,但僅在提交操作開始時使用,用於驗證裝置是否處於同步狀態。如果發現裝置不同步,則INITIALIZE階段後跟一個UNINITIALIZE階段,並且返回一個錯誤到NSO。INITIALIZE從不更新校驗和。
附註:提交no-overwrite確實具有INITIALIZE階段,但是由於不同步不相關,所以在該階段中不會運行任何命令。
準備
PREPARE階段是提交操作的最重要階段。在準備階段,NED將NSO CDB中的預期更改轉換為裝置可以理解的命令。然後將這些命令傳送到裝置,包括任何用於導航UI的命令,例如進入配置模式。
對於沒有候選配置的裝置,傳送命令會立即影響網路的運行配置和操作。
提交
在COMMIT階段,NED將配置應用到裝置。對於沒有候選配置的裝置(如cisco-ios-cli NED管理的裝置),COMMIT階段為空。如果裝置具有確認確認的功能,NSO將在此階段使用這些功能。
>> 8-Mar-2025::14:06:54.238 user: admin/397910 thandle 18935883 hostname ncs device xr0 trace-id=c9c7a91b-dfd2-45bd-bbe4-71a0ddb1039a COMMIT 1: (Timeout 30)
*** output 8-Mar-2025::14:06:54.239 user: admin/397910 thandle 18935883 hostname ncs device xr0 trace-id=c9c7a91b-dfd2-45bd-bbe4-71a0ddb1039a ***
-- BEGIN COMMIT
-- [08-Mar-2025::14:06:54.239] progress: commit: committing config...
-- Committing (confirmed) [num-commit 0 0a delayed=0]
commit confirmed 30 show-error
*** input 8-Mar-2025::14:06:54.268 user: admin/397910 thandle 18935883 hostname ncs device xr0 trace-id=c9c7a91b-dfd2-45bd-bbe4-71a0ddb1039a ***
commit confirmed 30 show-error
Wed Mar 8 14:06:54.354 BRT
RP/0/RP0/CPU0:RNCOBSA0101(config)#
*** output 8-Mar-2025::14:06:58.377 user: admin/397910 thandle 18935883 hostname ncs device xr0 trace-id=c9c7a91b-dfd2-45bd-bbe4-71a0ddb1039a ***
commit show-error
*** input 8-Mar-2025::14:06:58.404 user: admin/397910 thandle 18935883 hostname ncs device xr0 trace-id=c9c7a91b-dfd2-45bd-bbe4-71a0ddb1039a ***
commit show-error
Wed Mar 8 14:06:58.493 BRT
% Confirming commit for trial session.
RP/0/RP0/CPU0:RNCOBSA0101(config)#
*** output 8-Mar-2025::14:06:58.734 user: admin/397910 thandle 18935883 hostname ncs device xr0 trace-id=c9c7a91b-dfd2-45bd-bbe4-71a0ddb1039a ***
end
*** input 8-Mar-2025::14:06:58.763 user: admin/397910 thandle 18935883 hostname ncs device xr0 trace-id=c9c7a91b-dfd2-45bd-bbe4-71a0ddb1039a ***
end
RP/0/RP0/CPU0:RNCOBSA0101#
*** output 8-Mar-2025::14:06:58.832 user: admin/397910 thandle 18935883 hostname ncs device xr0 trace-id=c9c7a91b-dfd2-45bd-bbe4-71a0ddb1039a ***
-- [08-Mar-2025::14:06:58.832] progress: commit: committing config ok [4593 ms]
-- DONE COMMIT [4594 ms]
<< 8-Mar-2025::14:06:58.832 user: admin/397910 thandle 18935883 hostname ncs device xr0 trace-id=c9c7a91b-dfd2-45bd-bbe4-71a0ddb1039a COMMIT OK
持續
某些裝置需要額外的說明以確保即使在裝置重新啟動時也能保持配置。這些命令在PERSIST階段傳送。
準備乾燥
準備乾燥階段是操作所特有的commit dry-run outformat native
階段。與PREPARE階段類似,它將NSO意圖轉換為裝置命令,但不會將這些命令傳送到裝置。
SHOW_PARTIAL
SHOW_PARTIAL階段可以由maapi指令呼叫,也可以在和期間使commit no-overwite
用rollback during commit error
它。
此階段與SHOW階段類似,它從裝置收集配置資料並對其進行分析。它收集與當前提交操作相關的一組更具體的資料,而不是完整的配置。並非所有裝置都支援收集較小的資料集。
ABORT
ABORT階段類似於PREPARE階段,但專用於回滾恢復。NSO傳送命令,將裝置配置恢復為提交前的配置。
還原
REVERT階段用於提交遇到錯誤,但NSO可以簡單地告訴裝置恢復到以前的配置。在這種情況下,不需要SHOW_PARTIAL和ABORT階段。
指令
COMMAND階段對於即時狀態操作是唯一的。在命令階段,NSO將指令傳遞到典型提交操作範圍之外的裝置。
IS_ALIVE
IS_ALIVE階段是一個運行狀況檢查,用於檢驗NED、裝置和NSO之間的會話是否仍然正常。如果遇到IS_ALIVE false,則可能是其中一個作業階段發生逾時。
關閉
在CLOSE階段,NED關閉與終端裝置的SSH會話。
設定超時(_T)
SET_TIMEOUT階段指示NSO和NED管理的各種超時的刷新。
跟蹤中的其他資訊
修改
在SHOW階段之後,NED將列印將在NSO CDB中進行的預期更改的清單。
created /ios:line/vty[first='5'][last='15']/login
created /ios:line/vty[first='5'][last='15']/login/local
modified /ios:interface/Loopback[name='2']
created /ios:interface/Loopback[name='2']/shutdown
created /ios:username[name='cisco']
value_set /ios:username[name='cisco']/privilege 15