소개
이 문서에서는 Cisco Crosswork NSO에서 CLI 및 Generic type NED 추적을 분석하고 외부 오류의 원인을 식별하는 방법에 대해 설명합니다.
사전 요구 사항
요구 사항
- 이 문서의 문제 해결 측면은 현재 지원되는 모든 NED(Network Element Driver) 버전 및 Cisco® NSO(Crosswork Network Service Orchestrator) 버전에 적용됩니다.
- 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-settings가 있습니다.
또는 작업 중에 NED가 yang 모델과 일치하지 않는 정보를 수신하면 NED에서 발생한 외부 오류를 확인할 sync-from
수 compare-config
있습니다. 일반적인 예는 지정된 leaf에 대해 0~8의 값을 받는 yang 모델이지만 이 OS의 최신 버전에서는 범위가 0~16으로 증가했습니다. NED는 모델 범위를 벗어나기 때문에 값 16을 받지 않습니다. 또는 leaf가 yang 모델에서 필수 항목으로 표시되어 있지만 디바이스에서 제공하지 않은 경우 또는 NSO에서 정수를 예상할 때 디바이스에서 문자열을 제공하는 경우 오류가 발생할 수 있습니다.
CLI 및 일반 NED의 경우, NED가 NED yang 모델에서 모델링되지 않은 컨피그레이션을 수신할 경우 외부 오류가 발생하지 않습니다. 대신 추적 파일에 skipped line
로 기록됩니다.
마지막으로, NED가 할당된 시간 내에 장치로부터 예상 응답을 받지 못하면 외부 오류가 발생합니다. 이는 디바이스가 응답하지 않고 응답을 보내지 않았기 때문에 발생할 수 있지만, 디바이스의 응답이 NED에 인식되지 않았을 때도 발생할 수 있습니다.
NED 추적 로그 읽기
추적 로그는 외부 오류를 해결하는 데 사용할 수 있는 가장 좋은 로그입니다.
NED 추적 로그 활성화
NED 추적 로그는 NSO CLI에서 활성화됩니다.
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]
경우 명령을 사용하여 대상으로 지정할 디바이스의 end-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 단계입니다.
SHOW 단계는 NSO가 네트워크 디바이스에서 정보를 읽을 때 호출됩니다. 이는 sync-from
및 운영의 compare-config
일부입니다. 이 단계 중에 NSO는 디바이스에서 응답을 읽고 구문 분석하기 전에 show running-config
같은 명령을 디바이스에 프롬프트를 표시합니다. *** output
NSO에서 디바이스로 전송되는 발신 메시지는 로 향하며, 디바이스에서 NSO로 전송되는 수신 메시지는 로 시작합니다. *** input.
참고: SHOW 작업 중의 외부 오류에는 현재 yang 모델에서 허용되지 않는 값 및 시간 초과 문제가 포함됩니다.
준비 단계는 작업의 일부로 commit
호출됩니다. 이 단계에서 NSO는 디바이스에 명령을 전송합니다. NED는 PREPARE 단계를 시작할 때 NSO가 추적 파일에 적용하려는 변경 사항의 목록을 인쇄합니다. 이 초기 요약 후 NSO는 디바이스에 지침을 전송합니다. 특정 디바이스의 경우 NSO가 명령을 대량으로 전송하는 반면, 다른 디바이스의 경우 이러한 명령이 하나씩 전송됩니다. 이 동작은 이를 지원하는 NED의 관련 end-settings를 사용하여 변경할 수 있습니다. 예를 들어 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 파일에 사용 가능한 end-settings가 있는지 확인하여 이 동작을 사용자 지정할 수 있는 설정이 있는지 확인하십시오. 최신 NED에 여전히 문제가 있고 end-settings에 문제를 해결할 방법이 없는 경우 TAC에서 케이스를 여십시오. 제공:
- NSO 버전
- 최신 NED를 사용하여 NED 추적을 통해 작업을 캡처한 다음
compare-config
잘못된 명령을 전송하는 commit
작업을 캡처합니다.
- NED에서 현재 보내는 명령
- 실제 디바이스 CLI에 예로 표시되는 올바른 명령
- 문제가 있는 디바이스의 버전 및 모델
- 현재 NED 동작이 올바른 경우 이 NED를 사용하는 네트워크에 있는 디바이스의 다른 버전 및 모델입니다.
주문 문제
주문 문제는 NED가 올바른 명령을 잘못된 순서로 전송할 때 발생합니다. 일부 디바이스 및 특정 컨피그레이션 페이로드의 경우 순서가 중요합니다. 이전 버전의 NED를 사용 중인 경우, 최신 버전의 NED에서도 동일한 동작이 여전히 적용되는지 확인하십시오. 또한 NED에 포함된 README-ned-settings.md 파일에 사용 가능한 end-settings가 있는지 확인하여 이 동작을 사용자 지정할 수 있는 설정이 있는지 확인하십시오. 최신 NED에 여전히 문제가 있고 end-settings에 문제를 해결할 방법이 없는 경우 TAC에서 케이스를 여십시오. 제공:
- NSO 버전
- 서비스를 사용하지 않고 최신 NED 사용: 작업을 캡처한 후 잘못된
compare-config
주문을 보내는 commit
작업의 NED 추적.
- 잘못된 커밋
commit dry-run outformat native
에 대한 출력입니다. 그러면 NED에서 현재 명령을 전송하는 순서가 표시됩니다.
- 실제 디바이스 CLI에 예로 표시되는 올바른 순서
- 이 주문 요구 사항과 관련된 기타 모든 사전 요구 사항
참고: 드문 경우이지만 Cisco는 NED를 통해 주문 요구 사항을 해결할 수 없으며, 이 경우 사용자는 멀티 커밋 워크플로를 구현하거나 관련 공급업체에 버그 보고서를 제출할 수 있습니다.
잘못된 값 문제
유효하지 않은 값 문제는 NSO가 디바이스가 허용하는 것과 다른 값 범위를 설정하도록 허용하거나 NSO가 디바이스가 허용하는 전체 범위를 허용하지 않을 때 발생합니다. 예를 들어, NSO를 사용하면 0-15 사이의 값을 정의할 수 있지만 디바이스는 0-8 값만 허용합니다. 이는 NED가 특정 디바이스 모델 및 버전을 염두에 두고 모델링되었지만 다른 디바이스에서 다른 기대를 수행하는 경우 발생할 수 있습니다. 이전 버전의 NED를 사용 중인 경우, 최신 버전의 NED에서도 동일한 동작이 여전히 적용되는지 확인하십시오. 또한 NED에 포함된 README-ned-settings.md 파일에 사용 가능한 end-settings가 있는지 확인하여 이 동작을 사용자 지정할 수 있는 설정이 있는지 확인하십시오. 최신 NED에 여전히 문제가 있고 end-settings에 문제를 해결할 방법이 없는 경우 TAC에서 케이스를 여십시오. 제공:
- NSO 버전
- 최신 NED를 사용하여 디바이스에서 허용되지 않는 데이터를 허용하는 NSO의 경우: 작업을 캡처한 다음
compare-config
값을 전송하는 NED 추적commit
으로, 디바이스에서 거부합니다.
- NSO의 경우 최신 NED를 사용하여 디바이스에서 허용하는 것보다 더 엄격한 데이터 해석을 수행합니다. 현재 NSO에서 수락되지 않는 디바이스에서 데이터를 구성한 후 작업을 캡처하는 NED 추적
sync-from
.
- 올바른 값 범위
- 문제가 있는 디바이스의 버전 및 모델
- 현재 NED 동작이 올바른 경우 이 NED를 사용하는 네트워크에 있는 디바이스의 다른 버전 및 모델입니다.
디바이스의 오류, 경고 및 정보 메시지:
디바이스가 Error 또는 기타 메시지와 함께 NSO 명령에 응답할 경우, NSO에서 External Error가 발생할 수 있습니다. NSO NED에는 안전하게 무시할 수 있는 regex 식과 오류를 트리거하는 식의 내부 목록이 있습니다. 일부 NED에는 NED 개선 사항 없이 이러한 목록을 사용자 지정할 수 있는 end-settings가 있습니다. 예를 들면 다음과 같습니다. 이 cisco-iosxr-cli NED ned-setting write config-warning.
최신 NED에 이러한 옵션이 없는 경우 TAC에서 케이스를 여십시오. 제공:
- NSO 버전
- 작업을 캡처한 후
compare-config
작업이 수행되어 오류가 발생한 NED 추적
- 내부 목록 변경 요청 및/또는 목록을 직접 사용자 정의할 수 있는 종료 설정 옵션에 대한 지원을 추가하는 요청
- 디바이스에서 문제를 일으키는 특정 메시지
해결
사용자 오류
NSO에서 보낸 명령이 잘못되었다고 판단되면 NSO에 입력한 내용과 서비스 패키지에서 올바른 변경 사항을 생성했는지 확인합니다. 의 출력이 commit dry-run
수행하려는 변경 사항과 일치하는지, 의 출력에 해당 변경 사항을 commit dry-run outformat native
취소할 올바른 명령 및 순서가 표시되는지 확인합니다. 리허설에서 예기치 않은 변경이 예측되는 경우 NSO 또는 서비스 코드에 대한 입력을 확인해야 합니다. dry-run이 올바르지만 NSO로 전송되는 명령이 잘못된 경우 변환 및 주문 문제 해결 방법을 확인하십시오.
네트워크 장치
일부 경우, 외부 오류는 올바른 권한 부여가 없는 사용자 또는 특정 작업을 제한하는 장치와 같은 네트워크 장치 자체의 구성, 설정 또는 버그로 인해 발생합니다. NSO가 디바이스에서 더 효과적으로 작동하도록 컨피그레이션 또는 디바이스 설정을 변경할 수 있는지 평가합니다.
네드-세팅
각 NED에는 NSO가 디바이스와 상호 작용하는 방식을 사용자 정의할 수 있도록 지원하는 광범위한 end-settings가 있습니다. Ned-settings는 NED 내부의 README-ned-settings.md 파일에 문서화되어 있으며 NED와 NED가 다른 경향이 있습니다. cisco-iosxr-cli NED에는 NSO가 디바이스에 대한 체크섬을 계산하는 방법, 대량 전송되는 명령 수, 특정 트리거를 기반으로 삽입할 추가 명령 사용자 지정, 또는 NED가 컨피그레이션을 사용하여 또는 디바이스의 파일에 작성하고 대규모 컨피그레이션에 유용할 수 있는 sftp를 사용하여 파일을 전송하는 방식으로 컨피그레이션 데이터를 "show running-config"
수집해야 하는지 여부를 변경할 수 있는 옵션이 있습니다.
NED-Service 충돌
NED-Service 충돌은 서비스 패키지를 사용하여 컨피그레이션을 변경하거나 삭제할 때 문제가 되는 동작이 있지만 서비스 패키지를 사용하지 않고 동일한 컨피그레이션을 변경할 때는 나타나지 않는 경우 발생합니다. 이러한 유형의 동작은 예기치 않은 컨피그레이션이 추가 또는 제거되는 것으로 나타나 디바이스에서 외부 오류가 발생할 수 있습니다. 이는 일반적으로 구성의 일부에 대한 서비스 소유로 인한 결과입니다. 서비스 패키지로 인한 NSO CDB 컨피그레이션 변경은 일반적으로 잘못된 변경으로부터 보호되는 NED 논리를 재정의할 수 있습니다. 이 동작이 발생한 것으로 의심되는 경우 서비스 패키지를 사용하지 않고 동일한 컨피그레이션 변경을 시도하여 확인하십시오.
서비스 소유권 및 가능한 솔루션에 대해 자세히 알아보려면 NSO 서비스 소유권 이해 문서를 참조하십시오.
NED 개선 사항 및 TAC 지원
다른 옵션이 없는 경우 Cisco TAC에서 티켓을 열고 필요에 맞게 NED를 업데이트하도록 요청할 수 있습니다.
Cisco에서 제공하는 NSO NED는 사용 사례에 따라 업데이트된 내용을 기반으로 합니다. Cisco는 가능한 모든 장치 모델 및 버전을 적극적으로 다루지는 않지만, NED는 진화하는 네트워크 및 새로운 사용 사례의 요구 사항을 충족하도록 지속적으로 업데이트됩니다. Crosswork NSO Developers가 제공하는 NED 지원 범위에 대한 요약은 여기에서 확인할 수 있습니다
참고: Cisco는 광범위한 내부 테스트 환경을 유지하기 위해 최선을 다하고 있지만, 광범위한 벤더의 모든 모델 및 버전을 포괄하는 환경을 유지할 수는 없습니다. 따라서 문제가 되는 행동을 보여주는 장치에 대한 액세스를 제공하기 위해 사용자의 도움을 요청할 수 있습니다.
Cisco에서 제공한 NED에 대해 Cisco TAC로 케이스를 열 때 다음 사항을 제공하십시오.
- NSO 버전
- NED 추적을 로깅 레벨로 설정 디버그
- NED 추적에서는 또는 작업을
compare-config
캡처해야 sync-from
합니다
- NED 추적에서는 도움이 필요한 특정 문제를 포착해야 합니다
- 문제가 있는 다른 디바이스 또는 NED에 대한 정보
- 문제를 나타내지 않는 동일한 NED의 유사 디바이스에 대한 정보
참고: NSO NED Builder 툴을 사용하여 구축된 Netconf NED는 툴 자체의 어떤 문제 이외에는 Cisco에서 지원하지 않습니다.
팁: Crosswork NSO Developers에서 제공하는 NED의 경우, Technology를 사용합니다. NMS(네트워크 관리 서비스 및 하위 기술): NSO(Network Service Orchestrator) - NED