地址有四种类型,其中的三类用于消息的传送:单播(unicast)、虚拟(virtual)和群组(group)地址。第四种被称为未分配(unassigned)地址。地址长度为16位,并按下述定义进行编码
mesh地址编码
未分配地址(Unassigned Address)
未经配置的元素或未被指定地址的元素拥有的就是未分配地址。鉴于这些元素没有唯一的地址,它们不会用于消息的传送。
单播地址(Unicast Address)
在“启动配置”(provisioning)期间,启动配置设备(provisioner)会在网络节点的生命周期内为节点中的每个元素分配一个单播地址。单播地址可能出现在消息的源地址字段或目的地址字段中。发送到单播地址的消息只能由一个元素进行处理。
虚拟地址(Virtual Address)
虚拟地址是与特定的UUID标签相关联的一组元素;这些地址可能会被发布或订阅。UUID标签是与多个来自一个或多个节点的元素相关联的128位值。
对于虚拟地址,15和14位分别设置为1和0(图2);13 – 0位被设置为散列值(hash value)(提供16,384个散列值)。散列(hash)来自于Label UUID。使用订阅元素(subscribing element)来检查完整的128位UUID是十分低效的,特别当UUID跨越多个消息段时更为低效。散列值提供了一种更为有效的方式来确定哪些消息被发送至哪些元素。
群组地址(Group Address)
群组地址是蓝牙mesh网络中的另一种多播地址(multicast address),它通常代表一个或多个节点中的多个元素,包含两种类型:
- 动态分配的地址(Dynamically Assigned) -> 0xC000-0xFEFF
- 固定地址(Fixed Address) – 由蓝牙技术联盟分配,分为五段:
- 保留供将来使用 (RFU) –> 0xFF00-0xFFFB
- All-proxies -> 0xFFFC
- 发送到启用代理(proxy)功能的所有节点
- All-friends -> 0xFFFD
- - 发送到启用friend功能的所有节点
- All-relays -> 0xFFFE
- - 发送到启用中继(relay)功能的所有节点
- All-nodes -> 0xFFFF
- - 发送到所有节点
- 发送到固定节点的所有消息都由节点的主元素(primary element)
|