Hi,
Sorry, replying to myself. An off-list discussion made me realise I made an
error.
IPv6 unicast routing is based on prefixes of any valid length up to 128
bits [BCP198]. However, in accordance with the reasoning explained in
[RFC7421], the Interface ID part of host interface addresses is generally
64 bits, with exceptions only provided in special cases expressly
recognized in IETF standards track documents.
Sounds good to me. It's clear on routing, it's clear on IIDs being 64 bits
long except in special standards-track cases without trying to enumerate them
and it provides an informational reference to explain why it should be 64
bits.
I have to clarify this a little bit. When reading it I was focusing on the "is
generally 64 bits" part. In hindsight the exceptions clause is too strict
though. See below for the rest.
For my personal part, I’d prefer to see a clear statement here using RFC
2119 requirements language keywords, but I recognize that consensus probably
requires compromise on that point. Hence, the proposed refinement above,
which does not use RFC 2119 keywords. (Here is how I would write this with
keywords: “IPv6 unicast routing is based on network prefixes that MAY have
any valid length up to 128 bits [BCP198]. However, in accordance with the
reasoning explained in [RFC7421], the Interface ID part of host interface
addresses SHOULD be 64 bits with exceptions only provided in special cases
expressly recognized in IETF standards track documents.”)
I'm a bit worried that the "MAY have any valid length up to 128 bits"
definition is too loose when read by router vendors, but otherwise that
version sounds good as well. I like to see explicit clear guidance in
standards documents.
I like the SHOULD. It allows for exceptions. Such special case are recognised
by the IETF and documents in standards track. Still good. There should be a
clear guidelines to network operators. I have seen too many beginners mess up
their addressing plans because they think they know better.
But on the other hand the text above limits exceptions to ONLY the IETF
standards track, and that is too strong. Operators who know what they are doing
must not be limited.
When writing my previous email I was focusing on giving guidance to operators,
and thinking about inexperienced operators. When I saw that exceptions were
taken into account I thought that that was good, but in hindsight the
exceptions as written are too limited.
So to summarise I think we need to state that in general the IID SHOULD be 64
bits, exceptions MAY be defined, preferably in IETF standards track documents,
equipment MUST allow operators to use any prefix length up to 128, and routing
MUST support those prefix lengths.
Sorry if my series of messages were confusing. I'm trying to strike a balance
between giving good guidance while allowing well-informed deviations, making
sure that the text doesn't unnecessarily limit network operators while also
protecting users so that ISPs don't start delegating them /96s "because it's
more than enough and the RFC allows it" etc. (if you think that last argument
is farfetched, sorry, I've seen too many ISPs start from there and only make a
more reasonable addressing plan because the "/64 is the standard", so we
shouldn't be too loose about that)
When reading the different arguments on this list I often find myself agreeing
to most of them, even the conflicting ones, because I understand where the
different viewpoints are coming from. And they are all important. It's
difficult enough to try to fit everything together in my head, and I hope that
this time I did a better job of writing it down in this email :)
Cheers,
Sander