Border Gateway Protocol (BGP) routing dinamis

Border Gateway Protocol (BGP) routing dinamis

BGP routing dinamis memungkinkan penyiaran update dan perubahan awalan jaringan self-service (private) untuk perangkat jaringan fisik yang mendukung BGP seperti router, sehingga menghilangkan ketergantungan konvensional pada rute statis. Fitur ini bergantung pada address scopes dan membutuhkan pengetahuan tentang operasi mereka untuk pengerahan yang tepat.

BGP routing dinamis terdiri dari plug-in layanan dan agen. Plug-in layanan mengimplementasikan ekstensi layanan Networking dan agen mengelola BGP peering sessions. Seorang administrator cloud menciptakan dan mengkonfigurasi pembicara BGP menggunakan CLI atau API dan secara manual menjadwalkan untuk satu atau lebih host menjalankan agen. Agen dapat berada pada host dengan atau tanpa agen layanan Networking lainnya. Awalan penyiaran update dan perubahan tergantung pada pengikatan jaringan eksternal ke speaker BGP dan ruang lingkup alamat rentang atau subnet alamat IP eksternal dan internal.

BGP dynamic routing overview

Catatan

Meskipun jaringan self-service umumnya menggunakan rentang alamat IP private (RFC1918) untuk subnet IPv4, BGP routing dinamis dapat menyiarkan upadate dan perubahan rentang alamat IPv4.

Konfigurasi contoh

Contoh konfigurasi melibatkan komponen-komponen berikut:

  • Satu agen BGP.
  • Satu ruang lingkup alamat berisi kisaran alamat IP 203.0.113.0/24 untuk jaringan provider, dan rentang alamat IP 10.0.1.0/24 dan 10.0.2.0/24 untuk jaringan self-service .
  • Satu jaringan provider menggunakan kisaran alamat IP 203.0.113.0/24.
  • Tiga jaringan self-service.
    • Jaringan self-service 1 dan 2 menggunakan berkisar alamat IP dalam lingkup alamat.
    • Jaringan self-layanan 3 menggunakan rentang alamat IP yang unik 10.0.3.0/24 untuk menunjukkan bahwa speaker BGP tidak awalan penyiaran update dan perubahan luar lingkup alamat.
  • Tiga router. Setiap router menghubungkan satu jaringan self-service ke jaringan provider.
    • Router 1 berisi alamat IP 203.0.113.11 dan 10.0.1.1.
    • Router 2 berisi alamat IP 203.0.113.12 dan 10.0.2.1.
    • Router 3 berisi alamat IP 203.0.113.13 dan 10.0.3.1.

Catatan

Contoh konfigurasi mengasumsikan pengetahuan yang cukup tentang layanan Networking, routing, dan BGP. Untuk pengerahan dasar layanan Networking, konsultasikan salah satu :ref: deploy. Untuk informasi lebih lanjut tentang BGP, lihat RFC 4271.

Controller node

  • Dalam file neutron.conf, mengaktifkan lapisan-3 konvensional dan BGP layanan routing dinamis plug-in:

    [DEFAULT]
    service_plugins = neutron_dynamic_routing.services.bgp.bgp_plugin.BgpPlugin,neutron.services.l3_router.l3_router_plugin.L3RouterPlugin
    

Agent nodes

  • Dalam file bgp_dragent.ini:

    • Mengkonfigurasi driver.

      [BGP]
      bgp_speaker_driver = neutron_dynamic_routing.services.bgp.agent.driver.ryu.driver.RyuBgpDriver
      

      Catatan

      Agen saat ini hanya mendukung driver Ryu BGP.

    • Konfigurasi ID router.

      [BGP]
      bgp_router_id = ROUTER_ID
      

      Ganti ROUTER_ID dengan nomor 32-bit unik dan cocok, biasanya alamat IPv4 dari host menjalankan agen. Misalnya, 192.0.2.2.

Melakukan verifikasi operasi layanan

  1. Dapatkan sumber kredensial proyek administrasi.

  2. Lakukan verifikasi keberadaan dan operasi masing-masing agen routing dinamis BGP.

    $ neutron agent-list --agent-type="BGP dynamic routing agent"
    +--------------------------------------+---------------------------+------------+-------------------+-------+----------------+---------------------------+
    | id                                   | agent_type                | host       | availability_zone | alive | admin_state_up | binary                    |
    +--------------------------------------+---------------------------+------------+-------------------+-------+----------------+---------------------------+
    | 37729181-2224-48d8-89ef-16eca8e2f77e | BGP dynamic routing agent | controller |                   | :-)   | True           | neutron-bgp-dragent       |
    +--------------------------------------+---------------------------+------------+-------------------+-------+----------------+---------------------------+
    

Buat lingkup alamat dan kolam subnet

  1. Buat lingkup alamat. Jaringan provider (eksternal) dan self-service harus termasuk dalam ruang lingkup alamat yang sama untuk agen untuk penyiaran update dan perubahan awalan jaringan self-service mereka.

    $ openstack address scope create --share --ip-version 4 bgp
    
    +------------+--------------------------------------+
    | Field      | Value                                |
    +------------+--------------------------------------+
    | headers    |                                      |
    | id         | f71c958f-dbe8-49a2-8fb9-19c5f52a37f1 |
    | ip_version | 4                                    |
    | name       | bgp                                  |
    | project_id | 86acdbd1d72745fd8e8320edd7543400     |
    | shared     | True                                 |
    +------------+--------------------------------------+
    
  2. Membuat kolam subnet. Jaringan provider dan self-service menggunakan kolam yang berbeda.

    • Buat kolam jaringan provider.

      $ openstack subnet pool create --pool-prefix 203.0.113.0/24 \
        --address-scope bgp provider
      
      +-------------------+--------------------------------------+
      | Field             | Value                                |
      +-------------------+--------------------------------------+
      | address_scope_id  | f71c958f-dbe8-49a2-8fb9-19c5f52a37f1 |
      | created_at        | 2017-01-12T14:58:57Z                 |
      | default_prefixlen | 8                                    |
      | default_quota     | None                                 |
      | description       |                                      |
      | headers           |                                      |
      | id                | 63532225-b9a0-445a-9935-20a15f9f68d1 |
      | ip_version        | 4                                    |
      | is_default        | False                                |
      | max_prefixlen     | 32                                   |
      | min_prefixlen     | 8                                    |
      | name              | provider                             |
      | prefixes          | 203.0.113.0/24                       |
      | project_id        | 86acdbd1d72745fd8e8320edd7543400     |
      | revision_number   | 1                                    |
      | shared            | False                                |
      | updated_at        | 2017-01-12T14:58:57Z                 |
      +-------------------+--------------------------------------+
      
    • Buat kolam jaringan self-service.

      $ openstack subnet pool create --pool-prefix 10.0.1.0/24 \
        --pool-prefix 10.0.2.0/24 --address-scope bgp \
        --share selfservice
      
      +-------------------+--------------------------------------+
      | Field             | Value                                |
      +-------------------+--------------------------------------+
      | address_scope_id  | f71c958f-dbe8-49a2-8fb9-19c5f52a37f1 |
      | created_at        | 2017-01-12T15:02:31Z                 |
      | default_prefixlen | 8                                    |
      | default_quota     | None                                 |
      | description       |                                      |
      | headers           |                                      |
      | id                | 8d8270b1-b194-4b7e-914c-9c741dcbd49b |
      | ip_version        | 4                                    |
      | is_default        | False                                |
      | max_prefixlen     | 32                                   |
      | min_prefixlen     | 8                                    |
      | name              | selfservice                          |
      | prefixes          | 10.0.1.0/24, 10.0.2.0/24             |
      | project_id        | 86acdbd1d72745fd8e8320edd7543400     |
      | revision_number   | 1                                    |
      | shared            | True                                 |
      | updated_at        | 2017-01-12T15:02:31Z                 |
      +-------------------+--------------------------------------+
      

Buat jaringan provider dan self-service

  1. Create jaringan provider.

    $ openstack network create provider --external --provider-physical-network \
      provider --provider-network-type flat
    Created a new network:
    +---------------------------+--------------------------------------+
    | Field                     | Value                                |
    +---------------------------+--------------------------------------+
    | admin_state_up            | UP                                   |
    | availability_zone_hints   |                                      |
    | availability_zones        |                                      |
    | created_at                | 2016-12-21T08:47:41Z                 |
    | description               |                                      |
    | headers                   |                                      |
    | id                        | 190ca651-2ee3-4a4b-891f-dedda47974fe |
    | ipv4_address_scope        | None                                 |
    | ipv6_address_scope        | None                                 |
    | is_default                | False                                |
    | mtu                       | 1450                                 |
    | name                      | provider                             |
    | port_security_enabled     | True                                 |
    | project_id                | c961a8f6d3654657885226378ade8220     |
    | provider:network_type     | flat                                 |
    | provider:physical_network | provider                             |
    | provider:segmentation_id  | 66                                   |
    | revision_number           | 3                                    |
    | router:external           | External                             |
    | shared                    | False                                |
    | status                    | ACTIVE                               |
    | subnets                   |                                      |
    | tags                      | []                                   |
    | updated_at                | 2016-12-21T08:47:41Z                 |
    +---------------------------+--------------------------------------+
    
  2. Buat subnet pada jaringan provider menggunakan kisaran alamat IP dari kolam subnet provider.

    $ neutron subnet-create --name provider --subnetpool provider \
      --prefixlen 24 --allocation-pool start=203.0.113.11,end=203.0.113.254 \
      --gateway 203.0.113.1 provider
    Created a new subnet:
    +-------------------+---------------------------------------------------+
    | Field             | Value                                             |
    +-------------------+---------------------------------------------------+
    | allocation_pools  | {"start": "203.0.113.11", "end": "203.0.113.254"} |
    | cidr              | 203.0.113.0/24                                    |
    | created_at        | 2016-03-17T23:17:16                               |
    | description       |                                                   |
    | dns_nameservers   |                                                   |
    | enable_dhcp       | True                                              |
    | gateway_ip        | 203.0.113.1                                       |
    | host_routes       |                                                   |
    | id                | 8ed65d41-2b2a-4f3a-9f92-45adb266e01a              |
    | ip_version        | 4                                                 |
    | ipv6_address_mode |                                                   |
    | ipv6_ra_mode      |                                                   |
    | name              | provider                                          |
    | network_id        | 68ec148c-181f-4656-8334-8f4eb148689d              |
    | subnetpool_id     | 3771c0e7-7096-46d3-a3bd-699c58e70259              |
    | tenant_id         | b3ac05ef10bf441fbf4aa17f16ae1e6d                  |
    | updated_at        | 2016-03-17T23:17:16                               |
    +-------------------+---------------------------------------------------+
    

    Catatan

    Kolam alokasi alamat IP mulai .11 meningkatkan kejelasan diagram. Anda dapat dengan aman menghilangkan itu.

  3. Buat jaringan self-service.

    $ openstack network create selfservice1
    Created a new network:
    +---------------------------+--------------------------------------+
    | Field                     | Value                                |
    +---------------------------+--------------------------------------+
    | admin_state_up            | UP                                   |
    | availability_zone_hints   |                                      |
    | availability_zones        |                                      |
    | created_at                | 2016-12-21T08:49:38Z                 |
    | description               |                                      |
    | headers                   |                                      |
    | id                        | 9d842606-ef3d-4160-9ed9-e03fa63aed96 |
    | ipv4_address_scope        | None                                 |
    | ipv6_address_scope        | None                                 |
    | mtu                       | 1450                                 |
    | name                      | selfservice1                         |
    | port_security_enabled     | True                                 |
    | project_id                | c961a8f6d3654657885226378ade8220     |
    | provider:network_type     | vxlan                                |
    | provider:physical_network | None                                 |
    | provider:segmentation_id  | 106                                  |
    | revision_number           | 3                                    |
    | router:external           | Internal                             |
    | shared                    | False                                |
    | status                    | ACTIVE                               |
    | subnets                   |                                      |
    | tags                      | []                                   |
    | updated_at                | 2016-12-21T08:49:38Z                 |
    +---------------------------+--------------------------------------+
    
    $ openstack network create selfservice2
    Created a new network:
    +---------------------------+--------------------------------------+
    | Field                     | Value                                |
    +---------------------------+--------------------------------------+
    | admin_state_up            | UP                                   |
    | availability_zone_hints   |                                      |
    | availability_zones        |                                      |
    | created_at                | 2016-12-21T08:50:05Z                 |
    | description               |                                      |
    | headers                   |                                      |
    | id                        | f85639e1-d23f-438e-b2b1-f40570d86b1c |
    | ipv4_address_scope        | None                                 |
    | ipv6_address_scope        | None                                 |
    | mtu                       | 1450                                 |
    | name                      | selfservice2                         |
    | port_security_enabled     | True                                 |
    | project_id                | c961a8f6d3654657885226378ade8220     |
    | provider:network_type     | vxlan                                |
    | provider:physical_network | None                                 |
    | provider:segmentation_id  | 21                                   |
    | revision_number           | 3                                    |
    | router:external           | Internal                             |
    | shared                    | False                                |
    | status                    | ACTIVE                               |
    | subnets                   |                                      |
    | tags                      | []                                   |
    | updated_at                | 2016-12-21T08:50:05Z                 |
    +---------------------------+--------------------------------------+
    
    $ openstack network create selfservice3
    Created a new network:
    +---------------------------+--------------------------------------+
    | Field                     | Value                                |
    +---------------------------+--------------------------------------+
    | admin_state_up            | UP                                   |
    | availability_zone_hints   |                                      |
    | availability_zones        |                                      |
    | created_at                | 2016-12-21T08:50:35Z                 |
    | description               |                                      |
    | headers                   |                                      |
    | id                        | eeccdb82-5cf4-4999-8ab3-e7dc99e7d43b |
    | ipv4_address_scope        | None                                 |
    | ipv6_address_scope        | None                                 |
    | mtu                       | 1450                                 |
    | name                      | selfservice3                         |
    | port_security_enabled     | True                                 |
    | project_id                | c961a8f6d3654657885226378ade8220     |
    | provider:network_type     | vxlan                                |
    | provider:physical_network | None                                 |
    | provider:segmentation_id  | 86                                   |
    | revision_number           | 3                                    |
    | router:external           | Internal                             |
    | shared                    | False                                |
    | status                    | ACTIVE                               |
    | subnets                   |                                      |
    | tags                      | []                                   |
    | updated_at                | 2016-12-21T08:50:35Z                 |
    +---------------------------+--------------------------------------+
    
  4. Buat subnet pada jaringan self-service dua pertama menggunakan kisaran alamat IP dari kolam subnet self-service.

    $ neutron subnet-create --name selfservice1 --subnetpool selfservice \
      --prefixlen 24 selfservice1
    Created a new subnet:
    +-------------------+--------------------------------------------+
    | Field             | Value                                      |
    +-------------------+--------------------------------------------+
    | allocation_pools  | {"start": "10.0.1.2", "end": "10.0.1.254"} |
    | cidr              | 10.0.1.0/24                                |
    | created_at        | 2016-03-17T23:20:20                        |
    | description       |                                            |
    | dns_nameservers   |                                            |
    | enable_dhcp       | True                                       |
    | gateway_ip        | 10.0.1.1                                   |
    | host_routes       |                                            |
    | id                | 8edd3dc2-df40-4d71-816e-a4586d61c809       |
    | ip_version        | 4                                          |
    | ipv6_address_mode |                                            |
    | ipv6_ra_mode      |                                            |
    | name              | selfservice1                               |
    | network_id        | be79de1e-5f56-11e6-9dfb-233e41cec48c       |
    | subnetpool_id     | c7e9737a-cfd3-45b5-a861-d1cee1135a92       |
    | tenant_id         | b3ac05ef10bf441fbf4aa17f16ae1e6d           |
    | updated_at        | 2016-03-17T23:20:20                        |
    +-------------------+--------------------------------------------+
    
    $ neutron subnet-create --name selfservice2 --subnetpool selfservice \
      --prefixlen 24 selfservice2
    Created a new subnet:
    +-------------------+--------------------------------------------+
    | Field             | Value                                      |
    +-------------------+--------------------------------------------+
    | allocation_pools  | {"start": "10.0.2.2", "end": "10.0.2.254"} |
    | cidr              | 10.0.2.0/24                                |
    | created_at        | 2016-03-17T23:20:20                        |
    | description       |                                            |
    | dns_nameservers   |                                            |
    | enable_dhcp       | True                                       |
    | gateway_ip        | 10.0.2.1                                   |
    | host_routes       |                                            |
    | id                | 8edd3dc2-df40-4d71-816e-a4586d61c809       |
    | ip_version        | 4                                          |
    | ipv6_address_mode |                                            |
    | ipv6_ra_mode      |                                            |
    | name              | selfservice2                               |
    | network_id        | c1fd9846-5f56-11e6-a8ac-0f998d9cc0a2       |
    | subnetpool_id     | c7e9737a-cfd3-45b5-a861-d1cee1135a92       |
    | tenant_id         | b3ac05ef10bf441fbf4aa17f16ae1e6d           |
    | updated_at        | 2016-03-17T23:20:20                        |
    +-------------------+--------------------------------------------+
    
  5. Buat subnet pada jaringan self-service terakhir menggunakan kisaran alamat IP di luar lingkup alamat.

    $ neutron subnet-create --name subnet3 selfservice3 10.0.3.0/24
    Created a new subnet:
    +-------------------+--------------------------------------------+
    | Field             | Value                                      |
    +-------------------+--------------------------------------------+
    | allocation_pools  | {"start": "10.0.3.2", "end": "10.0.3.254"} |
    | cidr              | 10.0.3.0/24                                |
    | created_at        | 2016-03-17T23:20:20                        |
    | description       |                                            |
    | dns_nameservers   |                                            |
    | enable_dhcp       | True                                       |
    | gateway_ip        | 10.0.3.1                                   |
    | host_routes       |                                            |
    | id                | cd9f9156-5f59-11e6-aeec-172ec7ee939a       |
    | ip_version        | 4                                          |
    | ipv6_address_mode |                                            |
    | ipv6_ra_mode      |                                            |
    | name              | selfservice3                               |
    | network_id        | c283dc1c-5f56-11e6-bfb6-efc30e1eb73b       |
    | subnetpool_id     |                                            |
    | tenant_id         | b3ac05ef10bf441fbf4aa17f16ae1e6d           |
    | updated_at        | 2016-03-17T23:20:20                        |
    +-------------------+--------------------------------------------+
    

Membuat dan mengkonfigurasi router

  1. Buat router.

    $ openstack router create router1
    +-------------------------+--------------------------------------+
    | Field                   | Value                                |
    +-------------------------+--------------------------------------+
    | admin_state_up          | UP                                   |
    | availability_zone_hints |                                      |
    | availability_zones      |                                      |
    | created_at              | 2017-01-10T13:15:19Z                 |
    | description             |                                      |
    | distributed             | False                                |
    | external_gateway_info   | null                                 |
    | flavor_id               | None                                 |
    | ha                      | False                                |
    | headers                 |                                      |
    | id                      | 3f6f4ef8-63be-11e6-bbb3-2fbcef363ab8 |
    | name                    | router1                              |
    | project_id              | b3ac05ef10bf441fbf4aa17f16ae1e6d     |
    | revision_number         | 1                                    |
    | routes                  |                                      |
    | status                  | ACTIVE                               |
    | updated_at              | 2017-01-10T13:15:19Z                 |
    +-------------------------+--------------------------------------+
    
    $ openstack router create router2
    +-------------------------+--------------------------------------+
    | Field                   | Value                                |
    +-------------------------+--------------------------------------+
    | admin_state_up          | UP                                   |
    | availability_zone_hints |                                      |
    | availability_zones      |                                      |
    | created_at              | 2017-01-10T13:15:19Z                 |
    | description             |                                      |
    | distributed             | False                                |
    | external_gateway_info   | null                                 |
    | flavor_id               | None                                 |
    | ha                      | False                                |
    | headers                 |                                      |
    | id                      | 3fd21a60-63be-11e6-9c95-5714c208c499 |
    | name                    | router2                              |
    | project_id              | b3ac05ef10bf441fbf4aa17f16ae1e6d     |
    | revision_number         | 1                                    |
    | routes                  |                                      |
    | status                  | ACTIVE                               |
    | updated_at              | 2017-01-10T13:15:19Z                 |
    +-------------------------+--------------------------------------+
    
    $ openstack router create router3
    +-------------------------+--------------------------------------+
    | Field                   | Value                                |
    +-------------------------+--------------------------------------+
    | admin_state_up          | UP                                   |
    | availability_zone_hints |                                      |
    | availability_zones      |                                      |
    | created_at              | 2017-01-10T13:15:19Z                 |
    | description             |                                      |
    | distributed             | False                                |
    | external_gateway_info   | null                                 |
    | flavor_id               | None                                 |
    | ha                      | False                                |
    | headers                 |                                      |
    | id                      | 40069a4c-63be-11e6-9ecc-e37c1eaa7e84 |
    | name                    | router3                              |
    | project_id              | b3ac05ef10bf441fbf4aa17f16ae1e6d     |
    | revision_number         | 1                                    |
    | routes                  |                                      |
    | status                  | ACTIVE                               |
    | updated_at              | 2017-01-10T13:15:19Z                 |
    +-------------------------+--------------------------------------+
    
  2. Untuk setiap router, tambahkan satu subnet self-service sebagai interface pada router.

    $ neutron router-interface-add router1 selfservice1
    Added interface 90e3880a-5f5c-11e6-914c-9f3e20c8c151 to router router1.
    
    $ neutron router-interface-add router2 selfservice2
    Added interface 91628362-5f5c-11e6-826a-7322fb03a821 to router router2.
    
    $ neutron router-interface-add router3 selfservice3
    Added interface 91d51044-5f5c-11e6-bf55-ffd180541cc2 to router router3.
    
  3. Tambahkan jaringan provider sebagai gateway pada masing-masing router.

    $ neutron router-gateway-set router1 provider
    Set gateway for router router1
    
    $ neutron router-gateway-set router2 provider
    Set gateway for router router2
    
    $ neutron router-gateway-set router3 provider
    Set gateway for router router3
    

Membuat dan mengkonfigurasi BGP speaker

Speaker BGP menyiarkan update dan perubahan alamat IP next-hop untuk jaringan self-service yang memenuhi syarat dan alamat IP mengambang untuk instance menggunakan jaringan tersebut.

  1. Buat BGP speaker.

    $ neutron bgp-speaker-create --ip-version 4 \
      --local-as LOCAL_AS bgpspeaker
    Created a new bgp_speaker:
    +-----------------------------------+--------------------------------------+
    | Field                             | Value                                |
    +-----------------------------------+--------------------------------------+
    | advertise_floating_ip_host_routes | True                                 |
    | advertise_tenant_networks         | True                                 |
    | id                                | 5f227f14-4f46-4eca-9524-fc5a1eabc358 |
    | ip_version                        | 4                                    |
    | local_as                          | 1234                                 |
    | name                              | bgpspeaker                           |
    | networks                          |                                      |
    | peers                             |                                      |
    | tenant_id                         | b3ac05ef10bf441fbf4aa17f16ae1e6d     |
    +-----------------------------------+--------------------------------------+
    

    Ganti LOCAL_AS dengan nomor sistem otonomi lokal yang tepat. Konfigurasi Contoh menggunakan AS 1234.

  2. Speaker BGP memerlukan hubungan dengan jaringan provider untuk menentukan prefixe yang memenuhi syarat. Asosiasi membangun daftar semua router virtual dengan gateway pada jaringan provider dan self-service di lingkup alamat yang sama sehingga speaker BGP dapat menyiarkan update dan perubahan awalan jaringan self-service dengan sesuai router sebagai alamat IP next-hop. Mengasosiasikan speaker BGP dengan jaringan provider.

    $ neutron bgp-speaker-network-add bgpspeaker provider
    Added network provider to BGP speaker bgpspeaker.
    
  3. Lakukan verifikasi asosiasi jaringan provider dengan BGP speaker.

    $ neutron bgp-speaker-show bgpspeaker
    +-----------------------------------+--------------------------------------+
    | Field                             | Value                                |
    +-----------------------------------+--------------------------------------+
    | advertise_floating_ip_host_routes | True                                 |
    | advertise_tenant_networks         | True                                 |
    | id                                | 5f227f14-4f46-4eca-9524-fc5a1eabc358 |
    | ip_version                        | 4                                    |
    | local_as                          | 1234                                 |
    | name                              | bgpspeaker                           |
    | networks                          | 68ec148c-181f-4656-8334-8f4eb148689d |
    | peers                             |                                      |
    | tenant_id                         | b3ac05ef10bf441fbf4aa17f16ae1e6d     |
    +-----------------------------------+--------------------------------------+
    
  4. Lakukan verifikasi prefiks dan alamat IP next-hop dimana speaker BGP menyiarkan update dan perubahan.

    $ neutron bgp-speaker-advertiseroute-list bgpspeaker
    +-------------+--------------+
    | destination | next_hop     |
    +-------------+--------------+
    | 10.0.1.0/24 | 203.0.113.11 |
    | 10.0.2.0/24 | 203.0.113.12 |
    +-------------+--------------+
    
  5. Buat rekan BGP.

    $ neutron bgp-peer-create --peer-ip 192.0.2.1 \
      --remote-as REMOTE_AS bgppeer
    Created a new bgp_peer:
    +-----------+--------------------------------------+
    | Field     | Value                                |
    +-----------+--------------------------------------+
    | auth_type | none                                 |
    | id        | 35c89ca0-ac5a-4298-a815-0b073c2362e9 |
    | name      | bgppeer                              |
    | peer_ip   | 192.0.2.1                            |
    | remote_as | 4321                                 |
    | tenant_id | b3ac05ef10bf441fbf4aa17f16ae1e6d     |
    +-----------+--------------------------------------+
    

    Ganti `` REMOTE_AS`` dengan nomor sistem otonom jarak jauh yang sesuai. Konfigurasi contoh menggunakan AS 4321 yang memicu EBGP peering.

    Catatan

    Host yang berisi agen BGP harus memiliki konektivitas lapisan-3 dengan router provider.

  6. Tambahkan rekan BGP ke BGP speaker.

    $ neutron bgp-speaker-peer-add bgpspeaker bgppeer
    Added BGP peer bgppeer to BGP speaker bgpspeaker.
    
  7. Lakukan verifikasi penambahan peer BGP ke BGP speaker.

    $ neutron bgp-speaker-show bgpspeaker
    +-----------------------------------+--------------------------------------+
    | Field                             | Value                                |
    +-----------------------------------+--------------------------------------+
    | advertise_floating_ip_host_routes | True                                 |
    | advertise_tenant_networks         | True                                 |
    | id                                | 5f227f14-4f46-4eca-9524-fc5a1eabc358 |
    | ip_version                        | 4                                    |
    | local_as                          | 1234                                 |
    | name                              | bgpspeaker                           |
    | networks                          | 68ec148c-181f-4656-8334-8f4eb148689d |
    | peers                             | 35c89ca0-ac5a-4298-a815-0b073c2362e9 |
    | tenant_id                         | b3ac05ef10bf441fbf4aa17f16ae1e6d     |
    +-----------------------------------+--------------------------------------+
    

    Catatan

    Setelah membuat sesi peering, Anda tidak dapat mengubah nomor sistem otonomi lokal atau remote.

Jadwalkan speaker BGP ke agen

  1. Tidak seperti kebanyakan agen, speaker BGP memerlukan penjadwalan manual untuk agen. Speaker BGP hanya membentuk sesi kebersamaan dan mulai penyiaran update dan perubahan awal prefix setelah penjadwalan untuk agen. Jadwalkan speaker BGP untuk agen 37729181-2224-48d8-89ef-16eca8e2f77e.

    $ neutron bgp-dragent-speaker-add 37729181-2224-48d8-89ef-16eca8e2f77e bgpspeaker
    Associated BGP speaker bgpspeaker to the Dynamic Routing agent.
    
  2. Lakukan verifikasi penjadwalan BGP speaker untuk agen.

    $ neutron bgp-dragent-list-hosting-speaker bgpspeaker
    +--------------------------------------+------------+----------------+-------+
    | id                                   | host       | admin_state_up | alive |
    +--------------------------------------+------------+----------------+-------+
    | 37729181-2224-48d8-89ef-16eca8e2f77e | controller | True           | :-)   |
    +--------------------------------------+------------+----------------+-------+
    
    $ neutron bgp-speaker-list-on-dragent 37729181-2224-48d8-89ef-16eca8e2f77e
    +--------------------------------------+------------+----------+------------+
    | id                                   | name       | local_as | ip_version |
    +--------------------------------------+------------+----------+------------+
    | 5f227f14-4f46-4eca-9524-fc5a1eabc358 | bgpspeaker |     1234 |          4 |
    +--------------------------------------+------------+----------+------------+
    

Penyiaran update dan perubahan awal

BGP routing dinamis menyiarkan update dan perubahan awalan untuk jaringan self-service dan host route alamat IP mengambang.

Penyiaran update dan perubahan jaringan self-service membutuhkan memenuhi kondisi berikut:

  • Jaringan eksternal dan self-service berada dalam lingkup alamat yang sama.
  • Router berisi sebuah antarmuka pada subnet self-service dan gateway pada jaringan eksternal.
  • BGP speaker berassosiasi dengan jaringan eksternal yang menyediakan gateway pada router.
  • BGP speaker memiliki advertise_tenant_networks atribut diatur ke True.
Example of prefix advertisements with self-service networks

Penyiaran update dan perubahan alamat IP mengambang membutuhkan terpenuhinya kondisi berikut:

  • Router dengan alamat IP mengambang yang terikat berisi gateway pada jaringan eksternal dengan asosiasi BGP speaker.
  • BGP speaker memiliki advertise_floating_ip_host_routes atribut diatur ke True.
Example of prefix advertisements with floating IP addresses

Operasi dengan Distributed Virtual Routers (DVR)

Dalam pengerahan penggunaan DVR, BGP speaker menyiaran update dan perubahan alamat IP mengambang dan jaringan self-service yang berbeda. Untuk alamat IP mengambang, BGP speaker menyiaran update dan perubahan gateway agen IP mengambang pada node komputasi yang sesuai sebagai alamat IP next-hop. Untuk jaringan self-service menggunakan SNAT, BGP speaker menyiaran update dan perubahan node DVR SNAT sebagai alamat IP next-hop.

Sebagai contoh, pertimbangkan komponen-komponen berikut:

  1. Sebuah jaringan operator menggunakan kisaran alamat IP 203.0.113.0/24, dan mendukung alamat IP mengambang 203.0.113.101, 203.0.113.102, dan 203.0.113.103.
  2. Sebuah jaringan self-service menggunakan kisaran alamat IP 10.0.1.0/24.
  3. SNAT gateway berada pada 203.0.113.11.
  4. Agen gateway IP mengambang (satu per node komputasi) berada pada 203.0.113.12, 203.0.113.13, dan 203.0.113.14.
  5. Tiga instance, salah satu per node komputasi, masing-masing dengan alamat IP mengambang.
$ neutron bgp-speaker-advertiseroute-list bgpspeaker
+------------------+--------------+
| destination      | next_hop     |
+------------------+--------------+
| 10.0.1.0/24      | 203.0.113.11 |
| 203.0.113.101/32 | 203.0.113.12 |
| 203.0.113.102/32 | 203.0.113.13 |
| 203.0.113.103/32 | 203.0.113.14 |
+------------------+--------------+

Catatan

DVR kekurangan dukungan untuk routing langsung ke alamat IP tetap melalui port gateway agen IP mengambang dan dengan demikian mencegah BGP speaker dari penyiaran update dan perubahan alamat IP tetap.

Anda juga dapat mengidentifikasi agent gateway IP mengambang di lingkungan Anda untuk membantu memverifikasi operasi BGP speaker.

$ neutron port-list --device_owner="network:floatingip_agent_gateway"
+--------------------------------------+------+-------------------+--------------------------------------------------------------------------------------------------------+
| id                                   | name | mac_address       | fixed_ips                                                                                              |
+--------------------------------------+------+-------------------+--------------------------------------------------------------------------------------------------------+
| 87cf2970-4970-462e-939e-00e808295dfa |      | fa:16:3e:7c:68:e3 | {"subnet_id": "8ed65d41-2b2a-4f3a-9f92-45adb266e01a", "ip_address": "203.0.113.12"}                    |
| 8d218440-0d2e-49d0-8a7b-3266a6146dc1 |      | fa:16:3e:9d:78:cf | {"subnet_id": "8ed65d41-2b2a-4f3a-9f92-45adb266e01a", "ip_address": "203.0.113.13"}                    |
| 87cf2970-4970-462e-939e-00e802281dfa |      | fa:16:3e:6b:18:e0 | {"subnet_id": "8ed65d41-2b2a-4f3a-9f92-45adb266e01a", "ip_address": "203.0.113.14"}                    |
+--------------------------------------+------+-------------------+--------------------------------------------------------------------------------------------------------+

IPv6

Routing dinamis BGP mendukung peering (kebersamaan) melalui IPv6 dan penyiaran update dan perubahan awalan IPv6.

  • Untuk mengaktifkan peering (kebersamaan) melalui IPv6, membuat rekan (peer) BGP dan menggunakan alamat IPv6 untuk peer_ip.
  • Untuk mengaktifkan penyiaran update dan perubahan awalan IPv6, buatlah lingkup alamat dengan ip_version=6 dan BGP speaker dengan ip_version=6.

Catatan

DVR dengan fungsi IPv6 mirip dengan DVR dengan IPv4.

Ketersediaan tinggi

Routing dinamis BGP mendukung penjadwalan BGP speaker ke beberapa agen yang secara efektif melipatgandakan penyiaran update dan perubahan awalan untuk rekan yang sama. Jika agen gagal, peer terus menerima penyiaran update dan perubahan dari satu atau lebih agen operasional.

  1. Tampilkan agen routing dinamis yang tersedia

    $ neutron agent-list --agent-type="BGP dynamic routing agent"
    +--------------------------------------+---------------------------+----------+-------------------+-------+----------------+---------------------------+
    | id                                   | agent_type                | host     | availability_zone | alive | admin_state_up | binary                    |
    +--------------------------------------+---------------------------+----------+-------------------+-------+----------------+---------------------------+
    | 37729181-2224-48d8-89ef-16eca8e2f77e | BGP dynamic routing agent | bgp-ha1  |                   | :-)   | True           | neutron-bgp-dragent       |
    | 1a2d33bb-9321-30a2-76ab-22eff3d2f56a | BGP dynamic routing agent | bgp-ha2  |                   | :-)   | True           | neutron-bgp-dragent       |
    +--------------------------------------+---------------------------+----------+-------------------+-------+----------------+---------------------------+
    
  2. Jadwalkan BGP speaker ke beberapa agen.

    $ neutron bgp-dragent-speaker-add 37729181-2224-48d8-89ef-16eca8e2f77e bgpspeaker
    Associated BGP speaker bgpspeaker to the Dynamic Routing agent.
    
    $ neutron bgp-dragent-speaker-add 1a2d33bb-9321-30a2-76ab-22eff3d2f56a bgpspeaker
    Associated BGP speaker bgpspeaker to the Dynamic Routing agent.
    
    $ neutron bgp-dragent-list-hosting-speaker bgpspeaker
    +--------------------------------------+---------+----------------+-------+
    | id                                   | host    | admin_state_up | alive |
    +--------------------------------------+---------+----------------+-------+
    | 37729181-2224-48d8-89ef-16eca8e2f77e | bgp-ha1 | True           | :-)   |
    | 1a2d33bb-9321-30a2-76ab-22eff3d2f56a | bgp-ha2 | True           | :-)   |
    +--------------------------------------+---------+----------------+-------+
    
    $ neutron bgp-speaker-list-on-dragent 37729181-2224-48d8-89ef-16eca8e2f77e
    +--------------------------------------+------------+----------+------------+
    | id                                   | name       | local_as | ip_version |
    +--------------------------------------+------------+----------+------------+
    | 5f227f14-4f46-4eca-9524-fc5a1eabc358 | bgpspeaker |     1234 |          4 |
    +--------------------------------------+------------+----------+------------+
    
    $ neutron bgp-speaker-list-on-dragent 1a2d33bb-9321-30a2-76ab-22eff3d2f56a
    +--------------------------------------+------------+----------+------------+
    | id                                   | name       | local_as | ip_version |
    +--------------------------------------+------------+----------+------------+
    | 5f227f14-4f46-4eca-9524-fc5a1eabc358 | bgpspeaker |     1234 |          4 |
    +--------------------------------------+------------+----------+------------+
    
Creative Commons Attribution 3.0 License

Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.