The world in which IPv6 was a good design (2017)
I have several times cited it as a key article, more insightful than almost anything else I've ever read about IPv6, but I concede it is overlong and unclear and needs more illustrations. (Which, as a technical writer myself, I generally regard as a crutch.)<p>I think the core argument can be summarised as this:<p>1. IPv6 is flawed because it has 2 main layers, but it needed 3.<p>2. It understands physical addresses, and it has its own logical addresses.<p>3. But it really needed another layer in between them: a virtual translation/mapping layer.<p>4. Crucially, it lacks this. As such it is not better <i>enough</i> than IPv4 to ever totally replace IPv4.<p>5. But apenwarr proposes that it is, in essence, possible to fake this using QUIC.<p><a href="https://en.wikipedia.org/wiki/QUIC" rel="nofollow noreferrer">https://en.wikipedia.org/wiki/QUIC</a> <- note the diagram in that article.<p>6. Using this, it's possible to fake what IPv6 <i>should</i> have had but didn't, and get <i>some</i> of the benefits at the cost of more work.<p>7. However IPv6 remains doomed to never totally replace IPv4.<p>Boiling that down to 2 key points:<p>Point A: IPv6 is broken because it didn't go far enough; its mapping model is fundamentally inadequate.<p>Point B: It's OK, here's how we can work around that, but it doesn't fix the problem & never will.<p>And generalising from that argument, my take is this:<p>Butler Lampson said: "All problems in computer science can be solved by another level of indirection."<p>David Wheeler pointed out: "… except for the problem of too many layers of indirection."<p>The corollary of this is: it is imperative to closely track how many layers of indirection you have.<p>Too many is bad, but arguably, not enough is worse.<p>With too many, you get inefficiency, but you can nonetheless get the job done. But with too few, you might not usefully be able to do the job at all.<p>IPv6 did not have enough, and so failed to achieve its primary goal.