IPv6 隧道

时间:2014-05-18 00:00

隧道
IPv6发展初期,必然有许多局部的纯IPv6网络,这些IPv6网络被IPv4骨干网络隔离开来,为了使这些孤立的“IPv6互通,就采取隧道技术的方式来解决。利用穿越现存IPv4因特网的隧道技术将许多个“IPv6孤岛连接起来,逐步扩大IPv6的实现范围,这就是目前国际IPv6试验床6Bone的计划。
工作机理:在IPv6网络与IPv4网络间的隧道入口处,路由器将IPv6的数据分组封装入IPv4中,IPv4分组的源地址和目的地址分别是隧道入口和出口的IPv4地址。在隧道的出口处再将IPv6分组取出转发给目的节点。
优点:隧道技术只要求在隧道的入口和出口处进行修改,对其它部分没有要求,因而非常容易实现。
缺点:IPv4网络只不过是IPv6网络间的构造隧道的外部环境,并不能实现IPv4节点与IPv6节点间的直接通信,只能实现IPv6IPv6间的互通。
隧道技术在实践中有四种具体形式:构造隧道、自动配置隧道、组播隧道以及6to4
 
TBTunnel Broker,隧道代理)
对于独立的IPv6用户,要通过现有的IPv4网络连接IPv6网络上,必须使用隧道技术。但是手工配置隧道的扩展性很差,TB的主要目的就是简化隧道的配置,提供自动的配置手段。对于已经建立起IPv6ISP来说,使用TB技术为网络用户的扩展提供了一个方便的手段。从这个意义上说,TB可以看作是一个虚拟的IPv6 ISP,它为已经连接到IPv4网络上的用户提供连接到IPv6网络的手段,而连接到IPv4网络上的用户就是TB的客户。                                        
•
隧道代理:负责根据用户(双栈结点)的要求建立、更改和拆除隧道。为了均衡负载,TB可以在多个隧道服务器中选择一个作为TEPTB还负责将用户的IPv6地址和名字信息存放到DNS里;
•
隧道服务器:是一个双栈服务器,是连接到IPv6网络上的隧道末端。它从隧道代理处接收命令,对隧道进行必要的操作。
下面简单介绍TB方式的工作原理。
1步,双栈结点向TB提供身份和认证信息,因此TB也可以实现接入控制功能;
2步,双栈结点通过认证之后,向TB提供自己的IPv4地址(即隧道端口的IPv4地址)、名字(用于在DNS里建立IPv6地址与名字之间的对应关系)、类型(主机或路由器),如果双栈结点是一个路由器,还要告诉TB它需要多少IPv6地址,这样TB才有可能分配一个合适的地址前缀;
3步,TB在收到双栈结点提供的这些信息后,根据一些规则(如负载均衡)选定一个隧道服务器作为隧道的末端;同时为双栈结点分配一个IPv6地址前缀,地址前缀的长度一般为48(对site)、64(对子网)或128(对主机);给隧道分配一个生存时间,将分配的IPv6地址前缀在DNS中进行注册;对隧道服务器进行配置,并且把相关的配置信息(包括DNS名字和隧道参数等)通知双栈主机。
这样就在IPv4的网络上建立起隧道,主机可以通过隧道服务器接入IPv6网络。
 
协议转换技术
其主要思想是在IPv6节点与IPv4节点的通信时需借助于中间的协议转换服务器,此协议转换服务器的主要功能是把网络层协议头进行IPv6/IPv4间的转换,以适应对端的协议类型。
优点:能有效解决IPv4节点与IPv6节点互通的问题。
缺点:不能支持所有的应用。这些应用层程序包括:
应用层协议中如果包含有IP地址、端口等信息的应用程序,如果不将高层报文中的IP地址进行变换,则这些应用程序就无法工作,如FTPSTMP等。含有在应用层进行认证、加密的应用程序无法在此协议转换中工作。
 
协议转换技术: IPv6IPv4的头标转换
B访问A,发出的分组中源地址是B的翻译地址,目的地址是A的映射地址,当IPv6的分组到达SIIT协议转换器时,SIIT判断出目的地是IPv4的映射地址,就要对该分组进行v6v4的协议分组头转换,再把转换后的v4分组传给主机A
 
协议转换技术: SIIT的局限
SIIT技术需要有一个备用的全局IPv4地址池来给与IPv4节点通信的IPv6节点分配IPv4地址,这个备用的全局IPv4地址池不能很大,因为IPv4地址空间优先。这样,当SIIT中备用的IPv4地址池分配完时,如果有新的IPv6节点需要同IPv4节点通信,就会因为没有剩余的IPv4地址空间而导致SIIT无法进行协议转换,造成通信失败。显然此技术应用的网络规模不能很大。
同时,SIIT还具有协议转换技术所共有的缺点。
 
协议转换技术:NAT-PT
NAT-PTNetwork Address Traslation-Protocol Translation的缩写,它是通过SIIT协议转换技术和IPv4网络中动态地址翻译技术(NAT)相结合的一种技术。它利用了SIIT技术的工作机制,同时又利用传统的IPv4下的NAT技术来动态地给访问IPv4节点的IPv6节点分配IPv4地址,很好地解决了SIIT技术中备用全局IPv4地址池规模有限的问题。NAT-PT 处于IPv6IPv4网络的交界处,可以实现IPv6主机与IPv4主机之间的互通。协议转换的目的是实现IPv4IPv6协议头之间的转换;地址转换则是为了让IPv6IPv4网络中的主机能够识别对方,也就是说,IPv4网络中的主机用一个IPv4地址标识IPv6网络中的一个主机,反过来,IPv6网络中的主机用一个IPv6地址标识IPv4网络中的一个主机。当一台IPv4主机要与IPv6对端通信时,NAT-PTIPv4地址池中分配一个IPv4池地址标识IPv6对端。在IPv4IPv6主机通信的全过程中,由NAT-PT负责处理IPv4池地址与IPv6主机之间的映射关系。在NAT-PT中可以选择使用ALGApplication Level Gateway,应用层网关),因为NAT-PT只能对IP头中的地址进行转换,而有些应用在净荷中包含有IP地址,此时只能通过ALG对分组净荷中的IP地址进行格式转换。
主机B要与A通信,首先要向v6网络中的DNS发出请求对A 进行名字解析,这个请求在途径NAT-PT时,NAT-PT上的DNS-ALG对其内容进行修改,把“A”类型请求转换成“AAAA”“A6”类,转发给IPv6网络内的DNSDNS返回的应答中包含的是Av6地址,这个应答在途径NAT-PT时,又被DNS-ALG修改,把“AAAA”“A6”类转成“A”类,同时从IPv4地址池中分配一个地址,替换应答中的IPv6地址,并记录地址池地址与IPv6地址之间的映射信息。主机B在收到DNS应答之后,就可以以正常的方式进行通信。数据分组在经过NAT-PT时,NAT-PT对分组头信息进行修改,由于在NAT-PT中已经记录了v4地址池地址与IPv6地址之间的映射信息,因此可以按照原有记录的信息对地址进行转换。
对于主机B如何在IPv6网络中进行标识的问题,采用的方法是,NAT-PTIPv6网络中广播一个96位的地址前缀,用96位地址前缀加上32位主机IPv4地址作为对v4网络中主机的标识。从IPv6网络中的主机发给IPv4网络中的分组,其目的地址前缀与NAT-PT发布的地址前缀相同,这些分组都被路由到NAT-PT处,由NAT-PT对分组头进行修改,替换源和信宿地址,向主机B转发。
优点:解决了SIIT技术中备用全局IPV4地址池分配地址不足的问题。
缺点:带来了传统IPv4采用NAT技术所具有的缺陷:那就是只能由IPv6节点访问IPv4节点,反之,则不能;同时具有协议转换技术所共有的缺陷。
 
SOCKS64
SOCKS网关机制的关键是名字解析的实现。由于通信双方的地址格式不同,因此在名字解析的过程中必须进行一些处理。SOCKS网关机制中使用了DNS名字解析代理的方法。仍以图中的情况为例,具体操作过程如下:
•C
上的应用程序要获得DIP地址(IPvX),调用名字解析函数,其中包含D的名字信息;
•
但是真正的DNS解析并不在这个时候完成,只是把名字信息记录在SOCKS库的映射表里,之后选择一个”IPvX地址返回给应用层,这个伪地址信息也记录在映射表里;
•
应用层用收到的伪地址信息作为对端地址调用API开始通信;
•SOCKS
库检查地址信息,看它是否属于伪地址,若属于,则从映射表里查找出对应的名字信息;
•
名字信息通过SOCKS API发送给SOCKS网关;
•
网关调用API进行真正的DNS解析,得到对端的IPvY地址;
•
网关使用得到的IP地址,调用API与对端通信。
通过上面的描述可以发现,应用层无须改动,由SOCKET库将应用层发出的socket调用改为由SOCKS客户主机向SOCKS服务器发出的socket调用。 SOCKS64机制的一个限制是连接必须由内部发起,因此是单向的。
SOCKS64
网关是一个双栈主机,它可以同时和IPV4IPV6节点进行通信,SOCKS64的客户只与SOCKS64网关直接通信,与IPV4IPV6节点的通信实际上由SOCKS64网关来完成。
优点:这种机制不需要修改DNS或者地址映射,可满足IPV4IPV6节点的互操作。
缺点:由于所有互操作都靠SOCKS64双栈代理服务器来转发完成,SOCKS64代理服务器相当于高层软件网关,实现的代价很大,并需要在客户端支持SOCKS代理的软件,对于用户来讲不是透明的,只能作为临时性的过渡技术。
 
传输层中继(Transport Relay
SOCKS64的工作机理相似,只不过是在传输层中继器进行传输层的协议翻译,而SOCKS64是在网络层进行协议翻译。它相对于SOCKS64,可以避免“IP分组分片“ICMP报文转换带来的问题,因为每个连接都是真正的IPV4IPV6连接。但同样无法解决网络应用程序数据中含有网络地址信息所带来的地址无法转换的问题。
 
应用层代理网关(ALG
ALGApplication Level Gateway的简称,与SOCKS64、传输层中继等技术一样,都是在v4v6间提供一个双栈网关,提供协议翻译的功能,只不过ALG是在应用层级进行协议翻译。这样可以有效解决应用程序中带有网络地址的问题,但ALG必须针对每个业务编写单独的ALG代理,同时还需要客户端应用也在不同程序上支持ALG代理,灵活性很差。显然,此技术必须与其它过渡技术综合使用,才有推广意义。