下一代互联网中IPv4与IPv6问题初探_第1页
下一代互联网中IPv4与IPv6问题初探_第2页
下一代互联网中IPv4与IPv6问题初探_第3页
下一代互联网中IPv4与IPv6问题初探_第4页
下一代互联网中IPv4与IPv6问题初探_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 NGI中IPv4与IPv6问题初探 周勇关键字:下一代互联网 IPv6 隧道机制 目前,大多数隧道机制都集中在解决IPv6边缘网络通过IPv4主干网互通的问题,而关于IPv4网络如何通过IPv6主干网互通问题的解决方案却很少提及。而且,由于当前IPv6网络还处于起步阶段,IPv6业务的大规模部署还有待时日,造成IPv6骨干网中的大量带宽闲置,利用隧道穿越IPv6骨干网来传输现有IPv4业务的数据也可以实现IPv6带宽资源的充分利用。因此大量的IPv4网络通过IPv6骨干网实现互联是目前研究的一个热点。本文对4over6隧道驱动进行了编程实现4over6隧道驱动,跨越校园IPv6网络的两个IP

2、v4主机之间实现WEB、Mail等网络应用。IPv4地址面临地址枯竭问题数据表明,2010年1-3月份我国互联网网民新增2000万人,网民总数达到4.04亿,普及率为30.2%。据估算,1-3月份电子商务、网络广告、网络游戏、搜索引擎等市场规模同比增长均超过20%,成为互联网产业主要增长领域。祝军称,互联网加速向传统产业渗透,网络动漫、网络音乐等将成为互联网产业中新的增长领域。 现有互联网,IPv4地址只有约40亿个,全世界地址分配很不均衡。我国IPv4地址资源紧缺,今后2-3年或面临地址枯竭问题。而IPv6是怎样的概念?下一代互联网的IP地址数量大概可以写成3.14×10的11次方

3、个Hella(科学人士用Hella代表10的27次方,以解决巨量数学计算中单位不够大的问题)。有人诗意地形容,在下一代互联网中,地球上每一粒沙子都可以拥有一个IP地址。在现有互联网IP地址资源几近枯竭的情况下,未来以IPv6为核心协议的下一代互联网,激发了人们无限的热情和想象。物联网的兴起也成为IPv6新的催化剂。中国电信2009年在湖南长沙实施了基于IPv6物联网技术的农业信息化监控平台项目,首次在国内开发部署了基于IPv6的物联网应用农作物温室综合监控系统,并成功应用于湖南农科院良种果茶培育繁殖中心。我国将加快部署IPv6。在2010全球IPv6下一代互联网高峰会议上,多位业界专家表示,目

4、前国内运营商部署IPv6的时机已经成熟。IPv6论坛主席LatifLadid在此次大会上表示,IPv6将会有大规模的应用。亚太互联网络信息中心(APNIC)在一个IPv6调研中显示出,在受调查的429个ISP中,考虑推动IPv6的比例为52%,也许会推动IPv6的ISP为35%,总数已达到87%。其中有考虑IPvV6的分配或指派的比例达到71%。从2008年开始,中国电信就在湖南长沙率先开始了向IPv6网络演进的探索,先后完成了IPv4向IPv6过渡的技术调研、方案制定、设备终端测试等各项工作,最终采用双栈技术于2009年完成了IPv6网络的商用部署。由于在长沙进行的IPv6试商用比较成功,中

5、国电信今年年初已在内部已经召开下一代互联网(IPv6)部署试点工作启动会,计划在国内主城市展开IPv6商用部署。 网络产品技术发展现状。我国自主研发的网络产品支持主流的双栈、隧道及转换等IPv6演进策略,可以帮助运营商将现有的IPv4网络平滑过渡到IPv6网络。由于Internet的规模以及目前网络中数量庞大的IPv4用户和设备,IPv4到v6的过渡不可能一次性实现。而且,目前许多企业和用户的日常工作越来越依赖于Internet,它们无法容忍在协议过渡过程中出现的问题。所以IPv4到v6的过渡必须是一个循序渐进的过程,在体验IPv6带来的好处的同时仍能与网络中其余的IPv4用户通信。由于IPv

6、6和IPv4协议不兼容,实际上建成的相当于两张网。对用户来讲,IPv4网的资源非常丰富,IPv6网的内容却很少,所以上面没有真正的流量,有的只是一些网络工程师的测试流量。能否顺利地实现从IPv4到IPv6的过渡也是IPv6能否取得成功的一个重要因素。未来23年是向IPv6过渡的关键时期。实际上,IPv6在设计的过程中就已经考虑到了IPv4到IPv6的过渡问题,并提供了一些特性使过渡过程简化。例如,IPv6地址可以使用IPv4兼容地址,自动由IPv4地址产生;也可以在IPv4的网络上构建隧道,连接IPv6孤岛。目前针对IPv4-v6过渡问题已经提出了许多机制,它们的实现原理和应用环境各有侧重,这

7、一部分里将对IPv4-v6过渡的基本策略和机制做一个系统性的介绍。在IPv4-v6过渡的过程中,必须遵循如下的原则和目标:·保证IPv4和IPv6主机之间的互通;·在更新过程中避免设备之间的依赖性(即某个设备的更新不依赖于其它设备的更新);·对于网络管理者和终端用户来说,过渡过程易于理解和实现;·过渡可以逐个进行;·用户、运营商可以自己决定何时过渡以及如何过渡。主要分三个方面:IP层的过渡策略与技术、链路层对IPv6的支持、IPv6对上层的影响对于IPv4向IPv6技术的演进策略,业界提出了许多解决方案。特别是IETF组织专门成立了一个研究此演

8、变的研究小组NGTRANS,已提交了各种演进策略草案,并力图使之成为标准。纵观各种演进策略,主流技术大致可分如下几类:双栈策略实现IPv6结点与IPv4结点互通的最直接的方式是在IPv6结点中加入IPv4协议栈。具有双协议栈的结点称作“IPv6/v4结点”,这些结点既可以收发IPv4分组,也可以收发IPv6分组。它们可以使用IPv4与IPv4结点互通,也可以直接使用IPv6与IPv6结点互通。双栈技术不需要构造隧道,但后文介绍的隧道技术中要用到双栈。 IPv6/v4结点可以只支持手工配置隧道,也可以既支持手工配置也支持自动隧道。隧道技术在IPv6发展初期,必然有许多局部的纯IPv6网络,这些I

9、Pv6网络被IPv4骨干网络隔离开来,为了使这些孤立的“IPv6岛”互通,就采取隧道技术的方式来解决。利用穿越现存IPv4因特网的隧道技术将许多个“IPv6孤岛”连接起来,逐步扩大IPv6的实现范围,这就是目前国际IPv6试验床6Bone的计划。工作机理:在IPv6网络与IPv4网络间的隧道入口处,路由器将IPv6的数据分组封装入 IPv4中,IPv4分组的源地址和目的地址分别是隧道入口和出口的IPv4地址。在隧道的出口处再将IPv6分组取出转发给目的节点。隧道技术在实践中有四种具体形式:构造隧道、自动配置隧道、组播隧道以及6to4。TB(Tunnel Broker,隧道代理)对于独立的v6用

10、户,要通过现有的IPv4网络连接IPv6网络上,必须使用隧道技术。但是手工配置隧道的扩展性很差,TB的主要目的就是简化隧道的配置,提供自动的配置手段。对于已经建立起IPv6的ISP来说,使用TB技术为网络用户的扩展提供了一个方便的手段。从这个意义上说,TB可以看作是一个虚拟的IPv6 ISP,它为已经连接到IPv4网络上的用户提供连接到IPv6网络的手段,而连接到IPv4网络上的用户就是TB的客户。双栈转换机制(DSTM)DSTM的目标是实现新的IPv6网络与现有的IPv4网络之间的互通。使用 DSTM,IPv6网络中的双栈结点与一个IPv4网络中的IPv4主机可以互相通信。DSTM的基本组成

11、部分包括:·DHCPv6服务器,为IPv6网络中的双栈主机分配一个临时的IPv4全网唯一地址,同时保留这个临时分配的IPv4地址与主机IPv6永久地址之间的映射关系,此外提供IPv6隧道的隧道末端(TEP)信息;·动态隧道端口DTI:每个DSTM主机上都有一个IPv4端口,用于将IPv4报文打包到 IPv6报文里;·DSTM Deamon:与DHCPv6客户端协同工作,实现IPv6地址与IPv4地址之间的解析。协议转换技术其主要思想是在V6节点与V4节点的通信时需借助于中间的协议转换服务器,此协议转换服务器的主要功能是把网络层协议头进行V6/V4间的转换,以适应对

12、端的协议类型。优点:能有效解决V4节点与V6节点互通的问题。缺点:不能支持所有的应用。这些应用层程序包括: 应用层协议中如果包含有IP地址、端口等信息的应用程序,如果不将高层报文中的IP地址进行变换,则这些应用程序就无法工作,如FTP、STMP等。 含有在应用层进行认证、加密的应用程序无法在此协议转换中工作。SOCKS64一个是在客户端里引入SOCKS库,这个过程称为“socks化”(socksifying),它处在应用层和socket之间,对应用层的socket API和DNS名字解析API进行替换;另一个是SOCKS网关,它安装在IPv6/v4双栈结点上,是一个增强型的SOCKS服务器,能

13、实现客户端C和目的端D之间任何协议组合的中继。当C上的SOCKS库发起一个请求后,由网关产生一个相应的线程负责对连接进行中继。SOCKS库与网关之间通过SOCKS(SOCKSv5)协议通信,因此它们之间的连接是“SOCKS化”的连接,不仅包括业务数据也包括控制信息;而G和D之间的连接未作改动,属于正常连接。D上的应用程序并不知道C的存在,它认为通信对端是G。传输层中继(Transport Relay)与SOCKS64的工作机理相似,只不过是在传输层中继器进行传输层的“协议翻译”,而 SOCKS64是在网络层进行协议翻译。它相对于SOCKS64,可以避免“IP分组分片”和“ICMP报文转换”带来

14、的问题,因为每个连接都是真正的 IPv4或IPv6连接。但同样无法解决网络应用程序数据中含有网络地址信息所带来的地址无法转换的问题。应用层代理网关(ALG)ALG是Application Level Gateway的简称,与SOCKS64、传输层中继等技术一样,都是在V4与V6间提供一个双栈网关,提供“协议翻译”的功能,只不过ALG是在应用层级进行协议翻译。这样可以有效解决应用程序中带有网络地址的问题,但ALG必须针对每个业务编写单独的ALG代理,同时还需要客户端应用也在不同程序上支持ALG代理,灵活性很差。显然,此技术必须与其它过渡技术综合使用,才有推广意义。过渡策略总结双栈、隧道是主流所有

15、的过渡技术都是基于双栈实现的不同的过渡策略各有优劣、应用环境不同网络的演进过程中将是多种过渡技术的综合目前,大多数隧道机制都集中在解决IPv6边缘网络通过IPv4主干网互通的问题,而关于IPv4网络如何通过IPv6主干网互通问题的解决方案却很少提及。而且,由于当前IPv6网络还处于起步阶段,IPv6业务的大规模部署还有待时日,造成IPv6骨干网中的大量带宽闲置,利用隧道穿越IPv6骨干网来传输现有IPv4业务的数据也可以实现IPv6带宽资源的充分利用。因此大量的IPv4网络通过IPv6骨干网实现互联是目前研究的一个热点。4over6隧道就是一种用于解决现存的IPv4网络通过IPv6主干网互联互

16、通的机制。4over6隧道机制4over6隧道机制主要包括两方面的功能:控制平面和数据平面。控制平面解决的问题是如何通过隧道端点发现机制来建立4over6隧道,而数据平面则主要关注包括封装和解封装的分组转发处理,如图1所示。4over6控制平面处理4over6机制中,控制平面主要解决隧道端点发现和网络可达性信息传输的问题。4over6控制平面通过对边界网关协议多协议扩展MP-BGP,再进行4over6扩展来实现。当4over6路由器的IPv4路由信息发生变化时,路由管理模块通知BGP协议,启动了4over6功能的BGP协议发送Update分组到其他对端路由器。对端4over6路由器收到Upda

17、te分组后,在更新本地维护的封装表的同时,更新本地IPv4路由表,把相应目的IPv4地址的出接口设置为本地4over6虚接口。控制平面的数据流动方向见图1的Control flow方向。图1 4over6机制4over6数据平面处理4over6数据平面主要包括3个部分:1.入口PE路由器将接收到的IPv4分组用IPv6头部进行封装;2.封装后的分组在IPv6骨干网中进行传输;3.出口PE路由器将分组解封装为原IPv4分组格式。基于4over6分组传输的特点,数据分组的封装和解封装在边界路由器PE(双栈路由器)上进行。在实现时,每个4over6 PE路由器维护一个4over6虚接口,该虚接口通过

18、维护4over6封装表来处理分组的封装和解封装。该封装表的每个表项中包含了目的IPv4网络的地址和掩码,以及需要转发到的出口PE路由器的4over6虚接口的IPv6地址。当IPv4数据分组到达入口边界路由器PE1时,PE1通过查找转发表,发现并进入本地虚接口进行处理。在4over6虚接口处理中,通过查找4over6封装表对分组进行封装,封装的目的IPv6地址是出口边界路由器PE2的虚接口IPv6地址,源地址为PE1的虚接口IPv6地址。经过封装后的分组通过IPv6骨干网络传输到出口边界路由器PE2。在收到分组后,PE2对分组进行解封装,再通过查找IPv4转发表将原始分组转发给相应的IPv4网络

19、。数据平面的数据流动方向见图1的Data flow方向。 基于Linux的4over6隧道驱动 Linux中的设备分为字符设备、块设备和网络设备。4over6隧道设备是一种软件设备,同时也是一种网络设备。作为一个模块,它既可被动态地连接到正在运行的内核,也可以动态地解除连接。图2为4over6隧道虚拟设备内核驱动的结构。从图中可以看到,4over6隧道虚拟设备内核驱动主要包括基本隧道、隧道协议以及特定隧道。内核模块加载与内核模块卸载这两个功能模块是让整个隧道正常工作的前提,前者进行一些隧道虚拟设备的初始化工作,后者进行与之对应的清理工作。隧道协议注册模块产生的隧道协议实体是报文解封装模块的基础

20、,基本隧道实体注册模块产生的基本隧道实体是隧道创建模块的基础,而由隧道创建模块产生的特定隧道是隧道错误处理、报文封装及解封装等模块的共同基础。隧道实体的内核定义4over6隧道设备实质上是一种IPv6隧道,在Linux Kernel 2.4.20中,将IP隧道用结构ip_tunnel来表示,但是该结构的定义无法满足IPv6隧道的需求。参考struct ip_tunnel的定义,本文将IPv6隧道在内核中用结构ip6_tnl 来定义,其定义如下:struct ip6_tnl struct ip6_tnl *next;struct net_device *dev;int recursion;str

21、uct ip6_tnl_parm parms;其中next为指向下一个IPv6隧道实体的指针,dev指向该隧道实体所包含的虚拟设备对象,recursion为数据报递归封装的深度,parms则是隧道实体的属性对象,包括隧道名称、下一报头、隧道起始地址以及流标签等属性的IPv6隧道报头。图2 4over6隧道虚拟设备内核驱动的结构4over6隧道协议实体定义为:struct inet6_protocol tunnel46_protocol = .handler = ip46_rcv,.err_handler = ip46_err,.flags = INET6_PROTO_NOPOLICY|INET

22、6_PROTO_FINAL;其中,ip46_rcv是隧道报文的接收处理函数,专门负责将收到的IPv6数据包进行重组(如果数据包在进入隧道端点时进行了分段处理),并解封装还原成为IPv4数据包后转交给上层模块来处理;ip46_err是隧道报文传输过程中的错误处理函数。在隧道设备的初始化的过程中,调用inet6_add_protocol函数,将该协议实体注册到Linux IPv6内核协议栈中。由于在隧道设备实际运行时,隧道实体的定位与查找比较频繁,为了提高访问速度,将隧道实体以哈希表的形式进行组织。其中哈希表大小(HASHSIZE)为32,哈希函数以128位的IPv6地址为参数,将其划分为4个部分

23、(每一部分为32位),HASH(IPv6地址) = Part1 Part2 Part3 Part4 & (HASHSIZE - 1)。当一个起始地址被分别定位为local和remote的隧道时,通过TUNNEL(HASH(local)HASH(Remote)便能确定其所在的桶。隧道实体的配置接口隧道实体为内核中的数据结构,而管理员在用户态下对其进行配置,因此需要一种用户态与内核态信息交互的机制。由于内核态和用户态使用不同的内存定义,所以二者之间不能直接访问对方的内存。而应该使用Linux中的用户和内核态内存交互函数:unsigned long copy_from_user(void *

24、to, const void *from, unsigned long n);unsigned long copy_to_user (void * to, void * from, unsigned long len);这两个函数均返回不能被复制的字节数,因此,如果完全复制成功,则返回值为0。4over6隧道实体在内核中主要体现为虚拟网络设备,因此配置程序采用传统网络设备的配置方法,即用ioctl系统调用来配置隧道。ioctl系统调用为设备驱动程序执行“命令”提供了一个设备特定的入口点。在用户空间内调用的ioctl函数一般具有如下原型:int ioctl(int fd, int cmd, )通常原型中的“”代表可变数目的参数表,cmd为命令字。在实际系统中,系统调用不会真正使用可变数目的参数,而是必须有精确定义的参数个数。每一个设备都可以定义自己的ioctl命令字,命令编号的范围是由SIOCDEVPRIVATE到SIOCDEVPRIVATE + 15。如果是上述这些命令,则会调用相关接口驱动程序的dev->do_ioctl。该函数接收和通用ioctl函数相同的struct ifreq *指针,其原型如下:int

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论