[Network] Networks and Virtualization

原文はこちら。
https://blogs.oracle.com/networking/entry/infiniband_and_virtualization

仮想化は、常にインフラオーナーが頻繁に取り上げる話題です。その理由がわかりますかね?よくあるのは、任意の時点で、サービス展開時に使われるハードウェア機器の容量が、サービスが実際に利用可能な分よりも多く必要になる、ということです。データセンターの賃料と電力費用は高価ですからね。

では、何をしたいのでしょう?集約ですね。

んー、確かにそうなんですけど、セキュリティはどうなんでしょうかね。すべてが露出したリソースの共有セット上で実行されているという事実を好まない人もいます。

じゃあ、どうすればいいのでしょう?分離ですね。

これらの2つのキーワード、Consolidation(集約)とIsolation(分離)はお互いに矛盾しているように思えますが、両者はコンピューティング環境の仮想化の基礎をなすものなのです。

ネットワークの世界では、与えられたメディアを通じて複数のデータフローを統合し、さらに分離を維持できた場合に仮想化を実現しています。

以下のような質問を何度となく聞いてきました。
これらのVLANをいったいどうなっているの?何個作ればいいの?
InfiniBandパーティションって何?どうやって実装すればいいの?
これらの質問もよくいただきます。
何個のLANを参加させたらいいの?
これらのネットワーク間のセキュリティは必要?
現代のコンピューティング環境では、ほとんど全てのホスト、特にサーバは一つ以上のネットワークに属しています(マルチホーミングといいます)。これについてもう少し深掘りしてみましょう。マルチホーミングの意味は、文字通り、異なるネットワークに動じに参加していることを表しています。まず一つのネットワークから見ていきましょう。ここで何が必要でしょうか。十分に簡単です。1個のIPアドレスを持つ1個のネットワークポート、そしてサブネットマスクです。送信先が当該マシンが属するローカルエリアを越えてより大きなネットワークである場合には、ゲートウェイアドレスを追加するでしょう。はい、状況が変わり、要件も拡大する可能性があります。別のネットワークポート、別のIPアドレス、サブネットマスク、ゲートウェイなどを追加する必要がでてきます。しかし、どこかで物理的な限界が来てしまいます。そしてハードウェアにより多くのお金を使いたい人はいませんし、データセンターで多くのものを管理したくないのです。配線を見たことのある人は、私が何を言っているかわかると思います。


で、ここで何をする必要があるでしょうか?集約ですね。どうやればいいでしょう。見ていきましょう…この先では、OSIの最初の3層を念頭に置いて下さいね。あるレイヤを仮想化すると、すぐに上位レイヤは継承します。

レイヤ1(ハードウェア)での仮想化
これはシンプルな説明のためではありますが、いくつかの統合がハードウェアまたはレイヤ1で何が起こっていると言えるでしょう。あなたは、1つ以上のネットワークポートを持つネットワークインターフェイスカードを見たことがありませんか?デュアルバンド・ワイヤレスルータはどうでしょうか?この層では、これが我々が言うconsolidationの一種であり、isolationは内蔵されています。2個のシングルポートネットワークカードを持つかわりに、デュアルポート、あるいはクアッドポートカードを使用することができます。同じカードの別のポートが独自のハードウェアアドレスと外部世界への物理パスを持ちます。
 Interfaces from NIC #1  Interfaces from NIC #2  Interfaces from NIC #3   Interfaces from NIC #4
 Ethernet  eth0, eth1  eth2, eth3  eth4, eth5  eth6, eth7, eth8, eth9
 InfiniBand  ib0, ib1  ib2, ib3  ib4, ib5  ib6, ib7
あなたは、個々のNICがレイヤ2とレイヤ3で使用するユニークなインタフェースを提供することがわかるでしょう。ここで示しているconsolidationは、ネットワークカードレベルでのみであり、これは純粋に理解のためにここで会話を成り立たせるためです。

レイヤ2(リンク)での仮想化
お楽しみはここからです。このセクションでは、同じ物理メディア上にあり、固定ハードウェアアドレスを持つ同じネットワークポートについて言及します。イーサネットでは、これはMACとして知られており、InfiniBandではサブネット管理下のPort GUIDもしくはLIDです。上位層のレイヤ3が複数のIPサブネットに参加できるように、複数のストリームをレイヤ2で統合できますが、どうやってisolationを実現するのでしょうか?ここに仮想化の鍵があるのです。
  • イーサネットは8021.Q仕様に基づいて仮想LANを実装しています
  • InfiniBandは、IBTA仕様に基づいたパーティションキー(PKeys)を実装しています
基本的な考え方は、リンクレイヤ2で統合される各ストリームの一意のIDを許可し、分離して上位層に新しいインターフェースを提示するというものです。全体的な結果、レイヤ2でのネットワーク仮想化です。
 Interfaces from NIC #1  Layer 2 Isolation Unique ID  Interface Presented to Layer 3
 Ethernet  eth0, eth1  VLAN=20  eth0.20, eth1.20
 InfiniBand  ib0, ib1  PKey=0x8001  ib0.8001, ib1.8001
このアプローチでは、ワイヤ上を通過するパケットを分析する際、パケットを分離するためにレイヤ2で設定された一意のフィールドがあります。レイヤ3も、独自の発信元と宛先のIPサブネット情報を持ちます。

レイヤ3(ネットワーク)の仮想化
これは、エンドポイントでIPアドレスを使用するレイヤです。この例ではLinuxを使います。ここでの仮定は、同じハードウェアアドレスを持つ同一ネットワークインターフェースを持ち、レイヤ2では仮想化していない、ということです。それゆえ、どうやって、レイヤ3で仮想化するのでしょうか?ユニークなサブネットを持つIPエイリアスを使います。インターフェースをeth0と呼ぶことにしましょう。Linuxを含むいくつかのOSでは、eth[n]:[y]といった形式の仮想インターフェースを追加することができます。ここで'n'はインターフェースインスタンスで、'y'は当該インターフェースインスタンスにおける仮想インスタンスです。独自のIPサブネットに参加する仮想レイヤ3インスタンスを持つことができます。ここで何をやりましたかね?データストリームを統合し、ユニークなサブネットを付けて分離しました。

Interfaces from NIC #1  IP Aliases or Virtual Interfaces
 Ethernet  eth0, eth1  eth0:1, eth0:2, eth1:1, eth1:2
 InfiniBand  ib0, ib1  ib0:1, ib0:2, ib1:1, ib1:2
このアプローチでは、ワイヤ上を通過するパケットを分析する際に、送信元および宛先のIPサブネットでレイヤ3になることが唯一の違いです。レイヤ2でのisolationはありません。

どれが一番いいの?
OSIモデルの下位3層での仮想化実現方法について見てきました。評価とおさらいをしましょう。
  • レイヤ1:より多くのハードウェアを必要とし、管理しづらくなります。多くの人々は単に、こんなもの仮想化ではないと言うでしょう。仰有る通りで、ここでの目的は、それぞれの層で何が起こるかを知ってもらうことでした。
  • レイヤ2:これはハードウェアに最も近い層であり、仮想化すると、上位層はその環境を継承します。セキュリティと分離の点で最高の信頼レベルを提供します。
  • レイヤ3:ここでの仮想化がぴったりですが、レイヤ2が保護されていないため信頼性は落ちます。
選択はあなた次第であり、インフラストラクチャの設計方法によって選択が変わります。レイヤ2での仮想化の利点が、他のオプションを上回るように思われます。これを実現する技術は、イーサネットではVLANであり、InfniBandであればパーティションキーです。

今後のエントリで、私はあなたのパーティションとVLANを手近の製品で実装する方法や、サービスを統合しつつ、ネットワークレイヤでの仮想化を実現するために分離を維持する方法をご紹介する予定です。

0 件のコメント:

コメントを投稿