您可以為環境中的提供者網路和承租人網路設定 BGP 動態路由。
啟用 BGP 後,您的承租人建立的邏輯子網路不需要來源 NAT 或浮動 IP 位址,即可通告至您的環境之外。您必須先建立 VXLAN 外部網路,稍後可將其用作閘道 Edge 的內部介面。
程序
- 以
viouser
身分登入 OpenStack 管理伺服器。 - 以
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 位址。
--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 相關聯的連接埠群組的受管理物件識別碼 (MOID)。在冒號後面輸入管理網路上 Edge 節點的 IP 位址。
internal-iface
輸入基於 VXLAN 的外部網路的虛擬連線識別碼。在冒號後面輸入實體網路上 Edge 節點的 IP 位址。
若要找到虛擬連線識別碼,請執行
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 識別碼 (例如
edge-4
),而不是名稱。您可以執行 sudo -u neutron nsxadmin -r bgp-gw-edge -o view 命令,以顯示每個 BGP Edge 節點的識別碼。 - 在 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 識別碼,以逗號分隔。
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 路由器。承租人使用者必須為
admin
,才能在不使用 SNAT 的情況下設定路由器。- 為其建立用於承租人和子網路集區的兩個邏輯交換器。
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
- 為其建立用於承租人和子網路集區的兩個邏輯交換器。
結果
BGP 動態路由現已在提供者端設定,承租人亦可加以使用。