企业“IPv6+”网络规划设计与演进
上QQ阅读APP看书,第一时间看更新

1.2.1 IPv6地址概述

IPv6拥有海量地址空间,号称“可以为地球上的每一粒沙子提供一个IP地址”,主要得益于其128 bit的地址位数,最多可以提供2128个地址。除地址长度外,与IPv4地址相比,IPv6地址在地址结构、地址表示方式、地址类型方面也做出了优化,其最早在RFC 4291中完成定义,后续被多个RFC继承和更新。

1.IPv6地址表示

IPv6地址由8个16 bit的段表示,段与段之间通过冒号“:”隔离。为精简IPv6地址的表达方法,每个段常表示为4个十六进制数字的形式,并且连续两个或多个均为0的段可以用双冒号“::”代替(如2001:1234:0100:1111:0000:0000:0000:0001可简写为2001:1234:100:1111::1),但拖尾的0不能省略。需要注意的是,RFC 4291指出,在一个IPv6地址中,双冒号只能出现一次。因此,如果存在多个不连续的全0段,则压缩最长段(如2001:0:0:0:1:0:0:1简写为2001::1:0:0:1)。如果连续全0段长度相等,则压缩第一个段(如2001:1234:0:0:1:0:0:1简写为2001:1234::1:0:0:1)。

通常默认IPv6地址由固定前缀、子网ID和接口ID组成,如图1-3所示。

图1-3 IPv6地址表示格式

2.IPv6地址结构

IPv6全球单播地址包括全球路由前缀、子网ID和接口ID。其中全球路由前缀和子网ID组成网络前缀,相当于IPv4地址中的网络位;接口ID相当于IPv4地址中的主机位。同时RFC 4291标准建议IPv6地址可将前64 bit作为网络前缀(包括全球路由前缀和子网ID),后64 bit作为接口ID,如图1-4所示。当然,也可基于不同场景下的具体要求对IPv6地址进行前缀长度分配。如在网络节点互联地址中,考虑IPv4最佳实践以及安全性问题,P2P接口互联地址通常采用127 bit地址前缀,网络设备Loopback地址通常采用128 bit前缀。

图1-4 IPv6地址结构

3.IPv6地址分类

IPv6地址可分为组播地址、单播地址和任播地址,如图1-5所示。与IPv4地址相比,IPv6地址以更丰富的组播地址代替广播地址,同时增加了任播地址类型。

图1-5 IPv6地址分类

IPv6各类地址的定义及应用场景如下。

组播地址:用于标识一组接口,通常属于不同节点,目的地址为组播地址的报文会被转发到该地址标识的所有接口。

•分配的组播地址:前缀为FF00::/8,类似IPv4组播地址224.0.0.0/3,用来标识一组接口且通常属于不同节点。源节点发送单个数据包,属于该组播组的所有接口都能收到。常见的组播地址应用包括视频直播(IPTV)和OSPF(Open Shortest Path First,开放最短通路优先)等协议报文。

•被请求节点组播地址(Solicited-Node Multicast Address):基于节点的单播或任播地址生成。当一个节点具有单播或任播地址时,就会生成一个与之相对应的被请求节点组播地址,并且加入这个组播组。被请求节点组播地址由固定前缀FF02::1:FF/104和对应IPv6地址的最后24 bit组成,如图1-6所示,其有效范围为链路本地(Link-Local),即通常所说的单播局域范围。被请求节点组播地址主要用于NDP中的地址解析和重复地址检测。

图1-6 被请求节点组播地址表示

单播地址:用于标识单个接口。目的地址为单播地址的报文会被转发到该地址标识的接口。目前定义的IPv6单播地址主要包括全球单播地址(Global Unicast Address,GUA)、唯一本地地址(Unique Local Address,ULA)、链路本地地址(Link-Local Address,LLA)和IPv6环回地址等。不同单播地址具有特定的使用范围。

•全球单播地址:前缀为2000::/3,在RFC 3587中定义。全球单播地址是全球唯一的、可在Internet中发布的路由地址,类似IPv4的公网地址。目前,各个组织从互联网信息中心或运营商申请到的IPv6地址均为全球单播地址,这也是IPv6地址规划和分配方案中的重点。

•唯一本地地址:前缀为FC00::/7,在RFC 4193中定义。它类似于IPv4的私网地址,仅用于企业内部封闭的网络通信。其中第8比特设置为0(即FC00::/8)时为预留地址,当前暂未定义;第8比特设置为1(即FD00::/8)时用于本地地址分配,并建议后面携带40 bit的全局ID(Global ID)和16 bit的子网ID(Subnet ID)。

•链路本地地址:前缀为FE80::/10,仅限于本地链路范围内使用。节点的链路本地地址可以自动生成,在相邻节点之间使用,如ND(Neighbor Discovery,邻居发现)、无状态地址配置等应用,实现即插即用功能。链路本地地址自动生成的一般原则是LLA=FE80::/10前缀+EUI-64标识符。

•IPv6环回地址:地址为::1/128,类似IPv4地址127.0.0.1。该地址不会被分配给任何接口,它的作用与IPv4中的127.0.0.1相同,负责将IPv6报文发送给自己。

•IPv6未指定地址:地址为::/128,不能被分配给任何节点,也不能作为目的地址。在主机初始化且没有取得自己的地址时,未指定地址可以用在IPv6报文的源地址字段,例如进行重复地址探测时,NS(Neighbor Solicitation,邻居请求)报文的源地址就是未指定地址。

任播地址:用于标识一组接口,通常属于不同节点,目的地址为任播地址的报文会被转发到该地址标识的“最近”的一个接口。任播地址从单播地址空间中进行分配,并使用单播地址的格式。因此,标准中定义接口ID为全0的IPv6地址为子网路由的任播地址(Subnet Router Anycast Address,SRAA),从而区分任播地址和单播地址。任播地址只能作为目的地址,不能作为源地址使用。