LOOMOpenFlow Controller
shun159@shunichigokewtrema/pio パケットマン
こんにちは, 今からOpenFlowのユルい話しをします
LOOM OpenFlow Controller?
LOOM OpenFlow Controller?
•InfobloxとErlang Solutionsのエンジニアが主に開発
•Erlang/OTPが備える機能が持つ高いスケール性や耐障害性を備えたコントロールプレーンを目指す
•とはいえまだまだ開発中である
もう結構出揃っている感はある
他にもJSやhaskell, OCaml果てはLuaやJuliaなど多岐に渡る
もう他の言語の実装なんていらないお…もう他の言語の実装なんていらないお…
でも待ってこういう話もあるよ!
Erlangで実装された AXD301は2002年1月の導入以来, 99.9999999%の可用性のためにメンテナンススキルを習得できないというリスクを持つという話しがある.
ErlangはネットワークサーバのDSLである,と例えを聞く程用途が偏っている(気がする)
これをSDN/OpenFlowで実現したい…
でもちょっとまってErlangって?
ちょっとまってErlangって?
SDNアプリのドキュメントとか読んでると, 分散とか平行とか障害の局所化とか, そんなキーワードがたまにきこえてきませんか.
そして, OpenFlowを触ってて生のパケットと触れ合ったこと, ありますよね.
ちょっとまってErlangって?①
• 以下の機能を言語レベルで提供しています
– Hot code reloading
– Supervisors
– Processes
– Asynchronous message passing
– Clustering
ちょっとまってErlangって?②
• バイナリパターンマッチが素敵
• L2 headerを上のようにパターンマッチ!
ちょっとまってErlangって?②
• 並行プログラミングがとてもやりやすい
• またそれに特化した例外等もわりと充実
ちょっとまってErlangって?③
• 分散プログラミングがやりやすい, これら以外にも分散プログラミングを支援するためのモジュールや関数がたくさんある.
Erlang/OTPが持つこれらの能力や機能を利用したOpenFlowプログラミングって…
LOOM OpenFlow Controller
LOOM OpenFlow Controller
•私が好んでここで話すのは•Binary Pattern Match•Supervisons•Concurrent Programming
をやれるということの他にも面白い機能が備わっています
LOOM OpenFlow Controller
ofs_handler:sync_send/2
LOOM OpenFlow Controller
デモ
LOOM OpenFlow Controller
ofs_handler:sync_send/2
LOOM OpenFlow Controller
改めて, 試しに テキトーなアプリを書いてみました.
LOOM OpenFlow Controller
仮想L2ネットワーク
LOOM OpenFlow Controller
デモ
LOOM OpenFlow Controller
LOOM OpenFlow Controller
たとえからあまりErlangの特徴見えないかも…
ポートを管理するコードを書く時間がなかったのでどうしようかと悩んだ末,
sync_send/2でブロードキャストする前にスイッチ聞いたらイイね,ということでその分ごっそり怠けた楽できた結果,実質200行でかける.
LOOM OpenFlow Controller
LOOM作成ステップ1. callback moduleを設定ファイルに
指定する2. callback関数をもれなく書く3. 各callbackにロジックを記述する4. コンパイルして起動
LOOM OpenFlow Controller
また,mainコネクション接続とは別に,Aux接続のためのcallback関数connect/8があり, openflow messageを受ける関数 handle_message/2は TCPセッション毎にメッセージを受けるので, うまく使えればaux接続を有効利用したプログラミングができるはず.
LOOM OpenFlow Controller
Flow modメッセージを作って送る
LOOM OpenFlow Controller
注意!
•init/7からスイッチに対してメッセージを送ろうとすると, アプリがくたばります.
LOOM OpenFlow Controller
Erlang/OTPは独特で難しい,けど文法的には覚えることは少ない(はず).やりたいことを最短できるというのであれば,触れてみる価値はあるはず.