IPv6/IPv4协议转换的试验( 二 )


图1和图2大致上可以反映出这两种转换情况 。
【IPv6/IPv4协议转换的试验】
图1 IPv6站点的中继器
图1中中继器用于一个IPv6站点和IPv4网络内节点通信的情况 。IPv6 站点的内部路由必须配置,使得供IPv4节点使用的数据包,能够路由到中继器 。IPv6站内主机,使用能映射到纯粹IPv4 主机的IPv6地址,发送数据包到IPv4 网络中的节点 。这一设计中,和纯粹IPv4节点的通信时,IPv6节点使用一个IPv4兼容的IPv6地址(IPv4-compatible IPv6地址)作为自己的地址,而给IPv4分配一个映射IPv4的IPv6地址(IPv4-mapped IPv6) 。IPv4-兼容的 IPv6地址将IPv4地址作为低32位,并且能识别IPv6/IPv4兼容地址或者纯粹IPv6节点,但它无法识别纯粹的IPv4节点 。同样,映射IPv4的IPv6地址也只能识别纯粹的IPv4节点 。这种方法的结果是,中继器不需要保存额外的状态信息,不管IPv4和IPv6域地址映射所用的IPv6的前缀如何,只识别IPv6站点内含惟一IPv4 地址的主机 。因此,图1中主机B和主机A通信需要IPv4地址,以便能够通过IPv4网络路由 。为了克服这个限制,内含状态信息的中继器将几个IPv6主机映射到一个全球惟一的IPv4地址上,这需要使用TCP/UDP端口的转换技术 。


图2 IPv4站点的中继器
图2的中继器用于IPv4站点与IPv6网络内节点的通信 。IPv4站点内主机发送数据到IPv6网络内的节点,使用中继器指派的IPv4目标地址,映射到独立的 IPv6主机 。为了让带有一个目标IPv4地址的数据包能正常抵达目标,IPv4站点的内部路由必须包含到达中继器的路由信息 。中继器接到这些数据包后,进行IPv4-to-IPv6转换,并转发数据包到IPv6网络 。这一模式中,中继器能使用惟一的IPv6地址访问IPv4站点内的节点,从而为来自IPv6 网络的数据包进行IPv6-to-IPv4转换 。这些IPv6地址可能来自和IPv6 主机通信的IPv4 主机里面动态分配的地址池 。一个更好的方法是,分配惟一的、可路由的IPv6地址,以便访问IPv4站点内的所有节点,并且在DNS中注册 。这样可能很轻易使得IPv6 地址有足够多的空余,而且还有一个好处是,IPv6网络内主机能很轻易解析、并通过中继器和IPv4站点内的节点建立会话 。
总之,这两种模式之间的微妙区别在于,前者映射一个全局IPv4地址池访问IPv6地址,而后者使用私有IPv4地址访问IPv6地址 。全局IPv4地址是稀缺的,这种机制要求为IPv6节点动态分配IPv4地址池,以便IPv6节点能够和IPv4节点通信 。
为了能在IPv4和IPv6节点之间通信,中继器需要同时进行地址和协议转换 。协议转换将大多数域从一个IP协议版本转换到另外一个版本 。地址转换需要跨越协议边界,将数据包中的地址进行转换 。(更为具体的地址转换探讨,读者可参照第D6版的链接 。)
协议转换
协议转换就是利用一些非凡的规则处理数据分段和路径MTU发现问题(path MTU discovery),从而完成两种IP协议间的简单映射 。基本的操作是移除原始的IP数据包头,并用另一个IP协议的新数据包头替代 。
首先需要讨论的是IP 转换 。IPv6和IPv4数据包头有一些类似,但是大多数域要么意义不一,要么长度各异,也有的被移除了 。中继器需要在IP 数据包头中,进行直接复制、转换、忽略、或者用缺省值来设置新的域,以便从一个IP协议版本转换成另外一个 。
许多域需要简单的调整 。做IPv6-to-IPv4转换的时候,IPv4的域需要通过计算得到,而在IPv4-to-IPv6的转换时候,则需要进行忽略处理 。和IPv4对比,IPv6数据包头没有明确的域支持数据分段处理,而使用一个独立的数据包头作为数据段,保存信息 。
当中继器接受一个数据包时,IPv4和IPv6的域之间有直接的映射关系,可以直接进行转换 。需要当心的是,两种协议的识别域长度不一样 。

推荐阅读