ネットワーク機器のAPIあれこれ入門
How do you wan to talk with your Network Nodes?
Twitter: @ebiken | ebiken.g@gmail.com
ネットワーク機器のAPIあれこれ入門|NetOpsCoding#2|2016/03/04|@ebiken 1
本日のお題
「ネットワーク機器のAPIを使って何かしたい!」
と思っている人が、何かを始められるように
ネットワーク機器APIの全体像をつかむ
• APIを利用してできる事
• ネットワーク機器のインターフェース
• REST (like) API の違い
• Appendix:参考資料
ネットワーク機器のAPIあれこれ入門|NetOpsCoding#2|2016/03/04|@ebiken 5
要は、自分がこの数か月勉強したことをシェアします。
ネットワーク自動化の全体像
ネットワーク機器のAPIあれこれ入門|NetOpsCoding#2|2016/03/04|@ebiken 6
APIを利用してできる事
設定投入
ディスカバリー
トポロジー描画
通知・アラート
(Notification)
コマンド実行
ネットワーク管理システム(NMS)
アプリケーション
ネットワーク機器
Ping
Traceroute
設定(参照)
RIB/FIB
隣接情報
複数機器
状態(Status)
統計(Stats)
設定投入
複数機器
ネットワーク自動化の全体像
ネットワーク機器のAPIあれこれ入門|NetOpsCoding#2|2016/03/04|@ebiken 7
APIを利用してできる事
ディスカバリー
トポロジー描画
通知・アラート
(Notification)
コマンド実行
ネットワーク管理システム(NMS)
アプリケーション
ネットワーク機器
Ping
Traceroute
設定(参照)
RIB/FIB
隣接情報
状態(status)
統計(Stats)
アプリケーション・プログラムによるアクセスが可能
⇒ これらを組み合わせた様々な自動化が可能
ネットワーク自動化の全体像
ネットワーク機器のAPIあれこれ入門|NetOpsCoding#2|2016/03/04|@ebiken 8
ネットワーク機器のインターフェース
昔ながらの
インターフェース
標準化が進められているAPI 機器毎の独自API
REST? API
(JSON/XML+HTTP)
(RPC over HTTP)
NECONF/YANG
(RESTCONF)
CLI
SNMP
ネットワーク機器のAPIあれこれ入門|NetOpsCoding#2|2016/03/04|@ebiken 9
CLI / SSH
ネットワーク機器のAPI
ネットワーク機器のAPI
ネットワーク機器のAPIあれこれ入門|NetOpsCoding#2|2016/03/04|@ebiken 10
CLI / SSH
• SSHセッション上でCLIコマンド
を会話的に実行
• SSHセッションを意識した
プログラミング(煩雑)
• Exscript, expect等SSHパッケー
ジの利用
• CLI経由でのみ実行可能なコ
マンドが存在
参考: NetOpsCoding Advent Calendar 2015
ソフトウェアからルータにSSH(Exscript)で設定してみる
http://qiita.com/taijijiji/items/351c48a8a77ee56f6e79
ネットワーク機器のAPIあれこれ入門|NetOpsCoding#2|2016/03/04|@ebiken 11
NETCONF / YANG
ネットワーク機器のAPI
ネットワーク機器のAPI:NETCONF/YANG
ネットワーク機器のAPIあれこれ入門|NetOpsCoding#2|2016/03/04|@ebiken 12
ネットワーク機器設定の
「データモデル」「オペレーション」 「データストア」 を提供
• IETFで標準化@NETCONF WG
• RFC 6241 NETCONF
• RFC 6020 YANG
https://datatracker.ietf.org/wg/netconf/documents/
オペレーション
<get-config>
<edit-config>
<delete-config>
<commit>
etc.
データストア
candidate config
running config
startup config
YANG (データモデル)
設定情報含むネットワーク機器のモデル化
NETCONF (プロトコル)
オペレーション データストア
XML-RPC
SSH, TLS (トランスポート)
ネットワーク機器のAPI:NETCONF/YANG
ネットワーク機器のAPIあれこれ入門|NetOpsCoding#2|2016/03/04|@ebiken 13
NetConf / YANG
Network Configuration Management with NETCONF and YANG
http://www.ietf.org/edu/documents/2012-ietf-84-netconf-yang.pdf
YANG
NetConf
<get-config>
<edit-config>
<delete-config>
<commit>
オペレーションの流れ
ネットワーク機器のAPI:NETCONF/YANG
ネットワーク機器のAPIあれこれ入門|NetOpsCoding#2|2016/03/04|@ebiken 14
YANG Model Example
RFC 7223 : YANG Interface Management
https://tools.ietf.org/html/rfc7223
ネットワーク機器のAPI:NETCONF/YANG
ネットワーク機器のAPIあれこれ入門|NetOpsCoding#2|2016/03/04|@ebiken 15
嬉しい点
• 標準化が進められている
• データモデル(YANG)
• プロトコル(NETCONF)
• 多くのベンダーがサポート表明
• オペレーションやエンコーディン
グ(XML)は各機器共通
つらい点
• 「設定」 関連情報・操作のみ
• ベンダーや機器間でのデータモデ
ルの差異
• YANGを使わなくても良い
• 操作(設定)可能なパラメータの差異
• 操作できない設定も
• エンコーディングはXML
• 冗長で読みづらい
⇒ SDK/Libraryの利用が必須
ネットワーク機器のAPIあれこれ入門|NetOpsCoding#2|2016/03/04|@ebiken 16
... その前に ...
REST API
ネットワーク機器のAPI
REST おさらい
ネットワーク機器のAPIあれこれ入門|NetOpsCoding#2|2016/03/04|@ebiken 17
REST おさらい
• URI = リソース
• HTTP Method=操作
• POST => Create
• GET => Read
• PUT => Update
• DELETE => Delete
• BODYエンコーディング(符号化)
• 何でも良い:JSON, XML, CSV etc.
• でも JSON が多い
• ステート(セッション)もたない
操作 リソース
REST おさらい
ネットワーク機器のAPIあれこれ入門|NetOpsCoding#2|2016/03/04|@ebiken 18
REST な URI
•/interface/ge-0-0-1
•/interface/ge-0-0-1/ipv4
•/version
REST ではない URI
•/show-interface/ge-0-0-1
•/set-interface/ge-0-0-1/ipv4
•/show-version
操作は REST URIに含まれない!
REST おさらい
ネットワーク機器のAPIあれこれ入門|NetOpsCoding#2|2016/03/04|@ebiken 19
RESTの特徴
• HTTP(S) トランスポート
• プログラムしやすい!
• コマンド1行でリクエスト作成可能
• curl, wget ..
• 様々な言語のライブラリ
• Ruby, Python, Go, Perl ...
• (当然)標準化されていない
• RESTは規約ではなく思想
• (個人の見解です)
• 実際にはRESTfulだとできない事
も
• Candidate config + commit とか。
• 結果、RESTfulではない&各機器異
なる実装に。
ネットワーク機器のAPIあれこれ入門|NetOpsCoding#2|2016/03/04|@ebiken 20
API対応状況(ネットワーク機器各種)
なぜネットワーク運用自動化が進まないのか
by Biglobe 土屋さん
http://www.slideshare.net/taijitsuchiya5/ss-47398248
http://www.slideshare.net/taijitsuchiya5/whitebox-switch-48099814
REST API !?
ネットワーク機器のAPIあれこれ入門|NetOpsCoding#2|2016/03/04|@ebiken 21
REST (like) な API の分類 (概要)
• URI
• リソース
• リソース+操作
• 常に同じ
• エンコード
• JSON
• XML
• セッション
• 有り:URI/BODYにSessionID
• 無し
• オペレーション
• CLIをBodyに入れて送信
• HTTP METHOD + URI
• URIにコマンド入れる
RESTと記載されてても、(基本)RESTfulではない
• JSON-RPC, XML-RPC, WEB API?
Brocade vRouter 5600 (Vyatta)
• URI: コマンドを表す(リソースではなく)
• Encoding符号化: JSON
• 参照・設定、共にセッションを持つ
• Config Workflow
• Ops: one-time output
• Ops: continuous output
• GET /rest/op/<cmd>
• Ops with no session ID will return parameter definitions.
• Very different from RESTful concept.
ネットワーク機器のAPIあれこれ入門|NetOpsCoding#2|2016/03/04|@ebiken 22
Brocade vRouter 5600 (Vyatta)
Brocade vRouter 5600 (Vyatta)
ネットワーク機器のAPIあれこれ入門|NetOpsCoding#2|2016/03/04|@ebiken 23
設定投入&適用 Workflow
1. Begin a configuration session
• Config Session ID named "conf-id" will be
generated.
2. make configuration changes
• PUT /rest/conf/<conf-id>/set/<path>
• PUT /rest/conf/<conf-id>/delete/<path>
3. commit changes
• POST /rest/conf/<conf-id>/commit
4. optional: view config
• GET /rest/conf/<conf-id>/<path>
5. save config
• POST /rest/conf/<conf-id>/save
6. Finish configuration session
• DELETE /rest/conf/<conf-id>
CLIをURLにマップしたイメージ
Brocade vRouter 5600 (Vyatta)
ネットワーク機器のAPIあれこれ入門|NetOpsCoding#2|2016/03/04|@ebiken 24
参照コマンド (One Time)
• Begin a ops session
• POST /rest/op/show/version
• HTTP/1.1 201 Created
• Location: rest/op/137AA3B22A362CA3
• Get output from the command just
sent
• GET /rest/op/137AA3B22A362CA3
• HTTP/1.1 200 OK
• If request 2nd time, it's gone.
• GET /rest/op/137AA3B22A362CA3
• HTTP/1.1 410 Gone
Brocade vRouter 5600 (Vyatta)
ネットワーク機器のAPIあれこれ入門|NetOpsCoding#2|2016/03/04|@ebiken 25
参照コマンド (継続的)
• Begin a ops session (ex: ping)
• POST /rest/op/ping/10.0.0.1
• Get ouput (1st)
• GET /rest/op/02B3479CA1522F2A
• HTTP/1.1 200 OK
• PING 10.3.0.1 (10.3.0.1) 56(84) bytes of
data.
• 64 bytes from 10.3.0.1: icmp_seq=1
ttl=64 time=0.839 ms
• 64 bytes from 10.3.0.1: icmp_seq=2
ttl=64 time=0.846 ms
• ...
• 64 bytes from 10.3.0.1: icmp_seq=18
ttl=64 time=0.821 ms
• Get output (2nd)
• GET /rest/op/02B3479CA1522F2A
• HTTP/1.1 200 OK
• 64 bytes from 10.3.0.1: icmp_seq=19
ttl=64 time=0.799 ms
• 64 bytes from 10.3.0.1: icmp_seq=20
ttl=64 time=0.807 ms
• ...
• Stop a ops session (and the command
ping)
• DELETE /rest/op/02B3479CA1522F2A
.
Brocade VDX
• URI: リソースを表す
• エンコード(符号化):XML
• コマンド:HTTP Method (GET, POST, PUT, PATCH, DELETE, OPTIONS, and HEAD)
• パラメーター:BODY (XML)
• 設定のための “session-id” や “commit” という概念はない
• POST http://host:80/rest/config/running/interface/TenGigabitEthernet/%221/0/5%22/ip
• <address>
• <address>192.168.10.1/24</address>
• <ospf-ignore>true</ospf-ignore>
• </address>
• 参照(実行)コマンドには “session-id” があり実行結果をレスポンス
• ex: l2traceroute-result,
ネットワーク機器のAPIあれこれ入門|NetOpsCoding#2|2016/03/04|@ebiken 26
Brocade VDX
REST (like) API のタイプ
ネットワーク機器のAPIあれこれ入門|NetOpsCoding#2|2016/03/04|@ebiken 27
JSON RPC 型 (Arista EOS eAPI)
URI=固定(/command-api)
BODYにCLIコマンド列挙(JSON)
ex: http://admin:pAssW0rd@198.51.100.1/command-api
Reference: https://eos.arista.com/arista-eapi-101/
<protocol>://<username>:<password>@<hostname or ip-address>/command-api
• CLIを投入するようにコマンドをシーケンシャルに記述可能
• 参考: Arista eAPI の概略を5分で説明してくれます。
• https://www.youtube.com/watch?v=9sWux0GCZ78
• Command API Explorer
ネットワーク機器のAPIあれこれ入門|NetOpsCoding#2|2016/03/04|@ebiken 28
JSON RPC 型 (Arista EOS eAPI)
JUNOS: XML RPC Single Method
• CLIに紐づいた RPC Method をURIに記述
• インターフェース名などのパラメータもURI中に?で指定
• scheme://device-name:port/rpc/method[@attributes]?params
• scheme: http or https
• method: rpc command
• 各コマンドに対してそれぞれRPC methodが定義されている。
• params: Optional parameter values (name[=value])
• Response Formatを指定可能
• @attributes で指定: @format=json
• HTTP header “Accept:” で指定:application/xml, application/json
ネットワーク機器のAPIあれこれ入門|NetOpsCoding#2|2016/03/04|@ebiken 29
JUNOS: XML RPC Single Method
参考:JunosのREST APIを使ってみる
http://qiita.com/kazubu/items/e5e0941f66f6c6f2f55a
device-name port
JUNOS: XML RPC Single Method
ネットワーク機器のAPIあれこれ入門|NetOpsCoding#2|2016/03/04|@ebiken 30
URI Example
https://198.51.100.1:3000/rpc/get-software-information
... /get-interface-information?terse=&interface-name=ge-0/0/1
method
method parameters
参考:JunosのREST APIを使ってみる
http://qiita.com/kazubu/items/e5e0941f66f6c6f2f55a
JUNOS: XML RPC Single Method
ネットワーク機器のAPIあれこれ入門|NetOpsCoding#2|2016/03/04|@ebiken 31
CLIコマンドに対応する RPC method 確認方法
参考:JunosのREST APIを使ってみる
http://qiita.com/kazubu/items/e5e0941f66f6c6f2f55a
JUNOS: XML RPC Single Method
• 1. 設定投入:POST load-configuration
• 設定内容は BODY に CLI 出力と同様のフォーマットで指定。
• Candidate Config に保存される
• 2. 設定適用:POST commit-configuration
ネットワーク機器のAPIあれこれ入門|NetOpsCoding#2|2016/03/04|@ebiken 32
JUNOS 設定投入・適用
参考:JunosのREST APIを使ってみる
http://qiita.com/kazubu/items/e5e0941f66f6c6f2f55a
REST (like) API のタイプ
• (URIでなく)CLIに紐づくRPC Method をBODYに複数記述
ネットワーク機器のAPIあれこれ入門|NetOpsCoding#2|2016/03/04|@ebiken 33
XML RPC Multi Method型 (JUNOS Multi RPC)
Request Response
ネットワーク機器のAPIあれこれ入門|NetOpsCoding#2|2016/03/04|@ebiken 34
REST (like) API の特徴(機器別)
• Vyatta
• URI = CLI Command
• Encode: JSON
• Session 設定:有|参照:有
• 設定はセッション(conf-id)毎にCandidate config
を編集、Commit
• 参照やOpsコマンド実行は2回以上リクエスト投
げて結果を受け取る
• 継続的なコマンド(Ping)とか実行可能
• Brocade VDX
• URI = Resource
• Encode: XML
• Session: 設定:無|参照:有(継続コマンドのみ)
• HTTP Method で操作を表す
• 設定のためのセッションという概念は無い。
• 継続的なコマンドにはセッションという概念あり。
• Arista
• URI: 固定 /command-api
• Encode: JSON
• Session: 無
• コマンドは Request BODY に JSONで記述
• 複数コマンドを1度に送信できる。
• Juniper
• URI = CLI mapped RPC method (or 固定URI
+ RPC method in BODY)
• Encode: XML, JSON, TXT
• Session: 無
• 設定投入は設定をBODYに記載して /load-
configuration に投入
• 適用は commit-configuration を投入
プログラミングの階層構造&まとめ
ネットワーク機器のAPIあれこれ入門|NetOpsCoding#2|2016/03/04|@ebiken 35
Network Controller
ネットワーク機器のAPIあれこれ入門|NetOpsCoding#2|2016/03/04|@ebiken 36
プログラミングの階層構造
アプリケーション
SDK / library
(機器毎)
Plug-in(機器毎)
Wire Protocol
CLI/SSH, NETCONF, REST (like)
各機器共通API
REST (like)
「実現したいこと」&「機器仕様」
を元に検討
まとめ
ネットワーク機器のAPIあれこれ入門|NetOpsCoding#2|2016/03/04|@ebiken 37
SDK や Library の提供・活用
NECONF/YANG
⇒ 標準化進められているが複雑
REST (like) API
⇒ ベンダー毎に独自なAPI
シンプルなAPIの必要性
直接APIアクセス (SDK や Library だけで
はできないことを実装するために)
⇒ メーカーによる機能追加(要求)
⇒ API Proxy/Agent などの開発・公開
メーカーの視点から
多くの人に使ってもらえる(期待が持てる)機能は実装&改善可能
試して、できなかった事、足りない機能など公開して
「プログラミングしやすい環境」を加速させよう!
Appendix: LINK集
これからネットワークプログラムしたい人が読むと嬉しい資料
ネットワーク機器のAPIあれこれ入門|NetOpsCoding#2|2016/03/04|@ebiken 38
ネットワーク自動化・アプリケーション連携への動き
IDCF 井上さん
• 2015年10月中心 : QIITAでAPI実装・実験色々
• http://qiita.com/inoueissei
Biglobe 土屋さん
• 2015/12/21 ソフトウェアからルータにNETCONF(ncclient)で設定してみる
• http://qiita.com/taijijiji/items/394d6af5a71834c4e48a
• 2015/12/02 ソフトウェアからルータにSSH(Exscript)で設定してみる
• http://qiita.com/taijijiji/items/351c48a8a77ee56f6e79
• 2015/05/xx ?? なぜネットワーク運用自動化が進まないのか
• Why is it difficult to automate network operation
• http://www.slideshare.net/taijitsuchiya5/ss-47398248
• http://www.slideshare.net/taijitsuchiya5/whitebox-switch-48099814
ネットワーク機器のAPIあれこれ入門|NetOpsCoding#2|2016/03/04|@ebiken 39
ネットワーク自動化・アプリケーション連携への動き
Shintaro Kojima @codeout
• NETCONF 入門 知ったかぶりしない NETCONF (2014/10/24)
• http://codeout.hatenablog.com/entry/2014/10/24/230013
• NETCONF 入門 やってみよう NETCONF (2014/10/30)
• http://codeout.hatenablog.com/entry/2014/10/30/224405
Hiroshi Ota @otahi
• 2015/04/23 テスト自動化@第4回 ネットワークプログラマビリティ勉強会
• http://gvtkne.blogspot.jp/2015/04/npstudy4.html
Brocade Yukihiro Kikuchi
• 2014/04/04 Vyatta REST API解説@Vyatta Users Group
• http://www.slideshare.net/YukihiroKikuchi/20140404-vyatta-users-group
ネットワーク機器のAPIあれこれ入門|NetOpsCoding#2|2016/03/04|@ebiken 40
ネットワーク自動化・アプリケーション連携への動き
Twitter: @takech9203
• 2015/02/22 VyattaのREST APIを使ってみる
• http://qiita.com/takech9203/items/2225c8e4ac7dc5bea1e0
Twitter: @kakkotetsu
• 2014/12/14 Arista の REST API を ruby や Ansible で突いてみよう
• http://qiita.com/kakkotetsu/items/944c263c1580a230a9c0
NetOpsCoding Advent Calendar 2015:
• http://qiita.com/advent-calendar/2015/netopscoding
• 2015/12/17 JunosのREST APIを使ってみる
• http://qiita.com/kazubu/items/e5e0941f66f6c6f2f55a
ネットワーク機器のAPIあれこれ入門|NetOpsCoding#2|2016/03/04|@ebiken 41
ベンダーが作成している? ライブラリ
• Juniper
• https://github.com/Juniper/net-netconf
• https://github.com/Juniper/netconf-perl
• https://github.com/Juniper/netconf-java
• https://github.com/Juniper/netconf-php
• https://github.com/leopoul/ncclient
• Cisco
• https://github.com/jtimberman/ruby-cisco
• https://github.com/nickpegg/ciscolib
• Brocade
• [https://github.com/brocade/ncclient
• https://github.com/brocade/brocade (OpenStack Plugin)
• https://github.com/BRCDcomm/BVC (VyattaController )
• https://github.com/zapman449/brocade_switchshow_aliases
(Fiber switches)
• Alaxala
• https://github.com/sumikawa/netconf
• Cumulus
• https://github.com/CumulusNetworks/cumulus-linux-
ansible-modules
• https://github.com/CumulusNetworks/cumulus-linux-chef-
modules
• https://github.com/CumulusNetworks/net-next
• https://github.com/CumulusNetworks/quagga
• https://github.com/CumulusNetworks/cumulus-cl-interfaces-
puppet
• https://github.com/OpenRTMFP/Cumulus (MonaServer使っ
たSW)
• https://github.com/cotdsa/cumulus
• http://cumulusnetworks.com/blog/cumulus-linux-2/
ネットワーク機器のAPIあれこれ入門|NetOpsCoding#2|2016/03/04|@ebiken 42
Slide 40, JANOG36, IDCF井上さん
http://www.janog.gr.jp/meeting/janog36/download_file/view/188/170

ネットワーク機器のAPIあれこれ入門 (NetOpsCoding#2)

Editor's Notes

  • #2 みなさん実践的なのが多いので、これから!という人を中心に、ネットワーク機器のAPIについて俯瞰してみましょう。
  • #3 https://atnd.org/events/74772
  • #4 5分間の発表聞いた後には。。。 ・ネットワーク機器の自動化に登場する各要素が理解できてる ・どんなAPI=インターフェースがあるか、その分類と特徴が分かる。 ・試して、公開しようという気持ちになる。
  • #6 駆け足になるけど、最後に参考資料へのLINKまとめあるから詳しくはそれ読もう!
  • #7 API それぞれでできる事はこんな感じ。 アプリケーションによるアクセスが可能=これらを組み合わせた自動化が可能 (Neighbor)
  • #8 「今は想像できてない使い方が産まれる可能性がある」 ⇒ 自分がAPIを勉強している理由 API それぞれでできる事はこんな感じ。 アプリケーションによるアクセスが可能=これらを組み合わせた自動化が可能 (Neighbor)
  • #9 Transport や Object どこまで標準化されているかも説明
  • #11 セッション意識 ⇒ Config Modeなど1コマンドでは実行できない操作があるため、 taiji tsuchiya
  • #13  例えば、インターフェイスの設定はNETCONFでできるけど、リンクアグリゲーションの設定はNETCONFだとできない。インターフェイスのUp/DownはSNMPで取得できるけど、LACP BlockedのステートはSNMPで取得できない。こういった状況にある場合は結局のところtelnet/sshしなくてはいけなくなります。
  • #14 MTU変更するだけでこの煩雑さ。 <config> に挟まれた部分が YANG を利用もしくはベンダー独自も可能。
  • #16  例えば、インターフェイスの設定はNETCONFでできるけど、リンクアグリゲーションの設定はNETCONFだとできない。インターフェイスのUp/DownはSNMPで取得できるけど、LACP BlockedのステートはSNMPで取得できない。こういった状況にある場合は結局のところtelnet/sshしなくてはいけなくなります。
  • #20 それを踏まえて「対応状況」を見てみましょう
  • #21 これみて 「REST使えば簡単!?」 とか思って調べてみた。
  • #28 Good Video: https://www.youtube.com/watch?v=9sWux0GCZ78 URI: 固定 Encoding: JSON コマンド:BODY (JSON) パラメータ:BODY (JSON)
  • #30 JunosのREST APIを使ってみる http://qiita.com/kazubu/items/e5e0941f66f6c6f2f55a terse = 簡略なアウトプットを指定。他にbrief, detail, extensive等がある。
  • #31 scheme://device-name:port/rpc/method[@attributes]?params
  • #37 規模によってはNetwork Controller利用を検討(機器共通のAPIを提供可能な場合も) 実際に簡単に開発できるようになるにはSDK重要 でも、SDKに無いことしたい(未成熟)、SDKが無い、などの場合アプリから直接
  • #38 自分もまだ数か月ですので、一緒に学んで試していきましょう。 標準化は進んでいる。 ちょっと進みは遅いけど十分? 汎用的なので複雑になりがち。 Gatewayで吸収できるので、勝手に作っちゃうのがベター? 開発環境は? Swaggerとか便利そう NetConf/YANG, RESTConf, RESTの操作感の違い コードの書き方、生データの見え方、設定・モニター何に向いてる?
  • #43 16:03:02] Kentaro Fujinuma: Brocade の API を見ると [16:03:17] Kentaro Fujinuma: NetConf/YANG と REST/JSON を完全にパラレルに作っています [16:03:29] Kentaro Fujinuma: これは内部的には同じ処理をしているからだと思います。
  • #47  例えば、インターフェイスの設定はNETCONFでできるけど、リンクアグリゲーションの設定はNETCONFだとできない。インターフェイスのUp/DownはSNMPで取得できるけど、LACP BlockedのステートはSNMPで取得できない。こういった状況にある場合は結局のところtelnet/sshしなくてはいけなくなります。