蓝牙

L2CAP(1&2)

2018-10-31  本文已影响0人  lucca_x

1 introduction

L2CAP向上层提供面向连接的和无连接的数据服务,包含了协议的多路复用功能和分段重组操作。L2CAP允许高层协议和应用发送和接收最大达64KB的数据包(L2CAP service data units, SDU),L2CAP也允许在每个信道上的流控和重传。
L2CAP层提供的逻辑信道称为L2CAP信道,由一个或多个逻辑链路组成。

1.1 L2CAP features

L2CAP的功能包括 协议/信道复用, 分段重组(segmentation and reassembly, SAR),各信道流控和错误控制。L2CAP面向底层是由以下一种组成:

1.2 Assumptions

协议设计遵循下列假设:

1.3 Scope

L2CAP不提供:

1.4 Terminology

2 General Operation

L2CAP是基于信道的概念的。每个信道的一端都可以用channel identifier(CID)标识。

2.1 Channel identifiers

一个CID是一个由设备逻辑信道一端表示的本地名,CID的范围与逻辑链路有关,如下图所示:



空标识(0x0000)不要用在目的端口。0x0001到0x003F保留给L2CAP功能,被称为固定信道。最小的标识是L2CAP的signaling channel,0x0001,或者是L2CAP LE signaling channel, 0x0005。如果支持0x0005,那么0x0004和0x0006也是支持的。可以通过Information Request/Response来得到远端设备的ACL-U逻辑链路的固定信道号。
每个固定信道的特征都是不同的,这些特征有配置参数(如可靠性,MTU,QoS),安全和通过L2CAP configuration机制来修改参数的能力,具体可见下表:




当ACL-U或者LE-U逻辑链路建立起来后固定信道就已经存在了。所有一般信道建立时需要的初始化工作,支持的固定信道在ACL-U或者LE-U逻辑链路建立的时候就都做好了。固定信道也只能在ACL-U或者LE-U上运行,不可移动。

剩下的信道可以自由命名CIDs,但是同一时期启用的L2CAP信道不能有相同的CID。ACL-U和LE-U逻辑链路拥有不同的CID命名空间,AMP-U与ACL-U分享CID命名空间。
CID的动态分配与不同的逻辑链路有关,一个设备可以独立的分配CID。因此,尽管分配给连接到本地设备的不同远端设备的CID可能相同,设备依然可以连接到不同的远端设备。更甚,相同的CID分配给连接到本地设备的同一个设备,依然能够区分,因为他们分属不同的逻辑链路。

2.2 Operation between devices

下图举例说明了CID在不同设备的L2CAP实体间通信时的用处。面向连接的数据意味着两个设备之间已建立连接,就会有一个CID绑在这个逻辑链路上来标识信道的一端。当进行广播时,无连接的信道使得数据是单向传输的,这个无连接信道可能是传输数据到piconet里的所有slave端的。 当进行单播传输时,这个无连接信道可能用于master和slave之间的任一方向传输。
固定信道CID 0x0001是signaling信道,用来创建面向连接的数据信道,沟通协商面向连接的数据信道的变化和发现ACL-U上的面向连接的信道。
L2CAP signaling信道和所有的固定信道在ACL-U建立好后就存在了。0x0002保留用来做所有的incoming和outgoing的无连接数据传输,不论是广播还是单播。无连接的数据可能在ACL-U建立起来后,发送设备确认远端设备支持无连接传输后立即传输。

2.3 Operation between layers

L2CAP需按下面的描述来架构。L2CAP在上层和下层之间传输数据。文中列举了很多L2CAP支持的服务。每个实现还必须支持signaling命令,还需支持接收从下层发上来的多个events,产生对应events发送到上层。


2.4 Modes of operation

每个L2CAP信道可从下列5个模式中选择一个:

2.5 Mapping channels to logical links

L2CAP将信道映射到controller的逻辑链路上,逻辑链路轮流运行在controller的物理链路上。所有的本地设备和远端设备之间的逻辑链路都运行在一个屋里链路上。每个BR/EDR物理链路上都只有一个ACL-U逻辑链路,每个LE物理链路上都只有一个LE-U逻辑链路,但是AMP物理链路上可能有多个AMP-U逻辑链路。
两个设备之间的BR/EDR物理链路上的所有Best Effort和Guaranteed信道都映射到一个ACL-U逻辑链路上。AMP物理链路上的Best Effort信道都映射到一个AMP-U逻辑链路上,而Guaranteed信道都映射到各自的AMP-U逻辑链路上。两个设备间的LE物理链路上的所有信道都被看作是Best Effort,并被映射到同一个LE-U逻辑链路。
当一个Guaranteed信道被创建时,相关的Guaranteed逻辑链路也要被创建。Guaranteed逻辑链路的创建包含了准入控制,准入控制是用来确保guarantee的实现不需要对现有guarantee进行妥协。对AMP controller,L2CAP告诉controller要创建guaranteed逻辑链路,准入控制由controller来实现。对BR/EDR controller,准入控制由L2CAP来实现。

上一篇下一篇

猜你喜欢

热点阅读