2.2.1 ルーター
「リージョンごとに独立した仮想ネットワークが構成される」と説明しましたが、AWS の場合、1 つの独立した仮想ネットワークは「Virtual Private Cloud(VPC)」と呼ばれ、1 つのリージョンに複数の VPC を用意することが可能です。一方、OpenStackの場合は、それぞれのテナントは、各リージョンに 1 つだけ仮想ネットワークを持つことができます。
ここで言う「独立した仮想ネットワーク」というのは、家庭内 LAN のようなプライベートなネットワークと考えることができます。家庭内 LAN をインターネットに接続するには、ブロードバンドルーターを設置する必要がありますが、これと同様に、テナント内の仮想ネットワークと物理的な外部ネットワークを接続する役割を担うのが仮想ルーターです。基本的には、それぞれの仮想ネットワークにおいて、仮想ルーターが 1 つ配置される形になります(図 2.7)。
また、それぞれの仮想ネットワーク内では、家庭内 LAN と同様に、プライベートIP アドレス[※ 2]を使用する必要があります。外部ネットワークと通信する際は、仮想ルーターの NAT 機能によって、グローバル IP アドレスへの変換が行なわれます。この点については、後ほど詳しく説明します。
逆に言うと、プライベート IP アドレスの範囲であれば、他のテナント、あるいは、他の VPC と重複する IP アドレスを使用しても問題ありません。家庭内 LAN で使用する IP アドレスを決める際に、隣の家の IP アドレスを気にする必要がないのと同じことです。
※2 プライベート IP アドレスとして利用できる範囲は、クラス A からクラス C に分けられており、クラス A は「10.0.0.0 ~ 10.255.255.255(10.0.0.0/8)」、クラス B は「172.16.0.0 ~ 172.31.255.255(172.16.0.0/12)」、クラス C は「192.168.0.0 ~ 192.168.255.255(192.168.0.0/16)」となります。
2.2.2 スイッチ(サブネット)
仮想スイッチは、仮想マシンインスタンスの仮想 NIC を接続する先になります。1 つの仮想スイッチに対して、1 つのサブネット(使用するプライベート IP アドレスの範囲)が割り当てられます。OpenStack の場合は、はじめに「仮想スイッチ」を定義して、その後で改めて「サブネット」を割り当てます[※ 3]。AWS では、仮想スイッチという概念がなく、いきなりサブネットを作成する形になりますが、これは「仮想スイッチ+サブネット」と同じものと考えてかまいません。
OpenStack の場合、1 つの仮想スイッチは、自動的に複数のアベイラビリティゾーンにまたがった形で構成されます。一方、AWS では、1 つのサブネットは、1 つのアベイラビリティゾーンに属する形になります(図 2.8)。
仮想スイッチを定義した後、それを仮想ルーターに接続することで、外部ネットワークとの通信が可能になります。仮想ルーターに接続しない、仮想ネットワーク内部での通信専用の仮想スイッチを使用することも可能です。
なお、物理的なネットワーク環境では、1 つのネットワークスイッチで接続ポート数が不足する場合、複数のネットワークスイッチをカスケード接続することがあります。しかし、クラウド環境の仮想スイッチをカスケード接続することはできません。仮想スイッチの場合、接続ポートはいくらでも増やすことができるので、そもそもポート数が不足することはありません。
より正確に言うと、仮想スイッチを定義した段階では、接続ポートはまだ存在しません。仮想マシンインスタンスを接続する際は、事前に接続ポートを追加しておき、その後で、そのポートに対して仮想マシンインスタンスの仮想 NIC を接続するという手順になります。
仮想スイッチに接続ポートを追加すると、その段階で、該当の仮想スイッチが持つサブネット内の IP アドレスの 1 つが接続ポートに対して割り当てられます。明示的に IP アドレスを指定するか、もしくは、空いている IP アドレスの 1 つを自動で割り当てます。その後、このポートに接続した仮想 NIC に対して、DHCP によって、対応する IP アドレスが提供される形になります(図 2.9)。
※3 1 つの仮想スイッチに対して、IPv4 と IPv6 の 2 種類のサブネットを割り当てるといった使い方が可能です。