IPv6 相关翻译技术
1、NAT64
NAT64 是有状态的网络层协议翻译技术。为实现 IPv4 网络和 IPv6 网络的互通,需要将 IPv4 和端口号与 IPv6 地址和端口号建立地址映射表。IVI 和 NAT64 的提出实际上是用于替代 NAT-PT,但由于 IVI 的翻译是一对一的,一个 IPv4 地址可转换为一个 IPv6 地址,需要耗费较多 IPv4 地址,而 NAT64 却拥有一个地址池,能够使多个 IPv6 地址对应于一个 IPv4 地址。NAT64 只允许 IPv6 网络内节点主动访问 IPv4 网络资源,并且与 DNS64 相结合通信,分离 DNS-ALG 的功能与网关的功能,从而避免 NAT-PT 与 DNS-ALG 相关的缺陷。NAT64 可实现协议类型分别为 TCP、UDP、ICMP 的 IPv6 与 IPv4 网络地址转换和协议转换。
NAT64 支持 NAT64 的双栈路由器部署在 IPv4 网络和 IPv6 网络的边界上。一个接口上运行的是 IPv6,另外一个接口上运行的是 IPv4。NAT64 模块将 IPv6 数据报文翻译成 IPv4 数据报文,当流量返回时,模块又根据地址映射表将 IPv4 数据报文翻译成 IPv6 数据报文,使得 IPv4 和 IPv6 节点之间能相互访问。
NAT64 网关中要维护一个 IPv4 的地址池和配置一个 NAT64 前缀,在后续通信过程中,可加入端口复用,形成(IPv6 地址:端口)与(IPv4 地址:端口)的映射关系。这样,多种应用就可以复用到相同 IP 上,大大节约 IPv4 地址池中地址的使用,并且,任何 IPv6 主机都能够通过该网关访问 IPv4 网络。IPv4 地址池给 IPv6 域内主机的 IPv6 地址分配相应的 IPv4 地址,需要存在一个 IPv4 地址池。另外,由于 IPv6 分组的头部发生了较大变化,原来 IPv4 头部中的一些字段被丢弃了,同时也保留了一些。IPv6 还新增了一些字段,因此要进行协议转换。
2、464XLAT
464XLAT 是一种允许客户端访问纯 IPv4 网络环境中的主机或者服务器 IPv6 的网络服务。客户使用一个无状态转换的翻译器,将 IPv4 数据包转换为 IPv6 数据包,并且发送出去。发送的数据包的接收端是 NAT64 服务器。该服务器将接收到的 IPv6 数据包转换为 IPv4 数据包,并发送给 IPv4 服务器。无状态转换翻译器可以在客户端实现,或在中间环节的 IPv4 局域内实现。同时,NAT64 服务器端需要具备连接到目标服务器和 CLAT 客户端的能力。因为 NAT64 的使用,限定了 PLAT 和 CLAT 的模型是客户服务器的模型。支持使用 UDP、TCP、ICMP 协议。图 4-6 给出了流量处理方案。
首先,一个 64 位的前缀用来作为上行、下行的接口,以及一个专门的前缀用来接收和发送无状态转换的数据包,当专用前缀不可用,CLAT 可以执行 NAT44 转换局域网内所有的数据包。此时的 IPv4 数据包是来自单一 IPv4 地址的。然后,CLAT 无状态地转换至 IPv6 源地址,此 IPv6 地址是经过 CLAT 通过 NDP 和重复地址检测来确定的一个 IPv6 接口。
最后,CLAT 必须知晓 PLAT 侧的,用作 PLAT 的目的地的转换前缀。CLAT 将此前缀作为所有需要有状态转换的数据包的目的地。它可以使用探索启发式来发现 PLAT 端的翻译前缀。在未来,可能会有一些其他机制,如一个新的 DHCPv6 选项,被定义为连接 PLAT 侧的翻译前缀。
3、6RD
6RD 技术是基于 6to4 技术改进而来的,它使得 ISP 可以向原有 IPv4 站点提供 IPv6 单播接入服务。6RD 技术是一种无状态的隧道,它将 IPv6 数据分组直接封装在 IPv4 数据分组中,并将封装后的 IPv6 in IPv4 数据包经过 IPv4 网络传输至 IPv4 网络边界。与 6to4 技术不同的是,6to4 使用的是 2002::/16 这样的 IPv6 前缀,而 6RD 技术中 ISP 可以为用户提供自己拥有的 IPv6 地址前缀。这样的区别使得 6RD 的使用域限定在 ISP 的内部,这样便于 ISP 直接管理。
6RD 技术中 IPv6 协议将 IPv4 协议视为透明的数据链路层协议和支持自动隧道的抽象模型。6RD 域是指 6RD 技术的作用域,包含 BR(Border Relay)设备、CE(Customer Edge)设备、用户设备以及信道数据包传输过程中经过的路由器等网络设备。IPv6 数据分组依据 6RD 技术标准中所规定的方式被封装在 IPv4 数据分组中,封装后数据分组的转发局限于 ISP 内部 CE 与 BR 间的 IPv4 交换和路由设备,不会被路由至其他的 ISP 网络当中。经过 6RD 域内 BR 设备的数据包只有两种情况,其一是目标主机在 ISP 的 6RD 域外,其二是由 ISP 的 6RD 域外发送回来的数据包。尽管 6RD 技术设计时主要针对的是 ISP 的家庭网络用户,但是独立的 IPv6 主机也可以使用该技术。
6RD 技术依赖现有的 IPv4 网络,设计之初的目的就是保证尽可能小地修改现有网络与操作。客户端使用的 6RD 授权 IPv6 地址前缀是由两部分拼接构成的:6RD 域 IPv6 地址前缀和全部或者部分 CE 的 IPv4 地址。6RD 授权 IPv6 地址中包含的这两个部分的长度均是可以变化的,但是两者相加的长度不能超过 64,即 6RD 授权 IPv6 地址前缀最大长度为 64。由上可知,CE 获得 IPv4 地址后为客户端生成 6RD 授权 IPv6 地址前缀,CE 将 6RD 域内的 IPv6 地址前缀与 CE 获得的 IPv4 地址全部或者部分拼接在一起,形成授权 IPv6 地址前缀。
由于 6RD 的授权前缀是由 CE 的 IPv4 地址通过一定算法运算得出,那么当 IPv4 地址发生变化时也会导致 6RD 的授权前缀变化,因此在实际应用在为 CE 分配 IPv4 地址时应当给予该地址足够长的有效时间。
当 IPv6 数据包要离开 CE 一侧的 LAN 而进入 WAN 中时,IPv6 数据分组被 CE 封装在 IPv4 数据分组当中,封装时 IPv4 包头各域的值被设定为:Version 版本号为 4;IP 包头长度(IP Header Length in 32-bit words)被设置为 5,因为在封装它的包头中不包含任何其他选项;总长度(Total Length)为 IPv6 包头中的载荷长度加上 IPv6 包头的长度,再加上封装时添加的 IPv4 包头的长度;服务类型(Type of Service)的值应该将 IPv6 包头中的流标签的值复制到 IPv4 包头中。
6RD 的作用域被限定在一个 ISP 网络中,因此可以使用 IPv4 路径 MTU 发现动态调整个隧道的 MTU,也可以使用固定配置的 MTU 值作为隧道的 MTU。
当 6RD 域的 BR 与 CE 收到 6RD 封装的数据包时,两者均需要对数据包的合法性做检测。检测时要比对被封装的 IPv6 数据包的 IPv6 源地址中内嵌的 IPv4 地址与包头的 IPv4 源地址是否匹配,如果匹配则说明是正确的包,如果不匹配则说明这个包是伪造的数据包。因为 IPv6 地址中可能只内嵌部分 IPv4 地址,所以在比对时需要考虑 IP4MaskLen 这个参数。
版权声明: 本文为 InfoQ 作者【穿过生命散发芬芳】的原创文章。
原文链接:【http://xie.infoq.cn/article/d510ae5580f01b6e64c6aa575】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论