SlideShare a Scribd company logo
1 of 28
できる!trema-switch
Hiroaki KAWAI
<kawai@stratosphere.co.jp>
Introducing myself
●
Apache好き。Webをやっていた。OSS好き。
●
関西在住
●
現所属:株式会社ストラトスフィア
●
ACCESSとIIJで設立
●
SDNの会社
●
技術開発部
●
Ruby …は書けません
Interop Tokyo 2013 SDN ShowCase
●
OmniSphere 1.0 展示
Buffalo G301N
Trema-switch / OpenWRT に書換
Trema-switch
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で一度歩調を合わせることに
なっているので、好都合
他の実装
C
Open vSwitch
CpqD
ofsoftswitch13
Indigo
(IVS)
Erlang
LINC Lagopus
C C C
kernel module
or
netdev
netdev netdev netdev dpdk
Pantou系
OpenWRT対応
Trema-switch
●
buildは簡単
$ rake trema_switch
$ gcc src/lib/*.c src/switch/*/*.c
…実は
超簡単!
ということで、こうなる
OpenWRT feed
●
Trema-switch feed
●
https://github.com/iHiroakiKawai/trema-openwrt
●
OpenWRT の feeds.conf に行を足すだけ
…ただし 一部自前パッチが必要。uClibcに足をひっぱられ
…て
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
Trema-switchはできる子
●
仕様準拠
●
テストスイッチかくあるべし。
Ryu certification
8: CPU足りない
8: テストケースの不備
…ちなみに
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
安価なOpenflowスイッチ機器
●
OpenWRTの敷居が高いと感じたら、こんな選択肢
も
●
Raspberry Pi
●
Intel NUC
USB NIC
Inside
trema-switch
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
このあたりから参加
Flags
●
内部にいくつかフラグがある
●
WITH_PCAP
●
USE_PCAP_IMMEDIATE_MODE
●
GROUP_SELECT_BY_HASH
●
こんな感じで使う
$ gcc -DWITH_PCAP 
src/lib/*.{c,h} 
src/switch/*/*.{c,h} 
-lpcap ...
WITH_PCAP
●
Cコンパイル時に定義するとlibpcap対応化
●
抽象レイヤで最適な方法を選択してくれる
●
mmap TPACKET_V3
●
Linux 3 VLAN offloading
●
Double taggingはKernel 3.14以降
+ libpcap patch(#346)
●
あるいはKernel 2 系
●
ポータビリティ
USE_PCAP_IMMEDIATE_MODE
●
比較的新しいlibpcapで使える
●
pcap_set_immediate_mode() を呼び出す
●
TPACKET_V2/V3 の特性の違いへの対応
●
TPACKET_V3はスループット重視
●
即時応答性重視ならTPACKET_V2に切り替える
GROUP_SELECT_BY_HASH
●
Group output で
Bucket SELECT だったとき
●
完全ランダムではなくEthernet フレーム情報に基づ
いて振り分ける
●
連続順に転送が期待されているパケット列のため
●
Out-of-orderが発生しないように
個人的にはデフォルトで有効でいいと
思う
私の場合
●
こんな感じでビルドしています
$ 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
signal
●
内部状態の確認ができます
●
SIGUSR1
●
Flow table dump
●
SIGUSR2
●
Group table dump
●
Info レベルのログとして出力される
And more
相談ネタ
●
OpenWRT feedメンテナンス事情
●
通常は「特定リリース」+「patch群」で管理する
●
trema-edge にリリースが無いので、常に HEAD から
ビルド
●
安定した環境を提供できない
●
snapshotを取って起点を作る(アーカイブサイトと
…して別途配布する)という手はあるが
そろそろリリースしませんか?
相談ネタ
●
Trema-switchでOpenflow仕様の未完部分
●
CONTROLLER meter
●
Queue
●
トンネルポート
●
ポートの動的追加削除
●
Role
●
AsyncConfig
●
SSL
●
Performance tuning
●
Containers
●
Packet parser
●
Thread safety
コントローラとの接続に関するもの
起動引数?に追加が必要なもの
(switch-managerとの兼ね合い)
拡張の名前空間欲しいな
●
“Open” repositoryが欲しい
●
「OSS向けのExperimenter ID」とかないものか
●
TCP SYN,ACK,FIN match field とか
●
…サブの名前空間でもいいので、あるといいな
trema or trema-edge
●
…統合 ?
そんなこんなで Gopenflow
●
Golang で実装してみています
●
pthread …はもう嫌
●
https://github.com/hkwi/gopenflow
●
とりあえず何でも対応する方向で
●
Pcap netdevの後にdpdkも対応したい
●
パフォーマンスも見る
●
全体の中での各処理がどのぐらいの比重になるのが
妥当なのかを把握しておきたい
●
Windowsでも動く
●
現状 Ryu certification OK(981) / ERROR(10)
ところで
関西でSDN勉強会とかしませんか?

More Related Content

What's hot

ほんとにあったphantomjsのコワい話
ほんとにあったphantomjsのコワい話ほんとにあったphantomjsのコワい話
ほんとにあったphantomjsのコワい話
Kohki Nakashima
 
プログラミング学習のための学習
プログラミング学習のための学習プログラミング学習のための学習
プログラミング学習のための学習
siranon *
 
PHP-FPMとuWSGI——mod_php以外の選択肢を探る
PHP-FPMとuWSGI——mod_php以外の選択肢を探るPHP-FPMとuWSGI——mod_php以外の選択肢を探る
PHP-FPMとuWSGI——mod_php以外の選択肢を探る
Yoshio Hanawa
 
Testing PHP extension on Travis CI
Testing PHP extension on Travis CITesting PHP extension on Travis CI
Testing PHP extension on Travis CI
Yoshio Hanawa
 

What's hot (20)

ほんとにあったphantomjsのコワい話
ほんとにあったphantomjsのコワい話ほんとにあったphantomjsのコワい話
ほんとにあったphantomjsのコワい話
 
World plonedaylt
World plonedayltWorld plonedaylt
World plonedaylt
 
Nmapの真実(ゾクゾク)
Nmapの真実(ゾクゾク)Nmapの真実(ゾクゾク)
Nmapの真実(ゾクゾク)
 
プログラミング学習のための学習
プログラミング学習のための学習プログラミング学習のための学習
プログラミング学習のための学習
 
neobundle.vimについて+おまけ
neobundle.vimについて+おまけneobundle.vimについて+おまけ
neobundle.vimについて+おまけ
 
PNA3秒クッキング
PNA3秒クッキングPNA3秒クッキング
PNA3秒クッキング
 
【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第1回 ‟シューティングゲームのプログラム„
【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第1回 ‟シューティングゲームのプログラム„【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第1回 ‟シューティングゲームのプログラム„
【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第1回 ‟シューティングゲームのプログラム„
 
魔法少女 Laravel
魔法少女 Laravel魔法少女 Laravel
魔法少女 Laravel
 
Start!! Ruby
Start!! RubyStart!! Ruby
Start!! Ruby
 
Python勉強会1-はじめに
Python勉強会1-はじめにPython勉強会1-はじめに
Python勉強会1-はじめに
 
Javaクラスファイルの読み方
Javaクラスファイルの読み方Javaクラスファイルの読み方
Javaクラスファイルの読み方
 
Fluentd in #tkrk10
Fluentd in #tkrk10Fluentd in #tkrk10
Fluentd in #tkrk10
 
心に残った名前ランキング
心に残った名前ランキング心に残った名前ランキング
心に残った名前ランキング
 
【学習メモ#4th】12ステップで作る組込みOS自作入門
【学習メモ#4th】12ステップで作る組込みOS自作入門【学習メモ#4th】12ステップで作る組込みOS自作入門
【学習メモ#4th】12ステップで作る組込みOS自作入門
 
Vimはこわくない
VimはこわくないVimはこわくない
Vimはこわくない
 
【学習メモ#7th】12ステップで作る組込みOS自作入門
【学習メモ#7th】12ステップで作る組込みOS自作入門 【学習メモ#7th】12ステップで作る組込みOS自作入門
【学習メモ#7th】12ステップで作る組込みOS自作入門
 
【学習メモ#3rd】12ステップで作る組込みOS自作入門
【学習メモ#3rd】12ステップで作る組込みOS自作入門【学習メモ#3rd】12ステップで作る組込みOS自作入門
【学習メモ#3rd】12ステップで作る組込みOS自作入門
 
PHP-FPMとuWSGI——mod_php以外の選択肢を探る
PHP-FPMとuWSGI——mod_php以外の選択肢を探るPHP-FPMとuWSGI——mod_php以外の選択肢を探る
PHP-FPMとuWSGI——mod_php以外の選択肢を探る
 
人間たちとsystemd
人間たちとsystemd人間たちとsystemd
人間たちとsystemd
 
Testing PHP extension on Travis CI
Testing PHP extension on Travis CITesting PHP extension on Travis CI
Testing PHP extension on Travis CI
 

Viewers also liked

Village Relocation Conference Presenation
Village Relocation Conference PresenationVillage Relocation Conference Presenation
Village Relocation Conference Presenation
Andrew Mackenzie
 
Nature
NatureNature
Nature
CK Tan
 
4. Course Design: Putting it All Together
4. Course Design: Putting it All Together4. Course Design: Putting it All Together
4. Course Design: Putting it All Together
ISEAL Alliance
 
Sneeuwklassen Terugkomdag Deel 2
Sneeuwklassen Terugkomdag Deel 2Sneeuwklassen Terugkomdag Deel 2
Sneeuwklassen Terugkomdag Deel 2
sint.al.jo
 

Viewers also liked (20)

パケットキャプチャの勘どころ Ssmjp 201501
パケットキャプチャの勘どころ Ssmjp 201501パケットキャプチャの勘どころ Ssmjp 201501
パケットキャプチャの勘どころ Ssmjp 201501
 
Rgc.Deck.02.06.09
Rgc.Deck.02.06.09Rgc.Deck.02.06.09
Rgc.Deck.02.06.09
 
Fikir Nasil Bulunur
Fikir Nasil BulunurFikir Nasil Bulunur
Fikir Nasil Bulunur
 
Ohio Rapid Response Webinar 2
Ohio Rapid Response Webinar 2Ohio Rapid Response Webinar 2
Ohio Rapid Response Webinar 2
 
Village Relocation Conference Presenation
Village Relocation Conference PresenationVillage Relocation Conference Presenation
Village Relocation Conference Presenation
 
Cloudstack networking の内側
Cloudstack networking の内側Cloudstack networking の内側
Cloudstack networking の内側
 
Nature
NatureNature
Nature
 
Massachusetts Rapid Response Set-Aside Program
Massachusetts Rapid Response Set-Aside ProgramMassachusetts Rapid Response Set-Aside Program
Massachusetts Rapid Response Set-Aside Program
 
How to Keep Workers Happy on Your Toughest Jobsite
How to Keep Workers Happy on Your Toughest JobsiteHow to Keep Workers Happy on Your Toughest Jobsite
How to Keep Workers Happy on Your Toughest Jobsite
 
CSC Leasing
CSC LeasingCSC Leasing
CSC Leasing
 
Portifolio 2009 - 3d illustration
Portifolio 2009 - 3d illustrationPortifolio 2009 - 3d illustration
Portifolio 2009 - 3d illustration
 
4. Course Design: Putting it All Together
4. Course Design: Putting it All Together4. Course Design: Putting it All Together
4. Course Design: Putting it All Together
 
Sneeuwklassen Terugkomdag Deel 2
Sneeuwklassen Terugkomdag Deel 2Sneeuwklassen Terugkomdag Deel 2
Sneeuwklassen Terugkomdag Deel 2
 
Lego creations
Lego creationsLego creations
Lego creations
 
WIA Bootcamp - Governance - Boards Only
WIA Bootcamp - Governance - Boards OnlyWIA Bootcamp - Governance - Boards Only
WIA Bootcamp - Governance - Boards Only
 
Session 1.3 Notes on PLNs
Session 1.3 Notes on PLNsSession 1.3 Notes on PLNs
Session 1.3 Notes on PLNs
 
Valentine
ValentineValentine
Valentine
 
0119.El.Mandarin.De.Jose.Maria.Eca.De.Queiroz
0119.El.Mandarin.De.Jose.Maria.Eca.De.Queiroz0119.El.Mandarin.De.Jose.Maria.Eca.De.Queiroz
0119.El.Mandarin.De.Jose.Maria.Eca.De.Queiroz
 
Knowing Our Clients Keable Stl
Knowing Our Clients Keable StlKnowing Our Clients Keable Stl
Knowing Our Clients Keable Stl
 
Faith The Way To Happiness
Faith The Way To HappinessFaith The Way To Happiness
Faith The Way To Happiness
 

Similar to できる!trema-switch

Trema の紹介とネットワーク仮想化への応用
Trema の紹介とネットワーク仮想化への応用Trema の紹介とネットワーク仮想化への応用
Trema の紹介とネットワーク仮想化への応用
kazuyas
 
[Osaka]AMIMOTO(HHVM) hands-on #cmsdou
[Osaka]AMIMOTO(HHVM) hands-on #cmsdou [Osaka]AMIMOTO(HHVM) hands-on #cmsdou
[Osaka]AMIMOTO(HHVM) hands-on #cmsdou
Hiromichi Koga
 

Similar to できる!trema-switch (20)

GraalVMの多言語実行機能が凄そうだったので試しにApache Sparkに組み込んで動かしてみたけどちょっとまだ早かったかもしれない(Open So...
GraalVMの多言語実行機能が凄そうだったので試しにApache Sparkに組み込んで動かしてみたけどちょっとまだ早かったかもしれない(Open So...GraalVMの多言語実行機能が凄そうだったので試しにApache Sparkに組み込んで動かしてみたけどちょっとまだ早かったかもしれない(Open So...
GraalVMの多言語実行機能が凄そうだったので試しにApache Sparkに組み込んで動かしてみたけどちょっとまだ早かったかもしれない(Open So...
 
Serverless Framework 使ってる話(node.js)
Serverless Framework 使ってる話(node.js)Serverless Framework 使ってる話(node.js)
Serverless Framework 使ってる話(node.js)
 
Openflow超解釈
Openflow超解釈Openflow超解釈
Openflow超解釈
 
Webサーバ勉強会 LT資料
Webサーバ勉強会 LT資料Webサーバ勉強会 LT資料
Webサーバ勉強会 LT資料
 
Ietf95 capport
Ietf95 capportIetf95 capport
Ietf95 capport
 
Streaming Audio over HTTP 1.1 to Flask
Streaming Audio over HTTP 1.1 to FlaskStreaming Audio over HTTP 1.1 to Flask
Streaming Audio over HTTP 1.1 to Flask
 
RubyKaigi Lightning Talks TwYM episode2
RubyKaigi Lightning Talks TwYM episode2RubyKaigi Lightning Talks TwYM episode2
RubyKaigi Lightning Talks TwYM episode2
 
Lagopus & NFV with Vhost (Tremaday#9)
Lagopus & NFV with Vhost (Tremaday#9)Lagopus & NFV with Vhost (Tremaday#9)
Lagopus & NFV with Vhost (Tremaday#9)
 
Trema の紹介とネットワーク仮想化への応用
Trema の紹介とネットワーク仮想化への応用Trema の紹介とネットワーク仮想化への応用
Trema の紹介とネットワーク仮想化への応用
 
小さく始める Docker container の deploy
小さく始める Docker container の deploy小さく始める Docker container の deploy
小さく始める Docker container の deploy
 
Opa - Cloud Language
Opa - Cloud LanguageOpa - Cloud Language
Opa - Cloud Language
 
DartPad+CodePenで、Flutterを体験してみよう
DartPad+CodePenで、Flutterを体験してみようDartPad+CodePenで、Flutterを体験してみよう
DartPad+CodePenで、Flutterを体験してみよう
 
[Osaka]AMIMOTO(HHVM) hands-on #cmsdou
[Osaka]AMIMOTO(HHVM) hands-on #cmsdou [Osaka]AMIMOTO(HHVM) hands-on #cmsdou
[Osaka]AMIMOTO(HHVM) hands-on #cmsdou
 
Web技術勉強会 第33回
Web技術勉強会 第33回Web技術勉強会 第33回
Web技術勉強会 第33回
 
ブログを大阪リージョンに移行して東京リージョンをDRサイトにしています。その理由とRTO/RPOそしてコスト。
ブログを大阪リージョンに移行して東京リージョンをDRサイトにしています。その理由とRTO/RPOそしてコスト。ブログを大阪リージョンに移行して東京リージョンをDRサイトにしています。その理由とRTO/RPOそしてコスト。
ブログを大阪リージョンに移行して東京リージョンをDRサイトにしています。その理由とRTO/RPOそしてコスト。
 
Practical migration from JSP to Thymeleaf
Practical migration from JSP to Thymeleaf Practical migration from JSP to Thymeleaf
Practical migration from JSP to Thymeleaf
 
東京Node学園 今できる通信高速化にトライしてみた
東京Node学園 今できる通信高速化にトライしてみた東京Node学園 今できる通信高速化にトライしてみた
東京Node学園 今できる通信高速化にトライしてみた
 
Lagopus performance
Lagopus performanceLagopus performance
Lagopus performance
 
Scalaでのプログラム開発
Scalaでのプログラム開発Scalaでのプログラム開発
Scalaでのプログラム開発
 
次世代Webコンテナ Undertowについて
次世代Webコンテナ Undertowについて次世代Webコンテナ Undertowについて
次世代Webコンテナ Undertowについて
 

More from Hiroaki Kawai

Play gopenflow (english)
Play gopenflow (english)Play gopenflow (english)
Play gopenflow (english)
Hiroaki Kawai
 
Gopenflow demo v1 (english)
Gopenflow demo v1 (english)Gopenflow demo v1 (english)
Gopenflow demo v1 (english)
Hiroaki Kawai
 
Cloudstack networking2
Cloudstack networking2Cloudstack networking2
Cloudstack networking2
Hiroaki Kawai
 

More from Hiroaki Kawai (14)

Wireless openflow (english)
Wireless openflow (english)Wireless openflow (english)
Wireless openflow (english)
 
Play gopenflow (english)
Play gopenflow (english)Play gopenflow (english)
Play gopenflow (english)
 
Gopenflow demo v1 (english)
Gopenflow demo v1 (english)Gopenflow demo v1 (english)
Gopenflow demo v1 (english)
 
Play gopenflow
Play gopenflowPlay gopenflow
Play gopenflow
 
Gopenflow demo v1
Gopenflow demo v1Gopenflow demo v1
Gopenflow demo v1
 
Wireless openflow with stratosphere experimenter
Wireless openflow with stratosphere experimenterWireless openflow with stratosphere experimenter
Wireless openflow with stratosphere experimenter
 
Openflow - Reactive? Proactive?
Openflow - Reactive? Proactive?Openflow - Reactive? Proactive?
Openflow - Reactive? Proactive?
 
Cloudstack networking2
Cloudstack networking2Cloudstack networking2
Cloudstack networking2
 
Metro Style Dev #01 IMAP Client
Metro Style Dev #01 IMAP ClientMetro Style Dev #01 IMAP Client
Metro Style Dev #01 IMAP Client
 
Python geohash 紹介
Python geohash 紹介Python geohash 紹介
Python geohash 紹介
 
Webteko mysqlftppc
Webteko mysqlftppcWebteko mysqlftppc
Webteko mysqlftppc
 
Skype Api
Skype ApiSkype Api
Skype Api
 
mysqlftppc 紹介
mysqlftppc 紹介mysqlftppc 紹介
mysqlftppc 紹介
 
Php File Upload
Php File UploadPhp File Upload
Php File Upload
 

Recently uploaded

Recently uploaded (7)

新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 

できる!trema-switch