创建CCE Turbo集群时如何设置IPv6服务网段
问题背景
当您需要创建一个IPv4/IPv6双栈的CCE Turbo集群时,需要设置IPv6服务网段,该网段默认值为fc00::/112,包含了65536个IPv6服务地址。如果您需要自定义服务网段,您可参考本文进行设置。
IPv6介绍
IPv6地址
IPv6地址采用128位二进制表示,是IPv4地址长度的4倍。因此IPv4地址的十进制格式不再适用,IPv6采用了十六进制来表示,将128位二进制数转换为32位十六进制数,每4位十六进制数(不区分大小写)为一组,每组以冒号“:”隔开,可以分为8组。
IPv6地址存在多种省略写法:
- 0位省略:如果每个冒号分组中存在以0开头的,则可以将0位省略,多个0连续时可省略多个。例如以下IPv6地址均是等价的。
- ff01:0d28:03ee:0000:0000:0000:0000:0c23
- ff01:d28:3ee:0000:0000:0000:0000:c23
- ff01:d28:3ee:0:0:0:0:c23
- 双冒号省略:如果以十六进制表示的IPv6地址中间依然存在很多个全为0的分组,可以把连续全为0的分组压缩成双冒号"::"。但为保证唯一性,这种压缩方式只能使用一次,即一个IPv6地址中只能出现一次双冒号"::"。
IPv6地址段
IPv6地址段通常采用CIDR(无类别域间路由选择)表示法,通常用斜杠(/)后跟一个数字表示,即格式为“IPv6地址/前缀长度”。此处前缀长度与IPv4地址段的掩码作用类似,用数字来表示网络部分所占用的二进制位数,可将IPv6地址分为网络地址和主机地址两部分。而前缀长度指定了网络部分占用的位数,剩余位数则是主机地址部分,可以更加方便和灵活地表示不同的地址段。
例如,fc00:d28::/32表示一个前缀长度为32位的IPv6地址段,则在该网段中分配地址时,前32位(以二进制计算,此处即为fc00:d28)为网络地址,后96位则为可用的主机地址。
IPv6服务网段使用约束
在设置集群服务网段时,需要首先考虑以下有如下使用约束:
IPv6服务网段示例
根据约束,本文中提供一个包含8192个地址的IPv6网段设置示例,供您参考。
- 根据地址数需求设定前缀长度,且前缀范围为112-120。
本例中,需要8192个地址数,8192个地址需要13位二进制数表示,而IPv6地址总长度为128位二进制数,则该IPv6网段的前缀长度为128-13=115,表示前115位可用于区分网络地址段,后13位用于表示8192个主机地址。
根据以上计算方式,可得出前缀范围为112-120的IPv6地址段所包含的地址数量如下:
IPv6地址段的前缀长度
包含的地址数量
112
65536
113
32768
114
16384
115
8192
116
4096
117
2048
118
1024
119
512
120
256
- 设置IPv6网络地址,且网络地址必须属于fc00::/8网段内。
本例中,确定前缀长度为115,由于网络地址必须属于fc00::/8网段内,因此前8位二进制数是固定的。可修改的网络地址范围是第9位至第115位,第116位至第128位则属于主机地址。
将IPv6地址写成二进制形式,则根据以上条件:
- 网络地址必须属于fc00::/8网段,因此二进制中的前8位不可修改,否则将不属于fc00::/8网段,固定为1111 1110,对应十六进制为fc。
- 包含8192个地址数的网段前缀长度设置为115,因此二进制中后13位用于表示主机地址,固定全为0。
具体示例如下,其二进制中标红部分是不可修改的。
二进制: 1111 1100 **** **** ... ***0 0000 0000 0000/115 | | | | | | | | 十六进制: f c x x ... y 0 0 0/115
其中x为任意十六进制数;而y对应的4位二进制数最后一位固定为0,因此十六进制数y可选范围为0、2、4、6、8、a、c、e。