はじめに
NSO はSouthbound接続として、以下のタイプのNEDを使用することが出来ます。
- CLI NED
- Generic NED
- NETCONF NED
- SNMP NED
NETCONF NED は、NETCONF対応機器と NETCONF プロトコルを使用してConfigの取得編集を行うためのNEDで、基本的にはユーザ自身で作成する必要があります。
本ドキュメントでは、NETCONF NED の作成方法について説明致します。
NETCONF NED 作成に必要となるデータ
NETCONF NED は、機器が使用する Yang で表現されたデータモデルを元に作成します。従って、機器ベンダーが提供する Yang ファイルを取得する必要があります。
機器ベンダーはいろいろな方法でYangファイルを提供しています。
- 機器ベンダーのWebsite からダウンロード
- 機器購入時に購入者へのみオフラインでの提供
また、NETCONF 機器である以上、<get-schema> オペレーションをサポートしているはずですので、それを使用して Yang を機器からダウンロードすることも可能です。しかしながら、<get-schema>の実装をしていない機器も存在するため、ダウンロード出来ない場合には機器ベンダーへ問い合わせをしてください。
例: ASR9000 用のモデルのダウンロード
ここでは、Cisco ASR9000 上のIOS-XR 機器を例として紹介します。
https://www.cisco.com/c/en/us/td/docs/routers/asr9000/software/data-models/guide/b-data-models-config-guide-asr9000/b-data-odels-config-guide-asr9000_chapter_010.html
CCOでは、機器からの取得を推奨しています。これは、特定の機器の特定のバージョンに特化したモデルが存在し、"IOS-XR 用のモデル"には当該機器で使用するモデルと差分が有る場合があるからです。
モデルを機器からダウンロードする方法については、別記事をご確認下さい。
ここでは、CCOの上記記事に案内がありますように、Github 上に公開されたYangを使用します。
https://github.com/YangModels/yang/tree/master/vendor/cisco/xr/532
当該レポジトリを clone し、yang ファイルを取得し、一つのディレクトリに保存してください。
ここでは、yang ディレクトリに保存しました。
作成手順
NEDもパッケージの一つです。通常のサービスパッケージ作成と同様、ncs-make-packages コマンドを使用することが可能です。
$ ncs-make-package --netconf-ned yang/ iosxrned
$
上記コマンドでは、yang ディレクトリにダウンロードした yang ファイル群を使用して、iosxrned ディレクトリに NSO 用の NED としてパッケージを作成しています。
パッケージとして必要な package-meta-data.xml が生成されています。また、この yang を使用する netsimが作成されており、netsim インスタンスを作成することが可能です。
$ ls -la iosxrned/
total 4
drwxr-xr-x 5 user user 170 Jan 27 17:44 .
drwxr-xr-x 4 user user 136 Jan 27 17:44 ..
drwxr-xr-x 5 user user 170 Jan 27 17:44 netsim
-rw-r--r-- 1 user user 386 Jan 27 17:44 package-meta-data.xml
drwxr-xr-x 5 user user 170 Jan 27 17:44 src
$
src ディレクトリに、yang ファイルがコピーされていますので、この中で make します。
警告が表示される場合もありますが、それは無視して問題ありません。
$ cd src
$ make
mkdir -p ncsc-out
mkdir -p ../load-dir
mkdir -p ../shared-jar
mkdir -p ../private-jar
/tailf/releases/nso-4.5.2/bin/ncsc --ncs-compile-bundle yang \
--ncs-device-dir ncsc-out \
--ncs-device-type netconf \
&& \
cp ncsc-out/modules/fxs/*.fxs ../load-dir;
...
$
これで、NETCONF NED が出来上がりました。通常のNEDと同様、iosxrned ディレクトリをNSOのランタイムディレクトリ中のpackagesへ配置し、読み込んで使用することが出来ます。
admin@ncs# show packages package package-version
PACKAGE
NAME VERSION
-------------------
iosxrned 1.0
admin@ncs#
デバイスを登録します。
admin@ncs# show running-config devices device iosxr
devices device iosxr
address 192.168.10.1
authgroup cisco
device-type netconf
state admin-state unlocked
!
admin@ncs#
Sync-from など、他のNEDと同様に使用可能になりました。
admin@ncs# devices device iosxr sync-from
result true
admin@ncs#
サポートについて
自作した NETCONF NED は、Cisco TAC でのサポートを受けて頂く事は出来ません。
NETCONF NED が動作しない原因としては、NSO 側にある可能性と、機器ベンダが提供するモデル、またはリモート機器に原因がある可能性があります。
raw trace を取得の上、Service Requestをオープン頂ければNSO側の問題であるかといった判断はさせて頂きますが、ケースオープンの前に、切り分け頂ますようお願い致します。