一个划分子网的不同理由
在 IPv4 中,子网划分多半关乎节约:地址稀缺,所以你把一个块切成仍能容纳每个网络的最小片段(子网划分基础一文中的逻辑)。IPv6 完全移除了那种压力。单个 /64 子网包含 2^64 个地址,比整个 IPv4 互联网的平方还多,所以你从不为节省空间而划分一个 IPv6 网络。你划分它是为了赋予结构:每个 、每个站点、每个客户一个前缀。其数学与 IPv4 是同一套前缀算术(工具以任意精度整数来计算它),但心态是相反的。
为何一个子网是 /64
IPv6 编址中那条单一、最重要的规则,便是一个正常的子网是 /64,留下 64 位给接口标识符。这并非建议;协议的大部分都假定它。无状态地址自动配置(在地址配置一文中讲述)通过把一个 64 位的接口标识符附加到所通告的前缀,来构建一台主机的地址,而工具能执行的那种修改的 推导,恰好产生 64 位。在一条链路上使用一个更长的前缀、如 /80 或 /112,自动配置便干脆停止工作。编址架构(RFC 4291)正是围绕这道边界而构建,所以那条实用的建议直白:把每一个终端用户子网都设为 /64,且不要试图在其内部省吃俭用。
那个分配层级
若每个子网都是 /64,站点与提供商便在其之上以更大的块工作:
/48 a site 65,536 subnets (/64s)
/56 a small site 256 subnets (/64s)
/64 one subnet the link itself
一个 通常向一个客户委派一个 /48 或 /56,客户继而从中把若干 /64 指派给各条链路。RFC 6177 把原本“人人一个 /48”的指引往回收,转向给每个站点足够的空间以从容地划分子网,这在实践中意味着一个 /48 或 /56。要点在于你有富余的空间:即便一个 /56 也给一个家庭或小型办公室 256 个独立的网络,远超它将会用到的。
在半字节边界上划分子网
因为 IPv6 以十六进制书写,且每个十六进制数字是 4 位(一个半字节,nibble),落在 4 位边界上的前缀远更易于辨读与管理。一个 /48、/52、/56、/60 与 /64 全都干净地终止于十六进制数字之间,所以子网部分与地址中的整个字符对齐。把一个 /48 划分为若干 /52,给你 16 个由单个十六进制数字区分的块;走到 /56,给你横跨两个数字的 256 个块。停留在半字节边界上,使你的编址规划保持清晰可读,而这在 IPv6 中的分量,胜过挤出最后一位所曾能有的。
计数子网与地址
那套算术很直接。一个更短前缀之内的 /64 子网的数目,是 2 的、前缀长度之差的次幂:一个 /48 容纳 2^(64-48) = 2^16 = 65,536 个子网。任何一个 /64 之内的地址数目是 2^(128-64) = 2^64。工具报告一个前缀的地址计数与可用范围两者,而那些数字迅速变大,这恰是要点:稀缺不再是一个你绕之而设计的约束。
那点收获
IPv6 子网划分把 IPv4 的习惯翻了个底朝天。你并非在分割一项稀缺的资源;你是在对一项实际上无限的资源施加结构。给每一个子网一个 /64,以使自动配置与邻居发现按所设计的那样运作;请求一个 /48 或 /56,以使你有空间去组织;并在半字节边界上划分子网,以使你的规划保持可读。当你把一个前缀粘入工具、看到地址计数时,把那份丰盈当作一份许可——去为清晰而设计、而非为节约。