labs.beatcraft.com

OpenFlow とは?

OpenFlow とは、ネットワークをその構成要素から分離し抽象化して再構成する
SDN (Software Defined Network)を実現する技術の一つです。
ネットワークを抽象化することでネットワーク全体がプログラムの対象となり、
集中管理、構成の自動変更、最適化といったことをプログラミンで行うことが可能になります。

OpenFlowOpenFlowスイッチとOpenFlowコントローラーから構成されます。
OpenFlowスイッチはフローテーブルに従ってパケットを転送し、
フローテーブルにないパケットが来た場合はOpenFlowコントローラーに処理方法を問い合わせます。
OpenFlowコントローラーは経路計算をしたり、パケットの扱いのルールをフローテーブルの書き込むことで
OpenFlowスイッチに動作の指示をしたりしてネットワークを管理します。
OpenFlowコントローラーからの指示によってOpenFlowスイッチは
スイッチにもルーターにもロードバランサーにもなります。

OpenFlowの標準化

このスイッチとコントローラー間の通信仕様は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対応
    など

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

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

OpenFlow Switch

  • 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

OpenFlow を試してみる。

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

mininet

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

OpenFlow Tutorial

OpenFlow Tutorialを参照し、OpenFlowの各動作を確認しています。
http://www.openflow.org/wk/index.php/OpenFlow_Tutorial 

OpenFlow/OpenFlow Tutorial 1
OpenFlow/OpenFlow Tutorial 2
を参照してください。

Open vSwitch_x86

mininet環境を導入したLinux PC2台を使用してOpenFlow コントローラ、OpenFlowスイッチを各々作成、
OpenFlow Tutorial 1,2で行った動作確認をしています。
OpenFlow スイッチはOpen vSwitchをベースに設定しています。

OpenFlow/OpenvSwitch_x86 を参照してください。

Open vSwitch_bc10

bc10上で、Open vSwitchを使ってOpenFlowスイッチを設定します。
mininetでのOpenFlowコントローラは、Linux PCで行います。
OpenFlow Tutorial 1、2で行った動作か確認を行います。

OpenFlow/Open vSwitch_bc10を参照して下さい。

更新履歴

2013/08/29 OpenFlow/Open vSwitch_bc10を追加


BC::labsへの質問は、bc9-dev @ googlegroups.com までお願い致します。
トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   最終更新のRSS
Last-modified: 2013-08-29 (木) 15:21:16 (1451d)