以下内容摘自笔者编著的《网管员必读——超级网管经验谈》(第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个地理区域,各个区域中的各个部门只占剩余的子网划分空间的6(
16 - 6 - 4
)位,或者说每个部门只有64(= 26)个子网。
在层次结构中任何给定的层上,许多位已被层次结构中的上一层固定了(f),许多位被用来在层次结构中的当前层进行子网划分(s),还有许多位留给层次结构中的下一层使用(r)。下面这个等式始终成立:f+s+r = 16。图3-6显示了这种关系。
图
3-6
对全局
IP v6
地址的子网
ID
字段进行子网划分
3.8.2
枚举子网网络前缀
根据用于子网划分的位数,必须列出新的子网网络前缀,可以使用下面两种主要方法之一:
l
使用子网ID和递增值的十六进制表示形式来枚举新的子网网络前缀。
l
使用子网ID和递增值的十进制表示形式来枚举新的子网网络前缀。
这两种方法产生的结果相同,都会生成子网网络前缀的一个枚举列表。
要使用十六进制方法创建子网网络前缀的枚举列表,请执行以下步骤:
(1)根据为子网划分选择的位数s和进行子网划分的网络前缀的前缀长度m,计算以下各值:
l
f = m-48:f是子网ID中已固定的位的数目。
l
n = 2s:n是将获得的网络前缀的数目。
l
I = 216-(f+s):i是以十六进制表示的各个连续子网ID之间的递增值。
l
P = m+s:P是新的子网网络前缀的前缀长度。
(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=0xC000,s=3,m=51,因此f=51-48=3。前缀的数量是8(n=23)。递增值是0x400(i=216-(3+3)=1024=0x400)。新的前缀长度是54(P=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
f = m-48:f是子网ID中已固定的位的数目。
l
n = 2s:n是将获得的网络前缀的数目。
l
I = 216-(f+s):i是各个连续子网ID之间的递增值。
l
P = m+s:P是新的子网网络前缀的前缀长度。
l
D = 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)重复步骤4和5,直到完成该表。
【示例
17
】对站点本地网络前缀
3FFE:FFFF:0:C000::/51
进行
3
位子网划分。
|
首先计算前缀数量值、递增值、新前缀长度值和起始子网ID十进制表示形式。我们的起始值是F=0xC000,s=3,m=51,这样f=51-48=3。前缀数量是8(n=23)。递增值是1024(i=216-(3+3))。新的前缀长度是54(P=51+3)。起始子网ID的十进制表示形式是49152(D=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
|
本文转自王达博客51CTO博客,原文链接http://blog.51cto.com/winda/46846如需转载请自行联系原作者
茶乡浪子