naoki86star

インターネットの片隅でなにかしら書いてみる

floodlight(openflow contoller)のこと

 このごろは、こんどはOpenFlow1.3を使うために、すこし、その準備のための学習というか実験してます。

 自分の仕事では、floodlightというopenflow コントローラが使われてます。すでにopenflowスイッチも1.3モードで稼動もしているのですけども、1.3の機能の活用がいよいよ必要になってきて*1、以下は、自分的にはまだ慣れていないfloodlightについての体験記みたいな感じです。細かいことすべて省略して書き出しておきたいポイントだけ。

  • 使ってるスイッチが実はこのリストにはなく、1.3に変えたら不都合が起きてきた。
  • 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

*1:要するにIPv6も使い出したい

*2:効かないと書いた意味がちょっと複雑で、loxigenの仕様から見ないと進まない

*3:loxigenの出力

*4:でもうちのスイッチは対象外