使用環境内のプロバイダ ネットワークおよびテナント ネットワークに、BGP 動的ルーティングを設定することができます。
BGP を有効にすると、テナントによって作成された論理サブネットは、送信元 NAT やフローティング IP アドレスを必要とせずに、使用環境の外部でアドバタイズされます。最初に VXLAN 外部ネットワークを作成する必要があります。これは後でゲートウェイ エッジの内部インターフェイスとして使用します。
手順
- OpenStack 管理サーバ に
viouser
としてログインします。 - コントローラ ノードに
viouser
としてログインします。 root
ユーザーに切り替えて、クラウド管理者の認証情報ファイルをロードします。sudo su - source ~/cloudadmin.rc
- 今後のテナント サブネットおよび外部 VXLAN ネットワークのサブネットの IPv4 アドレス範囲を作成します。
neutron address-scope-create name 4
- 外部ネットワークのサブネット プールを作成します。
neutron subnetpool-create external-pool --pool-prefix network-address --default-prefixlen prefix-bits --address-scope scope-name --shared
オプション
説明
external-pool
サブネット プールの名前を入力します。
--pool-prefix
サブネット プールのネットワーク アドレスを CIDR 形式(192.0.2.0/24 など)で入力します。サブネットは、このネットワークから割り当てられます。
--default-prefixlen
プリフィックス長を指定せずに作成された新しいサブネットに使用するネットワーク プリフィックス長(ビット数)を入力します。
--address-scope
手順 4 で作成した IPv4 アドレス範囲の名前を入力します。
- テナント ネットワーク用のサブネット プールを作成します。
neutron subnetpool-create tenant-pool --pool-prefix network-address --default-prefixlen prefix-bits --address-scope scope-name --shared
注:OpenStack は、このサブネット プールを物理ファブリックにアドバタイズします。現在使用されていないプリフィックスを指定します。
オプション
説明
tenant-pool
サブネット プールの名前を入力します。
--pool-prefix
サブネット プールのネットワーク アドレスを CIDR 形式(192.51.100.0/24 など)で入力します。サブネットは、このネットワークから割り当てられます。
--default-prefixlen
プリフィックス長を指定せずに作成された新しいサブネットに使用するネットワーク プリフィックス長(ビット数)を入力します。
--address-scope
手順 4 で作成した IPv4 アドレス範囲の名前を入力します。
- VXLAN ベースの外部ネットワークを作成します。
neutron net-create network-name --provider:network_type vxlan --router:external
このコマンドを実行すると、NSX Data Center for vSphere 内に新しい論理スイッチが作成されます。
- 外部ネットワークのサブネットを作成します。
このサブネットでは DHCP を無効にしておく必要があります。また、ゲートウェイは配置しません。
neutron subnet-create external-network external-subnet-address --name external-subnet --allocation-pool start=subnet-ip1,end=subnet-ip2 --subnetpool provider-subnet-pool --no-gateway --disable-dhcp
オプション
説明
external-network
手順 7 で作成した VXLAN ベースの外部ネットワークの名前を入力します。
external-subnet-address
サブネットのネットワーク アドレスを CIDR 形式(192.51.100.0/28 など)で入力します。
--name
サブネットの名前を入力します。
--allocation-pool
このサブネットから割り当てる IP アドレス範囲の最初と最後の IP アドレスを入力します。
--subnetpool
手順 5 で外部ネットワーク用に作成したサブネット プールを入力します。
- BGP Edge ノードを作成します。
sudo -u neutron nsxadmin -r bgp-gw-edge -o create --property name=edge-name --property local-as=local-as-number --property external-iface=portgroup-moid:mgmt-network-ip --property internal-iface=physical-net-id:external-network-ip
オプション
説明
name
BGP Edge ノードの名前を入力します。
local-as
Edge ノードのローカル AS 番号を入力します。Edge ノードと物理ルーターを同じ AS に配置することはできません。
external-iface
Edge ノードを物理ルーターに接続する VLAN に関連付けられたポート グループの管理対象オブジェクト ID (MOID) を入力します。コロンの後に、管理ネットワーク上の Edge ノードの IP アドレスを入力します。
internal-iface
VXLAN ベースの外部ネットワークの仮想ワイヤー ID を入力します。コロンの後に、物理ネットワーク上の Edge ノードの IP アドレスを入力します。
仮想ワイヤー ID を検索するには、
openstack network show external-network-name
コマンドを実行して、provider:physical_network パラメータの値を特定します。 - Edge ノードで BGP アドバタイズを有効にします。
sudo -u neutron nsxadmin -r routing-redistribution-rule -o create --property gw-edge-ids=edge1-id,edge2-id --property learner-protocol=bgp --property learn-from=connected,bgp --property action=permit
gw-edge-ids パラメータには、名前ではなく、Edge の ID(
edge-4
など)を使用します。sudo -u neutron nsxadmin -r bgp-gw-edge -o view コマンドを実行して、各 BGP Edge ノードの ID を表示できます。 - Edge ノード間に BGP ネイバー関係を確立します。
sudo -u neutron nsxadmin -r bgp-neighbour -o create --property gw-edge-ids=edge1-id,edge2-id --property ip-address=physical-router1-ip --property remote-as=remote-as-number --property password=bgp-password
オプション
説明
gw-edge-ids
各ノードの Edge ID をカンマ区切りで入力します。
ip-address
物理ルーターの IP アドレスを入力します。
remote-as
Edge ノードに接続された物理ルーターの AS 番号を入力します。
パスワード
BGP パスワードを入力します。
- 物理ルーターを設定します。
- 物理ルーターの AS が Edge ノードのリモート AS であることを確認します。
- Edge ノードを BGP ネイバーとして設定します。
- 動的ゲートウェイとして自分自身をアドバタイズするよう各ルーターを設定します。
- BGP スピーカーを作成して設定します。
- BGP スピーカーを作成します。
neutron bgp-speaker-create --local-as local_as_value name_bgp_speaker
- BGP ピアを作成します。
neutron bgp-peer-create --peer-ip internal_interface_network_GW-EDGE1 --remote-as 65001 --password BGP_password --auth-type md5 name_GW-EDGE1 --esg-id edge-ID_GW-EDGE1 neutron bgp-peer-create --peer-ip internal_interface_network_GW-EDGE2 --remote-as 65001 --password BGP_password --auth-type md5 name_GW-EDGE2 --esg-id edge-ID_GW-EDGE2
- BGP スピーカーに BGP ピアを追加します。
neutron bgp-speaker-peer-add name_bgp_speaker name_GW-EDGE1 neutron bgp-speaker-peer-add name_bgp_speaker name_GW-EDGE2
- VXLAN ネットワークにスピーカーを関連付けます。
neutron bgp-speaker-network-add name_bgp_speaker external_VXLAN_network_name
- BGP スピーカーを作成します。
- (オプション) テナントの BGP ルーターを作成します。
テナント ユーザーは BGP ルーターを作成できます。テナント ユーザーが SNAT を使用しないでルーターを構成するには、
admin
である必要があります。- テナント用の 2 つの論理スイッチを作成し、これらのサブネット プールを作成します。
neutron net-create name_Tenant1_LS1 neutron subnet-create --name name_network_Tenant1-LS1 name_Tenant1_LS1 --subnetpool selfservice neutron net-create name_Tenant1_LS2 neutron subnet-create --name name_network_Tenant1-LS2 name_Tenant1_LS2 --subnetpool selfservice
- BGP 構成を持つルーターを作成します。
BGP はすべての形状の OpenStack 論理ルーター(
shared
、distributed
、およびexclusive
)で機能します。neutron router-create name_Tenant1-LR --router_type=exclusive neutron router-interface-add name_Tenant1-LR name_network_Tenant1-LS1 neutron router-interface-add name_Tenant1-LR name_network_Tenant1-LS2 neutron router-gateway-set name_Tenant1-LR --disable-snat external_VXLAN_network_name
- テナント用の 2 つの論理スイッチを作成し、これらのサブネット プールを作成します。
タスクの結果
これで、BGP ダイナミック ルーティングがプロバイダ側に構成され、テナントも使用できるようになりました。