この製品のドキュメントセットは、偏向のない言語を使用するように配慮されています。このドキュメントセットでの偏向のない言語とは、年齢、障害、性別、人種的アイデンティティ、民族的アイデンティティ、性的指向、社会経済的地位、およびインターセクショナリティに基づく差別を意味しない言語として定義されています。製品ソフトウェアのユーザインターフェイスにハードコードされている言語、RFP のドキュメントに基づいて使用されている言語、または参照されているサードパーティ製品で使用されている言語によりドキュメントに例外が存在する場合があります。シスコのインクルーシブ ランゲージの取り組みの詳細は、こちらをご覧ください。
シスコは世界中のユーザにそれぞれの言語でサポート コンテンツを提供するために、機械と人による翻訳を組み合わせて、本ドキュメントを翻訳しています。ただし、最高度の機械翻訳であっても、専門家による翻訳のような正確性は確保されません。シスコは、これら翻訳の正確性について法的責任を負いません。原典である英語版(リンクからアクセス可能)もあわせて参照することを推奨します。
このドキュメントでは、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つの主要な利点があります)。
YANG は、デバイス設定要求または運用(show コマンド)データの要求を作成するために使用される標準規格ベースのデータモデリング言語です。また、人間が判読可能なコンピュータプログラムと同様の構造化された形式を持っています。これらの構成および運用データ要求を作成するために、中央集中型の管理プラットフォーム(ラップトップなど)で実行できるアプリケーションがいくつかあります。
すべてのベンダーに適用される標準(共通)YANGデータモデル(イーサネットインターフェイスの無効化またはシャットダウンの要求は、シスコのデバイスでもシスコ以外のデバイスでも同じ場合があります)と、ベンダー独自の機能に関連付けられた運用データの設定または収集を容易にするデバイス(ネイティブ、ベンダー固有)データモデルの両方があります。
NETCONFは標準ベースのExtensible Markup Language(XML)で符号化されたプロトコルで、中央集中型管理プラットフォーム(ラップトップなど)で稼働するアプリケーションからのYANG形式の設定または運用データ要求を、ユーザが設定または運用データ(showコマンド)を要求するシスコデバイスに通信するためのトランスポートを提供します。設定要求の一部が失敗した場合に、設定要求全体を中断するなどのトランザクションベースのサービスを提供します。NETCONF はシンプルなリモートプロシージャコール(RPF)ベースのメカニズムを使用して、クライアント(中央管理プラットフォームのスクリプトとアプリケーション)とサーバー(シスコ製スイッチまたはルータ)間の通信を促進します。サーバは、ネットワーク デバイス全体のトランスポート層としてセキュア シェル(SSH)を使用します。NETCONF の動作には、get、get-config、edit-config、rpc などがあります。
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
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
この例では、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
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
この例では、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システムでもサポートされています。
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の動作」で説明します
例:
クライアント(中央管理プラットフォーム)は、この 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通知を確認するオプションがありません。通常、通知はアプリケーションのメインメニューのクリック可能な通知ログに保存されます。
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 を使用して実行することも可能であるということです。
目的の操作は、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形式(人間が読み取り可能)のリストで応答します。
目的の操作は、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 形式のメッセージで応答します。これはインターフェイスがシャットダウンされたことを意味します。
以前の 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
!
この 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 は成功メッセージを返します。
スタートアップ コンフィギュレーションと実行コンフィギュレーションが一致しています。
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
!
前述したように、スイッチ を設定し、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 インターフェイス設定で応答します。
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&revision=2007-04-27</capability>
<capability>urn:ietf:params:xml:ns:yang:smiv2:CISCO-CONTEXT-MAPPING-MIB?module=CISCO-CONTEXT-MAPPING-MIB&revision=2008-11-22</capability>
<capability>urn:ietf:params:xml:ns:yang:smiv2:CISCO-DATA-COLLECTION-MIB?module=CISCO-DATA-COLLECTION-MIB&revision=2002-10-30</capability>
--snip--
</capabilities>
<session-id>2870</session-id></ hello >]]>]]>
Use < ^C > to exit
このリンクには、追加のYANGデータモデルファイルが含まれています。これらのファイルを使用すると、IPv4ユニキャストルーティングやQoSの設定など、Catalyst 3850の他の機能に関連する追加の操作をNETCONF/YANG経由で実行できます。
すべてのベンダーに適用される標準(共通、Internet Engineering Task Force(IETF;インターネット技術特別調査委員会))モデルは、standard、ietf、rfcの順に選択することで確認できます。この操作により、IETF 標準化団体が RFC の出版物から取得した標準規格ベースの 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 つ目は、すべてのファイルを一括ロードする方法です。
ヒント: Githubからファイルをダウンロードするには、rawgitが必要になる場合があります。Github からファイルをダウンロードするには、YANG ファイルに関連付けられた [未処理(Raw)] ボタンを選択します。ファイルダウンロードオプションの代わりにURLを指定した場合、そのURLをrawgitに貼り付けて、実稼働URLを提供できます。この新しい実稼働URLをブラウザに貼り付けると、ファイルのダウンロードオプションが表示されます。
この例では、cisco-ethernet.yangはgithubから中央集中型管理プラットフォーム(ラップトップ)にすでにダウンロードされています。次に、YANG Explorer アプリケーション GUI にファイルをロードしてから、ツールの [エクスプローラ(Explorer)] セクションにロードされるように [登録(Subscribe)] する手順を示します。
ヒント:NETCONF機能を使用すると、Catalyst 3850ソフトウェアでサポートされているデータモデルを確認できます。「中央管理プラットフォーム(ラップトップ)の設定」のセクション 2 を参照してください。
この手順は、セクション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 は成功メッセージを返します。
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 などの 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 操作を参照してください。
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スクリプト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 クライアント(中央管理プラットフォーム(ラップトップ))とサーバーデバイス(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 データモデルを確認する必要があります。
この例では、不適切なインターフェイスタイプ 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 形式のインターフェイス設定を返します。
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>
改定 | 発行日 | コメント |
---|---|---|
3.0 |
21-Dec-2023 |
ブランディング要件、スペル、およびフォーマットを更新。 |
2.0 |
01-Dec-2022 |
PIIを削除。
代替テキストが追加されました。
Revert RPC情報を修正。
タイトル、概要、機械翻訳、用語、スタイル要件、およびフォーマットを更新。 |
1.0 |
17-Sep-2021 |
初版 |