ICMPv6协议
ICMPv6的协议类型是58 除了IPv4中的作用外 还添加了邻居发现、无状态自动配置、PMTU 等作用
邻居发现协议NDP
NDP 邻居发现协议 有如下功能
NDP使用ICMPv6的相关报文
- RS(Router Solicitation):路由器请求报文
- RA(Router Advertisement):路由器通告报文
- NS(Neighbor Solicitation):邻居请求报文
- NA(Neighbor Advertisement):邻居通告报文
地址解析
PCl准备访问PC2之前,首先在本地邻居表中查找PC2的IPv6地址对应的以太网MAC地址,如果查找到相关表项,则将发往PC2的数据包封装在以太数据帧中然后发出:如果没有找到PC2的MAC地址,则发送NS消息用来请求其链路层地址
用ICMPv6里面的type 135(NS 邻居请求)和type 136(NA 邻居的通告)发送
过程如下:
- PCl向PC2的请求节点的组播地址发送NS消息,该消息是通过类型为135的ICMPv6报文来承载,目标地址是PC2的IPv6单播地址
- PC2收到NS消息后,以单播的方式向PCl回应NA消息,该消息中包含了PC2的MAC地址。PC2还会将PCl的 IPv6地址和MAC地址添加至本地的邻居缓存表中
- PCl收到来自PC2的NA消息后,将PC2的IPv6地址以及它的MAC地址添加至本地的邻居缓存表中
假设PCl的IPv6地址为2001::1/64,PC2的IPv6地址为2001::2/64
DAD检查
DAD(Duplicate Address Detection)重复地址检测,类似于免费ARP的作用一样
用ICMPv6里面的type 135(NS 邻居请求)和type 136(NA 邻居的通告)发送
作用:用于地址分配或主机连接网络时检测重复的IPv4主机地址。
过程:节点向一个自己将使用的试验地址所在的Solicited-node组播组发送一个以该试验地址为请求的目标地址的邻居请求(NS)报文,如果收到某个其它站点回应的邻居通告(NA)报文,就证明该地址已被网络上使用,节点将不能使用该试验地址进行通信。这种情况下,网络管理员需要手动为该节点分配另外一个地址
无状态自动配置
网络节点向相连的路由器发送RS,请求地址前缀信息
路由器通过发送路由器通告RA,回复地址前缀信息
用ICMPv6里面的type 133(NS 邻居请求)和type 134(NA 邻居的通告)发送
举例如下:
[R1-GigabitEthernet0/0/0]dis this#interface GigabitEthernet0/0/0ipv6 enableipv6 address 2019::1/64undo ipv6 nd ra halt#Router Advertisement 用于回复RS报文,RS报文中包含IPv6地址或前缀信息
注1:华为默认不会发送RA报文,手工开启后默认200S发送一次,使用以下命令开启
[Huawei-GigabitEthernet0/0/0]undo ipv6 nd ra halt
注2:主动发起RA报文后,同样也会被邻居路由器收到,在邻居路由器上开启发送RS报文,便可以无状态自动配置接口IP地址
[Huawei-GigabitEthernet0/0/0]ipv6 address auto global
注3:路由器收到RA回复后,使用EUI64生成接口IPv6地址;主机(windows)收到RA回复后,使用软件随机生成IPv6地址(更加安全)