ML2 プラグイン

ML2 プラグイン

アーキテクチャー

Modular Layer 2 (ML2) プラグインは、 OpenStack Networking で、複雑な実世界のデータセンターで使われている様々な L2 ネットワーク技術を同時に利用できるようにするフレームワークです。 ML2 フレームワークでは 2 種類のドライバーが区別されています。

  • タイプドライバー

    OpenStack ネットワークがどの技術で実現されているかを定義します。例: VXLAN

    利用可能なネットワークタイプはそれぞれ ML2 タイプドライバーにより管理されます。タイプドライバーはネットワークタイプ固有の必要な情報を管理します。プロバイダーネットワークではタイプ固有の情報の検証を行い、テナントネットワークの場合は空きセグメントの割り当てを行います。

  • メカニズムドライバー

    あるタイプの OpenStack ネットワークを実現する仕組みを定義します。例: Open vSwitch メカニズムドライバー。

    メカニズムドライバーは、タイプドライバーが設定した情報を受け取り、有効化になっているそれぞれのネットワーク機構にその情報を適切に適用する役割を持ちます。

    メカニズムドライバーは、 (RPC 経由で) L2 エージェントを活用したり、外部のデバイスやコントローラーと直接やり取りしたりできます。

同じ仮想ネットワークのいろいろなポートを扱うために、複数のメカニズムドライバーやタイプドライバーを同時に使用できます。

ML2 ドライバーの対応状況

メカニズムドライバーと L2 エージェント

タイプドライバー / メカニズムドライバー

Flat VLAN VXLAN GRE
Open vSwitch

はい

はい

はい

はい

Linux ブリッジ

はい

はい

はい

はい

SRIOV

はい

はい

いいえ

いいえ

macvtap

はい

はい

いいえ

いいえ

L2 population

いいえ

いいえ

はい

はい

注釈

L2 population は、 VXLAN や GRE のオーバーレイネットワークにおいて BUM (ブロードキャスト、不明な宛先アドレス、マルチキャスト) トラフィックを最適化するための特別なメカニズムドライバーです。 Linux ブリッジメカニズムドライバーか Open vSwitch メカニズムドライバーと組み合わせて使用する必要があり、単独のメカニズムドライバーとして使用することはできません。詳しい情報は、下記の メカニズムドライバー の節を参照してください。

設定

ネットワークタイプドライバー

ML2 プラグインでタイプドライバーを有効にするには、 /etc/neutron/plugins/ml2/ml2_conf.ini ファイルを編集します。

[ml2]
type_drivers = flat,vlan,vxlan,gre

詳しい情報は Configuration Reference を参照してください。

以下のタイプドライバーが利用できます。

  • Flat
  • VLAN
  • GRE
  • VXLAN

プロバイダーネットワーク種別

プロバイダーネットワークは、プロジェクトネットワークと同じく接続性を適用しますが、管理権限を持ったユーザー (特権ユーザー) だけがこれらのネットワークを管理できます。プロバイダーネットワークは物理ネットワーク基盤と直接接続されるからです。プロバイダーネットワークについてのより詳しい情報は、 OpenStack NetworkingOpenStack 管理者ガイド などの関連する節を参照してください。

  • Flat

    管理者は、プロバイダーネットワークに使用できる物理ネットワーク名のリストを設定する必要があります。詳細は、 Configuration Reference を参照してください。

  • VLAN

    管理者は、プロバイダーネットワークに使用できる物理ネットワーク名のリストを設定する必要があります。詳細は、 Configuration Reference を参照してください。

  • GRE

    追加の設定はありません。

  • VXLAN

    管理者は、使用すべき VXLAN マルチキャストグループを設定できます。

    注釈

    VXLAN マルチキャストグループの設定項目は Open vSwitch エージェントにはありません。

    現時点では、この設定が Linux ブリッジエージェントでは使用されていません。 Linux ブリッジエージェントには、エージェント固有の設定項目があります。詳細は https://bugs.launchpad.net/neutron/+bug/1523614 を参照してください。

プロジェクトネットワーク種別

プロジェクトネットワークは、特定のプロジェクトのインスタンスに対して接続性を提供します。一般ユーザー (非特権ユーザー) は、管理者やオペレーターが定義した範囲内でプロジェクトネットワークを管理できます。プロジェクトネットワークやプロバイダーネットワークについてのより詳しい情報は、 OpenStack NetworkingOpenStack 管理者ガイド などの関連する節を参照してください。

プロジェクトネットワークの設定は、 neutron サーバーの /etc/neutron/plugins/ml2/ml2_conf.ini ファイルで行われます。

  • VLAN

    管理者は、プロジェクト (テナント) ネットワークへの割り当てに使用できる VLAN ID の範囲を設定する必要があります。詳細は、 Configuration Reference を参照してください。

  • GRE

    管理者は、プロジェクト (テナント) ネットワークへの割り当てに使用できるトンネル ID の範囲を設定する必要があります。詳細は、 Configuration Reference を参照してください。

  • VXLAN

    管理者は、プロジェクト (テナント) ネットワークへの割り当てに使用できる VXLAN ID の範囲を設定する必要があります。詳細は、 Configuration Reference を参照してください。

注釈

プロジェクト (テナント) ネットワークへのフラットネットワークの割り当てはサポートされていません。フラットネットワークはプロバイダーネットワークでのみ使用できます。

メカニズムドライバー

ML2 プラグインでメカニズムドライバーを有効にするには、 neutron サーバーの /etc/neutron/plugins/ml2/ml2_conf.ini ファイルを編集します。

[ml2]
mechanism_drivers = ovs,l2pop

詳しい情報は Configuration Reference を参照してください。

  • Linux ブリッジ

    メカニズムドライバーに関する追加の設定は不要です。追加のエージェント設定が必要です。詳細は下記の L2 エージェント の節を参照してください。

  • Open vSwitch

    メカニズムドライバーに関する追加の設定は不要です。追加のエージェント設定が必要です。詳細は下記の L2 エージェント の節を参照してください。

  • SRIOV

    管理者は、 OpenStack が使用してよい PCI ハードウェアのリストを定義する必要があります。詳細は、 Configuration Reference を参照してください。

  • macvtap

    メカニズムドライバーに関する追加の設定は不要です。追加のエージェント設定が必要です。関連する節を参照してください。

  • L2 population

    管理者は、追加でいくつかのオプションを設定できます。詳細は、 Configuration Reference の関連する節を参照してください。

  • 個別事項

    • オープンソース

      neutron 組み込みの参照実装以外にも、オープンソースドライバーがあります。これらのドライバーの設定はこのドキュメントの対象外です。例:

      • OpenDaylight
      • OpenContrail
    • プロプライエタリティ (ベンダー)

      neutron 組み込みの参照実装以外に、様々なベンダーからメカニズムドライバーが提供されています。

      これらのドライバーの設定はこのドキュメントの対象外です。

エージェント

L2 エージェント

L2 エージェントは、OpenStack リソースに対してレイヤー 2 (Ethernet) ネットワークの接続性を提供します。通常は、ネットワークノードとコンピュートノードで実行されます。

  • Open vSwitch エージェント

    Open vSwitch エージェントは Open vSwitch の設定を行い、OpenStack リソース用の L2 ネットワークを実現します。

    Open vSwitch エージェントの設定は通常 openvswitch_agent.ini 設定ファイルで行われます。エージェント開始時にこの設定ファイルを引数として指定してください。

    設定オプションの詳細な一覧は、 Configuration Reference の関連する節を参照してください。

  • Linux ブリッジエージェント

    Linux ブリッジエージェントは Linux ブリッジの設定を行い、OpenStack リソース用の L2 ネットワークを実現します。

    Linux ブリッジエージェントの設定は通常 linuxbridge_agent.ini 設定ファイルで行われます。エージェント開始時にこの設定ファイルを引数として指定してください。

    設定オプションの詳細な一覧は、 Configuration Reference の関連する節を参照してください。

  • SRIOV NIC スイッチエージェント

    SRIOV NIC スイッチエージェントは、 OpenStack インスタンス用の L2 ネットワークを実現するための PCI 仮想ファンクション (VF) の設定を行います。ルーター、DHCP などのその他のリソースのネットワーク接続には対応していません。

    SRIOV NIC スイッチエージェントの設定は通常 sriov_agent.ini 設定ファイルで行われます。エージェント開始時にこの設定ファイルを引数として指定してください。

    設定オプションの詳細な一覧は、 Configuration Reference の関連する節を参照してください。

  • macvtap エージェント

    macvtap エージェントは、 OpenStack インスタンス用の L2 ネットワークを実現するために、カーネルの macvtap デバイスを使用します。ルーター、DHCP などのその他のリソースのネットワーク接続には対応していません。

    macvtap エージェントの設定は通常 macvtap_agent.ini 設定ファイルで行われます。エージェント開始時にこの設定ファイルを引数として指定してください。

    設定オプションの詳細な一覧は、 Configuration Reference の関連する節を参照してください。

L3 エージェント

L3 エージェントは、仮想ルーターや Floating IP などの高度な L3 サービスを提供します。 L2 エージェントもあわせて動作させる必要があります。

L3 エージェントの設定は通常 l3_agent.ini 設定ファイルで行われます。エージェント開始時にこの設定ファイルを引数として指定してください。

設定オプションの詳細な一覧は、 Configuration Reference の関連する節を参照してください。

DHCP エージェント

DHCP エージェントは、 DHCP (Dynamic Host Configuration Protocol) と RADVD (Router Advertisement Daemon) サービスを担当します。 L2 エージェントもあわせて動作させる必要があります。

DHCP エージェントの設定は通常 dhcp_agent.ini 設定ファイルで行われます。エージェント開始時にこの設定ファイルを引数として指定してください。

設定オプションの詳細な一覧は、 Configuration Reference の関連する節を参照してください。

メタデータエージェント

メタデータエージェントは、 cloud-init メタデータやユーザーデータにインスタンスがネットワーク経由でアクセスできるようにします。同じノードで L2 エージェントを実行する必要があります。

メタデータエージェントの設定は通常 metadata_agent.ini 設定ファイルで行われます。エージェント開始時にこの設定ファイルを引数として指定してください。

設定オプションの詳細な一覧は、 Configuration Reference の関連する節を参照してください。

L3 メータリングエージェント

L3 メータリングエージェントは L3 トラフィック計測を可能にします。同じノードで L3 エージェントを実行する必要があります。

メータリングエージェントの設定は通常 metering_agent.ini 設定ファイルで行われます。エージェント開始時にこの設定ファイルを引数として指定してください。

設定オプションの詳細な一覧は、 Configuration Reference の関連する節を参照してください。

セキュリティー

L2 エージェントはいくつかの重要なセキュリティー機能を持ちます。

  • セキュリティーグループ

    詳細は、 Configuration Reference の関連する節を参照してください。

  • ARP 詐称防止

    L2 エージェント 設定により決まります。

参照実装

概要

この節では、メカニズムドライバーと L2 エージェントの組み合わせを「参照実装」と呼びます。以下の表はこうした実装の一覧です。

メカニズムドライバーと L2 エージェント

メカニズムドライバー

L2 エージェント

Open vSwitch

Open vSwitch エージェント

Linux ブリッジ

Linux ブリッジエージェント

SRIOV

SRIOV NIC スイッチエージェント

macvtap

macvtap エージェント

L2 population

Open vSwitch エージェント、 Linux ブリッジエージェント

以下の表に、どの参照実装でどの L2 以外の neutron エージェントが使用できるかを示します。

参照実装のそれ以外のエージェント

参照実装

L3 エージェント

DHCP エージェント

メタデータエージェント

L3 メータリングエージェント

Open vSwitch & Open vSwitch エージェント

はい

はい

はい

はい

Linux ブリッジ & Linux ブリッジエージェント

はい

はい

はい

はい

SRIOV & SRIOV NIC スイッチエージェント

いいえ

いいえ

いいえ

いいえ

macvtap & macvtap エージェント

いいえ

いいえ

いいえ

いいえ

注釈

L2 population は、独立して動作するメカニズムドライバーではないため、この表には記載されていません。他のエージェントが使用できるかは、ポートのバインド時に使用される、組み合わせて使うメカニズムドライバーにより決まります。

L2 population についての詳しい情報は OpenStack マニュアル を参照してください。

どれを選べばよいか?

ここでは、現在存在する L2 参照実装の特徴を説明します。

  • Open vSwitch メカニズムドライバーと Open vSwitch エージェント

    インスタンスのネットワーク接続にも、ルーターや DHCP などの他のネットワークリソースの接続にも使用できます。

  • Linux ブリッジメカニズムドライバーと Linux ブリッジエージェント

    インスタンスのネットワーク接続にも、ルーターや DHCP などの他のネットワークリソースの接続にも使用できます。

  • SRIOV メカニズムドライバーと SRIOV NIC スイッチエージェント

    インスタンスのネットワーク接続 (device_owner = compute) のみに使用できます。

    OVS や Linux ブリッジなどの他のメカニズムドライバーや L2 エージェントと組み合わせて使用します。 PCI Virtual Function (VF) 経由でインスタンスからネットワークアダプターへの直接アクセスが可能です。インスタンスは、ハードウェア機能を直接利用でき、高性能なネットワークを得られます。

    クラウドの利用者は、インスタンスが通常の OVS ポートか SRIOV ポートのどちらを使うかを、 neutron API の VNIC_TYPE 属性で指定できます。

    直接アクセスを行うため、 SRIOV を使う場合、利用できない機能があります。例えば、 DVR、セキュリティーグループ、マイグレーションなどです。

    詳しい情報は SR-IOV 機能を使用する を参照してください。

  • macvtap メカニズムドライバーと macvtap エージェント

    インスタンスのネットワーク接続 (device_owner = compute) のみに使用でき、ルーターや DHCP などの他のネットワークリソースの接続には使用できません。

    内向きのデプロイメントでの、コンピュートノードの Open vSwitch や Linux ブリッジの代替という位置付けです。

    macvtap を使うと、インスタンスとアダプター間を非常に小さいオーバーヘッドで直接接続できます。性能が非常に重要なネットワーク接続が必要な場合、コンピュートノードで macvtap エージェントを使用できます。 (SRIOV の場合のように) 特別なハードウェアは必要としません。

    直接アクセスを行うため、コンピュートノードで macvtap を使う場合、利用できない機能があります。例えば、 DVR、セキュリティーグループ、 ARP 詐称防止などです。

Creative Commons Attribution 3.0 License

Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.