雄大TweetMidoNetでのパケット処理について、DVRとの違いという観点でご紹介します。これまで2回にわたって、OpenStackでMidoNetを利用するための手順をご紹介しました。今回は、MidoNetでのパケット処理について、皆様が一番気になるであろうDVRとの違いという観点でご紹介します。plug-inを利用する場合とDVRの機能を利用した場合の挙動の差について説明します。ポイントは、仮想ルータの位置とNAT変換の箇所です。DVRの挙動の詳細については、以前の連載「OpenStack(RHEL-OSP6)で試す分散仮想ルータ」もご参照ください。Network)に分かれます。その仲介をするのが仮想ルータです。Serverサービスが起動しているサーバ)上に存在します(図1)。plug-inを利用する場合、仮想ルータはNetworkサーバ上で稼働している別テナント上のインスタンス間通信(East-West通信)が必ず仮想ルータを経由するため、Networkサーバの負荷が高くなる傾向があります(図2の青い矢印)。インスタンスと外部ネットワークとの通信(North-South通信)は、必ずNetworkサーバ上の仮想ルータでNAT処理されてパケットが流れます(図2の赤い矢印)。Networkサーバは、Active-Activeの冗長化構成をとることができないため、システム全体の処理能力はNetworkサーバ単体のハードウェア性能に依存します。DVRを利用すると、Networkサーバ上の仮想ルータを、Computeサーバ上へも拡張が可能です。Addressが割り当てられます。(図3)図3:DVR機能利用時、仮想ルータはComputeサーバ上にも拡張できるEast-West通信は、そのインスタンスが動作しているComputeサーバ同士で直接通信します(図4の青い矢印)。これは、分散仮想ルータにより処理されます。IP割り当ての有無により処理が変わります。IPを割り当てている場合、インスタンスが動作しているComputeサーバ上の分散仮想ルータでNAT処理されてパケットが流れます(図4の緑の矢印)。IPを割り当てていない場合は、Networkサーバ上のSNAT用仮想ルータでNAT処理されてパケットが流れます。plug-in使用時と同じ挙動です(図4の赤い矢印)。Routerという独自の仮想ルータ上に、Tenant用仮想ルータが作成されます。Routerは複数のGWサーバ上で単一の仮想ルータとして構成されます。Tenant用仮想ルータも複数のGWサーバ上で透過的に構成されます(図5)。Agentもパケット処理を行っています。この処理については、レッドハットの中井氏による「完全分散エッジ処理で実現するNeutron仮想ネットワーク」で詳細に解説されていますので、それをベースに説明します。以下、注目すべき箇所には、☆の後に解説を入れています。Agentにより処理されます。前述の図5において、Tenant210(192.168.210.0/24)に属するComputeサーバ1上のVM210-1(192.168.210.13)から、Tenant220(192.168.220.0/24)に属するComputeサーバ2上のVM220-2(192.168.220.14)への通信フローを例にします。はじめに、各サーバにおけるMidoNet用ポートの割り当て状況を、以下で確認します。(略)☆インスタンス用ポートインスタンス用ポートがどのインスタンスに割り当てられているかは、Dashboardからログインし、[プロジェクト]−[ネットワーク]−[ネットワーク]−[(Tenantネットワーク名)]で表示されるポート一覧等から確認してください(図6)。図6:Dashboard上でポートを確認する次に、各サーバでのフローテーブルを確認します。Computeサーバ1でのフローテーブルは、以下のようになります。23でカプセル化してComputeサーバ1からComputeサーバ2へパケットを送出していることがわかります。Computeサーバ2でのフローテーブルは、以下のようになります。23でカプセル化されてComputeサーバ1からComputeサーバ2へ届いたパケットで、かつVM210-1(192.168.210.13)からVM220-2(192.168.220.14)宛のパケットは、VM220-2へパケットを送出することがわかります。以上より、East-West通信では、インスタンスが動作しているサーバ間(この例ではComputeサーバ1とComputeサーバ2)のみで完結することがわかります。Daemonによって処理されます。前述の図5において、Tenant210(192.168.210.0/24)に属するComputeサーバ1上のVM210-1(192.168.210.13。IPなし)から、Target(10.0.0.1)への通信フローを例にします。Computeサーバ1でのフローテーブルは以下のようになります。4でカプセル化して、Computeサーバ1からGWサーバ1へ送出されていることがわかります。ここでは省略しましたが、GWサーバ2へ向けてのフローも同様に存在します。GWサーバ1でのMidoNet用ポートの割り当て状況は、以下の通りです。上流ネットワーク用のポートが存在していることが確認できます。(略)GWサーバ1でのフローテーブルは、以下のようになります。Network用インタフェース(10.10.0.10:4623)からTarget(10.0.0.1:22)に宛てたもの(すなわちComputeサーバ1でNAT変換されたパケット)は、上流ネットワーク用のポートから送出されることがわかります。GWサーバ2でも、同様のフローが存在します。IPと1:1NAT変換をする)以外は、同様の処理となります。North-South通信では、インスタンスが動作しているサーバ上でNAT変換され、複数のGWサーバへ振り分けられて転送されます。MidoNet利用時の通信をまとめると、図7のようになります。図7:MidoNet利用時の通信おわりに本連載では、OpenStack上でMidoNetを利用する際の手順や仕組みについて解説してきました。DVRとMidoNetの違いを理解いただき、設計要件にどちらが適しているかの判断の手助けとなれば幸いです。本記事執筆にあたり、OSCATM技術分科会メンバーの皆様、日本OpenStackユーザ会の皆様、Blogで情報公開いただいた皆様にご協力をいただきました。多大なるご協力をいただきました。心より感謝いたします。Torvalds氏の日本およびその他の国における登録商標または商標です。SARLの登録商標です。Foundationの許諾を得て使用しています。FoundationやOpenStackコミュニティの関連企業ではなく、また支援や出資を受けていません。Association)は、デル株式会社の登録商標です。評価及びソリューション開発に従事。ここ7、8年は仮想化関連技術の先行評価に取り組み、近年はオープンソースのクラウド技術の評価及び技術情報展開を実施している。連載バックナンバーネットワーク技術解説MidoNetのパケット処理をDVRと比較してみる2015/10/21MidoNetでのパケット処理について、DVRとの違いという観点でご紹介します。ITでは、より付加価値の高いコンテンツを会員サービスとして提供しています。ITのWebサイトにログインすることでさまざまな限定特典を入手できるようになります。VeloCloudが選ばれる理由SD-WANとはなにか。Linuxエンジニア育成への思いF5とNGINXの組み合わせで、サービス公開をよりセキュアに。ITがお届けするポッドキャストです。IT(シンクイット)エラーサイトに予期せぬエラーが起こりました。たってから再度お試しください。