目录
一、什么是BLE Mesh Network Layer网络层?
一、什么是BLE Mesh Network Layer网络层?
- 定义了数据的寻址和转发。Network Layer网络层使用一种称为Mesh Address的地址类型,来标识不同的节点和消息。每个节点都有一个唯一的Mesh Address,用于在网络中定位和通信。每条消息也有一个Mesh Address,用于在网络中传递和转发。
- 定义了网络层的格式。Network Layer网络层使用一种称为PDU(Protocol Data Unit)的数据结构,来封装和传输消息。PDU包含了消息的头部和尾部,以及一些可选的字段。头部包含了消息的类型、长度、序列号等信息,用于标识和处理消息。尾部包含了消息的校验码、加密密钥等信息,用于验证和保护消息。
- 定义了一些输入输出过滤器(Filter)。Network Layer网络层使用过滤器来决定哪些消息需要转发、处理还是拒绝。过滤器可以根据不同的条件来选择性地接收或发送消息,例如节点地址、Mesh Address、TTL(Time to Live)值等。
二、网络层介绍
2.1 节点地址
BLE mesh使用了四种类型的地址,地址长度为16位,分别是:
未分配的地址(Unassigned Address):一种特殊的地址类型,值为 0x0000。它的使用表明未经配置的元素或未被指定地址的元素。未分配的地址不能用于网络数据的发送。
单播地址(Unicast Address):单播地址的范围是从0x0001到0x7FFF,也就是说最多可以有32767个单播地址。用于标识网络中的单个元素,由provisioner分配,不能重复。在“启动配置”(provisioning)期间,启动配置设备(provisioner)会在网络节点的生命周期内为节点中的每个节点元素 (一个节点Node可以有多个节点元素Element, 例如一个多孔插座作为一个节点,插座上的每一个插孔都是一个独立的节点元素)分配一个单播地址。
组播地址(Group Address):用于标识网络中的一组元素,可以由任何节点创建,必须唯一。组播地址的范围是从0xC000到0xFFFB,其中0xFF00到0xFFFB是保留地址,不能使用。0xFFFC到0xFFFF是特殊地址,用于表示不同类型的节点。
0xFFFC 代指所有的代理节点(Proxy Node)
0xFFFD 代指所有的朋友节点(Friend Node)
0xFFFE 代指所有的转发节点(Relay Node)
0xFFFF 代指所有的节点(All Nodes)
虚拟地址(Virtual Address):用于标识网络中的一组元素,由128位的标签(Label UUID)生成,可以创建更多的地址,但需要更多的存储空间和处理时间。
2.2 Network PDU
Filed |
Size(bits) |
Notes |
IVI |
1 |
包含了IV Index的最低有效位 |
NID |
7 |
一个7位的网络标识符,用于查找验证和加密此网络层PDU的密钥 |
CTL |
1 |
用于确定消息是控制消息的一部分还是访问消息的一部分 |
TTL |
7 |