面向NAT用户的IPV6过渡机制研究

时间:2022-10-26 05:24:05

面向NAT用户的IPV6过渡机制研究

摘要:IPv6取代IPv4已经成为网络发展的必然趋势,然当前的过渡技术中大多都是针对有公网IPv4地址的用户提出的,不能穿越NAT设备,为此该文介绍了两种面向NAT用户的隧道技术,分析了其工作机制及优缺点。

关键词:IPv6;NAT;隧道;Teredo;Silkroad

中图分类号:TP393文献标识码:A文章编号:1009-3044(2009)27-7653-02

IPv6取代IPv4已成为必然,网络界的研究热点是怎样由IPv4向IPv6的成功平滑过渡。在现阶段,解决过渡问题的基本技术主要有三种:IPv4/IPv6协议转换和双协议栈及隧道技术。其中遂道技术是一种重要的过渡技术,绝大多数隧道基于IPv6-In-IPv4封装方式,就是将IPv6分组封装在IPv4分组中,利用已有的IPv4路由体系进行传输,解决被IPv4网络分离的两个IPv6网络或节点之间通信的问题。但IPv6-In-IPv4报文无法通过IPv4网络中大量存在的NAT设备,因此这类隧道不能在有NAT的环境中使用。但我国的现状是8000多万个上网用户只有3000多万个IPv4地址。除了采用动态分配缓解地址紧张外,更多的则是采用NAT 技术来解决这个问题。在IPv4向IPv6的过渡时期,如何为这些NAT用户提供IPv6接入服务,使得它们能和其他IPv6节点实现互通互访,是一个切实需要解决的问题。

1 几种面向NAT用户的遂道技术分析

国际上现有的隧道机制中微软公司提出的Teredo协议和中科院计算所提出的Silkroad协议是专为NAT用户设计的过渡技术。它们都采用IPv6-in-UDP隧道,也就是将IPv6报文封装在IPv4 UDP载荷中的方式实现NAT用户和IPv6网络的互连。

1.1 Teredo的地址获取过程

Teredo的客户端产生一个IPv6的路由请求报文,并将其封装在IPv4的UDP数据包的净荷里通过现有的IPv4网络发给Teredo服务器,服务器收到这个路由请求后,向客户端返回一个包含有一个IPv6的地址前缀以及Teredo客户端经过NAT设备映射后的公有IPv4地址和端口号的路由信息,根据这个返回的路由宣告消息客户端生成一个结构如图1的IPv6地址。然后,Teredo 客户端会定期地发送单一的气泡数据包(由IPv6报头组成,并且不包含 IPv6 有效载荷,为维持或建立一个 NAT 映射而发送)到 Teredo 服务器。Teredo 服务器会在不回复的情况下丢弃该数据包。这个周期性的数据包会重新刷新 NAT 的转换表。来维持这种映射关系。[3]

1.2 Teredo的局限性

在Teredo机制中同一链路上客户端之间的通信是不受限的,其它类型的通信则依赖于客户端的所属的NAT类型。而对于对称NAT类型,则根据数据包中的目的地址来转换它的私有地址及端口,如果目的地址不同,那么经过转换后的外部地址和外部端口也会不同。这样隧道另一端 IPv4 地址的变化就会引起 NAT 用户本身隧道参数的变化。但 Teredo 协议一个隐含的假定是用户配置了IPv6地址后,内嵌其中的隧道参数是不会发生变化的。显然如果存在对称类型 NAT 的情况,从用户IPv6地址中获得的隧道参数则是不正确的,这就导致了Teredo服务对对称NAT用户的不适用。

Teredo 的实现相对比较复杂,与现有的网络结构很难兼容。因为不仅需要增设 Teredo 服务器来协助 Teredo 客户端建立连接,而且还要求Teredo客户端所要访问的一般 IPv6 站点附近的路由器有 Teredo中继功能,即该路由器不但要能识别 Teredo 格式的特殊 IPv6 地址,还要向所在网络广播 Teredo 格式的地址的可达性,并能和 Teredo 服务器共同完成穿透 NAT 的功能。这必然需要对所有的 IPv6 网络入口处的路由器进行升级。

1.3 Silkroad遂道技术4

Silkroad 协议是由中科院计算所提出的,能支持所有类型的NAT用户与 IPv6 网络进行互连,能为用户分配固定不变的 IPv6 地址,而具有更高的安全性。虽然Silkroad隧道也采用IPv6-In-UDP隧道的方式实现NAT用户与IPv6网络互联的。但不同的是它为NAT用户分配的IPv6地址没有采用固定格式的前缀,而且地址中也没有嵌入NAT映射地址或映射端口等信息。

Silkroad协议的体系结构如图2。

1.3.1 Silkroad体系简介

初始化过程中,客户端向导航器发送一个接入请求报文,由导航器为其选择一个路由距离最近的隧道服务器,将服务器的 IPv4 地址返回给客户端。客户端然后向指定的隧道服务器发送一个地址请求报文,报文内容为身份认证信息以及创建 IPv6 地址所需要的接口标识符,当服务器收到请求报文后对客户端的身份进行认证,通过认证后便为其构造一个 IPv6 地址,接着在映射表中添加该地址和隧道参数之间的映射关系,然后将地址和更新过的身份认证信息作为响应报文的内容再返回给客户端。 客户端再对服务器的身份进行认证,当通过认证后配置 IPv6 地址,并建立另一端为服务器的 IPv6-In-UDP隧道。 在此之后,客户端就可以通过该隧道和 IPv6 网络上的其他节点进行端到端的通信,服务器在数据转发过程中要检查数据包的合法性:一个是以目的IPv6 地址为入口查找映射表,如果没有这个入口,表明数据包是一个非法数据包,作丢弃处理;另一个是检查从 IPv4 接口收到的数据包,以源IPv6 地址为入口查找映射表,如果没有这个入口或者这个入口对应的隧道参数和数据包的源IPv4地址、源UDP端口不一致,则表明数据包为非法数据包,也作丢弃处理。 在只有源或目的是合法用户的情况下,数据包才能通过上述检查,从而大大增强了网络的安全性。

服务器在运行过程中,会周期性地向导航器报告负载信息如CPU利用率、带宽利用率、用户数目等。对这些信息进行统计和分析则有导航器负责,以便系统管理员能动态掌握服务器的运行状况,在客户端建立遂道之前给予指导。

1.3.2 Silkroad地址构造

客户端的IPv6 地址是由64 位的地址前缀和64位的接口标识符组合构成,地址前缀由隧道服务器确定,因为隧道服务器在部署的时候都会分配一个全球唯一的64位地址前缀用于构造客户端IPv6地址,所以客户端只要确定了选择接入的隧道服务器,64位的地址前缀也随之确定而不再发生变化,IEEE定义了64位的Eui-64编码,用来表示网络适配器的地址,如图3所示。

参考Pppv6生成接口标识符的方法,如果客户端有EUI-64地址,哪么只要将它的“U”位取反,就可以得到接口标识符;如果有Eui-48地址哪么在其中间添加值为“0xfffe”的16位比特,成为一个EUI-64地址后,再将“U”位取反便可得到接口标识符;如果没有EUI-48 或EUI-64地址,就将机器序列号等数值转换成64位编码。采用这种方式生成的接口标识符不仅具有固定性,而且具有唯一性,从而保证了IPv6 地址的唯一性。虽然客户端可以获得一个固定不变的IPv6地址,但必须在有一个IPv6的域名的前提下,客户端才可以被其它节点主动的去访问。

1.3.3 隧道维护和状态信息管理

当客户端完成初始化过程后会以一定的时间间隔周期性的向隧道服务器发送IPv6-In-UDP报文,一般发送默认周期为30s。对于状态信息的管理服务器通常采用客户端显式通知的方式,尽可能多地删除那些不再使用的信息,从而降低因维护信息对系统资源的消耗。例如如果客户端在下线之前向服务器发送一个中断连接请求,哪么服务器收到请求后便会删除对应的映射关系。但这种方式不能较好地处理客户端异常下线的情况。 对于异常下线的情况Silkroad则采用客户端维护UDP会话的过程来管理状态信息。 服务器会为每个建立的映射关系设定一个计时器,一旦收到来自客户端的数据包就会刷新计时器重新计时。如果收到的是一个空数据包,哪么服务器除了刷新计时器外将不作任何其他处理。如果计时器一旦超时,服务器就认为客户端已经下线,便删除对应的映射关系。采用这种方式可使隧道服务器上维护的都是处于活动状态的映射关系,使管理更加高效。

1.3.4 Silkroad的不足

Silkroad 在解决 Teredo 问题的同时也付出了一定的代价。它的不足之处在于两个客户端之间通信时,从源客户端发出的数据包必须先到达隧道服务器,再由隧道服务器转发给目标客户端;而相应的返回的数据包也必须由隧道服务器的中转,才能到达源客户端。 所以这种三角路由方式会增大客户端之间通信的时间开销,也会增加隧道服务器的通信负载。

2 结束语

该文针对目前提出的IPv4向IPv6过渡的技术不能穿越NAT设备的不足,主要介绍了Teredo和Silkroad这两种面向NAT用户的遂道技术,从实现原理和特点以及各种技术的优缺点上进行了分析与研究,对IPv4向IPv6过渡时期的共存和转换机制提供了一定技术参考。

参考文献:

[1] Carpenter B, Moore K. Connection of IPv6 Domin via IPv4 Clouds[S].RFC 3056, 2001-02.

[2] C Huitema.Teredo:Tunneling IPv6 over UDP through NAts,draft-huitema-v6ops-Teredo-00,2003(7).

[3] 张浩锋, 解冲锋.向IPv6过渡的E-Teredo服务原理和实现[J]. 现代电信科技,2005(6).

[4] 吴贤国.面向NAT用户的IPv6遂道技术研究[J].计算机学报,2007(3).

[5] 王晓枫.对UDP中穿越NATs的IPv6遂道的改进[J].计算机工程,2004(7).

[6] 华为3Com技术有限公司.IPv6技术,2004(6).

上一篇:利用Windows Server 2003自身安全策略加强操作... 下一篇:高校“IT”实训教学改革与探索