LoginSignup
14

More than 5 years have passed since last update.

OpenStack の Quantum + Linux Bridge でVLAN構成を試してみた

Posted at

概要

 OpenStack(Folsom) において、Quantum と Linux Bridge を使って "tenant_network_type = vlan" の構成を組むと、各ノードにどのような形で仮想インタフェースやブリッジが構成されるのか知りたかったので、調査しました。

 仮想インスタンス群で、下記のような論理構成を組む意図で、

  • 3つのVLANを用意する。
    • そのうち、仮想インスタンス用には2つを使用する。
    • 1つは、OpenStackの管理ネットワークとして使用する。
  • 上記のVLANは一つの物理インタフェースに共存する。
    • 実際には、インタフェースを物理的に分けるのが好ましいが、試験環境の都合のため。

という前提で、L3 Agent を除いた構成を確認しました。

論理構成

詳細

 仮に上図のVLAN-Xを VLAN-ID:50、VLAN-Yを VLAN-ID:40、OpenStackの管理用ネットワークをVLAN-ID:30とします。
 Network Node では、

  • Quantum の Linux Bridge Agent
  • Quantum Server
  • DHCP Agent

を動作させます。

 Compute Node では、

  • Nova Compute
  • Quantum の Linux Bridge Agent

を動作させます。

1.初期状態

Network Node

Netowrk Node:初期状態

Compute Node

Compute Node:初期状態

2.片方のネットワーク(VLAN:40)のみに繋ぐ仮想インスタンスを作成

 1.の状態で、VLAN:40のネットワークを紐付けたインスタンスの作成指示を発行すると、下記のように変化します。

Network Node

 quantum-plugin-linuxbridge-agent によって、以下の作業が実施されます。

  • VLAN-ID:40 につなぐためのインタフェース eth0.40 を作成する。
  • VLAN-ID:40 をadd port したブリッジ brq* を作成する。

 DHCP Agent によって、以下の作業が実施される。

  • veth として tap* <-> ns* を作成し、tap* を VLAN-ID:40 のブリッジに add port する。
  • ns* に対して、VLAN-ID:40 用のネットワークの設定を与えた dnsmasq を起動する。

Netowrk Node:SingleNic インスタンス作成後

Compute Node

 quantum-plugin-linuxbridge-agent によって、以下の作業が実施されます。

  • VLAN-ID:40 につなぐためのインタフェース eth0.40 を作成する。
  • VLAN-ID:40 をadd port したブリッジ brq* を作成する。
  • インスタンスのNICをVLAN-ID:40のブリッジに紐付けるための tap デバイス tap* を作成して、brq に add port する。

nova-compute によって、以下の作業が実施されます。

  • 上記の tap* に紐付けた VM を起動する。

これにより、VM が VLAN-ID:40 に所属し、dnsmasq の提供する DHCP サーバから、IPアドレスを取得します。

Compute Node:SingleNic インスタンス作成後

3.両方のネットワーク(VLAN:40, 50)に繋ぐMultiNic仮想インスタンスを作成

2.の状態で、VLAN-ID:40 と VLAN-ID:50 を紐付けたインスタンスの作成指示を発行すると、下記のように変化します。

Network Node

 quantum-plugin-linuxbridge-agent によって、以下の作業が実施される。

  • VLAN-ID:40 につなぐためのインタフェース eth0.40 は、既に存在するので、何もしない。
  • VLAN-ID:50 につなぐためのインタフェース eth0.50 を作成する。
  • eth0.40 を add port したブリッジ brq* は、既に存在するので、何もしない。
  • eth0.50 を add port したブリッジ brq* を作成する。

 DHCP Agent によって、以下の作業が実施される。

  • VLAN-ID:40 用の dnsmasq は、既に構成されているので、何もしない。
  • veth として tap* <-> ns* を作成し、tap* を VLAN-ID:50 のブリッジに add port する。
  • ns* に対して、VLAN-ID:50 用のネットワークの設定を与えた dnsmasq を起動する。

Netowrk Node:MultiNic インスタンス作成後

Compute Node

 quantum-plugin-linuxbridge-agent によって、以下の作業が実施される。

  • VLAN-ID:40 につなぐためのインタフェース eth0.40 は、既に存在するので、何もしない。
  • VLAN-ID:50 につなぐためのインタフェース eth0.50 を作成する。
  • eth0.40 を add port したブリッジ brq* は、既に存在するので、何もしない。
  • eth0.50 を add port したブリッジ brq* を作成する。
  • インスタンスの NIC を VLAN-ID:40 のブリッジに紐付けるための tap デバイス tap* を作成して、brq に add port する。
  • インスタンスの NIC を VLAN-ID:50 のブリッジに紐付けるための tap デバイス tap* を作成して、brq に add port する。

Compute Node:MultiNic インスタンス作成後

このようにして、仮想インスタンス間で始めに示したような論理ネットワークを構成できます。

Quantum の実装を見たわけでは無く、設定されていく様子を段階的に見てまとめたので、嘘を書いている恐れがあります。ツッコミ大歓迎です。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14