本文出自 “王达博客” 博客,转载请与作者联系!

作者已授权本博客转载

以下内容摘自笔者编著的《网管员必读——超级网管经验谈》(第2版)一书。

3.8 IP v6划分子网

在对IP v6地址空间进行子网划分时,需要使用子网划分技术,以一种允许将剩余地址空间的摘要和委派路由到IP v6 Intranet的不同部分的方式,为48位全局地址前缀划分16位子网ID字段。不过,目前因为IP v6技术本身都没有普及使用,加上IP v6地址数本身就非常庞大,所以对IP v6地址进行子网划分,在目前来说可能还没有得到实质应用,也没有什么需求。在此介绍这一新IP地址协议下的子网划分方法,纯是为了各位进行积累考虑的。

不需要以任何特定的方式进行子网划分。此处介绍的子网划分技术假定是通过使用子网ID字段的高序位划分其地址空间的可变部分来进行子网划分的。虽然此方法有助于分层寻址和路由,但此方法并不是非用不可。例如,在只有少数子网的小型组织中,可以通过为子网编号(从0开始),轻松地为全局地址创建平面寻址空间。

对于全局地址,Internet编号分配机构(IANA)或ISP会分配一个前48位均为固定位的IP v6地址前缀。若要对48位全局地址前缀的子网ID字段进行子网划分,需要执行一个包含两步的过程:

1)确定用于子网划分的位数。

2)枚举出新的子网网络前缀。

3.8.1 确定用于子网划分的位数

用于子网划分的位数决定着可以分配给的网络各部分(基于地理区划或部门分类)的新子网网络前缀的可能的数量。在分层路由基础结构中,必须确定在层次结构的各层需要的网络前缀数,进而确定各层需要的位数。为层次结构的各层选择的位越多,拥有的用于枚举层次结构最后一层中的单个子网的位越少。

例如,可以实施一个包含两层的层次结构来反映地理/部门结构,4位用于地理层,6位用于部门层。这一方案允许16个地理区域,各个区域中的各个部门只占剩余的子网划分空间的616 - 6 - 4)位,或者说每个部门只有64= 26)个子网。

在层次结构中任何给定的层上,许多位已被层次结构中的上一层固定了(f),许多位被用来在层次结构中的当前层进行子网划分(s),还有许多位留给层次结构中的下一层使用(r)。下面这个等式始终成立:f+s+= 16。图3-6显示了这种关系。

3-6  对全局IP v6地址的子网ID字段进行子网划分

3.8.2 枚举子网网络前缀

根据用于子网划分的位数,必须列出新的子网网络前缀,可以使用下面两种主要方法之一:

l         使用子网ID和递增值的十六进制表示形式来枚举新的子网网络前缀。

l         使用子网ID和递增值的十进制表示形式来枚举新的子网网络前缀。

这两种方法产生的结果相同,都会生成子网网络前缀的一个枚举列表。

要使用十六进制方法创建子网网络前缀的枚举列表,请执行以下步骤:

1)根据为子网划分选择的位数s和进行子网划分的网络前缀的前缀长度m,计算以下各值:

l         m-48f是子网ID中已固定的位的数目。

l         = 2sn是将获得的网络前缀的数目。

l         = 216-f+si是以十六进制表示的各个连续子网ID之间的递增值。

l         m+sP是新的子网网络前缀的前缀长度。

2)创建一个包含n行、两列的表。第一列存放网络前缀编号(从1开始),第二列存放新的子网网络前缀。

3)将使用新的前缀长度的原始网络前缀放在第一行的第二列中。例如,根据进行子网划分的子网ID的十六进制值F,子网网络前缀为[48位前缀]:F::/P

4)将站点本地地址或全局地址的子网ID部分中的值加上i,将结果放在下一行的第二列中。例如,在第二行中,子网前缀为[48位前缀]:F+i::/P

5)重复步骤4,直到完成该表。

【示例16】对全局地址前缀3FFE:FFFF:0:C000::/51进行3位子网划分。

首先计算前缀数量值、递增值和新前缀长度值。起始值是F=0xC000s=3m=51,因此f=51-48=3。前缀的数量是8n=23)。递增值是0x400i=216-3+3=1024=0x400)。新的前缀长度是54P=51+3)。

接下来,构造一个包含8行的表,如表3-20所示。将3FFE:FFFF:0:C000::/54放在网络前缀1所在的那一行的第二列,然后让网络前缀的子网ID部分依次递增0x400,将结果分别填入后面的各行中。

3-20   使用十六进制技术对3FFE:FFFF:0:C000::/51进行3位子网划分

网络前缀

子网网络前缀

1

3FFE:FFFF:0:C000::/54

2

3FFE:FFFF:0:C400::/54

3

3FFE:FFFF:0:C800::/54

4

3FFE:FFFF:0:CC00::/54

5

3FFE:FFFF:0:D000::/54

6

3FFE:FFFF:0:D400::/54

7

3FFE:FFFF:0:D800::/54

8

3FFE:FFFF:0:DC00::/54

要使用十进制方法创建子网网络前缀的枚举列表,请执行以下步骤:

1)根据用于子网划分的位数s、进行子网划分的网络前缀的前缀长度m和进行子网划分的子网ID的十六进制值F,计算以下各值:

l         m-48f是子网ID中已固定的位的数目。

l         = 2sn是将获得的网络前缀的数目。

l         = 216-f+si是各个连续子网ID之间的递增值。

l         m+sP是新的子网网络前缀的前缀长度。

l         F的十进制表示形式

2)创建一个包含n行、三列的表。第一列存放网络前缀编号(从1开始),第二列存放新的子网网络前缀的子网ID部分的十进制表示形式,第三列存放新的子网网络前缀。

3)将子网ID的十进制表示形式(D)放在第一行的第一列,将子网前缀[48位前缀]:F::/P放在第一行的第二列。

4)用子网ID十进制表示形式的值加上i,将结果放在下一行的第二列。例如,第二行的子网ID的十进制表示形式是D+i

5)在第三列中,将子网ID的十进制表示形式转换为十六进制,并构造前缀[48位前缀]:[SubnetID]::/P。例如,在第二行中,子网网络前缀为[48位前缀]:[D+i(转换为十六进制)]::/P

6)重复步骤45,直到完成该表。

【示例17】对站点本地网络前缀3FFE:FFFF:0:C000::/51进行3位子网划分。

首先计算前缀数量值、递增值、新前缀长度值和起始子网ID十进制表示形式。我们的起始值是F=0xC000s=3m=51,这样f=51-48=3。前缀数量是8n=23)。递增值是1024i=216-3+3)。新的前缀长度是54P=51+3)。起始子网ID的十进制表示形式是49152D=0xC000=49152)。

接下来,构造一个包含8行的表,如表1-20所示。将49192放在网络前缀1所在的那一行的第一列,将3FFE:FFFF:0:C000::/54放在该行的第二列。让网络前缀的子网ID部分(第四个十六进制块)依次递增1024,然后将结果转换为十六进制并分别填入后面的各行中。

3-21   使用十进制技术对3FFE:FFFF:0:C000::/51进行3位子网划分

网络前缀

子网ID的十进制表示形式

子网网络前缀

1

49192

3FFE:FFFF:0:C000::/54

2

50176

3FFE:FFFF:0:C400::/54

3

51200

3FFE:FFFF:0:C800::/54

4

52224

3FFE:FFFF:0:CC00::/54

5

53248

3FFE:FFFF:0:D000::/54

6

54272

3FFE:FFFF:0:D400::/54

7

55296

3FFE:FFFF:0:D800::/54

8

56320

3FFE:FFFF:0:DC00::/54