内容

はじめに

前提条件

要件

使用するコンポーネント

背景説明

データモデル：プログラマティックおよび標準ベースの設定とモニタリング

Yet Another Next Generation（YANG）データモデリング言語（RFC 6020）

ネットワーク設定（NETCONF）プロトコル（RFC 6241）

設定

1. NETCONF/YANGデータモデリングをサポートするためのCisco XE 16.3.3ソフトウェアを実行するCatalyst 3850の基本設定

2. NETCONF/YANG Syslog および SNMP イベントモニタリングを許可する追加（オプション）設定

3. この例で使用される Catalyst 3850 のネットワーク接続設定

Catalyst 3850 での NETCONF/YANG の確認

中央管理プラットフォーム（ラップトップ）の設定

1. ラップトップへの YANG Explorer アプリケーションのインストール

2. YANG Explorer アプリケーションの使用

3. NETCONF 通知への登録（オプション）

NETCONF/YANG の基本的な動作例

1. データ取得の例

Catalyst 3850 からのインターフェイス名リストの要求

2. 設定例

Catalyst 3850 でのイーサネット インターフェイスのシャットダウン

以前のNETCONF/YANG設定の変更前と変更後のCatalyst 3850 CLIでのインターフェイス設定の表示

Catalyst 3850 での設定の保存

Catalyst 3850のCLIで、PreviousNETCONF/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）1 台が NETCONF クライアントとして使用されます。中央管理プラットフォームとして機能し、Yang Explorerアプリケーションを使用します。YANG形式の要求を作成するデバイスです。この要求は、NETCONF RPC（リモートプロシージャコール）メッセージを介してCatalyst 3850に送信され、Catalyst 3850の設定とデータ収集を行います。

このドキュメントの情報は、特定のラボ環境にあるデバイスに基づいて作成されました。このドキュメントで使用するすべてのデバイスは、クリアな（デフォルト）設定で作業を開始しています。本稼働中のネットワークでは、各コマンドによって起こる可能性がある影響を十分確認してください。

背景説明

このドキュメントの例では、Catalyst 3850を使用したラボテストに重点を置いていますが、ここで示す情報は、Cisco ASR 1000シリーズルータなどの他のCisco IOS XE 16.xプラットフォームにも適用されます。

データモデル：プログラムによる設定と各種の標準規格に準拠した設定および モニタリング

データモデルにより、（シスコのコマンド ライン インターフェイス（CLI）または簡易ネットワーク管理プロトコル（SNMP）を使用する代わりに） シスコ製デバイスを設定し、シスコ製デバイスから運用データ（show コマンド）を収集する、代替の中央集中的な方法の実現が可能になります。データモデルは同じ手順に基づく標準であり、シスコ以外のデバイスからのデータの設定や収集にも使用できるため、複数のベンダーをサポートする顧客に最適です。一元化された管理プラットフォーム（ラップトップなど）を使用して、複数のシスコデバイスの設定やデータ収集を行うことができます。また、データモデルアーキテクチャを使用することで、Pythonスクリプトを使用してこれらの手順を自動化できます（2つの主要な利点があります）。

Yet Another Next Generation（YANG）データモデリング言語（RFC 6020）

YANG は、デバイス設定要求または運用（show コマンド）データの要求を作成するために使用される標準規格ベースのデータモデリング言語です。また、人間が判読可能なコンピュータプログラムと同様の構造化された形式を持っています。これらの構成および運用データ要求を作成するために、中央集中型の管理プラットフォーム（ラップトップなど）で実行できるアプリケーションがいくつかあります。

すべてのベンダーに適用される標準（共通）YANGデータモデル（イーサネットインターフェイスの無効化またはシャットダウンの要求は、シスコのデバイスでもシスコ以外のデバイスでも同じ場合があります）と、ベンダー独自の機能に関連付けられた運用データの設定または収集を容易にするデバイス（ネイティブ、ベンダー固有）データモデルの両方があります。

ネットワーク設定（NETCONF）プロトコル（RFC 6241）

NETCONFは標準ベースのExtensible Markup Language(XML)で符号化されたプロトコルで、中央集中型管理プラットフォーム（ラップトップなど）で稼働するアプリケーションからのYANG形式の設定または運用データ要求を、ユーザが設定または運用データ（showコマンド）を要求するシスコデバイスに通信するためのトランスポートを提供します。設定要求の一部が失敗した場合に、設定要求全体を中断するなどのトランザクションベースのサービスを提供します。NETCONF はシンプルなリモートプロシージャコール（RPF）ベースのメカニズムを使用して、クライアント（中央管理プラットフォームのスクリプトとアプリケーション）とサーバー（シスコ製スイッチまたはルータ）間の通信を促進します。サーバは、ネットワーク デバイス全体のトランスポート層としてセキュア シェル（SSH）を使用します。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

注：これはCatalyst 3850でNETCONF/YANGデータモデリングをサポートするために必要な完全な設定ですが、aaa new-modelがグローバル（デフォルト）に設定されていないことも前提としています。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 Syslog および SNMP イベントモニタリングを許可する追加（オプション）設定

syslogメッセージ用、およびNETCONF通知を生成する設定済みSNMPトラップ用のNETCONF通知(RFC 5277 - Tools 5277)の生成を有効にするには、次のsnmp-server設定が存在している必要があります。

注：これらは最小限必要なものですが、追加のsnmp-server enableエントリが存在する場合もあります。クライアント（中央集中型管理プラットフォーム）は、サーバ(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のデータモデルインターフェイス(DMI)にこの設定が存在し、Catalyst 3850のCiscodによってsyslogメッセージが生成された場合に、RFC 5277で定義されているNETCONF通知を生成する機能を持っている必要があります。

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トラップ通知の生成を無効にするには、このCLIのno netconf-yang cisco-ia snmp-trap-control global-forwardingを使用します。

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を使用して、ネットワークと中央集中型管理プラットフォーム（ラップトップを使用できます）に接続します。IP アドレス 172.16.167.175 をこのインターフェイスに割り当てるために、Dynamic Host Configuration Protocol（DHCP）が使用されています。ラップトップがネットワーク上の 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）をサポートするために必要なソフトウェアプロセスを実行できるようになります。

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）1 台が使用されています。このコマンドは、ラップトップの端末プロンプトから発行されます。この時点では、ラップトップに特別なアプリケーションはロードされていません。

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:ツール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 を実行している Apple MacBook Pro、Google Chrome ブラウザ）で使用して、中央管理プラットフォームとして機能させます。YANG Explorer を使用すると、ユーザーは次の操作を実行できるようになります。

ユーザーインターフェイスまたはコマンドラインからの YANG データモデルのアップロード/コンパイル

• NETCONF RPC（リモートプロシージャコール）の構成

• 実際の NETCONF サーバー（Catalyst 3850）に対する RPC の実行

• 作成した RPC を後で使用できるようにコレクションに保存

• データモデルツリーの参照と YANG プロパティの検査

注:YANG ExploreアプリケーションはLinuxシステムでもサポートされています。

2. YANG Explorer アプリケーションの使用

Yang Explorerアプリケーションを起動します。ラップトップのターミナルプロンプトで、yang-explorerディレクトリから./start.sh andコマンドを実行します。

注：このターミナルセッションを開いたままにしておいてください。そうしないと、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操作機能リストを取得します。

ヒント：これは、中央集中型管理プラットフォーム（ラップトップ）上のYang ExplorerアプリケーションとCatalyst 3850間でNETCONF通信が機能していることも確認するための優れたテストです。

YANG データモデルのロード：さまざまな YANG データモデルを [モデルの管理（Manage Models）] で登録できます。登録したデータモデルは、左側の [エクスプローラ（Explorer）] ボックスに表示されます。これらの YANG モデルを使用すると、YANG の専門知識がなくても、YANG Explorer アプリケーションで YANG 形式の NETCONF リモートプロシージャコール（RPC）メッセージを作成できます（RPC メッセージは、Catalyst 3850 の設定や Catalyst 3850 からのデータ取得のため、Catalyst 3850 に送信されます）。この方法の例は、次のセクション「基本的な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セッションが終了するか、他の理由でサブスクリプションが終了するまで送信し続けることができます。サブスクリプションオプションTools 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>

これを行うには、これをカットアンドペーストして、カスタムRPCとしてYang ExplorerアプリケーションGUIに貼り付ける必要があります。

次に、NETCONF 経由で Catalyst 3850 にカスタム RPC メッセージを送信するために、[実行（Run）] を選択します。Catalyst 3850 は OK メッセージで応答し、操作が成功したことをユーザーに通知します。

注：この例で使用されているYang Explorerの現在のバージョンには、受信したNETCONF通知を確認するオプションがありません。通常、通知はアプリケーションのメインメニューのクリック可能な通知ログに保存されます。

NETCONF/YANG の基本的な動作例

Catalyst 3850と中央集中型管理プラットフォームが設定され、通信が開始されました。次に、いくつかの基本的な動作例を示します。

この例では、中央集中型管理プラットフォーム（ラップトップ）のYang ExplorerアプリケーションからCatalyst 3850にNETCONFを介して送信される、YANG形式のNETCONF RPCメッセージが、Catalyst 3850のconfdソフトウェアプロセスによって標準のCisco IOS CLIに変換されることを示すことができます。また、Cisco IOS CLI データ（show コマンドデータ）は、Catalyst 3850 の confd ソフトウェアプロセスによって YANG 形式のデータに変換されてから、NETCONF RPC メッセージとして中央管理プラットフォーム（ラップトップ）の YANG Explorer アプリケーションに送信されます。つまり、スイッチを設定し、show コマンドデータを収集する際に、NETCONF/YANG を使用して実行する方法に加えて、引き続き Catalyst 3850 で通常の CLI を使用して実行することも可能であるということです。

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（設定用）を選択し、その後にインターフェイスドロップダウンメニューで必要な動作パラメータを選択します。次に、設定タスクを実行するために NETCONF 経由で Catalyst 3850 に送信する必要のある YANG 形式の（人間が判読できる）NETCONF RPC を生成するために [RPC] が選択されます。

YANG 形式の NETCONF RPC メッセージが生成された後、メッセージを Catalyst 3850 に送信するために [実行（Run）] が選択されます。Catalyst 3850 は、設定操作が成功した（OK になった）ことを示す YANG 形式の（人間が判読できる）メッセージで応答します。

変更が行われたことを確認するために、設定をチェックできます。Catalyst 3850が、インターフェイスのGigabitEthernet 1/0/16設定がenabled = falseになったことを応答する場合に、get-config操作(Oper)を使用できます。これは、インターフェイスがシャットダウンされたことを意味します。

ヒント：一般に、Yang ExplorerアプリケーションのExplorerセクションで値に使用できる形式がわからない場合は、次に示すようにYANG形式のCatalyst 3850設定をダンプすることをお勧めします。これは、値を変更する前に、値の内容を確認するのに適した方法です。次の画面の右側には、これらの値の説明と依存関係が[プロパティ]列と[値]列に表示されます。

YANG 形式の NETCONF RPC メッセージが生成された後、メッセージを Catalyst 3850 に送信するために [実行（Run）] が選択されます。 Catalyst 3850 は、インターフェイスGigabitEthernet 1/0/16 の設定が enabled = false になったことを示す YANG 形式のメッセージで応答します。これはインターフェイスがシャットダウンされたことを意味します。

以前のNETCONF/YANG設定の変更前と変更後のCatalyst 3850 CLIでのインターフェイス設定の表示

以前の YANG Explorer 設定変更操作の時点で、この設定 は Catalyst 3850 の CLI から出力されます。Catalyst 3850 のログメッセージに示されているように、インターフェイス GigabitEthernet 1/0/16 は、NETCONF RPC メッセージを受信するまで、デフォルトの no shutdown 状態になっていました。インターフェイスをシャットダウンするための YANG 形式の要求を含む NETCONF RPC メッセージを受信すると、操作が完了し、インターフェイスがシャットダウンされ、実行コンフィギュレーションがこの操作を反映するように変更されます。また、Catalyst 3850 の confd ソフトウェアプロセスが、受信した YANG 形式の NETCONF RPC メッセージを標準の Cisco IOS CLI に変換する方法も示されます。これは、ユーザーが設定を変更してshow コマンドを実行する際に、NETCONF/YANG を使用して実行する方法に加えて、引き続き通常の CLI を使用して実行することも可能であることを意味します。

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 での設定の保存

この YANG 形式の NETCONF RPC メッセージを NETCONF 経由で 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 経由で Catalyst 3850 にカスタム RPC メッセージを送信するには、[実行（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 の設定

前述したように、スイッチ を設定し、show コマンドデータを収集する際に、NETCONF/YANG を使用して実行する方法に加えて、引き続き Catalyst 3850 で通常の CLI を使用して実行することも可能です。スイッチの設定にNETCONF/YANGの代わりにCatalyst 3850 CLIを使用すると、新しいrunning-configがsyncfdソフトウェアプロセスを介してCatalyst 3850上のData Model Interface(DMI)と同期されます。

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#

CLI の変更後、YANG Explorer アプリケーションが次にインターフェイス設定のコピーを要求する際、その変更は YANG 出力に正しく反映されます。

GigabitEthernet1/0/16 の RPC get-config メッセージを NETCONF 経由で Catalyst 3850 に送信するには、[実行（Run）] を選択します。 Catalyst 3850 は、enabled = true を示す GigabitEthernet1/0/16 インターフェイス設定で応答します。

3. GET 要求操作で使用可能な SNMP MIB 操作データの確認

NETCONF GET 操作で返される SNMP MIB データをユーザーが設定することはできません。YANGデータモデルによって定義された構造化データに変換される、サポートされているすべてのSNMP MIBは、Catalyst 3850のCisco XEソフトウェアの一部です。GET要求で使用できるMIBデータを調べるには、次の3つのオプションがあります。サポートされているすべてのMIBで、機能応答にsmiv2を含めることができます。

オプション 1 Capabilitiesボタンは、Yang ExplorerアプリケーションのGUIで選択できます。Catalyst 3850 は、smiv2 MIB エントリを含む機能リストで応答します。

オプション 2 このYANG形式のNETCONF RPCメッセージは、使用可能なsmiv2 MIBモデルを含む機能リストを取得するために、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 経由で Catalyst 3850 にカスタム RPC メッセージを送信するには、[実行（Run）] を選択します。Catalyst 3850 は、サポートされている smiv2 MIB を含む機能リストで応答します。

オプション 3：  使用可能な MIB モデルのリストは、中央管理プラットフォーム（ラップトップ）からの SSH 接続に応答して Catalyst 3850 から返される NETCONF 機能と 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経由で実行できます。

GitHub Yangモデル

すべてのベンダーに適用される標準(共通、Internet Engineering Task Force（IETF；インターネット技術特別調査委員会）)モデルは、standard、ietf、rfcの順に選択することで確認できます。この操作により、IETF 標準化団体が RFC の出版物から取得した標準規格ベースの YANG データモデルが表示されます。

GitHub Yangモデルツリーマスター標準

シスコのネイティブ（デバイス、ベンダー固有）モデルは、vendor、cisco、xe、1632 を選択することで確認できます。この操作により、Catalyst 3850 用の Cisco IOS XE ソフトウェアバージョン 16.3.2 固有の YANG データモデルが表示されます。

GitHub Yang Models Yang Tree Masterベンダー

これらのファイルは、Centralized Management Platform（ノートPC）にダウンロードして、Yang Explorerアプリケーションにロードできます。これを行うには 2 つの方法があります。1 つ目は、さまざまな YANG データモデルファイルを個別にロードする方法です。2 つ目は、すべてのファイルを一括ロードする方法です。

1. さまざまな YANG データモデルファイルの個別ロード

ヒント: Githubからファイルをダウンロードするには、rawgitが必要になる場合があります。Github からファイルをダウンロードするには、YANG ファイルに関連付けられた [未処理（Raw）] ボタンを選択します。ファイルダウンロードオプションの代わりにURLを指定した場合、そのURLをrawgitに貼り付けて、実稼働URLを提供できます。この新しい実稼働URLをブラウザに貼り付けると、ファイルのダウンロードオプションが表示されます。

この例では、cisco-ethernet.yangはgithubから中央集中型管理プラットフォーム（ラップトップ）にすでにダウンロードされています。次に、YANG Explorer アプリケーション GUI にファイルをロードしてから、ツールの [エクスプローラ（Explorer）] セクションにロードされるように [登録（Subscribe）] する手順を示します。

ヒント: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 Explorer アプリケーション GUI に表示されます。対象の機能に関連付けられているファイルは、 [登録（Subscribe）] をクリックすると選択され、選択後、ツールの [エクスプローラ（Explorer）] セクションに追加されます。

ヒント:NETCONF機能を使用すると、Catalystソフトウェアでサポートされているデータモデルを確認できます。「中央管理プラットフォーム（ラップトップ）の設定」のセクション 2 を参照してください。

これで、Catalyst 3850 の設定の保存に必要な NETCONF/YANG RPC の生成など、その他のタスクを完了できるようになりました。この操作は、YANG Explorer アプリケーションの左側の [エクスプローラ（Explorer）] セクションで [save-conf] RPCを選択すると実行されます。次に、RPCが選択されてYANG形式のNETCONF RPCが生成されます。このRPCはNETCONF経由でCatalyst 3850に送信され、Catalyst 3850の設定を保存できます。

NETCONF 経由で Catalyst 3850 にカスタム RPC メッセージを送信するには、[実行（Run）] を選択します。Catalyst 3850 は成功メッセージを返します。

注目すべき YANG データモデル

cisco-ia.yang データモデル

cisco-ia.yang データモデルに関する RPC の例を次に示します。これには、Catalyst 3850の設定の保存、Catalyst 3850のrunning-configのローカルのData Model Interface（DMI；データモデルインターフェイス）データストアへの同期、Catalyst 3850のDMIインターフェイスのリセットなどの操作が含まれるため、注目に値します。

最初のステップでは、cisco-ia.yang データモデルを [登録（Subscribe）] して、YANG Explorer アプリケーション GUI の左側の [エクスプローラ（Explorer）] セクションに表示されるようにします。

YANG ExplorerアプリケーションGUIの左側にあるExplorerセクションでcisco-iaデータモデルを展開すると、さまざまな動作オプションが表示されます。たとえば、使用可能なcisco-ia.yangデータモデルオプションの1つを使用するには、save-config操作を選択し、RPCボタンを選択すると関連するRPCが生成されます。

次に、NETCONF 経由で Catalyst 3850 に RPC メッセージを送信するために [実行（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 without-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組み込み設定アーカイブ機能を使用して、実行コンフィギュレーションを不揮発性ストレージ(NVRAM)に保存します。

<?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 インターフェイスは、デバイスの実行コンフィギュレーションを、checkpoint 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 インターフェイスを再起動できます。reinitialize が true になっている場合、NETCONF インターフェイスは、書き込み可能な実行データストアに存在するすべての状態情報をクリアします。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 IOSソフトウェアバージョンでは、現時点では特定の機能をすべてサポートしているわけではありません。たとえば、以前のリセットをIOS 16.3.3が稼働しているCatalyst 3850に送信する場合、Catalyst 3850によって「Reset not supported」エラーがRPC応答として中央集中管理プラットフォーム（ラップトップ）に返されます。

<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 などの Network Element Driver（NED）データモデルは、シスコ製デバイス（Catalyst 3850）の設定の際に最も効果を発揮します。これを示すいくつかのスクリーンキャプチャを次に示します。

最初の ステップでは、ned.yang データモデルを [登録（Subscribe）] して、YANG Explorer アプリケーション GUI の左側の [エクスプローラ（Explorer）] セクションに表示されるようにします。

YANG Explorer アプリケーションの左側にある [エクスプローラ（Explorer）] セクションで使用可能なオプションをスクロールすると、ned.yang データモデルで設定可能な Catalyst 3850 の機能の長いリストが GUI に表示されます。

例として、これらのスクリーンキャプチャは、YANG ExplorerアプリケーションGUIの左側にあるExplorerセクションで、利用可能なned.yangデータモデル設定オプションのリストを最初にスクロールダウンした後に、Catalyst 3850のOSPFルーティング設定を表示する方法を示しています。ospfサブオプションは routerオプションの中にあります。[RPC] ボタンを選択すると、関連する get-config RPCが生成されます。

次に、NETCONF 経由で Catalyst 3850 に RPC メッセージを送信するために [実行（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>

YANG形式のOSPFルーティング設定は、NETCONFを通じてCatalyst 3850から取得したもので、読み取り可能であり、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 経由で Catalyst 3850 に RPC メッセージを送信するために [実行（Run）] を選択します。Catalyst 3850 は OK メッセージで応答し、操作が成功したことをユーザーに通知します。

ned.yang データモデルを介して OSPF ルーティング設定を変更するための NETCONF/YANG RPC 操作は、Catalyst 3850 の CLI で表示される Catalyst 3850 の設定に反映されます。Catalyst 3850 には、NETCONF を介して設定変更が行われたことを示す Syslog メッセージも表示されます。

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 を使用して Catalyst 3850 のスタートアップ コンフィギュレーションに実行コンフィギュレーションを保存する方法の詳細については、前のセクション「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でプラットフォームタイプotherを使用していますが、Pythonスクリプトの実行時にエラーが発生しました。その結果、「プラットフォームタイプ」が「csr」に変更されました。Cisco CSRルータでは、Catalyst 3850と同様にCisco IOS XEソフトウェアも実行されるためです。これにより、エラーが回避されました。

生成後、中央管理プラットフォーム（ラップトップ）の 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 スクリプトの実行

Pythonスクリプトexample.pyを実行する前のCatalyst 3850のCLIチェックを次に示します。このスクリプトはrunning-configをstartup-configに保存できます。この時点で、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$

次に、中央管理プラットフォーム（ラップトップ）の通常の端末プロンプトから、これら2つのコマンドが実行されます。これらのコマンドは、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$

2 番目のコマンドは、TCP ポート 830（netconf-ssh）経由でユーザー名/パスワード cisco1/cisco1 を使用して、IP アドレス 172.16.167.174 の Catalyst 3850 に対して Python スクリプト example.py を実行します。Catalyst 3850 は、中央管理プラットフォーム（ラップトップ）に RPC 応答を送信し、save-config 操作が成功したことを通知します。

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 を startup-config に保存した Python スクリプト example.py を実行した後の Catalyst 3850 CLI チェック画面を次に示します。save-config NETCONF/YANG 操作が成功したため、shutdown コマンドがインターフェイス 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 メッセージを生成しています。

[実行（Run）] を選択して RPC メッセージを Catalyst 3850 に送信すると、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>

次に、エラーを修正し、Catalyst 3850に送信されるRPCメッセージに正しいインターフェイスタイプianaift:ethernetCsmacdを指定して、Catalyst 3850がエラーではなくokメッセージで応答するようにします。

今回は、[実行（Run）] を選択して RPC メッセージを Catalyst 3850 に送信すると、Catalyst 3850 が OK メッセージで応答し、操作が成功したことを示します。

ヒント：正しいエクスプローラ値の形式が不明な場合は、パラメータを変更する前に、既存の設定を確認できます。この確認は、次に示すとおり get-config 操作（Oper）で実行できます。

[実行（Run）] を選択して RPC メッセージを Catalyst 3850 に送信すると、Catalyst 3850 はインターフェイスタイプが ianaift:ethernetCsmacd であることを示す YANG 形式のインターフェイス設定を返します。

他の RPC エラータイプの例

1. 「in-use」（config-locked）RPC エラー応答メッセージ

これは <edit-config> 要求に対する NETCONF エラー応答です。<error-tag>は「in-use」を示します。この応答は、データストアを実行しているサーバーデバイス（Catalyst 3850）NETCONF が現在ロックされており、この時点で NETCONF <edit-config> 操作を実行できなかったことを示します。これは NETCONF インターフェイス導入のエラーを示すものではありません。NETCONF 実行データストアの使用中に、NETCONF クライアントがこのデータストアへの書き込みを試みると、クライアントはこの RPC 応答を受信します。NETCONFクライアントはNETCONF edit-configメッセージを再試行できます。この応答は、デバイスがsync-from-device内部操作を実行して、データストアを実行する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. 「data-missing」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. 「Missing Data Model」RPCエラー応答メッセージ

Catalyst 3850に存在しないデータモデルに対する要求が行われた場合、またはデータモデルに実装されていないリーフに対する要求が行われた場合、サーバ(Catalyst 3850)は空のデータ応答で応答します。これは正常な動作です。

ヒント:NETCONF機能を使用して、Catalystソフトウェアでサポートされているデータモデルを確認してください。「中央管理プラットフォーム（ラップトップ）の設定」のセクション 2 を参照してください。

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

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

4. 「invalid-value」RPC エラー応答メッセージ

場合によっては、NETCONFメッセージにYANGデータモデルに基づく有効なコンテンツが含まれることがありますが、デバイス(Catalyst 3850)は要求されたものを実装できません。Catalyst 3850 の NETCONF インターフェイスが IOSd に正常に適用できない設定を IOSd に送信すると、特定の RPC エラー応答が NETCONF クライアントに返されます。

この例では、正しくない無効なロギングバッファ値が RPC メッセージで Catalyst 3850 に送信されます。Catalyst 3850 からの応答の error-tag には、invalid-value であることが示されます。このエラーメッセージは、Catalyst 3850 IOS パーサーがロギングバッファの重大度を正しくない値に対して設定できなかったことを示します。この値が有効ではないためです。

<?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>