IPv6 地址介绍
IPv6 地址被表示为以冒号(:)分隔的一连串 16 比特的十六进制数。每个 IPv6 地址被分为8组,每组的 16 比特用 4 个十六进制数来表示,组和组之间用冒号隔开,比如:2001:0000:130F:0000:0000:09C0:876A:130B。
为了简化 IPv6 地址的表示,对于 IPv6 地址中的“0”可以有下面的处理方式:
• 每组中的前导“0”可以省略,即上述地址可写为 2001:0:130F:0:0:9C0:876A:130B。
• 如果地址中包含一组或连续多组均为 0 的组,则可以用双冒号“::”来代替,即上述地址可写为 2001:0:130F::9C0:876A:130B。
IPv6 地址分类
IPv6 单播地址
未指定地址
IPv6中的未指定地址即 0:0:0:0:0:0:0:0/128 或者::/128。该地址可以表示某个接口或者节点还没有IP地址,可以作为某些报文的源IP地址(例如在NS报文的重复地址检测中会出现)。源IP地址是::的报文不会被路由设备转发。
地址类型 | 二进制前缀 | IPv6标识 |
未指定 | 00...0(128bits) | ::/128 |
环回地址
IPv6中的环回地址即 0:0:0:0:0:0:0:1/128 或者::1/128。环回与IPv4中的127.0.0.1作用相同,主要用于设备给自己发送报文。该地址通常用来作为一个虚接口的地址(如Loopback接口)。实际发送的数据包中不能使用环回地址作为源IP地址或者目的IP地址。
地址类型 | 二进制前缀 | IPv6标识 |
环回地址 | 00...1(128bits) | ::1/128 |
全球单播地址
全球单播地址是带有全球单播前缀的IPv6地址,其作用类似于IPv4中的公网地址。这种类型的地址允许路由前缀的聚合,从而限制了全球路由表项的数量。
地址类型 | 二进制前缀 | IPv6标识 |
全球单播地址 | 0010 | 2000::/3 |
链路本地地址
链路本地地址是IPv6中的应用范围受限制的地址类型,只能在连接到同一本地链路的节点之间使用。它使用了特定的本地链路前缀FE80::/10(最高10位值为1111111010),同时将接口标识添加在后面作为地址的低64比特。
当一个节点启动IPv6协议栈时,启动时节点的每个接口会自动配置一个链路本地地址(其固定的前缀+EUI-64规则形成的接口标识)。这种机制使得两个连接到同一链路的IPv6节点不需要做任何配置就可以通信。所以链路本地地址广泛应用于邻居发现,无状态地址配置等应用。
以链路本地地址为源地址或目的地址的IPv6报文不会被路由设备转发到其他链路。
地址类型 | 二进制前缀 | IPv6标识 |
Link-local地址 | 1111111010 | FE80::/10 |
唯一本地地址
唯一本地地址是另一种应用范围受限的地址,它仅能在一个站点内使用。由于本地站点地址的废除,唯一本地地址被用来代替本地站点地址。
唯一本地地址的作用类似于IPv4中的私网地址,任何没有申请到提供商分配的全球单播地址的组织机构都可以使用唯一本地地址。唯一本地地址只能在本地网络内部被路由转发而不会在全球网络中被路由转发。
地址类型 | 二进制前缀 | IPv6标识 |
Unique local unicast address | 1111 110 | FC00::/7 |
IPv6 组播地址
地址 | 应用 |
FF01::1 | 表示节点本地范围所有节点的组播地址 |
FF02::1 | 表示链路本地范围所有节点的组播地址 |
FF01::2 | 表示节点本地范围所有路由器的组播地址 |
FF02::2 | 表示链路本地范围所有路由器的组播地址 |
另外,还有一类组播地址:被请求节点(Solicited-Node)组播地址。
被请求节点组播地址通过节点的单播或任播地址生成。当一个节点具有了单播或任播地址,就会对应生成一个被请求节点组播地址,并且加入这个组播组。一个单播地址或任播地址对应一个被请求节点组播地址。该地址主要用于邻居发现机制和地址重复检测功能。
IPv6中没有广播地址,也不使用ARP。但是仍然需要从IP地址解析到MAC地址的功能。在IPv6中,这个功能通过邻居请求NS(Neighbor Solicitation)报文完成。当一个节点需要解析某个IPv6地址对应的MAC地址时,会发送NS报文,该报文的目的IP就是需要解析的IPv6地址对应的被请求节点组播地址;只有具有该组播地址的节点会检查处理。
被请求节点组播地址由前缀FF02::1:FF00:0/104和单播地址的最后24位组成。
【示例】
[AR1]display ipv6 interface GigabitEthernet 0/0/0
GigabitEthernet0/0/0 current state : UP
IPv6 protocol current state : UP
IPv6 is enabled, link-local address is FE80::2E0:FCFF:FE99:6146
Global unicast address(es):
2021:6:27::1, subnet is 2021:6:27::/126
Joined group address(es):
FF02::1:FF00:1 <<<<<自动加组
FF02::2
FF02::1
FF02::1:FF99:6146
MTU is 1500 bytes
ND DAD is enabled, number of DAD attempts: 1
ND reachable time is 30000 milliseconds
ND retransmit interval is 1000 milliseconds
Hosts use stateless autoconfig for addresses
IPv6 任播地址
用来标识一组接口(通常这组接口属于不同的节点)。发送到任播地址的数据报文
被传送给此地址所标识的一组接口中距离源节点最近(根据使用的路由协议进行度量)的一
个接口。
IPv6 邻居发现协议
IPv6 邻居发现(Neighbor Discovery,ND)协议使用五种类型的 ICMPv6 消息,实现下面一些功能:地址解析、验证邻居是否可达、重复地址检测、路由器发现/前缀发现、地址自动配置和重定向等功能。
邻居发现协议使用的ICMPv6 消息的类型及作用如下表所示。
ICMPv6 消息 | 类型号 | 作用 |
邻居请求消息NS(Neighbor Solicitation) | 135 | 获取邻居的链路层地址 |
验证邻居是否可达 | ||
进行重复地址检测 | ||
邻居通告消息NA(Neighbor Advertisement) | 136 | 对NS消息进行响应 |
节点在链路层变化时主动发送NA消息,向邻居节点通告本节 点的变化信息 | ||
路由器请求消息RS(Router Solicitation) | 133 | 节点启动后,通过RS消息向路由器发出请求,请求前缀和其 他配置信息,用于节点的自动配置 |
路由器通告消息RA(Router Advertisement) | 134 | 对RS消息进行响应 |
在没有抑制RA消息发布的条件下,路由器会周期性地发布RA 消息,其中包括前缀信息选项和一些标志位的信息 | ||
重定向消息(Redirect) | 137 | 当满足一定的条件时,缺省网关通过向源主机发送重定向消 息,使主机重新选择正确的下一跳地址进行后续报文的发送 |
IPv6 邻居状态机
RFC中定义了5种邻居状态,分别是:未完成(Incomplete)、可达(Reachable)、陈旧(Stale)、延迟(Delay)、探查(Probe)。
下面以A、B两个邻居节点之间相互通信过程中A节点的邻居状态变化为例(假设A、B之前从未通信),说明邻居状态迁移的过程。
- A先发送NS报文,并生成缓存条目,此时,邻居状态为Incomplete。
- 若B回复NA报文,则邻居状态由Incomplete变为Reachable,否则固定时间后邻居状态由Incomplete变为Empty,即删除表项。
- 经过邻居可达时间,邻居状态由Reachable变为Stale,即不确定邻居节点的可达性。
- 如果在Reachable状态,A收到B的非请求NA报文,且报文中携带的B的链路层地址和表项中不同,则邻居状态马上变为Stale。
- 在STALE状态到达老化时间后进入Delay状态。
- 在经过一段固定时间(5秒)后,邻居状态由Delay变为Probe,其间若有NA应答,则邻居状态由Delay变为Reachable。
- 在Probe状态,A每隔一定时间间隔(1秒)发送单播NS,发送固定次数(3次)后,有应答则邻居状态变为Reachable,否则邻居状态变为Empty,即删除表项。
【真机显示效果】
[H3C]display ipv6 neighbors 2021:7:1::2
Type: S-Static D-Dynamic O-Openflow R-Rule IS-Invalid static
IPv6 address MAC address VID Interface State T Aging
2021:7:1::2 8005-88b5-8599 -- XGE1/0/10.10 REACH D 19
[H3C]display ipv6 neighbors 2021:7:1::2
Type: S-Static D-Dynamic O-Openflow R-Rule IS-Invalid static
IPv6 address MAC address VID Interface State T Aging
2021:7:1::2 8005-88b5-8599 -- XGE1/0/10.10 STALE D 1
[H3C]display ipv6 neighbors 2021:7:1::2
Type: S-Static D-Dynamic O-Openflow R-Rule IS-Invalid static
IPv6 address MAC address VID Interface State T Aging
2021:7:1::2 8005-88b5-8599 -- XGE1/0/10.10 DELAY D 1
实验数据
拓扑信息
配置信息
AR1:
#
interface GigabitEthernet0/0/0
ipv6 enable
ipv6 address 2021:6:27::1/126
#
[AR1]display ipv6 interface GigabitEthernet 0/0/0
GigabitEthernet0/0/0 current state : UP
IPv6 protocol current state : UP
IPv6 is enabled, link-local address is FE80::2E0:FCFF:FE99:6146
Global unicast address(es):
2021:6:27::1, subnet is 2021:6:27::/126
Joined group address(es):
FF02::1:FF00:1
FF02::2
FF02::1
FF02::1:FF99:6146
MTU is 1500 bytes
ND DAD is enabled, number of DAD attempts: 1
ND reachable time is 30000 milliseconds
ND retransmit interval is 1000 milliseconds
Hosts use stateless autoconfig for addresses
AR2:
#
interface GigabitEthernet0/0/0
ipv6 enable
ipv6 address 2021:6:27::2/126
#
[AR2]display ipv6 interface GigabitEthernet 0/0/0
GigabitEthernet0/0/0 current state : UP
IPv6 protocol current state : UP
IPv6 is enabled, link-local address is FE80::2E0:FCFF:FE4E:6CAF
Global unicast address(es):
2021:6:27::2, subnet is 2021:6:27::/126
Joined group address(es):
FF02::1:FF00:2
FF02::2
FF02::1
FF02::1:FF4E:6CAF
MTU is 1500 bytes
ND DAD is enabled, number of DAD attempts: 1
ND reachable time is 30000 milliseconds
ND retransmit interval is 1000 milliseconds
Hosts use stateless autoconfig for addresses
测试过程
[AR1]ping ipv6 2021:6:27::2
PING 2021:6:27::2 : 56 data bytes, press CTRL_C to break
Reply from 2021:6:27::2
bytes=56 Sequence=1 hop limit=64 time = 80 ms
Reply from 2021:6:27::2
bytes=56 Sequence=2 hop limit=64 time = 20 ms
Reply from 2021:6:27::2
bytes=56 Sequence=3 hop limit=64 time = 30 ms
Reply from 2021:6:27::2
bytes=56 Sequence=4 hop limit=64 time = 30 ms
Reply from 2021:6:27::2
bytes=56 Sequence=5 hop limit=64 time = 30 ms
--- 2021:6:27::2 ping statistics ---
5 packet(s) transmitted
5 packet(s) received
0.00% packet loss
round-trip min/avg/max = 20/38/80 ms
邻居信息
[AR1]display ipv6 neighbors
-----------------------------------------------------------------------------
IPv6 Address : 2021:6:27::2
Link-layer : 00e0-fc4e-6caf State : STALE
Interface : GE0/0/0 Age : 14
VLAN : - CEVLAN: -
VPN name : Is Router: TRUE
Secure FLAG : UN-SECURE
IPv6 Address : FE80::2E0:FCFF:FE4E:6CAF
Link-layer : 00e0-fc4e-6caf State : STALE
Interface : GE0/0/0 Age : 14
VLAN : - CEVLAN: -
VPN name : Is Router: TRUE
Secure FLAG : UN-SECURE
-----------------------------------------------------------------------------
Total: 2 Dynamic: 2 Static: 0
交互报文
NS报文:
NA报文:
ICMP request报文:
ICMP reply报文: