为什么 464XLAT 架构中的 CLAT 使用 Stateless NAT64 而不是 Stateful?

网络工程 纳特 IPv6 联网
2022-02-04 17:04:13

据我了解,无状态 NAT 使用 1:1 转换,这意味着它需要一个 IPv4 地址对应一个 IPv6 地址,反之亦然,因此不保留 IPv4。由于 CLAT 应该是本地网络的路由器/网关,这意味着CLAT的本地端是私有 IPv4 地址(RFC1918),但据我了解,包含私有 IPv4 地址的 IPv4 嵌入 IPv6 应该由接收方或中间方(NAT64 转换器)。

为什么 CLAT 使用无状态 NAT64?

1个回答

据我了解,包含私有 IPv4 地址的 IPv4 嵌入 IPv6 应该由接收方或中间方(NAT64 转换器)丢弃

这仅适用于使用众所周知的前缀 ( 64:ff9b::/96):

3.1。使用知名前缀的限制

众所周知的前缀不得用于表示非全局 IPv4 地址,例如在 [ RFC1918 ] 中定义或在[RFC5735] 第 3 节中列出的地址。地址转换器不得转换地址由众所周知的前缀和非全局 IPv4 地址组成的数据包;他们必须丢弃这些数据包。

众所周知的前缀并不是唯一可以使用的前缀(参见我在下图段落中的亮点):

2.2. IPv4 嵌入式 IPv6 地址格式

IPv4 转换的 IPv6 地址和 IPv4 可翻译的 IPv6 地址遵循相同的格式,此处描述为 IPv4 嵌入的 IPv6 地址格式。IPv4 嵌入式 IPv6 地址由可变长度前缀、嵌入式 IPv4 地址和可变长度后缀组成,如下图所示,其中 PL 指定前缀长度:

+--+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
|PL| 0-------------32--40--48--56--64--72--80--88--96--104---------|
+--+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
|32|     prefix    |v4(32)         | u | suffix                    |
+--+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
|40|     prefix        |v4(24)     | u |(8)| suffix                |
+--+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
|48|     prefix            |v4(16) | u | (16)  | suffix            |
+--+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
|56|     prefix                |(8)| u |  v4(24)   | suffix        |
+--+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
|64|     prefix                    | u |   v4(32)      | suffix    |
+--+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
|96|     prefix                                    |    v4(32)     |
+--+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+

                             Figure 1

在这些地址中,前缀应该是部署地址转换器的组织所独有的“众所周知的前缀” 或“网络特定的前缀”。前缀只能具有以下长度之一:32、40、48、56、64 或 96。(众所周知的前缀长度为 96 位,只能用于表的最后一种形式。)