ipv6邻居发现(Neighbor Discovery rfc2461)

  1. 原理
    • IPv6定义了邻居发现协议(Neighbor Discovery protocol,NDP),它使用一系列IPv6控制信息报文(ICMPv6)来实现相邻节点(同一链路上的节点)的交互管理,并在一个子网中保持网络层地址和链路层地址之间的映射。邻居发现协议中定义了5种类型的信息:路由器宣告、路由器请求、路由重定向、邻居请求和邻居宣告。通过这些信息,实现了对以下功能的支持:
  2. 特殊的组播地址
    • all-node multicast address: FF02::1
    • all-router multicast address: FF02::2
    • unspecified address: 0:0:0:0:0:0:0:0
  3. Neighbor Discovery 用到的几种数据包
    • Router Solicitation Message(路由器请求消息)
      • 格式
      •       0                   1                   2                   3
              0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
             +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
             |     Type      |     Code      |          Checksum             |
             +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
             |                            Reserved                           |
             +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
             |   Options ...
             +-+-+-+-+-+-+-+-+-+-+-+-
      • 说明:Type=133,code=0,option中可能包含着发送者的链路本地地址
      • 功能:由主机(host)发送,主要作用是让网络中的路由器尽快发送路由器公告
    • Router Advertisement Message 
      • 格式:
      •       0                   1                   2                   3
              0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
             +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
             |     Type      |     Code      |          Checksum             |
             +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
             | Cur Hop Limit |M|O|  Reserved |       Router Lifetime         |
             +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
             |                         Reachable Time                        |
             +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
             |                          Retrans Timer                        |
             +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
             |   Options ...
             +-+-+-+-+-+-+-+-+-+-+-+-
      • 说明:
        • IP头中:源地址必须是分配给发送该报文的接口的链路本地地址
        • IP头中:目的地址是之前收到的路由器请求报文中的源地址或者是all-node的组播地址FF02::1
        • type=134,code=0
        • M标志位置上的时候,网络中的主机(host)使用有状态的(stateful)地址自动配置方式进行地址配置,也就是通过DHCP V6服务器进行地址的管理。M标志位没有置上的时候,采用无状态的地址配置,也就是使用RA公告中的前缀进行地址自动配置
        • O标志位?涉及哪些参数?需要进一步细化
        • Router Lifetime:仅仅在路由器宣告自己是默认路由器的时候才有值,如果其值为0,表示该路由器不能作为主机的默认路由器
        • Reachable Time:在收到邻居可达的确认信息后,在此时间内默认邻居是可达的
        • Retrans Timer:用于地址解析和邻居可达性检测功能中,主要是指邻居请求(Neighbor Solicitation)报文的发送间隔时间
        • 目前一些常用的选项Option
          • 源link-local address
          • MTU
          • 前缀信息(Prefix address information)
      • 功能:
    • Neighbor Solicitation Message 
      • 格式
      •          0                   1                   2                   3
                 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
                +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                |     Type      |     Code      |          Checksum             |
                +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                |                           Reserved                            |
                +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                |                                                               |
                +                                                               +
                |                                                               |
                +                       Target Address                          +
                |                                                               |
                +                                                               +
                |                                                               |
                +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                |   Options ...
                +-+-+-+-+-+-+-+-+-+-+-+-

      • 说明:type=135,code=0;
      • 功能:邻居请求报文用于请求本地网络中其他设备的链路本地地址,同时也将自己的链路层地址(MAC地址)发布出去。当设备需要请求另一个设备的链路层地址的时候,其目的地址是组播。当其仅仅是想进行可达性检测的时候,目的地址使用单播地址
    • Neighbor Advertisement Message 
      • 格式
      •        0                   1                   2                   3
               0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
              +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
              |     Type      |     Code      |          Checksum             |
              +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
              |R|S|O|                     Reserved                            |
              +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
              |                                                               |
              +                                                               +
              |                                                               |
              +                       Target Address                          +
              |                                                               |
              +                                                               +
              |                                                               |
              +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
              |   Options ...
              +-+-+-+-+-+-+-+-+-+-+-+-
      • IP头中的目的地址:如果是响应邻居请求报文的,则目的地址是触发发送邻居通告的邻居请求报文的源地址,而如果之前的邻居请求报文中的源地址为全0(unspecified address)则目的地址是all-node multicast address.
      • type=136,code=0;
      • R:路由器标识,当该标识置上的时候,表示发送者是一个路由器
      • S:solicited flag,用这个标识来表示该邻居公告是否是用来响应邻居请求报文的。
      • O:override flag,用于指示收到此NA报文的设备,需要覆盖和重写现有缓存中相应的邻居信息表项
      • 选项:target link-local address,对于响应目的地址是组播地址的邻居请求报文,必须包含这个选项,对于响应目的地址是单播地址的邻居请求报文,则只是should包含这个选项,这一点没有非常理解
      • 功能
    • Redirect Message 
      • 格式
      •        0                   1                   2                   3
               0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
              +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
              |     Type      |     Code      |          Checksum             |
              +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
              |                           Reserved                            |
              +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
              |                                                               |
              +                                                               +
              |                                                               |
              +                       Target Address                          +
              |                                                               |
              +                                                               +
              |                                                               |
              +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
              |                                                               |
              +                                                               +
              |                                                               |
              +                     Destination Address                       +
              |                                                               |
              +                                                               +
              |                                                               |
              +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
              |   Options ...
              +-+-+-+-+-+-+-+-+-+-+-+-

      • 上面要注意一点就是target address是指新的下一跳,destination address是指数据包的目的地址
      • 功能:重定向的主要功能是当路由器处理某个报文时,发现它自己并不是到达目的地最佳的下一跳,于是就发消息通知主机最佳的下一跳不是自己,而是其它设备
  4. 邻居发现协议与IPv4地址解析协议有什么区别?
    • IPv6不再执行地址解析协议(ARP)或反向地址解析协议(RARP),而以邻居发现协议中的相应功能代替,IPv6邻居发现协议与IPv4地址解析协议主要区别如下:
      • IPv4中地址解析协议ARP是独立的协议,负责IP地址到链路层地址的转换,对不同的链路层协议要定义不同的ARP协议。IPv6中邻居发现协议NDP包含了ARP的功能,且运行于因特网控制报文协议ICMPv6上,更具有一般性,包括更多的内容,而且适用于各种链路层协议
      • ARP协议以及ICMPv4路由器发现和ICMPv4重定向报文基于广播,而NDP协议的邻居发现报文基于高效的组播和单播;
      • 可达性检测的目的是确认相应IP地址代表的主机或路由器是否还能收发报文,IPv4没有统一的解决方案。NDP中定义了可达性检测过程,保证IP报文不会发送给“黑洞”。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值