天天看点

【HCIE-R&S 天梯路】NDPNDP邻居发现协议

NDP邻居发现协议

Neighbor Discovery Protocol

NDP使用:ICMPv6报文中【RS、RA、NS、NA、重定向】五种消息

RS+RA可实现

  • 路由器发现
  • 无状态自动配置
  • 前缀重编址

NS+NA可实现

  • MAC地址解析
  • DAD(重复地址检测)
  • 邻居状态跟踪(NUD邻居不可达检测)

RS                               Options

RA          M O              Options

NS                               Target IP        Options

NA         R S O             Target IP        Options

RS:路由器请求(Type=133)

Router Solicitation

  • 路由器收到RS消息,立即回复RA消息
【HCIE-R&S 天梯路】NDPNDP邻居发现协议

RA:路由器通告(Type=134)

Router Advertisement

  • R       周期性(200s~600s随机)发送RA

                收到RS后,立即回复RA

华为路由器默认不发送RA,[R] undo ipv6 nd ra halt启用

【HCIE-R&S 天梯路】NDPNDP邻居发现协议

Cur Hop Limit:跳数限制

Managed位:是否DHCPv6配IP          

        0=无状态自动配置IP(默认)

        1= DHCPv6配置IP

Other-flag位:是否DHCPv6配其他参数(生存时间、邻居重传时间、MTU、DNS等)

        0=无其他参数(默认)

        1=DHCPv6配其他参数

  • M、O后,空一位,再接下来2位是Router Preference位,把路由器分为low、medium(默认)、high三个优先级。当多个路由器回复RA消息时,靠此优先级决定哪个路由器成为网关,若优先级相同,则负载分担

Router Lifetime:作为网关有效时间(默认1800s)

Reachable Time:到达时间(单位:ms)检测可达性、延迟(类似ping时延)

Retrans Time:重传计时器(单位:ms)表示主机重传RS消息的时间

Options:携带前缀、MAC、优选生存期(Preferred Lifetime)、有效生存期(Valid

Lifetime)、MTU等参数

路由器发现

路由器收到RS,立即回复RA

【HCIE-R&S 天梯路】NDPNDP邻居发现协议

PC也可以是R

无状态自动配置(SLAAC)

StateLess Address Auto Configuration

LAN中设备收到RA消息(option携带前缀64bit),其他设备可以自动生成IPv6地址

地址格式 = RA前缀 + EUI-64

[PC-G] ipv6 address auto global

  • PC获得地址后,还需要DAD
  • [PC-G] ipv6 address auto global default,将R的Link-Local地址作为自己网关,产生默认路由(UNR协议类型)

前缀重编址

R周期性(200s~600s随机)发送RA

前缀重编址作用

  1. 在SLAAC时,R改变前缀,PC跟着改
  2. R周期发RA(带着前缀),使PC地址始终处于优选生存期

地址生存期

【HCIE-R&S 天梯路】NDPNDP邻居发现协议

无状态自动配置,通过DAD后,接口拥有了IPv6地址

  • 路由器周期性发RA,保证主机IP处于优选生存期

NS:邻居请求(Type=135)

  • MAC地址解析、NUD、DAD
【HCIE-R&S 天梯路】NDPNDP邻居发现协议

Target Address:对方的IP

Options:      我的MAC地址(作为MAC地址解析时)

                     DAD、NUD的NS消息没有Options字段

NS的目的地址:  MAC地址解析、DAD中,被请求节点组播地址

                            NUD中,单播地址

NA:邻居通告(Type=136)

R        收到NS后,立即回复NA          单播

R        MAC改变,发送NA                  FF02::1    O置位

【HCIE-R&S 天梯路】NDPNDP邻居发现协议

R位:置位表示:我是路由器(在NUD中用于检测R是否变为主机)

S位:回应NA的NS(S置位)

Override位:MAC改变位

Options:我的MAC地址

MAC地址解析(ARP)

  • IPv6接口会为自己每个单播地址(包括Link-local)创建一个被请求节点组播地址

被请求节点组播地址 = FF02::1:FFxx:xxxx(单播末24位)

【HCIE-R&S 天梯路】NDPNDP邻居发现协议
  • 可能存在多个单播地址最后24位相同的情况,被请求节点组播地址相同

        此时根据NS报文中的Target Address判断发送给谁

  • 和ARP不同的一点在于

        ARP Reply中 Target IP=R1

        NS中             Target Address=2::2

        Target MAC标识的是对哪个MAC地址进行解析,所以始终不变

设计IPv6 ARP的时候,因为不知道目的MAC 所以需要填充组播MAC;因为使用了组播MAC,所以必须有一个三层组播IP。于是就为每个IP设计了被请求节点组播地址。

为什么不直接设计基于2层的ARPv6?

答:因为ARP Request广播,IPv6的广播域中可能存在大量(虚拟)终端,转发效率不高

IPv6取消了广播,设计了被请求节点组播地址=MAC地址解析、DAD的DIP

       二层MAC                           =     3333-XXXX-XXXX

       三层被请求节点组播地址    =     FF02::1:FFxx:xxxx

                                                        ~单播IPv6地址

MAC末位是从IPv6单播映射下来的,大大减少会解封装该2层报文的PC数量

IPv4 —— ARP表项

IPv6 —— 直接查看ipv6邻居dis ipv6 neighbors(显示的为link-local和MAC对应关系)

DAD重复地址检测(免费ARP)

Duplicate Address Detection

  • DAD类似免费ARP

                IP改变、VRRP主备切换时,向自己IP的被请求节点组播地址发送NS

                但MAC地址改变时,直接发送NA(O置位)

【HCIE-R&S 天梯路】NDPNDP邻居发现协议

DAD      NS源地址=::                   NS目的地址=试验地址的被请求节点组播地址

              NA目的地址=FF02::1

  • 预配地址称为试验地址(tentative address)
  • R1发送NS后,设置计时器,超时未收到NA,则使用该地址。

        该地址状态由试验→已分配(assigned)

NUD邻居不可达检测

Neighbor Unreachable Detection

NUD是指:IPv6路由器之间交互NS、NA,以跟踪邻居状态

IPv6邻居状态机(邻居状态跟踪)

【HCIE-R&S 天梯路】NDPNDP邻居发现协议
  • [R] display ipv6 neighbors   //查看路由器邻居表(ARP表)
  • MAC地址解析、DAD的NS的DIP=被请求节点组播地址

        NUD的NS消息目的地址是邻居单播地址

重定向(Type=137)

【HCIE-R&S 天梯路】NDPNDP邻居发现协议

重定向原理

  • 重定向只对主机有效,对路由器无效  
    【HCIE-R&S 天梯路】NDPNDP邻居发现协议
  • R1发现流量入接口=出接口,则发送给主机一个重定向报文,告诉主机更优下一跳

Path MTU发现

路径上数据包>MTU

        IPv4:分片

        IPv6:丢包(IPv6仅在源节点分片、目的节点重组)

  • IPv6要求MTU≥1280Byte
【HCIE-R&S 天梯路】NDPNDP邻居发现协议

 源节点发自己接口MTU的报文,如果路径上有更小的MTU,则会返回ICMP错误报文(类型=数据包过大,同时携带更小的MTU)

  • 动态PMTU探测出链路MTU值,老化时间=10min

优点:可以减少因MTU带来的丢包

缺点:通信前需要PMTU发现,增加时延

[R]   ipv6 pathmtu x::x

继续阅读