IPv6

IPv6

扱う内容

  • デュアルスタックの (IPv4 と IPv6 の両方が有効になった) インスタンスを使用するにはどうすればよいか

  • これらのインスタンスは IPv6 アドレスをどのように取得するか

  • これらのインスタンスがルーター越しに他のサブネットやインターネットとどのように通信するか

  • これらのインスタンスが他の OpenStack サービスとどうやってやり取りを行うか

OpenStack Networking でデュアルスタックのネットワークを有効にするのに必要なことは、 ip_version フィールドが 6 のサブネットを作成し、 IPv6 関連属性 (ipv6_ra_modeipv6_address_mode) を設定することです。 ipv6_ra_modeipv6_address_mode の詳細は次の節で説明します。最後の 1 つは、サブネットの cidr を適切に指定することです。

扱わない内容

この文書では以下の内容は扱いません。

  • IPv6 スタックのみのテナントネットワーク

  • IPv6 ネットワーク越しの、サーバー間、サービス間での OpenStack 制御通信

  • IPv6 ネットワーク経由での OpenStack API への接続

  • IPv6 マルチキャスト

  • 物理仮想を問わず、Neutron コードツリー外のルーター、スイッチ、サービス、エージェントとの組み合わせでの IPv6 サポート

Neutron サブネットと IPv6 API 属性

Juno 時点では、 OpenStack Networking サービス (neutron) のサブネットオブジェクトには 2 つの属性があり、この属性により API ユーザーは IPv6 サブネットの設定が可能です。

2 つの IPv6 関連の属性があります。

  • ipv6_ra_mode
  • ipv6_address_mode

これらの属性には以下の値を設定できます。

  • slaac
  • dhcpv6-stateful
  • dhcpv6-stateless

これらの属性に値を設定しないままにすることもできます。

IPv6 アドレス割り当て

ipv6_address_mode 属性は、 OpenStack がどのようにアドレス割り当てを行うかを制御するのに使用されます。 ゲストインスタンスが IPv6 アドレスを取得する方法には様々なものがあり、この属性は Networking API のユーザーに選択肢を公開しています。

ルーター広告 (Router Advertisements)

ipv6_ra_mode 属性は、サブネットに対するルーター広告を制御するのに使用されます。

IPv6 プロトコルは、ネットワークに関する情報を配る方法として Internet Control Message Protocol (ICMPv6) パケットを使用します。 type フラグが 134 に設定された ICMPv6 パケットは「ルーター広告 (Router Advertisement)」パケットと呼ばれます。ルーター広告は、ゲストインスタンスがネットワークトラフィックを送信するのに使用できるルーターと経路の情報をブロードキャストするものです。

ipv6_ra_mode は、Networking サービスがサブネットに対して ICMPv6 パケットを送信すべきかを指定するのに使用されます。

ipv6_ra_mode と ipv6_address_mode の組み合わせ

ipv6 ra mode ipv6 address mode radvd A,M,O External Router A,M,O

説明

指定なし

指定なし

オフ

未定義

Juno より前の IPv6 動作と後方互換性があります。

指定なし

slaac

オフ

1,0,0

ゲストインスタンスは SLAAC を使って OpenStack 外のルーターから IPv6 アドレスを取得します。

指定なし

dhcpv6-stateful

オフ

0,1,1

今のところ参照実装では未実装です。

指定なし

dhcpv6-stateless

オフ

1,0,1

今のところ参照実装では未実装です。

slaac

指定なし

1,0,0

オフ

今のところ参照実装では未実装です。

dhcpv6-stateful

指定なし

0,1,1

オフ

今のところ参照実装では未実装です。

dhcpv6-stateless

指定なし

1,0,1

オフ

今のところ参照実装では未実装です。

slaac slaac 1,0,0

オフ

ゲストインスタンスは SLAAC を使って OpenStack が管理する radvd から IPv6 アドレスを取得します。

dhcpv6-stateful dhcpv6-stateful 0,1,1

オフ

ゲストインスタンスは DHCPv6 stateful を使って dnsmasq から IPv6 アドレスを取得し、DHCPv6 を使って dnsmasq から追加情報を取得します。

dhcpv6-stateless dhcpv6-stateless 1,0,1

オフ

ゲストインスタンスは SLAAC を使って OpenStack が管理する radvd から IPv6 アドレスを取得し、DHCPv6 を使って dnsmasq から追加情報を取得します。

slaac dhcpv6-stateful    

無効な組み合わせ

slaac dhcpv6-stateless    

無効な組み合わせ

dhcpv6-stateful slaac    

無効な組み合わせ

dhcpv6-stateful dhcpv6-stateless    

無効な組み合わせ

dhcpv6-stateless slaac    

無効な組み合わせ

dhcpv6-stateless dhcpv6-stateful    

無効な組み合わせ

テナントネットワークでの考慮事項

データプレーン

Linux ブリッジと Open vSwitch のデータプレーンモジュールは両方とも、ゲスト同士やルーターポートとの間の IPv6 パケットの転送をサポートしています。 IPv4 と同様に、送信元から宛先へ IPv6 を使ってパケットをデータプレーンが適切に転送できるようにするように特別な設定や構成は必要ありません。また、ポートがすべて接続され、MAC アドレスのラーニングが行われた後は、同じネットワーク上のホスト間のリンクローカルアドレス (LLA) パケットの転送も、OpenStack コンポーネントによる特別な関与や設定なしに、正しく行われます。

サブネットのアドレス

OpenStack では、サブネットが自分の cidr を決めるのに 4 つの方法があります。

  1. サブネット作成時にコマンドラインや Horizon で直接指定する

  2. サブネット作成時にサブネットプールを指定する

将来的には、サブネットのテナントへの割り当てに、別の方法も使えるようになる予定です。

  1. PD クライアントを使って、PD サーバーからサブネットのプレフィックスを要求する

  2. 外部の IPAM モジュールを使ってサブネットを割り当てる

ポートのアドレスモード

注釈

理論的には、外部の DHCPv6 サーバーで、OpenStack が EUI-64 アドレスに基づいて割り当てた完全なアドレスを上書きできますが、賢明なこととは言えません。システム全体で一貫性がなくなってしまうからです。

IPv6 では、アドレス設定と追加のネットワーク情報の提供方法に関して、 3 つの異なるアドレス割り当て方法がサポートされています。

ステートレスアドレス自動設定 (SLAAC; Stateless Address Auto Configuration)

ルーター広告 (Router Advertisement; RA) を使ったアドレス設定

DHCPv6-stateless

RA を使ってアドレス設定を行い、DHCPv6 を使って追加の情報を通知する方法

DHCPv6-stateful

DHCPv6 を使ってアドレス設定と追加の情報を通知する方法

OpenStack は、OpenStack Networking が OpenStack 上のネットワークに対して RA、 DHCP relay、 DHCPv6 アドレス、追加の情報を直接提供するようにセットアップすることも、こうした機能を使用するドライバーに基いて外部のルーターやサービスに移譲できるようにすることもできます。 Neutron サブネットには、 ipv6_ra_modeipv6_address_mode という 2 つの属性があり、これらの属性により IPv6 アドレスとネットワーク情報をテナントインスタンスにどのように提供するかが決定されます。

  • ipv6_ra_mode: RA を誰が送信するかを決定します。

  • ipv6_address_mode: インスタンスが IPv6 アドレス、デフォルトゲートウェイ、追加の情報をどのように取得するかを決定します。

上記の 2 つの属性が意味を持つには、そのサブネットの enable_dhcp 属性が True になっていなければなりません。

SLAAC を使ったアドレス割り当て

SLAAC を使う場合、現在サポートされている ipv6_ra_modeipv6_address_mode の組み合わせは以下の通りです。

ipv6_ra_mode ipv6_address_mode

結果

指定なし

SLAAC

アドレスは EUI-64 を使って割り当てられます。ルーティング情報は外部ルーターにより提供されます。

SLAAC SLAAC

アドレスは EUI-64 を使って割り当てられます。ルーティング情報も OpenStack Networking が提供します。

ipv6_ra_modeslaac に設定すると、 OpenStack Networking のルーターはルーター作成時に RA パケットを送信するように設定されます。 RA メッセージのアドレス設定フラグは以下の値に設定されます。

  • Auto Configuration Flag = 1
  • Managed Configuration Flag = 0
  • Other Configuration Flag = 0

SLAAC が有効になった IPv6 サブネットを持つ Neutron ネットワークでは、そのネットワークに接続されたすべてのポートが IPv6 アドレスを与えられることになります。これは、 RA ブロードキャストメッセージが Neutron ネットワークに送信された際に、そのメッセージがネットワーク上の IPv6 が有効になったすべてのポートで受信され、各ポートは RA パケットに含まれる情報に基いて IPv6 アドレスを設定するからです。いくつかの場合では、ポートにすでに割り当てられている他の IPv4 や IPv6 アドレスに加えて、 IPv6 SLAAC アドレスがポートに追加されます。

DHCPv6

DHCPv6-stateless の場合、現在サポートされている組み合わせは以下の通りです。

ipv6_ra_mode ipv6_address_mode

結果

DHCPv6-stateless DHCPv6-stateless

アドレスは neutron ルーターにより、追加の情報は neutron の DHCP 実装により割り当てられます。

DHCPv6-stateful DHCPv6-stateful

アドレスと追加の情報は DHCPv6 を使って割り当てられます。

ipv6_ra_mode に DHCPv6-stateless を指定すると、neutron ルーターで radvd エージェントが有効になり、RA を送信するように設定されます。この場合、RA パケットのアドレス設定フラグの値は以下のようになります。同様に、 ipv6_address_mode に DHCPv6-stateless を設定すると、neutron の DHCP 実装が追加のネットワーク情報を提供するように設定されます。

  • Auto Configuration Flag = 1
  • Managed Configuration Flag = 0
  • Other Configuration Flag = 1

ルーターのサポート

IPv6 での neutron ルーターの動作は IPv4 の場合とはいくつかの点で異なります。

ネットワークのデフォルトゲートウェイポートして動作する内部ルーターポートでは、そのネットワークに関連付けられた IPv6 サブネットすべてで 1 つの共通のポートが共有されます。つまり、IPv6 内部ルーターインターフェースは複数の IPv6 アドレスを持ち、そのアドレスはそのネットワークに関連付けられた各 IPv6 サブネットから 1 つずつ割り当てられ、それとは別に IPv4 サブネットに対する IPv4 内部ルーターインターフェースが作成されるということになります。一方、外部ルーターポートではデュアルスタック設定が可能で、 IPv4 と IPv6 アドレスの両方が割り当てられます。

グローバルに一意なアドレス (Global Unicast Address; GUA) プレフィックスとアドレスを割り当てられた neutron テナントネットワークは、外部の世界にアクセスする際に neutron ルーターの外部ゲートウェイポートでの NAT が不要です。 NAT が不要なため、外部ルーターポートは外部ネットワークと送受信するための GUA が必要ありません。これは、neutron 外部ネットワークに GUA な IPv6 サブネットプレフィックスが不要なことを意味します。デフォルトでは、外部ゲートウェイポートに関連付けられた IPv6 LLA がルーティング用に使用されます。このシナリオに対応するため、 neutron の router-gateway-set API に変更が行われ、 neutron ルーターに関連付ける外部ネットワークで IPv6 サブネットが必須ではなくなりました。 上流ルーターの LLA アドレスは以下の 2 つの方法で学習されます。

  1. 上流ルーターが RA をサポートしていない場合、 neutron L3 エージェントの設定ファイルの ipv6_gateway フラグで外部ルーターのゲートウェイ LLA を設定できます。

  2. 上流ルーターが RA を送信できる場合は、サブネットが割り当てられておらず、 ipv6_gateway フラグが設定されていない場合、 neutron ルーターはネクストホップの LLA を自動的に学習します。

実際には、 ipv6_gateway フラグが上流ルーターから受信する RA よりも優先されます。 GUA のネクストホップを使いたい場合は、外部ルーターポートにサブネットを確保して、そのサブネットのゲートウェイとして上流ルーターの GUA アドレスを割り当てることで実現できます。

注釈

ほとんど OpenStack が関与することなく、テナント同士が隔離されたネットワーク (ルーターポートを持たないネットワーク) 上で LLA を使って互いに通信できる可能性がある点に注意してください。このことがすべてのケースで正しいかは、この節の著者は検証していません。

Neutron の DVR (分散ルーター機能) と IPv6

分散仮想ルーター (DVR) 機能が有効の場合も IPv6 は動きますが、すべての入力方向、出力方向のトラフィックが centralized router を経由します (つまり、分散ではありません)。IPv6 が DVR が完全に動作するようになるには、まだ開発が必要です。

ネットワークサービス

VPNaaS

VPNaaS は IPv6 に対応していますが、 Kilo およびそれ以前のリリースでは、バグがあり、使い方が制限されてしまう可能性があります。 Liberty リリースでより徹底的にテストとバグ修正が行われ、 IPv6 ベースの VPNaaS は IPv4 の場合と同様に使えるようになりました。 peer_addresspeer_cidr の一方または両方に IPv6 アドレスを指定できます。上で説明したアドレスモード属性とルーターモード属性の組み合わせにより、IPv6 サポートのレベルが変わることはありません。

LBaaS

TODO

FWaaS

FWaaS では、IPv6 を使ったルールを作成できます。

NAT と Floating IP

現時点では、 OpenStack Networking は IPv6 についてはどんな種類の NAT 機能も提供していません。 IPv4 と異なり、 IPv6 の Floating IP の OpenStack Networking 組み込みのサポートはありません。テナントへの IPv6 アドレス割り当てはテナント間で重複のない GUA を使って行われるものと仮定されています。

セキュリティーの考慮事項

ゲストのインターフェース設定

OpenStack は現在のところ RFC 4941 で定義されたプライバシー拡張に対応していません。使用するインターフェース識別子と DUID は、 RFC 2373 に書かれているように直接 MAC に基づいて生成される必要があります。コンピュートホストは、インターフェース識別子の生成時にプライバシー拡張を使用しないように設定しなければいけません。

IPv4 向けに提供されているのと同様の IPv6 用のメタデータサービスはありません。デュアルスタックのゲストの場合、代わりに IPv4 のメタデータサービスを使うことは可能です。

IPv4 と異なり、ネットワークの MTU は、 DHCP メッセージではなく、ルーターが送信する RA メッセージにより通知されます。

OpenStack の制御、管理ネットワークでの考慮事項

Kilo リリース時点では、多くの努力が行われ、テナントネットワークが IPv6 と IPv4 のデュアルスタック通信が上記の様々な設定で動作するようになっています。OpenStack 制御ネットワークのデュアルスタック設定での動作については、このレベルでの精査は行われていません。同様に、OpenStack API エンドポイントに IPv6 ネットワーク経由でアクセスできるようにする調査はほとんど行われていません。現時点では、 Open vSwitch (OVS) のトンネルタイプ STT, VXLAN, GRE では IPv4 エンドポイントだけがサポートされており、IPv6 エンドポイントは利用できません。そのため、これらの技術では IPv6 だけで完全な環境を作ることはできません。

Prefix delegation (プレフィックス移譲)

Liberty リリース以降では、 OpenStack Networking は IPv6 prefix delegation に対応しています。このセクションでは、IPv6 prefix delegation を使って サブネットの CIDR の自動的な割り当てを行えるようにするのに必要な設定と利用手順を説明します。これにより、 OpenStack 管理者は (OpenStack Networking サービスの) 外部の DHCPv6 サーバーを使って、テナントネットワークのプレフィックスの管理を行えるようになります。

注釈

prefix delegation が利用できるようになったのは Liberty リリースです。Kilo リリースでは利用できません。 HA ルーターと DVR ルーターは現時点ではこの機能に対応していません。

prefix delegation 用の OpenStack Networking の設定

prefix delegation を有効にするには、 /etc/neutron/neutron.conf ファイルを編集します。 OpenStack Liberty を実行している場合には、以下の変更を行います。

default_ipv6_subnet_pool = prefix_delegation

OpenStack Mitaka を実行している場合には、以下の変更を行います。

ipv6_pd_enabled = True

注釈

prefix delegation 用としてデフォルトの dibbler ベースのドライバーを使っていない場合は、 /etc/neutron/neutron.conf でドライバーの設定も必要です。

pd_dhcp_driver = <class path to driver>

デフォルト以外のドライバーの場合、追加の設定が必要な場合があります。 追加の設定 を参照してください。

これにより、ユーザーが CIDR またはサブネットプール ID をサブネット作成時に指定しなかった場合、 OpenStack Networking は prefix delegation 機構を使ってサブネット割り当てを行うようになります。

要件

この機能を使用するには、 prefix delegation に対応した DHCPv6 サーバーが、 OpenStack Networking ノードから到達可能なところにある必要があります。この DHCPv6 サーバーは OpenStack Networking ノード上で実行されるソフトウェアでも、別の場所にあるソフトウェアでも、物理ルーターでも構いません。このガイドの目的に鑑み、ここではオープンソースの DHCPv6 サーバーである Dibbler を使用します。 Dibbler は多くの Linux パッケージマネージャーで用意されていますし、ソースを https://github.com/tomaszmrugalski/dibbler で入手できます。

OpenStack Networking の prefix delegation ドライバーの参照実装を使う場合、 Dibbler は、 DHCPv6 クライアントとなる OpenStack Networking ノード上にインストールする必要があります。バージョン 1.0.1 以上が必要です。

このガイドでは、外部ネットワークブリッジが存在するネットワークノード上で Dibbler サーバーが動いていることを前提にします。すでに prefix delegation に対応した DHCPv6 サーバーがそこで動いている場合には、次のセクションはスキップできます。

Dibbler サーバーの設定

Dibbler をインストールしたら、 /etc/dibbler/server.conf ファイルを編集します。

script "/var/lib/dibbler/pd-server.sh"

iface "br-ex" {
    pd-class {
        pd-pool 2001:db8:2222::/48
        pd-length 64
    }
}

上記の設定ファイルで使用されているオプションは以下の通りです:

  • script: プレフィックスの移譲、解放が行われた際に実行されるスクリプトを指します。このスクリプトが必要なのは、サブネットのインスタンスが外部ネットワークへのアクセスが必要な場合だけです。詳しくは後述します。

  • iface: prefix delegation メッセージを待ち受けるネットワークインターフェース名。

  • pd-pool: 移譲される prefix の取得元となるプレフィックス。外部ネットワークアクセスが不要の場合は設定例のままで十分です。アクセスが必要な場合は、一意でグローバルに到達可能なプレフィックスを指定する必要があります。

  • pd-length: 移譲されるプレフィックスの長さ。現在の OpenStack Networking の参照実装で動作するためには、この値は 64 でなければいけません。

インスタンスに外部ネットワークへのアクセスを提供する場合、 Dibbler サーバーは移譲するプレフィックスそれぞれについて新しい経路を作成する必要があります。これは、上記の設定ファイルで指定した名前のスクリプトにより行われます。 ファイル /var/lib/dibbler/pd-server.sh を編集します。

if [ "$PREFIX1" != "" ]; then
    if [ "$1" == "add" ]; then
        sudo ip -6 route add ${PREFIX1}/64 via $REMOTE_ADDR dev $IFACE
    fi
    if [ "$1" == "delete" ]; then
        sudo ip -6 route del ${PREFIX1}/64 via $REMOTE_ADDR dev $IFACE
    fi
fi

上記のスクリプトで使用されている変数は以下の通りです。

  • $PREFIX1: Dibbler サーバーにより追加、削除されるプレフィックス

  • $1: 実行中の操作

  • $REMOTE_ADDR: 要求を行った Dibbler クライアントの IP アドレス

  • $IFACE: 要求を受信したネットワークインターフェース

このシナリオで使うには上記の設定で十分です。 Dibbler のインストール、設定、実行方法についての詳しい情報は http://klub.com.pl/dhcpv6/doc/dibbler-user.pdf にある Dibber ユーザーガイドにあります。

Dibbler サーバーを開始するには、以下を実行します。

# dibbler-server run

もしくは headless モードで実行するには、以下のようにします。

# dibbler-server start

DevStack を使用する場合には、 stack.sh が完了した後にサーバーを開始することが重要です。必要なネットワークインターフェースが作成された状態でサーバーを開始するためです。

ユーザーのワークフロー

最初に、ネットワークと IPv6 サブネットを作成します。

$ neutron net-create ipv6-pd

Created a new network:
+-----------------+--------------------------------------+
| Field           | Value                                |
+-----------------+--------------------------------------+
| admin_state_up  | True                                 |
| id              | 31ef3e85-111f-4772-8172-8e4a404a7476 |
| mtu             | 1450                                 |
| name            | ipv6-pd                              |
| router:external | False                                |
| shared          | False                                |
| status          | ACTIVE                               |
| subnets         |                                      |
| tenant_id       | 28b39bcce66e4a648f82e2362b958b60     |
+-----------------+--------------------------------------+

$ neutron subnet-create ipv6-pd --name ipv6-pd-1 --ip_version 6 \
  --ipv6_ra_mode slaac --ipv6_address_mode slaac --use_default_subnetpool

Created a new subnet:
+-------------------+--------------------------------------------------+
| Field             | Value                                            |
+-------------------+--------------------------------------------------+
| allocation_pools  | {"start": "::2", "end": "::ffff:ffff:ffff:fffe"} |
| cidr              | ::/64                                            |
| dns_nameservers   |                                                  |
| enable_dhcp       | True                                             |
| gateway_ip        | ::1                                              |
| host_routes       |                                                  |
| id                | ea139dcd-17a3-4f0a-8cca-dff8b4e03f8a             |
| ip_version        | 6                                                |
| ipv6_address_mode | slaac                                            |
| ipv6_ra_mode      | slaac                                            |
| name              | ipv6-pd-1                                        |
| network_id        | 31ef3e85-111f-4772-8172-8e4a404a7476             |
| subnetpool_id     | prefix_delegation                                |
| tenant_id         | 28b39bcce66e4a648f82e2362b958b60                 |
+-------------------+--------------------------------------------------+

サブネットは、 prefix delegation でアドレスが割り当てられるまでは、仮の CIDR で作成されます。重複エラーが発生しないかぎりは、仮の CIDR を持つサブネットは何個でも存在できます。 subnetpool_id は自動的に prefix_delegation に設定されます。

prefix delegation 処理を行うには、ルーターインターフェースを作成し、このサブネットと外部ネットワーク上にアクティブなインターフェースを持つルーターを接続します。

$ neutron router-interface-add cb9b7a2c-0ffa-412f-989a-1e6c60e1c02f \
  ea139dcd-17a3-4f0a-8cca-dff8b4e03f8a
Added interface a7e4d663-e3fc-4b8f-909f-865c397a930e to router
cb9b7a2c-0ffa-412f-989a-1e6c60e1c02f.

prefix delegation 機構により、外部ネットワーク経由で prefix delegation サーバーに要求が送信され、 prefix delegation サーバーは移譲するプレフィックスを返します。サブネットは新しいプレフィックスを持つように更新され、新しい IP アドレスがすべてのポートに発行されます。

$ neutron subnet-show ipv6-pd-1

+-------------------+-------------------------------------------------+
| Field             | Value                                           |
+-------------------+-------------------------------------------------+
| allocation_pools  | {"start": "2001:db8:2222:6977::2",              |
|                   | "end":"2001:db8:2222:6977:ffff:ffff:ffff:fffe"} |
| cidr              | 2001:db8:2222:6977::/64                         |
| dns_nameservers   |                                                 |
| enable_dhcp       | True                                            |
| gateway_ip        | 2001:db8:2222:6977::1                           |
| host_routes       |                                                 |
| id                | ea139dcd-17a3-4f0a-8cca-dff8b4e03f8a            |
| ip_version        | 6                                               |
| ipv6_address_mode | slaac                                           |
| ipv6_ra_mode      | slaac                                           |
| name              | ipv6-pd-1                                       |
| network_id        | 31ef3e85-111f-4772-8172-8e4a404a7476            |
| subnetpool_id     | prefix_delegation                               |
| tenant_id         | 28b39bcce66e4a648f82e2362b958b60                |
+-------------------+-------------------------------------------------+

prefix delegation サーバーがグローバルに到達可能なプレフィックスを移譲して経路を設定するように設定されている場合には、このサブネット上のポートを持つインスタンスはこの時点で外部ネットワークにアクセスできるようになります。

ルーターインターフェースを削除すると、サブネットは仮の CIDR に戻り、すべてのポートの IP アドレスが更新されます。移譲されていたプレフィックスは解放され、必要に応じて自動的に新たに使用されます。

参考資料

次のリンクでは、OpenStack で IPv6 を設定する手順が手順を追った詳しい説明があります: http://www.debug-all.com/?p=52

追加の設定

Neutron dhcpv6_pd_agent

dhcpv6_pd_agent 用のドライバーを有効にするには、 /etc/neutron/neutron.conf: で pd_dhcp_driver に dhcpv6_pd_agent を指定します。

pd_dhcp_driver = neutron_pd_agent

neutron-pd-agent が prefix delegation サーバーと通信できるように、外部通信に使うネットワークインターフェースを設定しなければいけません。 DevStack では、デフォルト値として br-ex が設定されます。

pd_interface = br-ex

DevStack 実行後は、以下のコマンドを実行して neutron-pd-agent を開始します。

neutron-pd-agent --config-file /etc/neutron/neutron.conf
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.