- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
IPv6单播、单播地址格式、组播、泛播
单播:一个单接口的标识符。
送往一个单播地址的包将被传送至该地址标识的接口上。
泛播:一组接口(一般属于不同节点)的标识符。送往一个泛播地址的包将被传送至该地址标识的接口之一(根据选路协议对于距离的计算方法选择“最近”的一个)。
组播:一组接口(一般属于不同节点)的标识符。送往一个组播地址的包将被传送至有该地址标识的所有接口上。
这三种地址类型将在下面进行更详细的论述。
6.2.1广播路在何方
广播地址从一开始就为IPv4网络带来了问题。广播被用来携带去向多个节点的信息或被那些不知信息来自何方的节点用来发出请求。但是,广播可能将为网络性能设置障碍。同一网络链路上的大量广播意味着该链路上的所有每个节点都必须处理所有广播,其中绝大部分节点最终都将忽略该广播,因为该信息与自己无关。把广播在子网之间进行转发将导致更多的问题,因为路由器上将充斥着这种业务流。
IPv6对此的解决办法是使用一个“所有节点”组播地址来替代那些必须使用广播的情况,同时,对那些原来使用了广播地址的场合,则使用一些更加有限的组播地址。通过这种方法,对于原来由广播携带的业务流感兴趣的节点可以加入一个组播地址,而其他对该信息不感兴趣的节点则可以忽略发往该地址的包。广播从来不能解决信息穿越Internet的问题,如选路信息,而组播则提供了一个更加可行的方法。
6.2.2单播
单播地址标识了一个单独的IPv6接口。一个节点可以具有多个IPv6网络接口。每个接口必须具有一个与之相关的单播地址。单播地址可被认为包含了一段信息,这段信息被包含在128位字段中:该地址可以完整地定义一个特定的接口。此外,地址中数据可以被解释为多个小段的信息。但无论如何,当所有的信息被放在一起后,将构成标识一个节点接口的128位地址。
IPv6地址本身可以为节点提供关于其结构的或多或少的信息,这主要根据是由谁来观察这个地址以及观察什么。例如,节点可能只需简单地了解整个128位地址是一个全球唯一的标识符,而无须了解节点在网络中是否存在。另一方面,路由器可以通过该地址来决定,地址中的一部分标识了一个特定网络或子网上的一个唯一节点。
例如,一个IPv6单播地址可看成是一个两字段实体,其中一个字段用来标识网络,而另一个字段则用来标识该网络上节点的接口。在后面讨论特定的单播地址类型时还会看到,网络标识符可被划分为几部分,分别标识不同的网络部分。IPv6单播地址功能与IPv4地址一样受制于CIDR,即,在一个特定边界上将地址分为两部分。地址的高位部分包含选路用的前缀,而地址的低位部分包含网络接口标识符。
最简单的方法是把IPv6地址作为不加区分的一块128位的数据,而从格式化的观点来看,可把它分为两段,即接口标识符和子网前缀。RFC2373中表示的格式见图6-2。接口标识符的长度取决于子网前缀的长度。两者的长度是可以变化的,这取决于谁对它进行解释。对于非常靠近寻址的节点接口(远离骨干网)的路由器可用相对较少的位数来标识接口。而离骨干网近的路由器,只需用少量地址位来指定子网前缀,这样,地址的大部分将用来标识接口标识符。下面要讨论的是可集聚的单播地址,它的结构更为复杂。
可集聚全球地址。
未指定地址或全0地址。
回返地址。
嵌有IPv4地址的IPv6地址。
基于供应商和基于地理位置的供应商地址。
OSI网络服务访问点(NSAP)地址。
网络互联包交换(IPX)地址。
6.2.3单播地址格式
RFC1884给出了几种通用的不同类型的IPv6地址。给NSAP和IPX分配的地址、基于OSI网络和NetWare地址都无缝地包含在IPv6体系结构中。分别占八分之一的地址空间的基于供应商和基于地理位置分配的地址组成了一批可分配的地址。链路本地和站点本地地址提供了10型网络地址转换的网络统一不变的版本。
然而,RFC2373改变和简化了IPv6的地址分配。其中之一是取消了基于地理位置的地址分配,基于供应商的单播地址改变成可集聚全球单播地址。从名字的改变上就可看出,对于基于供应商的地址,允许前面定义的集聚以及基于交换局的新型集聚。这也反映了一种更平衡的地址分类。NSAP和IPX地址空间仍然保留着,且八分之一的地址分配给可集聚地址。另外,除了组播地址和某类保留地址外,IPv6地址空间的其余部分都是未分配的地址,为将来的发展预留了足够的空间。
1.接口标识符
在IPv6寻址体系结构中,任何IPv6单播地址都需要一个接口标识符。接口标识符非常像48位的介质访问控制(MAC)地址,MAC地址由硬件编码在网络接口卡中,由厂商烧入网卡中,而且地址具有全球唯一性,不会有两个网卡具有相同的MAC地址。这些地址能用来唯一标识网络链路层上的接口。
IPv6主机地址的接口标识符基于IEEEEUI-64格式。该格式基于已存在的MAC地址来创建64位接口标识符,这样的标识符在本地和全球范围是唯一的。RFC 2373包括的附录解释了如何创建接口标识符。有关IEEE EUI-64标准更多的信息,请访问IEEE标准网点:http://stand-ards.ieee.org/db/oui/tutorials/EUI64.html。
这些64位接口标识符能在全球范围内逐个编址,并唯一地标识每个网络接口。这意味着理论上可多达264个不同的物理接口,大约有1.8×1019个不同的地址,而且这也只用了IPv6地址空间的一半。这至少在可预见的未来是足够的。
2.可集聚全球单播地址
本章已经提到了基于供应商的集聚,它的概念还会在第8章中再次提到。可集聚全球单播地址是另一种类型的集聚,它是独立于ISP的。基于供应商的可集聚地址必须随着供应商的改变而改变,而基于交换局的地址则由IPv6交换实体直接定位。由交换局提供地址块,而用户和供应商为网络接入签订合同。这样的网络接入或者是直接由供应商提供,或者通过交换局间接提供,但选路通过交换局。这就使得用户改换供应商时,无需重新编址。同时也允许用户使用多个ISP来处理单块网络地址。
可集聚全球单播地址包括地址格式的起始3位为001的所有地址(此格式可在将来用于当前尚未分配的其他单播前缀)。地址格式化为图6- 3所示的字段。
FP字段:IPv6地址中的格式前缀,3位长,用来标识该地址在IPv6地址空间中属于哪类地址。目前该字段为“0 0 1”,标识这是可集聚全球单播地址。
TLAID字段:顶级集聚标识符,包含最高级地址选路信息。这指的是网络互连中最大的选路信息。目前,该字段为13位,可得到最大819 2个不同的顶级路由。
RES字段:该字段为8位,保留为将来用。最终可能会用于扩展顶级或下一级集聚标识符字段。
NLAID字段:下一级集聚标识符,24位长。该标识符被一些机构用于控制顶级集聚以安排地址空间。换句话说,这些机构(可能包括大型ISP和其他提供公网接入的机构)能按照他们自己的寻址分级结构来将此2 4位字段切开用。这样,一个实体可以用2位分割成4个实体内部的顶级路由,其余的2 2位地址空间分配给其他实体(如规模较小的本地ISP )。这些实体如果得到足够的地址空间,可将分配给它们的空间用同样的方法再子分。
SLAID字段:站点级集聚标识符,被一些机构用来安排内部的网络结构。每个机构可以用与IPv4同样的方法来创建自己内部的分级网络结构。若16位字段全部用作平面地址空间,则最多可有65535个不同子网。如果用前8位作该组织内较高级的选路,那么允许2 5 5个高级子网,每个高级子网可有多达2 5 5个子子网。
接口标识符字段:64位长,包含IEEEEUI-64接口标识符的64位值。
现在很清楚,IPv6单播地址能包括大量的组合,甚至超过了将来RFC可能会指定的显式字段。不论是站点级集聚标识符,还是下一级集聚标识符都提供了大量空间,以便某些网络接入供应商和机构通过分级结构再子分这两个字段来增加附加的拓扑结构。
3.特殊地址和保留地址
在第一个1/256IPv6地址空间中,所有地址的第一个8位:00000000被保留。大部分空的地址空间用作特殊地址,这些特殊地址包括:
未指定地址:这是一个“全0”地址,当没有有效地址时,可采用该地址。例如当一个主机从网络第一次启动时,它尚未得到一个IPv6地址,就可以用这个地址,即当发出配置信息请求时,在IPv6包的源地址中填入该地址。该地址可表示为0:0: 0 : 0 : 0 : 0 : 0 : 0,如前所述,也可写成: :。
回返地址:在IPv4中,回返地址定义为127. 0 . 0 . 1。任何发送回返地址的包必须通过协议栈到网络接口,但不发送到网络链路上。网络接口本身必须接受这些包,就好像是从外面节点收到的一样,并传回给协议栈。回返功能用来测试软件和配置。IPv6回返地址除了最低位外,全为0,即回返地址可表示为0 : 0 : 0 : 0 : 0 : 0 : 0 : 1或: : 1。
嵌有IPv4地址的IPv6地址:有两类地址,一类允许IPv6节点访问不支持IPv6的IPv4节点,另一类允许IPv6路由器用隧道方式,在IPv4网络上传送IPv6包。这两类地址将在下面进行讨论。
4.嵌有IPv4地址的IPv6地址
不管人们是否愿意,逐渐向IPv6过渡已成定局。这意味着IPv4和IPv6节点必须找到共存的方法。当然两个不同IP版本最明显的一个差别是地址。最早由RFC1884定义,然后被带入RFC2373中,IPv6提供两类嵌有IPv4地址的特殊地址。这两类地址高阶80位均为0,低价3 2位包含IPv4地址。当中间的1 6位被置为F F F F时,则指示该地址为IPv4映象的IPv6地址。图6 - 4显示了这两类地址结构。
IPv4兼容地址被节点用于通过IPv4路由器以隧道方式传送IPv6包。这些节点既理解IPv4又理解IPv6。IPv4映象地址则被IPv6节点用于访问只支持IPv4的节点。这两类地址还将在第12章中讨论。
5.链路本地和站点本地地址
对于不愿意申请全球唯一性的IPv4网络地址的一些机构,通过采用网络10型地址对IPv4网络地址进行翻译,可以为这些机构提供一个选项。位于机构之外,但由机构使用的路由器不应该转发这些地址,但是不能阻止转发这些地址,也不能区分这些地址和其他有效的IPv4地址。可以相对容易地配置路由器,使其能转发这些地址。
为实现这一功能,IPv6从全球唯一的Internet空间中分出两个不同的地址段。图6 - 5,源自RFC 2373,显示了链路本地和站点本地地址的结构。
如果说链路本地地址只用于单个网络链路的话,那么站点本地地址则可用于站点。这意味着站点本地地址能用在内联网中传送数据,但不允许从站点直接选路到全球Inte r n e t。站点内的路由器只能在站点内转发包,而不能把包转发到站点外去。站点本地地址的1 0位前缀与链路本地地址的1 0位前缀略有区别,然后后面紧跟一连串“ 0”。站点本地地址的子网标识符为1 6位,而接口标识符同样是6 4位基于I E E E地址。
6.NSAP和IPX地址分配
IPng的目标之一是要统一整个网络世界,使IP、IPX和O S I网络间能进行互操作。为了支持这种互操作性, IPv6为O S I和IP X各保留了1 / 1 2 8地址空间。在本书写作时, IP X地址格式尚未精确定义; N S A P地址分配的描述见RFC 1888(OSI NSAP和IPv6 )。对O S I和N S A P的讨论已超出本书范围,感兴趣的读者可以在R F C中找到更完整的论述。
6.2.4组播
像广播地址一样,组播地址在类似老式的以太网的本地网中特别有用,在这种网中,所有节点都能检测出线路上传输的所有数据。每次传输开始时,每个节点检查其目的地址,如果与本节点接口地址一致,节点就拾取该传输的其余部分。这使节点拾取广播和组播传输相对比较简单。如果是广播,节点只要侦听,无须做任何决定,因此简单。对组播来说,稍复杂一些,节点要预订一个组播地址,当检测出目的地址为组播地址时,必须确定是否是节点预定的那个组播地址。
IP组播就更为复杂。一个重要的原因是IP并不是不加鉴别就将业务流放在Inte r n e t上转发至所有节点,这是IP成功之处。如果要这样做的话,它将迫使大多数甚至所有连接的网络屈服。这就是为什么路由器不应该转发广播包的原因。不过,对组播而言,只要路由器以其他节点的名义预订组播地址,就能有选择地转发它。
当节点预订组播地址时,它声明要成为组播的一个成员。于是任何本地路由器将以该节点的名义预订组播地址。同一网络上的其他节点要发送信息到该组播地址时,IP组播包将被封装到链路层组播数据传输单元中。在以太网上,封装的单元指向以太网组播地址;在其他用点对点电路传输的网络上(如ATM),通过其他某些机制将包发送给订户,通常通过某类服务器将包发送给每个订户。从本地网以外来的组播,用同样方法处理,只是传递给路由器,由路由器把包转发给预订节点。
1.组播地址格式
IPv6组播地址的格式不同于IPv6单播地址,采用图6-6所示的更为严格的格式。组播地址只能用作目的地址,没有数据报把组播地址用作源地址。
地址格式中的第1个字节为全“1”,标识其为组播地址。回顾图6-1,组播地址占了IPv6地址空间的整整1 / 2 5 6。组播地址格式中除第1字节外的其余部分,包括如下三个字段:
标志字段:由4个单个位标志组成。目前只指定了第4位,该位用来表示该地址是由Inte r n e t编号机构指定的熟知的组播地址,还是特定场合使用的临时组播地址。如果该标志位为“ 0”,表示该地址为熟知地址;如果该位为“ 1”,表示该地址为临时地址。其他3个标志位保留将来用。
范围字段:长4位,用来表示组播的范围。即,组播组是只包括同一本地网、同一站点、同一机构中的节点,还是包括IPv6全球地址空间中任何位置的节点。该4位的可能值为0~15,见图6 - 7。
组标识符字段:长112位,用于标识组播组。根据组播地址是临时的还是熟知的以及地址的范围,同一个组播标识符可以表示不同的组。永久组播地址用指定的赋予特殊含义的组标识符,组中的成员既依赖于组标识符,又依赖于范围。
2.组播组
IPv4已具备使用组播的应用,由于这种应用将同样的数据发送到多个节点,例如,电视会议或财经新闻及股票行情的发布,因而需要高带宽。用分配的组播地址和组播范围进行组合,可以表现出多种含义,并用在其他应用上。一些早期注册的组播地址,包括成组的路由器、DHCP服务、音频和视频服务以及网络游戏服务,详情请参阅RFC 2375(IPv6组播地址分配)。
考虑组播组标识符为“所有DHCP服务器”时可能发生的情况。用组标识符1 : 3来代表这个组。用2表示链路本地范围(本地网络链路),则IPv6组播地址为F F 0 2 : 0 : 0 : 0 : 0 : 0 : 1 : 3。该地址可解释为:链路本地范围内的所有D H C P服务器,即,所有D H C P服务器在同一网络上。如果将范围改为站点本地,那么该地址的意思变为“同一站点上的所有D H C P服务器”。
保留的组播组标识符可用于扩展范围字段。如果范围字段值为1,表示组标识符所指定的所有特定类型的服务器只包括本地节点上的服务器。如果范围字段值为2,除了包括本地节点上的服务器外,再加上连接到同一网络的其他所有服务器。例如,只有当一个网络时间协议(NTP)服务器运行在本地节点上时,用组标识符标识范围值为1的该服务器将具有一个激活的成员;如果范围值增至2,则包括连接到同一网络的运行一个NTP服务器的任何节点;如果范围值增至8,它将包括运行在整个机构的所有NTP服务器;如果范围值增至E (十进制为1 4 ),它将包括互联网上任何地点的所有NTP服务器。
另一方面,对于临时组播地址的组标识符,在它们自己的范围以外没有意义。全球范围的临时组播组和链路本地的组,即使它们可能有相同的组标识符,也没有任何关系。
6.2.5泛播
组播地址在某种意义上可以由多个节点共享。组播地址成员的所有节点均期待着接收发给该地址的所有包。一个连接5个不同的本地以太网网络的路由器,要向每个网络转发一个组播包的副本(假设每个网络上至少有一个预订了该组播地址)。泛播地址与组播地址类似,同样是多个节点共享一个泛播地址,不同的是,只有一个节点期待接收给泛播地址的数据报。
泛播对提供某些类型的服务特别有用,尤其是对于客户机和服务器之间不需要有特定关系的一些服务,例如域名服务器和时间服务器。名字服务器就是个名字服务器,不论远近都应该工作得一样好。同样,一个近的时间服务器,从准确性来说,更为可取。因此当一个主机为了获取信息,发出请求到泛播地址,响应的应该是与该泛播地址相关联的最近的服务
1.泛播地址的分配及其格式
泛播地址被分配在正常的IPv6单播地址空间以外。因为泛播地址在形式上与单播地址无法区分开,一个泛播地址的每个成员,必须显式地加以配置,以便识别泛播地址。
2.泛播选路
了解如何为一个单播包确定路由,必须从指定单个单播地址的一组主机中提取最低的公共选路命名符。即,它们必定有某些公共的网络地址号,并且其前缀定义了所有泛播节点存在的地区。比如一个ISP可能要求它的每一个用户机构提供一个时间服务器,这些时间服务器共享单个泛播地址。在这种情况下,定义泛播地区的前缀,被分配给ISP作再分发用。
发生在该地区中的选路是由共享泛播地址的主机的分发来定义的。在该地区中,一个泛播地址必定带有一个选路项:该选路项包括一些指针,指向共享该泛播地址的所有节点的网络接口。上述情况下,地区限定在有限范围内。泛播主机也可能分散在全球Internet上,如果是这种情况的话,那么泛播地址必须添加到遍及世界的所有路由表上。