使用環境内のプロバイダ ネットワークおよびテナント ネットワークに、BGP 動的ルーティングを設定することができます。

BGP を有効にすると、テナントによって作成された論理サブネットは、送信元 NAT やフローティング IP アドレスを必要とせずに、使用環境の外部でアドバタイズされます。最初に VXLAN 外部ネットワークを作成する必要があります。これは後でゲートウェイ エッジの内部インターフェイスとして使用します。

手順

  1. OpenStack 管理サーバviouser としてログインします。
  2. コントローラ ノードに viouser としてログインします。
  3. root ユーザーに切り替えて、クラウド管理者の認証情報ファイルをロードします。
    sudo su -
    source ~/cloudadmin.rc
  4. 今後のテナント サブネットおよび外部 VXLAN ネットワークのサブネットの IPv4 アドレス範囲を作成します。
    neutron address-scope-create name 4
  5. 外部ネットワークのサブネット プールを作成します。
    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 アドレス範囲の名前を入力します。

  6. テナント ネットワーク用のサブネット プールを作成します。
    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 アドレス範囲の名前を入力します。

  7. VXLAN ベースの外部ネットワークを作成します。
    neutron net-create network-name --provider:network_type vxlan --router:external

    このコマンドを実行すると、NSX Data Center for vSphere 内に新しい論理スイッチが作成されます。

  8. 外部ネットワークのサブネットを作成します。

    このサブネットでは 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 で外部ネットワーク用に作成したサブネット プールを入力します。

  9. 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 パラメータの値を特定します。

  10. 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 を表示できます。

  11. 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 パスワードを入力します。

  12. 物理ルーターを設定します。
    1. 物理ルーターの AS が Edge ノードのリモート AS であることを確認します。
    2. Edge ノードを BGP ネイバーとして設定します。
    3. 動的ゲートウェイとして自分自身をアドバタイズするよう各ルーターを設定します。
  13. BGP スピーカーを作成して設定します。
    1. BGP スピーカーを作成します。
      neutron bgp-speaker-create --local-as local_as_value name_bgp_speaker
      
    2. 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
    3. BGP スピーカーに BGP ピアを追加します。
      neutron bgp-speaker-peer-add name_bgp_speaker name_GW-EDGE1 
      
      neutron bgp-speaker-peer-add name_bgp_speaker name_GW-EDGE2
      
    4. VXLAN ネットワークにスピーカーを関連付けます。
      neutron bgp-speaker-network-add name_bgp_speaker external_VXLAN_network_name
  14. (オプション) テナントの BGP ルーターを作成します。

    テナント ユーザーは BGP ルーターを作成できます。テナント ユーザーが SNAT を使用しないでルーターを構成するには、admin である必要があります。

    1. テナント用の 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
      
    2. BGP 構成を持つルーターを作成します。

      BGP はすべての形状の OpenStack 論理ルーター(shareddistributed、および 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
      

タスクの結果

これで、BGP ダイナミック ルーティングがプロバイダ側に構成され、テナントも使用できるようになりました。