为IP v6划分子网

以下内容摘自笔者编著的《网管员必读——超级网管经验谈》(第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 = 2 6 )个子网。
在层次结构中任何给定的层上,许多位已被层次结构中的上一层固定了( f ),许多位被用来在层次结构中的当前层进行子网划分( s ),还有许多位留给层次结构中的下一层使用( r )。下面这个等式始终成立: f+ s+ r = 16 。图3-6 显示了这种关系。
为IP v6划分子网_第1张图片
3-6  对全局IP v6 地址的子网ID 字段进行子网划分
3.8.2 枚举子网网络前缀
根据用于子网划分的位数,必须列出新的子网网络前缀,可以使用下面两种主要方法之一:
l         使用子网ID 和递增值的十六进制表示形式来枚举新的子网网络前缀。
l         使用子网ID 和递增值的十进制表示形式来枚举新的子网网络前缀。
这两种方法产生的结果相同,都会生成子网网络前缀的一个枚举列表。
要使用十六进制方法创建子网网络前缀的枚举列表,请执行以下步骤:
1 )根据为子网划分选择的位数 s 和进行子网划分的网络前缀的前缀长度 m ,计算以下各值:
l         f = m-48 f 是子网ID 中已固定的位的数目。
l         n = 2 s n 是将获得的网络前缀的数目。
l         I = 2 16- 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=2 3 )。递增值是0x400 i=2 16- 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 = 2 s n 是将获得的网络前缀的数目。
l         I = 2 16- 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=2 3 )。递增值是1024 i=2 16- 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
 

你可能感兴趣的:(c,网络,internet)