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:
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).
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.
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:
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.
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 penyedia router menyiratkan bahwa compute node berada pada segmen yang berbeda. Operator harus memastikan bahwa setiap compute hostyang seharusnya berpartisipasi dalam jaringan penyedia router memiliki konektivitas langsung ke salah satu segmennya.
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 |
... | ... | ... |
Mengkonfigurasi komunikasi layanan Networking dengan Compute scheduler.
Instance dengan antarmuka dengan alamat IPv4 di jaringan penyedia routed harus ditempatkan oleh Compute scheduler di host yang memiliki akses ke segmen dengan alamat IPv4 yang tersedia. Untuk membuat ini mungkin, layanan Networking berkomunikasi dengan Compute scheduler inventarisasi alamat IPv4 yang terkait dengan setiap segmen jaringan penyedia routed. Operator harus mengkonfigurasi kredensial otentikasi yang akan digunakan oleh layanan Networking untuk berkomunikasi dengan Compute scheduler’s placement API. Silakan lihat di bawah konfigurasi contoh.
Catatan
Koordinasi antara layanan Networking dan Compute scheduler tidak diperlukan untuk subnet IPv6 sebagai konsekuensi dari ruang alamat besar mereka.
Catatan
Koordinasi antara layanan Networking dan Compute scheduler memerlukan versi mikro 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 kredensial otentikasi untuk Compute service placement API:
[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
.
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.
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 | :-) |
+--------------------------------------+-------------+----------------+-------+
Verifikasi bahwa inventaris dibuat untuk setiap segmen subnet IPv4 di segmen (untuk kepentingan ringkasnya, hanya satu segmen yang ditunjukkan pada contoh ini).
$ 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 panduan ini, tidak ada klien placement API CLI, jadi perintah curl digunakan untuk contoh ini.
Verifikasi bahwa agregat host dibuat untuk setiap segmen di layanan Compute (untuk singkatnya, hanya satu segmen yang ditunjukkan pada 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
Pembuatan port dan meneruskananya ke sebuah instance mengakibatkan aturan yang berbeda dari jaringan konvensional. Layanan Networking menangguhkan penugasan alamat IP ke port sampai node komputasi tertentu menjadi jelas. Sebagai contoh:
$ 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.