IPv6 Subnetting
简介
本章节介绍了IPv6 Subnetting的定义、实现原理、如何划分IPv6 Subnetting以及规划建议。
IPv6地址一共128bit,因此地址空间是相当庞大的,可提供给PC、无线IP电话、机顶盒、视频设备、安保监控设备等等。
了解IPv6 Subnetting
RFC 2460中定义了6个IPv6扩展头。当超过一种扩展报头被用在同一个IPv6报文里时,报头必须按照下列顺序出现:IPv6基本报头、逐跳选项扩展报头、目的选项扩展报头、路由扩展报头、分段扩展报头、认证扩展报头、封装安全有效载荷扩展报头、目的选项扩展报头、上层协议数据报文。如图1 IPv6 基本包头及扩展包头所示。
相比于Ipv4,Ipv6头部有如下改进:
- 取消了IP的校验:第二层和第四层的校验已经足够健壮了,因此IPv6直接取消了IP的三层校验。
- 取消中间节点的分片功能:分片重组功能由源目端自己进行,通过PMTU机制来发现路径MTU。
- 定义定长的IPv6报头:有利于硬件的快速处理,如此一来中间节点可以避免处理而节省大量的资源。
- 安全选项的支持:IPv6提供了对IPSec的完美支持,如此上层协议可以省去许多安全选项。
- 增加流标签:提高QoS效率。
子网掩码:是一种用来指明一个IP地址的哪些位标识的是主机所在的子网,以及哪些位标识的是主机的位掩码。子网掩码不能单独存在,它必须结合IP地址一起使用。
子网掩码的作用:子网掩码是一个32位地址,是与IP地址结合使用的一种技术。它的主要作用是用于屏蔽IP地址的一部分以区别网络标识和主机标识,并说明该IP地址是在局域网上,还是在远程网上。
IPv6 Subnetting相关概念
IPv6编址
IPv4与IPv6最明显的区别之一是地址空间的大小。IPv4拥有32位,可支持约40亿个主机(4 x 109) 。IPv6拥有128位,可支持约340 undecillion (340 x1036) 个地址。
IPv6地址不再像IPv4那样使用“点分十进制”的格式来表现,而是使用“冒号分隔十六进制”格式呈现,每个IPv6地址包含8组数,每组16bit。
这个地址很长,可以用两种方法对这个地址进行压缩,每组16bit的单元中的前导0可以省略,但是如果16bit单元的所有bit都为0,那么至少要保留一个“0”字符;拖尾的0不能被省略。
一个或多个连续的16bit字符为0时,可用“::”表示,但整个IPv6地址缩写中只允许有一个“::”。
一个IPv6地址可以分为如下两部分:
- 网络前缀(Network Prefix):n比特,相当于IPv4地址中的网络ID。
- 接口标识(Interface Identify):128-n比特,相当于IPv4地址中的主机ID。
IPv6地址类型
IPv6单播地址
标识一个接口,目的地址为单播地址的报文会被送到被标识的接口。在IPv6中,一个接口拥有多个IPv6地址是非常常见的现象。
- 单播地址 - 可聚合全局单播地址
也被称为可聚合全球单播地址,该类地址全球唯一,相当于IPv4的公网地址。使用前缀2000::/3。一般从运营商处申请到的IPv6地址空间为/48,再由自己根据需要进一步规划。
全局路由前缀:由提供商指定给一个组织机构,一般至少为48bit。目前已经分配的全局路由前缀的前3bit均为001。因此前缀为2000::/3。
子网ID:组织机构可以用子网ID来构建本地网络。
接口ID:用来标识一个设备(的接口)。
- 单播地址 – 唯一本地地址
唯一本地地址(Unique Local Address)是IPv6私有地址,只能够在内网中使用,该地址空间在IPv6公网中不可路由,因此不能直接访问公网。
唯一本地地址使用FC00/7地址块,其中最高的第8bit为L标志位,值为1代表该地址为在本地网络范围内使用的地址;值为0被保留,用于以后扩展。因此FC00/7被划分为两个/8的块,其中FC00::/8暂未定义,FD00::/8的定义如下:
ULA虽然只在有限范围内有效,但也具有全球唯一的前缀(虽然随机方式产生,但是冲突概率很低)。
对于Global ID,是通过伪随机的方式产生的,RFC4193给出了一些关于产生方式的建议,例如“Obtain the current time of day in 64-bit NTP format [NTP]”等 。
- 单播地址 – 链路本地地址
链路本地地址(Link Local Address)是IPv6中的应用范围受限制的地址类型,只能在连接到同一本地链路的节点之间使用。
使用前缀FE80::/10。
LLA用于一条单一链路层面的通信。
源或目的IPv6地址为链路本地地址的数据包将不会被转发出始发的链路之外,换句话说,链路本地地址的有效范围为本地链路。
每一个IPv6接口都必须具备一个链路本地地址。华为设备支持自动生成及手工指定两种配置方式。
在华为路由器上,当接口获得一个IPv6全球单播地址后,设备会自动为该接口配置链路本地地址。
IPv6组播地址
标识多个接口,目的地址为组播地址的报文会被送到被标识的所有接口。只有加入相应组播组的设备接口才会侦听发往该组播地址的报文。
地址范围:FF00::/8。
Flags:用来表示永久或临时组播组。0000表示 永久分配或众所周知 ;0001表示 临时的
Scope:表示组播组的范围。
0:预留
1:节点本地范围;单个接口有效,仅用于Loopback通讯
2:链路本地范围;例如FF02::1
5:站点本地范围
8:组织本地范围
E:全球范围
F:预留
Group ID:组播组ID
被请求节点组播地址
被请求节点组播地址(Solicited-Node Multicast Address)通过节点的单播或任播地址生成。当一个节点具有了单播或任播地址,就会对应生成一个被请求节点组播地址,并且加入这个组播组。
一个单播地址或任播地址对应一个被请求节点组播地址。该地址主要用于邻居发现机制和地址重复检测功能。
被请求节点组播地址由固定前缀FF02::1:FF00:0/104和对应IPv6地址的最后24bit组成,。被请求节点组播地址的有效范围为本地链路范围。
IPv6任播地址
任播地址(Anycast Address)用于标识一组接口,接口通常属于不同的节点。目的地址为任播地址的报文会被转发给其中最近的一个接口。
任播地址的空间与单播地址(Unicast Address)的空间是重叠的,即从语义上无法区分两者。因此,如果需要将一个单播地址指定为任播地址,需要在节点(Node)上进行配置。
子网任播地址(Subnet-Router Anycast Address)作用于指定的子网(Subnet)。目的地址为该地址的报文将被转发给子网中的任何一台路由器。其格式如图所示
- Subnet prefix为相应子网(Subnet)的前缀。
- 所有路由器要求支持Subnet-Router Anycast Address。
如何划分IPv6 Subnetting
前提条件
- IP地址的网络部分和主机部分
一个IP地址包含两部分:网络部分及主机部分。
网络部分用于标识该IP所处的“空间”,路由器只关心IP的网络部分。而主机部分则在这个空间中表示该节点。
- Netmask网络掩码
网络掩码为32比特, 网络掩码在二进制的表示上是一堆连续的1、后面接一堆连续的0。
网络掩码中值为1的比特对应IP地址中的网络位;为0的比特对应IP地址中的主机位,以此来辅助我们识别一个IP地址中的网络与主机位。
- 接口标识符
关于接口ID:接口ID为64bit,用于标识链路上的接口,在每条链路上接口ID必须唯一。
接口ID的设置:
- 手工配置。
- 根据IEEE EUI-64规范将的48bit的MAC地址转化为64bit的接口ID。
- 某些系统支持自动生成随机接口ID(例如Windows7)。
子网划分
庞大的IPv6地址空间在制订编址计划方面,为网络工程师提供了极高的灵活性。在构建编址空间时,主要需要注意两个问题:一是怎样设定子网规模和分配子网地址;二是怎样分配接口标识符。本节将介绍如何制订IPv6子网划分方案。
子网规划——初始地址块申请
在制订编址计划时,对IPv6地址块的初始申请值得特别注意。如果企业想要使用提供商指定地址空间或提供商独立地址空间,就需要执行这一步骤。
下面是在对IPv6地址块进行初始容量规划时需要考虑的注意事项:
- 当前网络的总体规模和未来的增长趋势——企业在预估需要申请多大的IPv6地址块时,必须考虑到网络的总体规模。网络规模应当考虑到子网数量。相比之下,IPv4规划则主要是基于终端系统的数量。企业的规模是否大到必须要申请/32地址块?/44地址块是否就足以满足需要?企业能否只采用一个/48地址块?
- 多宿主战略——在制订IPv6地址初始申请时,企业必须考虑到,在连接单个或者多个服务提供商时,它应当怎样处理冗余性和故障情况。
- 跨国因素——由于当前地址分配策略采用了严格的等级制度,所以跨国企业在申请IPv6地址块时必须谨慎考虑他们应当采用的方法。
ARIN策略与企业拥有的站点数量有关。下表列出了ARIN策略的详细规定:
- 如经确认,需要1个以上、不超过12个站点,则获得一个/44地址块。
- 如经确认,需要12个以上、不超过192个站点,则获得一个/40地址块。
- 如经确认,需要192个以上、不超过3072个站点,则获得一个/36地址块。
- 如经确认,需要3072个以上、不超过49152个站点,则获得一个/32地址块。
子网规划——增长
增长是在分配子网时必须考虑的另外一个因素。可以根据企业前缀中的位边界,分配和操作子网。在子网规划中还需要留出一定的空间,以支持未来的增长,便于为网络添加更多的子网。通过保留相邻的地址块空间,将可以容纳这些额外的子网。
子网规划——前缀长度
在分配前缀长度时,需要考虑两个网络——带有终端站的网段和基础设施网段。对于连接至终端站的网段,IPv6的编址RFC建议使用/64前缀长度。因为每个网段有264个可用地址,很可能不会看到企业为托管终端系统的网段采用短于/64的前缀长度。如果采用无状态自动配置方法将接口ID分配给终端站,那么也需要使用/64网段前缀。安全邻居发现和私密性扩展也需要使用/64前缀。
IPv6 Subnetting的划分方法
制订IPv6编址计划的方法有以下几种:
- 将现有的IPv4方案转化为IPv6
- 基于拓扑结构
- 基于组织架构
- 基于服务
在第一种方法中,现有IPv4子网方案中的一些可以识别的、独特的部分会被转化为IPv6子网方案。例如,如果一个客户获得了/48前缀,那么该客户就能用16位字段,为其内部网络设置子网。
另一种方法则是为网络拓扑范围内的所有地点,分配一个地址块。例如,某个客户已经由其提供商分配了2001:db8:1::/48前缀,而且他们在全国各地设有分支机构。这些分支机构按照一定的拓扑结构,主要分为四个地理区域——西北、东北、西南和东南。他们可能会选择将用于子网设置的16位字段中的前四位,用于识别地区。按照这种方案,该网络将有16个地区,每个地区最多可以拥有4096 (212)个/64子网。这个方案还可以进一步延伸到设施级别,即客户可以选择利用接下来的四位识别地区中的设施。这样,每个地区最多可以有16个站点(24) ,而每个站点最多可以有256 (28) 个/64子网。
接下来的方法则是根据公司或者企业内部的组织架构分配前缀。在这种情况下,工程部门会获得一个地址块;销售部门会获得一个不同的地址块;法律部门也同样会得到一个不同的地址块,以此类推。这种方法的一个潜在问题是,它无助于形成一种有效的汇聚机制。很可能企业中的大部分部门位于多个站点。因为这种组织上的分散性,这种方法通常与拓扑细分方法搭配使用。
最后一种方法是根据所提供的服务类型分配前缀,例如提供IP语音(VoIP)或者无线服务的设备。这种方法存在与组织方案相同的汇聚问题,因此通常也会与拓扑细分方法搭配使用。
IPv6 Subnetting规划方案——Infra空间
No. |
字段 |
长度 |
说明 |
1 |
Net |
8 |
标识逻辑网络。一个逻辑网络上可以承载多个业务,例如NGN、VPN。一个物理网络可以承载多个逻辑网络。 |
2 |
SubT |
2 |
表示地址类型: 00,Loopback地址 01,OAM地址 10,Interconnection地址; |
3 |
Region |
6 |
标识地域,如集团、省等。 可分配64个地域,对于大业务省份可分配2-3个。 |
4 |
SubNet |
20 |
用于各地域自行分配。 可分配1M个/64前缀。 |
IPv6 Subnetting规划方案——Server-Fram空间
No. |
字段 |
长度 |
说明 |
1 |
Res |
6 |
预留字段,取值000000。 |
2 |
Region |
6 |
标识地域,如集团、省等。 可分配64个地域,对于大业务省份可分配2-3个。 |
3 |
SubNet |
24 |
用于各地域自行分配。 |
IPv6 Subnetting规划方案——Customer空间
No. |
字段 |
长度 |
说明 |
1 |
Region |
6 |
标识地域,如集团、省等。 可分配64个地域,对于大业务省份可分配2-3个。 建议与其他地址空间中的Region同步。 |
2 |
Pool |
14 |
标识地址池。 可分配16K个地址池。 |
3 |
CPE |
16 |
可分配65K个/64前缀,或4K个/60前缀,或256个/56前缀。 |
IPv6 Subnetting的规划建议
IPv6地址层次化设计建议
层次化设计指将IPv6地址划分为相对独立的几个字段。每个字段可以单独规划,实现路由汇聚。为提高方案灵活性,低位字段的规划可以依赖于高位字段的取值。例如:
- Serv为最高字段,其取值决定了其余部分的规划。当值为0100时,代表Server-Farm地址空间,其余部分继续划分为段2、段3、段4,其他取值时设计不同;
- 段3(Region)定义了后续地址空间所属的物理区域;
- 字段的划分由现网实际情况决定,可以参考但不限于以下维度,
- 地址空间:Infra、Server-Farm、Customer等。
- 区域:可以基于物理区域或者逻辑区域。
- 业务类型:HSI、VoIP、IPTV、企业互联等。
- 用户类型:家庭用户(Residential)、企业用户(Enterprise)、行业用户等。
- 用户等级:金、银、铜等。
- 字段的位置需要根据其聚合性设计,聚合性强的字段应放在高位,如,地址空间、区域。
- 过度的分层会导致业务与地址规划耦合性强,不便于后续业务发展,同时也会降低地址空间利用率。因此,需要结合现网实际情况确定合理的字段数量。
IPv6地址子网划分建议
- 针对接有终端系统/主机的网段,只使用/64子网
- 针对回环使用/128
- 针对网络基础设施,只使用/64、/126 或者/127子网
- 制订一个计划,以便支持需要超过两个以上地址的网络基础设施网段(例如/124)
- 首先尽量保持子网规划简洁,然后为试验项目和初始部署采用/64前缀。逐步形成一个更加具体的子网编址计划。
- 利用网络拓扑和自然汇聚点,汇总前缀信息。
- 在汇总边界之内考虑基于企业和服务的分配方式。在某些情况下,可能需要在一定程度上牺牲严格的汇总能力,以简化运营。
- 在计划中留出一定的余量,供未来增长使用。考虑为不需要外部连接的网络设备(例如打印机)使用ULA。
- 跟踪网络基础设施上链路本地地址的使用情况。
相关信息
如果你想了解IPv6 Subnetting的更多信息及划分方法,可参考以下产品文档:
NetEngine40E V800R010C10SPC500 特性描述-IP业务-IPv6地址
NetEngine40E V800R010C10SPC500 特性描述-IP业务-IPv6的特点
NetEngine40E V800R010C10SPC500 配置-IP业务-IPv6基础配置命令-ipv6 address