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节点之间能相互访问。IPv6相关翻译技术_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这个参数。