IPv6----让世界上每粒沙子都有IP
本文在介绍I P v 6寻址之前,首先介绍一些与使用I P寻址来标识和定位I P网络上的节点相关的问题。多年以来,I P地址被认为是可以在I P网络上最终唯一并持久的节点标识符。近年中,尤其是随着下一代I P技术的发展,对于I P地址的这种观点正在改变。如果我们仍像过去2 0年中所使用的方法来分配网络和节点地址,那将是一种不必要和低效的办法。
在介绍了RFC2373(IPv6寻址体系结构)中描述的I P寻址体系结构之后,将首先介绍一些与I P寻址相关的议题。然后将介绍几种可能的地址分配方法。本文将I P v 6寻址分成了以下几个部分:1 2 8位地址的结构和命名及I P v 6地址的不同类型(单播、组播和泛播)。
I P v 6的设计者们可以只是简单地在I P v 4寻址体系结构中扩大地址空间。但是这样一来将使我们丧失一个改进I P的巨大机会。对于整个寻址体系结构的修改所带来的巨大机会,不仅体现在提高地址分配的效率上,同时也体现在提高I P选路性能上。本文将介绍这些改进。
地址
I P v 4与I P v 6地址之间最明显的差别在于长度:I P v 4地址长度为3 2位,而I P v 6地址长度为1 2 8位。RFC2373 中不仅解释了这些地址的表现方式,同时还介绍了不同的地址类型及其结构。I P v 4地址可以被分为2至3个不同部分(网络标识符、节点标识符,有时还有子网标识符), I P v 6地址中拥有更大的地址空间,可以支持更多的字段。
I P v 6地址有三类、单播、组播和泛播地址。下一节将对此作更详细的介绍。单播和组播地址与I P v 4的地址非常类似;但I P v 6中不再支持I P v 4中的广播地址,而增加了一个泛播地址。本节介绍的是I P v 6的寻址模型、地址类型、地址表达方式以及地址中的特例。
地址表达方式
I P v 4地址一般以4部分间点分的方法来表示,即4个数字用点分隔。例如,下面是一些合法的I P v 4地址,都用十进制整数表示:1 0 . 5 . 3 . 1 1 2 7 . 0 . 0 . 1 2 0 1 . 1 9 9 . 2 4 4 . 1 0 1 I P v 4地址也时常以一组4个2位的十六进制整数或4个8位的二进制整数表示,但后一种情况较少见。I P v 6地址长度4倍于I P v 4地址,表达起来的复杂程度也是I P v 4地址的4倍。I P v 6地址的基本表达方式是X : X : X : X : X : X : X : X,其中X是一个4位十六进制整数( 1 6位)。每一个数字包含4位,每个整数包含4个数字,每个地址包括8个整数,共计1 2 8位( 4×4×8 = 1 2 8 )。例如,下面是一些合法的I P v 6地址:
C D C D : 9 1 0 A : 2 2 2 2 : 5 4 9 8 : 8 4 7 5 : 1111 : 3 9 0 0 : 2 0 2 0 1 0 3 0 : 0 : 0 : 0 : C 9 B 4 : F F 1 2 : 4 8 A A : 1 A 2 B 2 0 0 0 : 0 : 0 : 0 : 0 : 0 : 0 : 1 请注意这些整数是十六进制整数,其中A到F表示的是1 0到1 5。地址中的每个整数都必须表示出来,但起始的0可以不必表示。这是一种比较标准的I P v 6地址表达方式,此外还有另外两种更加清楚和易于使用的方式。某些I P v 6地址中可能包含一长串的0 (就像上面的第二和第三个例子一样)。当出现这种情况时,标准中允许用“空隙”来表示这一长串的0。换句话说,地址2 0 0 0 : 0 : 0 : 0 : 0 : 0 : 0 : 1 可以被表示为:2 0 0 0 : : 1 这两个冒号表示该地址可以扩展到一个完整的1 2 8位地址。在这种方法中,只有当1 6位组全部为0时才会被两个冒号取代,且两个冒号在地址中只能出现一次。
在I P v 4和I P v 6的混合环境中可能有第三种方法。I P v 6地址中的最低3 2位可以用于表示I P v 4 地址,该地址可以按照一种混合方式表达,即X : X : X : X : X : X : d . d . d . d,其中X表示一个1 6位整数,而d表示一个8位十进制整数。例如,地址
0 : 0 : 0 : 0 : 0 : 0 : 1 0 . 0 . 0 . 1 就是一个合法的I P v 4地址。把两种可能的表达方式组合在一起,该地址也可以表示为:: : 1 0 . 0 . 0 . 1 由于I P v 6地址被分成两个部分—子网前缀和接口标识符,因此人们期待一个I P节点地址可以按照类似C I D R地址的方式被表示为一个携带额外数值的地址,其中指出了地址中有多少位是掩码。即,I P v 6节点地址中指出了前缀长度,该长度与I P v 6地址间以斜杠区分,例如:1 0 3 0 : 0 : 0 : 0 : C 9 B 4 : F F 1 2 : 4 8 A A : 1 A 2 B / 6 0 这个地址中用于选路的前缀长度为6 0位。
寻址模型
I P v 6寻址模型与I P v 4很相似。每个单播地址标识一个单独的网络接口。I P地址被指定给网络接口而不是节点,因此一个拥有多个网络接口的节点可以具备多个I P v 6地址,其中任何一个I P v 6地址都可以代表该节点。尽管一个网络接口能与多个单播地址相关联,但一个单播地址只能与一个网络接口相关联。每个网络接口必须至少具备一个单播地址。
这里有一个非常重要的声明和一个非常重要的例外。这个声明与点到点链路的使用有关。在I P v 4 中,所有的网络接口,其中包括连接一个节点与路由器的点到点链路(用许多拨号I n t e r n e t连接中),都需要一个专用的I P地址。随着许多机构开始使用点到点链路来连接其分支机构,每条链路均需要其自己的子网,这样一来消耗了许多地址空间。在I P v 6中,如果点到点链路的任何一个端点都不需要从非邻居节点接受和发送数据的话,它们就可以不需要特殊的地址。即,如果两个节点主要是传递业务流,则它们并不需要具备I P v 6地址。
为每个网络接口分配一个全球唯一的单播地址的要求阻碍了I P v 4地址的扩展。一个提供通用服务的服务器在高需求量的情况下可能会崩溃。因此,I P v 6地址模型中又提出了一个重要的例外:如果硬件有能力在多个网络接口上正确地共享其网络负载的话,那么多个网络接口可以共享一个I P v 6地址。这使得从服务器扩展至负载分担的服务器群成为可能,而不再需要在服务器的需求量上升时必须进行硬件升级。
地址空间
RFC2373中包含了一个I P v 6地址空间“图”,其中显示了地址空间是如何进行分配的,地址分配的不同类型,前缀(地址分配中前面的位值)和作为整个地址空间的一部分的地址分配的长度。下图显示了I P v 6地址空间的分配。
在I P v 6地址分配中需要注意几点。首先,在RFC1884 中,地址空间的四分之一被用于两类不同地址:八分之一是基于供应商的单播地址,而另八分之一是基于地理位置的单播地址。人们希望地址的分配可以根据网络服务供应商或者用户所在网络的物理位置进行。基于供应商的集聚,正如它最初的名字一样,要求网络从提供I n t e r n e t接入的供应商那里得到可集聚的I P地址。但是,这种方法对于具有距离较远的分支机构的大型机构来说并不是一种完美的解决办法,因为其中许多分支机构可能会使用不同的供应商。基于供应商的集聚将为这些大单位带来更多的I P地址管理问题。
Steve Deering提议把基于地理位置的地址分配方法作为S I P ( S I P P的前身,在第4章中有介绍)中的一种办法。这些地址与基于供应商的地址不同,以一种非常类似I P v 4的方法分配地址。这些地址与地理位置有关,且供应商将不得不保留额外的路由器来支持I P v 6地址空间中可集聚部分外的这些网络。
I S P实际上并不赞同这个解决方案,因为管理基于地理位置的寻址将大大增加复杂性(和花费)。另一方面,难以对基于供应商的地址进行配置和重配置也引起许多对基于供应商的分配方案的反对。如果没有广泛使用基于I P v 4自动配置方案(如D H C P ),那么所有机构的网络将会存在巨大的管理问题。尽管I P v 6对于自动配置功能有着更好的支持,但并没有将地理位置的分配方法最终融合进去。
注意,绝大部分的地址空间并没有分配,地址分配的第一部分被保留了下来。
地址类型
如上所述,I P地址有三种类型:单播、组播和任意点播。广播地址已不再有效。R F C 2 3 7 3中定义了三种I P v 6地址类型:
• 单播:一个单接口的标识符。送往一个单播地址的包将被传送至该地址标识的接口上。
广播路在何方
广播地址从一开始就为I P v 4网络带来了问题。广播被用来携带去向多个节点的信息或被那些不知信息来自何方的节点用来发出请求。但是,广播可能将为网络性能设置障碍。同一网络链路上的大量广播意味着该链路上的所有每个节点都必须处理所有广播,其中绝大部分节点最终都将忽略该广播,因为该信息与自己无关。把广播在子网之间进行转发将导致更多的问题,因为路由器上将充斥着这种业务流。
I P v 6对此的解决办法是使用一个“所有节点”组播地址来替代那些必须使用广播的情况,同时,对那些原来使用了广播地址的场合,则使用一些更加有限的组播地址。通过这种方法,对于原来由广播携带的业务流感兴趣的节点可以加入一个组播地址,而其他对该信息不感兴趣的节点则可以忽略发往该地址的包。广播从来不能解决信息穿越I n t e r n e t的问题,如选路信息,而组播则提供了一个更加可行的方法。
单播
单播地址标识了一个单独的I P v 6接口。一个节点可以具有多个I P v 6网络接口。每个接口必须具有一个与之相关的单播地址。单播地址可被认为包含了一段信息,这段信息被包含在1 2 8位字段中:该地址可以完整地定义一个特定的接口。此外,地址中数据可以被解释为多个小段的信息。但无论如何,当所有的信息被放在一起后,将构成标识一个节点接口的1 2 8位地址。
I P v 6地址本身可以为节点提供关于其结构的或多或少的信息,这主要根据是由谁来观察这个地址以及观察什么。例如,节点可能只需简单地了解整个1 2 8位地址是一个全球唯一的标识符,而无须了解节点在网络中是否存在。另一方面,路由器可以通过该地址来决定,地址中的一部分标识了一个特定网络或子网上的一个唯一节点。