jaringan penyedia (provider) yang diarahkan

jaringan penyedia (provider) yang diarahkan

Catatan

Fitur eksperimental. Penggunaan fitur ini memerlukan klien OpenStack versi 3.3 atau yang lebih baru.

Sebelum jaringan penyedia yang diarahkan, layanan Networking tidak bisa menghadirkan jaringan lapisan-3 multi-segment sebagai satu kesatuan. Dengan demikian, masing-masing operator biasanya memilih salah satu arsitektur berikut:

  • Single large layer-2 network
  • Beberapa jaringan lapisan-2 lebih kecil

Jaringan lapisan-2 besar tunggal menjadi kompleks pada skala dan melibatkan failure domain yang signifikan.

Beberapa jaringan lapisan-2 lebih kecil berskala yang lebih baik dan menyusutkan failure domain, tetapi meninggalkan pilihan jaringan untuk pengguna. Tanpa informasi tambahan, pengguna tidak dapat dengan mudah membedakan jaringan ini.

Sebuah jaringan operator yang diarahkan mengaktifkan jaringan penyedia tunggal untuk mewakili beberapa jaringan lapisan-2 (broadcast domains) atau segmen dan mengaktifkan operator untuk menyajikan satu jaringan ke pengguna. Namun, alamat IP tertentu tersedia untuk sebuah instance bergantung pada segmen jaringan yang tersedia pada node komputasi tertentu.

Mirip dengan jaringan konvensional, lapisan-2 (switching) menangani transit lalu lintas antara port pada segmen yang sama dan lapisan-3 (routing) menangani transit lalu lintas antara segmen.

Setiap segmen memerlukan setidaknya satu subnet yang memilik segmen itu secara eksplisit. Hubungan antara segmen dan subnet membedakan jaringan penyedia dialihkan (routed) dari jenis jaringan lainnya. Layanan Networking memberlakukan bahwa subnet nol atau semua subnet pada jaringan tertentu yang berasosiasi dengan segmen. Misalnya, usaha untuk membuat subnet tanpa segmen pada jaringan yang berisi subnet dengan segmen akan menghasilkan kesalahan.

Layanan Networking tidak menyediakan layanan lapisan-3 antar segmen. Sebaliknya, hal itu bergantung pada infrastruktur jaringan fisik untuk rute subnet. Dengan demikian, layanan Networking dan infrastruktur jaringan fisik harus berisi konfigurasi untuk jaringan penyedia dialihkan (routed), mirip dengan jaringan penyedia konvensional. Di masa depan, pelaksanaan protokol routing dinamis dapat meringankan konfigurasi jaringan dialihkan (routed).

Limitations (keterbatasan)

Penerapan Newton berisi keterbatasan berikut:

  • Compute scheduler kurang memiliki pengetahuan tentang sumber alamat IP pada jaringan dialihkan (routed). Dengan demikian, scheduler bisa menguras alamat IP dalam satu segmen sebelum menetapkan alamat IP dari segmen lain. Compute scheduler di Ocata rilis harus menyediakan kemampuan penjadwalan sekitar segmen tanpa alamat IP yang tersedia. Di Newton, Compute scheduler memilih node komputasi pada jaringan operator. Jika segmen pada node komputasi itu kurang tersedia alamat IP, port yang mengikat kegagalan dan Compute scheduler memilih node komputasi lain tanpa memperhatikan segmen. Penjadwalan ulang akan terus sampai jumlah maksimum percobaan ulang (retry). Operator harus memantau penggunaan IP dan menambahkan subnet untuk segmen sebelum kehabisan alamat IP. Untuk informasi lebih lanjut, lihat blueprint.
  • Sebuah jaringan operator dialihkann (routed) tidak bisa juga berfungsi sebagai jaringan router: external yang mencegah kompatibilitas dengan alamat IPv4 mengambang. Routing tambahan, mungkin menggunakan Border Gateway Protocol (BGP) routing dinamis, bisa mengatasi masalah ini di masa depan.

Prasyarat

Jaringan penyedia dialihkan (routed) memerlukan prasyarat tambahan melalui jaringan penyedia konvensional. Sebaiknya, kita gunakan prosedur berikut:

  1. Mulailah dengan segmen. Layanan Networking mendefinisikan segmen menggunakan komponen berikut:

    • Unique physical network name (nama jaringan fisik unik)
    • Segmentation type (tipe segmentasi)
    • Segmentation ID (ID segmentasi)

    Misalnya, provider1, VLAN, dan 2016. Lihat referensi ‘API <https://developer.openstack.org/api-ref/networking/v2/#segments> `_ untuk informasi lebih lanjut.

    Dalam jaringan, gunakan nama jaringan fisik yang unik untuk setiap segmen yang mengaktifkan penggunaan kembali rincian segmentasi yang sama antara subnet. Misalnya, penggunaan VLAN ID yang sama di semua segmen dari jaringan operator tertentu. Serupa dengan jaringan penyedia konvensional, operator harus menyediakan infrastruktur jaringan fisik lapisan-2 yang sesuai.

  2. Terapkan routing antara segmen.

    Layanan Networking tidak penyediaan routing antara segmen. Operator harus mengimplementasikan routing antara segmen di jaringan penyedia. Setiap subnet di segmen harus berisi alamat gateway dari antarmuka router pada subnet tertentu itu. Sebagai contoh:

    Segment (segmen) Version (versi) Addresses (alamat) Gateway (gerbang)
    segment1 4 203.0.113.0/24 203.0.113.1
    segment1 6 fd00:203:0:113::/64 fd00:203:0:113::1
    segment2 4 198.51.100.0/24 198.51.100.1
    segment2 6 fd00:198:51:100::/64 fd00:198:51:100::1
  3. Segmen peta untuk node komputasi

    Jaringan provider Routed menyiratkan bahwa komputasi node berada pada segmen yang berbeda. Operator harus memastikan bahwa setiap komputasi host yang seharusnya berpartisipasi dalam jaringan provider router telah memiliki konektivitas langsung ke salah satu segmen tersebut.

    Host Rack Physical Network (jaringan fisik)
    compute0001 rack 1 segment 1
    compute0002 rack 1 segment 1
    ... ... ...
    compute0101 rack 2 segment 2
    compute0102 rack 2 segment 2
    compute0102 rack 2 segment 2
    ... ... ...
  4. Mengerahkan agen DHCP.

    Tidak seperti jaringan penyedia konvensional, agen DHCP tidak dapat mendukung lebih dari satu segmen dalam jaringan. Operator harus menggunakan setidaknya satu agen DHCP per segmen. Pertimbangkan penggelaran agen DHCP pada node komputasi yang berisi segmen daripada satu atau lebih node jaringan untuk mengurangi jumlah node.

    Host Rack Physical Network (jaringan fisik)
    network0001 rack 1 segment 1
    network0002 rack 2 segment 2
    ... ... ...
  5. Lakukan konfigurasi komunikasi layanan Networking dengan Compute scheduler.

    Sebuah instance dengan sebuah antarmuka dengan alamat IPv4 dalam jaringan provider yang diarahkan harus ditempatkan oleh Compute scheduler di host yang memiliki akses ke segmen dengan alamat IPv4 yang tersedia. Untuk membuat ini mungkin terjadi, layanan Networking berkomunikasi dengan Compute scheduler persediaan alamat IPv4 yang terkait dengan setiap segmen jaringan provider yang diarahkan. Operator harus mengkonfigurasi kredensial otentikasi dimana layanan Networking akan digunakan untuk berkomunikasi dengan placement API di Compute scheduler. Silakan lihat di bawah konfigurasi contoh.

    Catatan

    Koordinasi antara layanan Networking dan Compute scheduler tidak diperlukan untuk subnet IPv6 sebagai konsekuensi dari ruang alamat (address space) yang besar.

    Catatan

    Koordinasi antara layanan Networking dan Compute schedule memerlukan mikro-versi API minimum berikut.

    • Layanan Compute API: 2.41
    • Placement API: 1.1

Konfigurasi contoh

Controller node

  1. Aktifkan segmen layanan plug-in dengan menambahkan segments ke daftar service_plugins di file neutron.conf pada semua node yang menjalankan layanan neutron-server:

    [DEFAULT]
    # ...
    service_plugins = ..., segments
    
  2. Tambahkan bagian placement ke file neutron.conf dengan kredential otentikasi untuk placement API di layanan Compute:

    [placement]
    auth_uri = http://192.0.2.72/identity
    project_domain_name = Default
    project_name = service
    user_domain_name = Default
    password = apassword
    username = nova
    auth_url = http://192.0.2.72/identity_admin
    auth_type = password
    region_name = RegionOne
    
  3. Restart layanan neutron-server.

Jaringan atau node komputasi

  • Mengkonfigurasi agen lapisan-2 pada setiap node untuk memetakan satu atau lebih segmen pada jembatan jaringan fisik yang sesuai atau antarmuka dan me-restart agen.

Membuat jaringan penyedia dialihkan (routed)

Langkah-langkah berikut membuat jaringan penyedia dialihkan dengan dua segmen. Setiap segmen berisi satu subnet IPv4 dan satu subnet IPv6.

  1. Dapatkan sumber kredensial proyek administrasi.

  2. Membuat jaringan penyedia VLAN yang meliputi segmen default. Dalam contoh ini, jaringan menggunakan jaringan fisik provider1 dengan VLAN ID 2016.

    $ openstack network create --share --provider-physical-network provider1 \
      --provider-network-type vlan --provider-segment 2016 multisegment1
    +---------------------------+--------------------------------------+
    | Field                     | Value                                |
    +---------------------------+--------------------------------------+
    | admin_state_up            | UP                                   |
    | id                        | 6ab19caa-dda9-4b3d-abc4-5b8f435b98d9 |
    | ipv4_address_scope        | None                                 |
    | ipv6_address_scope        | None                                 |
    | l2_adjacency              | True                                 |
    | mtu                       | 1500                                 |
    | name                      | multisegment1                        |
    | port_security_enabled     | True                                 |
    | provider:network_type     | vlan                                 |
    | provider:physical_network | provider1                            |
    | provider:segmentation_id  | 2016                                 |
    | router:external           | Internal                             |
    | shared                    | True                                 |
    | status                    | ACTIVE                               |
    | subnets                   |                                      |
    | tags                      | []                                   |
    +---------------------------+--------------------------------------+
    
  3. Mengubah nama segmen default ke segment1.

    $ openstack network segment list --network multisegment1
    +--------------------------------------+----------+--------------------------------------+--------------+---------+
    | ID                                   | Name     | Network                              | Network Type | Segment |
    +--------------------------------------+----------+--------------------------------------+--------------+---------+
    | 43e16869-ad31-48e4-87ce-acf756709e18 | None     | 6ab19caa-dda9-4b3d-abc4-5b8f435b98d9 | vlan         |    2016 |
    +--------------------------------------+----------+--------------------------------------+--------------+---------+
    
    $ openstack network segment set --name segment1 43e16869-ad31-48e4-87ce-acf756709e18
    

    Catatan

    Perintah ini tidak memberikan output.

  4. Membuat segmen kedua pada jaringan operator. Dalam contoh ini, segmen menggunakan jaringan fisik provider2 dengan VLAN ID 2016.

    $ openstack network segment create --physical-network provider2 \
       --network-type vlan --segment 2016 --network multisegment1 segment2
    +------------------+--------------------------------------+
    | Field            | Value                                |
    +------------------+--------------------------------------+
    | description      | None                                 |
    | headers          |                                      |
    | id               | 053b7925-9a89-4489-9992-e164c8cc8763 |
    | name             | segment2                             |
    | network_id       | 6ab19caa-dda9-4b3d-abc4-5b8f435b98d9 |
    | network_type     | vlan                                 |
    | physical_network | provider2                            |
    | segmentation_id  | 2016                                 |
    +------------------+--------------------------------------+
    
  5. Pastikan jaringan berisi segmen `` segment1`` dan segment2.

    $ openstack network segment list --network multisegment1
    +--------------------------------------+----------+--------------------------------------+--------------+---------+
    | ID                                   | Name     | Network                              | Network Type | Segment |
    +--------------------------------------+----------+--------------------------------------+--------------+---------+
    | 053b7925-9a89-4489-9992-e164c8cc8763 | segment2 | 6ab19caa-dda9-4b3d-abc4-5b8f435b98d9 | vlan         |    2016 |
    | 43e16869-ad31-48e4-87ce-acf756709e18 | segment1 | 6ab19caa-dda9-4b3d-abc4-5b8f435b98d9 | vlan         |    2016 |
    +--------------------------------------+----------+--------------------------------------+--------------+---------+
    
  6. Buat subnet pada segmen segment1. Dalam contoh ini, subnet IPv4 menggunakan 203.0.113.0/24 dan IPv6 menggunakan subnet fd00:203:0:113::/64.

    $ openstack subnet create \
      --network multisegment1 --network-segment segment1 \
      --ip-version 4 --subnet-range 203.0.113.0/24 \
      multisegment1-segment1-v4
    +-------------------+--------------------------------------+
    | Field             | Value                                |
    +-------------------+--------------------------------------+
    | allocation_pools  | 203.0.113.2-203.0.113.254            |
    | cidr              | 203.0.113.0/24                       |
    | enable_dhcp       | True                                 |
    | gateway_ip        | 203.0.113.1                          |
    | id                | c428797a-6f8e-4cb1-b394-c404318a2762 |
    | ip_version        | 4                                    |
    | name              | multisegment1-segment1-v4            |
    | network_id        | 6ab19caa-dda9-4b3d-abc4-5b8f435b98d9 |
    | segment_id        | 43e16869-ad31-48e4-87ce-acf756709e18 |
    +-------------------+--------------------------------------+
    
    $ openstack subnet create \
      --network multisegment1 --network-segment segment1 \
      --ip-version 6 --subnet-range fd00:203:0:113::/64 \
      --ipv6-address-mode slaac multisegment1-segment1-v6
    +-------------------+------------------------------------------------------+
    | Field             | Value                                                |
    +-------------------+------------------------------------------------------+
    | allocation_pools  | fd00:203:0:113::2-fd00:203:0:113:ffff:ffff:ffff:ffff |
    | cidr              | fd00:203:0:113::/64                                  |
    | enable_dhcp       | True                                                 |
    | gateway_ip        | fd00:203:0:113::1                                    |
    | id                | e41cb069-9902-4c01-9e1c-268c8252256a                 |
    | ip_version        | 6                                                    |
    | ipv6_address_mode | slaac                                                |
    | ipv6_ra_mode      | None                                                 |
    | name              | multisegment1-segment1-v6                            |
    | network_id        | 6ab19caa-dda9-4b3d-abc4-5b8f435b98d9                 |
    | segment_id        | 43e16869-ad31-48e4-87ce-acf756709e18                 |
    +-------------------+------------------------------------------------------+
    

    Catatan

    Secara default, subnet IPv6 pada jaringan penyedia bergantung pada infrastruktur jaringan fisik untuk stateless address autoconfiguration (SLAAC) dan router advertisement.

  7. Buat subnet pada segmen segment2. Dalam contoh ini, subnet IPv4 menggunakan 198.51.100.0/24 dan IPv6 menggunakan subnet fd00:198:51:100::/64.

    $ openstack subnet create \
      --network multisegment1 --network-segment segment2 \
      --ip-version 4 --subnet-range 198.51.100.0/24 \
      multisegment1-segment2-v4
    +-------------------+--------------------------------------+
    | Field             | Value                                |
    +-------------------+--------------------------------------+
    | allocation_pools  | 198.51.100.2-198.51.100.254          |
    | cidr              | 198.51.100.0/24                      |
    | enable_dhcp       | True                                 |
    | gateway_ip        | 198.51.100.1                         |
    | id                | 242755c2-f5fd-4e7d-bd7a-342ca95e50b2 |
    | ip_version        | 4                                    |
    | name              | multisegment1-segment2-v4            |
    | network_id        | 6ab19caa-dda9-4b3d-abc4-5b8f435b98d9 |
    | segment_id        | 053b7925-9a89-4489-9992-e164c8cc8763 |
    +-------------------+--------------------------------------+
    
    $ openstack subnet create \
      --network multisegment1 --network-segment segment2 \
      --ip-version 6 --subnet-range fd00:198:51:100::/64 \
      --ipv6-address-mode slaac multisegment1-segment2-v6
    +-------------------+--------------------------------------------------------+
    | Field             | Value                                                  |
    +-------------------+--------------------------------------------------------+
    | allocation_pools  | fd00:198:51:100::2-fd00:198:51:100:ffff:ffff:ffff:ffff |
    | cidr              | fd00:198:51:100::/64                                   |
    | enable_dhcp       | True                                                   |
    | gateway_ip        | fd00:198:51:100::1                                     |
    | id                | b884c40e-9cfe-4d1b-a085-0a15488e9441                   |
    | ip_version        | 6                                                      |
    | ipv6_address_mode | slaac                                                  |
    | ipv6_ra_mode      | None                                                   |
    | name              | multisegment1-segment2-v6                              |
    | network_id        | 6ab19caa-dda9-4b3d-abc4-5b8f435b98d9                   |
    | segment_id        | 053b7925-9a89-4489-9992-e164c8cc8763                   |
    +-------------------+--------------------------------------------------------+
    
  8. Pastikan bahwa setiap subnet IPv4 berasosiasi dengan setidaknya satu agen DHCP.

    $ neutron dhcp-agent-list-hosting-net multisegment1
    +--------------------------------------+-------------+----------------+-------+
    | id                                   | host        | admin_state_up | alive |
    +--------------------------------------+-------------+----------------+-------+
    | c904ed10-922c-4c1a-84fd-d928abaf8f55 | compute0001 | True           | :-)   |
    | e0b22cc0-d2a6-4f1c-b17c-27558e20b454 | compute0101 | True           | :-)   |
    +--------------------------------------+-------------+----------------+-------+
    
  9. Lakukan verifikasi dimana persediaan yang diciptakan untuk setiap subnet IPv4 segment dalam placement API di layanan Compute (untuk singkatnya, hanya salah satu segmen yang ditunjukkan dalam contoh ini).

    Catatan

    URL berbeda tergantung pada penyebaran OpenStack Anda. Anda dapat menemukan URL dengan mengeksekusi perintah openstack endpoint list | grep placement

    $ SEGMENT_ID=053b7925-9a89-4489-9992-e164c8cc8763
    $ curl -s -X GET \
      http://localhost/placement/resource_providers/$SEGMENT_ID/inventories \
      -H "Content-type: application/json" \
      -H "X-Auth-Token: $TOKEN" \
      -H "Openstack-Api-Version: placement 1.1"
    {
        "resource_provider_generation": 1,
        "inventories": {
            "allocation_ratio": 1,
            "total": 254,
            "reserved": 2,
            "step_size": 1,
            "min_unit": 1,
            "max_unit": 1
        }
    }
    

    Catatan

    Pada penulisan buku ini, tidak ada penempatan API CLI client, sehingga perintah curl digunakan untuk contoh ini.

  10. Pastikan bahwa kumpulan host diciptakan untuk setiap segmen dalam pelayanan Compute (untuk singkatnya, hanya salah satu segmen yang ditunjukkan dalam contoh ini).

    $ nova aggregate-list
    +----+---------------------------------------------------------+-------------------+
    | Id | Name                                                    | Availability Zone |
    +----+---------------------------------------------------------+-------------------+
    | 10 | Neutron segment id 053b7925-9a89-4489-9992-e164c8cc8763 |                   |
    +----+---------------------------------------------------------+-------------------+
    
  11. Luncurkan satu atau lebih instance. Setiap instance memperoleh alamat IP sesuai dengan segmennya pada node komputasi tertentu.

    Catatan

    If a fixed IP is specified by the user in the port create request, that particular IP is allocated immediately to the port. However, creating a port and passing it to an instance yields a different behavior than conventional networks. The Networking service defers assignment of IP addresses to the port until the particular compute node becomes apparent. For example:

    $ openstack port create --network multisegment1 port1
    +-----------------------+--------------------------------------+
    | Field                 | Value                                |
    +-----------------------+--------------------------------------+
    | admin_state_up        | UP                                   |
    | binding_vnic_type     | normal                               |
    | id                    | 6181fb47-7a74-4add-9b6b-f9837c1c90c4 |
    | ip_allocation         | deferred                             |
    | mac_address           | fa:16:3e:34:de:9b                    |
    | name                  | port1                                |
    | network_id            | 6ab19caa-dda9-4b3d-abc4-5b8f435b98d9 |
    | port_security_enabled | True                                 |
    | security_groups       | e4fcef0d-e2c5-40c3-a385-9c33ac9289c5 |
    | status                | DOWN                                 |
    +-----------------------+--------------------------------------+
    
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.