Ble Mesh技术(七)之Network Layer

Network Layer负责消息的二次加解密,以及消息中继,代理的操作。

1. Network Layer消息格式

网络层数据大小为18-29字节
networkpdu

Field NameSize(bits)Notes
IVI132bits IV值的最低有效位
NID7由NetKey生成的7bits NID
CTL1CTL=0,表明这条消息是access msg;CTL=1,表明这条消息是control msg。
TTL7Time To Live值
SEQ24Sequence Number
SRC16源地址
DST16目的地址
TransportPDU8-128传输层下发的数据载荷。CTL=0, 最大载荷为128bits;CTL=1,最大载荷为96bits。
NetMIC32/64Network Message Integrity Check。CTL=0,NetMIC =32bits;CTL=1,NetMIC=64bits。

当网络层的数据为分段接入层消息(Segmented Access message),其最小长度为5字节,此时的NetMIC为4字节,所以接入层消息在网络层封装后的最小长度为9+9=18字节。
当网络层的数据为未分段控制消息(Unsegmented Control message),其最小长度为1字节,此时的NetMIC为8字节,所以控制消息在网络层封装后的最小长度为9+9=18字节。
所以Network层的消息最小长度为18字节,最大长度为满载荷29字节。

2. Relay/Proxy

网络层负责消息的转发。
若当前节点支持中继,且接收到的消息TTL大于2,目的地址非本节点元素的单播地址。则该消息可以被中继,将TTL减1,附加一个随机延迟,然后再广播出去。
若当前节点支持代理,且接收到的消息TTL大于2,目的地址非本节点元素的单播地址。若该消息来自GATT连接,则该消息TTL减1,再通过ADV Bearer转发出去;若该消息来自ADV Bearer,则该消息TTL减1,再通过GATT Bearer转发出去。

3. Network Message Cache

TTL从时间上保证了一条消息不能无限次中继,每中继一次TTL减1,为1时就不再中继。
而Network Message Cache就从空间上保证,同一条消息不会被同一节点中继两次。

4. Network Layer消息接收

① 检查NID是否匹配已知的NID。
② 授权匹配NetKey。
③ 检查SRC/DST是否有效。
④ 检查是否处于cache中。
⑤ 上报至传输层。
⑥ 检查是否可以被代理或中继。

5. Network Layer消息发送

① 设置IVI域为32bits IV只得最低有效位。
② 设置NID域为通过加密key生成的NID。
③ 对DST和TransportPDU进行加密,生成NetMIC。
④ 对CTL/TTL/SEQ/SRC进行混淆处理。
⑤ 将消息发送至所有的网络接口,通过该接口规则对消息进行过滤,然后发送至Bearer Layer。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值