Sie können dynamisches BGP-Routing für die Anbieter- und Mandantennetzwerke in Ihrer Umgebung konfigurieren.

Nachdem Sie BGP aktivieren, werden die von Ihren Mandanten erstellten logischen Subnetze außerhalb Ihrer Umgebung angekündigt. Dafür sind weder Quell-NAT- noch dynamische IP-Adressen erforderlich. Sie müssen zuerst ein externes VXLAN-Netzwerk erstellen, das Sie später als interne Schnittstelle für die Gateway-Edges verwenden.

Prozedur

  1. Melden Sie sich beim OpenStack Management Server als viouser an.
  2. Melden Sie sich beim Controller-Knoten als viouser an.
  3. Wechseln Sie zum root-Benutzer und laden Sie die Datei mit den Anmeldedaten des Cloud-Administrators.
    sudo su -
    source ~/cloudadmin.rc
  4. Erstellen Sie einen IPv4-Adressbereich für künftige Mandanten-Subnetze und das Subnetz Ihres externen VXLAN-Netzwerks.
    neutron address-scope-create name 4
  5. Erstellen Sie einen Subnetzpool für das externe Netzwerk.
    neutron subnetpool-create external-pool --pool-prefix network-address --default-prefixlen prefix-bits --address-scope scope-name --shared

    Option

    Beschreibung

    external-pool

    Geben Sie einen Namen für den Subnetzpool ein.

    --pool-prefix

    Geben Sie die Netzwerkadresse des Subnetzpools im CIDR-Format ein (z. B. 192.0.2.0/24). Subnetze werden aus diesem Netzwerk zugeteilt.

    --default-prefixlen

    Geben Sie die Netzwerkpräfixlänge (in Bit) ein, die für neue Subnetze verwendet werden soll, welche ohne Angabe einer Präfixlänge erstellt werden.

    --address-scope

    Geben Sie den Namen des IPv4-Adressbereichs ein, den Sie in Schritt 4 erstellt haben.

  6. Erstellen Sie Subnetzpool für Mandantennetzwerke.
    neutron subnetpool-create tenant-pool --pool-prefix network-address --default-prefixlen prefix-bits --address-scope scope-name --shared
    Hinweis:

    OpenStack kündigt diesen Subnetzpool für das physische Fabric an. Geben Sie ein Präfix an, das derzeit nicht verwendet wird.

    Option

    Beschreibung

    tenant-pool

    Geben Sie einen Namen für den Subnetzpool ein.

    --pool-prefix

    Geben Sie die Netzwerkadresse des Subnetzpools im CIDR-Format ein (z. B. 192.51.100.0/24). Subnetze werden aus diesem Netzwerk zugeteilt.

    --default-prefixlen

    Geben Sie die Netzwerkpräfixlänge (in Bit) ein, die für neue Subnetze verwendet werden soll, welche ohne Angabe einer Präfixlänge erstellt werden.

    --address-scope

    Geben Sie den Namen des IPv4-Adressbereichs ein, den Sie in Schritt 4 erstellt haben.

  7. Erstellen Sie ein VXLAN-basiertes externes Netzwerk.
    neutron net-create network-name --provider:network_type vxlan --router:external

    Dieser Befehl erstellt einen neuen logischen Switch in NSX Data Center for vSphere.

  8. Erstellen Sie ein Subnetz im externen Netzwerk.

    DHCP muss für das Subnetz deaktiviert sein und das Subnetz darf kein Gateway aufweisen.

    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

    Option

    Beschreibung

    external-network

    Geben Sie den Namen des VXLAN-basierten externen Netzwerks ein, das Sie in Schritt 7 erstellt haben.

    external-subnet-address

    Geben Sie die Netzwerkadresse für das Subnetz im CIDR-Format ein (z. B. 192.51.100.0/28).

    --name

    Geben Sie einen Namen für das Subnetz ein.

    --allocation-pool

    Geben Sie die erste und letzte IP-Adresse des Bereichs ein, den Sie aus diesem Subnetz zuweisen möchten.

    --subnetpool

    Geben Sie den Subnetzpool ein, den Sie in Schritt 5 für das externe Netzwerk erstellt haben.

  9. Erstellen Sie BGP-Edge-Knoten.
    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

    Option

    Beschreibung

    name

    Geben Sie einen Namen für den BGP-Edge-Knoten ein.

    local-as

    Geben Sie die lokale AS-Nummer für den Edge-Knoten ein. Die Edges und physischen Router dürfen sich nicht im selben AS befinden.

    external-iface

    Geben Sie den MOID (Managed Object Identifier) der Portgruppe ein, die dem VLAN zugeordnet ist, welches die Edge-Knoten mit den physischen Routern verbindet. Geben Sie nach dem Doppelpunkt die IP-Adresse des Edge-Knotens im Verwaltungsnetzwerk ein.

    internal-iface

    Geben Sie den Bezeichner der virtuellen Leitung des VXLAN-basierten externen Netzwerks ein. Geben Sie nach dem Doppelpunkt die IP-Adresse des Edge-Knotens im physischen Netzwerk ein.

    Führen Sie für die Suche des Bezeichners der virtuellen Leitung den Befehl openstack network show external-network-name aus und suchen Sie den Wert des Parameters provider:physical_network.

  10. Aktivieren Sie die BGP-Ankündigung auf den Edge-Knoten.
    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

    Verwenden Sie für den Parameter gw-edge-ids den Edge-Bezeichner (z. B. edge-4) anstelle des Namens. Sie können den Befehl sudo -u neutron nsxadmin -r bgp-gw-edge -o view ausführen, um die Bezeichner der einzelnen BGP-Edge-Knoten anzuzeigen.

  11. Stellen Sie eine BGP-Nachbarbeziehung zwischen den Edge-Knoten her.
    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

    Option

    Beschreibung

    gw-edge-ids

    Geben Sie die Edge-Bezeichner der einzelnen Knoten ein, getrennt durch ein Komma.

    ip-address

    Geben Sie die IP-Adresse des physischen Routers ein.

    remote-as

    Geben Sie die AS-Nummer der physischen Router ein, die mit den Edge-Knoten verbunden sind.

    password

    Geben Sie das BGP-Kennwort ein.

  12. Konfigurieren Sie Ihre physischen Router.
    1. Stellen Sie sicher, dass das AS der physischen Router das Remote-AS der Edge-Knoten ist.
    2. Konfigurieren Sie die Edge-Knoten als BGP-Nachbarn.
    3. Legen Sie jeden Router so fest, dass er sich selbst als dynamisches Gateway ankündigt.
  13. Erstellen und konfigurieren Sie den BGP-Speaker.
    1. Erstellen Sie den BGP-Speaker.
      neutron bgp-speaker-create --local-as local_as_value name_bgp_speaker
      
    2. Erstellen Sie BGP-Peers.
      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. Fügen Sie dem BGP-Speaker den BGP-Peer hinzu.
      neutron bgp-speaker-peer-add name_bgp_speaker name_GW-EDGE1 
      
      neutron bgp-speaker-peer-add name_bgp_speaker name_GW-EDGE2
      
    4. Ordnen Sie dem VXLAN-Netzwerk den Speaker zu.
      neutron bgp-speaker-network-add name_bgp_speaker external_VXLAN_network_name
  14. (Optional) Erstellen Sie BGP-Router für Mandanten.

    Mandantenbenutzer können ihre BGP-Router erstellen. Der Mandantenbenutzer muss admin sein, um einen Router ohne SNAT zu konfigurieren.

    1. Erstellen Sie zwei logische Switches für einen Mandanten sowie die zugehörigen Subnetzpools.
      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. Erstellen Sie einen Router mit BGP-Konfiguration.

      BGP funktioniert mit allen Formfaktoren logischer OpenStack-Router: shared, distributed und 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
      

Ergebnisse

Dynamisches BGP-Routing ist nun auf der Anbieterseite konfiguriert und kann auch von Mandanten verwendet werden.