计算机网络 一月 11, 2021

计算机网络原理 • IPv6 编址

文章字数 22k 阅读约需 40 mins. 阅读次数 0

引言

本篇是对计算机网络原理一文中的IPv6 编址部分的详细介绍。
所用教学平台:Cisco Networking Academy


IPv4 的问题

IPv6 的必要性

您已经知道IPv4的地址用完了。这就是为什么您需要了解 IPv6 的原因。

IPv6 旨在接替 IPv4。IPv6 拥有更大的 128 位地址空间,提供 340 涧(即,340后面有36个0)个不确定地址。不过,IPv6 不只是具有更大的地址空间。

当 IEFT 开始开发 IPv4 的接替版本时,还借此机会修复了 IPv4 的限制,并开发了增强功能。一个示例是 Internet 控制消息协议第 6 版 (ICMPv6),它包括 IPv4 的 ICMP (ICMPv4) 中没有的地址解析和地址自动配置功能。

IPv4 地址空间耗尽一直是迁移到 IPv6 的动因。随着非洲、亚洲和世界其他地区越来越多地使用互联网,IPv4 地址已经无法满足这一增长需求。如图所示,5 个 RIR 中的 4 个都已耗尽了 IPv4 地址。

各RIR IPv4地址耗尽日期

理论上,IPv4 最多有 43 亿个地址。私有地址与网络地址转换 (NAT) 对于放缓 IPv4 地址空间的耗尽起了不可或缺的作用。然而,NAT对于许多应用程序来说是有问题的,它会造成延迟,并且有严重阻碍对等体对对等体通信的限制。

随着移动设备数量的不断增加,移动供应商一直在引领着向IPv6的过渡。美国最大的两家移动运营商报告称,他们超过90%的流量都在IPv6之上。

大多数顶级ISP和内容提供商,如YouTube、Facebook和NetFlix,也已经完成了过渡。许多公司,如微软、Facebook和LinkedIn,都在向内部只允许使用ipv6过渡。2018年,宽带ISP Comcast报告部署超过65%,英国天空广播报告超过86%。


物联网

当今的互联网与过去几十年相比大有不同。当今的互联网不仅仅是邮件、网页和计算机之间的文件传输。互联网正在不断向物联网 (IoT) 发展。能够访问互联网的设备将不仅仅只有计算机、平板电脑和智能手机。未来安装有传感器并支持互联网访问的设备将包括汽车、生物化学设备和家用电器以及自然生态系统等一切事物。

考虑到互联网用户的不断增加、有限的 IPv4 地址空间、NAT 问题和物联网等问题,是时候开始向 IPv6 过渡了。


IPv4 和 IPv6 共存

过渡到 IPv6 不是一朝一夕可以完成的。在不久的将来,IPv4和IPv6都将共存,并且过渡将需要几年的时间。IETF 已经创建了各种协议和工具来协助网络管理员将网络迁移到 IPv6。迁移技术可分为三类:

  • 双堆栈

双堆栈允许 IPv4 和 IPv6 在同一网段上共存。双堆栈设备同时运行 IPv4 和 IPv6 协议栈。称为原生 IPv6,这意味着客户网络与他们的ISP建立了IPv6连接,并能够通过IPv6访问互联网上的内容。

  • 隧道

隧道是一种通过 IPv4 网络传输 IPv6 数据包的方法。IPv6 数据包与其他类型数据类似,也封装在 IPv4 数据包中。

  • 转换

网络地址转换 64 (NAT64) 允许支持 IPv6 的设备与支持 IPv4 的设备使用类似于 IPv4 中 NAT 的转换技术进行通信。IPv6 数据包被转换为 IPv4 数据包,IPv4 数据包被转换为 IPv6 数据包。

注意: 隧道和转换用于过渡到原生IPv6,仅应在需要时使用。目标是从源到目的地进行本地 IPv6 通信。


IPv6 地址表示方法

IPv6 编址格式

学习网络中的IPv6的第一步是理解IPv6地址的编写和格式化方式。IPv6 地址比 IPv4 地址多得多,这就是为什么我们不太可能用完它们。

IPv6 地址长度为 128 位,写作十六进制值字符串。如图所示,每 4 位以一个十六进制数字表示,共 32 个十六进制值。IPv6 地址不区分大小写,可用大写或小写书写。

16位数据段或十六进制数

首选格式

前面的图也显示了,书写 IPv6 地址的首选格式为 x:x:x:x:x:x:x:x,每个“x”均包括四个十六进制值。术语“八位组”是指 IPv4 地址的八位。在 IPv6 中,十六位位组是指代 16 位二进制或四位十六进制数的非官方术语。每个“x”是一个16 位二进制数或四位十六进制数字组成的十六进制数。

首选格式表示使用所有 32 个十六进制数字书写 IPv6 地址。这并不意味着它是表示 IPv6 地址的理想方法。在本模块中,您将了解到有两条规则可帮助减少表示一个 IPv6 地址所需数字的数目。

这些是IPv6 地址首选格式的示例。

2001 : 0db8 : 0000 : 1111 : 0000 : 0000 : 0000: 0200 
2001 : 0db8 : 0000 : 00a3 : abcd : 0000 : 0000: 1234 
2001 : 0db8 : 000a : 0001 : c012 : 9aff : fe9a: 19ac 
2001 : 0db8 : aaaa : 0001 : 0000 : 0000 : 0000: 0000 
fe80 : 0000 : 0000 : 0000 : 0123 : 4567 : 89ab: cdef 
fe80 : 0000 : 0000 : 0000 : 0000 : 0000 : 0000: 0001 
fe80 : 0000 : 0000 : 0000 : c012 : 9aff : fe9a: 19ac 
fe80 : 0000 : 0000 : 0000 : 0123 : 4567 : 89ab: cdef 
0000 : 0000 : 0000 : 0000 : 0000 : 0000 : 0000: 0001 
0000 : 0000 : 0000 : 0000 : 0000 : 0000 : 0000: 0000 

规则 1 - 省略前导 0

第一条有助于缩短 IPv6 地址记法的规则是省略十六进制数中的所有前导 0(零)。以下是省略前导零的四个方法示例:

  • 01ab 可表示为 1ab

  • 09f0 可表示为 9f0

  • 0a00 可表示为 a00

  • 00ab 可表示为 ab

此规则仅适用于前导 0,不适用于后缀 0,否则会造成地址不明确。例如,十六进制的“abc”可能是“0abc”,也可能是“abc0”,但这些表示的值不相同。

省略前导 0

类型 格式
首选 2001 : 0db8 : 0000 : 1111 : 0000 : 0000 : 0000 : 0200
无前导 0 2001 : db8 : 0 : 1111 : 0 : 0 : 0 : 200
首选 2001 : 0db8 : 0000 : 00a3 : ab00 : 0ab0 : 00ab : 1234
无前导 0 2001 : db8 : 0 : a3 : ab00 : ab0 : ab : 1234
首选 2001 : 0db8 : 000a : 0001 : c012 : 90ff : fe90 : 0001
无前导 0 2001 : db8 : a : 1 : c012 : 90ff : fe90 : 1
首选 2001 : 0db8 : aaaa : 0001 : 0000 : 0000 : 0000 : 0000
无前导 0 2001 : db8 : aaaa : 1 : 0 : 0 : 0 : 0
首选 fe80 : 0000 : 0000 : 0000 : 0123 : 4567 : 89ab : cdef
无前导 0 fe80 : 0 : 0 : 0 : 123 : 4567 : 89ab : cdef
首选 fe80 : 0000 : 0000 : 0000 : 0000 : 0000 : 0000 : 0001
无前导 0 fe80 : 0 : 0 : 0 : 0 : 0 : 0 : 1
首选 0000 : 0000 : 0000 : 0000 : 0000 : 0000 : 0000 : 0001
无前导 0 0 : 0 : 0 : 0 : 0 : 0 : 0 : 1
首选 0000 : 0000 : 0000 : 0000 : 0000 : 0000 : 0000 : 0000
无前导 0 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0

规则 2 - 双冒号

第二条有助于缩短 IPv6 地址记法的规则是使用双冒号 (::) 替换任何由一个或多个全由 0 组成的16 位十六进制数组成的连续字符串。例如,2001:db8:cafe:1:0:0:0:1(前导0省略)可以表示为2001:db8:cafe:1::1。双冒号 (::) 用于代替三个全 0十六进制数 (0:0:0)。

双冒号 (::) 仅可在每个地址中使用一次,否则可能会得出一个以上的地址。当与忽略前导 0 的方法一起使用时,IPv6 地址记法可以大幅缩短。这通常称为压缩格式。

下面是一个不正确使用双冒号的例子:2001:db8::abcd::1234。

在上面的例子中,双冒号使用了两次。以下是这个不正确的压缩格式地址可能的扩展:

  • 2001:db8::abcd:0000:0000:1234

  • 2001:db8::abcd:0000:0000:0000:1234

  • 2001:db8:0000:abcd::1234

  • 2001:db8:0000:0000:abcd::1234

如果一个地址有多个连续的全为0的十六进制数字符串,最佳实践是在最长的字符串上使用双冒号(::)。如果字符串相等,则第一个字符串应使用双冒号 (::)。

省略前导 0 和所有 0 段

类型 格式
首选 2001 : 0db8 : 0000 : 1111 : 0000 : 0000 : 0000 : 0200
压缩/空间 2001 : db8 : 0 : 1111 : : 200
压缩 2001:db8:0:1111::200
首选 2001 : 0db8 : 0000 : 0000 : ab00 : 0000 : 0000 : 0000
压缩/空间 2001 : db8 : 0 : 0 : ab00 ::
压缩 2001:db8:0:0:ab00::
首选 2001 : 0db8 : aaaa : 0001 : 0000 : 0000 : 0000 : 0000
压缩/空间 2001 : db8 : aaaa : 1 ::
压缩 2001:db8:aaaa:1::
首选 fe80 : 0000 : 0000 : 0000 : 0123 : 4567 : 89ab : cdef
压缩/空间 fe80 : : 123 : 4567 : 89ab : cdef
压缩 fe80::123:4567:89ab:cdef
首选 fe80 : 0000 : 0000 : 0000 : 0000 : 0000 : 0000 : 0001
压缩/空间 fe80 : : 1
压缩 fe80::1
首选 0000 : 0000 : 0000 : 0000 : 0000 : 0000 : 0000 : 0001
压缩/空间 :: 1
压缩 ::1
首选 0000 : 0000 : 0000 : 0000 : 0000 : 0000 : 0000 : 0000
压缩/空间 ::
压缩 ::

IPv6 地址类型

单播,组播,任播

与 IPv4 一样,有不同类型的 IPv6 地址。事实上,IPv6 地址有三大类:

  • 单播 - IPv6 单播地址用于唯一标识支持 IPv6 的设备上的接口。

  • 组播 - IPv6 组播地址用于将单个 IPv6 数据包发送到多个目的地。

  • 任播 -IPv6 任播地址是可分配到多个设备的 IPv6 任播地址。发送至任播地址的数据包会被路由到最近的拥有该地址的设备。任播地址不在本课程的讨论范围之内。

与 IPv4 不同,IPv6 没有广播地址。但是,IPv6 具有 IPv6 全节点组播地址,这在本质上与广播地址的效果相同。


IPv6 前缀长度

IPv4 地址的前缀或网络部分可以由点分十进制子网掩码或前缀长度(斜线记法)标识。例如, IPv4 地址 192.168.1.10(点分十进制子网掩码为 255.255.255.0)等值于 192.168.1.10/24。

在 IPv4 中,/24 称为前缀。在 IPv6 中,它被称为前缀长度。IPv6 不使用点分十进制子网掩码记法。与IPv4一样,前缀长度以斜线记法表示,用于表示 IPv6 地址的网络部分。

前缀长度范围为 0 至 128。推荐的局域网和大多数其他网络类型 IPv6 前缀长度为 /64,如图所示。

IPv6 前缀长度

强烈建议对大多数网络使用 64 位接口 ID。这是因为无状态地址自动配置(SLAAC)使用64位作为接口ID。它还使子网划分更易于创建和管理。


IPv6 单播地址的类型

IPv6 单播地址用于唯一标识支持 IPv6 的设备上的接口。发送到单播地址的数据包由分配有该地址的接口接收。与 IPv4 类似,源 IPv6 地址必须是单播地址。目的 IPv6 地址可以是单播地址也可以是组播地址。该图显示了IPv6 单播地址的不同类型。

IPv6 单播地址

与IPv4设备只有一个地址不同,IPv6地址通常有两个单播地址:

  • 全局单播地址(GUA) - 这类似于公有 IPv4 地址。这些地址具有全局唯一性,是互联网可路由的地址。GUA可静态配置或动态分配

  • 链路本地地址 (LLA) - 这对于每个支持ipv6的设备都是必需的。LLA用于与同一链路中的其他设备通信。在 IPv6 中,术语链路是指子网。LLA仅限于单个链路。它们的唯一性仅在该链路上得到保证,因为它们在该链路之外不具有可路由性。换句话说,路由器不会转发具有本地链路源地址或目的地址的数据包。


关于唯一本地地址的注意事项

唯一本地地址(范围 fc00:: /7 到 fdff:: /7)尚未普遍实现。因此,本模块仅涵盖 GUA 和 LLA 配置。然而,唯一本地地址最终可能被用于地址不应该从外部访问的设备,例如内部服务器和打印机。

IPv6 唯一本地地址与 IPv4 的 RFC 1918 私有地址具有相似之处,但是也有着重大差异。

  • 唯一本地地址用于一个站点内或数量有限的站点之间的本地编址。

  • 唯一本地地址可用于从来不需要访问其他网络的设备。

  • 唯一本地地址不会全局路由或转换为全局 IPv6 地址。

注意: 许多站点也使用 RFC 1918 地址的私有性质来尝试去保护或隐藏其网络,使其免遭潜在的安全风险。但是,这绝不是这些技术的既定用途,IETF 始终推荐各站点在面向互联网的路由器上采取妥善的安全预防措施。


IPv6 GUA

IPv6 全局单播地址 (GUA) 具有全局唯一性,可在 IPv6互联网上路由。这些地址相当于公有 IPv4 地址。互联网名称与数字地址分配机构 (ICANN),即 IANA 的运营商,将 IPv6 地址块分配给五家 RIR。目前分配的仅是前三位为 001 或 2000::/3 的全局单播地址(GUA),如图所示。

该图显示了第一个十六进制数的值范围,其中当前可用的GUAs的第一个十六进制数字以2或3开头。这只是可用 IPv6 地址空间的 1/8,对于其他类型单播和组播地址而言只是很小的一部分。

注意: 2001:db8::/32已经留作备档之用,包括示例用途。

该图显示了 GUA 的三个部分:首先是全局路由前缀,然后是子网 ID,最后是接口 ID。全局路由前缀的前三位是 001。第一个十六进制数的范围显示为0010 0000 0000 0000(2000)到0011 1111 1111 1111 (3fff)

该图显示了 GUA 的三个部分:首先是带有48位长度的全局路由前缀,然后是16位长度的子网 ID,最后是64位长度的接口 ID。图下的文字写明:一个/ 48路由前缀 + 16 位子网 ID = /64前缀


IPv6 GUA 结构

  • 全局路由前缀

全局路由前缀为提供商(如 ISP)分配给客户或站点的地址的前缀或网络部分。例如,ISP 通常会为其客户分配 /48 全局路由前缀。全局路由前缀通常会因 ISP 的策略而异。

前面的图显示了使用/48全局路由前缀的GUA。/48 前缀是分配的常见全局路由前缀,本课程中的多数示例均使用该前缀。

例如,IPv6 地址2001:db8:acad::/48 的全局路由前缀,该前缀表示ISP知道该前缀(网络)的方式是前48位(3个十六进制数)(2001:db8:acad)。/48 前缀长度后面的双冒号 (::) 表示地址的剩余部分全部为 0。全局路由前缀的大小决定子网 ID 的大小。

  • 子网ID

子网ID字段是全局路由前缀和接口ID之间的区域。与IPv4不同,在IPv4中您必须从主机部分借用位来创建子网,IPv6在设计时考虑到了子网。组织使用子网 ID 确定其站点的子网。子网 ID 越大,可用子网越多。

注意: 许多组织正在接收 /32 全局路由前缀。使用推荐的 /64 前缀来创建 64 位接口 ID,会留下一个 32 位子网 ID。这意味着具有 /32 全局路由前缀和 32 位子网 ID 的组织将拥有 43 亿个子网,每个子网都有 1800亿亿(18后面跟18个0)个子网。这是与公有 IPv4 地址数量一样多的子网!

在前面的图中,IPv6地址有一个/48全局路由前缀,这在许多企业网络中很常见。这使得检查地址的不同部分变得特别容易。使用典型的/64前缀长度,前四个十六进制数是地址的网络部分,其中第四个十六进制数表示子网 ID。剩下的四个十六进制数用于接口 ID。

  • 接口ID

IPv6 接口 ID 相当于 IPv4 地址的主机部分。使用术语“接口 ID”是因为单个主机可能有多个接口,而每个接口又有一个或多个 IPv6 地址。该图显示了 IPv6 GUA 的结构示例。强烈建议在大多数情况下使用 /64 子网,这会创建64位接口ID。64 位接口 ID 允许每个子网有1800亿亿个设备或主机。

/64 子网或前缀(全局路由前缀 + 子网 ID)为接口 ID 留下 64 位。建议允许启用 SLAAC 的设备创建自己的 64 位接口 ID。它还使得 IPv6 编址计划的开发变得简单而有效。

注意: 与 IPv4 不同,在 IPv6 中,全 0 和全 1 主机地址可以分配给设备。可以使用全1地址,因为广播地址不在IPv6中使用。全 0 地址也可使用,但它留作子网路由器任播地址,应仅分配给路由器。


IPv6 LLA

IPv6 链路本地地址(LLA)允许设备与同一链路上支持 IPv6 的其他设备通信,并且只能在该链路(子网)上通信。具有源或目的LLA的数据包不能在数据包的源链路之外进行路由。

GUA 不是一项要求。但是,每个启用 IPv6 的网络接口都必须有 LLA。

如果没有手动为接口配置LLA,设备会在不与 DHCP 服务器通信的情况下自动创建自己的地址。支持 IPv6 的主机会创建 IPv6 LLA,即使没有为该设备分配 IPv6 全局单播地址。这允许支持 IPv6 的设备与同一子网中的其他支持 IPv6 的设备通信。这包括与默认网关(路由器)的通信。

IPv6 LLAs在fe80::/10范围内。/10 表示前 10 位是 1111 1110 10xx xxxx。第一个十六进制数的范围是 1111 1110 1000 0000 (fe80) 到 1111 1110 1011 1111 (febf)。

该图显示使用IPv6 LLA进行通信的示例。PC 能够使用LLA直接与打印机进行通信。

物理拓扑显示有两台 PC、一台服务器、一台打印机、一台交换机和一台路由器。它描述了链路本地通信不会路由到网络之外

IPv6 链路本地通信

下图显示了IPv6 LLA的一些用途。

该图显示了两个路由器通过一个带有LLA地址的链路进行连接。带有指向每个路由器的双向箭头的数字1与文本“路由协议消息”一起通过链路。一台PC与左侧的路由器相连,带有数字2,一个箭头从PC指向路由器。

IPv6 链路本地通信

注意: 通常情况下,用作链路上其他设备的默认网关的是路由器的LLA而不是GUA

设备可以通过两种方式获取 LLA:

  • 静态 - 这意味着设备已手动配置。

  • 动态 - 这意味着设备通过使用随机生成的值或使用扩展唯一标识符 (EUI) 方法创建自己的接口 ID,该方法使用客户端 MAC 地址和其他位。


GUA 和 LLA 静态配置

路由器上的静态 GUA 配置

如您在上一主题中了解到的,IPv6 GUA与公有 IPv4 地址数量相同。它们具有全局唯一性,可在 IPv6互联网上路由。IPv6 LLA 允许两个启用 IPV6 的设备在同一链路(子网)上相互通信。在路由器上静态配置IPv6 GUA和LLA很容易,可以帮助您创建IPv6网络。本主题教您如何做到这一点!

在 思科 IOS 中,大多数 IPv6 的配置和验证命令与 IPv4 的相似。在多数情况下,唯一区别是命令中使用ipv6 取代ip 。

例如,在接口上配置 IPv4 地址的思科IOS 命令是 ip address ip 地址 子网掩码,相比之下,在接口上配置 IPv6 GUA 的命令是 ipv6 address ipv6 地址/前缀长度。

注意 ipv6-address 和 prefix-length之间没有空格。

配置示例使用图中的拓扑和下列 IPv6 子网:

  • 2001:db8:acad:1:/64

  • 2001:db8:acad:2:/64

  • 2001:db8:acad:3:/64

示例拓扑

示例列出在 R1 的 G0/0/0、G0/0/1 和 Serial 0/1/0 接口上配置 IPv6 GUA所需的命令。

# 路由器 R1 上的 IPv6 GUA 配置

R1(config)# interface gigabitethernet 0/0/0
R1(config-if)# ipv6 address 2001:db8:acad:1::1/64
R1(config-if)# no shutdown
R1(config-if)# exit
R1(config)# interface gigabitethernet 0/0/1
R1(config-if)# ipv6 address 2001:db8:acad:2::1/64
R1(config-if)# no shutdown
R1(config-if)# exit
R1(config)# interface serial 0/1/0
R1(config-if)# ipv6 address 2001:db8:acad:3::1/64
R1(config-if)# no shutdown

Windows 主机上的静态 GUA 配置

在主机上手动配置 IPv6 地址与配置 IPv4 地址相似。

如图中所示,为 PC1 配置的默认网关地址为2001:DB8:ACAD:1::1。该地址是同一网络中 R1 千兆以太网接口的GUA。或者,也可以配置默认网关地址以与千兆以太网接口的LLA相匹配。使用路由器的LLA作为默认网关地址被认为是最佳实践。任一配置都可以。

该图显示的是Windows Internet Protocol Version 6(TCP/IPv6) 属性窗口。单选按钮“使用下面的 IP 地址”已选择。IPv6 地址是2001:db8:acad:1::1。子网前缀长度为 64。默认网关是2001:db8:acad:1::1。单选按钮“使用下面的 DNS 服务器地址”已选择。

与使用 IPv4 一样,在客户端配置静态地址并不能扩展至更大的环境。因此,多数 IPv6 网络的管理员会启用 IPv6 地址的动态分配。

设备可以通过两种方法自动获取 IPv6 GUA:

  • 无状态地址自动配置 (SLAAC)

  • 有状态 DHCPv6

注意: 使用 DHCPv6 或 SLAAC 时,路由器的LLA将自动指定为默认网关地址。


链路本地单播地址的静态配置

手动配置LLA可以让您创建的地址便于识别和记忆。一般来说,只需要在路由器上创建可识别的LLA。这样做很有用,因为路由器LLA将被用作默认网关地址并包含在路由通告消息中。

LLA 可以使用 ipv6 address ipv6-链路本地地址 link-local 命令手动配置。当地址以 fe80 到 febf 范围的十六进制数开头时,link-local参数必须符合该地址。

该图显示了一个示例拓扑,每个接口上都有LLA。

带有 LLA 的拓扑 示例

# 路由器 R1 上 LLA 的配置

R1(config)# interface gigabitethernet 0/0/0
R1(config-if)# ipv6 address fe80::1:1 link-local
R1(config-if)# exit
R1(config)# interface gigabitethernet 0/0/1
R1(config-if)# ipv6 address fe80::2:1 link-local
R1(config-if)# exit
R1(config)# interface serial 0/1/0
R1(config-if)# ipv6 address fe80::3:1 link-local
R1(config-if)# exit

静态配置的LLA用于使它们更易于识别为属于路由器R1。在示例中,路由器 R1 的所有接口都配置了以 fe80::1:n 开头的 LLA 以及唯一的最右侧数字 “n”。“1” 表示路由器 R1。

遵循与路由器 R1 相同的语法,如果拓扑包含路由器 R2,那么它的三个接口将配置LLA为 fe80::2:1、fe80::2:2和fe80::2:3。

注意: 只要每个链路上的LLA是唯一的,就可以在每个链路上配置完全相同的LLA。这是因为LLA仅在该链路上具有唯一性。但是,常见的实践是在路由器的每个接口上创建一个不同的 LLA,以便轻松识别路由器和特定接口。


IPv6 GUA的动态编址

RS and RA 消息

如果您不想静态地配置IPv6 GUAs,也不必担心。大多数设备会动态获取其 IPv6 GUA。本主题说明如何使用路由器通告(RA)和路由器请求(RS)消息来完成此过程。本主题比较技术性,但是当您理解了路由器通告可以使用的三种方法之间的区别,以及创建接口ID的EUI-64进程与随机生成的进程的区别,您将在您的IPv6专业知识上有一个巨大的飞跃!

对于 GUA,设备通过 Internet 控制消息协议版本 6 (ICMPv6) 消息动态获取地址。IPv6 路由器每 200 秒定期将 ICMPv6 RA 消息发送到网络上所有支持 IPv6 的设备。在响应发送 ICMPv6 路由器请求 (RS) 消息的主机时,也会发送 RA 消息,该消息是对RA消息的请求。这两条消息都显示在图中。

ICMPv6 RS 和 RA 消息

RA消息位于IPv6路由器以太网接口上。必须为路由器启用 IPv6 路由,这在默认情况下是不启用的。若要将路由器启用为 IPv6 路由器,必须使用 ipv6 unicast-routing 全局配置命令。

ICMPv6 RA 消息提示设备获取 IPv6 GUA的方式。最终决定取决于设备的操作系统。ICMPv6 RA 消息包括以下:

  • 网络前缀和前缀长度 – 这会告知设备其所属的网络。

  • 默认网关 – IPv6 LLA,RA 消息的源 IPv6 地址。

  • DNS 地址和域名 – 这些是DNS 服务器的地址和域名。

RA 消息有三种方法:

  • 方法 1: SLAAC - “我拥有您需要的一切,包括前缀、前缀长度和默认网关地址。”
  • 方法 2:SLAAC 和 无状态DHCPv6服务器 - “这是我的信息,但您需要从 无状态DHCPv6 服务器获得其他信息,例如 DNS 地址。”
  • 方法 3:有状态的 DHCPv6(无SLAAC) - “我可以给您默认网关的地址。您需要向有状态的 DHCPv6 服务器询问您的所有其他信息。”

方法 1:SLAAC

SLAAC是一种允许设备在没有DHCPv6服务的情况下创建自己的GUA的方法。使用 SLAAC,设备根据本地路由器的 ICMPv6 路由器通告 (RA) 消息获取必要信息。

默认情况下,RA 消息会提示接收设备使用 RA 消息中的信息创建其自己的 IPv6 GUA及其他必要信息。DHCPv6 服务器的服务不是必需项。

SLAAC 是无状态的,也就是说没有中央服务器(例如有状态DHCPv6 服务器)来分配GUA和维持设备及其地址的清单。借助 SLAAC,客户端设备使用 RA 消息中的信息创建其自己的GUA。如图中所示,地址的两部分生成如下:

  • 前缀 -这是在 RA 消息中通告的。

  • 接口 ID -使用 EUI-64 流程或通过生成一个随机 64 位数字产生,取决于设备的操作系统。

该图显示了局域网,其中路由器正在向 PC 发送 ICMPv6 路由器通告消息。个人电脑的 IPv6 地址为 2001:db8:acad:1:fc99:47ff:fe75:cee0/64。这是一个图形,表示在RA消息中接收到的网络前缀是2001:db8:acad:1:,由客户端设备EUI-64或随机64位数字创建的接口ID是fc99:47ff:fe75:cee0。

ICMPv6 RS 和 RA 消息


方法 2:SLAAC 和无状态 DHCPv6

路由器的接口可配置为使用 SLAAC 和无状态 DHCPv6 或仅使用有状态 DHCPv6 发送路由器通告。

如图所示,使用此方法,RA 消息建议设备使用以下内容:

  • SLAAC创建自己的IPv6 GUA。

  • 路由器LLA,是RA源IPv6地址,作为默认网关地址。

  • 使用无状态 DHCPv6 服务器获取其他信息,例如 DNS 服务器地址和域名。

注意: 使用无状态 DHCPv6 服务器分配 DNS 服务器地址和域名。它不分配 GUA。

该图显示了局域网和一台正在向路由器发送RS消息(标记为#1)的PC机。路由器正在发送作为回复的RA 消息(标记为#2)。PC还向无状态的 DHCPv6 服务器发送一条请求消息(标记为#3)。

ICMPv6 RS 和 RA 消息


方法 3:有状态的DHCPv6

路由器接口可以配置为仅使用有状态的DHCPv6发送RA。

有状态 DHCPv6 与 IPv4 的 DHCP 相似。设备可以从有状态 DHCPv6 服务器自动接收编址信息,包括GUA、前缀长度和 DNS 服务器地址。

如图所示,使用此方法,RA 消息建议设备使用以下内容:

  • 路由器LLA,是RA源IPv6地址,作为默认网关地址。

  • 使用有状态 DHCPv6 服务器获取GUA、DNS 服务器地址、域名和其他必要信息。

该图显示了局域网和一台正在向路由器发送消息(标记为#1)的PC机。路由器正在向PC发送消息(标记为#2)。PC还向服务器发送了一条消息(标记为#3)。

ICMPv6 RS 和 RA 消息

使用有状态 DHCPv6 服务器分配并维持哪台设备接收哪个 IPv6 地址的清单。IPv4 的 DHCP 是有状态的。

注意: 默认网关地址仅可从 RA 消息中动态获取。无状态或有状态 DHCPv6 服务器均不提供默认网关地址。


EUI-64 流程和随机生成

当 RA 消息为 SLAAC 或 SLAAC 和无状态 DHCPv6 时,客户端必须生成自己的接口 ID。客户端从 RA 消息中获知地址的前缀部分,但必须创建自己的接口 ID。如图所示,接口 ID 可使用 EUI-64 流程或随机生成的 64 位数字创建。

该图显示了路由器正在向 PC 发送 ICMPv6 路由器通告消息(标记为#1)。在标记为#2的步骤中显示了PC,它从RA消息中创建其/ 64前缀,并使用EUI-64或64位随机数创建其接口ID。

ICMPv6 RS 和 RA 消息


EUI-64 流程

IEEE 定义了扩展唯一标识符 (EUI) 或修改的 EUI-64 流程。该流程使用客户端的 48 位以太网 MAC 地址,并在该 48 位 MAC 地址的中间插入另外 16 位来创建 64 位接口 ID。

以太网 MAC 地址一般使用十六进制表示,由两部分组成:

  • 组织唯一标识符 (OUI) - OUI 为 IEEE 分配的 24 位(6 个十六进制数字)厂商代码。

  • 设备标识符 - 设备标识符是通用 OUI 内的唯一 24 位(6 个十六进制数字)值。

EUI-64 接口 ID 以二进制表示,共分三个部分:

  • 客户端 MAC 地址的 24 位 OUI,但是第 7 位(通用/本地 (U/L) 位)颠倒。这意味着,如果第 7 位是 0,则它会变为 1,反之亦然。

  • 插入的 16 位值 fffe(十六进制)。

  • 客户端 MAC 地址的 24 位设备标识符。

该图是 EUI-64 流程图,它使用 R1 千兆以太网 MAC 地址,即 fc99:4775:cee0。

该图显示了 EUI-64 流程中的步骤。在图的顶部是MAC地址fc:99:47:75:ce:e0。第1步:拆分 MAC 地址,OUI fc:99:47的前24位二进制是1111 1100 1001 1001 0100 0111。设备的最后24位标识为75:ce:e0,二进制是1111 0101 1100 1110 1110 0000。第2步:插入ffee二进制表示变为1111 1100 1001 1001 0100 0111 1111 1111 1111 1110 1110 1111 0101 1100 1110 1110 0000。第3步:颠倒u/l位。从左边开始的第7位从0变成了1。二进制地址现在是1111 1110 1001 1001 0100 0111 1111 1111 1111 1110 1110 1111 0101 1100 1110 1110 0000。修改后的十六进制记法的EUI-64接口ID现在是fe:99:47:ff:fe:75:ce:e0。

ipconfig 命令的示例输出显示了使用 SLAAC 和 EUI-64 流程动态创建的 IPv6 GUA。识别地址可能是使用EUI-64创建的一个简单方法是位于接口ID中间的 fffe

EUI-64 优势在于可以使用以太网 MAC 地址确定接口 ID。这也允许网络管理员使用唯一 MAC 地址轻松跟踪终端设备的 IPv6 地址。然而,这引起了许多用户的隐私担忧,他们担心自己的数据包可能会被追踪到实际的物理计算机。出于这些顾虑,可以转而使用随机生成的接口 ID。

# EUI-64 生成的接口 ID

C:\> ipconfig
Windows IP Configuration
Ethernet adapter Local Area Connection:
Connection-specific DNS Suffix . :
IPv6 Address. . . . . . . . . . . : 2001:db8:acad:1:fc99:47ff:fe75:cee0
Link-local IPv6 Address . . . . . : fe80::fc99:47ff:fe75:cee0
Default Gateway . . . . . . . . . : fe80::1
C:\ >

随机生成的接口 ID

根据操作系统,设备可以使用随机生成的接口 ID,而不使用 MAC 地址和 EUI-64 流程。从 Windows Vista 开始,Windows 使用随机生成的接口 ID,而不是 EUI-64 创建的接口 ID。Windows XP 和之前的 Windows 操作系统均使用 EUI-64。

如图所示,接口 ID 创建后(无论是使用 EUI-64 流程还是通过随机生成),它都可以在 RA 消息中结合 IPv6 前缀来创建GUA。

# 随机生成的 64 位接口 ID

C:\> ipconfig
Windows IP Configuration
Ethernet adapter Local Area Connection:
   Connection-specific DNS Suffix  . :
   IPv6 Address. . . . . . . . . . . : 2001:db8:acad:1:50a5:8a35:a5bb:66e1
   Link-local IPv6 Address . . . . . : fe80::50a5:8a35:a5bb:66e1
   Default Gateway . . . . . . . . . : fe80::1
C:\>

注意: 为确保任何 IPv6 单播地址的唯一性,客户端可以使用重复地址检测 (DAD) 流程。这与 ARP 请求其地址的流程相似。如该请求没有响应,则地址是唯一的。


IPv6 LLA的动态编址

动态 LLA

所有 IPv6 设备都必须有 IPv6 LLA。与 IPv6 GUA一样,您也可以动态创建 LLA。无论您如何创建LLA(和GUA),重要的是要验证所有IPv6地址配置。本主题介绍动态生成的 LLA和 IPv6 配置验证。

该图显示了如何使用fe80::/10 前缀和通过 EUI-64 流程或随机生成的 64 位数字创建的接口 ID 动态创建LLA。


Windows上的动态LLA

操作系统,如Windows,通常会对SLAAC创建的GUA和动态分配的LLA使用相同的方法。请参阅之前显示的以下示例中突出显示的区域。

EUI-64 生成的接口 ID

C:\> ipconfig
Windows IP Configuration
Ethernet adapter Local Area Connection:
Connection-specific DNS Suffix . :
IPv6 Address. . . . . . . . . . . : 2001:db8:acad:1:fc99:47ff:fe75:cee0
Link-local IPv6 Address . . . . . : fe80::fc99:47ff:fe75:cee0
Default Gateway . . . . . . . . . : fe80::1
C:\>

随机生成的 64 位接口 ID

C:\> ipconfig
Windows IP Configuration
Ethernet adapter Local Area Connection:
   Connection-specific DNS Suffix  . :
   IPv6 Address. . . . . . . . . . . : 2001:db8:acad:1:50a5:8a35:a5bb:66e1
   Link-local IPv6 Address . . . . . : fe80::50a5:8a35:a5bb:66e1
   Default Gateway . . . . . . . . . : fe80::1
C:\>

思科路由器上的动态LLA

当为接口分配GUA时,思科路由器会自动创建 IPv6 LLA。默认情况下,思科 IOS 路由器使用 EUI-64 为 IPv6 接口上的所有LLA生成接口 ID。对于串行接口,路由器会使用以太网接口的 MAC 地址。回想一下,LLA在该链路或网络上必须具有唯一性。但是,使用动态分配的LLA的缺点在于其接口 ID 较长,因此很难识别并记住分配的地址。示例显示了路由器 R1 千兆以太网0/0/0 接口的 MAC 地址。该地址用于在同一接口上动态创建LLA,也用于串行0/1/0接口。

为了更容易在路由器上识别和记忆这些地址,通常要在路由器上静态配置 IPv6 LLA。

在路由器 R1 上使用 EUI-64 的### IPv6 LLA

R1# show interface gigabitEthernet 0/0/0
GigabitEthernet0/0/0 is up, line protocol is up
  Hardware is ISR4221-2x1GE, address is 7079.b392.3640 (bia 7079.b392.3640)
(Output omitted)
R1# show ipv6 interface brief
GigabitEthernet0/0/0   [up/up]
    FE80::7279:B3FF:FE92:3640
    2001:DB8:ACAD:1::1
GigabitEthernet0/0/1   [up/up]
    FE80::7279:B3FF:FE92:3641
    2001:DB8:ACAD:2::1
Serial0/1/0            [up/up]
    FE80::7279:B3FF:FE92:3640
    2001:DB8:ACAD:3::1
Serial0/1/1            [down/down]
    unassigned
R1#

验证 IPv6 地址配置

示例拓扑

show ipv6 interface brief

show ipv6 interface brief命令会显示以太网接口的 MAC 地址。EUI-64 使用此 MAC 地址生成LLA的接口 ID。此外,show ipv6 interface brief命令用于显示各个接口的缩略输出。与接口位于同一行的 [up/up] 输出指示第 1 层/第 2 层接口状态。这与等效的 IPv4 命令的状态和协议列相同。

注意,每个接口有两个 IPv6 地址。每个接口的第二个地址是已配置的 GUA。第一个地址以 fe80 开头,是接口的链路本地单播地址。回想一下,分配GUA后,LLA会自动添加到接口。

另请注意,R1 的 Serial 0/0/0 本地链路地址与其 GigabitEthernet 0/0 接口相同。串行接口没有以太网 MAC 地址,因此思科 IOS 使用第一个可用的以太网接口的 MAC 地址。这样可行,因为本地链路接口仅在该链路上具有唯一性。

# 路由器R1执行 show ipv6 interface brief 命令

R1# show ipv6 interface brief
GigabitEthernet0/0/0 [up/up]
FE80::1:1
2001:DB8:ACAD:1::1
GigabitEthernet0/0/1 [up/up]
FE80::1:2
2001:DB8:ACAD:2::1
Serial0/1/0 [up/up]
FE80::1:3
2001:DB8:ACAD:3::1
Serial0/1/1 [down/down]
unassigned
R1#

show ipv6 route

show ipv6 route 命令可用于检验 IPv6 网络和特定 IPv6 接口地址已添加到 IPv6 路由表中。该 show ipv6 route 命令将仅显示 IPv6 网络,而不显示 IPv4 网络。

在路由表中,路由旁边的 C 表示这是一个直连网络。当路由器接口配置了GUA并处于“up/up”状态时,IPv6 前缀和前缀长度会作为直连路由添加至 IPv6 路由表。

注意: L表示本地路由,即为接口分配的特定 IPv6 地址。这不是一个 LLA。由于LLA不是可路由地址,因此它们不包括在路由表中。

接口上配置的 IPv6 GUA也作为本地路由添加到路由表中。本地路由具有 /128 前缀。路由表使用本地路由来有效处理目的地址为路由器接口地址的数据包。

# 路由器R1执行 show ipv6 route 命令

R1# show ipv6 route
IPv6 Routing Table - default - 7 entries
Codes: C - Connected, L - Local, S - Static, U - Per-user Static route

C 2001:DB8:ACAD:1::/64 [0/0]
via GigabitEthernet0/0/0, directly connected
L 2001:DB8:ACAD:1::1/128 [0/0]
via GigabitEthernet0/0/0, receive
C 2001:DB8:ACAD:2::/64 [0/0]
via GigabitEthernet0/0/1, directly connected
L 2001:DB8:ACAD:2::1/128 [0/0]
via GigabitEthernet0/0/1, receive
C 2001:DB8:ACAD:3::/64 [0/0]
via Serial0/1/0, directly connected
L 2001:DB8:ACAD:3::1/128 [0/0]
via Serial0/1/0, receive
L FF00::/8 [0/0]
via Null0, receive
R1#

ping

IPv6 的 ping 命令和 IPv4 中这条命令的用法相同,只不过使用的是 IPv6 地址。如示例中所示,命令的作用是验证 R1 和 PC1 之间的第 3 层连通性。从路由器对LLA实施 ping 命令时,思科 IOS 会提示用户确认出接口。由于目的LLA可以在一个或多个链路或网络上使用,路由器需要知道要将 ping 发送到哪个接口。

# 路由器R1执行 ping 命令

R1# ping 2001:db8:acad:1::10
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 2001:DB8:ACAD:1::10, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/1/1 ms
R1#

IPv6 组播地址

分配的 IPv6 组播地址

IPv6 组播地址类似于 IPv4 组播地址。回想一下,组播地址用于发送单个数据包到一个或多个目标(组播组)。IPv6 组播地址的前缀为ff00::/8。

注意: 组播地址仅可用作目的地址,不能用作源地址。

IPv6 组播地址分为两种类型:

  • 知名组播地址

  • 请求节点组播地址


知名 IPv6 组播地址

已分配的知名IPv6 组播地址。分配的组播地址是为预先定义的设备组保留的组播地址。分配的组播地址是用于到达运行通用协议或服务的设备组的单个地址。分配的组播地址用在特定的协议环境,例如 DHCPv6。

这些是两种常见的 IPv6 分配组播组:

  • ff02:全节点组播组 - 这是一个包含所有支持 IPv6 的设备的组播组。发送到该组的数据包由该链路或网络上的所有 IPv6 接口接收和处理。这与 IPv4 中的广播地址具有相同的效果。图中显示使用全节点组播地址进行通信的示例。IPv6 路由器将ICMPv6 RA 消息发送给全节点组播组。

  • ff02:全路由器组播组 - 这是所有IPv6路由器加入的组播组。当在IPv6路由器全局模式下启用ipv6 unicast-routing命令后,该路由器即成为该组的成员。发送到该组的数据包由该链路或网络上的所有 IPv6 路由器接收和处理。

该图显示了两台IPv6 地址为2001:DB8: ACAD1:10/64 和 2001: DB8: ACAD1:20/64的PC、一台 IPv6 地址为2001: db8: ACAD1:8/64的服务器和一台IPv6 地址为2001:db8:acad:1::9/64的打印机连接到交换机,交换机连接到路由器。上图显示了fe80::1的源IPv6地址和ff02::1的目的IPv6地址。

IPv6 全节点组播:RA消息


请求节点 IPv6 组播地址

请求节点组播地址类似于全节点组播地址。请求节点组播地址的优势在于它被映射到特殊的以太网组播地址。这使得以太网网卡可以通过检查目的 MAC 地址过滤该帧,而不是将它发送给 IPv6 流程来判断该设备是否是 IPv6 数据包的既定目标。

该图显示了三台PC正在接收来自路由器的消息。每台PC都有以下信息性文本:我的以太网网卡确定此组播不是给我的。上图表明,目的 MAC 地址是组播,目的 IPv6 地址是请求节点组播。


IPv6 网络的子网

使用子网 ID 划分子网

回想一下,使用IPv4时,我们必须从主机部分借用位来创建子网。这是因为对IPv4来说,子网划分是事后才想到的。但是,IPv6 的设计考虑到了子网划分。IPv6 GUA中的一个单独的子网ID字段用于创建子网。如图所示,子网ID字段是全局路由前缀和接口ID之间的区域。

该图显示了 GUA 的各个部分。首先是48位全局路由前缀,然后是16位子网ID,最后是64位接口ID。图下的文字显示:一个/ 48路由前缀 + 16 位子网 ID = /64前缀

带有 16 位子网 ID 的 GUA

128 位地址的好处在是,它可以为每个网络支持足够多的子网并为每个子网支持足够多的主机。地址保留不是问题。例如,如果全局路由前缀是a /48,并且使用一个典型的64位接口ID,这将创建一个16位子网ID:

  • 16 位子网 ID - 创建多达 65,536 个子网。

  • 64 位子网 ID - 每个子网支持多达 1800亿亿个主机 IPv6 地址(即 18,000,000,000,000,000,000)。

注意: 也可以将子网划分为 64 位接口 ID(或主机部分),但是很少这么要求。

IPv6 子网划分也比 IPv4 容易实施,因为不需要转换为二进制。要确定下一个可用子网,只需要将十六进制数相加。


IPv6 子网划分示例

例如,假设一个组织分配了 2001:db8:acad::/48 全局路由前缀,并采用 16 位子网 ID。这将允许组织创建65,536个 /64 子网,如图所示。注意,所有子网的全局路由前缀是相同的。只为每个子网递增子网 ID 的十六位字节数(以十六进制形式)。

使用16位子网 ID 划分子网


IPv6 子网分配

由于有 65,536 个子网可供选择,网络管理员的任务就变为设计一个逻辑方案来分配网络地址。

如图所示,示例拓扑需要五个子网,每个局域网一个,以及R1和R2之间的串行链路一个。与IPv4的示例不同,IPv6的串行链路子网将具有与局域网相同的前缀长度。虽然这可能会“浪费”地址,但是使用 IPv6 时地址保留并不是问题。

该图显示了四台PC(PC1、PC2、PC3 和 PC4),每台PC的接口 ID 为::10。每台PC 都连接到一台交换机。
PC1位于网络2001:db8:acad:1::/64中,通过交换机连接到路由器1的G0/0/0接口,接口ID::1。
PC2位于网络2001:db8:acad:2::/64中,通过交换机连接到路由器1的G0/0/1接口,接口ID::1。
PC3位于网络2001:db8:acad:4::/64中,通过交换机连接到路由器2的G0/0/0接口,接口ID::1。
PC4位于网络2001:db8:acad:5::/64中,通过交换机连接到路由器2的G0/0/1接口,接口ID::1。

在2001:db8:acad:3::/64网络中,路由器1和2通过它们的S0/1/0接口进行连接,R1的接口ID为::1,R2的接口ID为::2。

在本示例中 5 个 IPv6 子网的分配将使用 0001 到 0005 的子网 ID 字段。每个 /64 子网提供的地址都远多于所需要的地址。

该图显示了地址块的子网:2001:db8:acad::/48。
这些子网分别是:
2001:db8:acad:0000::/64,
2001:db8:acad:0001::/64,
2001:db8:acad:0002::/64,
2001:db8:acad:0003::/64,
2001:db8:acad:0004::/64,
2001:db8:acad:0005::/64,
2001:db8:acad:0006::/64,
2001:db8:acad:0007::/64,
2001:db8:acad:0008::/64,
2001:db8:acad:ffff::/64,

注释显示:从65,536个可用子网中分配了5个子网,并表明分配的5个子网是:
2001:db8:acad:0001::/64,
2001:db8:acad:0002::/64,
2001:db8:acad:0003::/64,
2001:db8:acad:0004::/64,
2001:db8:acad:0005::/64。


配置了 IPv6 子网的路由器

与配置 IPv4 类似,示例显示了每个路由器接口都已经配置到不同的 IPv6 子网中。

# 路由器 R1 上的IPv6 地址配置

R1(config)# interface gigabitethernet 0/0/0
R1(config-if)# ipv6 address 2001:db8:acad:1::1/64
R1(config-if)# no shutdown
R1(config-if)# exit
R1(config)# interface gigabitethernet 0/0/1
R1(config-if)# ipv6 address 2001:db8:acad:2::1/64
R1(config-if)# no shutdown
R1(config-if)# exit
R1(config)# interface serial 0/1/0
R1(config-if)# ipv6 address 2001:db8:acad:3::1/64
R1(config-if)# no shutdown

总结

  • IPv4 的问题

理论上,IPv4 最多有 43 亿个地址。私有地址和NAT一起帮助减缓了IPv4地址空间的消耗。考虑到互联网用户的不断增加、有限的 IPv4 地址空间、NAT 问题和物联网等问题,是时候开始向 IPv6 过渡了。在不久的将来,IPv4和IPv6都将共存,并且过渡将需要几年的时间。IETF 已经创建了各种协议和工具来协助网络管理员将网络迁移到 IPv6。迁移技术可以分为三类:双堆栈、隧道和转换。

  • IPv6 地址表示方法

IPv6 地址长度为 128 位,写作十六进制值字符串。每 4 位以一个十六进制数字表示;共 32 个十六进制值。书写 IPv6 地址的首选格式为 x: x: x: x: x: x: x: x,每个“x”均包括四个十六进制值。例如:2001:0db8:0000:1111:0000:0000:0000:0200。有两条规则可帮助减少表示一个 IPv6 地址所需数字的数目。第一条有助于缩短 IPv6 地址记法的规则是省略十六进制数中的所有前导 0(零)。例如:2001:db8:0:1111:0:0:0:200。第二条有助于缩短 IPv6 地址记法的规则是使用双冒号 (::) 替换任何由一个或多个全由 0 组成的16 位十六进制数组成的连续字符串。例如:2001:db8:0:1111::200。

  • IPv6 地址类型

IPv6 地址分为三种类型:单播、组播和任播。IPv6 不使用点分十进制子网掩码记法。与IPv4一样,前缀长度以斜线记法表示,用于表示 IPv6 地址的网络部分。IPv6 单播地址用于唯一标识支持 IPv6 的设备上的接口。IPv6地址通常有两个单播地址:GUA和LLA。IPv6 唯一本地地址具有以下用途:它们用于站点内或数量有限的站点之间的本地编址,它们可用于永远不需要访问其他网络的设备,并且它们不会全局路由或转换为全局 IPv6 地址。IPv6 全局单播地址 (GUA) 具有全局唯一性,可在 IPv6互联网上路由。这些地址相当于公有 IPv4 地址。GUA 有三个部分:全局路由前缀、子网 ID 和接口 ID。IPv6 链路本地地址(LLA)允许设备与同一链路上支持 IPv6 的其他设备通信,并且只能在该链路(子网)上通信。设备可以静态或动态地获取LLA。

  • GUA 和 LLA 静态配置

在接口上配置 IPv4 地址的思科 IOS 命令是ip address IP 地址 子网掩码。相比之下,在接口上配置 IPv6 GUA 的命令是 ipv6 address ipv6 地址/前缀长度 。与使用 IPv4 一样,在客户端配置静态地址并不能扩展至更大的环境。因此,多数 IPv6 网络的管理员会启用 IPv6 地址的动态分配。手动配置LLA可以让您创建的地址便于识别和记忆。一般来说,只需要在路由器上创建可识别的LLA。LCA 可以使用 ipv6 address ipv6-链路本地地址 link-local 命令手动配置。

  • IPv6 GUA的动态编址

设备通过ICMPv6消息来动态地获取GUA。IPv6 路由器每 200 秒定期将 ICMPv6 RA 消息发送到网络上所有支持 IPv6 的设备。在响应发送 ICMPv6 路由器请求 (RS) 消息的主机时,也会发送 RA 消息,该消息是对RA消息的请求。ICMPv6 RA消息包括:网络前缀和前缀长度、默认网关地址、DNS地址和域名。RA 消息有三种方法:SLAC、带无状态 DHCPv6 服务器的 SLAAC 和有状态的 DHCPv6(无 SLAAC)。借助 SLAAC,客户端设备使用 RA 消息中的信息创建其自己的GUA,因为该消息包含前缀和接口ID。对于带有无状态DHCPv6的SLAAC, RA消息建议设备使用SLAAC创建自己的IPv6 GUA,使用路由器LLA作为默认网关地址,并使用无状态DHCPv6服务器获取其他必要的信息。对于有状态的DHCPv6, RA建议设备使用路由器LLA作为默认网关地址,使用有状态的DHCPv6服务器获得GUA、DNS服务器地址、域名和所有其他必要的信息。接口 ID 可使用 EUI-64 流程或随机生成的 64 位数字创建。EUI流程使用客户端的 48 位以太网 MAC 地址,并在该 MAC 地址的中间插入另外 16 位来创建 64 位接口 ID。根据操作系统,设备可以使用随机生成的接口 ID。

  • IPv6 LLA的动态编址

所有 IPv6 设备都必须有 IPv6 LLA。LLA 可以手动配置或动态创建。操作系统,如Windows,通常会对SLAAC创建的GUA和动态分配的LLA使用相同的方法。当为接口分配GUA时,思科路由器会自动创建 IPv6 LLA。默认情况下,思科 IOS 路由器使用 EUI-64 为 IPv6 接口上的所有LLA生成接口 ID。对于串行接口,路由器会使用以太网接口的 MAC 地址。为了更容易在路由器上识别和记忆这些地址,通常要在路由器上静态配置 IPv6 LLA。要验证 IPv6 地址配置,请使用以下三个命令:

show ipv6 interface brief
show ipv6 route
ping
  • IPv6 组播地址

IPv6有两种类型的组播地址:知名组播地址和请求节点组播地址。分配的组播地址是为预先定义的设备组保留的组播地址。已分配的知名组播地址。两个通用 IPv6 分配的组播组是:ff02::1 全节点组播组和 ff02::2 全路由器组播组。请求节点组播地址类似于全节点组播地址。请求节点组播地址的优势在于它被映射到特殊的以太网组播地址。

  • IPv6 网络的子网

IPv6 的设计考虑到了子网划分。IPv6 GUA中的一个单独的子网ID字段用于创建子网。子网ID字段是全局路由前缀和接口ID之间的区域。128 位地址的好处在于,它可以为每个网络的每个子网支持足够多的子网和主机。地址保留不是问题。例如,如果全局路由前缀是a /48,并且使用一个典型的64位接口ID,这将创建一个16位子网ID:

  1. 16 位子网 ID - 创建多达 65,536 个子网。
  2. 64 位子网 ID - 每个子网支持多达 1800亿亿个主机 IPv6 地址(即 18,000,000,000,000,000,000)。

由于有 65,536 个子网可供选择,网络管理员的任务就变为设计一个逻辑方案来分配网络地址。使用 IPv6 时地址保留并不是问题。与配置 IPv4 类似,每个路由器接口都可以配置到不同的 IPv6 子网中。


0%