【TremaでOpenFlowプログラミング】マッチングルール早見表
OpenFlow フレームワーク Trema でマッチングルールを書くときに便利なようにまとめました。
しょっちゅう、どこに書いてあるのか探しまわって時間を無駄にしていたのでこれで気分がスッキリしました (^^)。
■使用例
Match.new( :in_port => 1, :dl_dst => "02:00:00:00:00:01")
■マッチングルールの指定項目一覧
Tremaで指定する時の名称 | OpenFlow 1.0.0の Table.3での Field 名 | 簡単な説明 | 使用時の前提条件 |
:in_port | ingress port | パケットの入力ポートをOpenFlowスイッチにおけるポート番号で表した数値(1以上) | |
:dl_src | Ethernet source address | 送信元MACアドレス | |
:dl_dst | Ethernet destination address | 送信先MACアドレス | |
:dl_type | Ethernet type | イーサネットタイプ | |
:dl_vlan | VLAN id | VLAN ID | |
:dl_vlan_pcp | VLAN priority | VLAN PCP フィールド(VLAN 優先度) | |
:nw_src | IP source address | TCP および UDP の送信元 IP アドレス。サブネットマスクの指定も可能。ARP の場合は 送信元プロトコルア ドレス。 | :dl_type に 0x0800(IP) または 0x0806(ARP) を指定。 |
:nw_dst | IP destination address | TCP および UDP の送信先 IP アドレス。サブネットマスクの指定も可能。ARP の場合は ターゲットプロトコ ルアドレス。 | :dl_type に 0x0800(IP) または 0x0806(ARP) を指定。 |
:nw_proto | IP protocol | IP プロトコル番号、あるいは ARP の opcode | :dl_type に 0x0800(IP) または 0x0806(ARP) を指定。 |
:nw_tos | IP ToS bits | IP の ToS フィールド | :dl_type に 0x0800(IP) を指定。 |
:tp_src | Transport source port / ICMP Type | TCP および UDP では送信元ポート番号、ICMP では ICMP タイプ | :dl_type に 0x0800(IP) を指定し、さらに :nw_proto に 1(ICMP), 6(TCP), 17(UDP)のどれかを指定。 |
:tp_dst | Transport destination port / ICMP Code | TCP および UDP では送信先ポート番号、ICMP では ICMP コード | :dl_type に 0x0800(IP) を指定し、さらに :nw_proto に 1(ICMP), 6(TCP), 17(UDP)のどれかを指定。 |
先頭2文字の覚え方
OSI参照モデルの2~4層に対応して覚える。
dl データリンク層(Data Link layer)
nw ネットワーク層(Network layer)
tp トランスポート層(Transport layer)
(参照: wikipedia OSI参照モデル)
■Trema での MAC アドレスの表記
・数値 (例: 0x020000000001)
・":"で区切って、1バイトごとに16進数表記した文字列 (例: "02:00:00:00:00:01")
■Trema での IP アドレスの表記
"."で区切って、1バイトごとに10進数表記した文字列 (例: "192.168.0.1")
■Trema でのネットマスク付き IP アドレスの表記
IPアドレス表記を"/"で区切ってネットマスクを書いた文字列 (例: "192.168.0.0/255.255.255.0")
■参考文献
1) "OpenFlow 1.0.0"(http://www.openflow.org/documents/openflow-spec-v1.0.0.pdf) "Table.3: Field lengths and the way they must be applied to flow entries." (p.4)
2) "OpenFlow 1.0.0" "Figure.3: Flowchart showing how header fields are parsed for matching" (p.8)
3) "OpenFlow 1.0.0" "5.2.3 Flow Match Structure" (p.20)
4) 書籍『OpenFlow実践入門』(初版) "マッチングルール" (p.34)
OpenFlow 1.0 で指定可能な一覧の記載あり
5) 書籍『OpenFlow実践入門』(初版) "マッチングルール" (p.115)
Trema で指定可能な一覧の記載あり
6) 書籍『OpenFlowネットワーク入門』(初版) 表6.10 "Matchクラスのインスタンス化オプションキー" (p.136)
7) Trema::Match クラスのドキュメント
(http://rubydoc.info/github/trema/trema/master/Trema/Match)
« OpenFlow性能測定 (第3弾) | トップページ | PLANEX MZK-WNH と MZK-W300NH2 用 OpenWrt 12.09 ファームウェア(Attitude Adjustment, r35864)をアップロードしました »
「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で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性能測定 (第3弾) | トップページ | PLANEX MZK-WNH と MZK-W300NH2 用 OpenWrt 12.09 ファームウェア(Attitude Adjustment, r35864)をアップロードしました »
コメント