FAUCET コントローラ: OpenFlowが生き残っている理由
2019年12月19日 木曜日
CONTENTS
Twitterフォロー&条件付きツイートで「バリーくんぬいぐるみ」を抽選で20名にプレゼント!
応募期間は2019/11/29~2019/12/31まで。詳細はこちらをご覧ください。
今すぐツイートするならこちら→ フォローもお忘れなく!
【IIJ 2019 TECHアドベントカレンダー 12/19(木)の記事です】
※本記事は、原文「The controller FAUCET: Why OpenFlow is not dead」の日本語訳です
OpenFlow: Enabling Innovation in Campus Networksの論文が発表されて10年以上が経ちました。OpenFlowはコンピュータネットワークにおいてSDN(Software Defined Networking)のパラダイムシフトの礎となった技術です。
OpenFlowがもたらしたコンピュータネットワーク概念の変化の恩恵を、一度ここで思い出してみましょう。
プログラマビリティ
- イノベーションと差別化を可能にする
- 新機能や新サービスの導入を加速する
インテリジェンスの集中化
- プロビジョニングがシンプルになる
- パフォーマンスが最適化される
- ポリシーを細かく管理できる
抽象化
- ハードウェアとソフトウェア、コントロールプレーンとデータプレーン、そして、物理構成と論理構成の分離
- 完全自動化運用の実現
- マルチベンダーアーキテクチャの実現
完全ネイティブなOpenFlowネットワークの導入があまり進まないのはなぜか?
ハードウェアのイノベーションは時間のかかる段階的なプロセスであり、多大な費用がかかります。したがって、ハードウェアベンダーにとって、実装の簡単なSingle-table OpenFlowを最初の選択肢として採用するのは、特にBroadcom社製のチップセットを採用していたベンダーにとっては自然なことでした。しかし、Single-table OpenFlowの設計はスケーラビリティにおいて大きな問題を抱えていました。OpenFlow標準仕様を策定したONF(The Open Networking Foundation)は、スケーラビリティを大幅に向上させたmulti-tableを策定しましたが、multi-tableへの対応はハードウェベンダーにさらなる負担を強いるものでした。さらに、データプレーン側に関して、Broadcom社が提供するOF-DPAは、真のmulti-table OpenFlow のデータプレーンがもたらす実際の利点を損ねるものでした。ONFは、このmulti-tableサポートを、バージョン1.3において「オプション」に設定しています。ベンダーは自社のスイッチをOpenFlow v1.3対応として発売することができますが、multi-tableを実装する必要はありません。このスケーラビリティを欠いた状況も、すべての仕様を網羅したOpenFlowアーキテクチャへの関心を薄れさせる結果となりました。
さらに、Northbound API(SDNコントローラ制御用API)に関しても、よく知られているOpenFlowコントローラであるONOSやOpenDaylightは、コントローラアプリケーションを開発するにはソフトウェアフレームワークが複雑かつ巨大になりすぎています。これらのコントローラは、実際の運用にすぐに導入できるものではありません。このような大がかりなソフトウェアプロジェクトは、エンタープライズおよびキャンパス・ネットワークオペレータたちを対象にしていないのです。
この隙間を埋めるため、Faucetはソフトウェアの開発なしにすぐに使える、レイヤ2とレイヤ3の機能をあわせ持つ機能セットを提案しています。
Faucet – すぐに使えるコンパクトなmulti-tableコントローラ
FaucetはコンパクトなOpenFlowコントローラであり、簡単にインストール、運用できます。Faucetは、コントローラの仮想化メソッドやデータプレーンのOpenFlowスイッチテーブルを通じて、ネットワーク機能に必要な各種のスイッチングやルーティング機能を実行できます。FaucetはRyu(PythonベースのSDNフレームワーク)上に構築されており、Ryuのイベント呼び出しやパケット処理APIを利用しています。
Faucetは、以下の図で示されているようにmulti-tableパケット処理パイプラインを使っています。単一テーブルの上で複数のフローテーブルを使うことにより、より少ないフロー数を維持しながらより複雑なフローベースのロジックを構築できます。マッチするフィールドの少ない専用のフローテーブルを使ったり、IPv4やIPv6 FIBテーブルなどの完全にマッチするテーブルのみに限定したりすることにより、データパスにインストールできるフローエントリーの数よりさらに大きなスケーラビリティを実現しています。
使ってみる
Faucetの使い方については多くのチュートリアルが提供されています。また、Open vSwitchのウェブページでもチュートリアルが提供されています。
Faucetのインストール
Faucetは様々な方法でインストールできます。それぞれの手順は以下のリンクを参照してください。
Faucetのコンフィグ
Faucetは設定の記述にYAMLを利用します。YAMLとは、人が読めて、かつ機械可読(コンピュータ読み取り可能)なシンプルなデータフォーマットの一種です。ユーザはYAMLを使って、必要なネットワークプランや機能をFaucetに指示します。YAMLコンフィギュレーションファイルを採用していることは、Faucetがコンフィギュレーションしやすい理由の一つとなっています。
以下のコンフィギュレーションファイルのサンプルには、3つのセクションがあります。VLAN(The Virtual Local Area Network)とルータのセクションは、 VLANの名称とそのIDを記述しています。DP(Datapath)セクションは、Faucetに接続されているDPを定義しており、それぞれに関連付けられているスイッチポートがどのようにコンフィグされているかを定義しています。
稼働中のネットワークの可視化
モニタリングに関して、Faucetは典型的なNon-SDNネットワークマネジメントシステムとは異なり、SNMP(the Simple Network Management Protocol)を使用していません。その代わり、FaucetはGaugeモニタリングコントローラに統計情報(各ポートで入出力されるバイト数、パケット数)を送信します。GaugeはFaucetと並列に動作し、データストアとしてオープンソースの時系列データベースであるPrometheusとInfluxDBをサポートしています。Faucetは、Grafana(オープンソースの可視化システム)と連携してダッシュボードを作成でき、以下に示すように最新データや過去データに対して問い合わせを実行できます。
ハードウェアスイッチベンダーはFaucetプロジェクトに期待している
Faucetのコントロールパネルは、OpenFlowエコシステムの一部に過ぎません。ここ数年、有名なベンダー各社もプロジェクトに参加し、Faucetのmulti-tableデータプレーンパイプラインに完全対応しています。現在、このブログ執筆時点においては、サポートされているベンダーとしてAllied Telesis、Cisco、HPE Aruba、Noviflow、ZodiacFX、ZodiacGX、Lagopus、 およびOpen vSwitchといった組織がリストされています。また、新しい仲間もFaucetに参加しています。これについては、以下のFaucetConの紹介の中でお話しします。
成長を続けるオープンソースコミュニティだからこそ得られる安心感
2017年に初めてFaucetConが開催されてからFaucetCon2が開催されるまでの間に、参加者の数、オペレータのプロジェクト数ともに倍増しました。FaucetCon2は、2019年にカリフォルニア州のシリコンバレーのGoogle社構内で開催されました。会議はお約束のPlugFestから始まり、すべてのベンダーがFaucet制御下で、まったく問題なく相互接続できることを確認しました。また、今回のビッグニュースとして、 Arista社が我々の仲間の一員となったこともお知らせします。
様々な活用事例が紹介されたこともまた、明るい未来を感じさせるものでした。いくつか私が興味を持ったものを紹介します。
サンディア国立研究所(Sandia National Lboratory)では、物理的なケーブルを再配線したり、CLIを用いてスイッチを設定することなく、オーバーレイ技術を用いない複数の独立したクラウド環境を構築しています。(Faucet at the Sandria Nation Lab)
Google社は、次に示すふたつのFaucet IoTプロジェクトを発表しました。
Taming the IoT: Operationalized Testing to Secure Connected Devices
Network for IoT Powered by Faucet
IP ArchiTechs Managed Services社は、white-boxとオープンネットワーキングの統合に焦点を当てているネットワークコンサルティング企業ですが、SDN Traffic Engineering for Wireless ISPsという題目で講演を行いました。
Bob Lantz氏からは以下のソフトウェアの簡単な紹介がありました。
faucetagent.py: a very simple gNMI agent for configuring FAUCET
サイバーセキュリティは依然として私たちの最重要課題です。InQtel社のCyberReboot Labは同社の長期的SDN戦略としてFaucetを採用しました。同社による、デモンストレーションを含んだ2回の講演は大変興味をそそるものでした。
Making Thousands of Automated Configuration Changes at Home and in Production with FAUCET and Friends
Finding Aram Fingal: Using Poseidon and Faucet to Identify and Monitor Insider Threats.
また私もIIJ-IIの研究者として、現在取り組んでいるGUIベースのWebインターフェースのみを用いて専用スイッチファブリックを運用する、Faucetを活用したIXPオペレータのための研究プロジェクトを紹介しました。
まとめると、Faucetコミュニティに対する称賛は高まっているといえるでしょう。P4のようなデータプレーンプログラミング言語が注目されている昨今、OpenFlow SDNには、まだ果たすべき大きな役割があります。