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 |
レイヤ2(リンク)での仮想化
お楽しみはここからです。このセクションでは、同じ物理メディア上にあり、固定ハードウェアアドレスを持つ同じネットワークポートについて言及します。イーサネットでは、これはMACとして知られており、InfiniBandではサブネット管理下のPort GUIDもしくはLIDです。上位層のレイヤ3が複数のIPサブネットに参加できるように、複数のストリームをレイヤ2で統合できますが、どうやってisolationを実現するのでしょうか?ここに仮想化の鍵があるのです。
- イーサネットは8021.Q仕様に基づいて仮想LANを実装しています
- InfiniBandは、IBTA仕様に基づいたパーティションキー(PKeys)を実装しています
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 |
レイヤ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 |
どれが一番いいの?
OSIモデルの下位3層での仮想化実現方法について見てきました。評価とおさらいをしましょう。
- レイヤ1:より多くのハードウェアを必要とし、管理しづらくなります。多くの人々は単に、こんなもの仮想化ではないと言うでしょう。仰有る通りで、ここでの目的は、それぞれの層で何が起こるかを知ってもらうことでした。
- レイヤ2:これはハードウェアに最も近い層であり、仮想化すると、上位層はその環境を継承します。セキュリティと分離の点で最高の信頼レベルを提供します。
- レイヤ3:ここでの仮想化がぴったりですが、レイヤ2が保護されていないため信頼性は落ちます。
今後のエントリで、私はあなたのパーティションとVLANを手近の製品で実装する方法や、サービスを統合しつつ、ネットワークレイヤでの仮想化を実現するために分離を維持する方法をご紹介する予定です。