SlideShare a Scribd company logo
1 of 31
Download to read offline
ニューTrema
5つのポイント
高宮安仁 @yasuhito
OpenFlow
1.3.4
#1
$ trema run my_controller_rb

--openflow13 -c my.conf
match = Match.new(ether_type: 0x86dd,
ipv6_source_address: ‘2001:db8:bd05:1d2:288a:1fc0:1:10ee',
ipv6_source_address_mask: ‘ffff:ffff:ffff:ffff::’)
send_flow_mod_add(dpid,
match: match,
instructions: [Apply.new(SendOutPort.new(1)),
GotoTable.new(10)])
詳しくは、パケットライブラリ trema/pio を参照
Ruby化
#2
旧Trema
Trema
0 12500 25000 37500 50000
コードの変化
C+Ruby
Ruby
インストールが簡単に
$ sudo apt-get install openvswitch-vswitch
$ git clone https://github.com/trema/topology.git
$ cd topology
$ bundle install --binstubs
C
旧 新
Pryでデバッグ
コントローラ
連携
#3
コントローラ連携
• 既存のコントローラを
• 組み合わせて高機能なコントローラを作る
• 拡張して独自の機能を追加する
• ちょっとしたRubyコードでできます
trema/routing_switch
Routing

Switch
Path

Manager
Topology
trema/topology
trema/

routing_switch
class RoutingSwitch < Trema::Controller
extend Forwardable
def_delegators :@topology, :switch_ready
…
def packet_in(dpid, message)
@topology.packet_in(dpid, message)
return if message.lldp?
@path_manager.packet_in(dpid, message)
end
RoutingSwitch PathManager
Topology
class RoutingSwitch < Trema::Controller
…
def start_topology
topology = TopologyController.new
topology.start []
topology.add_observer @path_manager
end
PathManager
Topology
Routing

Switch
Sliceable
Switch
Topology
Path

Manager
親クラス
<
class SliceableSwitch < PathManager
def start
super
@slices = {}
end
def add_slice(name)
# …
end
def delete_slice(name)
# …
end
#4テスト
フレーム
ワーク
コントローラ
INPUT
OUTPUT
$ cat trema.conf
vswitch { datapath_id 0xabc }
$ ./bin/trema run ./lib/hello_trema.rb -c trema.conf
Trema started.
Hello 0xabc!
^C%
$ cat /tmp/HelloTrema.log
# Logfile created on 2015-08-07 21:42:26 +0900 by logger.rb/41954
I, [2015-08-07T21:42:26.484872 #7287] INFO -- : Trema started.
I, [2015-08-07T21:42:26.745980 #7287] INFO -- : Hello 0xabc!
hello_trema
Then the output should contain:
"""
Hello, World!
"""
When I trema run "foo.rb" with the configuration "bar.conf"
Then the number of packets received by "host1" should be:
| source | #packets |
| 192.168.0.2 | 2 |
When I trema send_packets as follows:

| source | destination | #packets |
| 192.168.0.1 | 192.168.0.2 | 10 |
Given a file named "trema.conf" with:
"""
vswitch('learning') { datapath_id 0xabc }
"""
Given I use OpenFlow 1.3
ドキュメント
#5
https://twitter.com/sashim1343/status/626675434831282176
近日中に原稿を公開
Trema本「はじめに」
1. バグ報告
2. パッチのPR
3. 新しいアプリ
4. Trema本レビュー

More Related Content

What's hot

Mr201304 open flow_security_jpn
Mr201304 open flow_security_jpnMr201304 open flow_security_jpn
Mr201304 open flow_security_jpn
FFRI, Inc.
 
Continuation with Boost.Context
Continuation with Boost.ContextContinuation with Boost.Context
Continuation with Boost.Context
Akira Takahashi
 

What's hot (20)

パケットキャプチャの定番! Wiresharkのインストールとミニ紹介
パケットキャプチャの定番! Wiresharkのインストールとミニ紹介パケットキャプチャの定番! Wiresharkのインストールとミニ紹介
パケットキャプチャの定番! Wiresharkのインストールとミニ紹介
 
Hokkaido.cap#3 ケーススタディ(基礎編)
Hokkaido.cap#3 ケーススタディ(基礎編)Hokkaido.cap#3 ケーススタディ(基礎編)
Hokkaido.cap#3 ケーススタディ(基礎編)
 
Mr201304 open flow_security_jpn
Mr201304 open flow_security_jpnMr201304 open flow_security_jpn
Mr201304 open flow_security_jpn
 
テーマ「最適化 その2」
テーマ「最適化 その2」テーマ「最適化 その2」
テーマ「最適化 その2」
 
超簡単!Subversion入門 概念編
超簡単!Subversion入門 概念編超簡単!Subversion入門 概念編
超簡単!Subversion入門 概念編
 
超簡単!Subversion入門 準備編
超簡単!Subversion入門 準備編超簡単!Subversion入門 準備編
超簡単!Subversion入門 準備編
 
Wiresharkで検出できないチャットプログラム
Wiresharkで検出できないチャットプログラムWiresharkで検出できないチャットプログラム
Wiresharkで検出できないチャットプログラム
 
Scapy presentation Remake(訂正)
Scapy presentation Remake(訂正)Scapy presentation Remake(訂正)
Scapy presentation Remake(訂正)
 
いまさら聞けないRake入門
いまさら聞けないRake入門いまさら聞けないRake入門
いまさら聞けないRake入門
 
タスクマネージャーの上級版!Process Explorerの紹介
タスクマネージャーの上級版!Process Explorerの紹介タスクマネージャーの上級版!Process Explorerの紹介
タスクマネージャーの上級版!Process Explorerの紹介
 
シェル入門
シェル入門シェル入門
シェル入門
 
Boost tour 1.60.0 merge
Boost tour 1.60.0 mergeBoost tour 1.60.0 merge
Boost tour 1.60.0 merge
 
Sourcecode Reading Workshop2010
Sourcecode Reading Workshop2010Sourcecode Reading Workshop2010
Sourcecode Reading Workshop2010
 
Siv3Dで楽しむゲームとメディアアート開発
Siv3Dで楽しむゲームとメディアアート開発Siv3Dで楽しむゲームとメディアアート開発
Siv3Dで楽しむゲームとメディアアート開発
 
Continuation with Boost.Context
Continuation with Boost.ContextContinuation with Boost.Context
Continuation with Boost.Context
 
「BluetoothでLinuxマシンとAndroidを繋いで話が出来るようにした話」「台風で停電になって省電力の設定をした話」「ネットワークの設定が引き...
「BluetoothでLinuxマシンとAndroidを繋いで話が出来るようにした話」「台風で停電になって省電力の設定をした話」「ネットワークの設定が引き...「BluetoothでLinuxマシンとAndroidを繋いで話が出来るようにした話」「台風で停電になって省電力の設定をした話」「ネットワークの設定が引き...
「BluetoothでLinuxマシンとAndroidを繋いで話が出来るようにした話」「台風で停電になって省電力の設定をした話」「ネットワークの設定が引き...
 
dofilewrite and vn_write
dofilewrite and vn_writedofilewrite and vn_write
dofilewrite and vn_write
 
超簡単!SubversionとTortoiseSVN入門(操作編2)
超簡単!SubversionとTortoiseSVN入門(操作編2)超簡単!SubversionとTortoiseSVN入門(操作編2)
超簡単!SubversionとTortoiseSVN入門(操作編2)
 
Buffer overflow
Buffer overflowBuffer overflow
Buffer overflow
 
競プロでGo!
競プロでGo!競プロでGo!
競プロでGo!
 

Viewers also liked

Viewers also liked (6)

アプリ屋 対 ネットワーク屋
アプリ屋 対 ネットワーク屋アプリ屋 対 ネットワーク屋
アプリ屋 対 ネットワーク屋
 
Trema コミッタになるには
Trema コミッタになるにはTrema コミッタになるには
Trema コミッタになるには
 
物理ネットワーク受け入れテストツールNetTester あるいは私は如何にして心配するのを止めてネットワーク管理を・愛する・ようになったか
物理ネットワーク受け入れテストツールNetTester あるいは私は如何にして心配するのを止めてネットワーク管理を・愛する・ようになったか物理ネットワーク受け入れテストツールNetTester あるいは私は如何にして心配するのを止めてネットワーク管理を・愛する・ようになったか
物理ネットワーク受け入れテストツールNetTester あるいは私は如何にして心配するのを止めてネットワーク管理を・愛する・ようになったか
 
SDN時代の開発よもやま話 - OpenFlowとTrema
SDN時代の開発よもやま話 - OpenFlowとTremaSDN時代の開発よもやま話 - OpenFlowとTrema
SDN時代の開発よもやま話 - OpenFlowとTrema
 
物理ネットワーク受け入れテストの自動化を考える
物理ネットワーク受け入れテストの自動化を考える物理ネットワーク受け入れテストの自動化を考える
物理ネットワーク受け入れテストの自動化を考える
 
深層学習による自然言語処理の研究動向
深層学習による自然言語処理の研究動向深層学習による自然言語処理の研究動向
深層学習による自然言語処理の研究動向
 

Similar to ニューTrema 5つのポイント

配布用Beginnerならきっと役立つmaster slave環境
配布用Beginnerならきっと役立つmaster slave環境配布用Beginnerならきっと役立つmaster slave環境
配布用Beginnerならきっと役立つmaster slave環境
yut148atgmaildotcom
 
How to debug a perl script using gdb
How to debug a perl script using gdbHow to debug a perl script using gdb
How to debug a perl script using gdb
akirahiguchi
 
Trema での Open vSwitch
Trema での Open vSwitchTrema での Open vSwitch
Trema での Open vSwitch
kazuyas
 
My sql casual_in_fukuoka_vol1
My sql casual_in_fukuoka_vol1My sql casual_in_fukuoka_vol1
My sql casual_in_fukuoka_vol1
Makoto Haruyama
 
Tremaで構築!中小企業の社内LAN #Tremaday 120419
Tremaで構築!中小企業の社内LAN #Tremaday 120419Tremaで構築!中小企業の社内LAN #Tremaday 120419
Tremaで構築!中小企業の社内LAN #Tremaday 120419
エイシュン コンドウ
 
「さくらのクラウド」におけるVyattaの活用事例
「さくらのクラウド」におけるVyattaの活用事例「さくらのクラウド」におけるVyattaの活用事例
「さくらのクラウド」におけるVyattaの活用事例
SAKURA Internet Inc.
 
SDN Lab環境でのRobotFramework実践活用
SDN Lab環境でのRobotFramework実践活用SDN Lab環境でのRobotFramework実践活用
SDN Lab環境でのRobotFramework実践活用
Toshiki Tsuboi
 

Similar to ニューTrema 5つのポイント (20)

Rubyで創るOpenFlowネットワーク - LLまつり
Rubyで創るOpenFlowネットワーク - LLまつりRubyで創るOpenFlowネットワーク - LLまつり
Rubyで創るOpenFlowネットワーク - LLまつり
 
配布用Beginnerならきっと役立つmaster slave環境
配布用Beginnerならきっと役立つmaster slave環境配布用Beginnerならきっと役立つmaster slave環境
配布用Beginnerならきっと役立つmaster slave環境
 
Chainer v1.6からv1.7の新機能
Chainer v1.6からv1.7の新機能Chainer v1.6からv1.7の新機能
Chainer v1.6からv1.7の新機能
 
How to debug a perl script using gdb
How to debug a perl script using gdbHow to debug a perl script using gdb
How to debug a perl script using gdb
 
Trema での Open vSwitch
Trema での Open vSwitchTrema での Open vSwitch
Trema での Open vSwitch
 
Ruby 2.5
Ruby 2.5Ruby 2.5
Ruby 2.5
 
My sql casual_in_fukuoka_vol1
My sql casual_in_fukuoka_vol1My sql casual_in_fukuoka_vol1
My sql casual_in_fukuoka_vol1
 
20190926_Try_RHEL8_NVMEoF_Beta
20190926_Try_RHEL8_NVMEoF_Beta20190926_Try_RHEL8_NVMEoF_Beta
20190926_Try_RHEL8_NVMEoF_Beta
 
Tremaで構築!中小企業の社内LAN #Tremaday 120419
Tremaで構築!中小企業の社内LAN #Tremaday 120419Tremaで構築!中小企業の社内LAN #Tremaday 120419
Tremaで構築!中小企業の社内LAN #Tremaday 120419
 
高速ネットワーク最新動向と具体例 (ENOG58 Meeting)
高速ネットワーク最新動向と具体例 (ENOG58 Meeting)高速ネットワーク最新動向と具体例 (ENOG58 Meeting)
高速ネットワーク最新動向と具体例 (ENOG58 Meeting)
 
8 並列計算に向けた pcセッティング
8 並列計算に向けた pcセッティング8 並列計算に向けた pcセッティング
8 並列計算に向けた pcセッティング
 
「さくらのクラウド」におけるVyattaの活用事例
「さくらのクラウド」におけるVyattaの活用事例「さくらのクラウド」におけるVyattaの活用事例
「さくらのクラウド」におけるVyattaの活用事例
 
CentOS 8で標準搭載! 「389-ds」で構築する 認証サーバーについて
CentOS 8で標準搭載! 「389-ds」で構築する 認証サーバーについてCentOS 8で標準搭載! 「389-ds」で構築する 認証サーバーについて
CentOS 8で標準搭載! 「389-ds」で構築する 認証サーバーについて
 
CPANの依存モジュールをもう少し正しく検出したい
CPANの依存モジュールをもう少し正しく検出したいCPANの依存モジュールをもう少し正しく検出したい
CPANの依存モジュールをもう少し正しく検出したい
 
Reconf 201901
Reconf 201901Reconf 201901
Reconf 201901
 
PHPの今とこれから2014
PHPの今とこれから2014PHPの今とこれから2014
PHPの今とこれから2014
 
SDN Lab環境でのRobotFramework実践活用
SDN Lab環境でのRobotFramework実践活用SDN Lab環境でのRobotFramework実践活用
SDN Lab環境でのRobotFramework実践活用
 
FD.io VPP事始め
FD.io VPP事始めFD.io VPP事始め
FD.io VPP事始め
 
Gingerbread
GingerbreadGingerbread
Gingerbread
 
VPP事始め
VPP事始めVPP事始め
VPP事始め
 

More from Yasuhito Takamiya (6)

Tremaプログラミング ウル技(テク) 大技林
Tremaプログラミング ウル技(テク) 大技林Tremaプログラミング ウル技(テク) 大技林
Tremaプログラミング ウル技(テク) 大技林
 
データで見るTrema
データで見るTremaデータで見るTrema
データで見るTrema
 
Ruby でパケットパーサを作ろう
Ruby でパケットパーサを作ろうRuby でパケットパーサを作ろう
Ruby でパケットパーサを作ろう
 
OpenFlow フレームワークの選びかた
OpenFlow フレームワークの選びかたOpenFlow フレームワークの選びかた
OpenFlow フレームワークの選びかた
 
クラウドインターネットルータ
クラウドインターネットルータクラウドインターネットルータ
クラウドインターネットルータ
 
Bare Metal Cloud: 実マシンを提供するクラウドサービス (SWoPP 2010)
Bare Metal Cloud: 実マシンを提供するクラウドサービス (SWoPP 2010)Bare Metal Cloud: 実マシンを提供するクラウドサービス (SWoPP 2010)
Bare Metal Cloud: 実マシンを提供するクラウドサービス (SWoPP 2010)
 

Recently uploaded

Recently uploaded (10)

LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 

ニューTrema 5つのポイント