OpenFlow 関連の資料や作業記録など。
目次:
ざっと文献なりを追ってサーベイしたものを幾つか公開しておく。 誰かの参考になれば。
OpenFlow のハードウェアスイッチはフローエントリの内容次第で極端に大きな転送遅延が生じたり、極端に低いスループットしか出せない事態に陥る。これを見逃すことは運用時の大きな障害につながりかねないが、しかし多様なマッチパターンとインストラクションによって発生する遅延について網羅的に把握することは困難であるし,各サイトで必要な組み合わせに絞って自己検証しようにも高精度な遅延計測装置は一般に高価である。
そこでFPGAを用いた遅延計測装置の開発・試作を行っている。
現在のものは10Gbps環境において8ns単位で遅延計測が可能である。
実際にやってみるとコントローラ開発はとても大変で、とても原始的だった。 この状況を改善するために開発支援ツールを提案している。 普及させたく、協力者募集中。
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 つき振り分けスイッチ」を参照)
(2011.7.27)
Arista には TUN/TAP があるので、ovs-openflowd が userspace mode で正しく機能するのではないか?と考えて試してみた。
結果は不成功。 あまりちゃんとはやっていないが、どうもスイッチポートにはうまく TAP できない模様。 パケットが取れない以外の点は全て機能しているので、もう少し調べれば原因がはっきりするか、あるいはできるかもしれない。 とりあえずこの状態で一旦停止。(2011.7.26)
と、書いていたが成功した。以下にまとめてある。
(2011.7.29)
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 を載せたときの作業記録を出しておく。
誰かの役に立つかも知れないので。
(2012.3.22)