BLE Mesh理论资料
三、 SIG MESH协议各个层的作用
1、 SIG MESH协议层一览
2、 承载层
3、 网络层
4、 底层传输层
5、 上层传输层
6、 访问层
7、 基础模型层
8、 模型层
三、SIG MESH协议各个层的作用
前言:不管是Bluetooth low energy还是SIG MESH的载荷包,都是由不同的协议层从上到下层层拼装,最后由PHY层将数据发送出去,因此,层数越多就意味着越复杂。正因为如此,我们想要深层次的了解SIG MESH就务必要先了解SIG MESH协议栈各层的作用。
1、SIG MESH协议层一览
在开始讲解各个层的作用之前,先看看整个SIG MESH协议层是长什么样的
由上图可知,SIG MESH由模型层,基础模型层,访问层,上层传输层,下层传输层,网络层,承载层组成。
我们先来看一下Mesh数据包的格式:
下图为抓包数据,根据抓包数据和上图mesh数据包格式,对比一下可以很清楚的了解mesh数据包是怎么回事了。
2、承载层
mesh数据包的收发是需要媒介的,从上面的内容我们可以知道,其利用了低功耗蓝牙进行数据的收发,承载层定义了节点之间是如何传送网络信息的,其定义了两个承载:
- GATT
GATT承载的作用就是让不支持mesh协议栈的设备与mesh网络的节点间接地进行通信。使用”代理协议”就是Proxy节点,其实可以实现这些GATT特性的,并且同时支持GATT承载和ADV承载。
也就是说支持代理协议的节点是支持”mesh proxy service”以及广播行为的
- ADV
ADV承载利用BLE的GAP广播和扫描来传送和接收网络PDU
3、网络层
网络层是SIG MESH最重要的组成部分,其功能可以分为以下几个部分:
- 定义了被承载层传输的底层传输层PDU的网络PDU格式,初看可能会有点拗口,但是从上面章节的Mesh数据包分解图,你就能很快理解了。底层传输PDU被合并并组装成网络PDU,然后被传送到承载层。
- 它解密并验证和转发在输入接口接收到的传送进来的信息到上层传输层,和或者输出接口,并加密和验证并转发派发到输出网络接口的输出信息。
不管是输入还是输出接口,它们都叫做”网络接口”
输入接口:决定传入的mesh信息派发到网络层还是丢弃掉,也就是说决定将mesh信息传入到网络层还是直接丢弃掉。
输出接口:决定传出的mesh信息到承载层还是丢弃掉,同时不管是GATT承载还是ADV承载都要将TTL等于1的所有信息全丢掉,同理,也就是说决定将组装好的网络层信息传送到承载层还是丢弃掉。
细心的读者可能已经察觉到代理以及中继的特性是网络层的一种行为,也就是说代理和中继的功能在这一层得到实现。因为上面的内容不断地强调转发,转发,还是转发。只不过一个是通过ADV承载将网络层的PDU转发,另外一个则是在GATT和ADV承载之间转发。前者的行为属于中继,而后者则是代理。
4、底层传输层
从上面章节的Mesh数据包分解图可以看出,底层传输层从上层传输层接收上层传输层的PDU,然后将这个信息发送到对端设备的底层传输层。但是,上层传输层的加密访问载荷包最大是380字节,而底层传输层想要传送这么大的数据,只能采用分段重组的方式了。所以如果要传达的数据量大于11字节,那么此时就必须要分段了。而对于对端设备而言,如果接收到的不是分包的上层传输层PDU的底层传输PDU的话,它的底层传输层则直接把该PDU传给上层传输层,否则需要将这些分包的上层传输层PDU的底层传输PDUs重组,一旦完成重组则上传至上层传输层。
5、上层传输层
上层传输层的主要职责如下:
- 从访问层接收访问层载荷包并使用application key对其进行加密和验证,然后将这些信息发送到对端设备的上层传输层,而对端设备的上层传输层会用相同的application key去验证接收到的信息合法性,这一点我们仍然可以从上面章节的mesh数据分解图可以看出
- 内部生成的上层传输层控制消息,同样的将这个信息传送到对端设备的上层传输层,然而,控制信息则仅在网络层被加密与验证
控制消息是什么?如下图,注意心跳包也是在这一层实现的。
6、访问层
访问层负责定义应用如何利用上层传输层,包括:
- 定义应用数据的格式
- 定义并控制在上层传输层执行的加密和解密过程
- 在将数据上传到更高的层之前,对来自上层传输层的数据进行验证,判断其是否适用于该网络和应用
该层已经非常接近应用层了,基本上这一层表示的数据来源于Mesh Model Spec规定的哪些参数值了。
7、基础模型层
该层定义了访问层的状态,信息以及配置和管理网状网络所需的模型,至于相关状态的详细定义则不是Mesh Spec的部分,我们可以从Mesh Model Spec获取得到这些细节的内容;同理,相关定义的信息也是从Mesh Model Spec中可以获取得到,然而,配置和管理网状网络所需的模型主要是下面4个:
- Configuration Server Model
- Configuration Client Model
- Health Server Model
- Health Client Model
8、模型层
模型层涉及模型的实施,因此涉及一个或多个模型规格中定义的行为,消息,状态,状态绑定等的实现,更多的详细定义我们可以从Mesh Model Spec获知,这里不详述。