SlideShare a Scribd company logo
ネットワーク API のあれこれ
Network Node API
How do you wan to talk with your Network Node?
Twitter: @ebiken | ebiken.g@gmail.com
ネットワーク API のあれこれ|ENOG37@燕三条 2016/02/19|@ebiken 1
ネットワーク API のあれこれ|ENOG37@燕三条 2016/02/19|@ebiken 2
ネットワーク自動化・アプリケーション連携への動き
JANOG36 : 2015年7月15~17日
• API/Web化によるネットワーク自動化
• by 井上さん@株式会社IDCフロンティア
• http://www.janog.gr.jp/meeting/janog36/program/api
• NETCONF/YANG
• by 土屋 師子生@シスコシステムズ合同会社
• http://www.janog.gr.jp/meeting/janog36/program/netconf
JANOG37 : 2016年1月20~22日
• クラウド事業者側の仮想環境ネットワークの自動化について
• by 村上さん@GMOインターネット株式会社
• http://www.janog.gr.jp/meeting/janog37/program/vauto
ネットワークプログラマビリティ勉強会
• 2014年10月24日~ 16ヶ月で8回
• http://network-
programmability.connpass.com/
NetOpsCoding
• 2015年10月30日~ 4ヶ月で2回
• #1 https://atnd.org/events/70253
• #2 https://atnd.org/events/74772
ネットワーク自動化・アプリケーション連携への動き
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 のあれこれ|ENOG37@燕三条 2016/02/19|@ebiken 3
ネットワーク自動化・アプリケーション連携への動き
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 のあれこれ|ENOG37@燕三条 2016/02/19|@ebiken 4
ネットワーク自動化・アプリケーション連携への動き
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 のあれこれ|ENOG37@燕三条 2016/02/19|@ebiken 5
機器側の課題
• 機器毎に違うから?
• NETCONF/YANG難しい?
• REST/WebAPI の手軽さが欲しい?
ネットワーク API のあれこれ|ENOG37@燕三条 2016/02/19|@ebiken 6
発表・BLOG・資料などがまだ沢山存在!?
でも、いまひとつ加速してない気がする?(注:個人の見解です)
人側(開発・運用)の課題
• ネットワーク&プログラミング両方
分かってる人少ない?
• 日常忙しすぎて時間無い?
⇒ 機器側の現状について調べてみた
(人側については是非ご意見をお聞かせください)
ネットワーク API のあれこれ|ENOG37@燕三条 2016/02/19|@ebiken 7
ネットワーク機器へのインターフェース(API)
アクセスの目的
• 変更:設定
• 参照:設定&状態&統計&ログ
• Configuration
• Status
• Statistics (counter)
• Log (syslog?)
• コマンド実行
• Ping, Traceroute, packet capture,
アクセス手段
• CLI / SSH
• SNMP
• NETCONF / RESTCONF
• REST (like) APIs
• JSON/XML + HTTP (RPC)
本日はこれ
⇒ JANOG36 : NETCONF/YANG by 土屋 師子生さん@Cisco
http://www.janog.gr.jp/meeting/janog36/program/netconf
ネットワーク API のあれこれ|ENOG37@燕三条 2016/02/19|@ebiken 8
API対応状況(ネットワーク機器各種)
なぜネットワーク運用自動化が進まないのか
Why is it difficult to automate network operation
by Biglobe 土屋さん
http://www.slideshare.net/taijitsuchiya5/ss-47398248
http://www.slideshare.net/taijitsuchiya5/whitebox-switch-48099814
REST API ??
REST おさらい
ネットワーク API のあれこれ|ENOG37@燕三条 2016/02/19|@ebiken 9
REST おさらい
• URI = リソース
• HTTP Method=操作
• POST => Create
• GET => Read
• PUT => Update
• DELETE => Delete
• BODYエンコーディング(符号化)
• 何でも良い:JSON, XML, CSV etc.
• でも JSON が多い
• ステート(セッション)もたない
操作 リソース
REST おさらい
ネットワーク API のあれこれ|ENOG37@燕三条 2016/02/19|@ebiken 10
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 のあれこれ|ENOG37@燕三条 2016/02/19|@ebiken 11
• HTTP(S) トランスポート
• プログラムしやすい!
• コマンド1行でリクエスト作成可能
• curl, wget ..
• 様々な言語のライブラリ
• Ruby, Python, Go, Perl ...
• (当然)標準化されていない
• RESTは規約ではなく思想
• (個人の見解です)
• そもそもRESTfulだとできない事
もある
• Candidate config + commit とか。
RESTといいながらRESTfulではない実装が多数
• JSON-RPC, XML-RPC
• セッション持ったりしている
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 のあれこれ|ENOG37@燕三条 2016/02/19|@ebiken 12
Brocade vRouter 5600 (Vyatta)
Brocade vRouter 5600 (Vyatta)
ネットワーク API のあれこれ|ENOG37@燕三条 2016/02/19|@ebiken 13
設定投入&適用 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>/<cmd>
4. optional: view config
• GET /rest/conf/<conf-id>/<path>
5. save config
• POST /rest/conf/<conf-id>/<cmd>
6. Finish configuration session
• DELETE /rest/conf/<conf-id>
Brocade vRouter 5600 (Vyatta)
ネットワーク API のあれこれ|ENOG37@燕三条 2016/02/19|@ebiken 14
参照コマンド (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 のあれこれ|ENOG37@燕三条 2016/02/19|@ebiken 15
参照コマンド (継続的)
• 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 のあれこれ|ENOG37@燕三条 2016/02/19|@ebiken 16
Brocade VDX
REST (like) API のタイプ
ネットワーク API のあれこれ|ENOG37@燕三条 2016/02/19|@ebiken 17
JSON RPC 型 (Arista EOS eAPI)
URI: 固定
Encoding符号化: JSON
コマンド:BODY (JSON)
パラメータ:BODY (JSON)
Reference: https://eos.arista.com/arista-eapi-101/
<protocol>://<username>:<password>@<hostname or ip-address>/command-api
ex: http://admin:pAssW0rd@198.51.100.1/command-api
• CLIを投入するようにコマンドをシーケンシャルに記述可能
• 参考: Arista eAPI の概略を5分で説明してくれます。
• https://www.youtube.com/watch?v=9sWux0GCZ78
• Command API Explorer
ネットワーク API のあれこれ|ENOG37@燕三条 2016/02/19|@ebiken 18
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 のあれこれ|ENOG37@燕三条 2016/02/19|@ebiken 19
JUNOS: XML RPC Single Method
参考:JunosのREST APIを使ってみる
http://qiita.com/kazubu/items/e5e0941f66f6c6f2f55a
device-name port
JUNOS: XML RPC Single Method
ネットワーク API のあれこれ|ENOG37@燕三条 2016/02/19|@ebiken 20
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 のあれこれ|ENOG37@燕三条 2016/02/19|@ebiken 21
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 のあれこれ|ENOG37@燕三条 2016/02/19|@ebiken 22
JUNOS 設定投入・適用
参考:JunosのREST APIを使ってみる
http://qiita.com/kazubu/items/e5e0941f66f6c6f2f55a
REST (like) API のタイプ
• CLIに紐づいたRPC Method をBODYに複数記述
ネットワーク API のあれこれ|ENOG37@燕三条 2016/02/19|@ebiken 23
XML RPC Multi Method型 (JUNOS Multi RPC)
Request
Response
ネットワーク API のあれこれ|ENOG37@燕三条 2016/02/19|@ebiken 24
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 を投入
Appendix
オープンソースな実装ってあるの?
ネットワーク API のあれこれ|ENOG37@燕三条 2016/02/19|@ebiken 25
• OpenSwitch by HP
• REST実装あり。但し現状は OVSDB に対する操作のみ。
• ops-restd : Overview
• ------------
• OpenSwitch provides a Tornado framework-based application to access
**OVSDB** using RESTful APIs. The ops-restd module provides all the necessary
python packages required to add, delete, modify tables in the OVSDB database
using ```HTTP``` methods, ```GET, POST, PUT and DELETE```.
• Linux Shellアクセスできる機器増えてるので、Switchに載るGateway作ると
か?
• OpenFlowでもなんでも、RESTでアクセスできるように。
ネットワーク API のあれこれ|ENOG37@燕三条 2016/02/19|@ebiken 26
Appendix
プログラムするのに知っておきたい事
ネットワーク API のあれこれ|ENOG37@燕三条 2016/02/19|@ebiken 27
ベンダーが作成している? ライブラリ
• 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 のあれこれ|ENOG37@燕三条 2016/02/19|@ebiken 28
Slide 40, JANOG36, IDCF井上さん
http://www.janog.gr.jp/meeting/janog36/download_file/view/188/170
まとめ
ネットワーク API のあれこれ|ENOG37@燕三条 2016/02/19|@ebiken 29
• API色々サポートされてるよ
• まだベンダー事に独自だよ
• RESTはひどく違うよ。てか、RESTじゃないし。
• 開発のためのライブラリは出てきてるけど、まだまだ足りない?
• Open Sourceも出てきたよ。でも、まだまだ発展途上。
• 違いを吸収する何かが必要
• OpenDaylight等、NMS / ミドル?
• Linux Shellアクセス可能な機器増えてるので、機器に載るGateway作れば良いのでは?
• ネットワークプログラミング始めるには十分な環境なのでは?
ネットワーク API のあれこれ|ENOG37@燕三条 2016/02/19|@ebiken 30
まとめ
ディスカッション
(皆さんに聞いてみたいコト)
ネットワーク API のあれこれ|ENOG37@燕三条 2016/02/19|@ebiken 31
ネットワーク API のあれこれ|ENOG37@燕三条 2016/02/19|@ebiken 32
ちょっとアンケート(あなたの気持ちは?)
1. システム開発は外注するよ
• Do you really want to Program, Write Code?
• NMSはSIerが作ってくれるから。
• お金と時間ある人はこちらで。
2. ミドルウェア経由で作るよ
• どうせ機器間の違いを吸収するミドルウェア必
要なんじゃない?(ODLとか)
• ミドル作る人が頑張ればAPIの種類はどうでも
良い?あれば良い。
• ほんとにODLとか使いたい?やりたい事のわり
に複雑じゃない?
3. ライブラリ使ってやります。
• 開発はしたいけど、機器毎にライブラリ用意して
もらったらAPIは気にしなくてOK?
• Python, Ruby, Go?
• ライブラリは誰が作るんだっけ?
4. API直接使いたい!
• システム小さいし。
• APIが必要:既存監視システム、NMSなどに統合
したいから。
API使って自動化・プログラミング進めたいと言う人。どのスタンス?

More Related Content

PDF
"OPEN NETWORKING" に向けた Management / Data Plane の動向
Kentaro Ebisawa
 
PDF
ネットワークOS野郎 ~ インフラ野郎Night 20160414
Kentaro Ebisawa
 
PDF
ONIC2017 プログラマブル・データプレーン時代に向けた ネットワーク・オペレーションスタック
Kentaro Ebisawa
 
PDF
How to run P4 BMv2
Kentaro Ebisawa
 
PPTX
ネットワーク機器のAPIあれこれ入門 (NetOpsCoding#2)
Kentaro Ebisawa
 
PPTX
plotnetcfg入門 | Introduction to plotnetcfg
Kentaro Ebisawa
 
PPTX
Introduction to Ostinato , network packet crafting and generator.
Kentaro Ebisawa
 
PDF
Ansible npstudy-shtsuchi
Shishio Tsuchiya
 
"OPEN NETWORKING" に向けた Management / Data Plane の動向
Kentaro Ebisawa
 
ネットワークOS野郎 ~ インフラ野郎Night 20160414
Kentaro Ebisawa
 
ONIC2017 プログラマブル・データプレーン時代に向けた ネットワーク・オペレーションスタック
Kentaro Ebisawa
 
How to run P4 BMv2
Kentaro Ebisawa
 
ネットワーク機器のAPIあれこれ入門 (NetOpsCoding#2)
Kentaro Ebisawa
 
plotnetcfg入門 | Introduction to plotnetcfg
Kentaro Ebisawa
 
Introduction to Ostinato , network packet crafting and generator.
Kentaro Ebisawa
 
Ansible npstudy-shtsuchi
Shishio Tsuchiya
 

What's hot (20)

PPTX
Software forwarding path
Tomofumi Hayashi
 
PPTX
OpenShift from Easy way to Hard ? Way
ロフト くん
 
PDF
Service Chaining Current and Future
Kentaro Ebisawa
 
PDF
OpenContrailのソースコードを探検しよう!
Takashi Sogabe
 
PDF
OpenStack + OpenContrailで実現するマルチテナントIaaSのご紹介
Takashi Sogabe
 
PDF
Lagopus & NFV with Vhost (Tremaday#9)
Tomoya Hibi
 
PPTX
Opnfv handson apex intro
Tomofumi Hayashi
 
PDF
スマホのセンサーでネットワークを操る ~Ansible TowerによるレガシーNW機器のAPI化~
akira6592
 
PDF
GitHubのリポジトリ(32個)を 覗いてみよう。 ただし、READMEだけね
Naoto TAKAHASHI
 
PDF
Mk network programmability-03
Miya Kohno
 
PPTX
loggregator update
Ken Ojiri
 
PPTX
Container Networking Deep Dive
Hirofumi Ichihara
 
PPTX
nftables: the Next Generation Firewall in Linux
Tomofumi Hayashi
 
PPTX
VPP事始め
npsg
 
PDF
minneで学ぶクラウド脳
Uchio Kondo
 
PDF
Lagopus Router v19.07.1
Tomoya Hibi
 
PDF
ProjectAtomic-and-geard
Naoto TAKAHASHI
 
PPTX
Pulsar Handson 20180226
Nozomi Kurihara
 
PDF
Cloud Foundryのコンポーネントloggregatorについて
Takeshi Morikawa
 
PDF
NPStudy LT Lagopus Router v19.07
Tomoya Hibi
 
Software forwarding path
Tomofumi Hayashi
 
OpenShift from Easy way to Hard ? Way
ロフト くん
 
Service Chaining Current and Future
Kentaro Ebisawa
 
OpenContrailのソースコードを探検しよう!
Takashi Sogabe
 
OpenStack + OpenContrailで実現するマルチテナントIaaSのご紹介
Takashi Sogabe
 
Lagopus & NFV with Vhost (Tremaday#9)
Tomoya Hibi
 
Opnfv handson apex intro
Tomofumi Hayashi
 
スマホのセンサーでネットワークを操る ~Ansible TowerによるレガシーNW機器のAPI化~
akira6592
 
GitHubのリポジトリ(32個)を 覗いてみよう。 ただし、READMEだけね
Naoto TAKAHASHI
 
Mk network programmability-03
Miya Kohno
 
loggregator update
Ken Ojiri
 
Container Networking Deep Dive
Hirofumi Ichihara
 
nftables: the Next Generation Firewall in Linux
Tomofumi Hayashi
 
VPP事始め
npsg
 
minneで学ぶクラウド脳
Uchio Kondo
 
Lagopus Router v19.07.1
Tomoya Hibi
 
ProjectAtomic-and-geard
Naoto TAKAHASHI
 
Pulsar Handson 20180226
Nozomi Kurihara
 
Cloud Foundryのコンポーネントloggregatorについて
Takeshi Morikawa
 
NPStudy LT Lagopus Router v19.07
Tomoya Hibi
 
Ad

Viewers also liked (20)

PDF
ルータコンフィグのGit管理のススメ 〜Git管理以外を自動化してみた〜
Taiji Tsuchiya
 
PDF
20140404 vyatta users Group / REST API解説
Yukihiro Kikuchi
 
PDF
ネットワーク運用自動化の実際〜現場で使われているツールを調査してみた〜
Taiji Tsuchiya
 
PDF
Open Network OS Overview as of 2015/10/16
Kentaro Ebisawa
 
PPTX
Quick Start Guide using Virtuozzo 7 (β) on AWS EC2
Kentaro Ebisawa
 
PPTX
.Netconf
Tatsuya Ishikawa
 
PDF
≪先進企業に学べ!≫大塚商会 × BROCADE 『たよれーる』のデータセンター基盤に、なぜイーサネット・ファブリックを採用したのか?~SDNへの進化のス...
Brocade
 
PDF
Building Cloud Virtual Topologies with Ravello and Ansible
Damien Garros
 
PPTX
OVN 設定サンプル | OVN config example 2015/12/27
Kentaro Ebisawa
 
PDF
Gephi Tutorial Visualization (Japanese)
あしたのオープンソース研究所  
 
PDF
20120309 cloud mix-public クラウドごった煮
Kentaro Ebisawa
 
PPTX
Infrastructure as Code for Network
Damien Garros
 
PDF
Microsoftにおけるネットワーク自動化とそれを支えるソフトウェア群について
netopscoding
 
PDF
そろそろSSH/Telnetを離れて自動化したい
netopscoding
 
PDF
Infrastructure as code
Axel Quack
 
PDF
MC-LAG Configuration with BGP-base VPLS
Johnson Liu
 
PPTX
Instrumentation and Telemetry ガイダンス
貴仁 大和屋
 
PPTX
第1回 ネットワーク図について語る会 2015-08-27
Yasuo Igano
 
PDF
インフラ屋の友:Tera Term
netopscoding
 
PDF
20111015 勉強会 (PCIe / SR-IOV)
Kentaro Ebisawa
 
ルータコンフィグのGit管理のススメ 〜Git管理以外を自動化してみた〜
Taiji Tsuchiya
 
20140404 vyatta users Group / REST API解説
Yukihiro Kikuchi
 
ネットワーク運用自動化の実際〜現場で使われているツールを調査してみた〜
Taiji Tsuchiya
 
Open Network OS Overview as of 2015/10/16
Kentaro Ebisawa
 
Quick Start Guide using Virtuozzo 7 (β) on AWS EC2
Kentaro Ebisawa
 
≪先進企業に学べ!≫大塚商会 × BROCADE 『たよれーる』のデータセンター基盤に、なぜイーサネット・ファブリックを採用したのか?~SDNへの進化のス...
Brocade
 
Building Cloud Virtual Topologies with Ravello and Ansible
Damien Garros
 
OVN 設定サンプル | OVN config example 2015/12/27
Kentaro Ebisawa
 
Gephi Tutorial Visualization (Japanese)
あしたのオープンソース研究所  
 
20120309 cloud mix-public クラウドごった煮
Kentaro Ebisawa
 
Infrastructure as Code for Network
Damien Garros
 
Microsoftにおけるネットワーク自動化とそれを支えるソフトウェア群について
netopscoding
 
そろそろSSH/Telnetを離れて自動化したい
netopscoding
 
Infrastructure as code
Axel Quack
 
MC-LAG Configuration with BGP-base VPLS
Johnson Liu
 
Instrumentation and Telemetry ガイダンス
貴仁 大和屋
 
第1回 ネットワーク図について語る会 2015-08-27
Yasuo Igano
 
インフラ屋の友:Tera Term
netopscoding
 
20111015 勉強会 (PCIe / SR-IOV)
Kentaro Ebisawa
 
Ad

Similar to ネットワークAPI のあれこれ (ENOG37) (20)

PPTX
REST API、gRPC、GraphQL 触ってみた【2023年12月開催勉強会資料】
洵貴 佐川
 
PDF
Wakame-vnet / Open Source Project for Virtual Network & SDN
axsh co., LTD.
 
PPT
丸山先生レクチャーシリーズ2007-2008
Yoichiro Tanaka
 
PDF
Rest ful api設計入門
Monstar Lab Inc.
 
PPT
Ryuの遊び方(pica8も併せてもっと楽しく)(2014/1/23修正版)
hiroshi oshiba
 
PDF
Rails と Rack と HTTP と通信の話
Progate, Inc.
 
PPT
REST 入門
Yohei Yamamoto
 
PDF
SDN Lab環境でのRobotFramework実践活用
Toshiki Tsuboi
 
PPTX
エンジニアのための勉強会 #3 『RESTful API』
Naoki Yoshitake
 
PDF
20200708サーバーレスでのAPI管理の考え方
Amazon Web Services Japan
 
PDF
【Interop tokyo 2014】 Internet of Everything / SDN と シスコ技術者認定
シスコシステムズ合同会社
 
PDF
[G-Tech2014講演資料] シスコのSDN最新動向とITインフラエンジニアに求められるスキル - シスコシステムズ合同会社
Trainocate Japan, Ltd.
 
PDF
【Interop Tokyo 2015】 DC 1: Cisco VXLAN ファブリックの展望
シスコシステムズ合同会社
 
PDF
Go言語で作る webアプリ@gocon 2013 spring
Takuya Ueda
 
PPT
OSC2008 Tokyo/Spring REST勉強夜会
Siena. N
 
PDF
巨大ポータルを支えるプライベート・クラウド構築事例から学べ!~攻める情シスのためのインフラ構築、その極意とは?~
Brocade
 
PPTX
Vco rest api_overview_rev02
Virtual Cloud Networkers @JPN
 
PDF
OpenStack API
Akira Yoshiyama
 
PDF
20120423 hbase勉強会
Toshiaki Toyama
 
PDF
RESTfulとは
星影 月夜
 
REST API、gRPC、GraphQL 触ってみた【2023年12月開催勉強会資料】
洵貴 佐川
 
Wakame-vnet / Open Source Project for Virtual Network & SDN
axsh co., LTD.
 
丸山先生レクチャーシリーズ2007-2008
Yoichiro Tanaka
 
Rest ful api設計入門
Monstar Lab Inc.
 
Ryuの遊び方(pica8も併せてもっと楽しく)(2014/1/23修正版)
hiroshi oshiba
 
Rails と Rack と HTTP と通信の話
Progate, Inc.
 
REST 入門
Yohei Yamamoto
 
SDN Lab環境でのRobotFramework実践活用
Toshiki Tsuboi
 
エンジニアのための勉強会 #3 『RESTful API』
Naoki Yoshitake
 
20200708サーバーレスでのAPI管理の考え方
Amazon Web Services Japan
 
【Interop tokyo 2014】 Internet of Everything / SDN と シスコ技術者認定
シスコシステムズ合同会社
 
[G-Tech2014講演資料] シスコのSDN最新動向とITインフラエンジニアに求められるスキル - シスコシステムズ合同会社
Trainocate Japan, Ltd.
 
【Interop Tokyo 2015】 DC 1: Cisco VXLAN ファブリックの展望
シスコシステムズ合同会社
 
Go言語で作る webアプリ@gocon 2013 spring
Takuya Ueda
 
OSC2008 Tokyo/Spring REST勉強夜会
Siena. N
 
巨大ポータルを支えるプライベート・クラウド構築事例から学べ!~攻める情シスのためのインフラ構築、その極意とは?~
Brocade
 
Vco rest api_overview_rev02
Virtual Cloud Networkers @JPN
 
OpenStack API
Akira Yoshiyama
 
20120423 hbase勉強会
Toshiaki Toyama
 
RESTfulとは
星影 月夜
 

More from Kentaro Ebisawa (20)

PDF
P4 Updates (2020) (Japanese)
Kentaro Ebisawa
 
PDF
Barefoot Faster™ 日本語紹介
Kentaro Ebisawa
 
PDF
IETF106 Hackathon 報告 & P4 based Switch の課題と未来
Kentaro Ebisawa
 
PDF
MPLS Japan 2019 : Data & Control Plane を繋ぐ API
Kentaro Ebisawa
 
PDF
Yang Tools Quick Memo
Kentaro Ebisawa
 
PDF
In Network Computing Prototype Using P4 at KSC/KREONET 2019
Kentaro Ebisawa
 
PDF
Comparison of SRv6 Extensions uSID, SRv6+, C-SRH
Kentaro Ebisawa
 
PDF
Interop2019 Toyota Netcope P4
Kentaro Ebisawa
 
PDF
IETF 104 Hackathon VPP Prototyping Stateless SRv6/GTP-U Translation
Kentaro Ebisawa
 
PDF
p4srv6 (P4-16) design document rev1.0
Kentaro Ebisawa
 
PDF
SRv6 Mobile User Plane : Initial POC and Implementation
Kentaro Ebisawa
 
PDF
JANOG43 Forefront of SRv6, Open Source Implementations
Kentaro Ebisawa
 
PDF
Using GTP on Linux with libgtpnl
Kentaro Ebisawa
 
PDF
GTPing, How To
Kentaro Ebisawa
 
PDF
"SRv6の現状と展望" ENOG53@上越
Kentaro Ebisawa
 
PDF
SRv6 Mobile User Plane P4 proto-type
Kentaro Ebisawa
 
PDF
Zebra SRv6 CLI on Linux Dataplane (ENOG#49)
Kentaro Ebisawa
 
PDF
Zebra 2.0 in Hybrid Cloud Era
Kentaro Ebisawa
 
PDF
p4alu: Arithmetic Logic Unit in P4
Kentaro Ebisawa
 
PDF
zebra & openconfigd Introduction
Kentaro Ebisawa
 
P4 Updates (2020) (Japanese)
Kentaro Ebisawa
 
Barefoot Faster™ 日本語紹介
Kentaro Ebisawa
 
IETF106 Hackathon 報告 & P4 based Switch の課題と未来
Kentaro Ebisawa
 
MPLS Japan 2019 : Data & Control Plane を繋ぐ API
Kentaro Ebisawa
 
Yang Tools Quick Memo
Kentaro Ebisawa
 
In Network Computing Prototype Using P4 at KSC/KREONET 2019
Kentaro Ebisawa
 
Comparison of SRv6 Extensions uSID, SRv6+, C-SRH
Kentaro Ebisawa
 
Interop2019 Toyota Netcope P4
Kentaro Ebisawa
 
IETF 104 Hackathon VPP Prototyping Stateless SRv6/GTP-U Translation
Kentaro Ebisawa
 
p4srv6 (P4-16) design document rev1.0
Kentaro Ebisawa
 
SRv6 Mobile User Plane : Initial POC and Implementation
Kentaro Ebisawa
 
JANOG43 Forefront of SRv6, Open Source Implementations
Kentaro Ebisawa
 
Using GTP on Linux with libgtpnl
Kentaro Ebisawa
 
GTPing, How To
Kentaro Ebisawa
 
"SRv6の現状と展望" ENOG53@上越
Kentaro Ebisawa
 
SRv6 Mobile User Plane P4 proto-type
Kentaro Ebisawa
 
Zebra SRv6 CLI on Linux Dataplane (ENOG#49)
Kentaro Ebisawa
 
Zebra 2.0 in Hybrid Cloud Era
Kentaro Ebisawa
 
p4alu: Arithmetic Logic Unit in P4
Kentaro Ebisawa
 
zebra & openconfigd Introduction
Kentaro Ebisawa
 

Recently uploaded (11)

PDF
MahiroYoshida_セリフに着目したキャラクタロール推定に関する基礎検討_sigcc12th2025
Matsushita Laboratory
 
PPTX
2025_7_25_吉祥寺_設計ナイト_ADR運用におけるデータ利活用の考え方.pptx
ssuserfcafd1
 
PDF
TaketoFujikawa_ComicComputing12th_inKumamoto
Matsushita Laboratory
 
PDF
第三世代 ウェザーステーションキット v3 ー WSC3-L 日本語カタログ
CRI Japan, Inc.
 
PDF
LoRaWAN ウェザーステーションキット v3 -WSC3-L 日本語ユーザーマニュアル
CRI Japan, Inc.
 
PDF
VMUG Japan book vsan 20250515 CPU/Memory vSAN
Kazuhiro Sota
 
PDF
20250730_QiitaBash_LT登壇資料_PDC_Kurashina.pdf
pdckurashina
 
PDF
【学会聴講報告】CVPR2025からみるVision最先端トレンド / CVPR2025 report
Sony - Neural Network Libraries
 
PPTX
baserCMS『カスタムコンテンツ』徹底活用術〜あなただけの管理画面を自由自在に〜
Ryuji Egashira
 
PDF
20250726_Devinで変えるエンプラシステム開発の未来
Masaki Yamakawa
 
PDF
20250729_Devin-for-Enterprise
Masaki Yamakawa
 
MahiroYoshida_セリフに着目したキャラクタロール推定に関する基礎検討_sigcc12th2025
Matsushita Laboratory
 
2025_7_25_吉祥寺_設計ナイト_ADR運用におけるデータ利活用の考え方.pptx
ssuserfcafd1
 
TaketoFujikawa_ComicComputing12th_inKumamoto
Matsushita Laboratory
 
第三世代 ウェザーステーションキット v3 ー WSC3-L 日本語カタログ
CRI Japan, Inc.
 
LoRaWAN ウェザーステーションキット v3 -WSC3-L 日本語ユーザーマニュアル
CRI Japan, Inc.
 
VMUG Japan book vsan 20250515 CPU/Memory vSAN
Kazuhiro Sota
 
20250730_QiitaBash_LT登壇資料_PDC_Kurashina.pdf
pdckurashina
 
【学会聴講報告】CVPR2025からみるVision最先端トレンド / CVPR2025 report
Sony - Neural Network Libraries
 
baserCMS『カスタムコンテンツ』徹底活用術〜あなただけの管理画面を自由自在に〜
Ryuji Egashira
 
20250726_Devinで変えるエンプラシステム開発の未来
Masaki Yamakawa
 
20250729_Devin-for-Enterprise
Masaki Yamakawa
 

ネットワークAPI のあれこれ (ENOG37)

  • 1. ネットワーク API のあれこれ Network Node API How do you wan to talk with your Network Node? Twitter: @ebiken | ebiken.g@gmail.com ネットワーク API のあれこれ|ENOG37@燕三条 2016/02/19|@ebiken 1
  • 2. ネットワーク API のあれこれ|ENOG37@燕三条 2016/02/19|@ebiken 2 ネットワーク自動化・アプリケーション連携への動き JANOG36 : 2015年7月15~17日 • API/Web化によるネットワーク自動化 • by 井上さん@株式会社IDCフロンティア • http://www.janog.gr.jp/meeting/janog36/program/api • NETCONF/YANG • by 土屋 師子生@シスコシステムズ合同会社 • http://www.janog.gr.jp/meeting/janog36/program/netconf JANOG37 : 2016年1月20~22日 • クラウド事業者側の仮想環境ネットワークの自動化について • by 村上さん@GMOインターネット株式会社 • http://www.janog.gr.jp/meeting/janog37/program/vauto ネットワークプログラマビリティ勉強会 • 2014年10月24日~ 16ヶ月で8回 • http://network- programmability.connpass.com/ NetOpsCoding • 2015年10月30日~ 4ヶ月で2回 • #1 https://atnd.org/events/70253 • #2 https://atnd.org/events/74772
  • 3. ネットワーク自動化・アプリケーション連携への動き 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 のあれこれ|ENOG37@燕三条 2016/02/19|@ebiken 3
  • 4. ネットワーク自動化・アプリケーション連携への動き 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 のあれこれ|ENOG37@燕三条 2016/02/19|@ebiken 4
  • 5. ネットワーク自動化・アプリケーション連携への動き 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 のあれこれ|ENOG37@燕三条 2016/02/19|@ebiken 5
  • 6. 機器側の課題 • 機器毎に違うから? • NETCONF/YANG難しい? • REST/WebAPI の手軽さが欲しい? ネットワーク API のあれこれ|ENOG37@燕三条 2016/02/19|@ebiken 6 発表・BLOG・資料などがまだ沢山存在!? でも、いまひとつ加速してない気がする?(注:個人の見解です) 人側(開発・運用)の課題 • ネットワーク&プログラミング両方 分かってる人少ない? • 日常忙しすぎて時間無い? ⇒ 機器側の現状について調べてみた (人側については是非ご意見をお聞かせください)
  • 7. ネットワーク API のあれこれ|ENOG37@燕三条 2016/02/19|@ebiken 7 ネットワーク機器へのインターフェース(API) アクセスの目的 • 変更:設定 • 参照:設定&状態&統計&ログ • Configuration • Status • Statistics (counter) • Log (syslog?) • コマンド実行 • Ping, Traceroute, packet capture, アクセス手段 • CLI / SSH • SNMP • NETCONF / RESTCONF • REST (like) APIs • JSON/XML + HTTP (RPC) 本日はこれ ⇒ JANOG36 : NETCONF/YANG by 土屋 師子生さん@Cisco http://www.janog.gr.jp/meeting/janog36/program/netconf
  • 8. ネットワーク API のあれこれ|ENOG37@燕三条 2016/02/19|@ebiken 8 API対応状況(ネットワーク機器各種) なぜネットワーク運用自動化が進まないのか Why is it difficult to automate network operation by Biglobe 土屋さん http://www.slideshare.net/taijitsuchiya5/ss-47398248 http://www.slideshare.net/taijitsuchiya5/whitebox-switch-48099814 REST API ??
  • 9. REST おさらい ネットワーク API のあれこれ|ENOG37@燕三条 2016/02/19|@ebiken 9 REST おさらい • URI = リソース • HTTP Method=操作 • POST => Create • GET => Read • PUT => Update • DELETE => Delete • BODYエンコーディング(符号化) • 何でも良い:JSON, XML, CSV etc. • でも JSON が多い • ステート(セッション)もたない 操作 リソース
  • 10. REST おさらい ネットワーク API のあれこれ|ENOG37@燕三条 2016/02/19|@ebiken 10 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に含まれない!
  • 11. REST おさらい ネットワーク API のあれこれ|ENOG37@燕三条 2016/02/19|@ebiken 11 • HTTP(S) トランスポート • プログラムしやすい! • コマンド1行でリクエスト作成可能 • curl, wget .. • 様々な言語のライブラリ • Ruby, Python, Go, Perl ... • (当然)標準化されていない • RESTは規約ではなく思想 • (個人の見解です) • そもそもRESTfulだとできない事 もある • Candidate config + commit とか。 RESTといいながらRESTfulではない実装が多数 • JSON-RPC, XML-RPC • セッション持ったりしている
  • 12. 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 のあれこれ|ENOG37@燕三条 2016/02/19|@ebiken 12 Brocade vRouter 5600 (Vyatta)
  • 13. Brocade vRouter 5600 (Vyatta) ネットワーク API のあれこれ|ENOG37@燕三条 2016/02/19|@ebiken 13 設定投入&適用 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>/<cmd> 4. optional: view config • GET /rest/conf/<conf-id>/<path> 5. save config • POST /rest/conf/<conf-id>/<cmd> 6. Finish configuration session • DELETE /rest/conf/<conf-id>
  • 14. Brocade vRouter 5600 (Vyatta) ネットワーク API のあれこれ|ENOG37@燕三条 2016/02/19|@ebiken 14 参照コマンド (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
  • 15. Brocade vRouter 5600 (Vyatta) ネットワーク API のあれこれ|ENOG37@燕三条 2016/02/19|@ebiken 15 参照コマンド (継続的) • 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 .
  • 16. 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 のあれこれ|ENOG37@燕三条 2016/02/19|@ebiken 16 Brocade VDX
  • 17. REST (like) API のタイプ ネットワーク API のあれこれ|ENOG37@燕三条 2016/02/19|@ebiken 17 JSON RPC 型 (Arista EOS eAPI) URI: 固定 Encoding符号化: JSON コマンド:BODY (JSON) パラメータ:BODY (JSON) Reference: https://eos.arista.com/arista-eapi-101/ <protocol>://<username>:<password>@<hostname or ip-address>/command-api ex: http://admin:pAssW0rd@198.51.100.1/command-api
  • 18. • CLIを投入するようにコマンドをシーケンシャルに記述可能 • 参考: Arista eAPI の概略を5分で説明してくれます。 • https://www.youtube.com/watch?v=9sWux0GCZ78 • Command API Explorer ネットワーク API のあれこれ|ENOG37@燕三条 2016/02/19|@ebiken 18 JSON RPC 型 (Arista EOS eAPI)
  • 19. 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 のあれこれ|ENOG37@燕三条 2016/02/19|@ebiken 19 JUNOS: XML RPC Single Method 参考:JunosのREST APIを使ってみる http://qiita.com/kazubu/items/e5e0941f66f6c6f2f55a
  • 20. device-name port JUNOS: XML RPC Single Method ネットワーク API のあれこれ|ENOG37@燕三条 2016/02/19|@ebiken 20 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
  • 21. JUNOS: XML RPC Single Method ネットワーク API のあれこれ|ENOG37@燕三条 2016/02/19|@ebiken 21 CLIコマンドに対応する RPC method 確認方法 参考:JunosのREST APIを使ってみる http://qiita.com/kazubu/items/e5e0941f66f6c6f2f55a
  • 22. JUNOS: XML RPC Single Method • 1. 設定投入:POST load-configuration • 設定内容は BODY に CLI 出力と同様のフォーマットで指定。 • Candidate Config に保存される • 2. 設定適用:POST commit-configuration ネットワーク API のあれこれ|ENOG37@燕三条 2016/02/19|@ebiken 22 JUNOS 設定投入・適用 参考:JunosのREST APIを使ってみる http://qiita.com/kazubu/items/e5e0941f66f6c6f2f55a
  • 23. REST (like) API のタイプ • CLIに紐づいたRPC Method をBODYに複数記述 ネットワーク API のあれこれ|ENOG37@燕三条 2016/02/19|@ebiken 23 XML RPC Multi Method型 (JUNOS Multi RPC) Request Response
  • 24. ネットワーク API のあれこれ|ENOG37@燕三条 2016/02/19|@ebiken 24 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 を投入
  • 26. • OpenSwitch by HP • REST実装あり。但し現状は OVSDB に対する操作のみ。 • ops-restd : Overview • ------------ • OpenSwitch provides a Tornado framework-based application to access **OVSDB** using RESTful APIs. The ops-restd module provides all the necessary python packages required to add, delete, modify tables in the OVSDB database using ```HTTP``` methods, ```GET, POST, PUT and DELETE```. • Linux Shellアクセスできる機器増えてるので、Switchに載るGateway作ると か? • OpenFlowでもなんでも、RESTでアクセスできるように。 ネットワーク API のあれこれ|ENOG37@燕三条 2016/02/19|@ebiken 26
  • 28. ベンダーが作成している? ライブラリ • 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 のあれこれ|ENOG37@燕三条 2016/02/19|@ebiken 28 Slide 40, JANOG36, IDCF井上さん http://www.janog.gr.jp/meeting/janog36/download_file/view/188/170
  • 30. • API色々サポートされてるよ • まだベンダー事に独自だよ • RESTはひどく違うよ。てか、RESTじゃないし。 • 開発のためのライブラリは出てきてるけど、まだまだ足りない? • Open Sourceも出てきたよ。でも、まだまだ発展途上。 • 違いを吸収する何かが必要 • OpenDaylight等、NMS / ミドル? • Linux Shellアクセス可能な機器増えてるので、機器に載るGateway作れば良いのでは? • ネットワークプログラミング始めるには十分な環境なのでは? ネットワーク API のあれこれ|ENOG37@燕三条 2016/02/19|@ebiken 30 まとめ
  • 32. ネットワーク API のあれこれ|ENOG37@燕三条 2016/02/19|@ebiken 32 ちょっとアンケート(あなたの気持ちは?) 1. システム開発は外注するよ • Do you really want to Program, Write Code? • NMSはSIerが作ってくれるから。 • お金と時間ある人はこちらで。 2. ミドルウェア経由で作るよ • どうせ機器間の違いを吸収するミドルウェア必 要なんじゃない?(ODLとか) • ミドル作る人が頑張ればAPIの種類はどうでも 良い?あれば良い。 • ほんとにODLとか使いたい?やりたい事のわり に複雑じゃない? 3. ライブラリ使ってやります。 • 開発はしたいけど、機器毎にライブラリ用意して もらったらAPIは気にしなくてOK? • Python, Ruby, Go? • ライブラリは誰が作るんだっけ? 4. API直接使いたい! • システム小さいし。 • APIが必要:既存監視システム、NMSなどに統合 したいから。 API使って自動化・プログラミング進めたいと言う人。どのスタンス?