我知道IPv6为链接本地地址保留了fe80 :: / 10前缀,并且主机选择了一个带/ 64前缀的地址。

为什么保留的空间比实际使用的空间大得多用于本地链接?

#1 楼

我认为将链接本地范围设置为/ 10只是为了更好地“适应”其他范围,例如site-local(在被唯一的local取代之前)。

最初我以为是允许在同一链接上使用许多链接本地网络,但是RFC 4291明确指出,仅fe80 :: / 64可以使用。

评论


关于SLAAC的实施有什么意义吗? ... SLAAC是否“前缀不可知”?

–克雷格·康斯坦丁(Craig Constantine)
13年5月8日14:50

SLAAC需要一个/ 64,但在这里并没有真正意义,因为SLAAC并未分配本地链接地址-实际上,SLAAC依赖于已经具有本地链接地址。

–凯文·基恩(Kevin Keane)
2015年11月8日下午5:34

#2 楼

您知道,我从没考虑过。

我假设使用fe80 :: / 64,因为系统随后在该/ 64中运行无状态地址自动配置(SLAAC)。其余的/ 10可用于静态分配的链接本地地址和网络块。我很难解决静态链接本地分配的重要用例,但我想人们最终有理由这样做。

评论


SLAAC和/ 64有何重要意义? ...关于/ 64前缀,SLAAC是否固有?

–克雷格·康斯坦丁(Craig Constantine)
13年5月8日在14:39

有时静态分配的链接本地地址可以轻松知道动态路由时的下一跳节点,即R1是fe80 :: 1/64,R2是fe80 :: 2/64,等等。所以在实践中。

–hrtednrup
13年5月8日在15:24

@CraigConstantine-是的,SLAAC将/ 64边界硬编码到协议中。这就是您无法在IPv6中创建小于/ 64的子网的原因,除了用于路由链接的子网(即,对于点对点链接,您应该使用/ 127)。实际上,还有其他协议也将/ 64边界引入其中。

–凯文·基恩(Kevin Keane)
15年11月28日在6:21

我们有一个用例。一个进程隔离系统,需要使用已知的链接本地地址来启动隔离环境,以便基于IPv6进行标识。我们不能等待DAD,因为环境需要在几微秒或几毫秒内准备就绪。

–恶毒
18年2月10日在20:15

#3 楼

IPv6的设计原理是拥有合理结构的地址空间比保存地址更为重要。顺便提一句,IPv4的构想是相同的(这就是为什么每个设备都有1600万个环回地址,但仅使用127.0.0.1地址,而大多数D类和E类地址未使用的原因)。 />理论上,本地链接地址确实浪费了数以百万计的IP地址,但这并不是问题。同样,为每个客户提供完整的/ 56甚至/ 48的内存在技术上是非常浪费的,但这并不是真正的问题。

这种方法有一个缺点:IPv6可以提供IP地址就像说IPv4可以支持40亿个设备一样,世界上每一个沙粒(或类似的沙粒)都是胡说八道。实际上,当您将IPv6中的所有浪费加起来时,您会发现限制要窄得多(仍然比IPv4大)。

#4 楼

我认为这归结为两件事。首先,本地链路无法路由,因此不需要子网ID。假定由于无法路由,因此前缀之后直到最后64位的所有内容均为零。其次,与其他类似的IPv6前缀一样,该前缀是直到最后一个“ 1”位的所有内容。这样可以保持一致性。

评论


如果那是它的工作方式,那将是/ 9而不是/ 10。

–卡巴斯德
15年6月30日在22:29