陸晗,夏瑋瑋,何光櫟
(東南大學移動通信國家重點實驗室,江蘇 南京 210096)
藍牙(Bluetooth)是由“ 藍牙特別興趣小組”(Bluetooth Special Interest Group,BSIG)宣布的一種小范圍無線通信技術(shù)[1]。它是以低成本的近距離無線連接為基礎(chǔ),為固定和移動設備建立通信環(huán)境的一種特殊的近距離無線技術(shù)連接[2]。在藍牙技術(shù)被提出后的十幾年內(nèi),BSIG 先后發(fā)布了很多版藍牙核心規(guī)范,在低功耗藍牙(Bluetooth Low Energy,BLE)技術(shù)誕生之前,藍牙就已經(jīng)從1.1 版本逐步過渡到了3.0 版本。這些傳統(tǒng)藍牙技術(shù)存在耗電高,產(chǎn)品持續(xù)工作時間短、性能較差的嚴重缺陷,用戶的實際體驗不佳[3-4]。因此在藍牙核心規(guī)范V4.0 中,增加了低功耗功能,并提出了三種藍牙模式:經(jīng)典藍牙、低功耗藍牙和高速藍牙[5]。2016 年BSIG 發(fā)布了藍牙核心規(guī)范V5.0,其針對低功耗設備有著更廣的覆蓋范圍并增加了Mesh 組網(wǎng)功能[6]。2019 年BSIG 發(fā)布了藍牙核心規(guī)范V5.1 和V5.2。在規(guī)范V5.1 中,增強了對通用屬性配置文件(Generic Attribute Profile,GATT)緩存的改進,可以在服務器和客戶端之間實現(xiàn)更快、更節(jié)能的連接[7]。
為了實現(xiàn)對低時延同步音頻傳輸?shù)闹С郑谝?guī)范V5.2 中,加入了增強型ATT 協(xié)議(Enhanced ATT)、LE 功率控制(LE Power Control)和LE 同步信道(LE Isochronous Channels)等功能,提出了低復雜度通信編解碼器(Low Complexity Communication Codec,LC3)編解碼方式,低功耗藍牙音頻(Bluetooth Low Energy,BLE Audio)正式出現(xiàn)[8]。與經(jīng)典藍牙相比,BLE Audio有著更快的配對速率和更高效的媒體控制,并啟用定位功能來跟蹤耳機。并且,BLE Audio 還改善了音頻質(zhì)量,降低了功耗,改進了互動操作功能,引進了新的音頻設備類型。與經(jīng)典藍牙音頻的“單一流”相比,BLE Audio 提出了多流音頻的概念,它允許建立多個音頻流,使得原設備能夠獨立地向左右耳機發(fā)送同步音頻流[9]。通過這一功能,用戶可以有更好的立體聲成像體驗,能夠享受更無縫的語音控制服務以及更流暢地在多個音頻設備之間進行切換[10]。因為BLE Audio 設計理念的優(yōu)越性,在未來幾年,支持BLE Audio 的設備和技術(shù)都將成為藍牙連接的核心[11]。
自藍牙協(xié)議提出以來,許多專家學者以及企業(yè)單位圍繞藍牙技術(shù)提出了許多路由協(xié)議方案。盡管自藍牙核心規(guī)范V4.0 推出BLE 概念后,許多學者提出了許多針對BLE 的路由機制[12-16],但其中大部分都是針對藍牙低功耗網(wǎng)格網(wǎng)絡技術(shù)(Bluetooth Low Energy Mesh,BLE Mesh)的路由協(xié)議,針對BLE Audio 路由的研究寥寥無幾。在藍牙核心規(guī)范V4.0 中,BLE Mesh 網(wǎng)絡通過受控式洪泛機制來進行信息傳輸和尋找路由并更新網(wǎng)絡節(jié)點狀態(tài)[17]。洪泛雖然模式簡單且易于實現(xiàn),但也會引起網(wǎng)絡擁塞和數(shù)據(jù)沖突,尤其是在大規(guī)模的網(wǎng)絡中極大地降低網(wǎng)絡資源利用率。為了解決這一問題,可以采用基于目的節(jié)點序列距離矢量(Destination Sequenced Distance Vector,DSDV)路由的靶向洪泛,通過只洪泛控制報文來降低網(wǎng)絡開銷。有學者提出了一種基于無線自組網(wǎng)按需平面距離向量(Ad hoc on-Demand Distance Vector,AODV)路由算法來適應動態(tài)的網(wǎng)絡需求,從而允許消息直接路由到目的地而不發(fā)生洪泛[18]。該算法使用中間跳數(shù)和RSSI 的組合作為度量來選擇中繼節(jié)點。通過增加路由維護和路由中斷檢測功能,來實現(xiàn)網(wǎng)絡節(jié)點之間高效可靠的雙向路徑。這種路由算法通過減少大規(guī)模網(wǎng)絡的流量、能耗和分組丟失來實現(xiàn)網(wǎng)絡資源的有效利用。但由于連接請求包需要很多字段來攜帶控制信息且節(jié)點要發(fā)送數(shù)據(jù)包時往往要先尋路,又引入了較高的數(shù)據(jù)包傳輸時延。
作為移動自組織網(wǎng)絡中表驅(qū)動式路由和按需路由這兩類主流路由協(xié)議的代表算法[19-20],DSDV 路由算法和AODV 路由算法各有優(yōu)劣。AODV 在尋路階段占用的網(wǎng)絡資源少于DSDV,其網(wǎng)絡開銷更小,帶寬利用率更高。然而AODV 廣播包的開銷(需要攜帶的信息)要遠大于DSDV,節(jié)點發(fā)送和處理這些尋路信息需要花費更多的時間,這里引入了更高的處理時延;而且每次需要在發(fā)送數(shù)據(jù)之前再進行尋路,而DSDV 往往在節(jié)點要發(fā)送數(shù)據(jù)時就已經(jīng)有現(xiàn)成的路由[21],可以直接轉(zhuǎn)發(fā)數(shù)據(jù)。因此在時延表現(xiàn)上,DSDV 要明顯優(yōu)于AODV。同時就路由尋找機制的復雜度而言,DSDV 的復雜度明顯低于AODV,在可實現(xiàn)性上優(yōu)于AODV 協(xié)議。
本文考慮支持音頻業(yè)務傳輸?shù)乃{牙網(wǎng)絡,將BLE Audio 的同步傳輸鏈路引入DSDV 路由算法,來實現(xiàn)任意節(jié)點的點對點音頻傳輸。同時為了降低節(jié)點功耗,設計了一種根據(jù)節(jié)點狀態(tài)自適應修改節(jié)點廣播周期的機制。最后基于BLE Audio 硬件平臺針對功耗和時延對提出的算法進行了驗證。
考慮在單個藍牙節(jié)點通信范圍無法全部覆蓋的面積很大的區(qū)域內(nèi),通過布置在該區(qū)域內(nèi)的大規(guī)模藍牙網(wǎng)絡,能夠?qū)崿F(xiàn)任意節(jié)點的點對點同步音頻傳輸。該場景中的點對點音頻傳輸就是任意兩個藍牙節(jié)點分別作為音頻源(音頻發(fā)送端)和播放器(音頻接收端),從而使得用戶能夠通過這兩個藍牙節(jié)點同步收聽到相同的音頻。如圖1 所示。
圖1 點對點同步音頻傳輸示例
音頻傳輸業(yè)務對節(jié)點間的傳輸時延有著極高的要求。例如在電影院里,不同國家的觀眾通過藍牙耳機同步地收聽不同語種的配音,這就要求從音頻源到藍牙耳機的時延要很低。同時,由于藍牙設備的尺寸限制,其電池容量十分有限,這就要求在保證音頻包在各節(jié)點間低時延傳輸?shù)耐瑫r盡可能地降低節(jié)點的功耗。
因此,為了實現(xiàn)上述應用場景的需求,本文基于DSDV 路由算法,將音頻包傳輸方式從節(jié)點查找路由表轉(zhuǎn)發(fā)替換成在BLE Audio 的同步傳輸鏈路上傳輸,提出了一種面向BLE Audio 的改進DSDV 路由算法。同時為了降低節(jié)點的功耗,引入了依據(jù)節(jié)點狀態(tài)自適應修改節(jié)點廣播周期的機制。根據(jù)上述思路首先定義了3 種類型的廣播包,并定義了每個廣播包的廣播內(nèi)容字段。接著將面向BLE Audio 的改進DSDV 路由算法分為3 個模塊來實現(xiàn):節(jié)點路由表更新模塊、同步鏈路音頻包傳輸模塊和自適應廣播周期模塊。
本節(jié)將具體介紹面向BLE Audio 的改進DSDV 路由機制的具體實現(xiàn)過程,將對周期性廣播包的設計以及路由機制的3 個模塊的設計進行闡述。該路由機制的整體結(jié)構(gòu)如圖2 所示。
圖2 所提路由機制的整體結(jié)構(gòu)框圖
本文提出的面向BLE Audio 的改進DSDV 路由機制的核心在于,設計了一種自適應改變發(fā)送廣播包的周期的機制,通過周期性地檢測節(jié)點狀態(tài)來自適應地改變發(fā)送廣播包的周期,從而降低協(xié)議開銷,降低節(jié)點的能耗。同時,設計了一種基于BLE Audio 同步鏈路的數(shù)據(jù)包轉(zhuǎn)發(fā)機制,當有業(yè)務到達時,源節(jié)點先通過路由表打通一條到達目的節(jié)點的同步鏈路,即建立起多跳的同步傳輸通道,接著再通過這條同步傳輸通道定向發(fā)送音頻數(shù)據(jù)包。這樣就只需在一開始在每個節(jié)點查詢一次路由表,后續(xù)的音頻數(shù)據(jù)包轉(zhuǎn)發(fā)就不必在查詢路由,大大降低了節(jié)點的數(shù)據(jù)包處理時延。
節(jié)點路由表更新模塊是為了在進行音頻傳輸前,讓各節(jié)點建立起擁有到網(wǎng)絡中其他節(jié)點路由的路由表;同步鏈路音頻包傳輸模塊是為了實現(xiàn)低時延的點對點音頻傳輸功能;自適應廣播周期模塊是為了降低節(jié)點在進行音頻傳輸業(yè)務時的功耗。
該路由機制的廣播包使用BLE 協(xié)議中的擴展廣播包結(jié)構(gòu),其數(shù)據(jù)結(jié)構(gòu)如圖3 所示。該算法將需要傳輸?shù)目刂菩畔⒋娣旁谪撦d的廣播數(shù)據(jù)(AdvData)字段。所有廣播包的AdvData 字段都可以分為2 個部分:場景標識和廣播內(nèi)容。
圖3 擴展廣播包結(jié)構(gòu)
對于不同的機制,節(jié)點執(zhí)行的操作、節(jié)點間需要交互的信息不完全一致,該算法將廣播包類型分為三類:BLE同步建鏈廣播包、路由廣播包和預建鏈廣播包,如表1 所示。
表1 廣播包類型定義
每個節(jié)點都需要維護一張路由表,表中的每一條路由都由4 部分組成:下一跳節(jié)點地址S0、目的節(jié)點地址S1、跳數(shù)H 和目的節(jié)點序列號N。每個節(jié)點自身地址為D。同時每個節(jié)點都有其CPU,因此所有節(jié)點都有一個工作周期Tc。為了實現(xiàn)路由表的更新,在每個時鐘周期內(nèi),節(jié)點需要完成兩件事:發(fā)送廣播包與掃描處理廣播包。
(1)發(fā)送廣播包
這里發(fā)送的廣播包為路由廣播包,其目的是:向網(wǎng)絡中的其他節(jié)點告知本地節(jié)點的信息以及向其他節(jié)點轉(zhuǎn)發(fā)本地路由表在上一個Tc更新的路由信息。在表1 中定義了路由廣播包的廣播內(nèi)容,該算法規(guī)定路由廣播包需要攜帶自身節(jié)點地址S0、目的節(jié)點地址S1、跳數(shù)H以及目的節(jié)點序列號N這四個信息[22]。當節(jié)點發(fā)送的路由廣播包是用來告知其他節(jié)點本地節(jié)點的信息時,廣播內(nèi)容的S0和S1賦值為本地節(jié)點地址D,H和N均賦值為0。
(2)掃描處理廣播包
在節(jié)點發(fā)送完廣播包后,就要開始接收其他節(jié)點發(fā)送的廣播包并進行相應的處理。當節(jié)點掃描到一個廣播包時,首先要判斷廣播包中的S1與本地節(jié)點地址D是否一致。若一致則丟棄廣播包;若不一致則在路由表中查找是否存在S1與廣播包中的S1一致的路由,若不存在則在路由表中添加新的路由,新路由的S0賦值為S0、S1賦值為S1、H 賦值為H+1、N 賦值為N+2,同時準備好下個周期要發(fā)送的路由廣播包的廣播內(nèi)容,其S0賦值為D、S1賦值為新路由的S1、H賦值為新路由的H、N賦值為新路由的N;若存在則判斷廣播包中的N與路由的N 是否一致。若N<N 則丟棄廣播包;若N>N 則進行上述更新路由表路由的操作并預置下個周期要發(fā)送的路由廣播包;若N=N 則判斷廣播包中的H是否小于路由的H。若H≥H 則丟棄廣播包;若H<H 則進行上述更新路由表路由的操作并預置下個周期要發(fā)送的路由廣播包。以上就是節(jié)點處理廣播包的具體流程。
節(jié)點路由表更新模塊的流程圖如圖4 所示。
圖4 掃描處理廣播包流程圖
當網(wǎng)絡中各節(jié)點的路由表建立完成后,節(jié)點間需要進行點對點音頻傳輸,由于音頻傳輸業(yè)務要傳輸大量的連續(xù)的數(shù)據(jù)包,傳統(tǒng)的DSDV 路由數(shù)據(jù)包轉(zhuǎn)發(fā)機制在保證音頻在接收方穩(wěn)定播放的情況下會引入大量的時延。因此所提出算法引入了BLE Audio 的同步傳輸鏈路機制,讓音頻在同步傳輸鏈路上進行傳輸。
首先,源節(jié)點發(fā)起音頻傳輸請求,開始周期性廣播預建鏈廣播包,表1 中定義了它的廣播內(nèi)容:自身節(jié)點地址、目的節(jié)點地址和下一跳節(jié)點地址。該預建鏈廣播包采用傳統(tǒng)DSDV 路由數(shù)據(jù)包的轉(zhuǎn)發(fā)機制,逐跳查表到達目的節(jié)點。在預建鏈廣播包的轉(zhuǎn)發(fā)過程中,途徑節(jié)點均會保存其上一跳節(jié)點的地址。
接著目的節(jié)點發(fā)送預建鏈完成應答消息逐步轉(zhuǎn)發(fā)回源節(jié)點。源節(jié)點接收到應答后發(fā)送BLE 建鏈廣播包,該廣播包會使得這條路徑上的所有相鄰節(jié)點建立起同步傳輸鏈路。本算法采用BLE Audio 中基于單播的面向連接的同步組(Connected Isochronous Group,CIG),每個同步組由多個基于單播的面向連接的同步流(Connected Isochronous Streams,CIS)構(gòu)成。同一個CIG 內(nèi)的CIS具有相同的時間戳,以確保同一個小組的CIG 的數(shù)據(jù)是同步的。在一個小組內(nèi),對于每個CIS,都有一個時間表發(fā)送和接收時隙,它們稱為事件和子事件。每個事件的發(fā)生間隔,稱為一個ISO 間隔,時間范圍規(guī)定在5 ms 至4 s(為1.25 ms 的倍數(shù)),每個事件被劃分成一個或多個子事件。在子事件期間,主設備傳輸一次,從設備就響應一次。事件從CIS 的錨點開始,并在主設備接收到來自從設備的最后一個比特時結(jié)束[8]。CIS 的事件和子事件如圖5 所示。
圖5 CIS的事件和子事件
通過在同步傳輸鏈路上進行音頻傳輸,音頻包到達每個節(jié)點時不必再專門地查找路由表,從而極大地降低了音頻傳輸時延。同步鏈路音頻包轉(zhuǎn)發(fā)模塊如圖6 所示。
圖6 同步鏈路音頻包轉(zhuǎn)發(fā)模塊
在傳統(tǒng)的DSDV 路由協(xié)議中,節(jié)點發(fā)送廣播包的周期是固定的,該算法將節(jié)點發(fā)送廣播包的周期依據(jù)節(jié)點狀態(tài)進行自適應修改。當節(jié)點在沒有業(yè)務到達時,即沒有建立點對點通信的需求時,降低廣播包發(fā)送的頻率,當有業(yè)務到達時,再提高廣播包發(fā)送的頻率,這樣就能在保證路由更新和數(shù)據(jù)轉(zhuǎn)發(fā)性能的前提下,通過節(jié)點空閑時降低路由廣播包發(fā)送的頻率來降低節(jié)點開銷,并降低廣播包對網(wǎng)絡信道的占用,從而降低節(jié)點的功耗。
當節(jié)點在一個工作周期中,如果接收到了預建鏈定向廣播包,或節(jié)點主動地發(fā)起與目的節(jié)點的通信請求時,節(jié)點就會主動修改廣播發(fā)送的周期,將發(fā)送廣播周期降低α倍,并在這個工作周期結(jié)束后切換成更新后的Tc/α周期發(fā)送廣播包,在處理業(yè)務的這段時間內(nèi),都以該周期使用的時鐘作為廣播包發(fā)送的時鐘。
當節(jié)點處理完業(yè)務時,即節(jié)點檢測到BLE 鏈路斷開(代表點對點音頻傳輸結(jié)束),節(jié)點再將廣播發(fā)送周期修改回空閑狀態(tài)的,也就是修改回Tc,并在當前工作周期結(jié)束后生效。自適應調(diào)節(jié)廣播周期模塊如圖7 所示。
圖7 自適應調(diào)節(jié)廣播周期模塊
為了驗證本文所提算法的可行性,通過C 語言編程并通過編譯軟件將編譯后的二進制文件燒錄至可實現(xiàn)BLE Audio 協(xié)議的硬件平臺上調(diào)試,實現(xiàn)了上述算法的各個模塊功能,并在可實現(xiàn)BLE Audio 協(xié)議的硬件平臺上進行了算法性能測試。通過C 語言工程編輯軟件編寫代碼,在編譯軟件中編譯得到二進制文件,將串口數(shù)據(jù)線從電腦連接至該可實現(xiàn)BLE Audio 協(xié)議的硬件平臺,通過燒錄軟件進行二進制文件的燒錄。所用的硬件平臺是一個承載著兩個藍牙芯片的硬件電路板,高電平連接時燒錄文件、低電平連接時進行功能調(diào)試,通過在代碼中對相應按鍵的觸發(fā)函數(shù)進行定義,在測試中通過操作按鍵來模擬藍牙的廣播包發(fā)送、掃描功能以及音頻包傳輸?shù)拈_啟和關(guān)閉。每個節(jié)點由兩個藍牙模塊構(gòu)成,其中一個作為發(fā)送端、另一個作為接收端,發(fā)送端用來發(fā)送廣播包、接收端用來掃描處理廣播包。
實驗采用四節(jié)點的鏈式模型,如圖8 所示。分別編號為節(jié)點1、節(jié)點2、節(jié)點3、節(jié)點4。每個節(jié)點的物理結(jié)構(gòu)和工作性能是一致的。節(jié)點2 只能與節(jié)點1、節(jié)點3 通信,節(jié)點3 只能與節(jié)點2、節(jié)點4 通信,節(jié)點1 與節(jié)點4 不能通信。測試了4 個節(jié)點的路由建立流程,接著,以節(jié)點1為源節(jié)點,以節(jié)點4 為目的節(jié)點進行了音頻傳輸。設定廣播周期Tc=200 ms,周期修改倍數(shù)α =2,節(jié)點間同步傳輸鏈路采用CIG 鏈路,分別測試了使用傳統(tǒng)DSDV 路由算法和使用本文提出的面向BLE Audio 的改進DSDV路由算法的節(jié)點電流值和端到端音頻包傳輸時延。
圖8 測試節(jié)點模型
表2 和表3 分別為不同藍牙模塊的使用不同路由算法的電流值和音頻傳輸時延統(tǒng)計表。
表2 兩種路由算法的節(jié)點電流 mA
表3 兩種路由算法的音頻傳輸時延 ms
從表2 可以看出,同一個節(jié)點上藍牙接收模塊的電流值要低于發(fā)送模塊的電流值。根據(jù)電流與功耗的關(guān)系式P=I2Z,(P為功率,I為電流,Z為阻抗)。由于每個節(jié)點的物理結(jié)構(gòu)基本一致,因此各節(jié)點(BLE Audio 硬件平臺)的阻抗值幾乎相同,可以得到功耗與電流是呈正相關(guān)關(guān)系。所以同一個節(jié)點上藍牙接收模塊的功耗要低于發(fā)送模塊的功耗。由于節(jié)點的藍牙發(fā)射功率等級恒定,不同節(jié)點間距離對電流值的影響不大。同時對于使用本文提出的路由算法(有自適應廣播周期機制)的節(jié)點接收模塊平均電流為85.50 mA,小于使用傳統(tǒng)DSDV 路由算法(沒有自適應廣播周期機制)的節(jié)點接收模塊平均電流86.16 mA,通過使用本文提出的路由算法,節(jié)點接收模塊平均功耗降低了1.53%;對于使用本文提出的路由算法的節(jié)點發(fā)送模塊平均電流為92.02 mA,小于使用傳統(tǒng)DSDV 路由算法(沒有自適應廣播周期機制)的節(jié)點發(fā)送模塊平均電流93.21 mA,通過使用本文提出的路由算法,節(jié)點發(fā)送模塊平均功耗降低了2.54%。
根據(jù)表3 的數(shù)據(jù)進行繪圖得到兩種路由算法的音頻傳輸時延折線圖,如圖9。結(jié)果表明隨著距離逐漸變遠,從音頻源至各節(jié)點的音頻傳輸時延略微增加,但對單跳傳輸時延影響不大。單跳音頻傳輸?shù)臅r延為音頻包從音頻源至兩個相鄰節(jié)點的平均時延之差。通過計算,當節(jié)點間距離為10 m 時,使用傳統(tǒng)DSDV 算法的平均單跳傳輸時延為101.8 ms,而使用本文提出的路由算法的平均單跳音頻傳輸時延為36.3 ms,比傳統(tǒng)DSDV 算法的平均單跳傳輸時延降低了64.34%。而對使用本文提出的路由算法的情況下,當節(jié)點間距離為10 m 時,節(jié)點1 至節(jié)點2 的傳輸時延為37.7 ms,節(jié)點2 至節(jié)點3 的傳輸時延為37.3 ms,節(jié)點3 至節(jié)點4 的傳輸時延為33.9 ms,3 個單跳音頻傳輸時延的方差為4.4,遠小于其均值36.3,因此隨著跳數(shù)的提高,從源節(jié)點至目的節(jié)點傳輸時延會隨之線性提高。
圖9 兩種路由算法的音頻傳輸時延折線圖
在需要進行點對點音頻傳輸?shù)乃{牙網(wǎng)絡中,以不損失音頻播放質(zhì)量為前提,為了降低節(jié)點功耗和音頻傳輸時延,將BLE Audio 的同步傳輸鏈路引入傳統(tǒng)的DSDV路由算法中,并加入根據(jù)節(jié)點狀態(tài)自適應修改廣播周期的機制,提出了一種面向BLE Audio 的改進DSDV 路由算法。實驗結(jié)果表明,使用改進DSDV 路由算法不僅能夠降低節(jié)點功耗,同時極大地降低了節(jié)點間單跳的音頻傳輸時延。因此,采用本文提出的改進DSDV 路由算法能夠提高藍牙網(wǎng)絡性能,實現(xiàn)低時延的點對點音頻傳輸。