現在位置: ホーム / ブログ / OpenFlowコントローラとスイッチ

OpenFlowコントローラとスイッチ

この記事では、SDN (Software Defined Networking) 技術であるOpenFlowのオープンソースのコントローラとハードウェア・ソフトウェアスイッチを紹介します。
NECOMAプロジェクトの岡田です。


今回はSDN(Software Defined Networking) 技術の一つであるOpenFlowを使ったプログラム作成についてお話します。OpenFlowは、データプレーンとコントロールプレーンを分離し、コン トロールプレーンをコントローラと呼ばれる外部(スイッチから見て)プログラムで制御します。NECOMAプロジェクトでは、このOpenFlowを始め とするSDN技術を利用して、各種サイバー攻撃の防御・緩和方法を研究開発しています。


OpenFlowの仕様は、ONF (Open Networking Foundation) によって仕様策定が行われています。ONFには、スイッチベンダはもちろん学術団体、通信事業者などが参画しています。現在までにONFにより、 OpenFlow1.0, OpenFlow1.2, OpenFlow1.3 の仕様が策定されています。(一部マイナーバージョンもあります)仕様はすべてWeb上に公開されていますので、ONFの仕様一覧ページからご確認ください。

  • OpenFlow 仕様一覧 (URL)


このOpenFlowの仕様に準拠したスイッチも既にNEC, Brocade, Pica8, IBM, Dell といった各種スイッチベンダから販売されています。また、ハードウェアスイッチに限らずソフトウェアスイッチであるOpenvSwitchもOpenFlowに対応しています。Open vSwitchは、Linux上で動作するソフトウェアスイッチであるため、専用の高価なハードウェアがなくてもVirutal Machine上のLinuxでvSwitchをインストールするだけで、OpenFlowの検証環境が手に入ります。
Open vSwitch : http://openvswitch.org/

Open vSwitchでは、OpenFlowコントローラからフローエントリを追加する以外に、シェル上でovs-ofctlコマンドを用いてフローエントリの確認、フローエントリの追加が可能です。このコマンドは、実際にコントローラプログラムを実装する前にフローエントリの動作検証をする際に役立ちます。
ovs-ofctl : http://openvswitch.org/cgi-bin/ovsman.cgi?page=utilities%2Fovs-ofctl.8

OpenFlowのコントローラは、商用以外にもオープンソースで活発に開発が進められています。下記に主要なOpenFlowコントローラを列挙しておきます。それぞれ、コントローラの実装に用いられているプログラミング言語やOpenFlow仕様への対応状況、OpenFlowスイッチとコントローラの相性が異なります。ちなみに、筆者は、Ryu3.9とOpen vSwitch、NECのPFシリーズ、PICA8を用いて開発を行っています。


コントローラ
- Trema : Ruby/C
- Ryu : Python
- NOX : C++
- Floodlight : Java
- OpenDaylight : Java

次回は、簡単なOpenFlowコントローラの実装例としてRyuとOpen vSwitchを利用したVLAN変換コントローラの実装をご紹介します。

タグ: