Host Europe assigned a VM I just rented from them an IP address ending in all zeros (2xxx:xxxx:xxxx:xxxx::/128
).
I claimed this as possible interop problems as addresses with the last 64 bits all zeros are normally anycast addresses for the subnet router, and I fear other nodes may treat it specially.
Their support says: “It’s only syntactically a subnet anycast address, but you can use it no problems because we use a /128 subnet size.” (translation mine)
I’m only semi-convinced. Is there anything that allows a node to handle addresses of that kind specially, or can I really just use this like a regular address?
For a subnet, an interface ID of all-zeros would be the subnet anycast. Although in theory it was defined as 64 bits for IPv6 global unicast, in practice the subnet prefix length is what defines the length of the interface ID – it is usually 64 bits because that's what you have left minus the /64 prefix, but an /128 address has no subnet, nor an interface ID for that matter (it would be a 0-bit IID).
Similar to the case with IPv4 all-ones "subnet broadcast" addresses, the subnet-router anycast (or any other kind of local-subnet anycast that's defined in IPv6) is only meaningful once it actually reaches a router of said subnet. Only the subnet routers are able to give it any kind of useful treatment to begin with; hosts or routers that are not in that subnet can't do anything else but route it onward as a regular unicast address. So if the address is statically routed 'via' your host, then only your own machine is the "subnet router" for it and the other nodes don't really have a say.
(This seems to mirror IPv4 classful addressing, where passing nodes might have "known" that 192.168.4.255 is special based on it being Class C address... but despite that knowledge, they still weren't going to be able to do anything else but route it anyway like a normal address. And now that classful addressing is long gone, nodes can't even know whether it is special anymore because they don't know what prefix length the final subnet is using.)
A one host net can be set on an IPv6 host and be routed. Even though a subnet-router address is meaningless here and should be disabled, there still are questions about if you can get a proper /64, and if their address planning is ready for that.
IPv6 on link determination is a protocol thing, so there does not need to be router IP addresses in the same subnet, like v4 has. Traffic via some other on-link net works fine, almost certainly the default gateway's link local address.
A similar long prefix thing whose debates are recorded in RFCs is the practice of /127s on point-to-points in RFC 6164. People thought that would break things, but it can work. Those recommendations include if multiple prefixes are to be assigned out of one /64, the all zeros interface ID should not be used. "Otherwise, nodes may receive packets that they are not intended to receive." This is less important if you are the only customer in the /64, but I don't interpret their response to guarantee that.
One address per rented VM is not very generous to say the least. There are use cases to IP your own containers, or IP based virtual hosts. However, this would require routing an entire prefix to your host, which most providers are not doing. If they are not already doing so, could be a good idea for address planning reasons for them to reserve an entire /64, even if only one IP is attached to your guest. There is more than enough address space to support this.
Its nice having the shortest vanity address possible, but that's not really necessary.
2001:db8:c6ad:a661::1
is only slightly longer in text form than2001:db8:c6ad:a661::
. And the name in DNS is the same length either way.