1.7 IPv6的特点
Cisco IPv6网络实现技术(修订版)
在概述了与IPv4协议相关的主要问题后,你应该明白IPv6解决了所有这些问题,并提供了新的好处。下面是主要的改进。
128比特地址方案,为将来数十年提供了足够的IP地址。
巨大的地址空间为数十亿新设备,如PDA、蜂窝设备和802.11系统,提供了全球唯一地址。
多等级层次有助于路由聚合,提高了路由选择到Internet的效率和可扩展性。
使具有严格路由聚合的多点接入成为可能。
自动配置过程允许IPv6网络中的节点配置它们自己的IPv6地址。
重新编址机制使得IPv6提供商之间的转换对最终用户是透明的。
ARP广播被本地链路的多播替代。
IPv6的包头比IPv4的包头更有效率。数据字段更少,去掉了包头校验和。
流标记字段可以提供流量区分。
新的扩展包头替代了IPv4包头的选项字段,并且提供了更多的灵活性。
IPv6被设计为比IPv4协议能更有效地处理移动性和安全机制。
为IPv6设计了许多过渡机制,允许从IPv4网络平稳地向IPv6网络过渡。
以下的小节考察了这些IPv6特性中的几个,并讨论了它们是如何带来了IP协议的改进。
1.7.1 大的地址空间
IPv6地址的比特数增长了4倍,从32比特增加到128比特。在IPv6设计规范期间,曾有是使用固定长度64比特地址还是使用变长(直至160比特)地址的争论。表1-2对每种观点的争论点进行了比较。
可变的地址长度允许使用64比特地址替代定长地址;随着时间的推移,地址长度可变长
最后,为IPv6使用定长128比特地址成为最恰当的选择。
使用IPv4,可编址的节点数是4 294 967 296(232),约每3个人有2个IPv4地址(基于2001年世界人口总数为60亿)。
作为对比,128比特IPv6地址长度意味着3.4×1038个地址,允许世界上每个人大约有5.7×1028个IPv6地址。正如在任何编址方案中那样,如 IPv4 和电话号码系统,不是所有的地址都能被使用,但是对任何种类的应用有足够可获得的地址。增加地址比特数也意味着IP包头大小的增加。因为每个IP包头都包含一个源地址和一个目的地址。IPv4包头中包含IP地址的长度为64比特,IPv6是256比特。
对比IPv4和IPv6的OSI参考模型(见图1-6),IPv6只在第3层(网络层)做了改变。其他层稍微做了一点儿修改。在IPv6工程化过程中,这是一个要考虑的重点。两个OSI参考模型的其他层是相同的,这表明在IPv4上使用的协议(如TCP和UDP)可以继续在IPv6上运行。
1.7.2 全球可达性
给连接到Internet上的每个设备分配一个全球唯一单播地址会使地址空间耗尽,这个研究是发起IPv6工作的重要论点。通过使用比IPv4(4 294 967 296个地址)大很多的地址空间,IPv6使得几乎每种设备都有一个全球可达的地址:计算机、IP电话、IP传真、TV机顶盒、照相机、传呼机、无线PDA、802.11b设备、蜂窝电话、家庭网络和汽车。在2006年之前蜂窝电话制造商计划生产数十亿包含IP协议栈的新型无线设备。这些下一代无线设备将通过电话向用户提供Internet连接和服务。
试图把这些设备都放入IPv4地址空间几乎是不可能的。为每个设备分配一个唯一IP地址能实现端到端可达性,这种功能在过去的几年里由于使用NAT设备和私有编址而丧失了。端到端模型对电话呼叫和端到端安全性尤其重要。IPv6不需要对网络自身进行特殊处理就能完全支持应用协议。
注:在IPv6中,IPv6单协议网络之间是不希望有NAT的。本来就有充足的IPv6地址保持IP协议的端到端模型。
1.7.3 编址层次等级
一个较大的地址空间可以在地址空间内使用多层等级结构,如图1-7所示。每一层都有助于聚合IP地址空间,增强地址分配功能。提供商和组织机构可以有层叠的等级结构,管理其所辖范围内空间的分配。
在等级结构中使用多层次为协议提供了灵活性和新功能。
一个灵活的编址构架是网络协议的关键。在IPv4里,小的32比特地址空间是一个重要限制,不能使用几个等级层次,影响了路由聚合。
1.7.4 聚合
较大的IPv6地址空间足以给ISP和组织机构分配大块地址。
给组织机构的整个网络一个足够大的前缀,能够使它只使用一个前缀。而且,ISP可以把它所有客户的前缀路由聚合到一个前缀并发布给IPv6Internet。
在图1-8中,ISP B向IPv6 Internet公告它能够路由网络2001:0420::/35,这个网络包含分配给客户B3(网络2001:0420:b3::/48)的IPv6空间和客户B10(网络2001:0420:b10::/48)的IPv6空间。ISP A向IPv6 Internet公告它能够路由网络2001:0410::/35,包括网络2001:0410:a1::/48和网络2001:0410:a2::/48。
注:当一个客户改变他的IPv6提供商时,他必须改变他的IPv6前缀来维持这个全球聚合。改变提供商意味着网络重新编址。然而,自动配置(即将讨论,稍后在第3章中详细介绍)使一个组织中的主机重新编址变得容易。
这种路由聚合促进了高效的和可扩展的路由选择。为了将来连接所有种类的设备和网络到Internet,这意味着数十亿个节点,可扩展的路由选择是必要条件。然而,全球IPv6 Internet路由选择表中的路由选择表项应该比现在的IPv4 Internet少很多。IPv6路由聚合是可能的,因为多点接入站点能够从数个上游提供商那里配置地址。
1.7.5 多重地址
在 IPv4 里,一个网络连接到多个提供商并不简单。组织进行多点接入的一种方法是从区域Internet注册机构获得提供商独立的IPv4地址空间。然后组织可以与多个提供商缔结同等协定,提供商把组织的网络前缀公告到Internet。在基于提供商进行聚合的IPv4空间条件下,使用的前缀是提供商地址空间的一部分。如果连接的其他ISP向Internet公告相同的前缀,那么多点接入是可能的。它至少打破了在全球Internet路由选择表中任何种类的聚合。然而,多点接入是网络高可靠性的要求。
使用IPv6拥有大很多的地址空间,能够为一个组织同时使用多个前缀。一个连接到几个ISP的组织得到这些ISP IPv6地址空间的部分前缀。这允许不破坏全球路由选择表而实现多点接入,目前这在IPv4中是不可能的。
在图1-9中,多点接入的客户连接到ISP A和ISP B,分别为它们分配了网络2001:0420: b3::/ 48和2001:0410:a1::/48。ISP A和ISP B向IPv6 Internet公告它们的/35前缀。
用IPv4进行多点接入显然是可能的。但是它对全球Internet路由选择表有影响,因为相同的网络前缀可能被不同的自治系统(AS)公告出去。IPv6的一个目标是保持全球路由选择表尽可能小。
多重地址的概念隐含说明一个节点的每个网络接口可能同时有多个全球唯一单播IP地址。在一个网络和节点上有多重地址要求源地址选择选出发起连接时使用的地址。源地址选择是一个机制,当有多个IPv6前缀时,节点能够选择或者强制选用一个。而且,如果一个连接失败,在多点接入网络中所有的路由器都应能够用另外一个替代目前的IPv6前缀进行公告。源地址选择和路由器重新编址机制正被 IETF 讨论。然而,已经有一个称为自动配置的机制允许IPv6网络上的所有节点重新编址。
第2章给出了详细的IPv6编址结构。
1.7.6 自动配置
自动配置是 IPv6 带来的新功能。由于具有比较大的地址空间,IPv6 被设计成能够在保持全球唯一性的同时自动配置设备上的地址。如图 1-10 所示,一个在相同本地链路上的IPv6路由器发送网络类型信息,如本地链路的IPv6前缀和默认IPv6路由。本地链路上的所有IPv6主机监听这个信息,然后自己配置它们的IPv6地址和默认路由器。自动配置是一种机制,每一个IPv6主机和服务器将链路层地址(例如,以太网MAC地址)以EUI-64的格式附加在子网上公告的全球唯一单播IPv6前缀后面。
注:自动配置(在RFC 2462中定义)又被称为IPv6无状态地址自动配置。
接口的链路层地址基于网络接口的MAC地址,转换成长度为64比特的EUI-64(Extended Unique Identifier 64,扩展唯一识别符64)格式。第2章详细介绍从48比特MAC地址到EUI-64的转换。接口的链路地址是IPv6地址的低64比特部分,IPv6前缀是128比特地址的高64比特部分。
注:分配给本地链路的IPv6前缀的长度是64比特(/64)。低64比特部分是接口的链路层地址。用这个概念,IPv6简化了网络中子网的编址,使用相同长度的前缀而不是像IPv4中使用不同的网络掩码值。
自动配置提供的128比特地址保证是全球唯一的,因为48比特的MAC地址是由IEEE分配给厂商的24比特组织唯一标识符(Organizational Unique Identifier, OUI)和为每个创建的接口产生的唯一的24比特值组合而成的。因为在特殊情况下可以用软件修改网络接口的48比特MAC地址,这可能导致地址冲突。每个IPv6协议栈都有一个能够检测本地链路重复地址的过程。重复地址检测(DAD)机制在第3章中详细解释。
注:自动配置并不是为节点的接口分配IPv6地址的唯一方法。在IPv6中仍可手动配置网络接口,这对路由器来说是必需的。IPv6主机也可以通过DHCPv6服务器得到接口地址和参数。这个模式(DHCPv6)称为IPv6有状态地址配置(与IPv6 无状态地址配置或自动配置相对)。最后,还有一种方法允许节点产生一个随机的接口标识,可以用作地址的低64比特部分。增加随机地址生成方式是为了保护隐私。
自动配置启用即插即用,这使设备连接到网络而不用任何配置,也不需要任何服务器(如DHCP服务器),这是一个关键的特性,使得在Internet上大规模布设新设备成为可能,例如蜂窝电话、无线设备、本地应用和本地网络。
第3章详细介绍无状态自动配置机制。
1.7.7 重新编址
IPv6提供的大地址空间让组织机构得到IPv6前缀,从而根据其运营需要提供IPv6地址。IPv6的一个主要目标是通过强制执行严格聚合保持Internet全球IPv6路由选择表尽可能最小。但是,当一个组织改变它的上游IPv6提供商时,它必须对它的网络重新编址。
就IPv4来说,重新编址是一个费时且容易出错的任务。组织机构先得到一个新的IPv4空间,然后它必须改变网络上所有的路由器、服务器、主机和其他设备的IPv4地址。路由选择协议和DNS服务器必须同时用新的IPv4地址更新。因此,在IPv4中重新编址会带来停机时间和停止网络服务。
在IPv6中,把重新编址过程设计得很稳定,因为单播IPv6提供商之间的转换对最终用户完全透明。在转换期间具有多个提供商和无状态自动配置机制的结合使得通过发送新的单播IPv6前缀到网络可以很容易地为主机重新编址。但是,像在IPv4中一样,路由器的重新编址为网络运营商带来了负担。可以为公告的前缀赋予一个生存期的值,在当前的前缀到期后允许节点使用最新的前缀。这样,主机和服务器自动选用新的全球单播IPv6前缀,使用新的地址。图 1-11 显示了在同一本地链路上的IPv6路由器发送网络类型信息,如一个新的IPv6前缀和一个新的默认IPv6路由。在本地链路上的主机使用这些新值来自动配置它们的新IPv6地址。
注:在 IPv6 中,路由器不能用自动配置机制配置它的网络接口。路由器接口上的 IPv6地址必须手工配置。而且,路由器接口在本地链路上被主机和服务器看到的是另外一种IPv6地址,称为本地链路地址。这保证路由器能够被访问,甚至在网络重新编址期间。显然,分配给路由器每一个网络接口的单播IPv6地址都会在重新编址期间改变。本地链路地址在第2章中给出。
在转换发生的那一刻,重新编址过程不能防止主机和服务器丢失它们的当前TCP和UDP会话,这只能用像移动IP这样的协议才能解决。
第3章讲述了IPv6在网络重新编址之后的机制。
1.7.8 多播使用
在IPv4中,众所周知,使用第2层MAC地址ff:ff:ff:ff:ff:ff的ARP(地址解析协议)广播对网络而言效率低下。每次一个广播请求送往本地链路,即使只有一两个节点与此有关,也会导致在此链路上的每台计算机至少产生一个中断。计算机的网络接口侦听广播数据包,然后数据包被送到操作系统,最后到达IP协议栈,在那里数据包被使用或者简单地忽略。在某些情况下,广播能完全中止整个网络,这叫做广播风暴。图1-12显示了IPv4中从一台主机发送到本地链路上每一台主机的广播数据包。这个广播数据包到达本地链路上所有节点的IPv4协议栈。
IPv6中不使用ARP广播,用多播替代。如图1-13所示,多播组1定义了一组网络接口。计算机A和计算机D的网络接口是多播组1的成员。当用这个组的多播地址发送一个数据包到多播组1时,数据包只被这个组的成员计算机A和D处理。在这个本地链路上的其他所有计算机和路由器都不处理发送到多播组1的数据包,因为它们不是组成员。
通过对不同的功能使用不同的和特殊的多播组,把广播请求发布到尽可能少的计算机,从而多播有效地利用了网络。这减少了本地链路上所有计算机CPU时钟周期的耗费,防止了大多数问题,如IPv4中的广播风暴。
在 IPv6 中多播被用来替代 ARP 广播流量,意味着并不因此而需要在本地链路子网间的路由器基础设施上使用多播路由。然而,与在IPv4中一样,为了全球使用而启用路由器上的IPv6多播路由是可能的。
因为IPv6中的多播地址范围远比 IPv4 中的大,多播组的分配不应受到限制。例如,在整个IPv6编址空间中定义了一个范围,可用于任何类型的多播。
第3章详细解释了使用多播代替ARP。
1.7.9 高效包头
如图1-14所示,新IPv6包头比IPv4数据包头简单。IPv4包头的6个字段在IPv6包头中被去掉了。IPv4包头算上选项和填充字段有14个字段,IPv6包头有8个字段。基本的IPv6包头大小是40个8比特字节,IPv4包头不带选项和填充字段是20个8比特字节。基本的IPv6包头长度固定,IPv4包头在使用选项字段时可以是变长的。
较少的IPv6包头字段和固定的长度意味着路由器转发IPv6数据包耗费较少的CPU周期。这直接有益于网络性能。
所有的IPv6包头字段都是64比特对齐的,能够直接对内存存取。这些增强启用了基于硬件的处理,为下一代高速管道提供了转发速度的可扩展性。然而,这还有待观察,由于以下原因:
128 比特地址比当前处理器的原子字1长还要长,所以为得到整个128比特地址需要多次查找。
在转发数据包前进行128比特的最长前缀匹配与32比特相比对性能有明显的影响。
在第4层(TCP/UDP)进行的数据包过滤导致解析可选的IPv6包头(如果有的话),对路由器来说意味着额外的CPU周期。
而且,处理数据包的硬件还没有为了满足IPv6对性能的期望而进行优化。然而,从长远的观点来看,IPv6包头字段64比特对齐应该提高路由选择效率。
在IPv4中,一个 16比特字段用来验证包头的完整性。数据包的发送者产生校验和,然后转发数据包到网络。因为每次路由器转发数据包时 IP 包头中一些其他字段发生改变,如TTL(生存期)值在每一跳都减少,所以产生一个新的校验和填到IP包头中。
对IPv6包头的另一个改进与校验和字段有关。这个包头字段被简单去掉,以提高路由选择效率。实际上,路径上的所有路由器在转发处理期间不必重新计算校验和。错误检测由数据链路层技术(第2层)和传输层(第4层)端到端连接的校验和来处理。在第2层和第4层所做的校验和足够强壮,从而不必考虑对第3层校验和的需要。对IPv6而言,TCP和UDP传输协议都需要校验和。IPv4中UDP校验和是可选的。
在IPv6中分段的处理是不同的。IPv4中的分段字段要么被完全去掉,要么先移除然后被扩展包头取代。第2章详细介绍处理分段的新方法,解释对包头的影响。
1.7.10 流标签
IPv6在包头中包含一个新的流标签字段,如图1-15所示。源节点可以使用这个特殊字段来请求对一特定的数据包序列进行特殊处理。流标签字段主要在端点站处理,而不是路由器。这对于流式应用,如视频会议和基于IP的语音有用,这些应用需要实时数据传输。在路径上的路由器中,流标签能对要求QoS的应用进行基于每个流的处理。这比尽力而为的转发要好。
这个字段在IP层区分不同的流量而不需做其他的巧妙处理来识别流。用这个标签,路由器不必打开传送的内层数据包来识别流:它在IP数据包头部查找这个信息。当前IETF的标准没有详细说明怎样管理和处理这个标签。与DiffServ、IntServ、RSVP和MPLS的交互是可能的开发方法。
第2章详细讲述IPv6包头。
1.7.11 扩展包头
在IPv4数据包中,选项字段(RFC 791)可能出现在包头的尾部。这个选项字段如果有的话,就是变长的,这取决于端点主机间使用的可选特征。路径上所有的路由器必须计算数据包中这个可变字段的长度,即使选项字段只被端节点使用。图1-16演示了IPv4包头中的选项字段。
IPv6使用新的方式管理包头中的可选信息。IPv6使用扩展包头,而不是在包头结尾使用选项字段。扩展包头由包头中称为下一个包头的字段连接而形成一个包头菊花链,如图1-17所示。
在使用的每一个IPv6扩展包头中都有下一个包头字段。为IPv6应用的不同需要定义了许多类型的扩展包头。这个方法提供了较好的选项处理效率,因为它确保沿路的路由器和节点只有在包头目标是它们时才进行计算。
移动IPv6是一个协议的例子,当移动节点远离家乡网络时,协议使用不同的扩展包头来进行处理。与IPv4网络中使用的移动IP相比,扩展包头提供移动IPv6协议的重要改进。
第2章详细讲述扩展包头。
1.7.12 移动性
对于公司、组织和雇员,移动性是一个非常需要和重要的特性,因为他们想从网络以外,甚至在汽车里访问万维网、电子邮件、他们的银行账户和家庭。新的第2层无线技术,如802.11b和3G(第三代)能帮助他们满足这些需求。802.11b设备便宜,能够以令人兴奋的带宽在多个商业场所,如办公室、机场和酒店提供网络连接。数十亿的3G蜂窝设备具有IP协议栈,而且,蜂窝网络运营商基于IPv6构建IP核心骨干网,因此IPv6的移动性是必需的。图1-18说明了IPv6网络提供的移动性。
在IP层,移动IP协议假定节点的IP地址唯一标识节点与网络的连接点。在改变数据链路层的接入点并且断开当前连接而不改变IP地址后,一个移动节点必须能够与其他节点通信。移动IP协议使节点从一个 IP 网络移动到另一个 IP 网络。无线/蜂窝行业使用移动IP协议保证无线数据的IP移动性。
IPv4和IPv6都有移动IP。然而,对于IPv6,移动性是协议内置的而不像IPv4那样是一个附加的新功能。这意味着任何IPv6节点在需要时都能够使用移动IP。移动IPv6使用下列IPv6扩展包头:
路由选择扩展包头,为注册使用
目的地址扩展包头,用于在移动节点和通信节点间传输数据报
这两个扩展包头都为IP协议提供了较好的通信性能和功能增强。
1.7.13 安全性
IPSec协议是IETF为IP网络安全制定的标准,能提供如下几个安全功能:
访问控制限制访问范围,只有那些授权的人可以访问;
认证确保发送数据的人是他声称的那个人;
保密性确保通过公共网络传输的任何数据(包括密码)都被加密,使任何人都很难看到交换的数据;
完整性确保数据在传输过程中没有被修改;
重放保护防止会话被记录,而后被恶意的用户重放。
任何IP协议都能在IPSec上使用。IPSec用来在IP之上建立加密的隧道(虚拟专用网)或简单地加密计算机间交换的数据。在IPSec背后有两个协议:
认证包头(AH)
封装安全有效载荷(ESP)
IPv4和IPv6都有AH和ESP,本质上都相同。
注:正如在RFC 2460中描述的,IPv6的一个完整实现包括AH和ESP扩展包头的实现。在IPv4中,AH和ESP被认为是在协议设计完后新增加的功能。
在IPv6的每种实现中都包含IPSec,使得IPv6 Internet具有潜在的端到端的安全性,因为IPSec在所有节点上都是可用的,如图1-19所示。
但是,IPSec的弊端之一是要求每个通信节点都有密钥,这意味着全球密钥的部署、分发和管理。这个主题超出了本书的范围。如果你想得到更多的关于建立一个安全PKI基础设施推荐的策略和实践信息,可以阅读 RFC 2527,“Internet X.509 公开密钥基础设施证书策略和认证实践框架”(Internet X.509 Public Key Infrastructure Certificate Policy and Certification Practices Framework)。
1.7.14 过渡
从IPv4网络所组成的Internet到IPv6的过渡是新协议的另一个基础部分。标准化组织、业界和Internet团体不想重复如千年虫(Y2K bug)一样的现象,在一个特定的时间(1999 年 12月31日)有一个主要的转换发生。
IPv6取代IPv4的最终目标是众所周知的。但是,没有一个从IPv4 Internet转换到IPv6的最后期限。IETF建立了一个特别工作组,称作从IPv4到IPv6的下一代转换(NGtrans),专门从事这个过渡工作。NGtrans与IPv6工作组(以前称为IPng)密切合作,建立过渡策略和机制。第5章集中讲述这些策略和机制。
注:一个经常被问到的问题是IPv6什么时候会来?IPv6不像千年虫(Y2K)问题,世界上所有的计算机在相同的时间被升级而平稳地进入新千年。没有人知道这个问题的答案。但是整合和共存机制在被实施,使得IPv4平稳地向IPv6迁移。
向IPv6的过渡已经设计好了,从而不要求所有的IPv4节点同时升级。IPv4和IPv6能在相同的链路层技术上同时使用:需要从IPv4到IPv6的平稳的网络过渡。在对IPv6有足够的需求或整体战略实施升级基础结构到IPv6之前,过渡和共存机制允许组织在当前的IPv4基础设施上提供IPv6连接性给他们早期的应用人员,如客户、研究和开发人员以及雇员。
现有许多过渡和共存机制能够应用于不同的场景:
IPv4网络上的双协议栈节点;
IPv4网络上的IPv6单协议网络节点孤岛;
能与IPv6网络通信的IPv4单协议网络节点;
能与IPv4网络通信的IPv6单协议网络节点。
在图1-20中,一个位于IPv4网络上的IPv6和IPv4双协议栈主机能够建立到边界路由器的IPv4之上的IPv6隧道。这个路由器可以转发IPv6数据包到纯IPv6网络。这个机制在IPv4网络中提供IPv6连通性,即使没有足够的需求把整个网络基础设施转换到IPv6。
注:双协议栈节点是一台同时运行IPv4和IPv6协议栈的计算机。节点既可以使用IPv6地址,也可以使用IPv4地址到达目的地,这取决于域名解析过程(DNS)赋予的IP地址。
IPv6单协议网络的节点孤岛可以用具有6to4机制的路由器通过IPv4网络连接起来,如图1-21所示。
IETF还提供和标准化了许多其他的过渡机制。第5章讨论过渡机制,其中几种用Cisco IOS软件技术实现。
1译者注:指一次可以存取的字