OpenFlow 開発関連資料

OpenFlow 関連の資料や作業記録など。


目次:


技術調査・ノート

ざっと文献なりを追ってサーベイしたものを幾つか公開しておく。 誰かの参考になれば。

MidoNet に関する調査
ミドクラの MidoNet は OpenFlow とは異なる志向で設計されている、とは感じられるのだけれど、そのアーキテクチャについては余り情報が出ていない模様。 ざっと調べてみた。
(2013.3.27)

遅延計測ツールの設計と試作

OpenFlow のハードウェアスイッチはフローエントリの内容次第で極端に大きな転送遅延が生じたり、極端に低いスループットしか出せない事態に陥る。これを見逃すことは運用時の大きな障害につながりかねないが、しかし多様なマッチパターンとインストラクションによって発生する遅延について網羅的に把握することは困難であるし,各サイトで必要な組み合わせに絞って自己検証しようにも高精度な遅延計測装置は一般に高価である。
そこでFPGAを用いた遅延計測装置の開発・試作を行っている。 現在のものは10Gbps環境において8ns単位で遅延計測が可能である。

研究発表
FPGA によるOpenFlow スイッチ遅延計測器の開発
[
概要 (PDF) ] [ 典型的な計測結果 (PDF) ]
第30回インターネットと運用技術研究発表会 (2015/7/2-3) [ プログラム ]

コントローラ開発支援ツールの設計と試作

実際にやってみるとコントローラ開発はとても大変で、とても原始的だった。 この状況を改善するために開発支援ツールを提案している。 普及させたく、協力者募集中。

研究発表
OpenFlow コントローラ開発支援ツールの提案 〜ロジックおよびフロー識別ラベルの導入〜
[
予稿 ] [ スライド (PDF) (発表時より若干の加筆・修正あり)]
[ スライド (Slideshare) (English ver.) ]
概要
OpenFlowコントローラ開発における問題のひとつに,開発者はコントーラ・プログラムの各コード部分がパケット処理に対して及ぼす作用について直接的に確認する手段をもたないことがある.本稿ではこの問題を改善する手段として,フローエントリの内容決定に関与したコード部分を特定する手法と,注目するコードが影響を与えたフローを追跡する手法を提案する.また提案手法に基づくコントローラ開発支援ツールについて,その概要を設計する.
第16回インターネットと運用技術研究発表会 (2012/3/15-16) [ プログラム ]
(2012.3.22 updated)
 
追記
Hop by Hop 専用に見えるという指摘をいただきました。 論文やスライドの例示が Hop by Hop のみで書かれているためと思いますが、Overlay 方式のコントローラ開発でも必要性は同じで、かつ Overlay 方式でも同様に機能するものです。
(2012.6.20 updated)
提案書あるいはチラシのようなもの
簡単に概要を説明するために一ページのものを作ってみた。 [ PDF ]
(2012.4.16 updated)


環境構築とカスタムスイッチの試作

2011.7 に短期間で一通りの作業をしたときに英語のものも含めてチュートリアル的な資料が少なかったので作業記録を出しておく。誰かの役に立つかも知れない。

計画概要

NOX + Open vSwitch を用いて OpenFlow 環境を構築し、幾らか特殊なフロー設定を行うスイッチプログラムを試作する。 うまく行けば Arista に適用してみたい、という目論見もあってカーネルモジュールを用いず、userspace で動作させるようにセットアップしたが、userspace での動作は性能面以外にも機能的な制限があると Open vSwitch のドキュメントにもあり、恐らくバギーであろうから一般には勧められない。

ゴールは二台の PC を使って下図のような環境を作成することである。 コントローラには NOX (0.9.0(zaku)~full~beta) 、スイッチには Open vSwitch (1.1.1) を利用し、二台のスイッチを二本の線で接続し、一方に HTTP アクセスを通し、もう一方には HTTP 以外のトラフィックを通す、というもの。 通常のスイッチ構成ではループとなるが、OpenFlow ではそもそもトポロジがツリーでなくて良い、という良くある宣伝文句を地でやってみようという計画。

また、最終的にはトラフィックの可視化をしたいので、そのためにフローエントリに記録される Cookie を独自の値に設定することも行う。(「Cookie つき振り分けスイッチ」を参照)

作業記録

  1. Open vSwitch インストール [ HTML ] (2011.7.18)
  2. NOX インストール [ HTML ] (2011.7.19)
  3. カスタムコントローラ登録 [ HTML ] (2011.7.20)
  4. フロー識別テスト [ HTML ] (2011.7.22)
  5. 振り分けスイッチ試作 [ HTML ] (2011.7.25)
  6. Cookie 記入拡張 [ HTML ] (2011.7.21)
  7. Cookie つき振り分けスイッチ [ HTML ] (2011.7.26)

(2011.7.27)



Arista への Open vSwitch / openflowd の移植

Arista には TUN/TAP があるので、ovs-openflowd が userspace mode で正しく機能するのではないか?と考えて試してみた。

結果は不成功。 あまりちゃんとはやっていないが、どうもスイッチポートにはうまく TAP できない模様。 パケットが取れない以外の点は全て機能しているので、もう少し調べれば原因がはっきりするか、あるいはできるかもしれない。 とりあえずこの状態で一旦停止。(2011.7.26)

と、書いていたが成功した。以下にまとめてある。

OpenFlow 実験 ( by Open vSwitch userspace mode )
性能が出ない userspace モードを使って OpenFlow スイッチを実現した報告

(2011.7.29)



小型多ポートPC での Open vSwitch セットアップ

OpenFlow 対応ハードウェアスイッチが高価なものしかない現状では、Open vSwitch を PC に載せて実験することが一般的である。 そこでの一つの難点が多ポート構成が作りにくいことにある。 Quad port の NIC はそれなりの価格がするし、せいぜい 4 ポート程度しか使えない。
Axiomtek の小型多ポートPC NA-812A は Gigabit Ethernet インタフェイスを 6 つ備えており、小型、低消費電力である。 価格的にも最廉価な PC に Quad port Gigabit NIC を入れた場合と変わらない。 通常の PC ではメンテナンス用にどうしてもディスプレイとキーボードの接続環境を維持する必要があるが、NA-812A は一旦設定すれば boot 時以降、またBIOS の設定もシリアルコンソールによって操作利用可能である。 能力的にも iperf による試験で、TCP, 長大パケットとは言え 940Mbps を安定して出しており、CPU 負荷も低く良好な結果が得られた。
2012.3 にこの機体に Open vSwitch 1.4 を載せたときの作業記録を出しておく。 誰かの役に立つかも知れないので。

作業記録

  1. OS インストール [ HTML ] (2012.3.22)
  2. Open vSwitch インストール [ HTML ] (2012.3.22)
  3. 動作確認・能力試験 [ HTML ] (2012.3.22)

(2012.3.22)



Yutaka Yasuda (yasuda [ at ] ylb.jp)
77149@guoguo0525.net
xg77149@guoguo0525.net