《分布式系统:概念与设计》一3.5.3 IEEE 802.15.1蓝牙无线PAN

简介: 本节书摘来华章计算机《分布式系统:概念与设计》一书中的第3章 ,第3.5节,(英) George Coulouris Jean DollimoreTim Kindberg Gordon Blair 著 金蓓弘 马应龙 等译 更多章节内容可以访问云栖社区“华章计算机”公众号查看。

3.5.3 IEEE 802.15.1蓝牙无线PAN

蓝牙是一种无线个域网技术,源于通过无线连接移动电话与PDA、笔记本电脑以及其他个人设备的需求。由L.M.Ericsson领导的移动电话和计算机制造商的一个特别的兴趣小组(SIG)为无线个域网(WPAN)开发了一个规约,用于传输数字声音流和数据[Haartsen et al.1998]。1.0版的蓝牙标准于1999年发布,蓝牙这个名字出自一个海盗王。然后,IEEE 802.15工作组采用它为802.15.1标准并发布了用于物理层和数据链路层的规约[IEEE 2002]。
蓝牙网络与另一个广泛采用的无线网络标准IEEE 802.11(WiFi)有本质区别,它们在反映WPAN的不同应用需求、不同开销和能量消耗目标上有所不同。蓝牙主要针对非常小的低开销的设备,(例如佩无线耳机),它从移动电话接收数字声频流,同时也支持计算机、电话、PDA和其他移动设备之间的互连。开销目标是在手持设备的开销上增加5美元,能量目标是仅使用电话或PDA总电量的一小部分,甚至能用可穿戴设备(如耳机)的少量电池操作数小时。
目标应用一般要求的带宽比典型无线LAN应用更少,传输范围更短。蓝牙很幸运地与WiFi网络、无绳电话和许多紧急服务通信系统都在2.4GHz免牌照频率带宽上操作。传输以低能量方式进行,在所允许频带的79个1MHz的子带宽上以每秒1600次的比率跳跃,以减少干扰。正常蓝牙设备的输出功率是1mW,覆盖范围仅为10m;100mW设备的覆盖范围约为100m,适用于家庭网络类的应用。通过加入自适应范围的设施,可以进一步提高能量的有效性。自适应范围的设施能在协作的设备在附近(由最初接收的信号强度决定)时,将传输功率调整到一个较低的层次。
蓝牙结点动态结对,不需要先验知识。下面将给出结点关联协议。在成功关联后,发起结点成为主结点角色,138其他结点是从结点。微微网是由一个主结点和至多7个活动的从结点组成的动态关联网络。主结点控制通信通道的使用,给每个从结点分配时间片。一个参与多个微微网的结点可以作为沟通主结点的桥梁——按这种方式链接的多个微微网叫散射网。大多数设备具备作为主结点或从结点的能力。
虽然只有主结点的MAC地址用于协议中,但所有的蓝牙结点也都配备一个全局唯一的48位MAC地址(见3.5.1节)。当一个从结点在微微网中被激活,那么就给它赋予一个范围为1~7的临时的本地地址,以减少包头部的长度。除了7个激活的从结点外,一个微微网可以包含至多255个停放结点,以低功率的模式等待来自主结点的激活信号。
关联协议 为了节省能源,在关联前或最近没有发生通信时,设备将保持睡眠或备用模式。在备用模式下,设备每隔0.64~2.56s监听一次激活消息。为了与附近已知的结点(停放结点)相关联,发起结点以16频率子波段,发送16页的包序列,这个过程能重复多次。为了与范围内未知结点相关联,发起者必须首先广播查询消息序列。在最坏情况下,这些传输序列最多占用5s,从而使最大的关联时间约占7~10s。
关联之后,是一个可选的认证交换,该交换基于用户提供的或以前接收到的认证令牌完成,以确保与想要关联的结点关联,而不是与一个欺骗结点关联。接着,通过观察从主结点定时发送的包(即使这些包不是发送给从结点的),从结点与主结点保持同步。未激活的从结点将被主结点置为停放模式,将它在微微网中占用的槽释放供其他结点使用。
如果网络需要支持同步通信通道,并要求有足够的服务质量以进行双向实时音频的传输(如在电话和用户的无线耳机间的传输),同时,需要对数据交换异步通信提供支持,那么网络的体系结构与以太网和WiFi网的尽力而为多路访问的设计不同。同步通信是通过同步面向连接(SCO)的链路实现的,SCO是在主结点和一个从结点之间的一个简单的双向通信协议,主结点和从结点必须轮流地发送同步包。异步通信是通过异步无连接(ACL)链路实现的,这时,主结点周期性地向从结点发送异步轮询包,从结点仅在接收到轮询后发送包。
蓝牙协议的所有变体都使用结构如图3-25所示的帧。一旦建立了微微网,那么访问码由一个固定的导言组成,以使发送者和接收者同步,并识别槽的起点,然后是从主结点的MAC地址中导出的唯一识别微微网的代码。后者确保帧在有多个重叠的微微网的情况下也能正确地路由。因为介质可能有噪声,并且实时通信不能依赖重传,所以头部总是传输三次,头部的每一个拷贝也携带一个校验和,接收者检查校验和并使用第一个有效的头部。
image

地址域只有3比特,以便寻址到7个当前激活的从结点。发自主结点的0地址表示是一个广播。流控制、确认和序号均用1比特的域表示。流控制比特是供从结点使用的,用于告知主结点它的缓冲区已满。主结点应该等待来自从结点的确认比特非0的帧。每次新的帧从同一结点发出,序列号位就翻转一下。这用于检测重复(即重传的)帧。
SCO链路被用于时间关键性应用,例如双向语音交谈的传输。为了保持低延迟,数据包必须短,在这种应用中报告或重传损坏的数据包,没有太大的意义,因为重传的数据到达得太晚就没有用了。所以,SCO协议使用了一个简单的高度冗余的协议,其中80比特的声音数据按3倍量传输,即产生240比特的有效负载。任何两两匹配的80比特的副本被认为是有效的。
另一方面,ACL链路可用于数据传输应用,例如在一台计算机和一部电话之间的地址簿同步,此时的负载比上述的应用更大。这里不复制负载,但可能包含一个内部的校验和,用于应用层的检查,如果出现故障,可以要求重传。
数据以包为单位传递,由主结点分配和控制数据包传递所需的时间,数据包传递占据625ms的时间槽。每个数据包按不同的频率沿一个由主结点指定的跳跃顺序传输。因为这些槽没有大到足以允许实际的负载,所以帧可以被扩展至占据1、3或5个槽。这些特征和底层的物理传输方法使微微网的最大吞吐量达到1Mbps,可在主结点和从结点之间提供3个64Kbps的同步双工通道,或一个用于异步数据传递的速率最大为723Kbps的通道。这些吞吐量是根据上述最冗余的SCO协议版本计算出来的。其他协议变体则是为获得更大吞吐量权衡了3倍数据复制的健壮性和简单性(因此计算开销降低)而定义的。
与大多数网络标准不同,蓝牙包含了几个应用层协议的规约(叫设置文件),有些协议是专用于某一类应用的。设置文件的目的是增加互连不同厂商制造的设备的可能性。13个应用设置文件包括:通用访问、服务发现、串行端口、通用对象交换、LAN访问、拨号网络、传真、无绳电话、对讲机、耳麦、对象推送、文件传输和同步。其他的设置文件还在准备中,包括通过蓝牙传输高质量的音频甚至视频。
蓝牙在无线局域网中占据特殊的地位。它达到了支持具有令人满意的服务质量的同步实时音频通信(参见第20章有关服务质量问题的进一步讨论)以及用非常低的开销、小型便携式硬件、低能耗和有限带宽进行异步数据传输的目标。
蓝牙主要的不足在于与新设备关联所花的时间(最多可达10s)。这妨碍了它在某些应用中的使用,特别是在设备之间相对移动的情况下的使用,例如在道路收费或在移动电话用户经过一个商店时传递提示信息给他。关于蓝牙连网的详细内容可参考Bray和Sturman[2002]的书。
蓝牙标准2.0版(其数据吞吐量可高达3Mbps,足够承载CD音质的音频数据)已于2004年发布。其他的改进包括更快的关联机制和更大的微微网地址。在写作本书过程中,蓝牙标准的第3版和第4版正在开发中。蓝牙标准第3版把蓝牙控制协议同WiFi数据传输层结合以实现可达到24Mbps的吞吐量。蓝牙标准第4版正在开发中,将针对那些需要很长电池寿命的设备开发超低功耗蓝牙技术。

相关文章
|
物联网
《分布式系统:概念与设计》一3.5.2 IEEE 802.11无线LAN
本节书摘来华章计算机《分布式系统:概念与设计》一书中的第3章 ,第3.5节,(英) George Coulouris Jean DollimoreTim Kindberg Gordon Blair 著 金蓓弘 马应龙 等译 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1471 0
|
网络协议
《分布式系统:概念与设计》一3.5 实例研究:以太网、WiFi、蓝牙
本节书摘来华章计算机《分布式系统:概念与设计》一书中的第3章 ,第3.5节,(英) George Coulouris Jean DollimoreTim Kindberg Gordon Blair 著 金蓓弘 马应龙 等译 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1195 0
|
1月前
|
NoSQL 算法 安全
Redlock 算法-主从redis分布式锁主节点宕机锁丢失的问题
Redlock 算法-主从redis分布式锁主节点宕机锁丢失的问题
152 0
|
1月前
|
NoSQL 关系型数据库 MySQL
分布式锁(redis/mysql)
分布式锁(redis/mysql)
55 1
|
3月前
|
NoSQL Java 测试技术
字节二面:Spring Boot Redis 可重入分布式锁实现原理?
字节二面:Spring Boot Redis 可重入分布式锁实现原理?
158 1
|
3月前
|
存储 缓存 NoSQL
【分布式】Redis与Memcache的对比分析
【1月更文挑战第25天】【分布式】Redis与Memcache的对比分析
|
3月前
|
监控 NoSQL Linux
【分布式】Redis的持久化方案解析
【1月更文挑战第25天】【分布式】Redis的持久化方案解析
|
22天前
|
NoSQL Java Redis
如何通俗易懂的理解Redis分布式锁
在多线程并发的情况下,我们如何保证一个代码块在同一时间只能由一个线程访问呢?
31 2
|
1月前
|
缓存 NoSQL Java
【Redis】5、Redis 的分布式锁、Lua 脚本保证 Redis 命令的原子性
【Redis】5、Redis 的分布式锁、Lua 脚本保证 Redis 命令的原子性
56 0
|
1月前
|
人工智能 监控 NoSQL
【万字长文 一文搞定】Redis:从新手村到大师殿堂的奥德赛之旅 9种实现分布式锁的全技术指南
【万字长文 一文搞定】Redis:从新手村到大师殿堂的奥德赛之旅 9种实现分布式锁的全技术指南
80 4

热门文章

最新文章