深度分析ipv6建立过程

随着全球IPV4地址逐渐枯竭,IPV6应运而生,IPV6是将来地址的趋势。在前面的文章《DHCPV6》中有分析过有提过IPV6的特点,今天就分析一下IPV6建立 过程:
1. 所有设备上的ipv6 地址都会加入一个组中ff02::1:fxx:xxxx:比如配置ip:3001::4
如果是无状态下(指的没有通过dhcp分配或手工配置的地址)分配的ipv6地址也会加入这个组。就是设备存在几个ip就会各自发送一个mld报文。mld报文如下:
2. 加入组后设备就会发送一个请求节点多播邻节点请求报文ns,进行DAD检测,看这个ip是否有人用。(类似ipv6 rarp)。Target是本机ip(将要得到的ip),如果这个ns没有回复na的话说明这个地址可用。
3. 确定ip可用后进行,地址解悉过程:
Pc发送一个ns请求报文:将发送节点的链路层地址通知给接收报文的节点。
当目标交换机收到邻节点请示报文后,会根据请示报文中的源地址和源链路层地址选项中的源链路层地址,来更新它的邻节点高速缓存。
这时目标节点交换机向邻 节点请求报文的发送方发送一个单播邻节点公告报文。当发送主机(PC)接收到NA报文时,会根据目标链路层地上 选项中的信息,创建一个关于目标节点的新表项。这时只是单向通,要又向通。交换机也要发一个ns,pc回一个na后也才互通。
下面通过自己构造报文模拟IPV6 ND过程五个状态机迁移过程:

(1)未完成

交换机未做RS请求,直接向pc发送NS请求,这时交换机将发送这个目标3001::3这个地址置为incmp,mac地址为空,并且向PC连续发送三次NS请求,以确认其可达性,PC未回应,则删除该表项,如果PC回应,则置为可达(交换机做一个ping操作。快速show ipv6 nei ver)

    1. sh ipv nei ver
    1. IPv6 Address                            Linklayer Addr Interface
    2. 3001::2                                 00d0.f822.33ab FastEthernet 0/19
    1.         State: REACH/H Age: - asked: 0
    2. 3001::3                                 incomplete     FastEthernet 0/19
    1.        State: INCMP/H Age: 1 s asked: 3
    2. FE80::2D0:F8FF:FE22:33AB                00d0.f822.33ab FastEthernet 0/19
  1.         State: REACH/H Age: - asked: 0

(2)可达到的:
当接收到回复NS的NA报文时,就会从INCMP状态到达REACH状态 。直到路由器公告报文的可达到时间字段中规定的时间耗尽为此。
交换机ping操作自发发送ns报文,pc端回复NA报文
R表示发送者是否为路由器
S 当这个请求标志为1时表示已经发送了邻节点公告报文来响应邻节点请求报文,用于确认邻节点的可达性。(在这个环境中这个字段应该设为1)
O 当这覆盖标志为1 时表示应该用包含在目标链路层地址选项中的链路层地址,来覆盖当前的邻节点高速缓存表项中的链路层地址。(在这个环境中这个字段应该设为1)

    1. sh ipv nei ver
    1. IPv6 Address                            Linklayer Addr Interface
    2. 3001::2                                 00d0.f822.33ab FastEthernet 0/19
    1.         State: REACH/H Age: - asked: 0
    2. 3001::3                                 00d0.f866.1aa6 FastEthernet 0/19
    1.         State: REACH/H Age: 34 s asked: 0
    2. FE80::2D0:F8FF:FE22:33AB                00d0.f822.33ab FastEthernet 0/19
  1.         State: REACH/H Age: - asked: 0

(3) 失效
当路由器公告报文的可到达时间字段中的规定的时间耗尽时(或者收到一个公告自己链路层地址的自发邻节点公告报文时,也会进入stale状态。),交换机将PC的对应IPV6表项置为 stale,stale是一个稳定状态,一般老化时间都在3600秒,对于xp系统,除非PC要对外通讯,否则不会发送NS,NA,使表项达到rech状态,但是win 7会不定期的发送NS,接收NA,并且应当交换机的NS,达到rech状态

    1. sh ipv nei ver
    1. IPv6 Address                            Linklayer Addr Interface
    2. 3001::2                                 00d0.f822.33ab FastEthernet 0/19
    1.         State: REACH/H Age: - asked: 0
    2. 3001::4                                 00d0.f866.1aa6 FastEthernet 0/19
    1.         State: STALE/H Age: 3559 s asked: 0
    2. FE80::2D0:F8FF:FE22:33AB                00d0.f822.33ab FastEthernet 0/19
  1.         State: REACH/H Age: - asked: 0

(4) 延迟
PC端发送RS,收到RA,达到stale状态后,向外发送报文,这里包括NS报文,在stale状态下只要pc发个数据流要设备。状态就会进入delay状态。
为等待上层协议提供可到达性确认,在设备发送邻节点请求报文前,邻节点高速缓存的表项会进入delay
PC向交换机端发送NS报文,交换机相应NA,这个时候交换机端将PC端的表项置为delay,交换机在等待上层协议提供PC可达性确认信息,延迟时间一般为5s,过5 秒后还不能确认pc是否可达后就直接进入probe状态。

    1. sh ipv nei ver
    1. IPv6 Address                            Linklayer Addr Interface
    2. 3001::2                                 00d0.f822.33ab FastEthernet 0/19
    1.         State: REACH/H Age: - asked: 0
    2. 3001::3                                 00d0.f866.1aa6 FastEthernet 0/19
    1.         State: DELAY/H Age: expired asked: 0
    2. FE80::2D0:F8FF:FE22:33AB                00d0.f822.33ab FastEthernet 0/19
  1.         State: REACH/H Age: - asked: 0

(5) 探测
承接上一步,如果五秒以后无法确认PC是否可达,交换机会主动发送NS报文,并且将PC对应的条目设置为probe状态,连续发送三次NS报文,每次间隔一秒钟,如果还是未收到PC回应的NA报文,则将该表项删除

    1. sh ipv nei ver
    1. IPv6 Address                            Linklayer Addr Interface
    2. 3001::2                                 00d0.f822.33ab FastEthernet 0/19
    1.         State: REACH/H Age: - asked: 0
    2. 3001::3                                 00d0.f866.1aa6 FastEthernet 0/19
    1.         State: PROBE/H Age: 1 s asked: 2
    2. FE80::2D0:F8FF:FE22:33AB                00d0.f822.33ab FastEthernet 0/19
  1.         State: REACH/H Age: - asked: 0

路由器发现过程:
这个过程在加入组后就开始。
正在启动的主机会向链路本地范围所有路由器多播地址(ff02::2)发送路由器请求报文。如果正在启动的主机已经配置了单播地址。则在主机发送的路由器请求报文中会以此单播地址为源地址。否则,路由器请求报文的源地址为未指定地址(::)。当接收到路由器请求报文后,本地链路上的所有路由器都会向发送路由器请求报文的主机的单播地址(如果路由器请求报文中的源地址是单播地址)发送路由器公告报文,或者向链路本地范围所有节点 多播地址(ff02::1)(如果路由器请求报文中的源地址为未指定地址)发送路由器公告报文。主机接收路由器公告报文,并用它们的内容来建立默认路由器列表,前缀列表和设置其他的配置参数。在放弃路由器发现之前可以发送的路由器请求报文的数目,可以由变量来设置 (建议变量为3)。
Pc发送一个路由请求报文RS:目标为ff02::2 链路中所有路由器。
交换机会回一个ra报文:报文包含:默认跳限制,MTU,前缀和路由。
本地链路上主机接收到路由公告报文,并使用这些报文内容来维护默认路由器列表和前缀列表。自动配置地址。添加路由和配置其他参数。
希望本文的分享对你的学习有所帮助,转载请说明出处 数据中心农场。

weinxin
DC Farm小程序二维码
扫一扫添加博客小程序
Jim

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:8   其中:访客  6   博主  2

    • avatar 蓬勃主机 3

      对ipv6能有更好的视频教程吗?

      • avatar 螃蟹博客 1

        期待博主录语音视频

        • avatar 陆牛光吉 0

          你好,很好的博客,在这里学了不少东西.
          有空也来我博客转转吧.:)

          • avatar 站长 5

            广告效果怎么样?

            • avatar 孙超博客 1

              虽然看不是很懂··不过感觉很厉害啊!嘿嘿··

              • avatar findfeel 1

                完全看不懂啊。