VMware Integrated OpenStack 4.0 開始,您可以為提供者和承租人設定動態路由。

您必須先建立 VXLAN 外部網路,稍後可將其用作閘道 Edge 的內部介面。

必要條件

  • 您必須使用 VMware NSX for vSphere 做為虛擬網路提供者。

程序

  1. 針對未來承租人子網路和外部 VXLAN 網路子網路建立 IPv4 位址範圍。
    neutron address-scope-create scope_name 4
  2. 建立提供者子網路集區。
    scope_name 取代為您之前建立的位址範圍的名稱。
    neutron subnetpool-create --pool-prefix 10.10.10.0/24 --default-prefixlen 24 provider_pool_name --address-scope scope_name
  3. 針對承租人網路建立自助服務子網路集區。
    scope_name 取代為您之前建立的位址範圍的名稱。
    neutron	subnetpool-create --pool-prefix 1.1.1.0/24 --default-prefixlen 26 selfservice	--address-scope scope_name --shared
  4. 建立外部 VXLAN 網路。
    下列命令會在 VMware NSX for vSphere 中建立新的邏輯交換器。
    neutron net-create --provider:network_type vxlan --router:external external_VXLAN_network_name
  5. 建立外部 VXLAN 子網路。
    provider_pool_name 取代為您之前建立的提供者集區的名稱。將 external_VXLAN_network_name 取代為您之前建立的網路的名稱。
    neutron subnet-create --no-gateway --name ext_vxlan_subnet_name --disable-dhcp --allocation-pool start=start_IP,end=end_IP --subnetpool provider_pool_nameexternal_VXLAN_network_nameNETWORK[CIDR]
  6. 使用 nsxadmin 公用程式建立 BGP 對等互連閘道 Edge。
    閘道 Edge 使用管理網路做為外部介面,並使用所建立的外部網路做為內部介面。
    nsxadmin -r bgp-gw-edge -o create --property name=name_GW-EDGE1 --property local-as=65001 --property external-iface=morefid:mgtnetwork --property internal-iface=morefid:internal_interface_network_GW-EDGE1
    
    nsxadmin -r bgp-gw-edge -o create --property name=name_GW-EDGE2 --property local-as=65001 --property external-iface=morefid:mgtnetwork --property internal-iface=morefid:internal_interface_network_GW-EDGE2
  7. 使用 BGP 通告更新 NSX Edge。
    使用您在上一個步驟中建立的 Edge 的識別碼。
    nsxadmin -r routing-redistribution-rule -o create --property gw-edge-ids=edge-ID_GW-EDGE1,edge-ID_GW-EDGE2 --property learner-protocol=bgp --property learn-from=connected,bgp --property action=permit 
    
  8. 使用 BGP 鄰接項目更新 NSX Edge。
    使用您之前建立的 Edge 的識別碼。
    nsxadmin -r bgp-neighbour -o create --property gw-edge-ids=edge-ID_GW-EDGE1,edge-ID_GW-EDGE2 --property ip-address=IP_physical_router1 --property remote-as=65000 --property password=BGP_password
    
    nsxadmin -r bgp-neighbour -o create --property gw-edge-ids=edge-ID_GW-EDGE1,edge-ID_GW-EDGE2 --property ip-address=IP_physical_router2 --property remote-as=65000 --property password=BGP_password
  9. 更新實體路由器。
    1. AS 值設為 65000
    2. 將 BGP 鄰接項目設為 name_GW-EDGE1name_GW-EDGE2
    3. 設定為將本身通告為動態閘道。
  10. 建立並設定 BGP 發言人。
    1. 建立 BGP 發言人。
      neutron bgp-speaker-create --local-as local_as_valuename_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_speakername_GW-EDGE1 
      
      neutron bgp-speaker-peer-add name_bgp_speakername_GW-EDGE2
    4. 將發言人與 VXLAN 網路相關聯。
      neutron bgp-speaker-network-add name_bgp_speakerexternal_VXLAN_network_name
  11. (選擇性) 為承租人建立 BGP 路由器。
    承租人使用者可建立其 BGP 路由器。承租人使用者必須為 admin,才能在不使用 SNAT 的情況下設定路由器。
    1. 為其建立用於承租人和子網路集區的兩個邏輯交換器。
      neutron net-create name_Tenant1_LS1
      
      neutron subnet-create --name name_network_Tenant1-LS1name_Tenant1_LS1 --subnetpool selfservice
      
      neutron net-create name_Tenant1_LS2
      
      neutron subnet-create --name name_network_Tenant1-LS2name_Tenant1_LS2 --subnetpool selfservice
      
    2. 使用 BGP 組態建立路由器。
      BGP 適用於所有 OpenStack 邏輯路由器板型規格: shareddistributedexclusive
      neutron router-create name_Tenant1-LR --router_type=exclusive
      
      neutron router-interface-add name_Tenant1-LRname_network_Tenant1-LS1
      
      neutron router-interface-add name_Tenant1-LRname_network_Tenant1-LS2
      
      neutron router-gateway-set name_Tenant1-LR --disable-snat external_VXLAN_network_name

結果

BGP 動態路由現已在提供者端設定,承租人亦可加以使用。