本節書摘來自華章出版社《無線網絡:了解和應對網際網路環境下網絡互連所帶來的挑戰》一書中的第3章,第3.1節,作者:(美)傑克l.伯班克(jack l. burbank)等著,更多章節内容可以通路雲栖社群“華章計算機”公衆号檢視
本章将對wpan進行回顧,包括一些關鍵技術、應用案例和演進曆程。wpan技術用于距離幾十英尺的裝置之間的通信。與其他無線組網技術相比,wpan一般不需要複雜的基礎設施,是以功耗和成本都較低。據記載,在20世紀90年代末,ad hoc 組網概念促使了wpan的興起。如今,已實作了多種wpan标準以适用各種應用,包括無線耳機、無線遊戲、無線顯示和家庭自動化。
本章将要闡述三種wpan技術:uwb、ieee 802.15.4/zigbee和藍牙。每一節将會介紹一種技術和相應的使用案例。
藍牙sig成立于1988年,是一個私立的非盈利貿易協會,專門緻力于開發個域組網技術。藍牙這個名字來源于十世紀的一位丹麥國王harald i的綽号。藍牙是一個用于短距離個域組網的無線标準,旨在取代便攜或固定裝置的線纜。一些能夠使用藍牙的裝置有行動電話、耳機和筆記本電腦。藍牙工作在2.4ghz ism頻段,其特點為低功耗和低成本。
現有兩類藍牙系統。最初的标準定義了基本速率(basic rate,br)系統,而目前的4.0版本(2011年)标準用于支援le(low energy)系統。這些系統能夠提供用于無線個域組網技術的典型功能,包括裝置發現、連接配接建立和維護。目前,br系統在藍牙第一代标準的初始範疇之外又增加了一些新的功能,稱為增強型資料速率(enhanced date rate,edr),以及相關的mac層和phy層擴充以支援更高的資料速率。le系統緻力于滿足低功耗的需求。表3-1彙總了目前釋出的所有藍牙标準。

藍牙協定棧如圖3-1[3]所示。無線電層代表phy層,基帶層類似于osi的鍊路層或mac層。鍊路管理層用于實體鍊路的建立和控制。l2cap層用于邏輯鍊路控制(一個實體鍊路中可以存在多個邏輯鍊路),并向高層協定提供面向連接配接和無連接配接的資料服務。
核心藍牙系統包括一個主機和若幹個控制器。邏輯上,主機定義為非核心檔案之下、主機控制器接口(host controller interface,hci)之上的所有層。控制器正好相反,即hci之下的所有層。
藍牙br系統最大支援資料速率為721.2kbps,edr最大支援2.1mbps。使用802.11波形的高速運作最大能夠支援24mbps。這種系統使用一種跳頻的擴頻方式來增強對抗幹擾的魯棒性。br運作中使用二進制調頻方式來最小化接收機複雜度,符号速率為1ms/s。edr使用psk調制方式。
圖3-1 藍牙協定棧,摘自參考文獻[3]
在br系統中,主要的調制方式為高斯頻移鍵控(gaussian frequency shift keying,gfsk),帶寬比特周期乘積為0.5,調制指數在0.28和0.35之間,符号定時要求在±20ppm之間。頻移鍵控的數學表達式如公式(3-1)所示:
其中,t是時間自變量,es為每個符号的能量,t是比特周期,fc是載波頻率,n是數字采樣周期t的整數索引,an是第n個資料比特(0或1),h是調制指數,θ是連續相移。将公式(3-1)的信号通過公式(3-2)所示的高斯濾波器,就可以把fsk波形轉換為gfsk波形:
其中,t是時間變量,t是比特周期,bt是帶寬比特周期乘積。gfsk波形可以通過s(t)和g(t)的卷積得到:
gfsk能成為理想的調制方式的原因是,它比fsk有更高的頻譜效率。利用高斯比對濾波器通過擴寬轉換時間,同時最小化碼間串擾(isi)。
在edr系統中,在每個發送的藍牙資料包中調制方式是變化的。接入碼和標頭采用br系統 1mbps gfsk方式傳輸,而其他字段使用edr psk方式傳輸。這樣就通過增加標頭成功接收的機率改善了同步性能。
對于2mbps edr波形,調制方式為π/4-差分四相相移鍵控(π/4-dqpsk)。對于3mbps edr波形,調制方式為八進制差分相移鍵控(8dpsk)。這裡使用了升餘弦脈沖成形。二進制資料流映射到代表信号相位的符号上,然後對這些比特進行差分編碼。表3-2[3]總結了這兩種調制方式的映射關系。
摘自參考文獻[3]。
在2.4ghz頻段裡,藍牙規範定義了多個特定的信道。這些信道用于跳頻機制。信道定義如式(3-4)所示:
在藍牙中,連接配接可以是點對點,或是點對多點。對于點對點的連接配接,兩個裝置共享實體信道。對于點對多點的連接配接,多個裝置之間共享實體信道。這些共享同一個信道的裝置組成一個微微網絡。在一個微微網絡中,隻有一個主節點協調所有的通信,其他節點為從節點。從節點能夠加入多個微微網絡,通過在多個主節點之間複用時間來完成通信,每個主節點相當于一個獨立的微微網絡。此外,一個微微網絡中的主節點可以是另外一個微微網絡中的從節點。由于藍牙的跳頻功能,2.4ghz頻帶内的多個微微網絡采用異步的跳頻,以減少微微網絡之間的幹擾。圖3-2[3]詳細說明了一些微微網絡的概念。
圖3-2 微微網絡概念,摘自參考文獻[3]
圖中有三種不同配置的微微網絡。值得注意的是,多個主/從節點配置表明一個節點在一個微微網絡中作為主節點的同時也可在另外一個微微網絡中作為從節點。
在一個網絡中,每個藍牙裝置配置設定一個48比特的裝置位址。它包含一個3位元組的公司id,作為高位位址部分(uap),用于定義藍牙裝置的廠商。公司可配置設定的部分有3位元組,作為低位位址部分(cap),用于區分同一廠商的其他裝置。圖3-3[3]詳細說明了藍牙的位址結構。
在公司配置設定的位址部分,某些保留數值用于查詢操作。
藍牙裝置生成和接收藍牙資料包,基本速率型的資料包格式如圖3-4 [3]所示。
圖3-4 藍牙基本速率資料包結構,摘自參考文獻[3]
如圖所示,接入碼可以為68或72比特。標頭為54比特,有效載荷為0~2745比特之間。如果接入碼後是標頭,那麼接入碼的長度為72比特,否則是68比特,表明使用短接入碼進行同步或其他功能。接入碼用以區分同一實體信道的不同資料包。這使得接收機采用滑動相關器便可快速地區分同一信道上的資料包。藍牙有四種類型的接入碼:信道接入碼(cac)、裝置接入碼(dac)、通用查詢接入碼(giac)和專用查詢接入碼(diac)。cac用于使用者資料的傳輸,而dac用于裝置的直接通信。通用/專用查詢接入碼用于查詢功能。
增強型資料速率的資料包格式如圖3-5所示。值得注意的是,這種格式比基本速率型多出很多字段。
圖3-5 藍牙增強型資料速率的資料包結構,摘自參考文獻[3]
如圖所示,前兩個字段與基本速率型完全相同,調制方式也相同。但是,為了支援高速率dpsk調制,在資料有效載荷之前、標頭和同步符号頭之間插入了保護間隔。負載之後增加了包含兩個dpsk符号的尾部。
br和edr的標頭有6個字段:
lt_addr(3比特):邏輯傳輸位址,用于訓示邏輯傳輸類型
type(4比特):類型碼,用于訓示資料包類型
flow(1比特):流量控制字段
arqn(1比特):确認訓示符
seqn(1比特):序列号訓示
hec(8比特):標頭錯誤校驗
藍牙實體信道由4部分組成:僞随機跳頻序列用于改變調制基帶信号的中心頻率、特定時隙傳輸時間、接入碼和資料標頭。為使裝置能在實體信道上通信,它們必須保持嚴格的時間同步以確定它們以相同的速率跳頻,并保持相同的中心頻率。28比特的時鐘用于裝置間的同步,每個時鐘的時間片為312.5μs。藍牙主裝置會選擇跳頻序列,并指令同一個微微網中的從裝置去同步這個序列。在連接配接階段最大跳頻速率可達1600跳/秒,在查詢和尋呼階段可達3200跳/秒。
藍牙中定義了4種實體信道:
基礎型微微網實體信道:用于使用者資料傳輸
适應型微微網實體信道:用于使用者資料傳輸
查詢掃描實體信道:用于發現裝置
尋呼掃描實體信道:用于裝置間建立連接配接
基礎型和适應型微微網實體信道用于使用者資料傳輸。适應型微微網實體信道的跳頻序列不同于基礎型微微網實體信道。在适應型信道中,跳頻序列可以少于79個跳頻頻率,但基本序列要使用所有的79個頻率。
藍牙中利用時隙使得主裝置和從裝置之間共享媒體。主裝置給所有的裝置配置設定特定的時隙。圖3-6[3]詳細說明了一個理想的時隙配置設定方案。
圖3-6 藍牙中的時隙配置設定,摘自參考文獻[3]
值得注意的是主裝置選擇的頻率取決于目前的時鐘值(用索引k來表示)。一旦主裝置完成了一次傳輸,從裝置就會使用相同頻率在下一個時隙進行傳輸。時隙配置設定根據傳輸的資料包長度大小來确定,在一個資料包長度内隻使用一個頻率。
對于每台藍牙裝置而言,有3個主要的狀态:連接配接(裝置處于活躍狀态并傳輸使用者資料)、休眠(鍊路處于空閑狀态且無傳輸)、待機(預設方式,裝置會處于低功耗配置,并且隻有時鐘在工作)。圖3-7[3]詳細說明了可能的狀态。
圖3-7 藍牙鍊路的狀态圖,摘自參考文獻[3]
建立新的連接配接需要尋呼過程。任何發起連接配接的裝置成為該微微網絡的主裝置。裝置使用尋呼掃描子狀态掃描特定的頻率以發現其他裝置。主裝置使用尋呼子狀态與處于尋呼掃描子狀态的任何從裝置建立連接配接。表3-3總結了建立一個連接配接需要的步驟[3]。
在表中,資料包類型id名額識資料包,為68比特的固定長度并包含dac或iac。資料包類型fhs指的是跳頻同步資料包,包含藍牙裝置位址和主裝置的時鐘資訊。在一個微微網中,fhs資料包用以確定從裝置跟主裝置之間嚴格保持時鐘一緻和跳頻同步。poll類型沒有負載,但需要從裝置進行确認。是以,主裝置能夠确認從裝置與它的跳頻圖案比對。否則,兩個裝置重新回到尋呼/尋呼掃描子狀态。
查詢子狀态用于裝置發現。一個裝置要發現其他裝置,必須進入查詢子狀态。在此狀态,跳頻圖案會驅動裝置在不同的頻率上發送一個查詢消息(id資料包)。這個圖案來自于giac(用于所有裝置的一個數值)的低位址部分。任何可被發現的裝置會周期性地進入查詢掃描子狀态,尋找這個消息并使用它作為建立連接配接的基礎。
在連接配接子狀态,裝置可能處于活躍或休眠狀态。在任何時候,連接配接模式下最多有7個活躍裝置,可以自由地加入信道。休眠狀态最多有255個裝置。在這個階段,裝置保持與主裝置同步,但是并不參與信道中正常的發送/接收。主裝置在正常時隙發送一個信标來維持休眠裝置的同步。
在不同的工作模式下,藍牙定義了一系列邏輯傳輸,用于承載不同類型的業務。這些類型包括:
同步定向連接配接(sco)
擴充型sco(esco)
異步定向連接配接(acl)
活躍從裝置廣播(asb)
休眠從裝置廣播(psb)
sco和esco都是用于主從裝置之間的點對點傳輸,包含如話音或同步資訊等業務,且主裝置一般會給他們保留正常時隙。acl也用于主從裝置之間的傳輸,但時隙并不保留。主裝置使用asb與活躍從裝置通信,而用psb與休眠從裝置通信。
藍牙中定義了5種邏輯鍊路:
鍊路控制(lc)
acl控制(acl-c)
使用者異步/非同步(acl-u)
使用者同步(sco-s)
使用者異步/擴充型同步(esco-s)
lc和acl-c是控制鍊路,分别控制和管理鍊路。lc鍊路被映射到標頭上,且承載在除了id之外的每個資料包上。acl-u承載acl業務,而sco-s和esco-s分别承載sco和esco業務。表3-4總結了傳輸類型和相關的支援鍊路。
表3-5[3]總結了藍牙的大部分資料包類型。id資料包沒有在表中,因為它沒有標頭(也就沒有類型碼)。
表3-5中的資料包類型定義如下:
null:沒有有效載荷,隻包含cac和標頭。用于發送确認或接收緩存的狀态資訊。
poll:類似于null,但需要确認。
fhs:包含藍牙裝置位址和發送端的時鐘,用于輔助跳頻序列的同步。
dm1:用于任何邏輯傳輸中,支援dm1資料包類型的控制消息,也支援使用者資料。
hv1:用于sco邏輯傳輸中,包含10個資訊位元組,常用于支援使用者語音或資料。
hv2:用于sco邏輯傳輸中,包含20個資訊位元組,常用于支援使用者語音或資料。
hv3:用于sco邏輯傳輸中,包含30個資訊位元組,常用于支援使用者語音或資料。
dv:語音–資料組合包,其中語音字段80比特,資料字段最大150比特。
ev3:用于esco邏輯傳輸中,包含1~30個資訊位元組,常用于支援使用者語音或資料。
ev4:用于esco邏輯傳輸中,包含1~120個資訊位元組,常用于支援使用者語音或資料。
ev5:用于esco邏輯傳輸中,包含1~180個資訊位元組,常用于支援使用者語音或資料。
2-ev3:類似ev3,但負載調制方式為π/4-dqpsk,包含1~60個資訊位元組,常用于支援使用者語音或資料。
2-ev5:類似ev5,但負載調制方式為π/4-dqpsk,包含1~360個資訊位元組,常用于支援使用者語音或資料。
3-ev3:類似ev3,但負載調制方式為8dpsk,包含1~90個資訊位元組,常用于支援使用者話音或資料。
3-ev5:類似ev3,但負載調制方式為8dpsk,包含1~540個資訊位元組,常用于支援使用者話音或資料。
dm1:用于acl邏輯傳輸中,包含1~18個資訊位元組,且隻承載資料資訊。
dh1:用于acl邏輯傳輸中,類似dm1,但負載中的資訊未進行前向糾錯編碼。
dm3:用于acl邏輯傳輸中,最多占用三個時隙,且負載包含2~123個資訊位元組。
dh3:類似dm3,但未進行前向糾錯編碼。
dm5:最多可占用5個時隙,負載包含2~226個資訊位元組。
dh5:類似dm5,但未進行前向糾錯編碼。
aux1:類似dh1,但沒有循環備援校驗(cyclic redundancy check,crc)。包含1~30個資訊位元組,且占用一個時隙。
2-dh1:類似dh1,但調制方式為π/4-dqpsk。
2-dh3:類似dh3,但調制方式為π/4-dqpsk。
2-dh5:類似dh5,但調制方式為π/4-dqpsk。
3-dh1:類似dh1,但調制方式為8dpsk。
3-dh3:類似dh3,但調制方式為8dpsk。
3-dh5:類似dh5,但調制方式為8dpsk。
鍊路管理協定(link manager protocol,lmp)是藍牙中管理鍊路的機制,它控制着藍牙連接配接的所有方面。在acl-c邏輯鍊路中,使用預設的acl方式傳輸定義lmp的消息。圖3-8闡述了lmp的連接配接建立過程。由圖所示,最初為基帶尋呼過程,然後協商以校正時鐘偏移、支援哪種版本lmp以及支援哪種特性。接着,尋呼裝置向被尋呼裝置發送主機連接配接請求,被尋呼裝置響應,表示接受或拒絕消息。假如連接配接請求一旦被接受,則便會協商配對、認證和加密等特性。一旦這些完成,雙方都産生lmp建立完成消息去确認連接配接的建立。
為了保證應用的互操作性,藍牙規範特别定義了藍牙協定棧中每層的功能。參考文獻[3]定義了這些規範,用于每一層之間的垂直互動。所有裝置必須支援通用接入規範(generic access profile,gap),它定義了藍牙裝置的基本要求。在gap中,有一個屬性協定(attribute protocol,att),它允許裝置共享屬性來完成讀/寫,且這些屬性支援gap定義的功能。
為了使裝置支援特殊的應用,服務發現協定(service discovery protocol,sdp)能夠使應用發現服務以及可用的相關特征。例如,藍牙耳機與手機連接配接時,兩個裝置的藍牙核心系統都使用sdp來使耳機(語音)應用正常工作。藍牙号碼配置設定機構給特殊服務配置設定特定的通用唯一辨別符(universally unique identifier,uuid),用于訓示特殊服務類、規範。表3-6總結了服務類/規範。
可以定義使用者參數對藍牙裝置進行控制。例如,使用者可以為一個特定裝置(如智能手機)定義一個裝置名稱。此外,配對時使用者可以定義一個6位阿拉伯數字密碼(passkey),為兩個裝置間提供一個基本的認證機制,然後繼續進行配對過程。
3.1.1 le藍牙
在藍牙标準的core 4.0版本中定義了le藍牙規範[3]。為提高藍牙裝置能效,該規範定義了實體層和鍊路層特征。與br/edr規範不同,le本質上更輕量,與br/edr的實作相比,極大地減少功率消耗。此外,le通常不适用于使用者所認為的藍牙典型應用(音頻、視訊、資料)。相反,le适用于低帶寬、低延時的應用,如周期或觸發的傳感器傳輸。
le藍牙定義在2.4ghz ism頻段内,調制方式為高斯最小頻移鍵控(gaussian minimum shift keying,gmsk),帶寬比特周期乘積為0.5,調制指數在0.45到0.55之間。與br/edr相比,同樣傳輸功率下,提升了工作範圍,輸出功率範圍是0.01~10mw。
le藍牙的信道化與br/edr有很大的不同。在2.4ghz頻段内,總共有40個信道,每個信道間隔2mhz。其中3個廣播信道,37個資料信道。表3-7總結了le藍牙的信道化。值得注意的是,信道号37、38和39号信道對應廣播(advertising)信道(表格中用粗體顯示),而0~36号信道對應資料信道(表格中用斜體顯示)。
le工作的一個特點是包含5種工作狀态,各狀态之間的轉換關系如圖3-9所示[3]。
le藍牙協定規定,在同一時間内一台藍牙裝置隻允許處于5種狀态中的一種。在待機狀态下,不能接收和發送任何資料包;在廣播狀态下,發送廣播信道資料包,并可以監聽響應;在掃描狀态下,監聽廣播信道資料包;在初始化狀态下,監聽從特定裝置發出的廣播信道資料包,且可以向該裝置發送響應以初始化一次連接配接;在連接配接狀态下,與另一台藍牙裝置保持有效的連接配接。與br/edr相同,le也允許在連接配接狀态下把裝置分為主從兩種角色。
在le中,廣播信道用于發現裝置、初始化連接配接和廣播資料;資料信道用于連接配接裝置之間的互相通信。與br/edr不同,le不會跳頻,一個特定時刻隻使用一個實體信道。但是,每個資料包的開頭使用接入位址作為辨別符,以減小多個藍牙裝置之間由于使用相同的射頻信道而産生的幹擾。
le規定了唯一的鍊路層資料包格式,如圖3-10[3]所示。廣播信道資料包的8比特前導碼為0xaa。資料信道資料包的前導碼有兩種,如果接入位址的最低有效位(least significant bit,lsb)為0,則8比特前導碼為0xaa;如果接入位址的lsb為1,則8比特前導碼為0x55。所有廣播信道資料包的接入位址相同,均為0x8e89bed6。而對于資料信道資料包,接入位址則随兩個節點之間連接配接的不同而不同。pdu部分由使用者資料組成。同時為了確定資料的完整性,在資料包末尾添加了crc字段。
圖3-10 le鍊路層資料包格式,摘自參考文獻[3]
le分别定義了廣播信道和資料信道pdu的格式,圖3-11[3]為廣播信道pdu的格式。
圖3-11 廣播pdu格式,摘自參考文獻[3]
如圖3-11所示,標頭由6個字段組成。pdu類型字段表征廣播信道資料包的類型。表 3-8[3]總結了這些資料包的類型。
rfu為預留字段,這表示它們在藍牙4.0标準中還沒有被定義。txadd和rxadd字段對于每一種廣播信道資料包類型是唯一的。長度字段表征有效載荷的長度,以位元組為機關(6~37位元組或48~296比特)。
資料信道pdu格式用于資料信道資料包中。它的格式如圖3-12[3]所示。
圖3-12 資料pdu格式,摘自參考文獻[3]
表3-9[3]總結了資料pdu的字段資訊。
圖3-13描繪了一台藍牙裝置與另一台裝置初始化連接配接的流程。如圖中所示,裝置1發出一條指令用于與裝置2初始化連接配接。裝置1的鍊路層接收到一條來自裝置2的廣播,然後發送一條connect_req消息作為響應。這條消息發出以後,le連接配接完成響應就會發送到每一台裝置。
圖3-13 連接配接初始化流程,摘自參考文獻[3]
3.1.2 藍牙應用示例
目前,也許藍牙應用最常見的例子是無處不在的大多數行動電話所應用的免手持操作模式。在這種場景中,行動電話作為藍牙核心系統,附帶一個免手持的裝置,如裝有藍牙的汽車音響系統或一個獨立的耳機。在這個例子中,行動電話和免手持裝置組成的裝置對允許使用者利用他們的語音對行動電話進行操作,而不是用手撥電話号碼或手持行動電話。通過兩個裝置之間建立的藍牙資料無縫傳輸鍊路,免手持裝置可以正常操作麥克風和揚聲器,而這通常是隻有行動電話才能操作的。
藍牙技術的另一個不太常見的例子是無線計算機網絡。在這個例子中,假如有兩個使用者在同一個小房間使用兩個單獨的筆記本電腦。如果兩個筆記本電腦都支援藍牙,那麼他們就能夠使用藍牙波形配對,并彼此交換檔案。
藍牙技術越來越多地用于遊戲應用中。例如,任天堂的wii和索尼的playstation 3遊戲機都使用藍牙技術與無線控制器連接配接。
藍牙也可以用作本地無線網橋使一台筆記本電腦共享一部行動電話的網際網路連接配接。假定行動電話具有藍牙無線電和網絡共享功能,一台筆記本電腦就可以與這部行動電話配對,并通過藍牙鍊路來路由自己的ip業務,經由行動電話來通路蜂窩網絡。在這種情況下,行動電話充當筆記本電腦和蜂窩網絡之間的網關,使用藍牙作為鍊路來傳遞兩個系統之間基于ip的業務。
對于le藍牙,語音或視訊等流資料一般不适合傳輸。然而,周期性的傳感器資料應用可能會更合适。例如,将一個計步器安裝在具有le藍牙功能的鞋内。當鞋内的壓力超過一定的門檻值時,計步器傳感器就會觸發一個事件。從這個意義上說,計步器可以用作計數器來确定給定時間段内的步數。買了這雙鞋的跑步者可以将傳感器與一部支援le藍牙的智能手機配對,并計算一次跑步期間的步數。這項技術可以在連接配接模式下使用,通過資料信道用計步器傳感器發送事件更新,或者在無連接配接模式下對廣播信道加以使用。
3.1.3 藍牙性能
早在2006年,參考文獻[63]就已經評估了br藍牙的性能。特别是,文獻的作者們測試了幾種不同的場景,每種場景中傳輸的檔案大小固定,從200到5000 kb不等。在每次測試中,作者們将兩個藍牙裝置分開一段固定的距離,距離分别為2、4或6米,還測試了兩台裝置被兩堵牆分隔開的情況。這些測試的結果如圖3-14[63]所示。顯然,随着距離從2米變化到6米,檔案大小似乎對性能并沒有本質的影響,圖上顯示可以實作約為280 ~ 400 kbps的吞吐量。然而,當檔案大小較小時,結果表明變化比較大。另外,在被兩堵牆分開的情況下,吞吐量明顯減小,在220~280kbps間變化。測試結果表明,原始的br藍牙實體層在個域通信範圍内表現出良好的性能,給定的應用可以有效利用的資料速率範圍為200~400kbps。這些速率适合于免手持的語音和低速網際網路通路業務(網頁浏覽或電子郵件)。雖然br藍牙的最大廣播速率為1mbps,但很明顯,使用者可以實作的吞吐量非常小,隻有最大速率的20%~40%。然而應該注意的是,給出的結果是基于特定的藍牙收發裝置實作的,是以采用其他廠商的裝置和2006年以來開發的改進的收發裝置前端進行測試,結果可能會有所不同。
圖3-14 藍牙性能,摘自參考文獻[63]