Subnet pools (kolam subnet)

Subnet pools (kolam subnet)

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 dimana fitur tercantum dalam alias didukung. Anda dapat melakukan ini dengan klien OpenStack.

$ openstack extension list | grep subnet_allocation
| Subnet Allocation | subnet_allocation | Enables allocation of subnets
from a subnet pool                                                                                                         |

Mengapa Anda membutuhkan mereka

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.

  1. IPv6 sejak OpenStack Networking tidak mempunyai IPv6 floating IP.
  2. Routing langsung ke jaringan proyek dari jaringan eksternal.

Bagaimana mereka bekerja

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.

Quotas (kuota)

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.

Kolam subnet default

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

$ openstack extension list | grep default-subnetpools
| Default Subnetpools | default-subnetpools | Provides ability to mark
and use a subnetpool as the default                                                                                             |

Administrator dapat menandai kolam sebagai default. Hanya satu kolam dari masing-masing keluarga alamat dapat ditandai default.

$ openstack subnet pool set --default 74348864-f8bf-4fc0-ab03-81229d189467

Jika ada default, itu dapat diminta dengan melewati --use-default-subnetpool bukannya --subnet-pool SUBNETPOOL.

Demo

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:

$ openstack subnet pool create --share --pool-prefix 203.0.113.0/24 \
--default-prefix-length 26 demo-subnetpool4
+-------------------+--------------------------------+
| Field             | Value                          |
+-------------------+--------------------------------+
| address_scope_id  | None                           |
| created_at        | 2016-12-14T07:21:26Z           |
| default_prefixlen | 26                             |
| default_quota     | None                           |
| description       |                                |
| headers           |                                |
| id                | d3aefb76-2527-43d4-bc21-0ec253 |
|                   | 908545                         |
| ip_version        | 4                              |
| is_default        | False                          |
| max_prefixlen     | 32                             |
| min_prefixlen     | 8                              |
| name              | demo-subnetpool4               |
| prefixes          | 203.0.113.0/24                 |
| project_id        | cfd1889ac7d64ad891d4f20aef9f8d |
|                   | 7c                             |
| revision_number   | 1                              |
| shared            | True                           |
| updated_at        | 2016-12-14T07:21:26Z           |
+-------------------+--------------------------------+

default_prefix_length mendefinisikan ukuran subnet dimana Anda akan mendapatkan jika Anda tidak menentukan `` –prefix-length`` saat membuat 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)

$ openstack subnet pool list
+------------------+------------------+--------------------+
| ID               | Name             | Prefixes           |
+------------------+------------------+--------------------+
| 2b7cc19f-0114-4e | demo-subnetpool  | 2001:db8:a583::/48 |
| f4-ad86-c1bb91fc |                  |                    |
| d1f9             |                  |                    |
| d3aefb76-2527-43 | demo-subnetpool4 | 203.0.113.0/24     |
| d4-bc21-0ec25390 |                  |                    |
| 8545             |                  |                    |
+------------------+------------------+--------------------+

Sekarang, silahkan menggunakannya. Sangat mudah untuk membuat subnet dari kolam:

$ openstack subnet create --ip-version 4 --subnet-pool \
demo-subnetpool4 --network demo-network1 demo-subnet1
+-------------------+--------------------------------------+
| Field             | Value                                |
+-------------------+--------------------------------------+
| allocation_pools  | 203.0.113.194-203.0.113.254          |
| cidr              | 203.0.113.192/26                     |
| created_at        | 2016-12-14T07:33:13Z                 |
| description       |                                      |
| dns_nameservers   |                                      |
| enable_dhcp       | True                                 |
| gateway_ip        | 203.0.113.193                        |
| headers           |                                      |
| host_routes       |                                      |
| id                | 8d4fbae3-076c-4c08-b2dd-2d6175115a5e |
| ip_version        | 4                                    |
| ipv6_address_mode | None                                 |
| ipv6_ra_mode      | None                                 |
| name              | demo-subnet1                         |
| network_id        | 6b377f77-ce00-4ff6-8676-82343817470d |
| project_id        | cfd1889ac7d64ad891d4f20aef9f8d7c     |
| revision_number   | 2                                    |
| service_types     |                                      |
| subnetpool_id     | d3aefb76-2527-43d4-bc21-0ec253908545 |
| updated_at        | 2016-12-14T07:33:13Z                 |
+-------------------+--------------------------------------+

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.

$ openstack subnet create --subnet-pool demo-subnetpool4 \
--network demo-network1 --subnet-range 203.0.113.128/26 subnet2
+-------------------+--------------------------------------+
| Field             | Value                                |
+-------------------+--------------------------------------+
| allocation_pools  | 203.0.113.130-203.0.113.190          |
| cidr              | 203.0.113.128/26                     |
| created_at        | 2016-12-14T07:27:40Z                 |
| description       |                                      |
| dns_nameservers   |                                      |
| enable_dhcp       | True                                 |
| gateway_ip        | 203.0.113.129                        |
| headers           |                                      |
| host_routes       |                                      |
| id                | d32814e3-cf46-4371-80dd-498a80badfba |
| ip_version        | 4                                    |
| ipv6_address_mode | None                                 |
| ipv6_ra_mode      | None                                 |
| name              | subnet2                              |
| network_id        | 6b377f77-ce00-4ff6-8676-82343817470d |
| project_id        | cfd1889ac7d64ad891d4f20aef9f8d7c     |
| revision_number   | 2                                    |
| service_types     |                                      |
| subnetpool_id     | d3aefb76-2527-43d4-bc21-0ec253908545 |
| updated_at        | 2016-12-14T07:27:40Z                 |
+-------------------+--------------------------------------+

Jika kolam menjadi habis, muatlah beberapa awalan (prefix) yang lebih:

$ openstack subnet pool set --pool-prefix \
198.51.100.0/24 demo-subnetpool4
$ openstack subnet pool show demo-subnetpool4
+-------------------+--------------------------------------+
| Field             | Value                                |
+-------------------+--------------------------------------+
| address_scope_id  | None                                 |
| created_at        | 2016-12-14T07:21:26Z                 |
| default_prefixlen | 26                                   |
| default_quota     | None                                 |
| description       |                                      |
| id                | d3aefb76-2527-43d4-bc21-0ec253908545 |
| ip_version        | 4                                    |
| is_default        | False                                |
| max_prefixlen     | 32                                   |
| min_prefixlen     | 8                                    |
| name              | demo-subnetpool4                     |
| prefixes          | 198.51.100.0/24, 203.0.113.0/24      |
| project_id        | cfd1889ac7d64ad891d4f20aef9f8d7c     |
| revision_number   | 2                                    |
| shared            | True                                 |
| updated_at        | 2016-12-14T07:30:32Z                 |
+-------------------+--------------------------------------+
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.