As we know, we can use ipv6 address end with '0' like 2001::.
But when we allocate ipv6 pool use neutron, we could find the error like follows:
neutron net-create net-v6
neutron subnet-create --ip-version 6 --allocation-pool start=2001::,end=2001::2 net-v6 2001::/64
The allocation pool 2001::-2001::2 spans beyond the subnet cidr 2001::/64.
Neutron server returns request_ids: ['req-9a6569ed-52d7-4c3f-ad7e-8986a041a347']
We found that the error info from the func 'validate_allocation_pools':
LOG.debug("Performing IP validity checks on allocation pools")
ip_sets = []
for ip_pool in ip_pools: start_ip = netaddr.IPAddress(ip_pool.first, ip_pool.version)
end_ip = netaddr.IPAddress(ip_pool.last, ip_pool.version)
if (start_ip.version != subnet.version or end_ip.version != subnet.version): LOG.info("Specified IP addresses do not match " "the subnet IP version") raise exc.InvalidAllocationPool(pool=ip_pool)
if start_ip < subnet_first_ip or end_ip > subnet_last_ip: LOG.info("Found pool larger than subnet " "CIDR:%(start)s - %(end)s", {'start': start_ip, 'end': end_ip}) raise exc.OutOfBoundsAllocationPool( pool=ip_pool, subnet_cidr=subnet_cidr)
Why neutron ipam force first ip of one pool < (subnet.first + 1) if version of subnet is ipv6 ?
As we know, we can use ipv6 address end with '0' like 2001::.
But when we allocate ipv6 pool use neutron, we could find the error like follows: :,end=2001: :2 net-v6 2001::/64 52d7-4c3f- ad7e-8986a041a3 47']
neutron net-create net-v6
neutron subnet-create --ip-version 6 --allocation-pool start=2001:
The allocation pool 2001::-2001::2 spans beyond the subnet cidr 2001::/64.
Neutron server returns request_ids: ['req-9a6569ed-
We found that the error info from the func 'validate_ allocation_ pools':
else: # IPv6 case
subnet_ first_ip = netaddr. IPAddress( subnet. first + 1)
subnet_ last_ip = netaddr. IPAddress( subnet. last)
ip_sets = []
for ip_pool in ip_pools:
end_ip = netaddr.
if (start_ip.version != subnet.version or
if start_ip < subnet_first_ip or end_ip > subnet_last_ip:
Why neutron ipam force first ip of one pool < (subnet.first + 1) if version of subnet is ipv6 ?