ハードなOpenFlowSwitchの話
2016.07.02
三宅 正行
Acroquest Technology Co., Ltd.
自己紹介
 名前:三宅 正行
 所属:Acroquest Technology Co., Ltd.
 昔はネットワーク管理システムとかを開発していまし
た
 最近はElasticスタックの導入支援とかはじめています
 最近の私のお仕事傾向
 OpenStack(Ironicとかやってました…)
 OpenDaylight(Tremaでなくてごめんなさい…)
 背景
 マルチテーブルが使えない?
 Actionの順序が入れ替わる?
 まとめ
目次
 国立情報学研究所(NII)のクラウド群連成基盤
サービスの検証システムのネットワーク制御を、
OpenFlow(1.3)を使用して実現しました。
 今回は、そのネットワーク制御用OpenFlowコント
ローラを開発した際に、ハードウェアスイッチ固
有の問題で苦労した話をします。
 今回の対象となるOpenFlowSwitchは、Pica8のP-
3930です。
 コントローラにはOpenDaylight(Litiume)を使っ
ています…
背景
マルチテーブルが使えない?
罠その1…orz
やろうとしたこと…
マルチテーブルを使ったネットワーク分離
Table0 Table1
Table2
Flow Entry01
Flow Entry02
Flow Entry A
Flow Entry B
Flow Entry C
Flow Entry D
Flow Entry03
Flow Entry04
セグメント1
セグメント2
Flow Entry Drop
Flow Entry Drop
Goto1
OVSで動作検証した時は
うまくいっていました…
が…
Pica8ではパケットが通らないケースが
…
Table0 Table1
Table2
Flow Entry01
Flow Entry02
Flow Entry A
Flow Entry B
Flow Entry C
Flow Entry D
Flow Entry03
Flow Entry04
Goto1? セグメント1
セグメント2
Flow Entry Drop
Flow Entry Drop
???
原因は、内部で複数のテーブルが
1つのテーブルにマージされていたこ
と…
Tableマージの際
プライオリティ
が
再計算される
Flow Entry01 Flow Entry A
Flow Entry02
Flow Entry B
Flow Entry01 Flow Entry B
Flow Entry A
Flow Entry02
Flow Entry03
Flow Entry03 Flow Entry C
Flow Entry D
Flow Entry03 Flow Entry Drop
Flow Entry01 Flow Entry Drop
Flow Entry DropFlow Entry02
DROPの
フローエントリが
先に
マッチする条件に
なってしまってい
た
1つのテーブルにマージする理由
…
1つのTCAMでマッチ処理を行うため、
マルチテーブルが実現できない…
TCAM
ASIC
Action
Table 0 Table n ひとつのテーブル
に
マージして
TCAMにセット
Match
Actionの順序が入れ替わる?
罠その2…orz
やろうとしたこと…
VLAN変換とブロードキャスト
Pica8
Uplink
VLAN=2000
Port:0 Port:1 Port:2
Port:3
VLAN=100
VLAN=100 VLAN=100
VLAN IDを変換し
て
Uplinkに出力
Actionのオーダーを使えば楽勝
…
Order Action
0 OUT PORT:1
1 OUT PORT:2
2 POP VLAN
3 PUSH VLAN ID=2000
4 OUT PORT:3
こんな感じ…
の、はずだったのに…
なぜか全てのポートのVLAN IDが2000に...
Pica8
Uplink
VLAN=2000
Port:0 Port:1 Port:2
Port:3
VLAN=100
VLAN=2000 VLAN=2000
変換前のActionで
出力したはずなのに
原因はASICモジュール構成の制
限
Pica8のASICモジュールは、VLAN処理用と
フロー制御用が分かれているため、
先にVLAN変換が行われる…
フロー制御
モジュール
VLANタグ付与
モジュール
フローエントリ
VLAN タグ追加
アクションを登録
OUT PORTアクショ
ンを登録
PORT:1
PORT:2
PORT:3
VLAN タグを
2000に変換
まとめ...
ハードを使うときは実機で検証しよう
•ハードの仕組み上、OpenFlowの仕様を実現でき
ない、または制限があるので、必ず実機で事前に
検証しよう…
OVSとの仕様のギャップは深い…
•OVSで動作したフローエントリは、ハードの
OpenFlowSwitchでは、ほぼ動作しないと思った方
がいい…orz
今回の教訓
OF対応状況がわかる資料を公開してほしい
•OF対応という以上、メーカーの責任でサポートし
ている仕様の対応表を、購入前に確認できるよう
公開してほしい…
OVSとの仕様の対応表を出してほしい
•OF仕様のリファレンスとなっている(と思われ
る)OVSとの仕様の対応表を出してもらえるとと
ても助かる…
ハードスイッチメーカーへのお
願い
おわり

ハードなOpen flowswitcの話