刘清华
(浙江育英职业技术学院, 浙江 杭州 310018)
随着Internet规模的不断扩大,IPv4地址空间将逐渐消耗殆尽,而IPv6协议使得IP地址从原来的32 bit扩展到128 bit,且具有更小的路由表、更高的安全性、更强的组播支持和流控制等优势[1-2].但是现今的网络体系仍然以IPv4为主体,因此IPv4向IPv6的过渡必定是一个长期和渐进的过程.隧道技术提供了解决不同IP版本相互通信的方案,可分为双协议栈、协议转换技术和隧道封装3种类型[3-4].隧道封装通过网络边界设备在IPv6与IPv4网络间的隧道入口处将IPv6数据封装到IPv4中,其源地址和目的地址分别是隧道入口和出口的IPv4地址,在隧道的出口处再将IPv6数据包取出并转发至目的节点[5].
ISATAP(Intra-site automatic tunnel addressing protocol,站内自动隧道寻址协议),是一种支持NBMA(Non-broadcast multiple access,非广播多路访问)模式的IPv6过渡机制,用于连接IPv4网络上的IPv6/IPv4双栈节点.当2台主机彼此需要通信时,ISATAP将IPv4网络视作IPv6的虚拟链路层,允许站点内的主机进行自动配置,从而提供了站点内ISATAP主机和站点外IPv6主机数据包转发的功能[3].
网络两端的IPv6主机需要通信时,IPv4中的PC先与ISATAP路由器创建Tunnel接口,该接口会根据IPv4产生一个64 bit的接口标识符::0:5efe:x:x:x:x(此处的x:x:x:x为双栈主机中的IPv4地址,如图1所示的192.168.1.1).当主机配置ISATAP后会向ISATAP路由器发送RS(Router solicitation,路由器请求)消息请求IPv6前缀,该RS消息最终在IPv4网络中被路由到ISATAP路由器.ISATAP路由器获取RS消息后,立即以一个RA(Router advertisement,路由器通告)进行回应,RA消息中包含ISATAP上所配置的IPv6全局单播地址的前缀.当PC主机收到RA回应后,会解析出里面的IPv6前缀,并在其后加上自己ISATAP虚拟网卡的64 bit接口标识地址,构成一个IPv6全局单播地址(fe80::0200:5efe:192.168.1.1),同时将该路由器设为自己的IPv6默认网关[6],则这台PC就可以通过ISATAP路由器访问IPv6资源.由此可以看出,ISATAP技术实际上是将IPv6封装在IPv4数据包中,然后传给ISATAP路由器,再由ISATAP路由器解封装后转发给IPv6网络,而IPv4网络只是作为数据传输的一个通道或承载平台.
IPv6将IP地址由32 bit扩充到128 bit,以满足大规模网络节点的需求.IPv6使用全新的地址配置方式,包括网络前缀和接口标识2部分,使得配置更加简单,同时还采用全新的报文格式,由IPv6包头(40Bytes固定长度)、扩展包头和上层协议数据单元3部分组成,提高了处理报文的效率.
图1 ISATAP隧道技术示意图
RFC2373详细定义了3种规范形式的IPv6地址[7]:
1)优先选用的形式是 X:X:X:X:X:X:X:X,其中每个X代表16个bit,以16进制显示,值为0x0000-0xFFFF,例如,2001:0002:1F1F:0000:0000:0100:11A0:ADDF,每组数值的前导0是可以省略的,例如,0002缩写为2,0000缩写为0.
2)一个或多个连续的段内各位全为0时,为了缩短地址长度,用::(双冒号)表示,但一个IPv6地址只允许用一次.例如,FF01:0:0:0:0:0:0:101:多点传送地址,可压缩为FF01::101;0:0:0:0:0:0:0:1:回送地址,可以压缩为 ::1;0:0:0:0:0:0:0:0:未指定地址,可压缩为 :: .
3)为了实现IPv4与IPv6互通,IPv4地址嵌入IPv6地址中,此时地址的表达方式为X:X:X:X:X:X:D.D.D.D,前96 bit采用冒分16进制,而最后32 bit地址则使用IPv4的点分10进制.例如,0:0:0:0:0:0:192.168.1.2,内嵌IPv6地址的IPv4地址,可压缩为 ::192.168.1.2;0:0:0:0:0:FFFF:10.0.0.1,内嵌IPv4地址的IPv6地址,可压缩为 ::FFFF.10.0.0.1.
另外IPv6地址按寻址方式和功能的不同,又可以分为3种基本类型[8]:
1)单播地址(Unicast).在单播寻址模式下,一个IPv6接口(host)在一个网络里是唯一的.IPv6 报文包含源地址和目的地址,当一个网关或路由器收到一个Unicast IP报文,目标是一台主机,它把报文从与该主机相连的接口发出去.
2)任意点播地址(Anycast).在这种地址模式下,多个接口(主机)被赋予相同的Anycast IP地址.当一个主机希望与配备Anycast的主机联系,它发送一个Unicast消息,在复杂路由机制的帮助下,这个Unicast消息被送到离发送者最近(路由成本最低)的主机上.
3)组播地址(Multicast).目的地为多个主机的报文由多播地址发送.所有对该多播信息感兴趣的主机要事先加入多播组.所有加入该组的接口接收这个多播报文并处理它,其他不感兴趣的主机忽略该多播报文.所有类型的 IPv6地址被分配到接口,而不是分配给节点.一个IPv6单播地址属于单个接口,即属于单个节点.具有多个接口的节点,则可以有多个单播地址,其中任何一个都可以用作该节点的标识符,至少有一个链路本地地址.
仿真实验基于Dynamips平台进行设计和配置.Dynamips是一个基于虚拟化技术且用于模拟思科(Cisco)路由器的软件,能为用户提供类似真实路由器的使用环境,仿真实验拓扑图如图2所示.企业A(EnterpriseA)所在的IPv4网段通过ISPAPT路由器(ISPAPT_Router)与企业B(EnterpriseB)所在的IPv6网段连接.PC1发往PC2的数据包使用PC1的IPv4地址192.168.1.1为源地址,ISATAP路由器的IPv4地址10.0.0.2为目的地址,去掉IPv4的数据包头进入IPv6网段,如图2中①所示.从IPv6的数据包中提取IPv4的地址192.168.1.1作为目的地址,随道源tunnel source地址10.0.0.2作为IPv4的源地址,将IPv6的数据包封装到IPv4的数据包中进入IPv4网段,如图2中②所示.
图2仿真实验拓扑图
ISPAPT-Router 路由器的Serial1/0、Serial1/1端口分别与IPv4网段IPv4-Router路由器的Serial1/0端口及IPv6网段IPv6-Router路由器的Serial1/1端口相连,3台路由器以及2台PC机的端口设置及IP地址分配如表1所示.
表1 路由器端口设置与IP地址分配表
仿真实验中ISPAPAT-Router的配置如图3所示,为避免产生歧义,所有代码都采用完整的命令格式,对主要配置命令的解析如表2所示.
IPv4与IPv6网段连通性的测试结果如图4所示.
通过show ipv6 route命令查看ISATAP-Router的路由表信息如图5所示.启用ISATAP协议后,路由器会产生一个ISATAP虚拟网卡,该虚拟网卡的2001:3::的64 bit接口标识地址, 加上专为ISATAP保留32 bit的0200:5EFE以及32 bit的tunnel source地址10.0.0.2,一起构成128 bit的IPv6全局单播地址.
图3 ISPAPAT-Router的主要配置命令
在企业A的IPv4网段,主机PC1开始发送数据包时,需要先与ISATAP路由器建立ISATAP隧道,然后根据路由器提供的IPv6前缀构造自己的IPv6地址,因此开始阶段数据包的发送率呈下降趋势,但这个时间比较短暂,大约1 min后,主机PC1建立tunnel并完成IPv6的构造工作,于是数据包的发送率陡然上升,约2 min后达到峰值,然后呈平缓下降趋势,直至1 h后数据包发送完毕.在企业B的IPv6网段,主机PC2的数据接收速率呈现与PC1相同的趋势,如图6所示,说明配置ISATAP隧道技术的网络收敛速度快,网络抖动较为平滑,体现了良好的鲁棒性.
表2 ISPAPAT-Router主要配置命令的解析
图4 IPv4与IPv6网段连通性的测试结果
图5 ISATAP-Router的路由表信息
网络的吞吐量呈现与数据包收发率相同的趋势.
图6 IPv4/IPv6网段的主机数据包收发率
开始时吞吐量呈下降趋势,大约1 min后跌至峰谷,约为80 bit/s,但在很短的时间内就达到峰值710 bit/s,大约2 min后数据包收发完毕,整个网络的吞吐量逐步接近0 bit/s,如图7所示.这从另一方面确认了ISATAP隧道技术对网络鲁棒性的保障作用.
图7网络吞吐量
ISATAP隧道技术部署相对简单,为IPv4向IPv6过渡阶段的应用提供了一个适宜的解决方案.ISATAP隧道是点到点的自动隧道技术,通过在IPv6报文的目的地址中嵌入IPv4地址.当2台ISATAP主机通信时,自动抽取出IPv4地址建立隧道,即可自动获取隧道的终点.ISATAP过渡机制允许在现有的IPv4网络内部部署IPv6,其技术简单而且扩展性好,不需要特殊的网络设备,只要通信双方的IPv4网络保持通畅即可,而且收敛速度快,网络抖动较为平滑.