又一个 IPv5 提案

3 分•作者: bigcityslider•3 个月前
引入三十多年后,IPv6 仍未取代 IPv4。我之前见过那些“给 IPv4 加几位,就叫 IPv5”的提议。它们往往忽略了重要的细节,与他人沟通不畅,但它们也有道理。经过一段时间的细节完善,我认为这实际上是可行的,会带来显著的改变,并且可以使用现有的 IPv6 头部来实现。 背景... 假设路由器、主机等已经充分支持 IPv6 数据包格式。这不再是障碍,而是许多 ISP、Github 等网络服务以及企业网络选择不采用 IPv6。家用路由器只是启用了它,但对于服务来说,这并非易事,因为它在各个方面都与 v4 是一个独立的网络,需要进行大量的配置更改。最终结果是,几乎所有人都需要 v4,而许多人使用 v6 但不依赖它。 IPv6 绝对需要一种新的数据包格式来支持大于 32 位的地址。但它还做了其他选择,其中最大的是从一个全新的拓扑开始,而不是扩展现有 IPv4 地址块下的空间。我理解这是为了摆脱 v4 的碎片化路由并创建更公平的所有权。 其他选择更多是关于默认设置,例如 SLAAC 而非 DHCP,或者缺乏 NAT。IPv6 的支持者经常将这些选项呈现为两全其美,但实际上默认设置更重要,例如 Android 甚至不支持 DHCP6。大多数路由器默认拒绝入站的 v6 TCP/UDP 连接,但并非所有路由器都如此,这可能是因为 RFC 6092、REC-49。 IPv6 有几个扩展来缓解从 v4 的过渡,我在此不一一列举。共同点是,在这些扩展下,你实际上仍在真正使用 IPv4。这些东西有帮助,但从 v4 到双栈,再从双栈到仅 v6,总会有一个飞跃。 提议,第一阶段... IPv5 是一个在 IPv4 接口上切换的布尔设置。它与 v4 共享一切,除了数据包格式,该格式实际上是一个带有 5000: 前缀的 v6 数据包。所以如果你拥有 1.2.3.4,现在你拥有 5000:1.2.3.4。因此,IPv5 拥有 120 位的地址空间。但在初始阶段,为了与 v4 保持兼容,你仍然受限于 32 位。其目的是让每个人都使用 IPv5,而无需重新配置任何东西。 这还需要升级 DHCP、NAT 和 DNS 来支持 120 位地址,但与 v6 不同的是,这些新版本仍然可以与 v4 客户端通信。v5 主机仍然可以从 1.1.1.1 DNS 读取 A 记录。如果一个仅 v4 的主机被分配了 192.168.1.2,同一网络上的 v5 主机由于共享状态会将其视为 5000:192.168.1.2。 如上所述,v5 和 v4 数据包遵循相同的路由,网站也赋予它们相同的声誉,从而避免了 IPv6 最常见的终端用户问题。 这里唯一的问题是,如果一个 v5 主机与一个仅 v4 的主机通信会怎样?当路由器知道下一个路由器/主机是仅 v4 时,它们可以进行 v5 到 v4 的转换。或者终端可以采取类似 Happy Eyeballs 的措施。实际上,v5 的工作方式与 v6 使用 DNS 来简化切换的方式类似,只是它发生在第 3 层。 提议,第二阶段... 只有当主机准备好禁用 IPv4 时,你才会进入此阶段,无论是由于世界已经充分采用 v5,还是因为它只需要与已知的 v5 主机通信。你将接口置于仅 v5 模式。现在你的 5000:1.2.3.4 可以被拆分为 5000:1.2.3.4.1 等等。任何使用 v5+v4 但未收到通知的人仍然兼容。 DHCP 和 NAT 仍然是默认设置,但 ISP 的每个客户都有足够的地址来禁用 NAT 和/或按需使用 SLAAC。 回到 IPv6... IPv5 并非旨在取代 IPv6。V5 主机可以与 v6 主机通信。如果一个 v5 接口收到 RA 数据包,它可以直接切换到 v6。转向 v6 可能是清理 v4 遗留路由的最简单方法。
查看原文
Over 30 years after its introduction, IPv6 has still not replaced IPv4. I&#x27;ve seen those &quot;just add more bits to ipv4, call it ipv5&quot; proposals before. They tend to skip the important details and talk past others, but they have a point. After filling in the details over time, I think this actually works, it&#x27;d make a serious difference, and it&#x27;s doable with the current IPv6 header.<p>Background...<p>Let&#x27;s assume the IPv6 packet format is already sufficiently supported on routers, hosts, etc. That&#x27;s not the blocker anymore, rather plenty of ISPs, web services like Github, and corporate networks have chosen not to adopt IPv6. Home routers just enable it, but it&#x27;s nontrivial for services because it&#x27;s a separate network from v4 in every way, requiring extensive config changes. End result, almost everyone needs a v4, while many use v6 but don&#x27;t depend on it.<p>IPv6 absolutely needed a new packet format to support &gt;32-bit addrs. But it made more choices beyond that, largest of which was starting with a fresh topology instead of expanding the space under the existing IPv4 address blocks. I understand this was to ditch v4&#x27;s fragmented routes and create fairer ownership.<p>The other choices were more about defaults, like SLAAC over DHCP, or lack of NAT. IPv6 proponents often present the options as the best of both worlds, but in reality the default is more important, for example Android doesn&#x27;t even support DHCP6. And most routers deny inbound v6 TCP&#x2F;UDP connections by default, but not all, maybe because of RFC 6092, REC-49.<p>IPv6 had several extensions to ease the transition from v4 that I won&#x27;t list here. The common theme was you&#x27;re still really using IPv4 on those. These things helped, but there&#x27;s always a leap from v4 to dual stack and an even bigger leap from dual to v6-only.<p>Proposal, phase 1...<p>IPv5 is a boolean setting toggled on an IPv4 interface. It shares everything with v4 except the packet format, which is actually a v6 packet with a 5000: prefix. So if you owned 1.2.3.4, now you have 5000:1.2.3.4. IPv5 therefore has 120 bits of address space. But in this initial phase, you&#x27;re still limited to 32-bit in order to maintain compatibility with v4. The point is to just get everyone onto IPv5 without making them reconfigure anything.<p>This also requires upgrades to DHCP, NAT, and DNS to support 120-bit addresses, but unlike v6, the new versions of those still talk to v4 clients. A v5 host can still read A records off 1.1.1.1 DNS. If a v4-only host gets 192.168.1.2 assigned, a v5 host on the same network sees that as 5000:192.168.1.2 due to the common state.<p>As consequences of the above, v5 and v4 packets follow the same routes, and websites assign the same reputations to both, avoiding the most common end user problems with IPv6.<p>The only snag here is, what happens if a v5 host talks to a v4-only one? Routers could translate v5 to v4 when they know the next hop router&#x2F;host is v4-only. Or the ends could do something like Happy Eyeballs. In fact v5 is parallel to how v6 uses DNS to ease the cutover, except it&#x27;s at layer 3 instead.<p>Proposal, phase 2...<p>You only reach this phase when a host is ready to disable IPv4, either because the world has sufficiently adopted v5 or because it only needs to talk to known v5 hosts. You put the iface into v5-only mode. Now your 5000:1.2.3.4 can be split into 5000:1.2.3.4.1 and so on. Anyone on v5+v4 who doesn&#x27;t get the memo is still compatible too.<p>DHCP and NAT are still default, but each customer of an ISP easily has enough addresses to disable NAT and&#x2F;or use SLAAC if desired.<p>Back to IPv6...<p>IPv5 isn&#x27;t meant to replace IPv6. V5 hosts can talk with v6 hosts. And if a v5 iface receives an RA packet, it can just switch to v6. Shifting to v6 is probably the easiest way to clean up the routes left over from v4.