如题
一个协调器设备及1个路由设备还有10个左右的终端设备
本来多个终端设备分别通过路由或直接连向协调器,终端设备不定时向协调器发送数据,并且大部分数据通过路由设备转发而至
运行一段时间后,发现终端设备数据发向路由设备,但是路由设备未向协调器发送,请问这是什么原因造成的呢
可参见抓包附件
通过抓包附件中 第一个附件《0916.psd》中发现,在前50000万行左右的数据里,路由器中转功能正常
但是在51886行左右开始,路由器能够收到终端设备的数据并给与应答,并且终端设备与路由器之间的data request轮询正常
同样在第2和第3个附件《0916-2.psd》,《0916-3.psd》 中依然延续着第一个附件中的状态。
同时,路由器本身以90s左右的时间间隔向协调器发送数据,这种数据包协调器均能收到
请问什么原因造成此种现象?基本可以排除信号强度问题,因为路由与主控的信号强度一直很稳定在-80db左右
是有什么设置的地方不对?麻烦技术人员能帮忙研究一下 谢谢!
VV:
大概看了下你的数据包,发现路由器并没有以每隔15s钟发送link status出来,而且每次路由器经常在进入发送route request,经常在发现路由路径。
是否在协议栈哪里做了修改?
sylar zhang:
回复 VV:
你好,首先感谢您的热心解答
我用的是协议栈ZStack-CC2530-2.5.1a 版本的 znp形式, 并以其中debug版本为基础开发的
文件路径是F:\ZStack-CC2530-2.5.1a\Projects\zstack\ZNP\CC253x\znp.eww 选择了其中的debug那个版本
如果可以的话,您可以看下这里面的一些默认设置有没有不妥的地方,我的改动基本很少。
您可以再看一下那个数据包,在前半段路由正常的时候,是有每15s的link status的,恰恰是那段路由不正常工作的时候,它会没有15s的link status
并且之前附件里的数据包《0916-2》中,此路由有正常的link status 但是却不转发。按道理说路由器转发的功能应该是封装好的才对,这种突然的失效原因是因为它找不到路由路径?但是当路由器本身要向协调器发送数据时,却能将信息正常的发送到。
并且我在室内的调试并未出现此问题,同样在实验室内进行的一个协调器6个路由器及20个终端设备的测试中,平稳运行3天未发现此状况
两种测试的最大区别在于:
1、户外的测试终端与路由之间的信号强度时好时坏,可能存在终端设备经常会断网重新要求加入的过程
2、户外的测试中,终端设备向协调器发送数据比较频繁
3、户外的路由器与协调器之间,可能偶尔存在监听不到对方link status的情况
下面附上关于协议栈里面的一些设置内容
#define ROUTE_DISCOVERY_TIME 10 定期发送router request是否和此选项有关?但默认设置是5
#define MAX_RTG_SRC_ENTRIES 12
#define BCAST_DELIVERY_TIME 100
#define LINK_DOWN_TRIGGER 7 #define SRC_RTG_EXPIRY_TIME 2 #define MAX_NEIGHBOR_ENTRIES 16
不知您能否帮我找一下是否有哪里设置不妥?还是别的什么原因造成这种路由偶然间不转发数据的情况,或者给我一个比较标准的路由设置?
谢谢!!
VV:
回复 sylar zhang:
在室外测试能否把距离也放近一点