IPv6隧道通信技术

IPv6隧道通信技术
 
 
隧道机制
    隧道技术是一种通过互联网络基础设施在网络之间传递数据的方式。使用隧道传递的数据可以是不同协议的数据帧或包,隧道协议将这些其它协议的数据帧或包重新封装在新的包头中发送,被封装的数据包在隧道的两个端点之间通过公共互联网络进行路由,一旦到达网络终点,数据将被解包并转发到最终目的地。整个传递过程中,被封装的数据包在公共互联网络上传递时所经过的逻辑路径称为隧道。

简言之,隧道技术是指包括数据封装,传输和解包在内的全过程。
 
IPv6是新一代Internet通信协议,具有许多的功能特色:全新的表头格式、较大的地址空间、有效及阶层化的地址与路由架构、内建的安全性、与邻近节点相互作用的新型通信协议Neighbor Discovery Protocol for IPv6、可扩展性等。作为网络管理者,有必要加强对IPv6的了解,为以后IPv4的全面升级做好准备。
I  Pv6隧道是将IPv6报文封装在IPv4报文中,让IPv6数据包穿过IPv4网络进行通信。对于采用隧道技术的设备来说,在隧道的入口处,将IPv6的数据报封装进IPv4,IPv4报文的源地址和目的地址分别是隧道入口和隧道出口的IPv4地址;在隧道的出口处,再将IPv6报文取出转发到目的节点。隧道技术只要求在隧道的入口和出口处进行修改,对其他部分没有要求,容易实现。但是,隧道技术不能实现IPv4主机与IPv6主机的直接通信。
  
IPv6-over-IPv4 GRE隧道技术
  使用标准的GRE隧道技术,可在IPv4的GRE隧道上承载IPv6数据报文。GRE隧道是两点之间的连路,每条连路都是一条单独的隧道。GRE隧道把IPv6作为乘客协议,将GRE作为承载协议。所配置的IPv6地址是在Tunnel接口上配置的,而所配置的IPv4地址是Tunnel的源地址和目的地址(隧道的起点和终点)。
  GRE隧道主要用于两个边缘路由器或终端系统与边缘路由器之间定期安全通信的稳定连接。边缘路由器与终端系统必须实现双协议栈。

  如图1所示,两个IPv6子网分别为Group1和Group2,它们之间要求通过路由器R1和R2之间的IPv6隧道协议互联。其中R1和R2的隧道接口为手动配置的全局IPv6地址,隧道的源地址与目的地址也需要手动配置。设R1的E0接口IPv4地址为192.168.100.1,R2的E0接口IPv4地址为192.168.200.1。
  在上面的转发过程中,R1路由器首先根据路由表得知目的地址3003::1通过隧道转发出去,所以就将报文送到隧道接口按照特定的GRE格式(如图2)进行封装。

  原有的IPv6报文封装为GRE报文,最后封装为IPv4报文。IPv4报文的源地址为隧道的起始点192.168.100.1,目的地址为隧道的终点192.168.200.1。这个报文被路由器R1从隧道入口发出后,在IPv4的网络中被路由到目的地R2。R2收到报文后,对此IPv4报文解封,取出IPv6报文。因为R2也是一个双协议栈设备,故它在根据IPv6报文中的目的地址信息进行路由,并送到目的地。R2返回R1的报文逆向进行这一操作。
  
IPv6-over-IPv4手动隧道
  手动隧道也是通过IPv4骨干网连接的两个IPv6域的永久链路,用于两个边缘路由器或者终端系统与边缘路由器之间安全通信的稳定连接。手动隧道的转发机制与GRE隧道一样,但它与GRE隧道的封装格式不同,手动隧道直接将IPv6报文封装到IPv4报文中,IPv6报文作为IPv4报文的净载荷(如图3)。


IPv4兼容IPv6自动隧道
  自动隧道能够完成点到多点的连接,而手动隧道仅仅是点到点的连接。IPv4兼容IPv6自动隧道技术能够使隧道自动生成。在IPv4兼容IPv6自动隧道中,只需要告诉设备隧道的起点,隧道的终点由设备自动生成。为了完成隧道终点的自动产生,IPv4兼容IPv6自动隧道需要使用一种特殊的地址,即IPv4兼容IPv6地址,其格式如图4。

  在IPv4兼容IPv6地址中,前缀是0:0:0:0:0:0,最后的32位是IPv4地址。IPv4兼容IPv6自动隧道将使用这32位IPv4地址来自动构造隧道的目的地址。IPv4兼容IPv6的自动隧道两端的主机或路由器必须同时支持IPv4和IPv6协议栈。使用IPv4兼容IPv6的自动隧道可以方便地在IPv4上建立IPv6隧道,但是,它限于在隧道的两端点进行通信,隧道两端点后的网络不能通过隧道通信。

  如图5所示,路由器R1和R2通过IPv4兼容IPv6自动隧道协议相连。其中R1和R2的隧道接口E0为手动配置的全局IPv6地址。隧道的源地址需要手动配置,而目的地址由路由器自动配置。
R1与R2通信时,IPv6报文的源地址是隧道自己的接口地址::1.1.1.1,目的地址是对方隧道的接口地址(即R2的隧道接口地址)::2.2.2.2。在R1发起通信时,首先根据路由表得知目的地址::2.2.2.2需要通过隧道转发,就将报文送到隧道接口进行封装。封装时,原有的IPv6报文封装为IPv4报文,IPv4报文的源地址为隧道的起点1.1.1.1,而目的地址直接从IPv4兼容的IPv6地址::2.2.2.2的后32位提取过来,即2.2.2.2(如图6)。

  这个报文经过IPv4网络到达目的地R2(地址为2.2.2.2)时,R2对此IPv4报文解封,取出IPv6报文。送给IPv6协议栈处理。R2返回R1的报文逆向进行这一操作(如图7)。

  从上面的分析知,IPv4兼容IPv6自动隧道是随报文动态建立的隧道。无论要和多少个对端建立隧道,本端只需要一个接口,路由器维护简单。但是,它要求IPv6地址必须是特殊的IPv4兼容IPv6地址,有很大的局限性。同时,因为IPv6报文中的地址前缀只能是0:0:0:0:0:0,也就是所有的节点处于同一个IPv6网段中,所以它只能做到节点本身的通信,而不能通过隧道进行报文的转发。这种局限性在6to4隧道技术中得到很好的解决。

6to4隧道技术
  6to4隧道可以将多个IPv6域通过IPv4网络连接到IPv6网络。它和IPv4兼容IPv6自动隧道类似,使用一种特殊的地址——2002:a.b.c.d:xxxx:xxxx:xxxx:xxxx:xxxx格式的6to4地址。其中a.b.c.d是内嵌在IPv6地址中的IPv4地址,可以用来查找6to4网络中的其他终端。6to4地址有64位网络前缀,其中前48位由路由器上的IPv4地址决定,用户不能改变,后16位由用户自己定义。这样,这个边缘路由器后面就可以连接一组网络前缀不同的网络。
  假设路由器R1和R2通过6to4隧道相连。路由器R1的E0接口全局IPv4地址192.168.100.1/24转换成IPv6地址后使用前缀2002:c0a8:6401::/64,对此前缀使用子网划分,Tunnel0使用2002:c0a8:6401:1::/64子网(地址设为2002:c0a8:6401:1::1/64),R1连接主机PC1的E1接口使用2002:c0a8:6401:2::/64子网(地址设为2002:c0a8:6401:2::1/64),PC1也使用2002:c0a8:6401:2::/64子网(地址设为2002:c0a8:6401:2::2/64)。
  路由器R2的E0接口全局IPv4地址192.168.50.1/24转换成IPv6地址后使用前缀2002:c0a8:3201::/64,对此前缀使用子网划分,Tunnel0使用2002:c0a8:3201:1::/64子网(地址设为2002:c0a8:3201:1::1/64),R2连接主机PC2的E1接口使用2002:c0a8:3201:2::/64子网(地址设为2002:c0a8:3201:2::1/64),PC2也使用2002:c0a8:3201:2::/64子网(地址设为2002:c0a8:3201:2::2/64)。
  配置的静态路由将所有其他发往IPv6前缀2002::/16的流量定向到6to4隧道的Tunnel接口上(如图8)。


ISATAP隧道技术
  ISATAP(Intra-Site Automatic Tunnel Addressing Protocol)是一种自动隧道技术,同时也可以进行地址自动配置。在ISATAP隧道的两端设备之间可以运行ND协议。配置了ISATAP隧道以后,IPv6网络将底层的IPv4网络看成一个非广播的点到多点的链路(NBMA)。ISATAP隧道的地址也有特定的格式,它的接口ID必须为::0:5ffe:w.x.y.x的形式。其中,0:5ffe是IANA规定的格式,w.x.y.x是单播IPv4地址,它嵌入到IPv6地址的低32位。ISATAP地址的前64位是通过向ISATAP路由器发送请求得到的。
  与6to4地址类似,ISATAP地址中也有IPv4地址存在,它的隧道建立也是基于此内嵌的IPv4地址来进行。

  如图9所示,双栈主机PC1与路由器R1通过ISATAP隧道相连,将PC1配置成ISATAP主机(IPv4地址为10.0.0.2,IPv6地址由ISATAP路由器自动分配)。ISATAP路由器E0接口的IPv4地址为2.2.2.2,Tunnel0接口的IPv6地址为1::5ffe:202:202,E1接口的IPv6地址为2::1,IPv6主机PC2的IPv6地址为2::2。

6PE
  随着MPLS技术和标准的成熟,出现一种新的基于MPLS/VPN的IPv6隧道机制。随着骨干网越来越多地采用MPLS技术,必须考虑如何在MPLS上集成IPv6。该方法将整个MPLS网络看成IPv6隧道,并充分利用MPLS的特性。该方案具有MPLS网络的一切优点,支持约束路由流量工程,可以把IPv4和IPv6的数据流当作不同的流,从而在核心网络中减小IPv4/IPv6争抢资源的影响。同时由于在MPLS网络中转发是根据标记进行的,不需要数据层面支持IPv6的数据转发,即无需核心网络软硬件的升级,只需要边缘路由器具有配置IPv6的能力即可。当IPv6核心网络达到一定的规模,且当其数据量足够大时,就可以采用这种方案。
  在MPLS/VPN网络中,ISP骨干设备被称为P节点,ISP边缘路由器被称为PE,客户端设备被称为CE。在进行数据转发时,CE发出的数据由PE进行打标记操作,PE将打过标记的数据传送给P,P路由器根据标记进行转发,报文到达另一端时,对端的PE路由器弹出标记,取出其中的数据,转发给相邻的CE路由器。通过6PE技术,实现IPv6网络跨MPLS/VPN网络的互联。
  6PE隧道的特点是使用现成的MPLS/VPN技术,不需要升级ISP的核心网络,只要将PE路由器升级IPv4/IPv6双栈,并在连接核心网络的接口上运行MPLS即可。6PE技术减少了对现有的网络架构及业务的影响,比较适合于ISP及企业网络。

6over4
  随着IPv6的广泛应用,有些节点可能仅支持IPv6协议,这种节点一旦安装在IPv4网络中(没有直接相连的IPv6路由器),就需要考虑如何保证该节点能够与外界通信。该方案利用IPv4网络的组播特性建立与外部的虚拟通信链路来提供保证。IPv6节点需要与外部通信,它不需要手工配置隧道或与IPv4兼容的地址,而是直接将IPv6报文封装在IPv4报文中,通过IPv4网络的组播特性,将该报文传送到路由器发送到外部。
  6over4技术使用IPv4组播来模拟一个虚拟的物理链路,将IPv6的组播地址映射成IPv4组播地址,在此基础上实现ND协议。6over4主机的IPv6地址由64位的单播地址前缀和规定格式的64位接口标识符::wwxx:yyzz组成,其中wwxx:yyzz是其IPv4地址w.x.y.z的十六进制表示。6over4技术要求主机间的IPv4必须支持组播,以用来互联IPv4网络内隔离的IPv6主机。
  
隧道代理(Tunnel Broker)
  隧道代理(Tunnel Broker)是一种架构,而不是具体的协议(如图10)。

   隧道代理(Tunnel Broker)的主要目的是简化隧道的配置,提供自动的配置手段。对于已经建立起IPv6的ISP来说,使用隧道代理(Tunnel Broker)技术可以方便地扩展网络用户。从这个意义上说,Tunnel Broker可以看作一个虚拟的IPv6 ISP,通过Web方式为用户分配IPv6地址、建立隧道,并提供和其他IPv6节点之间的通信。隧道代理(Tunnel Broker)的特点是灵活、可操作性强,可以针对不同的用户提供不同的隧道配置。
  隧道代理(Tunnel Broker)的工作流程:客户端首先到Tunnel Broker上进行注册,Tunnel Broker为用户选择隧道服务器(Tunnel Server),为用户选择前缀等配置信息,并将隧道的配置信息通知用户。另外,Tunnel Broker会发送配置指令给Tunnel Server,Tunnel Server根据配置指令,进行隧道的建立和维护。

Teredo隧道
  Teredo隧道是一种IPv6-over-UDP隧道。为了解决传统的NAT不能够支持IPv6-over-IPv4数据包的穿越的问题,Teredo隧道技术采用将IPv6数据封装在UDP载荷中的方式穿越NAT,使得NAT域内的IPv6节点得到全球性的IPv6连接。
  在Teredo协议中,定义了4种不同的实体:Client、Server、Relay、Host-specific Relay。其中Client是指处于NAT域内并想要获得IPv6全局连接的主机。Server具有全局地址并且能够为Client分配Teredo地址,Relay负责转发Client和一般IPv6节点通信的数据包;Host-specific Relay是指不通过Relay就可以直接和Client进行通信的IPv6主机。这些角色同时都支持IPv4/IPv6协议,其地址结构如图11所示。

  当然,如果NAT进行升级后能够支持IPv6-over-IPv4,则没有必要使用Teredo。

附:

猜你喜欢

转载自superior.iteye.com/blog/766978