◆ OpenFlow 1.0.0 メッセージと Trema API(Ruby) との対応表
OpenFlow 1.0.0 メッセージとOpenFlowフレームワーク Trema の Ruby API との対応をまとめてみました。OpenFlow 1.0.0 の仕様を読んでから Trema で実装したいけどどうすればできるんだろう、とよく悩むことがあったので整理しました。
Trema のメソッド名、クラス名の箇所には Trema API のページへのリンクを埋め込んであります。
- メッセージ OFPT_FEATURES_REQUEST / 応答メッセージ OFPT_FEATURES_REPLY
メッセージの大分類: Controller-Switch Message 要求メッセージ送付: メソッド send_message(datapath_id, message) messsage は、クラス FreaturesRequest のインスタンス 応答メッセージ受信: メソッド features_reply(datapath_id, message) message は、 クラス FeatruresReply のインスタンス
- メッセージ OFPT_GET_CONFIG_REQUEST / 応答メッセージ OFPT_GET_CONFIG_REPLY
メッセージの大分類: Controller-Switch Message 要求メッセージ送付: メソッド send_message(datapath_id, message) messsage は、クラス GetConfigRequest のインスタンス 応答メッセージ受信: メソッド get_config_reply(datapath_id, message) messsage は、クラス GetConfigReply のインスタンス
- メッセージ OFPT_SET_CONFIG
メッセージの大分類: Controller-Switch Message メッセージ送付: メソッド send_message(datapath_id, message) messsage は、クラス SetConfig のインスタンス
- メッセージ OFPT_QUEUE_GET_CONFIG_REQUEST / 応答メッセージ OFPT_QUEUE_GET_CONFIG_REPLY
メッセージの大分類: Controller-Switch Message 要求メッセージ送付: メソッド send_message(datapath_id, message) messsage は、クラス QueueGetConfigRequest のインスタンス 応答メッセージ受信: メソッド queue_get_config_reply(datapath_id, message) messsage は、クラス QueueGetConfigReply のインスタンス
- メッセージ OFPT_FLOW_MOD
メッセージの大分類: Controller-Switch Message メッセージのタイプごとにメッセージ送付用のメソッドがある。 □ OFPFC_ADD: メソッド send_flow_mod_add(datapath_id, options = {}) □ OFPFC_MODIFTY および OFPFC_MODIFY_STRICT メソッド send_flow_mod_modify(datapath_id, options = {}) (※) □ OFPFC_DELTE および OFPFC_DELETE_STRICT メソッド send_flow_mod_delete(datapath_id, options = {}) (※) ※ 第2引数のハッシュ options に「:strict => true」を指定することで _STRICT のメッセージのタイプになる。 デフォルトは「:strict => false」
- メッセージ OFPT_PORT_MOD
メッセージの大分類: Controller-Switch Message メッセージ送付: メソッド send_message(datapath_id, message) messsage は、クラス PortMod のインスタンス
- メッセージ OFPT_STATS_REQUEST / 応答メッセージ OFPT_STATS_REPLY
メッセージの大分類: Controller-Switch Message 要求メッセージ送付: メソッド send_message(datapath_id, message) messsage は、要求のタイプに対応するクラス(StatsRequestのサブクラス)のインスタンス: OFPST_DESC DescStatsRequest OFPST_FLOW FlowStatsRequest OFPST_AGGREGATE AggregateStatsRequest OFPST_TABLE TableStatsRequest OFPST_PORT PortStatsRequest OFPST_QUEUE QueueStatsRequest OFPST_VENDOR VendorStatsRequest 応答メッセージ受信: メソッド stats_reply(datapath_id, message) message は、要求のタイプに対応した応答のクラス(StatsReplyのサブクラス)のインスタンス: OFPST_DESC DescStatsReply OFPST_FLOW FlowStatsReply OFPST_AGGREGATE AggregateStatsReply OFPST_TABLE TableStatsReply OFPST_PORT PortStatsReply OFPST_QUEUE QueueStatsReply OFPST_VENDOR VendorStatsReply
- メッセージ OFPT_PACKET_OUT
メッセージの大分類: Controller-Switch Message メッセージ送付: メソッド send_packet_out(datapath_id, options = {})
- メッセージ OFPT_BARRIER_REQUEST / 応答メッセージ OFPT_BARRIER_REPLY
メッセージの大分類: Controller-Switch Message 要求メッセージ送付: メソッド send_message(datapath_id, message) messsage は、クラス BarrierRequest のインスタンス 応答メッセージ受信: メソッド barrier_reply(datapath_id, message) messsage は、クラス BarrierReply のインスタンス
- メッセージ OFPT_PACKET_IN
メッセージの大分類: Asynchronous Message メッセージ受信: メソッド packet_in(datapath_id, message) messsage は、クラス PacketIn のインスタンス
- メッセージ OFPT_FLOW_REMOVED
メッセージの大分類: Asynchronous Message メッセージ受信: メソッド flow_removed(datapath_id, message) messsage は、クラス FlowRemoved のインスタンス
- メッセージ OFPT_PORT_STATUS
メッセージの大分類: Asynchronous Message メッセージ受信: メソッド port_status(datapath_id, message) messsage は、クラス PortStatus のインスタンス
- メッセージ OFPT_ERROR_MSG
メッセージの大分類: Asynchronous Message メッセージ受信: メソッドopenflow_error(datapath_id, message) messsage は、クラス OpenflowError のインスタンス
- メッセージ OFPT_HELLO
メッセージの大分類: Symmetric Message メッセージ送付: メソッド send_message(datapath_id, message) messsage は、クラス Hello のインスタンス。 メッセージ受信: ※ 現時点の Trema では受信方法がないようです。
- メッセージ OFPT_ECHO_REQUEST
メッセージの大分類: Symmetric Message メッセージ送付: メソッド send_message(datapath_id, message) messsage は、クラス EchoRequest のインスタンス。 メッセージ受信: ※ 現時点の Trema では受信方法がないようです。
- メッセージ OFPT_ECHO_REPLY
メッセージの大分類: Symmetric Message メッセージ送付: メソッド send_message(datapath_id, message) messsage は、クラス EchoReply のインスタンス。 メッセージ受信: ※ 現時点の Trema では受信方法がないようです。
- メッセージ OFPT_VENDOR
メッセージの大分類: Symmetric Message メッセージ送付: メソッド send_message(datapath_id, message) messsage は、クラス Vendor のインスタンス。 メッセージ受信: メソッド vendor(datapath_id, message) messsage は、クラス Vendor のインスタンス。
本記事の作成においては、http://rubydoc.info/github/trema/trema/master/file/README.md にて gem version 0.3.19 と表示され、かつ、同ページ下部に「Generated on Wed May 1 04:44:45 2013」と出ているものを参照しています。
今後のエンハンスで変更されるかもしれません。
« ◆ OpenFlow 1.0.0 メッセージ一覧 | トップページ | ◆ Linux のネットワークネームスペース機能と Open vSwitch で仮想ネットワーク(OpenFlowスイッチとTrema) »
「OpenFlow」カテゴリの記事
- ◆ 【Open vSwitchのみで OpenFlowプログラミング】VLAN ID コンバータ 改(2013.08.10)
- ◆ 【Open vSwitchのみで OpenFlowプログラミング】VLAN ID コンバータ(2013.08.05)
- ◆ 【TremaでOpenFlowプログラミング】VLAN ID コンバータ(2013.05.12)
- ◆ Linux のネットワークネームスペース機能と Open vSwitch で仮想ネットワーク(OpenFlowスイッチとTrema)(2013.05.11)
- ◆ OpenFlow 1.0.0 メッセージと Trema API(Ruby) との対応表(2013.05.08)
「Trema」カテゴリの記事
- ◆【改訂】OpenFlow フレームワーク Trema 0.4 のインストール手順【0.4.7対応】(2014.06.11)
- ◆ Trema 0.4.7インストール失敗とバージョン指定インストール(2014.06.08)
- ◆ OpenFlowフレームワーク Trema 0.4 のインストール(2013.10.06)
- ◆ 【TremaでOpenFlowプログラミング】VLAN ID コンバータ(2013.05.12)
- ◆ Linux のネットワークネームスペース機能と Open vSwitch で仮想ネットワーク(OpenFlowスイッチとTrema)(2013.05.11)
「TremaでOpenFlowプログラミング」カテゴリの記事
- ◆ 【TremaでOpenFlowプログラミング】VLAN ID コンバータ(2013.05.12)
- ◆ OpenFlow 1.0.0 メッセージと Trema API(Ruby) との対応表(2013.05.08)
- ネットワークネームスペース機能使用時の Trema 停止エラー軽減方法(2013.03.16)
- 【TremaでOpenFlowプログラミング】マッチングルール早見表(2013.03.02)
- Trema の仮想ネットワーク機能には『OpenFlow実践入門』に書いてない強力な機能がありました。(2013.02.03)
コメント
この記事へのコメントは終了しました。
« ◆ OpenFlow 1.0.0 メッセージ一覧 | トップページ | ◆ Linux のネットワークネームスペース機能と Open vSwitch で仮想ネットワーク(OpenFlowスイッチとTrema) »
send_message datapath_id, QueueStatsRequest.newで
なにも応答帰って来ません、エラーもなしなんでだろ
投稿: R | 2014年6月 5日 (木) 13時16分
send_message datapath_id, QueueStatsRequest.new をしたときのパケットを Wireshark を使ってキャプチャしてみたところ、trema から openflow スイッチ側に何も送信していないことがわかりました。
(たとえばDescStatsRequest でやってみたら送受信が確認できたのでやり方に問題はないはず。)
Trema の仕様なのかバグなのかまでは分かりませんが、たしかにQueueStatsRequest の動きが変ですね。
確認には、OS: Lubuntu 12.10 Desktop (32bit), Trema: 0.4.6 を使いました。
投稿: ranosgrant(ブログ管理人) | 2014年6月 8日 (日) 09時58分