[[labs.beatcraft.com]]

#contents

** OpenFlow とは? [#q44a214d]
OpenFlow とは、ネットワークをその構成要素から分離し抽象化して再構成する~
SDN (Software Defined Network)を実現する技術の一つです。~
ネットワークを抽象化することでネットワーク全体がプログラムの対象となり、~
集中管理、構成の自動変更、最適化といったことをプログラミンで行うことが可能になります。~
~
OpenFlow はOpenFlowスイッチとOpenFlowコントローラーから構成されます。~
OpenFlowスイッチはフローテーブルに従ってパケットを転送し、~
フローテーブルにないパケットが来た場合はOpenFlowコントローラーに処理方法を問い合わせます。~
OpenFlowコントローラーは経路計算をしたり、パケットの扱いのルールをフローテーブルの書き込むことで~
OpenFlowスイッチに動作の指示をしたりしてネットワークを管理します。~
OpenFlowコントローラーからの指示によってOpenFlowスイッチは~
スイッチにもルーターにもロードバランサーにもなります。~
~
*** OpenFlowの標準化 [#d74f3c46]
このスイッチとコントローラー間の通信仕様はOpenFlowプロトコルとして標準化されています。~
OpenFlow 1.1 まではスタンフォード大学の研究チームを中心にしたOpenFlowスイッチングコンソーシアムによって策定され~
http://www.openflow.org/wp/documents/~
で公開されていましたが、~
現在は Open Networking Foundation という組織で仕様が策定されています。~
2013年3月末現在 1.3.1 まで仕様が出ています。~
https://www.opennetworking.org/sdn-resources/onf-specifications/openflow~
~
OpenFlow は同じ version のプロトコルに対応したスイッチとコントローラーの間でしか~
通信を行うことはできません。~
~
OpenFlow対応スイッチの製品の多くは1.0や1.1までの対応だったのですが、~
最近になって急速に 1.3.1 への対応が進んできています。~
~
Version ごとの特徴は以下のようになっています。~
-1.0~
2010年1月~
キャンパスネットワークやデータセンターを意識したプロトコル~
~
-1.1~
2011年2月~
広域ネットワークを意識した機能拡張~
複数フローテーブル~
~
-1.2~
2011年12月~
IPv6対応~
拡張マッチング記述方式 TLV 導入~
複数コントローラー対応~
~
-1.3~
2012年3月~
制御プレーンのIPv6対応~
データセンター内VPNでのトンネリング対応~
プロバイダバックボーン間ブリッジ~
QoS対応~
など~

** スイッチとコントローラー [#q66fad8d]
OpenFlowスイッチにはソフトウェアによる実装と機器ベンダーによる装置としての実装があります。~
OpenFlowコントローラーはスイッチを制御するコントローラーのルールをどの言語で書けるかによって~
それぞれ以下のような実装があります。

*** OpenFlow Switch [#jececf81]
-OpenFlow リファレンス実装~
http://www.openflow.org/wk/index.php/OpenFlow_Releases~
仕様策定のため作成されたユーザー空間で動作するリファレンスの実装で OpenFlow 1.0、1.1 に対応。~
以下の要素から構成されます。 ~
--ofdatapath~
ユーザー空間上に実装されたフローテーブル
--ofprotocol~
リファレンス実装スイッチのセキュアチャンネル通信用部分
--dpctl~
リファレンス実装スイッチの設定コマンド
~
-Open vSwitch~
http://www.openvswitch.org/
オープンソースのソフトウェア仮想スイッチ。~
様々な仮想化プラットフォームで使用されており、また様々な管理用インタフェースに対応しています。~
Linux 2.6.18 以降対応で 3.3 からは Linux kernel に同梱されています。~
設定によってOpenFlowスイッチとしても動作します。OpenFlow 1.0 仕様ベース。~
~
装置としての実装には~
NEC Univerge PF5240、PF5820、IBM G8264 switch、HP Procurve 5400zl シリーズ、6600 シリーズ、~
pica8 Pronto 3290、3780、といったものがあります。~

*** OpenFlow Controller [#ucf71eb3]
-Beacon~
https://openflow.stanford.edu/display/Beacon/Home~
スタンフォード大のJavaベースOpenFlowコントローラー。~
OpenFlow 1.0 対応。~
~
-Floodlight~
http://floodlight.openflowhub.org/~
big switch networkのJavaベースOpenFlowコントローラー。~
Vesion 0.90 は OpenFlow 1.0 に対応。次のリリースで OpenFlow 1.2/1.3 に対応。~
~
-NOX~
http://www.noxrepo.org/nox/about-nox/~
スタンフォード大とNicira NetworkがOpenFlow仕様策定と並行して作成しオープンソース化したC++ベースのOpenFlow コントローラー。~
OpenFlow 1.0 対応。~
2012年中ごろからあまりメンテナンスされていない。
OpenFlow 1.1 に対応した nox11oflib など様々な派生versionが存在する。~
古いversionのNOXはC++/Pythonベースで~
NOX classicにリネームされた。~
http://www.noxrepo.org/nox/versions-downloads/~
~
-POX~
http://www.noxrepo.org/pox/about-pox/~
POXから派生したPythonベースのOpenFlowコントローラー。
OpenFlow 1.0 対応。~
~
-Trema~
http://trema.github.com/trema/~
CとRubyベースのOpenFlow コントローラー。~
OpenFlow 1.0 対応。OpenFlow 1.3 対応の trema-edge ブランチも存在する。~
https://github.com/trema/trema-edge~
~
-Ryu~
http://osrg.github.com/ryu/~
NTTラボラトリーOpen Source Software Computing GroupのPythonベースOpenFlowコントローラー。~
OpenFlow 1.0、1.2、1.3 に対応。~
~

** OpenFlow を試してみる。 [#pcdad6b6]
OpenFlow はどんなものなのか、上に挙げたスイッチとコントローラーの組み合わせを実際に動作させて試してみます。~

*** mininet [#n9c73506]
minninet は一つの Linux 環境上にOpenFlow スイッチ、OpenFlow コントローラー、スイッチに接続するホスト~
から成る仮想ネットワークを構築して OpenFlow の開発やテストを行うことができる環境です。~
[[OpenFlow/mininet]]を参照してください。 ~

*** OpenFlow Tutorial [#sb27180a]
OpenFlow Tutorialを参照し、OpenFlowの各動作を確認しています。~
http://www.openflow.org/wk/index.php/OpenFlow_Tutorial ~
~
[[OpenFlow/OpenFlow Tutorial 1]] ~
[[OpenFlow/OpenFlow Tutorial 2]] ~
を参照してください。~

*** Open vSwitch_x86 [#hf933ed0]
mininet環境を導入したLinux PC2台を使用してOpenFlow コントローラ、OpenFlowスイッチを各々作成、~
OpenFlow Tutorial 1,2で行った動作確認をしています。~
OpenFlow スイッチはOpen vSwitchをベースに設定しています。~
~
[[OpenFlow/OpenvSwitch_x86]] を参照してください。~

*** Open vSwitch_bc10 [#y48254ef]
bc10上で、Open vSwitchを使ってOpenFlowスイッチを設定します~
bc10上で、Open vSwitchを使ってOpenFlowスイッチを設定します。~
mininetでのOpenFlowコントローラは、Linux PCで行います。~
OpenFlow Tutorial 1、2で行った動作か確認を行います。~
~
[[OpenFlow/Open vSwitch_bc10]]を参照して下さい。~

* 更新履歴 [#t754fa1f]
2013/08/29 [[OpenFlow/Open vSwitch_bc10]]を追加


BC::labsへの質問は、bc9-dev @ googlegroups.com までお願い致します。
トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   最終更新のRSS