使用BLE 4.2的系統(tǒng)設計:更快、更安全、更節(jié)能
提到家庭和工業(yè)自動化、物聯(lián)網(IoT)、可穿戴設備、人機接口設備(HID)眾多應用的無線連接協(xié)議時,藍牙一定是首選。為滿足各種應用的需求,藍牙技術聯(lián)盟(SIG)對藍牙規(guī)格進行了持續(xù)改進。發(fā)布4.1版大約一年后, SIG在2014年12月藍牙發(fā)布了藍牙規(guī)范4.2版。新的4.2主要包括三項更新 - 低功耗(LE)數據長度擴展(DLE)、鏈路層(LL)隱私保護以及安全性加強。這些功能提高了BLE數據帶寬、隱私保護和安全性,同時還有助于降低功耗。本系列文章將詳細討論這些功能以及它們如何影響系統(tǒng)性能。
本文引用地址:http://cafeforensic.com/article/201808/385815.htm藍牙低功耗(BLE)協(xié)議??梢苑殖扇齻€部分:
控制器:協(xié)議棧控制器對數據包進行了加密,轉換為無線信號發(fā)送。在接收時,控制器將對無線信號解碼,并重構數據包。
主機:主機由管理兩個或多個設備相互通信的各種協(xié)議和配置文件(安全管理器、屬性協(xié)議等)組成。
應用:可使主機和控制器實現(xiàn)一個特定功能的用例。
鏈路層(LL)
藍牙4.2的大部分新功能都集中在鏈路層周圍。鏈路層在建立可靠物理鏈路和功能中扮演著非常重要的角色,有助于提高BLE協(xié)議穩(wěn)健性和能效。鏈路層功能包括廣播、掃描、創(chuàng)建和維護連接以建立物理鏈路。在鏈路層上定義了兩個角色:主設備和從設備。
數據長度擴展(DLE)
數據長度擴展能夠使兩個BLE設備之間的數據傳輸更快。為了了解DLE功能,請先讓我們來看看鏈路層上的BLE數據包。下圖所示為藍牙4.0/4.1的鏈路層數據包結構。
如果我們仔細觀察各數據包的開銷,將發(fā)現(xiàn)存在1個字節(jié)的前導、4個字節(jié)的訪問地址、2個字節(jié)的數據頭、3個字節(jié)的循環(huán)冗余檢查(CRC)和一個可選的4個字節(jié)的消息完整性檢查(MIC)。當使用加密時,消息完整性檢查(MIC)將與有效負載一起發(fā)送。因此,每個包含27個字節(jié)數據的加密鏈路層數據均含有14個字節(jié)的開銷。現(xiàn)在,讓我們來看看藍牙4.2定義的鏈路層數據包結構。
相較于舊版本藍牙規(guī)范的27字節(jié),藍牙4.2中的有效負載量可達到251個字節(jié)。每個數據包開銷仍然保持不變,即14個字節(jié)。然而,該開銷現(xiàn)已與多達251個字節(jié)相關聯(lián),而不是27個字節(jié)。這種最小有效負載的變化提高了吞吐量并減少了處理時間。
圖4所示為當數據需要通過藍牙4.1和藍牙4.2從一個設備傳輸至另一個設備時的吞吐量。
在上圖中,數據包時間的計算方法如下:
數據包時間= 8 *(前導字節(jié)的數量+訪問地址字節(jié)的數量+頭字節(jié)的數量+有效負載字節(jié)的數量+ MIC字節(jié)的數量+ CRC字節(jié)的數量)/數據速率 秒
對于接收數據包,不存在有效負載和MIC字節(jié)。因此,接收數據包時間為:
發(fā)送數據包時間= 8 *(1 + 4 + 2 + 3)/ 106 秒
=80微秒
含27個字節(jié)的有效負載的發(fā)送數據包時間為:
發(fā)送數據包時間= 8 *(1 + 4 + 2 + 27 + 4 + 3)/ 106秒
=328微秒
同樣,251個字節(jié)的有效負載的發(fā)送數據包時間為2120微秒。
另外,如上圖所示,隨著各發(fā)送/接收數據包,存在兩個相關的幀間間隔(T_IFS),一個為發(fā)送期間,一個為接收期間。如果某個事務的幀數量增加,則該事務的耗時也將成比例地增加。當數據長度功能被啟用時,相較于藍牙4.1,藍牙4.2在一個幀內打包了更多數據,從而減少了每次事務處理的總時間,并增加了吞吐量(其中,吞吐量 =有效負載尺寸/總時間)。
如上圖所示,對于藍牙4.1鏈路層,最大有效負載尺寸為27個字節(jié)(216比特)以及該交易的總時間為708微秒,意味著約 298 kbps的理論吞吐量。
而對于4.2鏈路層,最大有效負載尺寸為251個字節(jié)(2008比特)以及總時間為2500微秒,意味著約 784 kbps的理論吞吐量。因此,相較于藍牙4.1,藍牙4.2提供了大約2.6倍的更高吞吐量。
BLE 4.2允許主設備和從設備之間協(xié)商數據長度,還允許不對稱的發(fā)送和接收有效負載量。有效地利用該功能以及選擇合適的接收/發(fā)送數據長度對于實現(xiàn)最大吞吐量具有十分重要的意義。
讓我們考慮這樣一個應用:BLE從設備需要將幾千字節(jié)傳輸至主設備、從主設備接收空包并且連接間隔為8.75毫秒。假設在以下設置中協(xié)商數據長度(從設備):
情景1 – 發(fā)送 - 251個字節(jié),接收 - 251字節(jié)
情景2 – 發(fā)送 - 251個字節(jié),接收 - 27字節(jié)
在情景1中,如圖5所示,在第一次接收/發(fā)送數據包時,接收有效負載尺寸為0字節(jié)以及發(fā)送有效負載尺寸為251個字節(jié),耗時2.5毫秒(包括幀間間隔)。第二次接收/發(fā)送數據包也是一樣的。這兩個接收/發(fā)送數據包共耗時5毫秒,在此連接間隔內剩下3.85毫秒。在理想情況下,應該在同一連接間隔內存在另一個接收/發(fā)送數據包。但是,主設備的調度器不會在此連接間隔內安排另一個接收/發(fā)送數據包。這是因為調度器會基于協(xié)商的數據長度(本案例中發(fā)送/接收的數據長度均為251)來檢查發(fā)送/接收數據包是否具有足夠的時間。如圖所示,含有接收和發(fā)送有效負載量為251字節(jié)的接收和發(fā)送數據包需要4.54毫秒。然而,前兩個數據包之后的可用時間為3.85毫秒,這導致在本連接間隔內僅2個發(fā)送數據包。
在情景2中,在該連接間隔內,調度器僅需要2.64毫秒就可調度一個數據包,因此在8.75毫秒的連接間隔內可以容納第三個數據包,如圖6所示。如圖所示,相對于案例1,本案例將提供高于50%的吞吐量。
盡管PDU尺寸的選擇會影響吞吐量,但還存在對其產生影響的其他因素,比如,連接間隔和最大傳輸單元(MTU)。
數據長度的擴展可通過任何連接設備的控制器來觸發(fā)。如果兩個設備都支持數據長度的擴展功能,則該設備可發(fā)送一個獲取更新數據長度的請求,而其他設備將通過其自己的參數來做出響應。圖7所示為協(xié)商進程。
評論