软件测试管理

当前位置:首页 > 软件测试管理

《计算机网络:自顶向下方法》第四章 续5

4.4.4 IPv6


在20世纪90年代早期,因特网工程任务组就开始致力于开发一种替代 IPv4的协议。该努力的最初动机是因为以下现实:由于新的子网和IP结点以惊人的增长率连到因特网上(并被分配唯一的IP地址),32比特的IP地址空间即将用尽。为了应对这种对大IP地址空间的需求,开发了一种新的IP协议,即IPv6。IPv6的设计者们还利用这次机会,在Pv4积累的运行经验基础上加进和强化了IPv4的其他方面。


IPv4地址在什么时候会被完全分配完(因此没有新的网络再能与因特网相连)是一个相当有争议的问题。IETF的地址寿命期望工作组的两位负责人分别估计地址将于2008年和2018年用完[Solensky 1996]。在2011年2月,IANA向一个区域注册机构分配完了未分配IPv4地址的最后剩余地址池。这些注册机构在它们的地址池中还有可用的IPv4地址,一旦用完这些地址,从中央池中将再也分配不出更多的可用地址块了[ Huston2011a]。尽管在20世纪90年代中期对IPv4地址耗尽的估计表明,Pv4 地址空间耗尽的期限还有可观的时间,但人们认识到,如此大规模地部署-项新技 术将需要可观的时间,因此开始了下一代IP ( Next Generation IP, IPng) 的工作[ Bradner 1996; RFC 1752]。这种工作成果就是IP版本6 (IPv6) 的规范[RFC 2460],这是我们下面将要讨论的主题。(一个经常问到的问题是: IPv5出了什么情况?人们最初预想ST-2协议将成为IPv5,但ST-2后来被舍弃了。)有关IPv6的优秀信息来源见[ Huitema 1998; IPv6 2012]。


1. IPv6数据报格式


IPv6数据报的格式如图4-24所示。


《计算机网络:自顶向下方法》第四章 续4


IPv6中引人的最重要的变化显示在其数据报格式中:


●扩大的地址容量。IPv6将IP地址长度从32比特增加到128比特。这就确保全世界将不会用尽IP地址。现在,地球上的每个沙砾都可以用IP地址寻址了。除了单播与多播地址以外,IPv6 还引人了一种称为任播地址( anycast address)的新型地址,这种地址可以使数据报交付给-组主机中的任意 一个。(例如,这种特性可用于向一组包含给定文档的镜像站点中的最近的一个发送个HTTP GET报文。)


●简化高效的40字节首部。如下面讨论的那样,许多IPv4字段已被舍弃或作为选项。因而所形成的40字节定长首部允许更快地处理IP数据报。一种新的选项编码允许进行更灵活的选项处理。


●流标签与优先级。IPv6有一个难以捉摸的流(flow) 定义。RFC 1752与RFC 2460中描述道,该字段可用于“给属于特殊流的分组加上标签,这些特殊流是发送方要求进行特殊处理的流,如一种非默认服务质量或需要实时服务的流”。例如,音频与视频传输就可能被当作一个流。在另一方面,更为传统的应用(如文件传输和电子邮件,就不可能被当作流。由高优先级用户(如某些为使其流量得到更好服务而付费的用户)承载的流量也有可能被当作-个流。 然而,IPv6的设计者们显然已预见到最终需要能够区分这些流,即使流的确切含义还未完全确定。IPv6首部中还有一个8比特的流量类型字段,该字段就像IPv4中的TOS字段,可用于给出一个流中某些数据报的优先级,以便指明某些应用的数据报( 如ICMP分组)比其他应用的数据报( 如网络新闻)有更高的优先权。


如上所述,比较图4-24与图4-13就可看出,IPv6 数据报的结构更简单、更高效。以下是在IPv6中定义的字段。


●版本。该4比特字段用于标识IP版本号。毫不奇怪,IPv6将该字段值设为6。注意到将该字段值置为4并不能创建一个合法的IPv4数据报。( 如果这样的话,事情就简单多了,参见下面有关从IPv4向IPv6迁移的讨论。)


●流量类型。该8比特字段与我们在IPv4中看到的TOS字段的含义相似。


●流标签。如上面讨论过的那样,该20比特的字段用于标识-条数据报的流。


●有效载荷长度。该16比特值作为一个无符号整数,给出了IPv6数据报中跟在定长的40字节数据报首部后面的字节数量。


●下一个首部。该字段标识数据报中的内容(数据字段)需要交付给哪个协议(如TCP或UDP)。该字段使用与IPv4首部中协议字段相同的值。


●跳限制。转发数据报的每台路由器将对该字段的内容减1。如果跳限制计数到达0时,则该数据报将被丢弃。


●源地址和目的地址。IPv6 128比特地址的各种格式在RFC 4291中进行了描述。


●数据。这是IPv6数据报的有效载荷部分。当数据报到达目的地时,该有效载荷就从IP数据报中移出,并交给在下一个首部字段中指定的协议处理。


以上讨论说明了IPv6数据报中包括的各字段的用途。图4-24中的IPv6数据报格式与图4-13中的IPv4数据报格式进行比较,我们就会注意到,在IPv4数据报中出现的几个字段在IPv6数据报中已不复存在:


●分片/重新组装。IPv6不允许在中间路由器上进行分片与重新组装。这种操作只能在源与目的地上执行。如果路由器收到的IPv6数据报因太大而不能转发到出链路上的话,则路由器只需丢掉该数据报,并向发送方发回一个“分组太大”的ICMP差错报文即可(见下文)。于是发送方能够使用较小长度的IP数据报重发数据。分片与重新组装是一个耗时的操作,将该功能从路由器中删除并放到端系统中,大大加快了网络中的IP转发速度。


●首部检验和。因为因特网层中的运输层(如TCP与UDP) 和数据链路层(如以太网)协议执行了检验操作,IP设计者大概觉得在网络层中具有该项功能实属多余,可以将其去除。再次强调的是,快速处理IP分组是关注的重点。在4.4.1 节中我们讨论IPv4时讲过,由于IPv4首部中包含有一个TTL字段( 类似于IPv6中的跳限制字段),所以在每台路由器上都需要重新计算IPv4首部检验和。就像分片与重新组装-样,在IPv4中这也是一项耗时的操作。


●选项。选项字段不再是标准IP首部的一部分了。但它并没有消失,而是可能出现在IPv6首部中由“下一个首部”指出的位置上。这就是说,就像TCP或UDP协议首部能够是IP分组中的“下一个首部”,选项字段也能是“下一个首部”。删除选项字段使得IP首部成为定长的40字节。


我们在4.4.3节讨论时讲过,IP结点使用ICMP协议来报告差错情况,并向端系统提供有限的信息(如对一个ping报文的回显回答)。RFC 4443中定义了一种用于IPv6的新版ICMP。除了能识别现存的ICMP类型和编码定义外,由于IPv6新增功能的需要,ICMPv6还增加了新的类型和编码。其中包括“分组太大”类型与“未识别的IPv6选项”错误编码。另外,ICMPv6 还包含了我们将在4.7节中学习的因特网组管理协议( IGMP)。ICMP用于管理主机加人和离开多播组,它在IPv4中曾是个与ICMP分开的独 立协议。


2.从IPv4到IPv6的迁移


既然我们已了解了IPv6的技术细节,那么我们考虑一个非常实际的问题:基于IPv4的公共因特网如何迁移到IPv6呢?问题是,虽然新型IPv6使能系统可做成向后兼容,即能发送、路由和接收IPv4数据报,但已部署的IPv4使能系统却不能够处理IPv6数据报。可能采用以下几种方法。


一种可选的方法是宣布一个标志日,即指定某个日期和时间,届时因特网所有机器都关机并从IPv4升级到IPv6。上次重大的技术迁移( 为得到可靠的运输服务,从使用NCP迁移到使用TCP)出现在差不多25年以前。即使回到那时[RFC 801]一因特网很小且仍然由少数“奇才”管理着,人们也会认识到这样一个标志日是不可行的。一个涉及上亿台机器和上百万个网络管理员与用户的标志日现在更是不可想象的。RFC 4213描述了两种方法(可单独使用,也可起使用),可用于逐渐将IPv6主机和路由器整合进IPv4世界中(当然其长远目标是将所有IPv4结点最终向IPv6迁移)。


引人IPv6使能结点的最直接方式可能是一种双栈( dual-stack)方法,即使用该方法的IPv6结点还具有完整的Pv4实现。这样的结点在RFC 4213中被称为IPv6/IPv4结点,它有发送和接收IPv4与IPv6两种数据报的能力。当与IPv4结点互操作时,IPv6/IPv4 结点可使用IPv4数据报;当与IPv6结点互操作时,它又能使用IPv6。IPv6/IPv4 结点必须具有IPv6与IPv4两种地址。此外,它们还必须能确定另一个结点是否是IPv6使能的或仅IPv4使能的。这个问题可使用DNS (参见第2章)来解决,若要解析的结点名字是IPv6使能的,则DNS会返回一个IPv6地址,否则返回一个IPv4地址。当然,如果发出DNS请求的结点是仅IPv4使能的,则DNS只返回一个IPv4地址。


在双栈方法中,如果发送方或接收方中任意个仅 为IPv4使能的,则必须使用IPv4数据报。因此,本质上两个IPv6使能的结点不应相互发送IPv4数据报。图4-25中图示了这种情况。假定结点A是IPv6使能的,且要向结点F发一个IP数据报,F也是IPv6使能的。结点A和B能够交换IPv6数据报。然而,结点B必须生成一个IPv4数据报以便发给C。当然,IPv6 数据报的数据字段可被复制到IPv4数据报的数据字段中,并且要做适当的地址映射。然而,在执行IPv6到Pv4的转换时,IPv6 数据报中一些IPv6特定的字段(如流标签字段)在IPv4数据报中无对应部分,这些字段的信息将会丢失。因此,即使E和F 能交换IPv6数据报,从D到达E的IPv4数据报并不含有从A发出的初始IPv6数据报中的所有字段。


《计算机网络:自顶向下方法》第四章 续5


RFC 4213中还讨论了另一种双栈方法,叫做建隧道( tunneling)。该方法能解决上述问题,允许如E接收源于A的IPv6数据报。隧道依据的基本思想如下:假定两个IPv6结点(如图4-25中的B和E)要使用IPv6数据报进行交互,但它们是经由中间Pv4路由器互联的。我们将两台IPv6路由器之间的中间IPv4路由器的集合称为一个隧道( tunnel),如图4-26所示。借助于隧道,在隧道发送端的IPv6结点(如B)可将整个IPv6数据报放到一个IPv4数据报的数据(有效载荷)字段中。于是,该IPv4数据报的地址设为指向隧道接收端的IPv6结点(如E),再发送给隧道中的第一个结点( 如C)。隧道中的中间IPv4路由器在它们之间为该数据报提供路由,就像对待其他数据报一样,完全不知道该IPv4数据报自身就含有一个完整的IPv6数据报。隧道接收端的IPv6结点最终收到该IPv4数据报(它是该IPv4数据报的目的地!),并确定该IPv4数据报含有一个IPv6数据报,于是从中取出IPv6数据报,然后再为该IPv6数据报提供路由,就好像它是从一个直接相连的IPv6邻居那里接收到该IPv6数据的一样。


在结束本节前需要说明的是,尽管IPv6的采用最初表现为一个缓慢启动的过程[Lawton 2001],但是最近已经积蓄了力量。有关2008年IPv6部署的讨论参见[ Huston2008b];有关美国IPv6部署的概况参见[ NIST IPv6 2012]。大量增加的设备如IP使能电话与其他便携式设备为IPv6的更广泛部署提供了额外的推动力。欧洲的第三代合作计划[3GPP 2012]已规定了IPv6为移动多媒体的标准编址方案。


我们能从IPv6经验中学到的重要一课是,要改变网络层协议是极其困难的。自从20世纪90年代早期以来,有许多新的网络层协议被鼓吹为因特网的下一次重大革命, 但这些协议中的大多数至今为止只取得了有限突破。这些协议包括IPv6、多播协议(4.7 节)、资源预留协议(第7章)。在网络层中引人新的协议的确如同替换一幢房子的基石,即在不拆掉整幢房子(或至少临时重新安置房屋住户)的情况下是很难完成上述工作的。在另一方面,因特网却已见证了在应用层中新协议的快速部署。典型的例子当然有Web、即时讯息、P2P文件共享。其他例子包括音频与视频流和分布式游戏。引人新的应用层协议就像给一幢房子重新刷一层漆, 这是相对容易做的事,如果你选择了一个好看的颜色, 邻居将会照搬你的选择。总之,我们在未来能够期待看到因特网网络层中的这些变化,但这些变化出现的时间尺度很可能要比在应用层中出现的变化要慢得多。


《计算机网络:自顶向下方法》第四章 续5


相关内容

文章评论

表情

共 0 条评论,查看全部
  • 这篇文章还没有收到评论,赶紧来抢沙发吧~