목차

소개

사전 요구 사항

요구 사항

사용되는 구성 요소

배경 정보

데이터 모델 - 프로그래밍 및 표준 기반 구성 및 모니터링

YANG(Yet Another Next Generation) 데이터 모델링 언어(RFC 6020)

NETCONF(Network Configuration) 프로토콜(RFC 6241)

구성

1. NETCONF/YANG 데이터 모델링을 지원하는 Cisco XE 16.3.3 소프트웨어를 실행하는 Catalyst 3850의 기본 구성

2. NETCONF/YANG 시스템 로그 및 SNMP 이벤트 모니터링을 허용하는 추가(선택 사항) 설정

3. 이 예에서 사용된 Catalyst 3850의 네트워크 연결 설정

Catalyst 3850에서 NETCONF/YANG 확인

중앙 집중식 관리 플랫폼(노트북 컴퓨터) 설정

1. 노트북 컴퓨터에 Yang Explorer 애플리케이션 설치

2. Yang Explorer 애플리케이션 사용

3. NETCONF 알림 구독(선택 사항)

기본 NETCONF/YANG 작동 예

1. 데이터 검색 예

Catalyst 3850에서 인터페이스 이름 목록 요청

2. 컨피그레이션 예시

Catalyst 3850에서 이더넷 인터페이스 종료

Catalyst 3850 CLI 이전 NETCONF/YANG 구성 변경 전후의 인터페이스 구성 표시

Catalyst 3850에 설정 저장

Catalyst 3850 CLI에서 이전 NETCONF/YANG 컨피그레이션 저장 작업 후 저장된 시작 컨피그레이션 표시

CLI에서 Catalyst 3850 설정

3. GET 요청 작업을 통해 사용 가능한 SNMP MIB 작동 데이터 확인

추가 YANG 데이터 모델 로드

1. 다양한 YANG 데이터 모델 파일을 개별적으로 로드

2. 모든 YANG 데이터 모델 파일을 한 번에 대량 로드

주요 YANG 데이터 모델

cisco-ia.yang 데이터 모델

ned.yang 데이터 모델

Python 스크립팅

YANG Explorer 애플리케이션 GUI에서 Python 스크립트 생성

중앙 집중식 관리 플랫폼(노트북 컴퓨터)에서 Python 스크립트 실행

문제 해결

NETCONF 오류 메시지

RPC 오류 예

기타 RPC 오류 유형 예

소개

이 문서에서는 Cisco IOS® XE 16.x 기반 플랫폼에서 NETCONF/YANG을 구성하는 방법에 대해 설명합니다.

사전 요구 사항

요구 사항

NETCONF/YANG은 Cisco IOS® XE 16.3.1 소프트웨어로 지원됩니다.

참고: 이 문서를 사용하기 위해 NETCONF, YANG 또는 Python 스크립팅을 사용한 경험이 필요하지 않습니다.

사용되는 구성 요소

이 문서의 정보는 다음 소프트웨어 및 하드웨어 버전을 기반으로 합니다.

이 예에서는 Cisco IOS XE 16.3.3을 실행하는 독립형 WS-C3850-12X48U 스위치가 NETCONF 서버로 사용됩니다. 이 디바이스는 NETCONF/YANG을 통해 데이터(show 명령 출력)가 수집되도록 구성되어 있습니다.

노트북 컴퓨터(MacOS Sierra 10.12.2 및 Google Chrome 브라우저를 실행하는 Apple Macbook Pro)가 NETCONF 클라이언트로 사용됩니다. 중앙 집중식 관리 플랫폼 역할을 하며 Yang Explorer 애플리케이션을 사용합니다. Catalyst 3850에서 데이터를 구성하고 수집하기 위해 NETCONF RPC(Remote Procedure Call) 메시지를 통해 Catalyst 3850으로 전송되는 YANG 형식의 요청을 생성하는 디바이스입니다.

이 문서의 정보는 특정 랩 환경의 디바이스를 토대로 작성되었습니다. 이 문서에 사용된 모든 디바이스는 초기화된(기본) 컨피그레이션으로 시작되었습니다. 현재 네트워크가 작동 중인 경우 모든 명령의 잠재적인 영향을 미리 숙지하시기 바랍니다.

배경 정보

이 문서의 예는 Catalyst 3850을 사용한 랩 테스트에 초점을 맞추지만, 제공된 정보는 Cisco ASR 1000 Series 라우터와 같은 다른 Cisco IOS XE 16.x 플랫폼에도 적용됩니다.

데이터 모델 - 프로그래밍 및 표준 기반 설정 및 모니터링

데이터 모델은 CLI(Cisco Command Line Interface) 또는 SNMP(Simple Network Management Protocol)를 사용하는 대신 Cisco 디바이스를 구성하고 Cisco 디바이스에서 작동 데이터(show 명령)를 수집하는 중앙 집중화된 다른 방법을 제공합니다. 데이터 모델은 동일한 절차를 기반으로 하는 표준이며 Cisco 이외의 디바이스에서도 데이터를 구성하거나 수집하는 데 사용할 수 있으므로 여러 공급업체를 지원하는 고객에게 이상적입니다. 중앙 집중식 관리 플랫폼(예: 랩톱)을 사용하여 여러 Cisco 디바이스에서 데이터를 구성하거나 수집할 수 있으며, 데이터 모델 아키텍처를 통해 Python 스크립팅을 통해 이러한 절차를 자동화할 수 있습니다(두 가지 추가적인 주요 이점).

YANG(Yet Another Next Generation) 데이터 모델링 언어(RFC 6020)

YANG은 디바이스 설정 요청 또는 작동 (show 명령) 데이터 요청을 생성하는 데 사용되는 표준 기반 데이터 모델링 언어입니다. 판독 가능한 컴퓨터 프로그램과 유사한 구조화된 형식입니다. 중앙 집중식 관리 플랫폼(예: 랩톱)에서 실행할 수 있는 몇 가지 애플리케이션을 사용하여 이러한 구성 및 운영 데이터 요청을 생성할 수 있습니다.

모든 공급업체에 적용되는 표준(공통) YANG 데이터 모델(예: 이더넷 인터페이스 비활성화 또는 종료 요청은 Cisco 및 타사 장치 모두에 대해 동일할 수 있음)은 물론 독점 공급업체 기능과 관련된 운영 데이터를 구성하거나 수집하는 데 도움이 되는 장치(네이티브, 공급업체별) 데이터 모델이 있습니다.

NETCONF(Network Configuration) 프로토콜(RFC 6241)

NETCONF는 표준 기반 XML(Extensible Markup Language) 인코딩 프로토콜로서, 사용자가 운영(show command) 데이터를 구성하거나 요청하려는 중앙 집중식 관리 플랫폼(예: 랩톱)에서 실행되는 애플리케이션에서 Cisco 디바이스로 YANG 형식의 컨피그레이션 또는 운영 데이터 요청을 전달하는 전송을 제공합니다. 해당 설정 요청의 일부가 실패할 경우 전체 설정 요청을 중단하는 등 트랜잭션 기반 서비스를 제공합니다. NETCONF는 간단한 RPF(Remote Procedure Call) 기반 메커니즘을 사용하여 클라이언트(중앙 집중식 관리 플랫폼 스크립트 또는 애플리케이션)와 서버(Cisco 스위치 또는 라우터) 간의 커뮤니케이션을 지원합니다. SSH(Secure Shell)를 네트워크 디바이스 전체에서 전송 레이어로 사용합니다. 일부 NETCONF 작업에는 get, get-config, edit-config, rpc가 포함됩니다.

구성

1. NETCONF/YANG 데이터 모델링을 지원하는 Cisco XE 16.3.3 소프트웨어를 실행하는 Catalyst 3850의 기본 구성

3850-1# show running-config

netconf-yang -------------------------------------> Enable NETCONF/YANG globally. It may take up to 90 seconds to initialize

username cisco1 privilege 15 password 0 cisco1 ---> Username/password used for NETCONF-SSH access

참고: NETCONF/YANG 데이터 모델링을 지원하기 위해 Catalyst 3850에 필요한 전체 구성이지만, aaa 새 모델도 전역으로 구성되지 않은 것으로 가정합니다(기본값). aaa new-model을 구성하여 AAA(인증, 권한 부여 및 계정 관리)를 활성화하려는 경우 이 컨피그레이션도 최소한 필요합니다. TACACS+ 또는 RADIUS 컨피그레이션과 함께 AAA를 사용하도록 이 기능을 확장할 수도 있지만, 이는 이 예의 범위를 벗어납니다.

aaa new-model

aaa authorization exec default local -------------> Required for NETCONF-SSH connectivity and edit-config operations

2. NETCONF/YANG 시스템 로그 및 SNMP 이벤트 모니터링을 허용하는 추가(선택 사항) 설정

Syslog 메시지에 대한 NETCONF 알림(RFC 5277 - Tools 5277)의 생성 및 구성된 SNMP 트랩이 NETCONF 알림을 생성하도록 하려면 이러한 snmp-server 컨피그레이션이 있어야 합니다.

참고: 최소 필수 항목이지만 snmp-server 활성화 항목이 추가로 포함될 수도 있습니다. 클라이언트(중앙 집중식 관리 플랫폼)는 서버(Catalyst 3850)로부터 NETCONF 알림 스트림을 수신하고 특정 구독 RPC를 전송하도록 등록합니다(중앙 집중식 관리 플랫폼(랩톱) 구성의 섹션 3 참조).

3850-1# show running-config

snmp-server community <string> RW ------------------------------> SNMP gateway in DMI requires community public prior to 16.5.1. A configurable community is supported on 16.5.1 and later.

netconf-yang cisco-ia snmp-community-string <string> -----------> Configure the same community string to enable SNMP MIB access for both NETCONF and RESTCONF.

snmp-server trap link ietf -------------------------------------> enable traps for IETF link up/down

snmp-server enable traps snmp authentication linkdown linkup ---> enable traps for link up/down

snmp-server enable traps syslog --------------------------------> enable traps for Syslog so notifications can be generated

snmp-server manager --------------------------------------------> enable snmp-server

Syslog의 경우, Catalyst 3850에서 Ciscod에 의해 Syslog 메시지가 생성될 때 RFC 5277에 정의된 NETCONF 알림을 생성할 수 있도록 Catalyst 3850의 DMI(Data Model Interface)에 이 컨피그레이션이 있어야 합니다.

logging history debugging -------> required for the generation of any NETCONF notification messages for Syslog

logging snmp-trap emergencies ---> configure 1 or more of the following to control which levels of Syslog messages are returned as notifications

logging snmp-trap alerts

logging snmp-trap critical

logging snmp-trap errors

logging snmp-trap warnings

logging snmp-trap notifications

logging snmp-trap informational

logging snmp-trap debugging

SNMP 트랩의 경우 NETCONF 알림을 생성하려면 이러한 설정이 필요합니다. Cisco XE 16.3.1 소프트웨어에서는 NETCONF 알림을 생성하도록 최대 10개의 SNMP 트랩을 구성할 수 있지만, 향후 릴리스에서는 이 제한을 제거할 수 있습니다. SNMP 트랩에 대한 알림 생성은 기본적으로 활성화되어 있습니다. SNMP 트랩 알림 생성을 비활성화하려면 netconf-yang cisco-ia snmp-trap-control global-forwarding이 없는 이 CLI를 사용합니다.

netconf-yang cisco-ia snmp-trap-control trap-list 10.3.6.1.6.3.1.1.5.3 --------> LinkDown trap

netconf-yang cisco-ia snmp-trap-control trap-list 10.3.6.1.6.3.1.1.5.4 --------> LinkUp trap

netconf-yang cisco-ia snmp-trap-control trap-list 10.3.6.1.4.1.9.9.41.2.0.1 ---> Syslog generated notification trap

3. 이 예에서 사용된 Catalyst 3850의 네트워크 연결 설정

이 예에서는 Catalyst 3850 관리 인터페이스 GigabitEthernet0/0을 사용하여 네트워크 및 중앙 집중식 관리 플랫폼(랩톱을 사용할 수 있음)에 연결합니다. DHCP(Dynamic Host Configuration Protocol)는 이 인터페이스에 IP 주소 172.16.167.175를 할당하는 데 사용되었습니다. 노트북 컴퓨터가 네트워크의 Catalyst 3850에 연결될 수 있는 한 Catalyst 3850에서 대체 설정을 사용할 수 있습니다.

3850-1# show running-config

vrf definition Mgmt-vrf

!

address-family ipv4

exit-address-family

!

address-family ipv6

exit-address-family

interface GigabitEthernet0/0

vrf forwarding Mgmt-vrf

ip address dhcp

negotiation auto

ip route vrf Mgmt-vrf 0.0.0.0 0.0.0.0 172.16.167.161

3850-1# show ip interface brief

Interface              IP-Address      OK? Method Status Protocol

Vlan1                  10.1.1.1         YES NVRAM  up     up

Vlan10                 10.10.10.1      YES NVRAM  up     up

Vlan20                 10.20.20.1      YES NVRAM  up     up

GigabitEthernet0/0     172.16.167.175  YES DHCP   up     up

Fo1/1/1                unassigned      YES unset  down   down

Fo1/1/2                unassigned      YES unset  down   down

GigabitEthernet1/0/1   unassigned      YES manual up     up

GigabitEthernet1/0/2   unassigned      YES unset  up     up

GigabitEthernet1/0/3   unassigned      YES unset  down   down

GigabitEthernet1/0/4   unassigned      YES unset  down   down

GigabitEthernet1/0/5   unassigned      YES unset  down   down

Catalyst 3850에서 NETCONF/YANG 확인

1. netconf-yang이 구성되면 Catalyst 3850의 명령줄 인터페이스(CLI)에서 이 명령을 사용하여 Catalyst 3850에서 DMI(Data Model Interface)를 지원하는 데 필요한 소프트웨어 프로세스를 실행할 수 있습니다.

3850-1# show platform software yang-management process

confd : Running

nesd : Running

syncfd : Running

ncsshd : Running

dmiauthd : Running

vtyserverutild : Running

opdatamgrd : Running

ngnix : Running

다음 단계는 중앙 집중식 관리 플랫폼에서 수행됩니다. 이 예에서는 Catalyst 3850에 대한 네트워크 액세스 권한이 있는 노트북 컴퓨터(macOS Sierra 10.12.2를 실행하는 Apple Macbook Pro)가 사용됩니다. 명령은 노트북 컴퓨터의 터미널 프롬프트에서 실행됩니다. 현재 노트북 컴퓨터에 특수 애플리케이션이 로드되지 않았습니다.

2. 중앙 집중식 관리 플랫폼(노트북 컴퓨터)이 네트워크의 Catalyst 3850(172.16.167.175)에 연결될 수 있는지 확인합니다.

USER1-M-902T:~ USER1$ ping 172.16.167.175

PING 172.16.167.175 (172.16.167.175): 56 data bytes

64 bytes from 172.16.167.175: icmp_seq=0 ttl=247 time=3.912 ms

64 bytes from 172.16.167.175: icmp_seq=1 ttl=247 time=6.917 ms

64 bytes from 172.16.167.175: icmp_seq=2 ttl=247 time=4.063 ms

64 bytes from 172.16.167.175: icmp_seq=3 ttl=247 time=4.371 ms

^C

3. 이 Catalyst 3850 구성의 사용자 이름과 비밀번호(cisco1/cisco1)를 사용하여 중앙 집중식 관리 플랫폼(랩톱)에서 Catalyst 3850(이 예에서는 172.16.167.175)에 대한 SSH 연결을 확인합니다. 이 응답은 Catalyst 3850의 NETCONF 기능에 대한 긴 목록 다음에 hello 메시지가 올 수 있습니다. TCP 포트 830 = netconf-ssh.

팁: 이 SSH 테스트가 작동하지 않을 경우 랩톱과 Catalyst 3850 사이의 방화벽에서 TCP 포트 830을 허용하는지 확인하십시오(RFC 4742 참조: Tools 4742).

USER1-M-902T:~ USER1$ ssh -s cisco1@172.16.167.175 -p 830 netconf

cisco1@172.16.167.175’s password: cisco1

<?xml version="1.0" encoding="UTF-8"?>

<hello xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">

<capabilities>

<capability>urn:ietf:params:netconf:base:1.0</capability>

<capability>urn:ietf:params:netconf:base:1.1</capability>

<capability>urn:ietf:params:netconf:capability:writable-running:1.0</capability>

<capability>urn:ietf:params:netconf:capability:xpath:1.0</capability>

<capability>urn:ietf:params:netconf:capability:validate:1.0</capability>

<capability>urn:ietf:params:netconf:capability:validate:1.1</capability>

<capability>urn:ietf:params:netconf:capability:rollback-on-error:1.0</capability

--snip--

</capabilities>

<session-id>2870</session-id></ hello>]]>]]>

Use < ^C > to exit

중앙 집중식 관리 플랫폼(노트북 컴퓨터) 설정

1. 노트북 컴퓨터에 Yang Explorer 애플리케이션 설치

이 예에서 Yang Explorer 애플리케이션은 중앙 집중식 관리 플랫폼으로 작동하기 위해 노트북 컴퓨터(macOS Sierra 10.12.2, Google Chrome 브라우저를 실행하는 Apple MacBook Pro)에서 사용됩니다. Yang Explorer를 사용하여 다음과 같은 작업을 수행할 수 있습니다.

• 사용자 인터페이스 또는 명령줄에서 YANG 데이터 모델 업로드/컴파일

• NETCONF RPC(Remote Procedure Call) 구축

• 실제 NETCONF 서버(Catalyst 3850)에 대해 RPC 실행

• 생성된 RPC를 나중에 사용할 수 있도록 컬렉션에 저장

• 데이터 모델 트리 찾아보기 및 YANG 속성 검사

참고: YANG Explore 애플리케이션은 Linux 시스템에서도 지원됩니다.

2. Yang Explorer 애플리케이션 사용

Yang Explorer 응용 프로그램 시작 - 랩톱의 터미널 프롬프트에서 yang-explorer 디렉토리에서 ./start.sh 및 명령을 실행합니다.

참고: 이 터미널 세션을 계속 열어 두십시오. 그렇지 않으면 Yang Explorer 응용 프로그램을 종료할 수 있으므로 다시 시작해야 합니다. 또한 애플리케이션 작업의 콘솔 로그로 사용할 수도 있습니다.

USER1-M-902T:~ USER1$ cd yang-explorer

USER1-M-902T:yang-explorer USER1$ ./start.sh &

Starting YangExplorer server ..

Use http://localhost:8088/static/YangExplorer.html

Performing system checks...

System check identified no issues (0 silenced).

January 19, 2017 - 23:12:20

Django version 1.8.3, using settings 'server.settings'

Starting development server at http://localhost:8088/

Quit the server with CONTROL-C.

Yang Explorer GUI 시작 - Yang Explorer 애플리케이션 GUI를 시작하고 애플리케이션 GUI 주 메뉴의 오른쪽 상단 모서리에 게스트/게스트로 Yang Explorer 애플리케이션 GUI에 로그인합니다(화면 캡처 참조).

Catalyst 3850에서 기능을 검색합니다. Catalyst 3850 세부사항(IP 주소, 사용자 이름/비밀번호, ssh-netconf용 TCP 포트 830)을 입력하고 Capabilities(기능)를 클릭하여 Catalyst 3850 소프트웨어에서 YANG operational capabilities(YANG 운영 기능) 목록을 검색합니다.

팁: 이 테스트는 중앙 집중식 관리 플랫폼(랩톱)의 Yang Explorer 애플리케이션과 Catalyst 3850 간에 NETCONF 통신이 작동하는지 확인하는 데에도 유용합니다.

YANG 데이터 모델 로드 - 다양한 YANG 데이터 모델을 Manage Models(모델 관리) 아래에서 구독할 수 있습니다. 구독하면 왼쪽의 Explorer 상자에 나타납니다. 이러한 YANG 모델을 사용하면 Yang Explorer 애플리케이션에서 YANG 전문 지식이 없어도 YANG 형식의 NETCONF RPC(Remote Procedure Call) 메시지를 생성할 수 있습니다. 이 메시지는 Catalyst 3850으로 전송되어 구성하거나 Catalyst 3850에서 데이터를 검색할 수 있습니다. 이 방법에 대한 예는 다음 섹션 Basic NETCONF/YANG Operational(기본 NETCONF/YANG 운영)에서 다룹니다

예:

3. NETCONF 알림 구독(선택 사항)

클라이언트(중앙 집중식 관리 플랫폼)는 이 YANG 형식의 NETCONF RPC 메시지를 전송하여 서버(Catalyst 3850)에서 NETCONF 알림 스트림을 수신하도록 등록합니다 Catalyst 3850은 구독하는 각 클라이언트에 NETCONF 알림을 비동기식으로 전송합니다. 이 작업을 완료하기 전에 Catalyst 3850에서 NETCONF/YANG 설정의 NETCONF 알림(섹션 2 참조)을 지원하도록 Catalyst 3850에 올바른 설정이 있는지 확인하십시오. 이벤트가 시스템 내에서 발생하면 NETCONF 서버(Catalyst 3850)가 NETCONF 클라이언트(중앙 집중식 관리 플랫폼)에 이벤트 알림 전송을 시작합니다. 이러한 이벤트 알림은 NETCONF 세션이 종료되거나 다른 이유로 서브스크립션이 종료될 때까지 계속 전송될 수 있습니다. 서브스크립션 옵션 툴 5277과 관련된 자세한 내용은 RFC 5277을 참조하십시오.

<?xml version="1.0" encoding="utf-8"?>

<rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="">

<create-subscription xmlns="urn:ietf:params:xml:ns:netconf:notification:1.0">

<stream>snmpevents</stream>

</create-subscription>

</rpc>

이렇게 하려면 이를 잘라내어 Yang Explorer 애플리케이션 GUI에 사용자 지정 RPC로 붙여넣어야 합니다.

다음으로, NETCONF를 통해 사용자 지정 RPC 메시지를 Catalyst 3850으로 전송하기 위해 Run(실행)을 선택합니다. Catalyst 3850은 사용자에게 작업이 성공했음을 알리는 확인 메시지로 응답합니다.

참고: 이 예에서 사용된 Yang Explorer의 현재 버전에는 수신된 NETCONF 알림을 볼 수 있는 옵션이 없습니다. 일반적으로 애플리케이션의 메인 메뉴에서 클릭 가능한 알림 로그에 저장됩니다.

기본 NETCONF/YANG 작동 예

이제 Catalyst 3850과 중앙 집중식 관리 플랫폼이 구성되었고 통신이 시작되었으므로 몇 가지 기본적인 운영 예를 살펴보겠습니다.

이 예에서는 NETCONF를 통해 Centralized Management Platform(Laptop) Yang Explorer 애플리케이션에서 Catalyst 3850으로 전송된 YANG 형식의 NETCONF RPC 메시지가 Catalyst 3850의 confd 소프트웨어 프로세스에 의해 표준 Cisco IOS CLI로 변환됨을 보여줍니다. 또한 Cisco IOS CLI 데이터(show 명령 데이터)는 NETCONF RPC 메시지로 중앙 집중식 관리 플랫폼(노트북 컴퓨터)의 Yang Explorer 애플리케이션에 전송되기 전에 Catalyst 3850에서 설정된 소프트웨어 프로세스에 의해 YANG 형식의 데이터로 변환됩니다. 즉, Catalyst 3850에서 일반 CLI를 계속 사용하여 스위치를 설정하고 show 명령 데이터를 수집할 수 있으며 NETCONF/YANG을 사용하여 동일한 작업을 수행할 수 있습니다.

1. 데이터 검색 예

Catalyst 3850에서 인터페이스 이름 목록 요청

Yang Explorer 애플리케이션 GUI의 왼쪽 Explorer 섹션에서 원하는 작업을 선택할 수 있습니다. 이 경우, 인터페이스 이름 데이터는 Catalyst 3850에서 검색되므로 Oper(작업의 경우)을 선택한 다음 인터페이스 이름 드롭다운 아래에서 get-config를 선택합니다. Catalyst 3850에서 이 데이터를 검색하기 위해 NETCONF를 통해 Catalyst 3850으로 전송해야 하는 YANG 형식(판독 가능)의 NETCONF RPC를 생성하기 위해 RPC를 다음에 선택합니다.

YANG 형식의 NETCONF RPC 메시지가 생성된 후 Catalyst 3850으로 전송하기 위해 Run(실행)을 선택합니다. Catalyst 3850은 Catalyst 3850 인터페이스 이름(GigabitEthernet1/1/1, GigabitEthernet1/1/2 등)의 YANG 형식(사람이 읽을 수 있는) 목록으로 회신합니다.

2. 컨피그레이션 예시

Catalyst 3850에서 이더넷 인터페이스 종료

원하는 작업은 Yang Explorer 애플리케이션 GUI의 Explorer 섹션 왼쪽에서 선택됩니다. 이 경우, Catalyst 3850에서 인터페이스를 구성하려면(인터페이스를 종료하려면) Config를 선택해야 합니다. 그러면 Config(컨피그레이션)가 선택된 다음, 인터페이스 드롭다운 메뉴에서 필요한 작동 매개변수를 선택합니다. 설정 작업을 실행하기 위해 NETCONF를 통해 Catalyst 3850으로 전송해야 하는 (판독 가능한) YANG 형식의 NETCONF RPC를 생성하기 위해 RPC를 다음에 선택합니다.

YANG 형식의 NETCONF RPC 메시지가 생성된 후 Catalyst 3850으로 전송하기 위해 Run(실행)을 선택합니다. Catalyst 3850은 설정 작업이 성공적으로 수행되었음을 알리는 (판독 가능한) YANG 형식 메시지로 응답합니다.

변경이 이루어졌는지 확인하기 위해 컨피그레이션을 확인할 수 있습니다. Catalyst 3850에서 인터페이스 GigabitEthernet 1/0/16 컨피그레이션이 활성화되었다고 응답하면 Oper(get-config operation)를 사용할 수 있습니다. 즉, 인터페이스가 종료되었음을 의미합니다.

팁: 일반적으로 Yang Explorer 애플리케이션의 Explorer 섹션에서 값이 어떤 형식인지 명확하지 않은 경우, 그림과 같이 YANG 형식의 Catalyst 3850 컨피그레이션을 덤프하면 수정하기 전에 값을 확인할 수 있습니다. 다음 화면의 오른쪽에는 이러한 값에 대한 설명과 종속성이 Property(등록 정보) 및 Value(값) 열에 표시됩니다.

YANG 형식의 NETCONF RPC 메시지가 생성된 후 Catalyst 3850으로 전송하기 위해 Run(실행)을 선택합니다. Catalyst 3850이 인터페이스 GigabitEthernet 1/0/16 설정이 enabled = false임을 나타내는 YANG 형식의 메시지로 응답하는데 이는 인터페이스가 종료되었음을 의미합니다.

Catalyst 3850 CLI 이전 NETCONF/YANG 구성 변경 전후의 인터페이스 구성 표시

이전 Yang Explorer 설정 변경 작업의 경우에는 Catalyst 3850의 CLI에서 출력됩니다. Catalyst 3850의 로그 메시지에 표시된 대로 NETCONF RPC 메시지가 수신될 때까지 인터페이스 GigabitEthernet 1/0/16은 기본적으로 종료 상태가 아니었습니다. 인터페이스를 종료하기 위한 YANG 형식의 요청이 포함된 NETCONF RPC 메시지가 수신되면 작업이 완료되고 인터페이스가 종료되며 실행 중인 설정이 수정되어 이 내용을 반영합니다. 또한 Catalyst 3850의 설정 소프트웨어 프로세스가 수신된 YANG 형식의 NETCONF RPC 메시지를 표준 Cisco IOS CLI로 변환하는 방법도 보여줍니다. 즉, 사용자는 동일한 작업을 수행하기 위해 NETCONF/YANG을 사용하는 것 이외에도 여전히 일반 Cisco IOS CLI를 사용하여 설정을 수정하고 show 명령을 실행할 수 있습니다.

3850-1# show running-config interface gigabitEthernet 1/0/16

Building configuration...

Current configuration : 39 bytes

!

interface GigabitEthernet1/0/16

end

3850-1# show startup-config | begin 1/0/16

interface GigabitEthernet1/0/16

!

*Jan 5 17:05:55.345: %DMI-5-CONFIG_I:Switch 1 R0/0: nesd: Configured from NETCONF/RESTCONF by cisco1, transaction-id 31332

*Jan 5 17:05:57.335: %LINK-5-CHANGED: Interface GigabitEthernet1/0/16, changed state to administratively down

3850-1# show running-config interface gigabitEthernet 1/0/16

Building configuration...

Current configuration : 49 bytes

!

interface GigabitEthernet1/0/16

shutdown -------------------------> the interface is shutdown now

end

3850-1#

참고: Catalyst 3850에서 컨피그레이션이 아직 저장되지 않았습니다(실행 중인 컨피그레이션에서 시작 컨피그레이션으로 복사됨).

3850-1# show startup-config | begin 1/0/16

interface GigabitEthernet1/0/16

!

Catalyst 3850에 설정 저장

NETCONF를 통해 이 YANG 형식의 NETCONF RPC 메시지를 Catalyst 3850에 전송하여 실행 중인 설정을 Catalyst 3850의 시작 설정에 저장할 수 있습니다.

<?xml version="1.0" encoding="utf-8"?>

<rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="">

<cisco-ia:save-config xmlns:cisco-ia="cisco/yang/cisco-ia"

</rpc>

이 작업은 사용자 지정 RPC로 Yang Explorer 애플리케이션에 잘라 붙여넣을 때 수행됩니다.

NETCONF를 통해 사용자 지정 RPC 메시지를 Catalyst 3850으로 전송하기 위해 Run(실행)을 선택합니다. Catalyst 3850이 성공 메시지로 응답합니다.

이전 NETCONF/YANG 컨피그레이션 저장 작업 후 저장된 시작 컨피그레이션의 Catalyst 3850 CLI 표시

이제 시작 설정이 실행 중인 설정에 일치합니다.

3850-1# show running-config interface gigabitEthernet 1/0/16

Building configuration...

Current configuration : 49 bytes

!

interface GigabitEthernet1/0/16

shutdown

end

3850-1# show startup-config | begin 1/0/16

interface GigabitEthernet1/0/16

shutdown

!

CLI에서 Catalyst 3850 설정

앞에서 언급한 대로 동일한 작업을 수행하기 위해 NETCONF/YANG을 사용하는 것 이외에도 여전히 일반 Catalyst 3850 CLI를 사용하여 스위치를 설정하고 show 명령 데이터를 수집할 수 있습니다. Catalyst 3850 CLI를 NETCONF/YANG 대신 사용하여 스위치를 구성하는 경우, 새로운 running-config는 syncfd 소프트웨어 프로세스를 통해 Catalyst 3850의 DMI(Data Model Interface)와 동기화됩니다.

3850-1# show running-config interface gigabitEthernet 1/0/16

Building configuration...

Current configuration : 49 bytes

!

interface GigabitEthernet1/0/16

shutdown

end

3850-1# config t

Enter configuration commands, one per line.  End with CNTL/Z.

3850-1(config)# interface gigabitEthernet 1/0/16

3850-1(config-if)#no shutdown

3850-1(config-if)# exit

3850-1(config)# exit

3850-1#

*Jan 24 16:39:09.968: %LINK-3-UPDOWN: Interface GigabitEthernet1/0/16, changed state to down

*Jan 24 16:39:13.479: %SYS-5-CONFIG_I: Configured from console by console

*Jan 24 16:39:15.208: %DMI-5-SYNC_START:Switch 1 R0/0: syncfd:  External change to running configuration detected. The running configuration can be synchronized to the DMI data store.

*Jan 24 16:39:43.290: %DMI-5-SYNC_COMPLETE:Switch 1 R0/0: syncfd:  The running configuration has been synchronized to the DMI data store.

3850-1#

다음에 Yang Explorer 애플리케이션이 CLI 변경 후 인터페이스 설정의 복사본을 요청하면 변경 사항이 YANG 출력에 올바르게 반영됩니다.

NETCONF를 통해 GigabitEthernet1/0/16에 대한 RPC get-config 메시지를 Catalyst 3850으로 전송하기 위해 Run(실행)을 선택합니다. Catalyst 3850이 GigabitEthernet1/0/16 인터페이스 설정으로 응답하면 enabled = true로 표시됩니다.

3. GET 요청 작업을 통해 사용 가능한 SNMP MIB 작동 데이터 확인

NETCONF GET 작업으로 반환할 수 있는 SNMP MIB 데이터는 사용자가 구성할 수 없습니다. YANG 데이터 모델에 의해 정의된 구조화된 데이터로 변환되는 지원되는 모든 SNMP MIB는 Catalyst 3850의 Cisco XE 소프트웨어에 포함되어 있습니다. GET 요청에서 사용할 수 있는 MIB 데이터를 검색하려면 세 가지 옵션이 있습니다. 지원되는 모든 MIB는 기능 응답에 smiv2를 포함할 수 있습니다.

옵션 1. Capabilities(기능) 버튼은 Yang Explorer 애플리케이션 GUI에서 선택할 수 있습니다. Catalyst 3850은 smiv2 MIB 항목이 포함된 기능 목록으로 응답합니다.

옵션 2. 사용 가능한 smiv2 MIB 모델이 포함된 기능 목록을 검색하기 위해 이 YANG 형식의 NETCONF RPC 메시지를 NETCONF를 통해 Catalyst 3850으로 전송할 수 있습니다.

<?xml version="1.0" encoding="utf-8"?>

<rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="">

<get>

<filter type="subtree">

<ncm:netconf-state xmlns:ncm="urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring">

<ncm:capabilities/>

</ncm:netconf-state>

</filter>

</get>

</rpc>

이 작업은 사용자 지정 RPC로 Yang Explorer 애플리케이션에 잘라 붙여넣을 때 수행됩니다.

NETCONF를 통해 사용자 지정 RPC 메시지를 Catalyst 3850으로 전송하기 위해 Run(실행)을 선택합니다. Catalyst 3850은 지원되는 smiv2 MIB를 포함하는 기능 목록으로 응답합니다.

옵션 3.사용 가능한 MIB 모델 목록은 NETCONF 기능에서 확인할 수 있으며, 중앙 집중식 관리 플랫폼(노트북 컴퓨터)에서 SSH 연결에 대한 응답으로 Catalyst 3850에서 반환된 Hello 메시지가 표시됩니다.

USER1-M-902T:~ USER1$ ssh -s cisco1@172.16.167.175 -p 830 netconf

cisco1@172.16.167.175’s password: cisco1

<?xml version="1.0" encoding="UTF-8"?>

<hello xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">

<capabilities>

<capability>urn:ietf:params:netconf:base:1.0</capability>

<capability>urn:ietf:params:netconf:base:1.1</capability>

<capability>urn:ietf:params:netconf:capability:writable-running:1.0</capability>

<capability>urn:ietf:params:netconf:capability:xpath:1.0</capability>

<capability>urn:ietf:params:netconf:capability:validate:1.0</capability>

<capability>urn:ietf:params:netconf:capability:validate:1.1</capability>

<capability>urn:ietf:params:netconf:capability:rollback-on-error:1.0</capability

--snip--

<capability>urn:ietf:params:xml:ns:yang:smiv2:CISCO-CONFIG-MAN-MIB?module=CISCO-CONFIG-MAN-MIB&amp;revision=2007-04-27</capability>

<capability>urn:ietf:params:xml:ns:yang:smiv2:CISCO-CONTEXT-MAPPING-MIB?module=CISCO-CONTEXT-MAPPING-MIB&amp;revision=2008-11-22</capability>

<capability>urn:ietf:params:xml:ns:yang:smiv2:CISCO-DATA-COLLECTION-MIB?module=CISCO-DATA-COLLECTION-MIB&amp;revision=2002-10-30</capability>

--snip--

</capabilities>

<session-id>2870</session-id></ hello >]]>]]>

Use < ^C > to exit

추가 YANG 데이터 모델 로드

이 링크에는 추가 YANG 데이터 모델 파일이 포함되어 있습니다. 이러한 파일을 사용하면 IPv4 유니캐스트 라우팅 구성, QoS 등 다른 Catalyst 3850 기능과 관련된 NETCONF/YANG을 통해 추가 작업을 실행할 수 있습니다.

깃허브 양 모델

모든 공급업체에 적용되는 표준(일반, IETF(Internet Engineering Task Force)) 모델은 standard, ietf, rfc를 선택하여 찾을 수 있습니다. IETF 표준 기관의 RFC 게시물에서 가져온 표준 기반 YANG 데이터 모델을 제공합니다.

GitHub Yang 모델 트리 마스터 표준

Cisco 기본(디바이스, 벤더별) 모델은 벤더, cisco, xe, 1632를 선택하여 찾을 수 있습니다. Catalyst 3850용 Cisco IOS XE 소프트웨어 버전 16.3.2용 전용 YANG 데이터 모델을 제공합니다.

GitHub Yang Models Yang Tree 마스터 벤더

이러한 파일은 중앙 집중식 관리 플랫폼(랩톱)에 다운로드한 다음 Yang Explorer 애플리케이션에 로드할 수 있습니다. 두 가지 방법으로 이 작업을 수행할 수 있습니다. 첫 번째는 다양한 YANG 데이터 모델 파일을 개별적으로 로드하는 것이고, 두 번째는 모든 파일을 대량으로 로드하는 것입니다.

1. 다양한 YANG 데이터 모델 파일을 개별적으로 로드

팁: rawgit는 Github에서 파일을 다운로드하는 데 필요할 수 있습니다. Github에서 파일을 다운로드하려면 YANG 파일과 연결된 Raw 버튼을 선택합니다. 파일 다운로드 옵션 대신 URL을 지정한 경우, URL을 rawgit에 붙여넣으면 프로덕션 URL을 제공할 수 있습니다. 이 새 프로덕션 URL을 브라우저에 붙여넣으면 파일 다운로드 옵션을 제공할 수 있습니다.

이 예에서 cisco-ethernet.yang은 github에서 중앙 집중식 관리 플랫폼(랩톱)으로 이미 다운로드되었습니다. 다음은 파일을 Yang Explorer 애플리케이션 GUI에 로드한 다음 Subscribe(구독)하여 툴의 Explorer 섹션에 로드되도록 하는 단계입니다.

팁: NETCONF 기능을 사용하여 Catalyst 3850 소프트웨어에서 지원하는 데이터 모델을 결정할 수 있습니다. 중앙 집중식 관리 플랫폼(노트북 컴퓨터) 설정의 섹션 2를 참조하십시오.

2. 모든 YANG 데이터 모델 파일을 한 번에 대량 로드

이 절차는 5.2.2절 github에서도 언급됩니다.

중앙 집중식 관리 플랫폼의 터미널 프롬프트(노트북 컴퓨터 - macOS Sierra 10.12.2를 실행하는 Apple Macbook Pro)에서 다음을 수행합니다.

USER1-M-902T:~ USER1$ cd yang-explorer

USER1-M-902T:yang-explorer USER1$ cd server

USER1-M-902T:server USER1$ python manage.py bulkupload --user guest --git https://github.com/YangModels/yang.git --dir vendor/cisco/xe/1632

Git upload ..

Cloning into '/Users/USER1/yang-explorer/server/data/session/tmpk7V4O6'...

remote: Counting objects: 5610, done.

remote: Total 5610 (delta 0), reused 0 (delta 0), pack-reused 5610

Receiving objects: 100% (5610/5610), 11.80 MiB | 2.34 MiB/s, done.

Resolving deltas: 100% (3159/3159), done.

Checking out files: 100% (3529/3529), done.

Cleaning up /Users/USER1/yang-explorer/server/data/session/tmpk7V4O6

Compiling : user: guest, file: /Users/USER1/yang-explorer/server/data/session/tmpHTAEP3/cisco-acl-oper.yang

DEBUG:root:Compiling session dependency ...

//anaconda/bin/pyang

DEBUG:root:Rebuilding dependencies for user guest

--snip--

이제 모든 YANG 데이터 모델이 Yang Explorer 애플리케이션 GUI에 표시됩니다. Subscribe(구독)를 클릭하면 관심 기능과 관련된 파일을 선택할 수 있습니다. 그러면 해당 파일이 툴의 Explorer 섹션에 추가됩니다.

팁: NETCONF 기능을 사용하여 Catalyst 소프트웨어에서 지원하는 데이터 모델을 결정할 수 있습니다. 중앙 집중식 관리 플랫폼(노트북 컴퓨터) 설정의 섹션 2를 참조하십시오.

이제 Catalyst 3850에 설정을 저장하는 데 필요한 NETCONF/YANG RPC를 생성하는 등의 기타 작업을 완료할 수 있습니다. 이 작업은 Yang Explorer 애플리케이션 왼쪽의 Explorer(탐색기) 섹션에서 save-conf RPC를 선택하면 수행됩니다. 그런 다음 RPC를 선택하여 NETCONF를 통해 Catalyst 3850으로 전송하여 Catalyst 3850에 컨피그레이션을 저장할 수 있는 YANG 형식의 NETCONF RPC를 생성합니다.

NETCONF를 통해 사용자 지정 RPC 메시지를 Catalyst 3850으로 전송하기 위해 Run(실행)을 선택합니다. Catalyst 3850이 성공 메시지로 응답합니다.

주요 YANG 데이터 모델

cisco-ia.yang 데이터 모델

다음은 cisco-ia.yang 데이터 모델의 몇 가지 RPC 예입니다. Catalyst 3850 컨피그레이션을 저장하고, Catalyst 3850 running-config를 로컬 DMI(Data Model Interface) 데이터 저장소에 동기화하고, Catalyst 3850에서 DMI 인터페이스를 재설정하는 등의 작업이 포함된다는 점에서 주목할 만하다.

첫 번째 단계는 cisco-ia.yang 데이터 모델을 Subscribe(구독)하여 Yang Explorer 애플리케이션 GUI의 왼쪽에 있는 Explorer(탐색기) 섹션에 표시하는 것입니다.

YANG Explorer 애플리케이션 GUI 왼쪽의 Explorer 섹션에서 cisco-ia 데이터 모델이 확장되면 다양한 운영 옵션이 표시됩니다. 예를 들어 사용 가능한 cisco-ia.yang 데이터 모델 옵션 중 하나를 사용하려면 save-config 작업이 선택되고 RPC 버튼을 선택하면 관련 RPC가 생성됩니다.

다음으로, NETCONF를 통해 RPC 메시지를 Catalyst 385으로 전송하기 위해 Run(실행)을 선택합니다. Catalyst 3850은 사용자에게 작업이 성공했음을 알리는 성공 메시지로 응답합니다.

모든 다양한 cisco-ia.yang 데이터 모델 작업은 다음과 같습니다.

sync-from - 이 RPC는 Catalyst 3850의 NETCONF 인터페이스가 설정을 실행 중인 디바이스의 NETCONF 데이터 저장소 표현을 디바이스에서 실행 중인 설정과 동기화하도록 합니다. 이 두 가지 모두 Catalyst 3850에 존재합니다.

<?xml version="1.0" encoding="utf-8"?>

<rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="">

<cisco-ia:sync-from xmlns:cisco-ia

</rpc>

이 RPC의 기본 동작은 sync-defaults 없이 동기화를 수행하는 것으로, 디바이스로 전송된 show running-config 명령을 출력하여 NETCONF 데이터 저장소와 동기화됩니다. sync-defaults가 있으면 NETCONF 인터페이스는 기능 코드에서 제공하는 기본 설정 정보도 읽습니다. 대부분의 경우 이 옵션은 사용되지 않습니다. 일반적으로 NETCONF 인터페이스 사용자가 NETCONF replace 명령을 사용하여 디바이스 설정의 전체 섹션을 교체하려는 경우에만 이 옵션을 사용합니다.

<?xml version="1.0" encoding="utf-8"?>

<rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="">

<cisco-ia:sync-from xmlns:cisco-ia/>

<cisco-ia:sync-defaults/>

</cisco-ia:sync-from>

</rpc>

save-config - 이 RPC는 write memory(copy running-config startup-config) 명령을 실행하여 현재 디바이스 실행 설정을 디바이스 시작 설정에 저장합니다.

<?xml version="1.0" encoding="utf-8"?>

<rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="">

<cisco-ia:save-config xmlns:cisco-ia

</rpc>

checkpoint - 이 RPC는 NETCONF 인터페이스가 Cisco IOSd 기본 제공 컨피그레이션 아카이브 기능을 사용하여 실행 중인 컨피그레이션을 비휘발성 스토리지에 저장하도록 합니다.

<?xml version="1.0" encoding="utf-8"?>

<rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="">

<cisco-ia:checkpoint xmlns:cisco-ia

</rpc>

rollback - 이 RPC는 NETCONF 인터페이스가 디바이스의 실행 구성을 체크포인트 RPC 또는 디바이스에 저장된 다른 유효한 실행 설정과 함께 저장된 실행 설정으로 롤백하도록 합니다.

target-url              string (name of the saved checkpoint file)

verbose?              Boolean (show detail during rollback process)

nolock?                Boolean (lock configuration)

revert-on-error?   Empty (if error occurs during rollback, leave running unchanged)

revert-timer?        int16 (time in seconds before revets to the original configuration)

<?xml version="1.0" encoding="utf-8"?>

<rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="">

<cisco-ia:rollback xmlns:cisco-ia=

<cisco-ia:target-url>saved-config</cisco-ia:target-url>

<cisco-ia:verbose>true</cisco-ia:verbose>

<cisco-ia:nolock>true</cisco-ia:nolock>

<cisco-ia:revert-on-error></cisco-ia:revert-on-error>

<cisco-ia:revert-timer>10</cisco-ia:revert-timer>

</cisco-ia:rollback>

</rpc>

revert - 이 RPC는 NETCONF 인터페이스에서 롤백 RPC의 revert-timer를 변경합니다. 이렇게 하면 시간 초과된 롤백이 취소되고 롤백이 즉시 트리거되거나 시간 초과된 롤백에 대한 매개변수가 재설정됩니다.

now?   empty

timer?  int16

idle?    int16

<?xml version="1.0" encoding="utf-8"?>

<rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="">

<cisco-ia:revert xmlns:cisco-ia

<cisco-ia:now/>

<cisco-ia:timer>10</cisco-ia:timer>

<cisco-ia:idle>60</cisco-ia:idle>

</cisco-ia:revert>

</rpc>

reset - 이 RPC로 NETCONF 인터페이스를 재시작할 수 있습니다. 재초기화가 true인 경우, NETCONF 인터페이스는 writable-running(쓰기 가능 실행) 데이터 저장소에 있는 모든 상태 정보를 지웁니다. false(기본값)인 경우 NETCONF 설정 데이터 저장소 상태 정보가 유지됩니다.

<?xml version="1.0" encoding="utf-8"?>

<rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="">

<cisco-ia:reset xmlns:cisco-ia

<cisco-ia:reinitialize>true</cisco-ia:reinitialize>

</cisco-ia:reset>

</rpc>

참고: 일부 Cisco 플랫폼 또는 Cisco IOS 소프트웨어 버전은 현재 모든 기능을 지원할 수 없습니다. 예를 들어 IOS 16.3.3을 실행하는 Catalyst 3850에 이전 재설정을 전송하면 Catalyst 3850에서 RPC 응답으로서 "Reset not supported(재설정 지원되지 않음)" 오류가 중앙 집중식 관리 플랫폼(랩톱)에 반환됩니다.

<nc:rpc-error xmlns:nc="urn:ietf:params:xml:ns:netconf:base:1.0">

<nc:error-type>application</nc:error-type>

<nc:error-tag>operation-failed</nc:error-tag>

<nc:error-severity>error</nc:error-severity>

<nc:error-path xmlns:cisco-ia

<nc:error-message lang="en" xmlns="https://www.w3.org/XML/1998/namespace">Reset not supported</nc:error-message>

<nc:error-info>

<nc:bad-element>reset</nc:bad-element>

</nc:error-info>

</nc:rpc-error>

ned.yang 데이터 모델

ned.yang과 같은 NED(Network Elements Driver) 데이터 모델은 Cisco 디바이스(Catalyst 3850) 설정 측면에서 가장 강력한 기능을 제공합니다. 여기 이것을 보여주는 몇 가지 화면들이 있습니다.

첫 번째 단계는 ned.yang 데이터 모델을 Subscribe(구독)하여 Yang Explorer 애플리케이션 GUI의 왼쪽에 있는 Explorer 섹션에 표시하는 것입니다.

Yang Explorer 애플리케이션의 왼쪽에 있는 Explorer(탐색기) 섹션에서 사용 가능한 옵션을 스크롤하면 GUI에 ned.yang 데이터 모델의 설정 가능한 Catalyst 3850 기능의 긴 목록이 표시됩니다.

예를 들어, 이러한 화면에서는 YANG Explorer 애플리케이션 GUI의 왼쪽에 있는 Explorer 섹션에서 사용 가능한 end.yang 데이터 모델 컨피그레이션 옵션 목록을 아래로 스크롤한 후 Catalyst 3850의 OSPF 라우팅 컨피그레이션을 표시하는 방법을 보여줍니다. ospf 하위 옵션은 router 옵션 내부에 있습니다. RPC 버튼을 선택하면 관련 get-config RPC가 생성됩니다.

다음으로, NETCONF를 통해 RPC 메시지를 Catalyst 385으로 전송하기 위해 Run(실행)을 선택합니다. Catalyst 3850은 OSPF 라우팅 컨피그레이션으로 회신합니다.

다음은 get-config RPC 작업에 대한 응답으로 Catalyst 3850에서 반환되는 OSPF 라우팅 설정의 확장입니다.

<rpc-reply message-id="urn:uuid:0e2c04cf-9119-4e6a-8c05-238ee7f25208" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" xmlns:nc="urn:ietf:params:xml:ns:netconf:base:1.0">

<data>

<native xmlns>

<router>

<ospf>

<id>100</id>

<redistribute>

<connected>

<redist-options>

<subnets/>

</redist-options>

</connected>

</redistribute>

<network>

<ip>10.10.0.0</ip>

<mask>0.0.255.255</mask>

<area>0</area>

</network>

<network>

<ip>10.20.0.0</ip>

<mask>0.0.255.255</mask>

<area>0</area>

</network>

<network>

<ip>10.100.0.0</ip>

<mask>0.0.255.255</mask>

<area>0</area>

</network>

</ospf>

</router>

</native>

</data>

</rpc-reply>

NETCONF를 통해 Catalyst 3850에서 검색한 YANG 형식의 OSPF 라우팅 컨피그레이션은 사람이 읽을 수 있으며 Catalyst 3850의 CLI를 통해 Catalyst 3850 컨피그레이션을 볼 때 보이는 것과 일치합니다.

3850-1# show running-config | section ospf

router ospf 100

redistribute connected subnets

network 10.10.0.0 0.0.255.255 area 0

network 10.20.0.0 0.0.255.255 area 0

network 10.100.0.0 0.0.255.255 area 0

3850-1#

필요한 경우 ned.yang 데이터 모델을 사용하여 OSPF 라우팅 설정을 수정할 수도 있습니다. 이 예에서는 왼쪽의 Yang Explorer 애플리케이션 GUI의 Explorer 섹션에 원하는 매개변수를 먼저 입력한 다음(OSPF 라우터 ID 100도 입력되었지만 Explorer 화면 스크롤링으로 인해 표시되지 않음) 관련 YANG 형식의 RPC를 생성하고 RPC 버튼을 눌러 Catalyst 3850의 기존 OSPF 라우팅 컨피그레이션에 새 네트워크 매개변수를 추가합니다.

다음으로, NETCONF를 통해 RPC 메시지를 Catalyst 385으로 전송하기 위해 Run(실행)을 선택합니다. Catalyst 3850은 사용자에게 작업이 성공적으로 완료되었음을 알리는 확인 메시지로 응답합니다.

ned.yang 데이터 모델을 통해 OSPF 라우팅 설정을 수정하는 이 NETCONF/YANG RPC 작업은 Catalyst 3850의 CLI를 통해 표시되는 Catalyst 3850 설정에 반영됩니다. 또한 Catalyst 3850에는 NETCONF를 통해 설정이 변경되었음을 나타내는 시스템 로그 메시지도 있습니다.

3850-1#

*Jan 30 14:13:41.659: %DMI-5-CONFIG_I:Switch 1 R0/0: nesd: Configured from NETCONF/RESTCONF by cisco1, transaction-id 23143

3850-1# show running-config | section ospf

router ospf 100

redistribute connected subnets

network 10.10.0.0 0.0.255.255 area 0

network 10.20.0.0 0.0.255.255 area 0

network 10.30.0.0 0.0.255.255 area 0 ------> new line added to OSPF configuration

network 10.100.0.0 0.0.255.255 area 0

3850-1#

NETCONF/YANG을 통해 running-config을 Catalyst 3850의 startup-config에 저장하는 방법에 대한 자세한 내용은 이전 섹션 cisco-ia.yang 데이터 모델에서 언급한 save-config 작업을 참조하십시오.

Python 스크립팅

YANG Explorer 애플리케이션 GUI에서 Python 스크립트 생성

Yang Explorer 애플리케이션 GUI를 사용하여 지정된 NETCONF/YANG 작업에 대한 Python 스크립트를 생성할 수도 있습니다. Python 스크립팅의 주요 이점은 이를 통해 NETCONF/YANG 작업의 오케스트레이션 및 자동화가 가능하다는 것입니다.

이 예에서는 중앙 집중식 관리 플랫폼(랩톱)의 Yang Explorer 애플리케이션 GUI 왼쪽에 있는 Explorer 창에서 save-config 작업을 선택합니다. 그런 다음, Script(스크립트) 버튼을 선택하여 Python 스크립트를 생성합니다. Copy(복사) 버튼을 선택하여 스크립트를 복사하면 Python.py 파일 확장명으로 중앙 집중식 관리 플랫폼(노트북 컴퓨터)에 저장할 수 있는 파일에 붙여넣을 수 있습니다. 이 예에서 (표시되지 않음) 이 파일의 이름은 example.py입니다.

참고: 다음 예에서 GUI의 Platform type other를 사용하는 경우 Python 스크립트를 실행할 때 오류가 발생했습니다. 그 결과 Cisco CSR 라우터도 Catalyst 3850과 마찬가지로 Cisco IOS XE 소프트웨어를 실행하므로 "플랫폼 유형이 csr로 변경되었습니다. 이렇게 하면 오류가 발생하지 않습니다.

다음은 생성한 후 중앙 집중식 관리 플랫폼(노트북 컴퓨터)에서 example.py 파일에 복사하여 붙여넣은 Python 스크립트의 확장입니다.

참고: Yang Explorer 애플리케이션 GUI에서 생성된 example.py 파일의 시작 부분에 있는 주석에는 Python 스크립트를 실행하는 데 필요한 단계가 포함됩니다. 페이로드에는 스크립트가 실행할 수 있는 NETCONF/YANG 작업이 포함됩니다. 이 예에서는 save-config 작업입니다.

"""

Netconf python example by yang-explorer (https://github.com/CiscoDevNet/yang-explorer)

Installing python dependencies:

> pip install lxml ncclient

Running script: (save as example.py)

> python example.py -a 172.16.167.174 -u cisco1 -p cisco1 --port 830

"""

import lxml.etree as ET

from argparse import ArgumentParser

from ncclient import manager

from ncclient.operations import RPCError

payload = """
<save-config xmlns

"""

if __name__ == '__main__':

parser = ArgumentParser(description='Usage:')

# script arguments

parser.add_argument('-a', '--host', type=str, required=True,

help="Device IP address or Hostname")

parser.add_argument('-u', '--username', type=str, required=True,

help="Device Username (netconf agent username)")

parser.add_argument('-p', '--password', type=str, required=True,

help="Device Password (netconf agent password)")

parser.add_argument('--port', type=int, default=830,

help="Netconf agent port")

args = parser.parse_args()

# connect to netconf agent

with manager.connect(host=args.host,

port=args.port,

username=args.username,

password=args.password,

timeout=90,

hostkey_verify=False,

device_params={'name': 'csr'}) as m:

# execute netconf operation

try:

response = m.dispatch(ET.fromstring(payload)).xml

data = ET.fromstring(response)

except RPCError as e:

data = e._raw

# beautify output

print(ET.tostring(data, pretty_print=True))

중앙 집중식 관리 플랫폼(노트북 컴퓨터)에서 Python 스크립트 실행

다음은 running-config를 startup-config에 저장할 수 있는 Python 스크립트 example.py를 실행하기 전 Catalyst 3850 CLI 검사입니다. 이 시점에서 shutdown 명령은 running-config에 있지만 인터페이스 GigabitEthernet1/0/10의 startup-config에는 없습니다.

3850-1# show running-config interface gigabitEthernet 1/0/10

Building configuration...

Current configuration : 49 bytes

!

interface GigabitEthernet1/0/10

shutdown

end

3850-1# show startup-config | begin 1/0/10

interface GigabitEthernet1/0/10

!

interface GigabitEthernet1/0/11

!

interface GigabitEthernet1/0/12

!

interface GigabitEthernet1/0/13

!

중앙 집중식 관리 플랫폼(노트북 컴퓨터)의 일반 터미널 프롬프트에서, Yang Explorer 애플리케이션 GUI에서 생성된 Python 파일 example.py가 노트북 컴퓨터의 yang-explore 디렉토리에 먼저 복사됩니다.

USER1-M-902T:~ USER1$ pwd

/Users/USER1

USER1-M-902T:~ USER1$ cp /Users/USER1/Desktop/example.py /Users/USER1/yang-explorer

USER1-M-902T:~ USER1$ cd yang-explorer

USER1-M-902T:yang-explorer USER1$ ls -l

total 112

-rw-r--r-- 1 USER1 staff 11358 Jan 4 17:59 LICENSE

-rw-r--r-- 1 USER1 staff 13635 Jan 4 17:59 README.md

drwxr-xr-x 12 USER1 staff 408 Jan 4 17:59 YangExplorer

drwxr-xr-x 7 USER1 staff 238 Jan 4 17:59 default-models

drwxr-xr-x 3 USER1 staff 102 Jan 4 17:59 docs

-rw-r--r-- 1 USER1 staff 72 Jan 4 17:59 env.sh

-rw-r--r--@ 1 USER1 staff 1990 Jan 30 17:50 example.py

-rw-r--r-- 1 USER1 staff 207 Jan 4 17:59 requirements.txt

drwxr-xr-x 11 USER1 staff 374 Jan 5 14:37 server

-rwxr-xr-x 1 USER1 staff 4038 Jan 4 17:59 setup.sh

-rwxr-xr-x 1 USER1 staff 640 Jan 4 17:59 start.sh

drwxr-xr-x 5 USER1 staff 170 Jan 4 18:00 v

USER1-M-902T:yang-explorer USER1$

그런 다음 중앙 집중식 관리 플랫폼(랩톱)의 일반 터미널 프롬프트에서 Yang Explorer 애플리케이션 GUI에서 생성한 example.py 파일의 시작 부분에 있는 설명 섹션에서 제공된 두 명령이 실행됩니다(이전 섹션에서 Yang Explorer 애플리케이션 GUI에서 Python 스크립트 생성 참조).

USER1-M-902T:yang-explorer USER1$ pip install lxml ncclient

Collecting lxml

Downloading lxml-3.7.2.tar.gz (3.8MB)

100% |████████████████████████████████| 3.8MB 328kB/s

Collecting ncclient

Downloading ncclient-0.5.3.tar.gz (63kB)

100% |████████████████████████████████| 71kB 3.5MB/s

Requirement already satisfied: setuptools>0.6 in /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages (from ncclient)

Collecting paramiko>=1.15.0 (from ncclient)

Downloading paramiko-2.1.1-py2.py3-none-any.whl (172kB)

100% |████████████████████████████████| 174kB 3.1MB/s

Collecting six (from ncclient)

Using cached six-1.10.0-py2.py3-none-any.whl

Collecting cryptography>=1.1 (from paramiko>=1.15.0->ncclient)

Using cached cryptography-1.7.2-cp27-cp27m-macosx_10_6_intel.whl

Collecting pyasn1>=0.1.7 (from paramiko>=1.15.0->ncclient)

Using cached pyasn1-0.1.9-py2.py3-none-any.whl

Collecting cffi>=1.4.1 (from cryptography>=1.1->paramiko>=1.15.0->ncclient)

Using cached cffi-1.9.1-cp27-cp27m-macosx_10_10_intel.whl

Collecting enum34 (from cryptography>=1.1->paramiko>=1.15.0->ncclient)

Using cached enum34-1.1.6-py2-none-any.whl

Collecting ipaddress (from cryptography>=1.1->paramiko>=1.15.0->ncclient)

Using cached ipaddress-1.0.18-py2-none-any.whl

Collecting idna>=2.0 (from cryptography>=1.1->paramiko>=1.15.0->ncclient)

Using cached idna-2.2-py2.py3-none-any.whl

Collecting pycparser (from cffi>=1.4.1->cryptography>=1.1->paramiko>=1.15.0->ncclient)

Downloading pycparser-2.17.tar.gz (231kB)

100% |████████████████████████████████| 235kB 2.6MB/s

Installing collected packages: lxml, six, pycparser, cffi, pyasn1, enum34, ipaddress, idna, cryptography, paramiko, ncclient

Running setup.py install for lxml ... -

done

Running setup.py install for pycparser ... done

Running setup.py install for ncclient ... done

Successfully installed cffi-1.9.1 cryptography-1.7.2 enum34-1.1.6 idna-2.2 ipaddress-1.0.18 lxml-3.7.2 ncclient-0.5.3 paramiko-2.1.1 pyasn1-0.1.9 pycparser-2.17 six-1.10.0

USER1-M-902T:yang-explorer USER1$

두 번째 명령은 TCP 포트 830(netconf-ssh)을 통해 사용자 이름/비밀번호가 cisco1/cisco1인 IP 주소 172.16.167.174에서 Catalyst 3850에 대해 Python 스크립트 example.py를 실행합니다. Catalyst 3850은 중앙 집중식 관리 플랫폼(노트북 컴퓨터)으로 save-config 작업이 성공했다는 RPC 응답을 전송합니다.

USER1-M-902T:yang-explorer USER1$ python example.py -a 172.16.167.174 -u cisco1 -p cisco1 --port 830

<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" xmlns:nc="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="urn:uuid:31e0fdee-b72f-4695-9e03-91ec771b37f5"><result xmlns>Save running-config successful

</result>

</rpc-reply>

USER1-M-902T:yang-explorer USER1

다음은 running-config를 start-up config에 저장한 Python 스크립트 example.py를 실행한 후의 Catalyst 3850 CLI 확인입니다. shutdown 명령은 성공적인 save-config NETCONF/YANG 작업으로 인해 인터페이스 GigabitEthernet1/0/10의 running-config 및 startup-config에 모두 표시됩니다.

3850-1# show running-config interface gigabitEthernet 1/0/10

Building configuration...

Current configuration : 49 bytes

!

interface GigabitEthernet1/0/10

shutdown

end

3850-1# show startup-config | begin 1/0/10

interface GigabitEthernet1/0/10

shutdown

!

interface GigabitEthernet1/0/11

!

interface GigabitEthernet1/0/12

!

interface GigabitEthernet1/0/13

!

문제 해결

이 섹션에서는 설정 문제 해결에 사용할 수 있는 정보를 제공합니다.

NETCONF 오류 메시지

NETCONF 프로토콜은 NETCONF 클라이언트(중앙 집중식 관리 플랫폼(노트북 컴퓨터))와 서버 디바이스(Catalyst 3850)의 NETCONF 구현 간에 교환되는 작업 및 메시지 집합을 정의합니다. 일반적으로 사용되는 NETCONF 작업은 다음과 같습니다.

<get>, <get-config>, <edit-config>, <rpc>

NETCONF 메시지 콘텐츠의 형식 및 기타 제약 조건은 YANG 데이터 모델에 의해 정의됩니다. NETCONF 클라이언트와 서버는 RPC를 전송하여 상호 작용합니다.

NETCONF 메시지 형식에 오류가 있거나 메시지 내용이 디바이스에서 구현한 YANG 데이터 모델의 정의와 일치하지 않는 경우 디바이스의 NETCONF 서버는 RPC 오류를 반환할 수 있습니다.

<error-type>application</error-type>

이러한 RPC 오류가 NETCONF 인터페이스가 작동하지 않음을 나타내지는 않습니다. 이러한 오류는 클라이언트가 서버 디바이스에 구현된 YANG 데이터 모델에서 지원하지 않는 작업을 수행하려고 시도하고 있음을 나타냅니다. 사용자는 서버 디바이스에 구현된 YANG 데이터 모델을 검토하여 이러한 오류의 원인을 파악하고 해결해야 합니다.

RPC 오류 예

이 예에서는 잘못된 인터페이스 유형 ianaift:fastEtherFX를 사용하여 NETCONF를 통해 Catalyst 3850으로 전송할 YANG 형식의 <edit-config>NETCONF RPC 메시지를 생성합니다.

RPC 메시지를 Catalyst 3850으로 전송하기 위해 Run(실행)을 선택하면 Catalyst 3850이 오류 메시지로 응답합니다.

다음은 Catalyst 3850에서 반환된 오류입니다. 오류 태그인 "operation-failed"가 표시되고 오류에 대해 자세히 설명하는 "Unsupported - value must be ethernetCsmacd or softwareLoopback"</nc:error-message>"이 표시됩니다.

<nc:rpc-error xmlns:nc="urn:ietf:params:xml:ns:netconf:base:1.0">

<nc:error-type>application</nc:error-type>

<nc:error-tag>operation-failed</nc:error-tag>

<nc:error-severity>error</nc:error-severity>

<nc:error-path xmlns:if="urn:ietf:params:xml:ns:yang:ietf-interfaces">/rpc/edit-config/config/if:interfaces/if:interface[if:name='GigabitEthernet1/0/16']/if:type</nc:error-path>

<nc:error-message lang="en" xmlns="https://www.w3.org/XML/1998/namespace">/interfaces/interface[name='GigabitEthernet1/0/16']/type: "Unsupported - value must be ethernetCsmacd or softwareLoopback"</nc:error-message>

<nc:error-info>

<nc:bad-element>type</nc:bad-element>

</nc:error-info>

</nc:rpc-error>

이제 오류를 수정하고 올바른 인터페이스 유형 ianaift:ethernetCsmacd를 Catalyst 3850에 보내진 RPC 메시지에서 지정하여 Catalyst 3850이 오류 대신 확인 메시지로 응답하도록 합니다.

이번에는 RPC 메시지를 Catalyst 3850으로 전송하기 위해 Run(실행)을 선택하면 Catalyst 3850은 작업이 성공했음을 나타내는 확인 메시지로 응답합니다.

팁: 정확한 Explorer Values 형식을 확인할 수 없는 경우, 매개변수의 변경을 시도하기 전에 기존 컨피그레이션을 확인할 수 있습니다. 이것은 그림과 같이 get-config 작업(Oper)으로 수행할 수 있습니다.

RPC 메시지를 Catalyst 3850으로 전송하기 위해 Run(실행)을 선택하면 Catalyst 3850은 인터페이스 유형이 ianaift:ethernetCsmacd임을 보여주는 YANG 형식의 인터페이스 설정으로 응답합니다.

기타 RPC 오류 유형 예

1. "사용 중"(config-locked) RPC 오류 응답 메시지

<edit-config> 요청에 대한 NETCONF 오류 응답입니다. <error-tag>는 "사용 중"을 나타냅니다. 응답은 서버 디바이스(Catalyst 3850)의 NETCONF 실행 데이터 저장소가 현재 잠겨 있고 NETCONF <edit-config> 작업을 수행할 수 없음을 나타냅니다. 그러나 이것이 NETCONF 인터페이스 구현 오류를 나타내는 것은 아닙니다. 데이터 저장소가 사용 중일 때 NETCONF 클라이언트가 NETCONF 실행 데이터 저장소에 쓰기를 시도하면 클라이언트는 이 RPC 응답을 수신합니다. NETCONF 클라이언트는 NETCONF edit-config 메시지를 재시도할 수 있습니다. 이 응답은 디바이스가 NETCONF 실행 데이터 저장소를 디바이스 IOSd 컨피그레이션과 동기화하기 위해 디바이스 간 동기화 내부 작업을 수행할 때 수신할 수 있습니다.

서버(Catalyst 3850)에서 클라이언트(중앙 집중식 관리 플랫폼(노트북 컴퓨터))로의 NETCONF 응답

<?xml version="1.0" encoding="utf-8"?>

<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="3">

<rpc-error>

<error-type>application</error-type>

<error-tag>in-use</error-tag>

<error-severity>error</error-severity>

<error-app-tag>config-locked</error-app-tag>

<error-info>

<session-id>0</session-id>

</error-info>

</rpc-error>

</rpc-reply>

2. "데이터-누락" RPC 오류 응답 메시지

이 예에서는 <edit-config> RPC가 구성되지 않은 루프백 인터페이스에 대해 Catalyst 3850으로 전송되었습니다. Catalyst 3850에 없는 인터페이스를 구성할 수 없으므로 오류가 반환되었습니다.

<?xml version="1.0" encoding="utf-8"?>

<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="3">

<rpc-error>

<error-type>application</error-type>

<error-tag>data-missing</error-tag>

<error-severity>error</error-severity>

<error-path xmlns:if="urn:ietf:params:xml:ns:yang:ietf-interfaces">/rpc/edit-config/config/if:interfaces/if:interface[if:name='Loopback1111']/if:type</error-path>

<error-message xml:lang="en">/interfaces/interface[name='Loopback1111']/type is not configured</error-message>

<error-info>

<bad-element>type</bad-element>

</error-info>

</rpc-error>

</rpc-reply>

3. "데이터 모델 누락" RPC 오류 응답 메시지

Catalyst 3850에 없는 데이터 모델을 요청하거나 데이터 모델에 구현되지 않은 leaf를 요청하면 서버(Catalyst 3850)는 빈 데이터 응답으로 응답합니다. 이는 정상적인 동작입니다.

팁: NETCONF 기능 기능을 사용하여 Catalyst 소프트웨어에서 지원하는 데이터 모델을 결정합니다. 중앙 집중식 관리 플랫폼(노트북 컴퓨터) 설정의 섹션 2를 참조하십시오.

<?xml version="1.0" encoding="utf-8"?>

<data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"/>

4. "유효하지 않은 값" RPC 오류 응답 메시지

경우에 따라 NETCONF 메시지에 YANG 데이터 모델을 기반으로 유효한 콘텐츠가 포함될 수 있지만 디바이스(Catalyst 3850)가 요청된 내용을 구현할 수 없습니다. Catalyst 3850의 NETCONF 인터페이스가 IOSd에서 성공적으로 적용할 수 없는 설정을 IOSd로 전송하면 특정 RPC 오류 응답이 NETCONF 클라이언트로 반환됩니다.

이 예에서는 잘못된 로깅 버퍼링 가짜 값이 RPC 메시지에서 Catalyst 3850으로 전송됩니다. Catalyst 3850의 응답에 있는 오류 태그는 유효하지 않은 값을 나타냅니다. 오류 메시지는 Catalyst 3850 IOS Parser가 유효한 값이 아니기 때문에 로깅 버퍼링 심각도 수준을 가짜로 설정할 수 없음을 나타냅니다.

<?xml version="1.0" encoding="utf-8"?>

<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="6">

<rpc-error>

<error-type>application</error-type>

<error-tag>invalid-value</error-tag>

<error-severity>error</error-severity>

<error-message xml:lang="en">inconsistent value: Device refused command "logging buffered bogus" at column 20 </error-message>

</rpc-error>

</rpc-reply>