IPv6 DHCP-Client Changes in 7.16.1 from 7.15.3 Prefix Hint Broken

I use CHR on a Comcast business connection (ISP In the US if others are not familiar), and if anyone knows any history with Comcast their IPv6 setup is in my opinion difficult.

If you subscribe to a IPv4 static address, you will also receive a static /56 IPv6 block. The issue is that the modem will always block any outbound IPv6 communication unless it receives and replies to a DHCPv6-PD request. You can request up to my knowledge a /59 for each device you want behind the modem within the /56. But you can not use the /56 as you please compared to IPv4 for example.

On different edge devices in the past, I had to restore rebooting my modem until it would randomly give me the /59 I was expecting. When I switched to RouterOS I found that setting the prefix-hint under /ipv6/dhcp-client, worked and I could always get an expected prefix back. I even have two CHRs in my setup, that I have a script to fail between them. One piece that it does is disable ipv6/dhcp-client on one, and will turn up on another and has been working great for some time.

When I recently upgraded to 7.16.1, I noticed that this seemed to no longer work. I still get a IPv6-PD response back, and router OS binds, but the modem will reply back to with a random prefix. Not the one I have set with a hint. I rolled back from a backup and I ended up getting two packet captures. One on 7.15.3, and one on 7.16.1, and I have those attached.

I only saw one small difference, and that was with T1 and T2 values in the request (which I also assume corresponds to preferred and valid lifetime under IA Prefix). Apparently from a quick google search these values are “T1(renew) and T2(rebind)”. Maybe I’m missing this, but I do not see any mention to these being able to be set to a value in the documentation. My only guess is that the Comcast modem expects very specific requests, and with T1=0 and T2=0 it just ignores the prefix-hint request, and replies back with a random /59 out of the /56.

Wondering if anyone else has seen this behavior or in this specific case has a working 7.16.1 install with Comcast?
router-os-ipv6-settings.jpg

Can you try requesting two /60 prefixes instead? I think the recommendation (so yeah, you don’t have to) for prefix delegation is the prefix length should always be a multiple of 4:

https://www.ripe.net/publications/docs/ripe-690/#4-2--prefix-assignment-options

4.2. Prefix assignment options
To keep addressing plans usable and understandable, and to align with DNS reverse zone delegations, the size of the delegated prefix should align with a nibble boundary. Each hexadecimal character in an IPv6 prefix represents one nibble, which is 4 bits. The length of a delegated prefix should therefore always be a multiple of 4.

https://blog.apnic.net/2023/04/04/ipv6-architecture-and-subnetting-guide-for-network-engineers-and-operators/

Ensure the prefix length is always a multiple of 4 where the lowest possible denomination is a /64, not anything smaller, with the reason being that we would want to avoid exceeding the nibble bit boundary.

I've been seeing the same annoying behavior. Despite configuring DHCP to request a /60, the modem still gives me a /59. We'll see if it's any more stable, but IPv6 breaks again every so often, and I have to reconfigure all my IPv6 subnets and pools.