Help with new features in v7.23(from-pool-policy)

Could someone explain these new features?

*) ippool6 - allow variable length pool;
*) ipv6 - added from-pool-policy address property that controls how address is acquired from the pool;

Regarding from-pool-policy, I've tested both recommended and strict, but I don't see any difference between them.

For example, I have a pool with the prefix fd00:0:0:2190::/60. In /ipv6 address, I configured an address like this:

add address=::3:0:0:0:133 advertise=no from-pool=p_pool01 from-pool-policy=strict interface=vlan1

The resulting address is fd00:0:0:2193::133. However, when I change from-pool-policy to recommended, it seems there's no change at all.

Thank you.

The new manual has description for the possible values:

address | RouterOS Manual

You only see the effect when you try to assign the same subnet-id to multiple interfaces from the same pool. Here are some tests:

/ipv6 pool
add name=ula-pool prefix=fde8:b95b:6696:100::/56 prefix-length=64

 /ipv6 address 
add interface=vlan20 address=::3:0:0:0:1/64 from-pool=ula-pool from-pool-policy=recommended 
add interface=vlan30 address=::3:0:0:0:1/64 from-pool=ula-pool from-pool-policy=recommended 
add interface=vlan40 address=::3:0:0:0:1/64 from-pool=ula-pool from-pool-policy=recommended 

Result with recommended:

As you can see, RouteOS tries to use the specified subnet-id (3 in the example) when possible (applied to vlan20) but when the subnet is already used (pool already allocated it to vlan20) the two other interfaces get the next available subnet-id from the pool (0 for vlan30 and 1 for vlan40).

Now the similar test, but with strict instead:

 /ipv6 address 
add interface=vlan20 address=::3:0:0:0:1/64 from-pool=ula-pool from-pool-policy=strict
add interface=vlan30 address=::3:0:0:0:1/64 from-pool=ula-pool from-pool-policy=strict
add interface=vlan40 address=::3:0:0:0:1/64 from-pool=ula-pool from-pool-policy=strict

Result:

With strict RouterOS is not allowed to change the subnet-id from the specifed one, as a result, only vlan20 get a valid address assigned. The two other interfaces cannot obtain a prefix from the pool, because they explicitly ask for subnet-id 3 and that one is no longer available in the pool.

If we now run:

/ipv6 address
set [find interface=vlan30 !dynamic] from-pool-policy=recommended
set [find interface=vlan40 !dynamic] from-pool-policy=recommended

Although we have not edited the address field, RouterOS will still automatically correct the subnet-id in the stored setting:

The setting is introduced because with this change from 7.21:

from 7.21-7.22 the subnet-id 0 was used as a special subnet-id that says: use the next available prefix from the pool (similar to recommended in 7.23), while all other non-zero subnet-ids had the same meaning as strict. As a result, it was not possible to pin an interface to the subnet-id 0 (the address entry will jump around).

7.23 with the new from-pool-policy parameter allows you to pin a subnet-id 0 to an interface by setting the subnet and using from-pool-policy=strict.

As for:

In previous versions (here pictured with 7.21) when you create a pool with prefix-length with a wider prefix length (here 60)

and later request a narrower subnet from the pool (here /64), the prefixes taken from the pool all have the wider prefix length:

I've assigned two /64 to two interfaces (containers and containers-2) and each took a /60 chunk from the pool.


In 7.23, if we define a pool with prefix-length=60 setting:

We can later request smaller prefix chunks from that pool. In this example, a /62 sub-pool was created from the parent pool, as well as 4 address assignments, each with /64:

We can now see under Used Prefixes that we've not taken out 5 /60 chunks out of the pool, but one /62 and four /64.


With 7.23, combined with the from-pool-policy=without-acquire, it's possible for users whose greedy ISPs only allocate a single /64 prefix, to both use that prefix for SLAAC (assign to one interface with from-pool-policy=without-acquire) as well as to use the same /64 pool for a DHCPv6 server instance that assigns /128 addresses.

@CGGXANNX

Thank you so much! Your explanations are always incredibly professional and detailed. MikroTik really should make your answers their official documentation!