소개
이 문서에서는 NSO NED 추적의 다양한 단계를 올바르게 읽고 이해하는 방법에 대해 설명합니다.
배경
Cisco® NSO(Crosswork Network Service Orchestrator)는 NSO와 NSO의 NED(Network Element Drivers)가 관리하는 디바이스 간의 통신에 대한 자세한 추적을 생성할 수 있습니다. Java 기반 NED의 경우, 이러한 추적 파일은 공유 프레임워크에 따라 구성됩니다. 이 문서는 이 공유 프레임워크와 이러한 로그의 세부 사항을 이해하는 데 도움이 됩니다.
사전 요구 사항
사용되는 구성 요소
- NSO 6.4
- NED cisco-iosxr-cli
- NED cisco-ios-cli
- NED cisco-nx-cli
- NED zte-zxros-cli
- NED alu-sr-cli
- NED juniper-junos_nc-gen
면책조항
이 문서에서는 Cisco에서 개발한 Java NED를 사용한다고 가정합니다. 여기에는 CLI, 일반 및 3PY NED가 포함됩니다. 이 문서에 설명된 단계 및 프레임워크는 Netconf NED에 적용되지만 Netconf NED에 대해 생성된 추적 로그는 이 문서에 나온 것과 같은 방식으로 레이블이 지정되지 않습니다.
이 문서에 설명된 단계는 모든 Java NED에서 공유되지만, 개별 디바이스 요구 사항으로 인해 해당 단계의 일부로 실행되는 특정 작업이 각 NED마다 다릅니다.
데이터 유형
NED 추적 파일의 데이터는 3가지 카테고리로 볼 수 있습니다.
코어 NSO와 NED 간의 통신
NSO는 특정 단계를 시작하도록 NED에 지시합니다. NSO의 각 작업은 동일한 단계의 시퀀스를 생성하지만 각 NED는 네트워크 디바이스를 향해 고유한 명령을 실행합니다. NED 추적 파일은 NSO와 NED 간의 정확한 데이터 흐름을 로깅하지 않지만, 단계를 시작하는 명령 및 단계가 완료되었음을 나타내는 NED 응답을 로깅한다. >>로 시작하는 줄은 단계를 시작하는 지침을 나타냅니다. <<부터 시작하는 줄은 NSO에 단계가 완료되었음을 알리는 NED를 나타냅니다.
>> 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에서 입력은 NSO에서 보낸 명령을 비롯하여 디바이스의 CLI에 나타나는 모든 정보로 구성됩니다.
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 및 일반 CONNECT 단계가 거의 동일하지만, CLI 및 일반 유형 NED는 서로 다른 CONNECT 단계를 사용합니다.
동기화 확인
>> CLI CONNECT
<< CONNECTED
>> GET_TRANS_ID
<< TRANS_ID
동기화 시작
>> 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
.
비교 구성
>> 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 추적 파일에 로그가 생성되지 않습니다.
Commit Dry-Run Outformat 네이티브
이 작업은 네트워크 디바이스에 데이터를 보내지 않지만 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는 이 단계에서 어떤 명령도 트리거하지 않으며 효과적으로 건너뜁니다. 이는 no-overwrite 플래그가 체크섬을 확인하지 않고 대신 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를 활용할 수 있는지 복구하는 대체 방법이 있습니다.
라이브 상태
>> CLI CONNECT
<< CONNECTED
>> COMMAND
<< COMMAND
단계
모든 Java 기반 NED는 동일한 단계를 사용하지만 각 NED는 처리 중인 특정 장치에 대한 정확한 단계 실행을 조정합니다.
CLI 연결, 일반 연결 및 재연결
CONNECT 단계에서 NED는 자신에 대한 정보를 인쇄하고, 연결을 설정하고, CLI NED에 대한 페이지 매김 기능을 비활성화하고, 디바이스 정보를 수집합니다. 여기에는 NSO 및 NED 버전, NED 설정, SSH 알고리즘, 디바이스 모델 및 버전이 포함됩니다. 비밀번호 교환은 기록되지 않습니다.
NSO가 디바이스에 연결하지 못할 경우, 이 단계의 모든 부분을 담당할 수 있습니다. NSO에서 SSH 세션을 설정할 수 있었지만 디바이스 모델 및 버전을 검색하지 못했을 수 있습니다.
NED는 작업이 완료된 후 몇 초 동안 디바이스와의 세션을 유지합니다. 동일한 디바이스에 대해 다른 작업이 필요한 경우 NED는 CLI/GENERIC CONNECT 대신 RECONNECT 단계를 기록하고 정보를 다시 사용합니다.
GET_TRANS_ID
GET_TRANS_ID 단계는 체크섬을 계산하기 위해 정보를 수집합니다. 이 체크섬은 커밋 또는 확인 동기화 작업 중에 디바이스가 동기화되지 않았는지 확인할 수 있으며, 향후 확인을 위해 저장할 수도 있습니다. Cisco는 각 장치에서 사용할 수 있는 가장 가벼운 옵션을 선택합니다. 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 종료 시, commit 종료 시, diff가 감지되지 않은 경우 compare-config 종료 시 호출됩니다. check-sync 중에만 체크섬이 GET_TRANS_ID의 일부로 업데이트되지 않습니다. 커밋 작업이 시작될 때 NSO는 체크섬을 확인하지만 GET_TRANS_ID 대신 INITIALIZE를 사용합니다.
표시
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를 파싱하고 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
PROVISIONAL TRANS_ID는 동기화 시작 작업이 끝날 때 GET_TRANS_ID를 대체하기 위해 일부 NED에서 구현된 최적화입니다. 이 최적화 NED가 없으면 동기화 시작 중에 이 데이터를 두 번 수집하는 체크섬을 계산하기 위해 디바이스의 전체 컨피그레이션을 수집하는 데 필요합니다. SHOW 단계에서 한 번 그리고 GET_TRANS_ID 단계에서 한 번 더. 이러한 상황에서 PROVISIONAL TRANS_ID는 GET_TRANS_ID를 대체하여 SHOW 작업의 데이터를 다시 사용합니다.
이러한 최적화의 특별한 구현은 cisco-iosxr-cli NED에 있습니다. 이 NED에는 전체 컨피그레이션이 필요하지 않지만, 컨피그레이션이 너무 커서 GET_TRANS_ID가 시작될 때까지 SSH 세션이 시간 초과되기까지 구문 분석에 충분한 시간이 걸릴 수 있습니다. 이를 방지하기 위해 NED는 SHOW의 일부로 필요한 정보를 수집하고 대신 PROVISIONAL TRANS_ID를 사용합니다.
초기화
INITIALIZE 단계는 GET_TRANS_ID와 유사합니다. 동일한 데이터를 수집하고 체크섬을 계산하지만 커밋 작업이 시작될 때만 디바이스가 동기화되었는지 확인하는 데 사용됩니다. 디바이스가 동기화되지 않은 것으로 확인되면 INITIALIZE 단계 다음에 UNINITIALIZE 단계가 오고 NSO에 오류가 반환됩니다. INITIALIZE는 체크섬을 업데이트하지 않습니다.
참고: Commit no-overwrite에는 INITIALIZE 단계가 있지만 동기화 중단과 관련이 없으므로 이 단계에서 명령이 실행되지 않습니다.
준비
PREPARE 단계는 커밋 작업에서 가장 중요한 단계입니다. ENED는 PREPARE 단계에서 NSO CDB의 변경 사항을 디바이스가 이해할 수 있는 명령으로 변환합니다. 그런 다음 컨피그레이션 모드로 들어가는 등 UI를 탐색하기 위한 모든 명령을 포함하여 이러한 명령을 디바이스로 전송합니다.
후보 컨피그레이션이 없는 디바이스의 경우 명령을 전송하면 실행 중인 네트워크 컨피그레이션 및 운영에 즉시 영향을 미칩니다.
커밋
END는 COMMIT 단계 중에 컨피그레이션을 디바이스에 적용합니다. 후보 컨피그레이션이 없는 디바이스(예: 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 단계 중에 전송됩니다.
건조 준비
PREPARE DRY 단계는 작업에 commit dry-run outformat native
고유합니다. PREPARE 단계와 마찬가지로 NSO 인텐트를 디바이스 명령으로 변환하지만, 이러한 명령을 디바이스로 전송하지 않습니다.
부분 표시(_P)
SHOW_PARTIAL 단계는 maapi 명령으로 호출할 수도 있고, 및 실행 중에 commit no-overwite
사용됩니다rollback during commit error
.
이 단계는 디바이스에서 컨피그레이션 데이터를 수집하고 구문 분석한다는 점에서 SHOW 단계와 유사합니다. 전체 컨피그레이션이 아닌 현재 커밋 작업과 관련된 더 구체적인 데이터 집합을 수집합니다. 모든 장치가 더 작은 데이터 집합을 수집하는 것을 지원하지는 않습니다.
중단
ABORT 단계는 PREPARE 단계와 비슷하지만 롤백 복구에 대해서는 배타적입니다. NSO는 커밋 이전의 디바이스 컨피그레이션으로 되돌리기 위한 명령을 전송합니다.
되돌리기
REVERT 단계는 커밋에 오류가 발생했지만 NSO는 디바이스에 이전 컨피그레이션으로 돌아가도록 지시할 수 있는 상황에서 사용됩니다. 이 경우 SHOW_PARTIAL 및 ABORT 단계는 필요하지 않습니다.
명령을 사용합니다
COMMAND 단계는 live-status 작업에 대해 고유합니다. 명령 단계 동안 NSO는 일반적인 커밋 작업 범위 밖에 있는 디바이스에 명령을 전달합니다.
IS_ALIVE
IS_ALIVE 단계는 NED, 디바이스 및 NSO 간의 세션이 여전히 정상인지 확인하는 상태 검사입니다. IS_ALIVE false가 발생하면 세션 중 하나에서 시간 초과가 발생했을 수 있습니다.
닫기
CLOSE 단계에서 END는 엔드 디바이스에 대한 SSH 세션을 닫습니다.
SET_TIMEOUT
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