如何統(tǒng)一家庭內(nèi)部異構網(wǎng)絡?6LoWPAN是個好選擇
Part 01
6LoWPAN是什么
為了使低速無線設備接入互聯(lián)網(wǎng), 通常需要增加一個中間節(jié)點,中間節(jié)點通過應用層程序,進行數(shù)據(jù)翻譯和轉(zhuǎn)發(fā)。隨著萬物互聯(lián)時代的到來,家庭智能硬件越來越多,通過這種方式,數(shù)據(jù)需要層層拆封,翻譯,組裝,轉(zhuǎn)發(fā),導致中間節(jié)點負荷過高,數(shù)據(jù)轉(zhuǎn)發(fā)效率很低,且在不同異構網(wǎng)絡間(比如Wi-Fi、ZigBee、BLE)通信時,中間節(jié)點需要支持多種協(xié)議,開發(fā)難度較大。隨著IPv6的普及,基于低速無線局域網(wǎng)構建IPv6協(xié)議棧的6LoWPAN技術應用成為一種趨勢,此方案中,每一個低速設備分配一個唯一的IP地址,在數(shù)據(jù)傳輸階段,中間節(jié)點僅變成一個網(wǎng)絡通道,不再依賴應用層程序,不再需要關心應用層數(shù)據(jù),只需要在網(wǎng)絡層進行報文的路由和轉(zhuǎn)發(fā),從而使得家庭內(nèi)部異構網(wǎng)絡的鏈路層之上完全統(tǒng)一起來。
圖1 異構網(wǎng)絡拓撲圖之間加入中間節(jié)點
6LoWPAN(IPv6 over Low power Wireless Personal Area Network), 是一種基于IPv6的低功耗無線個域網(wǎng)標準,即IPv6 over IEEE 802.15.4。它是IETF互聯(lián)網(wǎng)領域的一個工作組的名稱。6LoWPAN是一個網(wǎng)絡層協(xié)議,定義了封裝和報頭壓縮機制,允許通過IEEE 802.15.4的低速網(wǎng)絡,發(fā)送和接收較大IPv6數(shù)據(jù)報文。
Part 02
6LoWPAN方案有哪些優(yōu)勢
? 數(shù)據(jù)可達性及傳輸效率高:每一個BLE設備都有一個唯一的IP,支持端到端IP尋址,只需要一個路由器即可將數(shù)據(jù)通過中間節(jié)點多跳轉(zhuǎn)發(fā)到目標節(jié)點;并且不是每一幀數(shù)據(jù)都到應用層,轉(zhuǎn)發(fā)效率更高。
? 支持跨域互訪、更多的地址空間和無狀態(tài)自動地址配置:因為IPv6的應用,可在全網(wǎng)直接定位,無需NAT轉(zhuǎn)換,不同網(wǎng)段間通信可直接互訪;并且有了海量的地址空間,滿足了部署大規(guī)模、高密度低速個域網(wǎng)設備的條件;另外無需路由分配,即可無狀態(tài)的自動分配地址。
? 普及性、適用性:IP網(wǎng)絡應用廣泛且IP網(wǎng)絡協(xié)議棧架構受到廣泛的認可,對于網(wǎng)絡層及以上的開發(fā)者,不再需要關心具體鏈路層的協(xié)議,而單純當做一個IP設備來進行管理,開發(fā)簡單且開發(fā)效率更高。
? 支持低功耗:在6LowPAN網(wǎng)絡中,葉子節(jié)點可以睡眠進入低功耗。
? 靈活度大:其為物理層提供了全面的支持,在不同頻帶和物理媒介上構建網(wǎng)絡提供足夠的自由度。
Part 03
基于BLE之上的構建6LoWPAN的原理
BLE網(wǎng)絡作為一種低速無線個域網(wǎng),BLE設備接入互聯(lián)網(wǎng)以及BLE網(wǎng)絡與其他異構網(wǎng)絡之間通信,一直是業(yè)界廣泛關注的問題。下面,小編就以6LowPAN技術在BLE網(wǎng)絡的應用為例,來說明6LowPAN的原理。
圖2 基于BLE的6LoWPAN端到端數(shù)據(jù)通信協(xié)議模型
如圖2,BLE設備與網(wǎng)關建立鏈路層及L2CAP連接之后的端到端數(shù)據(jù)通信協(xié)議模型,對于一個節(jié)點,與網(wǎng)關建立連接之后,發(fā)送數(shù)據(jù)時應用層將構建一個普通的IP數(shù)據(jù)包,發(fā)送到網(wǎng)絡層,網(wǎng)絡層收到數(shù)據(jù)后,將其路由到一個虛擬網(wǎng)絡設備(B)進行6LoWPAN分片、封裝,然后一個個轉(zhuǎn)發(fā)到藍牙協(xié)議棧,進行L2CAP封裝,最后通過BLE鏈路層發(fā)送出去。
接收數(shù)據(jù)時,BLE鏈路收到數(shù)據(jù),移除L2TP頭,然后路由到虛擬網(wǎng)絡設備(B)進行6LoWPAN解封、組裝,恢復出IPv6原始報文,然后轉(zhuǎn)發(fā)到標準IP網(wǎng)絡層。
Part 04
● Linux系統(tǒng)上如何基于BLE構建6LoWPAN ●
由于Linux 內(nèi)核早期就已經(jīng)支持藍牙協(xié)議棧,3.2內(nèi)核主線版本加入了對6LowPAN的支持,然后隨著藍牙4.0發(fā)布之后,低功耗藍牙BLE的誕生,藍牙4.2發(fā)布,BLE開始支持6LoWPAN,所以在linux系統(tǒng)上,基于BLE構建6LoWPAN變得十分容易。
本節(jié),作者將使用兩臺ubuntu PC+兩個BLE藍牙dongle,手把手帶大家學習如何在linux系統(tǒng)上,基于BLE構建6LoWPAN,最后通過BLE鏈路,完成兩個BLE設備之間的IP報文的交換,以此驗證6LoWPAN是否成功構建。
注意:本實驗中,Ubuntu版本使用14.04,其中內(nèi)核版本使用3.8.4;BLE藍牙dongle使用CSR8510 BT5.0版本。
4.1 BLE從機配置
1)、確認系統(tǒng)上藍牙驅(qū)動安裝成功
圖3 從機上藍牙設備詳細信息
2)、加載支持BLE的6lowpan內(nèi)核模塊
注:若系統(tǒng)中不存在此內(nèi)核模塊,請重新配置并編譯內(nèi)核。
3)、開啟6lowpan功能,并讓藍牙設備多路復用支持此新協(xié)議
4)、作為從機,開啟廣播通告,周期的向周圍廣告廣播數(shù)據(jù)
4.2 BLE主機配置
1)、確認系統(tǒng)上藍牙驅(qū)動安裝成功
圖4 主機上藍牙設備詳細信息
2)、加載支持BLE的6lowpan內(nèi)核
3)、開啟6lowpan功能,并讓藍牙設備多路復用支持此新協(xié)議
4.3 BLE主機掃描并連接從設備
1)、掃描設備,獲取從設備的mac地址
2)、連接從設備
其中1,是藍牙地址類型,1表示公共地址;2表示隨機地址。
8C:88:2B:42:3F:17是第一步中獲取的從設備MAC地址。
3)、如何判斷設備連接成功
一旦6lowpan建立成功,則在主從機上敲ifconfig命令,將會發(fā)現(xiàn)系統(tǒng)多出一個名為bt0的虛擬網(wǎng)絡設備。
如下所示:
從機網(wǎng)口
圖5 從機上bt0虛擬網(wǎng)絡設備信息
主機網(wǎng)口
圖6 主機上bt0虛擬網(wǎng)絡設備信息
4.4 從機使用ping命令,驗證兩個BLE之間的IPv6連通性
圖7 主從機之間ping6通信
可見,主從機之間已經(jīng)可以通過BLE鏈路交換IPv6的報文;由此可知,在linux系統(tǒng)上,基于BLE構建6LoWPAN是成功的。
4.5 連接成功/失敗的內(nèi)核日志
在執(zhí)行連接操作時候,通過tail -f /var/log/syslog 進行內(nèi)核日志查看。
4.6 BLE主機主動斷開連接
Part 05
總結(jié)
綜上,在linux系統(tǒng)上,基于BLE構建6LoWPAN十分容易,基于其他低速無線局域網(wǎng)構建6LoWPAN原理相同。所以在多個異構網(wǎng)絡之間,通過構建6LoWPAN,讓家庭內(nèi)部異構網(wǎng)絡之間的鏈路層之上完全統(tǒng)一起來,具有很強的可操作性。相信隨著萬物互聯(lián)的到來,隨著IPv6的普及,6LoWPAN在家庭網(wǎng)絡中的重要性將會更加顯現(xiàn),應用性會更加廣泛。