IPv6隧道通信技术
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
穿越隧道——IPv6隧道通信
IPv6隧道通信技术
作者:/明廷堂来源:《网管员世界》月刊(2006-03-16)
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)。