このごろは、こんどはOpenFlow1.3を使うために、すこし、その準備のための学習というか実験してます。
自分の仕事では、floodlightというopenflow コントローラが使われてます。すでにopenflowスイッチも1.3モードで稼動もしているのですけども、1.3の機能の活用がいよいよ必要になってきて*1、以下は、自分的にはまだ慣れていないfloodlightについての体験記みたいな感じです。細かいことすべて省略して書き出しておきたいポイントだけ。
- 使ってるスイッチが実はこのリストにはなく、1.3に変えたら不都合が起きてきた。
- スイッチからのTableFeatureの通知でexperimenterという項目のひとつのsubtypeがコントローラで同意できない、といって起動しない
- ネゴシエーションでやり取りする項目値は、floodlight本体(?)でなくにプロトコル解析部を別にしたopenflowj.jarに入っている。これはfloodlightのプロジェクトの一部
- loxigenの中ではおそらくopenflow_inputに定義すればベンダーを拡張できるようになっている
- 修正試みてみたけど2点解決できなかったこと
- openflowのメッセージ仕様が要求するpaddingを入れているのに効かない*2
- loxigenの最新版とfloodlight本体は同期していないみたく、バンドルjarのバージョン整合が小生には解決不能
- floodlight.jarにbuild時のopenflowj.jar*3のソースも含まれているので、これを修正して再archiveすることはできた。
- ちなみにWiresharkのopenflowプロトコルのOFPMP_TABLE_FEATUREのpropertyの解析部は長さ(length)を読まずに4固定で読んでいってるみたい、なので立ち上げ時のネゴシエーションpcapを呼んだ時ブレークはしない・がエラーになってるsubtype値は見れない(Hexdumpには載ってます)
- floodlight(1.2)/restapi経由でL4マッチ条件のstatic entryを入れようとしたら内部で無限ループに入る(いわゆるハングアップしたように見える)
- こんな簡単なこと誰か文句いっていないのかと思ったらgithubの古いissueに同じような問いがあったけどオーナーさんの気に障ったらしい
- 解析するのにryuというopenflowコントローラが役に立った。こちらのほうがサポートするスイッチの範囲が広くヒントをくれる*4