Loom openflow controller in 10 min
Transcript of Loom openflow controller in 10 min
LOOM OpenFlow Controller?
•InfobloxとErlang Solutionsのエンジニアが主に開発
•Erlang/OTPが備える機能が持つ高いスケール性や耐障害性を備えたコントロールプレーンを目指す
•とはいえまだまだ開発中である
でも待ってこういう話もあるよ!
Erlangで実装された AXD301は2002年1月の導入以来, 99.9999999%の可用性のためにメンテナンススキルを習得できないというリスクを持つという話しがある.
ErlangはネットワークサーバのDSLである,と例えを聞く程用途が偏っている(気がする)
ちょっとまってErlangって?
SDNアプリのドキュメントとか読んでると, 分散とか平行とか障害の局所化とか, そんなキーワードがたまにきこえてきませんか.
そして, OpenFlowを触ってて生のパケットと触れ合ったこと, ありますよね.
ちょっとまってErlangって?①
• 以下の機能を言語レベルで提供しています
– Hot code reloading
– Supervisors
– Processes
– Asynchronous message passing
– Clustering
LOOM OpenFlow Controller
•私が好んでここで話すのは•Binary Pattern Match•Supervisons•Concurrent Programming
をやれるということの他にも面白い機能が備わっています
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接続を有効利用したプログラミングができるはず.