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 ID。
    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 ID。
    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 动态路由,租户也可以使用该路由。