首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >布尔L2CAP层-分割与分割

布尔L2CAP层-分割与分割
EN

Stack Overflow用户
提问于 2022-03-16 21:10:21
回答 3查看 578关注 0票数 1

我有两个问题要问你们

  1. 在BLE L2CAP中分割+再组装与碎裂+重组有什么区别?经过一些研究,我无法理解它。不包括硬写的BL核specification?

  • 在哪里可以找到关于L2CAP的理论?
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2022-03-17 12:11:55

首先,请注意L2CAP最初是蓝牙经典的一个重要部分。蓝牙经典的L2CAP支持多种功能,如连接请求、可靠分组传输、不可靠分组传输、重传、流控制、信道复用、分组分段、各种信令等。

在创建BLE时,需要进行信道复用(针对SMP和GATT),以及在HCI和链路层传输时分割数据包的方法。最简单的决定似乎是在L2CAP规范中加入“尖角”BLE。

这意味着95%的L2CAP与BLE无关,不适用于BLE。当只考虑BLE时,也很难阅读L2CAP规范,因为并不总是清楚某一节只引用蓝牙经典,或者只引用BLE,或者两者都引用。

也就是说,分割和重组在蓝牙经典和BLE中都是使用的,它指的是如何将L2CAP帧分割成更小的片段,以适应较低层的数据包长度限制。BLE的较低层是HCI和链路层。

L2CAP帧总是包含一个包含2字节长度和2字节通道id的4字节头.当将帧分割成多个片段时,下层分组报头中的附加位指示数据包是新帧的开始还是前一帧的延续。对于每一个连接,属于特定帧的所有片段都必须按顺序在较低层上发送,即不允许将GATT帧片段与帧的SMP片段交错。这是因为在连续数据包中没有额外的指示,而该片段属于哪个帧,因此必须始终假定为前一个。对于链路层,此信息保存在链路层数据包报头的LLID字段中。有三种可能的设置:

  1. LL数据PDU: L2CAP消息的继续片段,或空的PDU。
  2. LL数据PDU:启动一个L2CAP消息或一个完全的L2CAP消息,而没有L2CAP控制PDU.

LL Control实现链路层控制协议,并且与L2CAP无关。这些数据包不是直接通过HCI发送的。

HCI层同样使用所谓的数据包边界标志。用于数据包的HCI分组报头包括连接句柄和分组边界标志。

控制器或主机都可以重组L2CAP片段。虽然对主机来说当然是强制性的,但对于控制器来说,它是可选的。重组只是通过积累片段来完成,直到根据报头的总长度等于长度为止。这意味着开始/继续头在BLE中实际上是多余的,因为BLE只使用可靠的传输,但仍然可以作为检测边界错误的一种方法。

支持LE数据长度扩展的控制器可以通过HCI接收来自主机的多个小片段,并将它们重组成一个大链路层分组。如果远程设备不支持LE数据长度扩展,控制器还可能从主机接收一个大的L2CAP数据包,然后将其分割成多个片段通过链路层发送。

现在开始分割和重新组装。这是蓝牙经典中的一个术语,用于支持大数据包,并与其他数据包进行多路复用。

碎片和重组的一个问题是,一个大分组将被发送到一个块中,在传输这个包时保留整个链路,因为来自一个帧的所有片段都必须按顺序发送。因此,L2CAP使用术语SDU“服务数据单元”来描述更高层(大)数据包。这个包可以被“分割”成几个较小的L2CAP I-帧,然后像往常一样发送,如果需要的话,可以使用碎片和重组。以前的问题现在已经解决了,因为一个SDU的I帧可以与来自另一个SDU的i帧交织。然后,L2CAP接收器主机将“重新组装”i-帧到原始SDU中。因此,可能存在多个待处理的传入不完整SDU。

在蓝牙4.2中,创建了面向蓝牙L2CAP连接的通道,作为除GATT之外的另一种发送数据的方式。这是一个全新的部分,在L2CAP,但借鉴的想法,蓝牙经典。这个想法再次能够从不同的信道交织大数据包(SDU)。还实现了一种流量控制机制。就像在蓝牙经典中,每个SDU被分成多个帧,这一次称为K帧。每个K帧都包含信道标识符,因此接收方知道这个帧属于哪个挂起的SDU。不过,请注意,如果仔细阅读规范,您将看到这一次这种机制并不称为分段和重新组装。事实上,它根本不叫任何东西。切分和重组术语只对各种蓝牙经典模式明确地定义,尽管对BLE L2CAP CoCs的原理是相同的。

我希望我上面所写的对于L2CAP理论来说是足够的。否则,我能推荐的最好的是蓝牙核心规范。但是,如果您阅读了L2CAP章节,请首先确定您正在阅读的部分中是否包含单词"LE“,否则它可能与此无关。如果其中包含"BR/EDR",则可能与此无关。

票数 4
EN

Stack Overflow用户

发布于 2022-05-02 07:24:22

蓝牙规范第4.2卷第3卷A部分第140页

..。

分割和重新组装操作仅用于增强重传模式、流模式、重传模式和流控制模式。

因此,在BLE l2cap中不使用分段和重构。

票数 0
EN

Stack Overflow用户

发布于 2022-05-02 11:37:40

蓝牙核心规范第5.2卷第3卷A部分第1031页

2.4操作L2CAP信道的模式可以在为每个L2CAP信道选择的几种不同模式之一中工作。模式有:·基本L2CAP模式·流量控制模式·重传模式·增强型重传模式·流模式·基于·LE信用的流量控制模式·增强型基于信用的流量控制模式

蓝牙核心规范第5.2卷第3卷A部分第1032页

基于LE信用的流量控制模式用于面向LE L2CAP连接的通道,用于使用基于信用的L2CAP数据方案(即不发送信令包)来控制流量。

蓝牙核心规范第5.2卷第3卷A部分第1131页

分割和重新组装操作仅用于增强重传模式、流模式、重传模式和流控制模式。

(我不看太新的报纸)我认为5.2够新的了吗?

此外,我必须指出,真正的实现,例如来自TI,Infineon (Cypress)的实现,完全证实了这一点,即满足规范。

不要谢))

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71504272

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档