Ubuntu Weekly Topics

2015年6月26日号“Fan”:ブリッジによるネットワーク拡張・UWN#422

“Fan”:ブリッジによるネットワーク拡張

コンテナ環境のような、⁠湯水のようにIPアドレスを使う」システムにおいて、新しいアプローチが登場しました。

そもそもの背景として、クラウドやコンテナ環境では、役割ごとにホストやコンテナが投入され、それぞれに異なるIPアドレスが付与されるのが普通です。この結果、⁠動作しているデーモンの数だけIPアドレスが消費される」ということも珍しくありません。

こうした事情に対応するためにCanonicalが提唱するFanは、⁠湯水のように」IPアドレスを必要とする環境において、プライベートアドレスを利用することで、投入可能なアドレス数を増やす仕組みです。

大量のIPアドレスが必要であれば、そもそも「IPv6に乗り換えて解決する」というのが正統派の対応ではあるのですが、アプリケーションに互換性がない、あるいは併用するサービスがIPv6を正しく処理しない、内規上グローバルIPアドレスを与えてしまうと電話帳のような分厚さの始末書を書く必要があるといった制約から、IPv6による解決が図れないこともありえます。

また、ネットワーク構成上、⁠コンテナのIPアドレスレンジはプライベートに保っておきたいが、しかし、複数ホスト上のコンテナ間で通信はできるほうが良い」というシチュエーションもありえます。コンテナを動作させるホストが同じL2空間に属していればプライベートアドレスを配布するDHCPサーバーを準備することである程度は解決できますが、そもそもこの前提が成立する可能性は高くありません。

さらに、クラウドを前提にしたコンテナ環境である程度複雑なサービスを設計すると、2桁や3桁のコンテナが生成されることは珍しくありません。この結果、⁠各コンテナに正しいIPアドレスを付与し、コンテナの生成・破棄に応じて付け替える」という作業が発生することになります。これを手作業で適切に行うことは困難ですし、そもそもクラウドやコンテナにサービスを収容するメリットは自動化なので、手でIPアドレスを割り振っていくのは破滅的にナンセンスです。

これを解決するための、SDN(Software Defined Network)とは異なるアプローチがFanです。Fanは、⁠IPアドレスの⁠ファンアウトケーブル⁠⁠」のように振る舞う、利用可能なアドレスを拡張するためのデザインパターンと設定ラッパーです。

原理は比較的単純で、⁠各マシンに、プライベートアドレス空間への⁠口⁠を作る」⁠たとえば、172.16.3.5を持つマシンに、10.3.5.0/24の空間へつながるブリッジを準備する⁠⁠、⁠マシン同士に適切なルーティングを設定する」⁠=「10.3.5.0/24へアクセスするときは172.16.3.5へアクセスするようにルーティングすればよい」という情報を、固定的なアルゴリズムを用いることで、暗黙で各マシンで共有できるようにする)というものです。Fanは本質的にはIPレベルのルーティング設定ノウハウで、これを「Ubuntu流」にラップする⁠fanctl⁠ユーティリティを提供することで、大量のアドレスを「Fan」することができるというものです。技術的には猛烈に新しいものではなく、⁠これまで暗黙のノウハウだったものを、使いやすい形にデザインしなおす」という、Ubuntu/Canonicalにとっては比較的成功例の多いアプローチとなっています(このアプローチの具体例は、たとえばbyobuやufwなどが該当します⁠⁠。

Fanのポイントは、いくつかの割り切りを行うことで設計や実装、そして取り扱いを単純化していることです。

まず一つ目が、データベースを必要としないデザインです。通常、こうした仕組みを構成するには「あるアドレス空間にアクセスするためにはこのIPアドレスを使う」という情報を、なんらかのデータベースに格納する必要があります。しかしこのデータベースは「落ちたら最後、どこにアクセスすればいいのかわからなくなる」というSPOF(単一障害点)であると同時に、排他制御に失敗するたけでネットワークに壊滅的な混乱を招く難物にもなりがちです。要するにこの種の仕組みで「管理情報をデータベースに置く」というのは悪手なのですが、Fanではある程度の居直りとともに、⁠このアドレス空間は必ずこのIPアドレスを使う」という形で決め打ちしてしまい、データベース不要でアクセス用IPアドレスが導出できるようになっています。この説明だけでは意味がわからないはずなので、Dustin Kirklandによる紹介Wiki上の記述もあわせて確認してください。

もう一つのポイントが、⁠このデザインを広く使う」という設計ノウハウの共有です。Fanが多くの実装で利用されるようになることで、⁠IPv4ベースのネットワーク構成において、大量のコンテナ用アドレスが必要になった場合はこのようにアプローチする」という定型化が行われるため、⁠不要な自由度⁠⁠、たとえば「自分の頭をショットガンで打ち抜く自由」のような、不毛な設計を排除することができます。CanonicalはFanによる拡張アプローチをIETF RFCとして固める意思も示しており、コンテナを使う上でIPアドレスが大量に必要であればFanを使うという解答が定番になるかもしれません。

なお、Fanに対応したクラウドイメージがAWSの各リージョンに配備されています。概念を理解するために利用すると便利です。

UWN#422

Ubuntu Weekly Newsletter #422がリリースされています。

その他のニュース

今週のセキュリティアップデート

usn-2651-1:GNU patchのセキュリティアップデート
  • https://lists.ubuntu.com/archives/ubuntu-security-announce/2015-June/002998.html
  • Ubuntu 14.10・14.04 LTS・12.04 LTS用のアップデータがリリースされています。CVE-2010-4651, CVE-2014-9637, CVE-2015-1196, CVE-2015-1395, CVE-2015-1396を修正します。
  • 悪意ある加工を施したpatchファイルを処理させることで、本来期待されないファイルの上書きが可能でした。
  • 対処方法:通常の場合、アップデータを適用することで問題を解決できます。
usn-2640-2:Linux kernel regression
  • https://lists.ubuntu.com/archives/ubuntu-security-announce/2015-June/002999.html
  • Ubuntu 12.04 LTS用のアップデータがリリースされています。
  • overlayfsの利用時に、クラッシュが発生する問題がありました。
  • 対処方法:アップデータを適用の上、システムを再起動してください。
usn-2641-2:Linux kernel (OMAP4) regression
  • https://lists.ubuntu.com/archives/ubuntu-security-announce/2015-June/003000.html
  • Ubuntu 12.04 LTS用のアップデータがリリースされています。
  • overlayfsの利用時に、クラッシュが発生する問題がありました。
  • 対処方法:アップデータを適用の上、システムを再起動してください。
usn-2642-2:Linux kernel (Trusty HWE) regression
  • https://lists.ubuntu.com/archives/ubuntu-security-announce/2015-June/003001.html
  • Ubuntu 12.04 LTS用のアップデータがリリースされています。
  • overlayfsの利用時に、クラッシュが発生する問題がありました。
  • 対処方法:アップデータを適用の上、システムを再起動してください。
usn-2643-2:Linux kernel regression
  • https://lists.ubuntu.com/archives/ubuntu-security-announce/2015-June/003002.html
  • Ubuntu 14.04 LTS用のアップデータがリリースされています。
  • overlayfsの利用時に、クラッシュが発生する問題がありました。
  • 対処方法:アップデータを適用の上、システムを再起動してください。
usn-2644-2:Linux kernel (Utopic HWE) regression
  • https://lists.ubuntu.com/archives/ubuntu-security-announce/2015-June/003003.html
  • Ubuntu 14.04 LTS用のアップデータがリリースされています。
  • overlayfsの利用時に、クラッシュが発生する問題がありました。
  • 対処方法:アップデータを適用の上、システムを再起動してください。
usn-2646-2:Linux kernel regression
  • https://lists.ubuntu.com/archives/ubuntu-security-announce/2015-June/003004.html
  • Ubuntu 14.10用のアップデータがリリースされています。
  • overlayfsの利用時に、クラッシュが発生する問題がありました。
  • 対処方法:アップデータを適用の上、システムを再起動してください。

おすすめ記事

記事・ニュース一覧