« OpenFlow性能測定 (第3弾) | トップページ | PLANEX MZK-WNH と MZK-W300NH2 用 OpenWrt 12.09 ファームウェア(Attitude Adjustment, r35864)をアップロードしました »

2013年3月 2日 (土)

【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」カテゴリの記事

TremaでOpenFlowプログラミング」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/1776113/49762857

この記事へのトラックバック一覧です: 【TremaでOpenFlowプログラミング】マッチングルール早見表:

« OpenFlow性能測定 (第3弾) | トップページ | PLANEX MZK-WNH と MZK-W300NH2 用 OpenWrt 12.09 ファームウェア(Attitude Adjustment, r35864)をアップロードしました »

最近のトラックバック

無料ブログはココログ