SlideShare a Scribd company logo
1 of 18
Download to read offline
Tremaプログラミング

ウル技 大技林
高宮 安仁 @yasuhito
テク だい ぎ りん
スライスBスライスA
お題: ネットワークスライス
どう書く? コントローラ
スライス機能
最短路パス
トポロジ探索
REST API CLI
スイッチへ
RoutingSwitch
Topology
Slice
Path
PathManager
PathInSlice

Manager
小さなクラスに分ける!
パケットを送信すると…
PacketIn
FlowMod PacketOut
宛先ホスト
RoutingSwitch
Topology
PathManager
PacketOut
最短路パスを作る
PacketIn
Path
Path.create
FlowMod

(上流から)
トポロジ情報
処理のカプセル化
•Path.create(path, packet_in)

パスに沿って上流からFlowModAdd
•Path.destroy(path)

パスに沿って下流からFlowModDel
•Path.select do |each|

each.link?(port_a, port_b)

end.each(&:destroy)

ポートa⇔ポートbのリンクをすべて消す
リンクが切れたら…
宛先ホスト
PortDownFlowModDel
RoutingSwitch
Topology
PathManager
無効なパスを消す
PortDown
Path
delete_link
イベント
Path.destroy
FlowMod

(下流から)
オブザーバパターン
トポロジイベントをPathManagerへ
イベントハンドラでパスを消す
RoutingSwitch
Topology
PathManager
メッセージの振り分け
OpenFlow

メッセージ
Path
ト
ポ
ロ
ジ
関
係
PacketIn

のみ
ハンドラの委譲
トポロジ関連メッセージ→Topologyへ
PacketIn→TopologyとPathManagerへ
RoutingSwitch
Topology
PathPathManager
スライス機能を追加したい…
RoutingSwitch
Topology
Slice
Path
PathManager
PathInSlice

Manager
継承とオーバーライド
RoutingSwitch
Topology
Slice
Path
PathManager
PathInSlice

Manager
どう作る? REST API
opology
Slice
Path
hManager
thInSlice

Manager
どう作る? REST API
REST API
コントローラ

プロセス
Slice

Proxy
:find_by!
:find_by!

(DRb)
リモートクラス呼び出し
REST API の実装
Sliceクラスプロキシ
• 小さいクラスを組み合わせよう
• 必要なのはOOPの基本テクのみ!
• リポジトリは

trema/routing_switch
• もし新しいウル技を発見したら

トレ通編集部まで
まとめ

More Related Content

What's hot

Transaction scopeまだダメ
Transaction scopeまだダメTransaction scopeまだダメ
Transaction scopeまだダメOda Shinsuke
 
いまさら聞けないselectあれこれ
いまさら聞けないselectあれこれいまさら聞けないselectあれこれ
いまさら聞けないselectあれこれlestrrat
 
ニューラルネットワーク勉強会5
ニューラルネットワーク勉強会5ニューラルネットワーク勉強会5
ニューラルネットワーク勉強会5yhide
 
Rustのタスクモデルについて
RustのタスクモデルについてRustのタスクモデルについて
Rustのタスクモデルについてzigen
 
Tide - SmalltalkでSPA
Tide - SmalltalkでSPATide - SmalltalkでSPA
Tide - SmalltalkでSPAMasashi Umezawa
 
C#er から見た Turbolinks 3
C#er から見た Turbolinks 3C#er から見た Turbolinks 3
C#er から見た Turbolinks 3dany1468
 
とっとるびー(2回目)発表資料
とっとるびー(2回目)発表資料とっとるびー(2回目)発表資料
とっとるびー(2回目)発表資料ionis111
 

What's hot (9)

Transaction scopeまだダメ
Transaction scopeまだダメTransaction scopeまだダメ
Transaction scopeまだダメ
 
いまさら聞けないselectあれこれ
いまさら聞けないselectあれこれいまさら聞けないselectあれこれ
いまさら聞けないselectあれこれ
 
ニューラルネットワーク勉強会5
ニューラルネットワーク勉強会5ニューラルネットワーク勉強会5
ニューラルネットワーク勉強会5
 
Rustのタスクモデルについて
RustのタスクモデルについてRustのタスクモデルについて
Rustのタスクモデルについて
 
Tide - SmalltalkでSPA
Tide - SmalltalkでSPATide - SmalltalkでSPA
Tide - SmalltalkでSPA
 
C#er から見た Turbolinks 3
C#er から見た Turbolinks 3C#er から見た Turbolinks 3
C#er から見た Turbolinks 3
 
GGEasyMonitor技術情報
GGEasyMonitor技術情報GGEasyMonitor技術情報
GGEasyMonitor技術情報
 
とっとるびー(2回目)発表資料
とっとるびー(2回目)発表資料とっとるびー(2回目)発表資料
とっとるびー(2回目)発表資料
 
NanoStrand
NanoStrandNanoStrand
NanoStrand
 

Similar to Tremaプログラミング ウル技(テク) 大技林

社内向けTech Talk資料~Fluentdの基本紹介~
社内向けTech Talk資料~Fluentdの基本紹介~ 社内向けTech Talk資料~Fluentdの基本紹介~
社内向けTech Talk資料~Fluentdの基本紹介~ Daisuke Ikeda
 
Trema の紹介とネットワーク仮想化への応用
Trema の紹介とネットワーク仮想化への応用Trema の紹介とネットワーク仮想化への応用
Trema の紹介とネットワーク仮想化への応用kazuyas
 
Rubyで創るOpenFlowネットワーク - LLまつり
Rubyで創るOpenFlowネットワーク - LLまつりRubyで創るOpenFlowネットワーク - LLまつり
Rubyで創るOpenFlowネットワーク - LLまつりYuya Rin
 
DTraceによるMySQL解析ことはじめ
DTraceによるMySQL解析ことはじめDTraceによるMySQL解析ことはじめ
DTraceによるMySQL解析ことはじめMikiya Okuno
 
Pub/Sub model, msm, and asio
Pub/Sub model, msm, and asioPub/Sub model, msm, and asio
Pub/Sub model, msm, and asioTakatoshi Kondo
 
wakamonog6 Routing Tutorial
wakamonog6 Routing Tutorialwakamonog6 Routing Tutorial
wakamonog6 Routing TutorialNaohide Kamitani
 
Couchbase MeetUP Tokyo - #11 Omoidenote
Couchbase MeetUP Tokyo - #11 OmoidenoteCouchbase MeetUP Tokyo - #11 Omoidenote
Couchbase MeetUP Tokyo - #11 Omoidenotekitsugi
 
SF-TAP: 柔軟で規模追従可能なトラフィック解析基盤の設計
SF-TAP: 柔軟で規模追従可能なトラフィック解析基盤の設計SF-TAP: 柔軟で規模追従可能なトラフィック解析基盤の設計
SF-TAP: 柔軟で規模追従可能なトラフィック解析基盤の設計Yuuki Takano
 
plotnetcfg入門 | Introduction to plotnetcfg
plotnetcfg入門 | Introduction to plotnetcfgplotnetcfg入門 | Introduction to plotnetcfg
plotnetcfg入門 | Introduction to plotnetcfgKentaro Ebisawa
 
Ruby Postgres 2009
Ruby Postgres 2009Ruby Postgres 2009
Ruby Postgres 2009Akio Ishida
 
C16 45分でわかるPostgreSQLの仕組み by 山田努
C16 45分でわかるPostgreSQLの仕組み by 山田努C16 45分でわかるPostgreSQLの仕組み by 山田努
C16 45分でわかるPostgreSQLの仕組み by 山田努Insight Technology, Inc.
 
Hokkaido.cap #osc11do Wiresharkを使いこなそう!
Hokkaido.cap #osc11do Wiresharkを使いこなそう!Hokkaido.cap #osc11do Wiresharkを使いこなそう!
Hokkaido.cap #osc11do Wiresharkを使いこなそう!Panda Yamaki
 
gumiStudy#7 The MessagePack Project
gumiStudy#7 The MessagePack ProjectgumiStudy#7 The MessagePack Project
gumiStudy#7 The MessagePack ProjectSadayuki Furuhashi
 
20130215 fluentd esper_2
20130215 fluentd esper_220130215 fluentd esper_2
20130215 fluentd esper_2Ogibayashi
 
15. running deploying camel
15. running deploying camel15. running deploying camel
15. running deploying camelJian Feng
 
2012 osc北海道 セッション資料「blackjumbodog利用のすすめ」
2012 osc北海道 セッション資料「blackjumbodog利用のすすめ」2012 osc北海道 セッション資料「blackjumbodog利用のすすめ」
2012 osc北海道 セッション資料「blackjumbodog利用のすすめ」Shinichi Hirauchi
 
RouterBOARD with OpenFlow
RouterBOARD with OpenFlowRouterBOARD with OpenFlow
RouterBOARD with OpenFlowToshiki Tsuboi
 

Similar to Tremaプログラミング ウル技(テク) 大技林 (20)

社内向けTech Talk資料~Fluentdの基本紹介~
社内向けTech Talk資料~Fluentdの基本紹介~ 社内向けTech Talk資料~Fluentdの基本紹介~
社内向けTech Talk資料~Fluentdの基本紹介~
 
Trema の紹介とネットワーク仮想化への応用
Trema の紹介とネットワーク仮想化への応用Trema の紹介とネットワーク仮想化への応用
Trema の紹介とネットワーク仮想化への応用
 
Rubyで創るOpenFlowネットワーク - LLまつり
Rubyで創るOpenFlowネットワーク - LLまつりRubyで創るOpenFlowネットワーク - LLまつり
Rubyで創るOpenFlowネットワーク - LLまつり
 
DTraceによるMySQL解析ことはじめ
DTraceによるMySQL解析ことはじめDTraceによるMySQL解析ことはじめ
DTraceによるMySQL解析ことはじめ
 
Scapy presentation
Scapy presentationScapy presentation
Scapy presentation
 
Pub/Sub model, msm, and asio
Pub/Sub model, msm, and asioPub/Sub model, msm, and asio
Pub/Sub model, msm, and asio
 
wakamonog6 Routing Tutorial
wakamonog6 Routing Tutorialwakamonog6 Routing Tutorial
wakamonog6 Routing Tutorial
 
Akka HTTP
Akka HTTPAkka HTTP
Akka HTTP
 
Couchbase MeetUP Tokyo - #11 Omoidenote
Couchbase MeetUP Tokyo - #11 OmoidenoteCouchbase MeetUP Tokyo - #11 Omoidenote
Couchbase MeetUP Tokyo - #11 Omoidenote
 
SF-TAP: 柔軟で規模追従可能なトラフィック解析基盤の設計
SF-TAP: 柔軟で規模追従可能なトラフィック解析基盤の設計SF-TAP: 柔軟で規模追従可能なトラフィック解析基盤の設計
SF-TAP: 柔軟で規模追従可能なトラフィック解析基盤の設計
 
plotnetcfg入門 | Introduction to plotnetcfg
plotnetcfg入門 | Introduction to plotnetcfgplotnetcfg入門 | Introduction to plotnetcfg
plotnetcfg入門 | Introduction to plotnetcfg
 
Ruby Postgres 2009
Ruby Postgres 2009Ruby Postgres 2009
Ruby Postgres 2009
 
C16 45分でわかるPostgreSQLの仕組み by 山田努
C16 45分でわかるPostgreSQLの仕組み by 山田努C16 45分でわかるPostgreSQLの仕組み by 山田努
C16 45分でわかるPostgreSQLの仕組み by 山田努
 
Hokkaido.cap #osc11do Wiresharkを使いこなそう!
Hokkaido.cap #osc11do Wiresharkを使いこなそう!Hokkaido.cap #osc11do Wiresharkを使いこなそう!
Hokkaido.cap #osc11do Wiresharkを使いこなそう!
 
Gumi study7 messagepack
Gumi study7 messagepackGumi study7 messagepack
Gumi study7 messagepack
 
gumiStudy#7 The MessagePack Project
gumiStudy#7 The MessagePack ProjectgumiStudy#7 The MessagePack Project
gumiStudy#7 The MessagePack Project
 
20130215 fluentd esper_2
20130215 fluentd esper_220130215 fluentd esper_2
20130215 fluentd esper_2
 
15. running deploying camel
15. running deploying camel15. running deploying camel
15. running deploying camel
 
2012 osc北海道 セッション資料「blackjumbodog利用のすすめ」
2012 osc北海道 セッション資料「blackjumbodog利用のすすめ」2012 osc北海道 セッション資料「blackjumbodog利用のすすめ」
2012 osc北海道 セッション資料「blackjumbodog利用のすすめ」
 
RouterBOARD with OpenFlow
RouterBOARD with OpenFlowRouterBOARD with OpenFlow
RouterBOARD with OpenFlow
 

More from Yasuhito Takamiya

アプリ屋 対 ネットワーク屋
アプリ屋 対 ネットワーク屋アプリ屋 対 ネットワーク屋
アプリ屋 対 ネットワーク屋Yasuhito Takamiya
 
物理ネットワーク受け入れテストツールNetTester あるいは私は如何にして心配するのを止めてネットワーク管理を・愛する・ようになったか
物理ネットワーク受け入れテストツールNetTester あるいは私は如何にして心配するのを止めてネットワーク管理を・愛する・ようになったか物理ネットワーク受け入れテストツールNetTester あるいは私は如何にして心配するのを止めてネットワーク管理を・愛する・ようになったか
物理ネットワーク受け入れテストツールNetTester あるいは私は如何にして心配するのを止めてネットワーク管理を・愛する・ようになったかYasuhito Takamiya
 
ニューTrema 5つのポイント
ニューTrema 5つのポイントニューTrema 5つのポイント
ニューTrema 5つのポイントYasuhito Takamiya
 
Ruby でパケットパーサを作ろう
Ruby でパケットパーサを作ろうRuby でパケットパーサを作ろう
Ruby でパケットパーサを作ろうYasuhito Takamiya
 
OpenFlow フレームワークの選びかた
OpenFlow フレームワークの選びかたOpenFlow フレームワークの選びかた
OpenFlow フレームワークの選びかたYasuhito Takamiya
 
SDN時代の開発よもやま話 - OpenFlowとTrema
SDN時代の開発よもやま話 - OpenFlowとTremaSDN時代の開発よもやま話 - OpenFlowとTrema
SDN時代の開発よもやま話 - OpenFlowとTremaYasuhito Takamiya
 
クラウドインターネットルータ
クラウドインターネットルータクラウドインターネットルータ
クラウドインターネットルータYasuhito Takamiya
 
Trema コミッタになるには
Trema コミッタになるにはTrema コミッタになるには
Trema コミッタになるにはYasuhito Takamiya
 
Bare Metal Cloud: 実マシンを提供するクラウドサービス (SWoPP 2010)
Bare Metal Cloud: 実マシンを提供するクラウドサービス (SWoPP 2010)Bare Metal Cloud: 実マシンを提供するクラウドサービス (SWoPP 2010)
Bare Metal Cloud: 実マシンを提供するクラウドサービス (SWoPP 2010)Yasuhito Takamiya
 

More from Yasuhito Takamiya (10)

アプリ屋 対 ネットワーク屋
アプリ屋 対 ネットワーク屋アプリ屋 対 ネットワーク屋
アプリ屋 対 ネットワーク屋
 
物理ネットワーク受け入れテストツールNetTester あるいは私は如何にして心配するのを止めてネットワーク管理を・愛する・ようになったか
物理ネットワーク受け入れテストツールNetTester あるいは私は如何にして心配するのを止めてネットワーク管理を・愛する・ようになったか物理ネットワーク受け入れテストツールNetTester あるいは私は如何にして心配するのを止めてネットワーク管理を・愛する・ようになったか
物理ネットワーク受け入れテストツールNetTester あるいは私は如何にして心配するのを止めてネットワーク管理を・愛する・ようになったか
 
ニューTrema 5つのポイント
ニューTrema 5つのポイントニューTrema 5つのポイント
ニューTrema 5つのポイント
 
データで見るTrema
データで見るTremaデータで見るTrema
データで見るTrema
 
Ruby でパケットパーサを作ろう
Ruby でパケットパーサを作ろうRuby でパケットパーサを作ろう
Ruby でパケットパーサを作ろう
 
OpenFlow フレームワークの選びかた
OpenFlow フレームワークの選びかたOpenFlow フレームワークの選びかた
OpenFlow フレームワークの選びかた
 
SDN時代の開発よもやま話 - OpenFlowとTrema
SDN時代の開発よもやま話 - OpenFlowとTremaSDN時代の開発よもやま話 - OpenFlowとTrema
SDN時代の開発よもやま話 - OpenFlowとTrema
 
クラウドインターネットルータ
クラウドインターネットルータクラウドインターネットルータ
クラウドインターネットルータ
 
Trema コミッタになるには
Trema コミッタになるにはTrema コミッタになるには
Trema コミッタになるには
 
Bare Metal Cloud: 実マシンを提供するクラウドサービス (SWoPP 2010)
Bare Metal Cloud: 実マシンを提供するクラウドサービス (SWoPP 2010)Bare Metal Cloud: 実マシンを提供するクラウドサービス (SWoPP 2010)
Bare Metal Cloud: 実マシンを提供するクラウドサービス (SWoPP 2010)
 

Tremaプログラミング ウル技(テク) 大技林