Linvis Blog

BLE-MESH-Network

2019-07-13

地址

  • 单播地址(unicast address)
    最大32767(0x7FFF),有Provisioner在配对的时候分配

  • 虚拟地址(virtual address)
    代表一系列目标地址,16bit的值, 范围0x8000~0xBFFF
    虚拟地址的意思:
    Label UUID是128bit的,一个或多个elements可以订阅该UUID,达到接收消息的目的,对该UUID做hash,即为虚拟地址。

  • 组地址(Group address)
    这个很好理解了。组地址的一些定义如下:

Network PDU

结构如下:

  • IV Index
    IV Index提供一个在应用层和网络层,用于临时加密认证的信息熵。它必须经常改变以避免相同的SEQ。
  • NID
    加密后的NetKey
  • CTL
    控制位,决定该信息是一条控制信息还是一条可使用信息。
  • TTL
    是否继续转发
  • SEQ
    24bit,这让节点可以传送多达0xFFFFFF条不重复的信息。每生成新的Network PDUs,Sequence number都会增加。
  • SRC和DST
    起点地址和终点地址,起点地址只能是单播地址,终点可以是任何地址。
  • TransportPDU
    数据段,最大128bits
  • NetMIC
    验证DST和TransportPDU未发生丢包,而导致其改变。

流程:
几个关键的点,检查NID里的NetKey是否相同,检查SRC和DST地址。

底层上,消息是可以分段和重组的。
有一个有意思的地方,在消息分段和重组机制里,利用了Segment offset number和last Segment number。

扫描二维码,分享此文章