[KW41Z] 关于Thread协议若干问题

2019-03-26 07:49发布

在学习Thread过程中会碰到很多问题, 由于资料相对封闭, 而且使用的人较少导致有些问题很难通过文档(Thread API函数的说明基本就一句话)来找出来。如果有Thread的wiki就好了, 能让新手少走很多弯路。 现在还没解决的问题如下:
1. 各种地址的含义
Thread一个设备有好多个地址(LL64, ML64, ML16...), 其中比较实用的应该是16位地址(ML16)。 16位地址以ff:fe00:XXXX结尾, XXXX,其中XXXX就是16位地址, 问题是ML16的前缀比如”fdb6:ffe5:2bd3:ad8b::“代表什么?
$ ifconfig

Interface 0: 6LoWPAN
        Link local address (LL64): fe80::4c08:6123:7e73:4e9
        Mesh local address (ML64): fdb6:ffe5:2bd3:ad8b:2ca9:df49:86a9:99d2
        Mesh local address (ML16): fdb6:ffe5:2bd3:ad8b::ff:fe00:400
        Link local all Thread Nodes(MCast):  ff32:40:fdb6:ffe5:2bd3:ad8b::1
        Realm local all Thread Nodes(MCast): ff33:40:fdb6:ffe5:2bd3:ad8b::1
$  Mesh local address (ML16): fdb6:ffe5:2bd3:ad8b::ff:fe00:400


2. 设备类型发现
Zigbee协议中定义了设备类型, 用户可以查询特定设备的功能, 而Thread则没发现这个功能。
现在问题是Thread有没有一种比较通用的方法来查询特定设备的类型? 比如设备通过实现 “COAP CONN GET ... /DeviceTypeGuid”这种类似的方法来获取设备类型GUID, 然后通过网络查询这个id就可以获取到设备的具体信息了?

3. 多DHCP Server支持
Thread是否支持多个DHCP Server以实现No Single Node Failure? 在active DHCP Server离线的情况下其他后备的Server能够取代其工作? 或者是NXP thread sdk能否支持把DHCP的角 {MOD}转接到HOST上来通过上位机控制? (查看了NXP的代码发现相应的函数实现并未公开。)

此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
13条回答
lyzhangxiang
1楼-- · 2019-03-27 10:02
1、这个是ipv6地址,请参考ipv6的相关文档,::是一种缩写方式
2、设备类型发现,这个有什么意义,自己做coap暴露服务点即可
3、一般直接用root dag加上设备的短地址生成ipv6地址 ,可能这也是dhcp server的原理吧
重点是组网过程做根路由如何形成,一般只有一个根路由
allenliu
2楼-- · 2019-03-27 15:42
 精彩回答 2  元偷偷看……
lyzhangxiang
3楼-- · 2019-03-27 16:16
allenliu 发表于 2017-7-5 23:33
多谢, 请问一下root dag是什么意思?
还有用coap暴露服务点的缺点就是如果节点断网了,然后有新的节点 ...

根路由的概念要深入人心啊
其次关于这种准静态地址的方式相对简单,根路由决定这个小网的地址前缀
每个设备的地址在网络形成的时候已经固定了,根路由+设备短地址
这种方式也就不存在你说的问题的
gogoer
4楼-- · 2019-03-27 18:09
1:
Mesh local address (ML16): fdb6:ffe5:2bd3:ad8b::ff:fe00:400   
b6:ffe5:2bd3:ad8b 这个是基于 extend PAN ID 而来
ML64, Mcast 都包含这块地址。

2: Thread 协议本身不包含 APP层的设备类型发现

3: Thread 协议本身不包含DHCP Server, 你看到的 ML16 后面的16位地址不是 DHCP Server 分配的。
allenliu
5楼-- · 2019-03-28 00:05
gogoer 发表于 2017-7-10 15:22
1:
Mesh local address (ML16): fdb6:ffe5:2bd3:ad8b::ff:fe00:400   
b6:ffe5:2bd3:ad8b 这个是基于 ex ...

明白了, 非常感谢。
不过看代码里面有实现dhcp server。
allenliu
6楼-- · 2019-03-28 04:50
lyzhangxiang 发表于 2017-7-7 13:52
根路由的概念要深入人心啊
其次关于这种准静态地址的方式相对简单,根路由决定这个小网的地址前缀
每个 ...

我的意思是一个Thread网络, 节点地址区别就是16位短地址吧? 这个是通过邻居发现来决定地址分配吧? 这样设备最多就是65535个。如果设备断电后重新初始化了, 那么地址还会是以前的地址么?

一周热门 更多>