DAD之收到了,但没有完全收到

我最近在做网络通讯设备测试的工作。在测试ipv6nd,DAD功能的时候遇到了一个故障,定位过程有比较有意思的地方,便记录了下来。

DAD功能是属于ipv6nd协议的一个组成部分,用NS和NA包来在设备间进行交互。过程是这样的:

1,当我把一台设备a接入网络。给它配置一个ipv6的地址,他会发送一个ns报文(DAD开启的情况下),这个ns报文的目的ip是需要验证的ip地址对应节点的组播地址。target ip地址是需要验证的地址。它的含义是问这个节点中的设备:我想用这个地址,你们有人用吗?

2,如果网络中有设备b用了这个地址,那么设备b会在改网络中广播一个na包,目的地址是ff02::1,更大声得说:大家注意了,这个地址我在用。同时a也会收到这个报文,检测完毕,这个地址不能用。

3,如果网络中没有设备在用这个地址,也就是说在限定时间内没有收到别的设备发送的na回复,那么设备a,便会自发发送一个na组播报文,发给该网络内所有设备。目的地址是ff02::1,说:这个地址现在我用了。

以上是协议的过程,而我在测试过程中遇到的情况是这样的:

设备a对接b (DUT1---DUT2),在测试仪端设置了ipv6地址为2000::2。然后我给设备上对接的口ipv6地址也设置为2000::2。正常情况是设备a配置的地址后面会有duplicate的标记

 但是如图所示,并没有这个标识。难道是ns,na报文在过程中出现了丢包?于是通过抓包进行分析:

 我在dut1上的接口上进行收发方向的抓包,结果显示便出现了端倪。将报文的含义解释下就是,从序号5的ns报文看:
5号报文,设备a发的,a问:2001::2这个地址有人在用吗?
6号报文,设备b发的,b答:这个地址我在用,我是00:10:94:00:00:01
7号报文,设备a发的,a问:2001::2这个地址有人在用吗?
8号报文,设备b发的,b答:这个地址我在用,我是00:10:94:00:00:01
9号报文,设备a发的,a问:2001::2这个地址有人在用吗?
10号报文,设备b发的,b答:这个地址我在用,我是00:10:94:00:00:01
最后一个报文,设备a发了个na报文,向大家宣告:那这个地址我就用了

(b表示:我。。。。)

通过端口抓包,我们发现b发的na报文到达了a,看来a选择了无视。于是继续抓包,抓上送cpu的包。

好了当时的抓包文件,发现当时针对性抓了cpu入向的包,发现原来什么也没抓到。

喔喔,答案便迎刃而解了。端口收到na报了,但是na包没有上送cpu,设备a便以为没有收到这个na报文。

通过这个案例,让我不禁感叹,故障真是哪里在都可能出现呀

我愿称之为:收到了,但没有完全收到。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值