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:
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).
Penerapan Newton berisi keterbatasan berikut:
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.Jaringan penyedia dialihkan (routed) memerlukan prasyarat tambahan melalui jaringan penyedia konvensional. Sebaiknya, kita gunakan prosedur berikut:
Mulailah dengan segmen. Layanan Networking mendefinisikan segmen menggunakan komponen berikut:
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.
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 |
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 |
... | ... | ... |
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 |
... | ... | ... |
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.
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
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
Restart layanan neutron-server
.
Langkah-langkah berikut membuat jaringan penyedia dialihkan dengan dua segmen. Setiap segmen berisi satu subnet IPv4 dan satu subnet IPv6.
Dapatkan sumber kredensial proyek administrasi.
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 | [] |
+---------------------------+--------------------------------------+
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.
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 |
+------------------+--------------------------------------+
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 |
+--------------------------------------+----------+--------------------------------------+--------------+---------+
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.
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 |
+-------------------+--------------------------------------------------------+
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 | :-) |
+--------------------------------------+-------------+----------------+-------+
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.
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 | |
+----+---------------------------------------------------------+-------------------+
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 |
+-----------------------+--------------------------------------+
Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.