OpenStack Neutronとは何か?いま覚えておくべきOpenStack Neutronの基本(1)(3/3 ページ)

» 2014年12月08日 18時36分 公開
[SDNエバンジェリスト吉本昌平ユニアデックス株式会社]
前のページへ 1|2|3       

Neutronの動作(2)インスタンスから外部ネットワークへの通信

 次に、インスタンスからパッケージのアップデートなどで外部ネットワークへアクセスする際のNeutronの動作を見てみます。

 OpenStackからNeutronへネットワーク作成が指示されると、Neutronのプロセス「neutron-l3-agent」がルーター用のNamespaceを作成します。さらに作成したNamespace内でiptablesやip forwardingを設定/実行します。また、インスタンスと一対一でひも付いたNAT用のグローバルIPアドレス(floating IP)が割り当てられます。これは外部ネットワークのゲートウェイとなるインターフェースのエイリアスとして付与されます。これでルーターの作成と設定は完了です。

インスタンス起動後、Namespace作成とネットワーク設定

 インスタンスが外部ネットワークへアクセスする際の動作は以下の通りです。

  1. インスタンスが外部ネットワークに向けて通信を開始します
  2. インスタンスのOSに設定されたdefault gatewayは10.0.0.1なので、ルーターnamespaceに転送されます。このdefault gatewayはインスタンスの起動時にDHCPサーバーが設定したものです
  3. ルーターnamespace内のdefault gatewayは192.168.1.1なので、外部ネットワークに転送されます
  4. この時、送信元IPアドレスは133.1.1.2(floating IP)となるようにNAT接続されており、戻りのパケットはそこに返されることになります

Neutronの動作(2)外部ネットワークからインスタンスへの通信

 次に、起動したインスタンスでWebサーバーなどを立ち上げて外部からアクセスさせるケースを見てみましょう。外部接続用のルーターは既に上記で作成していますので割愛します。

外部ネットワークからNamespace内のインスタンスにアクセスさせる場合の挙動

 これも動作は非常に単純です。

  1. 外部ネットワークからインスタンスへのアクセスは、floating IPである133.1.1.2に向けて行われます
  2. ルーターnamespace内で宛先IPアドレスが10.0.0.3となるようNATされます
  3. ルーターnamespace内の経路設定に従って、インスタンスに転送されます

Neutronのマルチテナント構成

 上記の三つのケースを通じて、Neutronを構成するソフトウェアと基本的な動作をご理解いただけたかと思います。

 ここからは、複数のテナントを構成する場合に、どのような実装になるのかを表したのが下図です。テナントAとテナントBを作成しています。

二つのテナントを構成する場合の実装例

 注目していただきたいのは、下記の三点です。

  1. 外部ネットワークに繋がる外部ブリッジのbr-exは複数テナントで共有されます。複数のグローバルIPセグメントを使用する場合のみ、複数のbr-exが作成されます
  2. ルーターnamespace、DHCPサーバーnamespaceはテナントごとに作成されます
  3. 二つのテナントの内部ネットワークアドレスが同一であるにもかかわらず、内部ブリッジであるbr-intは両テナントで共有されています。内部ブリッジはVLAN tagに対応しており、テナントごとに別のVLAN IDが割り振られているため、テナントA/Bのネットワークは分割されています。このように、テナント間のネットワーク分割は、Network NamespaceとVLANによって実現されています

Neutronのマルチノード構成

 最後に、OpenStackマルチノード構成の場合を見てみましょう。マルチノード構成の場合は大きく二点が変更になります。

 まず、インスタンスが動作するコンピュートノードで行われていたネットワーク処理が専用物理サーバー(ネットワークノード)に集約されます。コンピュートノードとネットワークノードのbr-intがGREやVXLANなどのL3トンネリングプロトコルを介して接続されます。その詳細を表しているのが下図です。接続のためにブリッジ「br-tun」が作成され、br-tunの間が(この図では)GREトンネリングで結ばれているのがお分かりいただけるかと思います。

OpenStackにおけるマルチノードの構成例

終わりに

 今回はNeutronに求められる要件とその実装について解説しました。次回はあなた自身に擬似的にNeutronになっていただきます。Neutronが行っている操作をコマンドラインレベルで再現し、より深い理解を目指しましょう。

著者プロフィール

吉本昌平

ユニアデックス株式会社

ASPやクラウド関連のSEを経て、現在はSDN関連の企画推進を担当。MSXをこよなく愛する見習いエバンジェリスト。

共著者

田中克弥

ユニアデックス株式会社

パワポと戯れるOpenStack商品企画担当。バックパック片手に世界をぶらり旅。次の旅先を妄想中。

大塚 洋

ユニアデックス株式会社

プログラマー病を患うおじさんエンジニア。早期退職してゴルフ三昧の日々を夢見る。

佐々木 智一

ユニアデックス株式会社

息子とのプラレール遊びでつい本気になってしまう、フルスタックになりたいエンジニア。


前のページへ 1|2|3       

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。