IPV6

IPv6 NDP

NDP概述:

  • 邻居发现协议
  • 路由器使用NDP可以确定连接在同意链路上的邻居链路层地址

Ipv6 邻居状态:

  • IPv6节点之间互称为邻居,跟路由协议邻居有些不同。
  • 邻居状态:
    1. INcomplete-不可达
    2. Reachble-可达,持续30s
    3. Stale-未知,30s内没有收到对方的探测
    4. Delay-向邻居发送了NS报文后等5s,收到响应后,进入reachble,没有收到就进入probe,发送NS消息后,进入
    5. probe-

NDP的主要消息:

  • RS:路由器请求消息--133
  • RA:路由器通告消息--134
  • NS:邻居请求消息--135
  • NA:邻居通告消息--136
  • 重定向报文-137
  • 借助RS/RA消息可以完成:路由器发现,无状态自动配置等功能
  • 借助NA/NA消息可以完成:DAD,地址检测,邻居状态检测

NDP的工作机制:

  • 路由器发现:

    1. 主机以FF02::2发送RS消息,然后路由器收到RS消息后,向主机发送RA消息,主机根据路由器在各自RA销置中选择优先级高的路由器作为默认网关,优先级一样的话,选择负载分担。
  • 无状态地址自动配置:(SLAAC)/有状态地址自动配置就是通过DHCPv6

    1. 主机上线后,会以目的地址为FF02::2发送一个RS消息,
    2. 路由器收到之后,会以目的地址为FF02::1回复一个RA消息,其中包含PC所需要的网络前缀,和MTU等信息,RA消息中由一个M位和一个O位,其中M位置位代表该地址无法使用无状态地址自动配置获取,O置位代表DNS等信息无法使用无状态地址自动配置,
    3. PC收到后,会以该前缀作为网络号,然后再加上自己的接口ID,生成一个完整的IPv6地址,在该地址使用前,还要进行DAD检测
  • DAD(重复地址检测)

    1. PC1存在一个ipv6地址,该地址在进行DAD过程之前称为实验地址
    2. PC1会发送一个NS消息,其中源IP为空,目的MAC是自己的MAC地址,目的IP为被请求节点组播地址。目的MAC为目的组播IP得MAC,
    3. 如果有设备的ipv6地址是该地址,则会回复NA消息,源为自己,目的为FF02::1
    4. PC1发送NS消息时,会启动一个计时器,如果在定时器内接收到了NA,说明该地址不可用,若没有收到,就可以使用了
  • 邻居不可达性检测:

    • 当邻居一定时间内没有收到通讯或收到的NA消息中S未置位(S未置位代表是主动发送的NA消息),就会通过以单播的形式发送NS报文来探测邻居是否可达
  • 地址解析:

    1. 跟IPv4的ARP同理,但是ipv4的ARP主要是进行二层解析,ICMPv6地址解析是在三层进行解析,请求需要访问的IPv6地址的MAC地址
    2. PC1会发送一个以PC2的被请求节点组播地址作为目的地址的NS消息,
    3. PC2收到之后,会以单播的形式跟PC1回复一个NA,NA消息中有三个置位(N:代表是路由器发出的S:代表是响应某个NS消息 O:代表是NA中携带的信息覆盖原有条目)并且将PC1的ipv6地址和MAC地址添加至本地邻居缓存表中。
    4. PC1收到NA消息后,会将PC2的ipv6地址和MAC地址添加至本地邻居缓存表中。
  • 重定向:

    • 数据包从同接口进又从该接口出,并满足如下条件(数据报文是邻居发送的,目的地址不是组播)就会触发路由器发送重定向报文,第一份数据依旧会由路由器转发,后续的报文就直接通过最优路径访问了。

    • 重定向报文中包含去往目的的最优下一跳,并且重定向报文的源地址必须是link local地址(以便主机可以通过link local地址唯一标识一台路由器.

  • Path MTU:

    • 使用静态或者动态感知源到目的网络最小的MTU值,这样的话只用在源端进行分片,尾端进行重组就行了,沿途设备不用进行分片重组
    • Path MTU使用icmpv6差错报文中type2的数据包过大实现对链路MTU的感知,然后通过携带可通过的MTU值并返回给源端,然后源端修改数据包大小后再次发送。
  • 砍掉6个字段

  • ipv6固定长度40字节,ipv4 20-60字节

  • 标识,flag,片偏移

  • 校验和,ipv6校验和

  • option

  • 流标签,通过源目ip来标示一条流量

posted @ 2020-08-14 16:56  皓先生  阅读(418)  评论(0编辑  收藏  举报