分类: LINUX
2010-04-30 13:38:14
ISATAP
(一),工作原理:
站内自动隧道寻址协议(ISATAP:Intra-Site Automatic Tunnel Addressing Protocol)过渡技术采用了双栈和隧道技术。ISATAP将IPv4地址嵌入到IPv6地址中,当两台ISATAP主机通信时,自动抽取出IPv4地址建立隧道,不需要通过其它特殊网络设备,只要彼此间IPv4网络保持通畅即可实现。这种技术不要求隧道端节点必须具有全球唯一的IPv4地址,只要双栈具有IPv4单播地址即可(公有地址和私有地址都允许)。
1、ISATAP技术原理
双栈主机在与其他主机或路由器通信之前,首先要获得一个ISATAP地址。双栈主机先向ISATAP服务器发送路由请求,得到一个64位的IPv6地址前缀,然后再加上64位的接口标识符::0:5EFE:x.x.x.x(这里的x.x.x.x是双栈主机的IPv4单播地址),这样就构成一个ISATAP地址。双栈主机配置了ISATAP地址后,成为一个ISATAP客户机,就可以再IPv4域内和其他的ISATAP客户机进行通信了。一般来说,ISATAP地址的配置既支持无状态地址自动配置方式,也支持手工配置方式。原理如下图所示:
图1
图 8:ISATAP隧道
在IPv4网络中,PC2要与IPv6网络中的PC1进行通讯,首先在路由器上配置ISATAP隧道,包括隧道的IPv6地址、源IPv4地址及ISATAP前缀等信息,系统根据其IPv4地址生成ISATAP接口ID,如图中的5EFE:0A01:0201,根据接口ID生成一个ISATAP链路本地IPv6地址FE80::
5EFE:0A01:0201。
ISATAP主机也同样使用本地链路前缀FE80::/10加接口ID表示本地链路地址,它利用此本地链路地址通过ISATAP隧道向ISATAP路由器发送路由器请求消息;ISATAP路由器使用路由器通告消息响应主机的请求,消息中包含ISATAP前缀,主机将ISATAP前缀与接口ID组合得到自己的IPv6地址,即1::5EFE:0A01:0206,并用此地址访问IPv6主机。
当PC2发送访问IPv6网络中的PC1的报文时,将从报文的下一跳IPv6地址中取出IPv4地址作为IPv4封装的目的地址。报文被转发到ISATAP路由器后,被解封装并送交IPv6协议栈处理,IPv6报文根据IPv6路由表转发最终PC1收到,其应答报文到达ISATAP路由器后被封装通过隧道转发给PC2,单次通信完成。
1.1、同一个IPv4域内,两台ISATAP客户机间的通信过程如下
①双栈主机1获得双栈主机2的ISATAP地址后,将需要发送的数据包交给ISATAP接口进行发送;
②ISATAP从该数据包的IPv6源地址和目的地址中提取出相应的IPv4源和目的地址,并对该数据包用IPv4头部进行封装;
③封装后的数据包按照其IPv4目的地址被发送到双栈主机2;
④双栈主机2接收到该数据包后对其解封装,得到原始IPv6数据包;
⑤双栈主机2通过与上述过程类似的过程将应答数据返回给双栈主机1。
从上面的通信过程中我们可以看出,ISATAP实际上是将IPv4网络作为一个承载平台,通过在其上面建立一个IPv6-in-IPv4自动隧道来完成IPv6通信的。
1.2、ISATAP客户机与其他网络之间的通信
ISATAP主机除了可以在ISATAP域内与其他ISATAP主机通信外,还可以通过ISATAP路由器实现与其他网络的通信。比如,ISATAP主机可以通过ISATAP路由器与IPv6网络中的IPv6服务器进行通信,其通信原理如图2所示,通信过程如下:
图2
①ISATAP主机获得ISATAP地址(站点本地地址),并将下一跳跃点next hop设为ISATAP 路由器的ISATAP地址(站点本地地址);
②当ISATAP主机送出目的地为所在子网络以外的地址时,ISATAP先将IPv6数据包进行IPv4封装,然后以隧道方式送到ISATAP 路由器的IPv4地址;
③ISATAP 路由器除去IPv4包头后,将IPv6 数据包转送给IPv6网络中的目的IPv6服务器;
④IPv6服务器直接将应答的IPv6数据包发回给ISATAP网络;
⑤在应答IPv6数据包经过ISATAP路由器时,ISATAP路由器先将应答IPv6数据包进行IPv4封装,然后再转发给ISATAP主机;
⑥ISATAP主机收到应答数据包后,将数据包去掉IPv4包头,恢复成原始IPv6数据包。
通过上述步骤,ISATAP主机与IPv6网络中的IPv6服务器完成了一次完整的数据通信过程。
(二)参考资料:
RFC5214
RFC4214
华为,思科均有产品对其支持
(三)linux支持
这篇文章讲到客户端需要的支持
[clients and router]
[clients and router]
但这篇文章是02年的,信息比较旧
http://ipv6.hust.edu.cn/tj155/index.php/categoryblog/69-ubuntu-isatap-config.html
这篇文章说可以用sit类型的隧道实现ISATAP的功能,对于我们的fedora 4应该也可以,但实验的时候没有找到合适的ISATAP路由器,没有成功。