IPv6(邻居发现)

邻居发现Neighbor Discovery

一、邻居发现的功能

  1. 是一系列消息和过程的集合,代替了IPv4中的 ARP、ICMPv4
  2. 用于节点时:地址解析、确定邻居节点链路地址有没有改变、判断邻居节点是否可达
  3. 用于主机时:发现邻居路由器、发现地址前缀和其他配置参数
  4. 用于路由器:用于通告消息、通知主机下一跳的最佳地址
  5. 三个主要功能组:
    1. Host-Router Discovery Functions
    2. Host-Host Communication Functions
    3. Redirect Function
      IPv6(邻居发现)_第1张图片

二、邻居发现消息

1.路由请求 Router Solicitation

由主机发送,一个节点新加入一个IPv6网络,想立刻得到信息,就发送RS消息,用于请求路由通告消息。

2.路由通告 Router Advertisement

由路由器发送,可能有两种情况:

  • 定时发送给多个主机(多播)
  • 收到路由请求消息回应(单播)

包含链路前缀、MTU、特定路由、是否使用自动配置、配置期限。

3.邻居请求 Neighbor Solicitation

用于发现当前邻居的链路层地址(MAC),可能是多播(地址解析)也可能是单播(验证是否连通)。

4.邻居通告 Neighbor Advertisement

对于邻居请求消息的回应,也可以主动发送自己的改变。

5.重定向

由路由器发送,告诉主机有更好的下一跳地址。单播发送给主机。

三、地址解析

通过邻居节点请求与通告消息,实现链路层地址和IPv6地址映射。

  1. 发送信息的主机发送一个多播邻居请求消息在合适接口上。多播地址是来自目的IP地址请求节点的多播地址。FF02::1:FF00:0/104 + 单播地址后24位
    包含发送端的链路层地址
  2. 目标节点收到邻居请求消息后,将发送端的链路层地址与IP地址的映射写入自己的邻居缓存。
  3. 目标节点单播邻居通告消息给发送端,包括自己的链路层地址。
  4. 发送端收到邻居通告消息,写入自己的缓存。

1.邻居请求

  • 以太网头部:
    • 目的MAC:33-FF-FF-目的地址后24位,是多播所以不知道MAC。
  • IPv6头部
    • 源地址:发送方IP
    • 目的地址:FF02::1:FF00:0/104 + 目的单播地址后24位
  • 邻居请求头部
    • 目的地址:目的单播地址
  • 邻居发现选项
    • 发送方链路层地址MAC

2.邻居通告

  • 以太网头部:
    • 目的MAC:请求方的MAC地址
  • IPv6头部
    • 源地址:发送方IP(即被请求的)
    • 目的地址:请求方的IP地址
  • 邻居通告头部
    • 目的地址:发送方IP(被请求)
  • 邻居发现选项
    • 通告方的链路层地址MAC

3.IPv4和IPv6地址解析的区别

IPv6(邻居发现)_第2张图片

四、重复地址检测 Duplicate Address Detection

IPv6使用邻居请求消息在本地链路上重复地址检测。

  • 由于没有地址,所以使用::作为源地址,把要使用的地址的请求节点多播地址作为目的地址(destination address),要使用的地址作为目标地址(target address)。目的MAC地址为33-33+请求地址后32位
  • 如果有节点收到,即地址重复,这个节点会发送多播的邻居通告消息,目的地址设为FF02::1。目的MAC地址为33-33+目的地址后32位,也就是33-33-00-00-00-01

五、路由发现

路由发现用于发现本地链路上一系列路由器的集合。与ICMPv4不同,IPv6在当前路由器不可用时会启动一个默认的路由器。

1.字段

(1)Router Lifetime

IPv6拥有一个Router Lifetime 域,在路由通告消息中。它指出当路由器作为默认路由器时存活的时间,如果当前默认路由器不可用,则通过neighbour unreachability detection(邻居不可达性检测)来检测,而不是通过路由通告消息中的Router Lifetime字段来检测。

(2)Hop Limit

(3)有/无状态配置

(4)list of netwoek prefixes

2.路由发现过程

路由器主动发送:

  1. IPv6路由器会定期地在本地链路上发送路由通告消息,告诉他们自己的存在;
  2. 主动的IPv6主机在本地链路上接收路由通告消息,并使用内容来维护默认路由器列表、前缀列表和其他配置参数。

主机请求

  1. 正在启动的主机向链路-本地范围所有路由器组播地址(FF02::2)发送路由请求消息。目的地址为33-33-00-00-00-02
    邻居发现选项为源链路层地址。
  2. 一旦收到路由器请求消息,所有本地链路上的路由器发送一个路由器通告消息。要么对主机的单播地址发送(如果路由器请求消息源地址是一个单播地址)或链路本地范围所有节点多播地址FF02:: 1(如果路由器请求消息的源地址没有指定)。

六、路由器重定向

路由器使用重定向功能来通知发起主机有一个更好的第一跳邻居,应该将某个特定目的地的流量转发给它。
节点收到重定向报文,就会修改路由表。

1.两种情况:

  1. 路由器通知主机有一个更好的下一跳,发生在一个网络上有多台路由器的情况。
  2. 路由器通知主机目的地址就是你的邻居,不需要路由器转发。

2.路由器重定向过程

  1. 发起主机给默认路由器发送一个单播报文;
  2. 路由器处理数据包
    1. 并注意到发起主机的地址是一个邻居。
    2. 此外,它还注意到原始主机和下一跳的地址位于同一个链路上。
  3. 路由器转发报文到下一跳;
  4. 转发过程中,可能会发送重定向消息:目标地址(Target Address)域为更好的下一跳。如果重定向到一个路由器,目标地址为该路由器的链路本地地址;如果重定向到一个主机,目标地址域为最初发送的包的目的地址。
  5. 节点收到重定向消息就会修改路由器表

你可能感兴趣的:(IP网路技术与应用)