深度分析IPV6 NDP邻居发现协议

我在前面的文章《深度分析ipv6建立过程》中分析IPV6协商的整个过程,今天我就对IPV6的邻居发现协议 NDP(neighbor discovery protocol)进行更深入的分析。
在IPV6中 NDP(neighbor discovery protocol)是用来发现邻接点相关信息的协议。ndp运行在数据链路层,因此可以支持不同的网络层协议。 ndp用来发现直接相连的邻居信息,包括邻接设备的设备名称、软/硬件版本、连接端口等,另外还可提供设备的id、端口地址、硬件平台等信息。
支持ndp的设备都维护ndp邻居信息表,邻居信息表中的每一表项都是可以老化的,一旦老化时间到,ndp自动删除相应的邻居表项。同时,用户可以清除当前的ndp信息以重新收集邻接信息。
运行ndp的设备定时向所有激活的端口广播带有ndp数据的报文,报文中携带有效保留时间,该时间指示接收设备必须保存该更新数据的时间。接收ndp报文的设备保存报文中的信息,但不转发ndp报文。收到的信息如果与旧的信息不同,则更新ndp表中的相应数据项;如果相同,则只更新有效保留时间。
今天在这里用自己构造IPV6报文来模拟整个NDP过程,实验环境如下:

    1. NS报文内容:源mac为000000000002,目的mac为3333:ff:000001,源ip为2001226::2,目的ip为2001226::1。icmpv6内容为ns,请求2001226::1的链路地址,选项为源链路地址,值为000000000002。发送速率为1pps。
    2. NA报文内容:源mac为000000000002,目的mac为R1的fa0/0口mac地址c8:0003:c4:0000,源ip为2001226::2,目的ip为2001226::1。icmpv6内容为na,应答2001226::2的链路地址,选项为目标链路地址,值为000000000002。发送速率为1pps。
  1. IPV6流内容,源mac为000000000010,目的mac为R1的fa1/0口mac地址c8:0003:c4:0010,源ip为2001400::2,目的ip为2001226::2

为查看条目方便,先不开启R1的fa1/0口。在未发送任何数据流情况下,R1上的初始状态邻居表
现在欲在R1上建2001:226::2条目,并使此条目二层地址被解析为00:00:00:00:00:02。
R1会在fa0/0口上收到此ns报文,将创建2001:226::2的条目。查看R1收到ns时的debug信息(图5),说明R1收到ns后,建立表项,状态为stale,然后R1随即从fa0/0口发送na回复,因为na回复将发送给2001:226::2此地址,使用到了2001:226::2条目,此条目转为delay状态。此时的邻居表状态如下:2001:226::2条目进入delay状态后,从debug信息(图5)可以看到,R1发送ns请求对此条目的确认,默认delay超时时间5s后,没有收到确认,将其转为probe状态。
进入probe状态后R1继续发送ns请求确认此条目,默认重传时间1s,达到3次请求上限后,仍未收到回应,将删除此条目。
此时查看表项,已删除
从IX1上构造2001:226::2条目的na报文如下:
然后在从Ix1往R1发送ns后,在delay超时时间5s内发送na,可以看到由于R1收到了对2001:226::2条目的确认na,从而将其状态转为了reach。debug信息如下:
此时查看邻居表的2001:226::2条目已转为reach,如下:
Reachenable时间到期后,从debug信息可以看到路由器将可达条目又转为stale状态。
而从Ix1发送na时的另外一种情况为,在条目进入delay状态后,等待其超时5s进入probe状态后再发送na让R1确认2001:226::2条目的mac地址。debug信息如下:
从debug信息看到,条目进入delay状态超时后进入probe状态,此时继续发送ns请求确认条目,如果能在3次请求上限之前收到na确认,条目就可以转入reache状态。状态如下:
当同时从Ix1口连续往R1上同时发送ns和na两条数据流时,可以在R1上建立起reach状态的2001:226::2邻居条目,链路地址被解析为00:00:00:00:00:02。然后开启R1的fa0/0口,从Ix2上发送ipv6数据流。数据流达到R1的fa1/0口后,R1提交给ip层处理,查看发现2001:226::2的对应mac地址为00:00:00:00:00:02,将其从fa0/0口转发出去。此时从发包工具口上可以看到接收到了此条ipv6数据流。

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

发表评论

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

目前评论:1   其中:访客  1   博主  0

    • avatar 左右视界 1

      我一直都很偑服有技术的