Subnet pools

Subnet pools

Subnet pool telah tersedia sejak rilis Kilo. Ini adalah fitur sederhana yang memiliki potensi untuk meningkatkan alur kerja Anda cukup. Ini juga menyediakan blok bangunan yang 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 |

Mengapa Anda membutuhkan mereka

Sebelum Kilo, Networking tidak ada otomatisasi alamat yang digunakan untuk membuat subnet. Untuk membuat satu, Anda harus datang dengan alamat Anda sendiri tanpa bantuan dari sistem. Ada use case valid untuk ini, tetapi jika Anda tertarik pada kemampuan berikut, maka subnet pool mungkin untuk Anda.

Pertama, apakah tidak akan lebih baik jika Anda bisa mengubah subnet pool alamat Anda ke Neutron untuk mengurus? Bila Anda perlu membuat subnet, Anda hanya meminta alamat yang akan dialokasikan dari pool. Anda tidak perlu khawatir tentang apa yang Anda telah digunakan dan apa alamat yang di pool Anda. subnet pool bisa melakukan ini.

Kedua, kolam subnet dapat mengelola alamat di seluruh proyek. Alamat dijamin tidak tumpang tindih. Jika alamat berasal dari kolam routable eksternal maka Anda tahu bahwa semua proyek memiliki alamat yang * routable * dan unik. Hal ini dapat berguna dalam skenario berikut.

  1. IPv6 setelah OpenStack Networking tidak memiliki IPv6 floating IPs.

  2. Routing langsung ke jaringan proyek dari jaringan eksternal.

Bagaimana mereka bekerja

Sebuah subnet pool mengelola pool alamat dimana subnet dapat dialokasikan. Ini memastikan bahwa tidak ada tumpang tindih antara dua subnet dialokasikan dari pool 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 Anda tidak akan terlihat dari proyek lainnya.

Jika Anda adalah seorang admin, Anda dapat membuat kolam yang dapat diakses oleh setiap proyek biasa. Menjadikan sumber daya bersama, ada mekanisme kuota untuk menengahi akses.

Quota

Subnet pool 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_quotat dapat diatur untuk jumlah alamat absolut untuk setiap given project diperbolehkan untuk mengkonsumsi dari kolam. Misalnya, dengan kuota 128, saya mungkin akan 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 sekali, 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 prefixe lebih di masa depan.

Default subnet pools

Dimulai dengan Mitaka, subnet pool dapat ditandai sebagai default. Hal ini ditangani dengan ekstensi baru.

$ neutron ext-list | grep default-subnetpools
| default-subnetpools | Default Subnetpools |

Administrator dapat menandai pool sebagai default. Hanya satu pool dari masing-masing address family 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 bukan --subnetpool SUBNETPOOL.

Demo

Jika Anda memiliki akses ke OpenStack Kilo atau based neutron kemudian, Anda dapat bermain dengan fitur ini sekarang. Cobalah. Semua perintah berikut bekerja sama juga dengan alamat IPv6.

Pertama, sebagai admin, buat subnet pool 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 yang Anda akan dapatkan jika Anda tidak menentukan :option: –prefixlen saat membuat subnet.

Pada dasarnya melakukan hal yang sama untuk IPv6 dan sekarang ada dua kolam subnet. Proyek biasa 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, menggunakannya. Sangat mudah untuk membuat subnet dari pool:

$ 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 pool. Anda perlu menentukan subnet yang jatuh dalam pool’s prefixes. Jika subnet tersebut belum dialokasikan, permintaan berhasil. Anda dapat menghentikan versi IP karena dideduksi dari subnet pool.

$ 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 pool menjadi habis, muatlah beberapa prefixe 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     |
+-------------------+--------------------------------------+
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.