Submit Search
Upload
Tremaとtrema edgeの違い
•
Download as PPTX, PDF
•
5 likes
•
5,906 views
hiroshi oshiba
Follow
Document for develop OFC App by Trema-Edge.
Read less
Read more
Technology
Report
Share
Report
Share
1 of 28
Download now
Recommended
できる!trema-switch
できる!trema-switch
Hiroaki Kawai
Ryuの遊び方(pica8も併せてもっと楽しく)(2014/1/23修正版)
Ryuの遊び方(pica8も併せてもっと楽しく)(2014/1/23修正版)
hiroshi oshiba
Trema day#4 Pio盛り ~Tremaのパケットパーサ~
Trema day#4 Pio盛り ~Tremaのパケットパーサ~
エイシュン コンドウ
Kanazawa.js.Next
Kanazawa.js.Next
dynamis
ジェネリック関数の呼び出され方 #cocoa_kansai
ジェネリック関数の呼び出され方 #cocoa_kansai
Tomohiro Kumagai
Nmap 9つの真実
Nmap 9つの真実
abend_cve_9999_0001
Ruby でパケットパーサを作ろう
Ruby でパケットパーサを作ろう
Yasuhito Takamiya
Doctrine2 odm-workshop-1
Doctrine2 odm-workshop-1
Hidenori Goto
Recommended
できる!trema-switch
できる!trema-switch
Hiroaki Kawai
Ryuの遊び方(pica8も併せてもっと楽しく)(2014/1/23修正版)
Ryuの遊び方(pica8も併せてもっと楽しく)(2014/1/23修正版)
hiroshi oshiba
Trema day#4 Pio盛り ~Tremaのパケットパーサ~
Trema day#4 Pio盛り ~Tremaのパケットパーサ~
エイシュン コンドウ
Kanazawa.js.Next
Kanazawa.js.Next
dynamis
ジェネリック関数の呼び出され方 #cocoa_kansai
ジェネリック関数の呼び出され方 #cocoa_kansai
Tomohiro Kumagai
Nmap 9つの真実
Nmap 9つの真実
abend_cve_9999_0001
Ruby でパケットパーサを作ろう
Ruby でパケットパーサを作ろう
Yasuhito Takamiya
Doctrine2 odm-workshop-1
Doctrine2 odm-workshop-1
Hidenori Goto
Erlangご紹介 websocket編
Erlangご紹介 websocket編
Masatoshi Itoh
async/await不要論
async/await不要論
bleis tift
ペパボ福岡支社におけるRubyの活用事例
ペパボ福岡支社におけるRubyの活用事例
Uchio Kondo
Phpのレガシーコードをrubyで焼き変えてみた
Phpのレガシーコードをrubyで焼き変えてみた
Akira Kaneda
【Zabbix2.0】snmpttによるトラップメッセージの編集 #Zabbix #自宅ラック勉強会
【Zabbix2.0】snmpttによるトラップメッセージの編集 #Zabbix #自宅ラック勉強会
真乙 九龍
第三回ありえる社内勉強会 「いわががのLombok」
第三回ありえる社内勉強会 「いわががのLombok」
yoshiaki iwanaga
Web技術勉強会 第33回
Web技術勉強会 第33回
龍一 田中
Zabbix2.0.3の新機能と変更点
Zabbix2.0.3の新機能と変更点
真乙 九龍
Inside FastEnum
Inside FastEnum
Takaaki Suzuki
【学習メモ#4th】12ステップで作る組込みOS自作入門
【学習メモ#4th】12ステップで作る組込みOS自作入門
sandai
Prometheus最初に悩む3つのこと
Prometheus最初に悩む3つのこと
貴仁 大和屋
Nmapの真実(ゾクゾク)
Nmapの真実(ゾクゾク)
Keigo Yamazaki
Vsubuntu
Vsubuntu
Naohiro Aota
Rpn and forth 超入門
Rpn and forth 超入門
Yoshitaka Seo
謎の言語Forthが謎なので実装した
謎の言語Forthが謎なので実装した
t-sin
Python勉強会1-はじめに
Python勉強会1-はじめに
理 小林
Elog and Ebuild Phase Hook
Elog and Ebuild Phase Hook
Yasuhiro Asaka
Javaクラスファイルの読み方
Javaクラスファイルの読み方
y torazuka
Project Loom + Project Panama
Project Loom + Project Panama
Yuichi Sakuraba
LagopusでPPPoEを使えるか考えてみた件
LagopusでPPPoEを使えるか考えてみた件
Masaru Oki
カーネルモジュールプログラミング超入門 #1(仮)
カーネルモジュールプログラミング超入門 #1(仮)
University of Tsukuba Linux User Group
Open vSwitchソースコードの全体像
Open vSwitchソースコードの全体像
Sho Shimizu
More Related Content
What's hot
Erlangご紹介 websocket編
Erlangご紹介 websocket編
Masatoshi Itoh
async/await不要論
async/await不要論
bleis tift
ペパボ福岡支社におけるRubyの活用事例
ペパボ福岡支社におけるRubyの活用事例
Uchio Kondo
Phpのレガシーコードをrubyで焼き変えてみた
Phpのレガシーコードをrubyで焼き変えてみた
Akira Kaneda
【Zabbix2.0】snmpttによるトラップメッセージの編集 #Zabbix #自宅ラック勉強会
【Zabbix2.0】snmpttによるトラップメッセージの編集 #Zabbix #自宅ラック勉強会
真乙 九龍
第三回ありえる社内勉強会 「いわががのLombok」
第三回ありえる社内勉強会 「いわががのLombok」
yoshiaki iwanaga
Web技術勉強会 第33回
Web技術勉強会 第33回
龍一 田中
Zabbix2.0.3の新機能と変更点
Zabbix2.0.3の新機能と変更点
真乙 九龍
Inside FastEnum
Inside FastEnum
Takaaki Suzuki
【学習メモ#4th】12ステップで作る組込みOS自作入門
【学習メモ#4th】12ステップで作る組込みOS自作入門
sandai
Prometheus最初に悩む3つのこと
Prometheus最初に悩む3つのこと
貴仁 大和屋
Nmapの真実(ゾクゾク)
Nmapの真実(ゾクゾク)
Keigo Yamazaki
Vsubuntu
Vsubuntu
Naohiro Aota
Rpn and forth 超入門
Rpn and forth 超入門
Yoshitaka Seo
謎の言語Forthが謎なので実装した
謎の言語Forthが謎なので実装した
t-sin
Python勉強会1-はじめに
Python勉強会1-はじめに
理 小林
Elog and Ebuild Phase Hook
Elog and Ebuild Phase Hook
Yasuhiro Asaka
Javaクラスファイルの読み方
Javaクラスファイルの読み方
y torazuka
Project Loom + Project Panama
Project Loom + Project Panama
Yuichi Sakuraba
LagopusでPPPoEを使えるか考えてみた件
LagopusでPPPoEを使えるか考えてみた件
Masaru Oki
What's hot
(20)
Erlangご紹介 websocket編
Erlangご紹介 websocket編
async/await不要論
async/await不要論
ペパボ福岡支社におけるRubyの活用事例
ペパボ福岡支社におけるRubyの活用事例
Phpのレガシーコードをrubyで焼き変えてみた
Phpのレガシーコードをrubyで焼き変えてみた
【Zabbix2.0】snmpttによるトラップメッセージの編集 #Zabbix #自宅ラック勉強会
【Zabbix2.0】snmpttによるトラップメッセージの編集 #Zabbix #自宅ラック勉強会
第三回ありえる社内勉強会 「いわががのLombok」
第三回ありえる社内勉強会 「いわががのLombok」
Web技術勉強会 第33回
Web技術勉強会 第33回
Zabbix2.0.3の新機能と変更点
Zabbix2.0.3の新機能と変更点
Inside FastEnum
Inside FastEnum
【学習メモ#4th】12ステップで作る組込みOS自作入門
【学習メモ#4th】12ステップで作る組込みOS自作入門
Prometheus最初に悩む3つのこと
Prometheus最初に悩む3つのこと
Nmapの真実(ゾクゾク)
Nmapの真実(ゾクゾク)
Vsubuntu
Vsubuntu
Rpn and forth 超入門
Rpn and forth 超入門
謎の言語Forthが謎なので実装した
謎の言語Forthが謎なので実装した
Python勉強会1-はじめに
Python勉強会1-はじめに
Elog and Ebuild Phase Hook
Elog and Ebuild Phase Hook
Javaクラスファイルの読み方
Javaクラスファイルの読み方
Project Loom + Project Panama
Project Loom + Project Panama
LagopusでPPPoEを使えるか考えてみた件
LagopusでPPPoEを使えるか考えてみた件
Viewers also liked
カーネルモジュールプログラミング超入門 #1(仮)
カーネルモジュールプログラミング超入門 #1(仮)
University of Tsukuba Linux User Group
Open vSwitchソースコードの全体像
Open vSwitchソースコードの全体像
Sho Shimizu
60分でわかるソケットプログラミング
60分でわかるソケットプログラミング
Masahiko Kimoto
パケットジェネレータipgenから見るnetmap
パケットジェネレータipgenから見るnetmap
furandon_pig
エンタープライズにおけるOpen flowユースケースを考える
エンタープライズにおけるOpen flowユースケースを考える
cloretsblack
Cloud Days Tokyo 2014 Spring 「80分でばっちり理解するOpenFlow」 NEC宮永直樹
Cloud Days Tokyo 2014 Spring 「80分でばっちり理解するOpenFlow」 NEC宮永直樹
Naoki Miyanaga
恐怖!シェルショッカーの POSIX原理主義シェルスクリプト
恐怖!シェルショッカーの POSIX原理主義シェルスクリプト
Richie Shellshoccar
Intel DPDK Step by Step instructions
Intel DPDK Step by Step instructions
Hisaki Ohara
良いコードとは
良いコードとは
Nobuyuki Matsui
Linux Profiling at Netflix
Linux Profiling at Netflix
Brendan Gregg
Linux packet-forwarding
Linux packet-forwarding
Masakazu Asama
Linux Performance Analysis and Tools
Linux Performance Analysis and Tools
Brendan Gregg
Docker入門: コンテナ型仮想化技術の仕組みと使い方
Docker入門: コンテナ型仮想化技術の仕組みと使い方
Yuichi Ito
Viewers also liked
(13)
カーネルモジュールプログラミング超入門 #1(仮)
カーネルモジュールプログラミング超入門 #1(仮)
Open vSwitchソースコードの全体像
Open vSwitchソースコードの全体像
60分でわかるソケットプログラミング
60分でわかるソケットプログラミング
パケットジェネレータipgenから見るnetmap
パケットジェネレータipgenから見るnetmap
エンタープライズにおけるOpen flowユースケースを考える
エンタープライズにおけるOpen flowユースケースを考える
Cloud Days Tokyo 2014 Spring 「80分でばっちり理解するOpenFlow」 NEC宮永直樹
Cloud Days Tokyo 2014 Spring 「80分でばっちり理解するOpenFlow」 NEC宮永直樹
恐怖!シェルショッカーの POSIX原理主義シェルスクリプト
恐怖!シェルショッカーの POSIX原理主義シェルスクリプト
Intel DPDK Step by Step instructions
Intel DPDK Step by Step instructions
良いコードとは
良いコードとは
Linux Profiling at Netflix
Linux Profiling at Netflix
Linux packet-forwarding
Linux packet-forwarding
Linux Performance Analysis and Tools
Linux Performance Analysis and Tools
Docker入門: コンテナ型仮想化技術の仕組みと使い方
Docker入門: コンテナ型仮想化技術の仕組みと使い方
Similar to Tremaとtrema edgeの違い
名前付け入門
名前付け入門
Takahiro Yaota
C++勉強会in広島プレゼン資料
C++勉強会in広島プレゼン資料
真一 北原
Rubyで創るOpenFlowネットワーク - LLまつり
Rubyで創るOpenFlowネットワーク - LLまつり
Yuya Rin
Unity2015_No10_~UGUI&Audio~
Unity2015_No10_~UGUI&Audio~
CHY72
Scala/Scrum/DDD 困ったこと50連発ガトリングトーク!!
Scala/Scrum/DDD 困ったこと50連発ガトリングトーク!!
Yasuyuki Sugitani
プログラミング学習のための学習
プログラミング学習のための学習
siranon *
Dart 1.1
Dart 1.1
nothingcosmos
2009年のPHPフレームワーク
2009年のPHPフレームワーク
Takuya Sato
Tf勉強会(5)
Tf勉強会(5)
tak9029
Lagopus performance
Lagopus performance
Masaru Oki
Start-padrino
Start-padrino
Uchio Kondo
FabricとRailsと私
FabricとRailsと私
Chikara Miyake
マイクロマウスのための MATLAB/Simulink 講座 第1回 - MATLAB入門
マイクロマウスのための MATLAB/Simulink 講座 第1回 - MATLAB入門
Teng Tokoro
Stager
Stager
sounakano
DTrace for biginners part(1)
DTrace for biginners part(1)
Shoji Haraguchi
OFF4G Hokkaido LT
OFF4G Hokkaido LT
Jyun Tanaka
Denoハンズオン【とらのあなラボ】
Denoハンズオン【とらのあなラボ】
虎の穴 開発室
【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第1回 ‟シューティングゲームのプログラム„
【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第1回 ‟シューティングゲームのプログラム„
和弘 井之上
小さく始める Docker container の deploy
小さく始める Docker container の deploy
Yoshinori Teraoka
2008.10.18 L4u Tech Talk
2008.10.18 L4u Tech Talk
mitamex4u
Similar to Tremaとtrema edgeの違い
(20)
名前付け入門
名前付け入門
C++勉強会in広島プレゼン資料
C++勉強会in広島プレゼン資料
Rubyで創るOpenFlowネットワーク - LLまつり
Rubyで創るOpenFlowネットワーク - LLまつり
Unity2015_No10_~UGUI&Audio~
Unity2015_No10_~UGUI&Audio~
Scala/Scrum/DDD 困ったこと50連発ガトリングトーク!!
Scala/Scrum/DDD 困ったこと50連発ガトリングトーク!!
プログラミング学習のための学習
プログラミング学習のための学習
Dart 1.1
Dart 1.1
2009年のPHPフレームワーク
2009年のPHPフレームワーク
Tf勉強会(5)
Tf勉強会(5)
Lagopus performance
Lagopus performance
Start-padrino
Start-padrino
FabricとRailsと私
FabricとRailsと私
マイクロマウスのための MATLAB/Simulink 講座 第1回 - MATLAB入門
マイクロマウスのための MATLAB/Simulink 講座 第1回 - MATLAB入門
Stager
Stager
DTrace for biginners part(1)
DTrace for biginners part(1)
OFF4G Hokkaido LT
OFF4G Hokkaido LT
Denoハンズオン【とらのあなラボ】
Denoハンズオン【とらのあなラボ】
【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第1回 ‟シューティングゲームのプログラム„
【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第1回 ‟シューティングゲームのプログラム„
小さく始める Docker container の deploy
小さく始める Docker container の deploy
2008.10.18 L4u Tech Talk
2008.10.18 L4u Tech Talk
Recently uploaded
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
taisei2219
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
Toru Tamaki
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
Toru Tamaki
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
Hiroki Ichikura
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
Ryo Sasaki
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Yuma Ohgami
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
iPride Co., Ltd.
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
Toru Tamaki
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
sugiuralab
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
danielhu54
Recently uploaded
(10)
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
Tremaとtrema edgeの違い
1.
意外に違う Trema と Trema-Edge oshiba
2.
自己紹介 PythonとRubyが好きで、 色々遊んでます! フレームワークをあれこれ触って楽しん でます。 会社でOpenFlowスイッチ扱ってます。
3.
今日お話しする内容 TremaEdgeを使ってみて分かった、 Tremaとの違いどころを色々と書きます。 Pio試したり、Sinatra試したりすると中々手ごわいこと (ズバリ書くと不具合)があったため、その辺りを重点的に。 ※ 今後修正されると思うので、そのときにはこの資料は 意味をなさないね! (2014年2月17日で作りました)
4.
What is TremaEdge
? Trema TremaEdge OF v1.0 対応 OF v1.3 対応 要するにTremaのOF1.3用 フレームワークです
5.
ちなみに。。。 OF v1.3になったことによる変更点は、 あんまり解説しません。 マスタリングTCP/IPのOpenFlowとか読んでね! 解説しない理由: めんどくさいから(変更点多すぎ) ※
混乱しそうな場所だけほんのちょっと触れるかも ※ あと、Ruby2.0になったことによる違いも触れないです
6.
まず、起動するだけ class TestController <
Controller def start puts “ Hello Trema! ” end end 何も変化無し。
7.
ハンドラ定義 ※ ハンドラ名はものによって変わってる OpenFlowメッセージが変わったの で def packet_in
dpid, message end def port_status dpid, message end def port_desc_multipart_reply dpid, message end def packet_in dpid, message end ポート情報一覧の 取得用 ※FeaturesRequest/Re plyで受け取れなくなっ た情報 今まで通りメソッドを定義。
8.
タイマ定義とかメッセージ送信 とか # タイマ定義 add_timer_event :discover_neighbor,
5, :periodic # フロー追加 send_flow_mod_add( dpid, options) #メッセージ送信 send_message dpid, PortMultipartRequest.new 基本、今まで通り。 ※ フロー追加はoptionについて変更 有(instructionとか)
9.
ここから変更点とか問題点とか ・ ・ ・ ・ ・ ・ PacketInのときのパケット情報取得 PortStatusのポート情報受け取り PacketOutでデータのみのパケット出力 色々な便利メソッドの有無 Sinatraと連携 Trema::Pioと連携
10.
PacketInのときのパケット情報取得 マッチ条件の名前がベース eth_dst、eth_src、ipv4_dst とか https://github.com/trema/tremaedge/blob/develop/ruby/trema/match.rb をチェック!
11.
PortStatusのポート情報受け取り Trema def port_status dpid,
message message.phy_port.port_no end TremaEdge def port_status dpid, message phy_port message.port_no がない end 理由:TremaEdgeでは、 PortStatusがPortクラスを継承する形で作られている
12.
PacketOutでデータのみのパケット出力 # PacketInベースのリアクティブな処理 send_packet_out( dpid, :packet_in
=> packet_in, :actions => SendOutPort.new( OFPP_ALL ) # バイナリデータを渡す形の処理 send_packet_out( dpid, :data => packet, :buffer_id => OFP_NO_BUFFER, :actions => SendOutPort.new( OFPP_ALL ) ) ) An Ethernet frame must be provided if buffer_id is equal to 0xffffffff データを渡してもNG…
13.
PacketOutでデータのみのパケット出力 VALUE r_opt_message =
HASH_REF( options, packet_in ); ~中略~ if ( buffer_id == OFP_NO_BUFFER && !NIL_P( r_opt_message ) ) { ~中略~ else { packet_out = create_packet_out( get_transaction_id(), :packet_inオプションが指定さ buffer_id, れていないと、ちゃんと動く in_port, ようになっていない。 actions, NULL ); } 一部改変が必要
14.
PacketOutでデータのみのパケット出力 ~改変例~ VALUE r_opt_message =
HASH_REF( options, packet_in ); VALUE r_opt_data = HASH_REF( options, data ); //データオプション追加 ~中略~ if ( !NIL_P( r_opt_message ) ) { ~中略~ else if( !NIL_P(r_opt_data) ){ //データオプション追加 data = r_array_to_buffer( r_opt_data ); dataに対するfree自体は既に処理 があるため、追記はしない } ~中略~ if ( buffer_id == OFP_NO_BUFFER && //条件を1つ追加 ( !NIL_P( r_opt_message ) || !NIL_P(r_opt_data) )) { ~中略~ else { :dataのオプション指定があった場合を想定 ~中略~
15.
PacketOutでデータのみのパケット出力 これだけではNG! send_packet_out( dpid, # :data =>
packet, :data => packet.unpack(“C*”), :buffer_id => OFP_NO_BUFFER, :actions => SendOutPort.new( OFPP_ALL ) Arrayで渡さないといけないので、 unpackをする必要がある )
16.
Sinatraと連携 普通に使うと以下のようなメッセージが出 てしまい、Sinatraが動かない。。。 「Logger」に問題がありそう? クラスじゃないというメッセー ジが出てる。
17.
Sinatraと連携 Sinatra のLoggerクラスと TremaのLoggerモジュールがバッティングしてる。 Sinatra Trema-Edge Logger クラス 競合 Logger モジュール Tremaだと、「DefaultLogger」だったのでOKだった。。。
18.
Sinatraと連携(回避策) Loggerモジュールの名前を変えてあげる。 # logger.cについて(145行目) mLogger =
rb_define_module_under( mTrema, "TremaLogger" ); # logger.rbについて(20行目) module TremaLogger # controller.rbについて(33行目) include TremaLogger
19.
Sinatraと連携(変更後) エラーは出ない。ルートを書けば問題なく動作 少なくとも、GET、POST、DELETEは動作
20.
Trema::Pioと連携 require "pio" class TestPacket
< Controller def start puts "start" end end require しただけでエラー 動かない。。。 error: field '[:octets, {:type=>:uint8, :initial_length=>6}]' is an illegal fieldname in Pio::Type::MacAddress
21.
Trema::Pioと連携 どうやら、Trema-Edgeの問題。。。 # Trema-Edgeで動かした場合 class Fuga end p
Fuga.superclass p Fuga.superclass.respond_to? "string" p Fuga.superclass.respond_to? “array" Object true true Objectクラスに対して、stringやarrayがクラスメソッ ドとして存在してしまっている。
22.
Trema::Pioと連携 この”string”や”array”が、bindataを使ったPioのソースにお ける、arrayやstringの宣言的な箇所で問題を起こしている。 こういう箇所で問題になる
23.
Trema::Pioと連携(回避策) arrayとかstringが使えないので、とりあえずPio側を書き換え。 pio_arrayとかpio_stringにする。 class PioString <
Bindata::String end class PioArray < Bindata::Array end こんな感じの宣言箇所を arrayから、pio_arrayに変更 stringから、pio_stringに変更 sugyoさんからもっとよさそうな回避策も出てました。 でも試してないからここでは書くのをやめました。
24.
色々な便利メソッドの有無 message-helperに今後は纏められる? (sugyoさんがissueあげてた) でも、今はまだ、ほとんどない。。。 send_flow_mod_add、 send_group_mod_addぐら いしかない。。。
25.
色々な便利メソッドの有無 残念ながら以下みたいなのは自分で定義する必要あり ・ send_flow_mod_delete ・ Portクラスの
port.up? もしくは port.down? def up? if(self.state | 1 == 0) return true end return false end def down? return (not self.up?) end Portクラスに 追加する def send_flow_mod_delete datapath_id, options options[ :command ] = OFPFC_DELETE options[ :table_id ] = OFPTT_ALL if options[ :table_id ].nil? options[ :match ] = Match.new if options[ :match ].nil? options[ :cookie ] =0 if options[ :cookie ].nil? options[ :cookie_mask ] = 0 if options[ :cookie_mask ].nil? options[ :out_port ] = OFPP_ANY if options[ :out_port ].nil? options[ :out_group ] = OFPG_ANY if options[ :out_group ].nil? send_flow_mod datapath_id, options end message-helperに追加するなど
26.
Statsメッセージについて Multipartメッセージになったことにより、 名前が変わっているので注意。 # PortStatsを取る場合 send_message dpid,
PortMultipartRequest.new # GroupStatsを取る場合 send_message dpid, GroupDescMultipartRequest.new # FlowStatsを取る場合 send_message dpid, FlowMultipartRequest.new( cookie: 0x0 ) def flow_multipart_reply dpid, message # FlowStatsのハンドラ end def group_desc_multipart_reply dpid, message # GroupStatsのハンドラ end def port_multipart_reply dpid, message # PortStatsのハンドラ end
27.
最後に注意事項(OF 1.3関連) FeaturesReplyにはポート情報は入ってない (PortMultipartRequest/Replyが必要になります) フローエントリにはInstructionsというものが増えてる フローの削除でクッキー番号の指定とout_groupの指定を考えてあげる 必要がある PacketIn用のフローを入れないと、PacketInしない ポート番号以外に、物理ポート番号とかあるから気をつけて OFPP_NONEとかなくなった アクションについてset_fieldとかpush/pop tagとか色々細かくなったか ら気をつけて アクションは即時実行(APPLY_ACTION)とパイプライン終了後に 実行するWRITE_ACTIONがある WRITE_ACTIONには実行順序が決められている APPLY_ACTIONは、今まで通りセットした順番どおりに実行される
28.
以上です! 有難うございました。 oshiba
Download now