IPv6实验NDP地址解析和DAD_第1张图片

R1的IP和MAC

IPv6实验NDP地址解析和DAD_第2张图片

R2的IP和MAC

IPv6实验NDP地址解析和DAD_第3张图片

1      NDP地址解析

1.        所有路由器接入交换机后,手动配置接口IPv6,

配置举例:

#

ipv6

#

interface GigabitEthernet0/0/0

 ipv6 enable

 ipv6 address 2003::1/64

#

2.        接入网络后每台设备都发送NS(Neighbor Solicition)报文做DAD(Neighbor Unreachability Detection);源MAC为接口MAC,目的MAC为目的IP的组播MAC,源IP为未指定IP(::),目的IP为被请求节点的组播IP(即配置的IPv6或自动生成的link-local地址转换后的被请求节点组播地址),ICMPv6的的target address 为配置的IPv6或自动生成的link-local地址。总共3台设备6个包(每台设备的link-local和global)

IPv6实验NDP地址解析和DAD_第4张图片

3.        R1访问R2之前需要先得知R2的MAC地址,即发送NS(Neighbor Solicition)请求R2的MAC地址,源MAC为接口MAC,目的MAC为目的IP的组播MAC,源IP为接口global IP,目的IP为被请求节点的组播IP(R2的IP转换所得),ICMPv6的Type=135(NS),target address为目的IP(R2的IP),option携带自己的源MAC

IPv6实验NDP地址解析和DAD_第5张图片

4.        R2收到NS后,发现目的MAC是自己的组播MAC,目的IP是自己的组播IP,检查target address是自己的接口IP,单播回复NA(Neighbor Advertisement),因此源MAC是自己的MAC,目的MAC是R1的MAC(R2收到R1的NS后已经知道R1的IPv6和MAC映射关系,R1的NS携带了自己的MAC),源IP为接口IP,目的IP为NS的R2的IP,ICMP Type=136(NA),Flags的R位=1表示该节点为路由器S位=1表示收到NS后回应的NAO位=1表示更新当前缓存的链路层地址,因为这个包是收到NS后回复的NA,因此该NA的target address为NS的报文的target address,Option携带的是此NA消息发送者的链路层地址,回应组播NS的NA必须包含此选项。

IPv6实验NDP地址解析和DAD_第6张图片

5.        R1查看IP6的邻居,分别为global IP和link-local IP

IPv6实验NDP地址解析和DAD_第7张图片

6.        R2查看IPv6邻居

IPv6实验NDP地址解析和DAD_第8张图片

2      NDP DAD

R3配置与R1相同的IPv6地址,接入网络

interface GigabitEthernet0/0/0

 ipv6 enable

 ipv6 address 2003::1/64

#

1.        后发送NS接入网络后每台设备都发送NS(Neighbor Solicition)报文做DAD(Neighbor Unreachability Detection); 发出NS确定是否其他设备在使用该IPIPv6报文的目的IP2003::1请求节点组播地址FF02::1:FF00:1ICMPv6Target Address2003::1

IPv6实验NDP地址解析和DAD_第9张图片

2.        R1收到NS后发现与自己的IP冲突,回应NA,源地址是自己的IP,目的是所有节点组播地址FF02::1,相当于IPv4的免费ARPFlagsR=1表示该节点为路由器,S=0S位在邻居不可达检测中用作可达性确认,在组播的NADAD)和主动发送的 NA 中,S 比特一定不能置 1),O=1表示更新当前缓存的链路层地址,option携带的target链路层MAC是自己的MAC,通告自己的IPv6MAC对应关系。

IPv6实验NDP地址解析和DAD_第10张图片

3.        R3收到后提示冲突。

IPv6实验NDP地址解析和DAD_第11张图片

 

1      总结

1.        设备访问同网段的未知链路层地址的目的IP时,会先发送NS(Neighbor Solicition)消息请求 对方的链路层地址,类似IPv4的ARP请求,源MAC为接口MAC,目的MAC为目的IP的组播MAC,源IP为接口global IP,目的IP为被请求节点的组播IP(目的的IP转换所得),ICMPv6的Type=135(NS),target address为目的IP(,option为source link-layer address携带自己的源MAC

2.        被请求设备收到NS后单播回复NA(Neighbor Advertisement),源MAC是自己的MAC,目的MAC是NS的源MAC(被请求设备收到NS后已经知道NS源设备的IPv6和MAC映射关系,NS携带了自己的MAC),源IP为接口IP,目的IP为NS的源IP,ICMP Type=136(NA),Flags的R位=1表示该节点为路由器,S位=1表示收到NS后回应的NA,O位=1表示更新当前缓存的链路层地址,因为这个包是收到NS后回复的NA,因此该NA的target address为NS的报文的target address,Option为target link-layer address携带的是此NA消息发送者的链路层地址,回应组播NS的NA必须包含此选项。

3.        DAD(Duplicate Address Detect)通过NS消息实现,发起方发送NS消息,源IP是未指定IP(::),目的IP为自己配置IP的节点请求组播地址,ICMPv6的target address为自己配置的IP

4.        如果没有冲突就没有设备回复消息,有冲突冲突设备回复NA消息,NA消息相当于IPv4的免费ARP,发送给所有设备,源地址是自己的,IP目的是所有节点组播地址FF02::1 FlagsR=1表示该节点为路由器,S=0S位在邻居不可达检测中用作可达性确认,在组播的NADAD)和主动发送的 NA 中,S 比特一定不能置 1),O=1表示更新当前缓存的链路层地址,option携带的target链路层MAC是自己的MAC,通告自己的IPv6MAC对应关系。