On Dec 28, 2017, at 2:31 PM, Thomas Bellman <bellman@nsc.liu.se> wrote:
My problem with the IPv6 addressing scheme is not the waste of 64 bits for the interface identifier, but the lack of bits for the subnet id. 16 bits (as you normally get a /48) is not much for a semi-large organi- zation, and will force many to have a dense address plan, handing out just one or a few subnets at a time, resulting in a patch-work of allocations. 24 bits for subnet id would be more usable.
If you need (and can justify) more than a site /48, you can easily get that.
Consider e.g. a university or company campus. There are probably at least 16 departments, so I would like to use 8 bits as department id. Several departments are likely to have offices on more than one floor, or in more than one building, so I would like to let them have 4 bits to specify location, and then 8 bits to specify office/workplace within each location. And allow them to hand out 16 subnets per workplace. That adds up to 24 bits. So a /40 would be nice, not a /48.
IPv6 prefixes are not databases. Coding this sort of thing into your address space is silly. You can (and should) track this info externally. It's pretty simple to do this using easily parsable text files. If you encode policy into your address space like this, sooner or later you will find yourself painted into a corner you can't get out of. Instead, carve up the 16bits of subnet space by allocating network bits from left-to-right. This gives you the ability to slice your subnet space into variable-length allocations. When you allocate in the subnet space, do so by bisecting the current network prefix. That gives you room to grow your /64s into something larger, while keeping the routing simple. This is the same thing we've been doing to carve up IPv4 space for years: number hosts right to left, number networks left to right. For IPv6, just s;hosts;/64s;. --lyndon