Successfully reported this slideshow.
Your SlideShare is downloading. ×

できる!trema-switch

Ad

できる!trema-switch
Hiroaki KAWAI
<kawai@stratosphere.co.jp>

Ad

Introducing myself
●
Apache好き。Webをやっていた。OSS好き。
●
関西在住
●
現所属:株式会社ストラトスフィア
●
ACCESSとIIJで設立
●
SDNの会社
●
技術開発部
●
Ruby …は書けません

Ad

Interop Tokyo 2013 SDN ShowCase
●
OmniSphere 1.0 展示
Buffalo G301N
Trema-switch / OpenWRT に書換

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Upcoming SlideShare
Tremaとtrema edgeの違い
Tremaとtrema edgeの違い
Loading in …3
×

Check these out next

1 of 28 Ad
1 of 28 Ad

できる!trema-switch

Download to read offline

trema-switchの最近の動向についてまとめました。まず概要、次に開発者向け情報、最後に今後の相談について記載しています。

trema-switchの最近の動向についてまとめました。まず概要、次に開発者向け情報、最後に今後の相談について記載しています。

Advertisement
Advertisement

More Related Content

Advertisement
Advertisement

できる!trema-switch

  1. 1. できる!trema-switch Hiroaki KAWAI <kawai@stratosphere.co.jp>
  2. 2. Introducing myself ● Apache好き。Webをやっていた。OSS好き。 ● 関西在住 ● 現所属:株式会社ストラトスフィア ● ACCESSとIIJで設立 ● SDNの会社 ● 技術開発部 ● Ruby …は書けません
  3. 3. Interop Tokyo 2013 SDN ShowCase ● OmniSphere 1.0 展示 Buffalo G301N Trema-switch / OpenWRT に書換
  4. 4. Trema-switch
  5. 5. Trema-switch ● Part of “trema-edge” ● Github にリポジトリ ● https://github.com/trema/trema-edge ● Tremaとの差分は大きい。別物。 ● Openflow 1.3 software switch ● tremaテスト用スイッチ ● なぜかCで書かれている ● netdevがportになる ● Openflowベンダは1.3で一度歩調を合わせることに なっているので、好都合
  6. 6. 他の実装 C Open vSwitch CpqD ofsoftswitch13 Indigo (IVS) Erlang LINC Lagopus C C C kernel module or netdev netdev netdev netdev dpdk Pantou系 OpenWRT対応
  7. 7. Trema-switch ● buildは簡単 $ rake trema_switch $ gcc src/lib/*.c src/switch/*/*.c …実は 超簡単! ということで、こうなる
  8. 8. OpenWRT feed ● Trema-switch feed ● https://github.com/iHiroakiKawai/trema-openwrt ● OpenWRT の feeds.conf に行を足すだけ …ただし 一部自前パッチが必要。uClibcに足をひっぱられ …て
  9. 9. Trema-switch ● 起動も簡単! $ sudo TREMA_HOME=/var/tmp/sw1 ./trema-switch -i 1 -e veth0a,veth1a,veth2a -c 192.168.1.201 -p 6653 -l debug -t syslog,stdout OpenWRTだと 「ディスクに書くのが辛い」 …システムもあり Datapath_id: 1 veth0a veth1a veth2a tcp:192.168.1.201:6653
  10. 10. Trema-switchはできる子 ● 仕様準拠 ● テストスイッチかくあるべし。 Ryu certification 8: CPU足りない 8: テストケースの不備
  11. 11. …ちなみに Open vSwitch CpqD ofsoftswitch13 Indigo (IVS) LINC Lagopus 673 /318 657 /330 386 /605 535 /444 952 /27 OK /NG …ハードウェアスイッチは概してもっと悪いです PoC は trema-switch で → 涙をのんで実装落とし込み http://osrg.github.io/ryu/certification.html
  12. 12. 安価なOpenflowスイッチ機器 ● OpenWRTの敷居が高いと感じたら、こんな選択肢 も ● Raspberry Pi ● Intel NUC USB NIC
  13. 13. Inside trema-switch
  14. 14. trema_switch開発 ● 現在までのコミット数 2013-01 2013-02 2013-03 2013-04 2013-05 2013-06 2013-07 2013-08 2013-09 2013-10 2013-11 2013-12 2014-01 2014-02 2014-03 2014-04 2014-05 2014-06 0 10 20 30 40 50 60 Date Commits このあたりから参加
  15. 15. Flags ● 内部にいくつかフラグがある ● WITH_PCAP ● USE_PCAP_IMMEDIATE_MODE ● GROUP_SELECT_BY_HASH ● こんな感じで使う $ gcc -DWITH_PCAP src/lib/*.{c,h} src/switch/*/*.{c,h} -lpcap ...
  16. 16. WITH_PCAP ● Cコンパイル時に定義するとlibpcap対応化 ● 抽象レイヤで最適な方法を選択してくれる ● mmap TPACKET_V3 ● Linux 3 VLAN offloading ● Double taggingはKernel 3.14以降 + libpcap patch(#346) ● あるいはKernel 2 系 ● ポータビリティ
  17. 17. USE_PCAP_IMMEDIATE_MODE ● 比較的新しいlibpcapで使える ● pcap_set_immediate_mode() を呼び出す ● TPACKET_V2/V3 の特性の違いへの対応 ● TPACKET_V3はスループット重視 ● 即時応答性重視ならTPACKET_V2に切り替える
  18. 18. GROUP_SELECT_BY_HASH ● Group output で Bucket SELECT だったとき ● 完全ランダムではなくEthernet フレーム情報に基づ いて振り分ける ● 連続順に転送が期待されているパケット列のため ● Out-of-orderが発生しないように 個人的にはデフォルトで有効でいいと 思う
  19. 19. 私の場合 ● こんな感じでビルドしています $ gcc -Wall -std=gnu99 -D_GNU_SOURCE  -DGROUP_SELECT_BY_HASH -DWITH_PCAP -DUSE_PCAP_IMMEDIATE_MODE -Isrc/lib -Isrc/switch/datapath -Isrc/switch/switch src/lib/*.c src/switch/*/*.c -lsqlite3 -lpthread -lrt -lpcap -o trema_switch
  20. 20. signal ● 内部状態の確認ができます ● SIGUSR1 ● Flow table dump ● SIGUSR2 ● Group table dump ● Info レベルのログとして出力される
  21. 21. And more
  22. 22. 相談ネタ ● OpenWRT feedメンテナンス事情 ● 通常は「特定リリース」+「patch群」で管理する ● trema-edge にリリースが無いので、常に HEAD から ビルド ● 安定した環境を提供できない ● snapshotを取って起点を作る(アーカイブサイトと …して別途配布する)という手はあるが そろそろリリースしませんか?
  23. 23. 相談ネタ ● Trema-switchでOpenflow仕様の未完部分 ● CONTROLLER meter ● Queue ● トンネルポート ● ポートの動的追加削除 ● Role ● AsyncConfig ● SSL ● Performance tuning ● Containers ● Packet parser ● Thread safety コントローラとの接続に関するもの 起動引数?に追加が必要なもの (switch-managerとの兼ね合い)
  24. 24. 拡張の名前空間欲しいな ● “Open” repositoryが欲しい ● 「OSS向けのExperimenter ID」とかないものか ● TCP SYN,ACK,FIN match field とか ● …サブの名前空間でもいいので、あるといいな
  25. 25. trema or trema-edge ● …統合 ?
  26. 26. そんなこんなで Gopenflow ● Golang で実装してみています ● pthread …はもう嫌 ● https://github.com/hkwi/gopenflow ● とりあえず何でも対応する方向で ● Pcap netdevの後にdpdkも対応したい ● パフォーマンスも見る ● 全体の中での各処理がどのぐらいの比重になるのが 妥当なのかを把握しておきたい ● Windowsでも動く ● 現状 Ryu certification OK(981) / ERROR(10)
  27. 27. ところで
  28. 28. 関西でSDN勉強会とかしませんか?

×