Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Loom openflow controller in 10 min

2,978 views

Published on

Published in: Lifestyle
  • Be the first to comment

Loom openflow controller in 10 min

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

×