Kolam subnet telah tersedia sejak rilis Kilo. Ini adalah fitur sederhana yang memiliki potensi untuk meningkatkan alur kerja Anda secara mencukupi. Ini juga menyediakan blok bangunan dimana fitur baru lainnya akan dibangun untuk OpenStack Networking.
Untuk melihat apakah cloud Anda memiliki fitur ini tersedia, Anda dapat memeriksa bahwa itu tercantum dalam alias yang didukung. Anda dapat melakukan ini dengan klien neutron.
$ neutron ext-list | grep subnet_allocation
| subnet_allocation | Subnet Allocation |
Sebelum Kilo, Networking tidak mempunyai otomatisasi sekitar alamat yang digunakan untuk membuat subnet. Untuk membuat subnet, Anda harus membawa alamat Anda sendiri tanpa bantuan dari sistem. Ada use case valid untuk ini, tetapi jika Anda tertarik pada kemampuan berikut, maka kolam subnet mungkin benar untuk Anda.
Pertama, mungkin tidak akan lebih baik jika Anda bisa mengubah kolam alamat Anda ke Neutron untuk mengurusnya? Bila Anda perlu membuat subnet, Anda hanya meminta alamat yang akan dialokasikan dari kolam. Anda tidak perlu khawatir tentang apa yang Anda telah digunakan dan apa alamat yang ada di kolam Anda. Kolam subnet bisa melakukan ini.
Kedua, kolam subnet dapat mengelola alamat di seluruh proyek. Alamat dijamin tidak tumpang tindih. Jika alamat berasal dari kolam eksternal routable maka Anda tahu bahwa semua proyek memiliki alamat yang *routable * dan unik. Hal ini dapat berguna dalam skenario berikut.
IPv6 sejak OpenStack Networking tidak mempunyai IPv6 floating IP.
Routing langsung ke jaringan proyek dari jaringan eksternal.
Sebuah kolam subnet mengelola kolam alamat dimana subnet dapat dialokasikan. Ini memastikan bahwa tidak ada tumpang tindih antara dua subnet yang dialokasikan dari kolam yang sama.
Sebagai proyek reguler di cloud OpenStack, Anda dapat membuat subnet kolam Anda sendiri dan menggunakannya untuk mengelola kolam alamat Anda sendiri. Ini tidak memerlukan hak istimewa admin. Kolam renang Anda tidak akan terlihat dari proyek lainnya.
Jika Anda adalah seorang admin, Anda dapat membuat kolam yang dapat diakses oleh setiap proyek biasa. Menjadi sumber daya bersama, kolam mempunyai mekanisme kuota untuk menengahi konflik akses.
Kolam subnet memiliki sistem kuota yang sedikit berbeda dari kuota lainnya di Neutron. Kuota lainnya di Neutron menghitung instance diskrit suatu obyek terhadap kuota. Setiap kali Anda membuat sesuatu seperti router, jaringan, atau port, menggunakan salah satu dari jumlah kuota.
Dengan subnet, sumber daya adalah ruang alamat IP. Beberapa subnet mengambil lebih banyak daripada lainnya. Misalnya, 203.0.113.0/24 menggunakan 256 alamat dalam satu subnet tetapi 198.51.100.224/28 hanya menggunakan 16. Jika ruang alamat terbatas, sistem kuota dapat mendorong efisiensi penggunaan ruang.
Dengan IPv4, default_quota yang dapat diatur untuk jumlah alamat absolut setiap proyek yang diberikan diperbolehkan untuk mengkonsumsi dari kolam. Misalnya, dengan kuota 128, saya mungkin akan mendapatkan 203.0.113.128/26, 203.0.113.224/28, dan masih memiliki ruang untuk mengalokasikan 48 alamat lebih di masa depan.
Dengan IPv6 itu adalah sedikit berbeda. Hal ini tidak praktis untuk menghitung alamat individu. Untuk menghindari nomor besar yang tidak masuk akal, kuota dinyatakan dalam jumlah /64 subnet yang dapat dialokasikan. Misalnya, dengan default_quota dari 3, saya bisa mendapatkan 2001:db8:c18e:c05a::/64, 2001:db8:221c:8ef3::/64, dan masih memiliki ruang untuk mengalokasikan satu awalan (prefix) lebih di masa depan.
Dimulai dengan Mitaka, kolam subnet dapat ditandai sebagai default. Hal ini ditangani dengan ekstensi baru.
$ neutron ext-list | grep default-subnetpools
| default-subnetpools | Default Subnetpools |
Administrator dapat menandai kolam sebagai default. Hanya satu kolam dari masing-masing keluarga alamat dapat ditandai default.
$ neutron subnetpool-update --is-default True 74348864-f8bf-4fc0-ab03-81229d189467
Updated subnetpool: 74348864-f8bf-4fc0-ab03-81229d189467
Jika ada default, itu dapat diminta dengan melewati --use-default-subnetpool
instead of --subnetpool SUBNETPOOL
.
Jika Anda memiliki akses ke OpenStack Kilo atau later based neutron, Anda dapat bermain dengan fitur ini sekarang. Cobalah. Semua perintah berikut bekerja sama juga dengan alamat IPv6.
Pertama, sebagai admin, buatlah subnet kolam bersama:
admin> neutron subnetpool-create --shared --pool-prefix 203.0.113.0/24 \
--default-prefixlen 26 demo-subnetpool4
Created a new subnetpool:
+-------------------+--------------------------------------+
| Field | Value |
+-------------------+--------------------------------------+
| default_prefixlen | 26 |
| default_quota | |
| id | 670eb517-4fd3-4dfc-9bed-da2f99f85c7a |
| ip_version | 4 |
| name | demo-subnetpool4 |
| prefixes | 203.0.113.0/24 |
| shared | True |
| tenant_id | c597484841ff4a8785804c62ba81449b |
+-------------------+--------------------------------------+
default_prefixlen
mendefinisikan ukuran subnet Anda yang akan mendapatkan jika Anda tidak menentukan --prefixlen
saat pembuatan subnet.
Lakukan hal pada dasarnya yang sama untuk IPv6 dan sekarang ada dua kolam subnet. Proyek regular dapat melihat mereka. (Output dipangkas sedikit untuk display)
$ neutron subnetpool-list
+---------+------------------+------------------------------------+-------------------+
| id | name | prefixes | default_prefixlen |
+---------+------------------+------------------------------------+-------------------+
| 670e... | demo-subnetpool4 | [u'203.0.113.0/24'] | 26 |
| 7b69... | demo-subnetpool | [u'2001:db8:1:2', u'2001:db8:1:2'] | 64 |
+---------+------------------+------------------------------------+-------------------+
Sekarang, silahkan menggunakannya. Sangat mudah untuk membuat subnet dari kolam:
$ neutron subnet-create --name demo-subnet1 --ip_version 4 \
--subnetpool demo-subnetpool4 demo-network1
+-------------------+--------------------------------------+
| Field | Value |
+-------------------+--------------------------------------+
| id | 6e38b23f-0b27-4e3c-8e69-fd23a3df1935 |
| ip_version | 4 |
| cidr | 203.0.113.0/26 |
| name | demo-subnet1 |
| network_id | b5b729d8-31cc-4d2c-8284-72b3291fec02 |
| subnetpool_id | 670eb517-4fd3-4dfc-9bed-da2f99f85c7a |
| tenant_id | a8b3054cc1214f18b1186b291525650f |
+-------------------+--------------------------------------+
Anda dapat meminta subnet dari kolam. Anda perlu menentukan subnet yang termasuk dalam awalan (prefix) kolam ini. Jika subnet tersebut belum dialokasikan, permintaan berhasil. Anda dapat meninggalkan versi IP karena disimpulkan dari subnet kolam.
$ neutron subnet-create --name demo-subnet2 \
--subnetpool demo-subnetpool4 demo-network1 203.0.113.128/26
Created a new subnet:
+-------------------+----------------------------------------------------+
| Field | Value |
+-------------------+----------------------------------------------------+
| id | b15db708-ce90-4ce3-8852-52e1779bae1f |
| ip_version | 4 |
| cidr | 203.0.113.128/26 |
| name | demo-subnet2 |
| network_id | 8d16c25d-690c-4414-a0c8-afbe698a1e73 |
| subnetpool_id | 499b768b-0f8f-4762-8748-792e7e00face |
| tenant_id | a8b3054cc1214f18b1186b291525650f |
+-------------------+----------------------------------------------------+
Jika kolam menjadi habis, muatlah beberapa awalan (prefix) yang lebih:
admin> neutron subnetpool-update --pool-prefix 203.0.113.0/24 \
--pool-prefix 198.51.100.0/24 demo-subnetpool4
Updated subnetpool: demo-subnetpool4
admin> neutron subnetpool-show demo-subnetpool4
+-------------------+--------------------------------------+
| Field | Value |
+-------------------+--------------------------------------+
| default_prefixlen | 26 |
| default_quota | |
| id | 670eb517-4fd3-4dfc-9bed-da2f99f85c7a |
| ip_version | 4 |
| name | demo-subnetpool4 |
| prefixes | 198.51.100.0/24 |
| | 203.0.113.0/24 |
| shared | True |
| tenant_id | c597484841ff4a8785804c62ba81449b |
+-------------------+--------------------------------------+
Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.