如何統(tǒng)一家庭內(nèi)部異構(gòu)網(wǎng)絡(luò)?6LoWPAN是個(gè)好選擇

Part 01
6LoWPAN是什么
為了使低速無線設(shè)備接入互聯(lián)網(wǎng), 通常需要增加一個(gè)中間節(jié)點(diǎn),中間節(jié)點(diǎn)通過應(yīng)用層程序,進(jìn)行數(shù)據(jù)翻譯和轉(zhuǎn)發(fā)。隨著萬物互聯(lián)時(shí)代的到來,家庭智能硬件越來越多,通過這種方式,數(shù)據(jù)需要層層拆封,翻譯,組裝,轉(zhuǎn)發(fā),導(dǎo)致中間節(jié)點(diǎn)負(fù)荷過高,數(shù)據(jù)轉(zhuǎn)發(fā)效率很低,且在不同異構(gòu)網(wǎng)絡(luò)間(比如Wi-Fi、ZigBee、BLE)通信時(shí),中間節(jié)點(diǎn)需要支持多種協(xié)議,開發(fā)難度較大。隨著IPv6的普及,基于低速無線局域網(wǎng)構(gòu)建IPv6協(xié)議棧的6LoWPAN技術(shù)應(yīng)用成為一種趨勢,此方案中,每一個(gè)低速設(shè)備分配一個(gè)唯一的IP地址,在數(shù)據(jù)傳輸階段,中間節(jié)點(diǎn)僅變成一個(gè)網(wǎng)絡(luò)通道,不再依賴應(yīng)用層程序,不再需要關(guān)心應(yīng)用層數(shù)據(jù),只需要在網(wǎng)絡(luò)層進(jìn)行報(bào)文的路由和轉(zhuǎn)發(fā),從而使得家庭內(nèi)部異構(gòu)網(wǎng)絡(luò)的鏈路層之上完全統(tǒng)一起來。

圖1 異構(gòu)網(wǎng)絡(luò)拓?fù)鋱D之間加入中間節(jié)點(diǎn)
6LoWPAN(IPv6 over Low power Wireless Personal Area Network), 是一種基于IPv6的低功耗無線個(gè)域網(wǎng)標(biāo)準(zhǔn),即IPv6 over IEEE 802.15.4。它是IETF互聯(lián)網(wǎng)領(lǐng)域的一個(gè)工作組的名稱。6LoWPAN是一個(gè)網(wǎng)絡(luò)層協(xié)議,定義了封裝和報(bào)頭壓縮機(jī)制,允許通過IEEE 802.15.4的低速網(wǎng)絡(luò),發(fā)送和接收較大IPv6數(shù)據(jù)報(bào)文。
Part 02
6LoWPAN方案有哪些優(yōu)勢
? 數(shù)據(jù)可達(dá)性及傳輸效率高:每一個(gè)BLE設(shè)備都有一個(gè)唯一的IP,支持端到端IP尋址,只需要一個(gè)路由器即可將數(shù)據(jù)通過中間節(jié)點(diǎn)多跳轉(zhuǎn)發(fā)到目標(biāo)節(jié)點(diǎn);并且不是每一幀數(shù)據(jù)都到應(yīng)用層,轉(zhuǎn)發(fā)效率更高。
? 支持跨域互訪、更多的地址空間和無狀態(tài)自動(dòng)地址配置:因?yàn)镮Pv6的應(yīng)用,可在全網(wǎng)直接定位,無需NAT轉(zhuǎn)換,不同網(wǎng)段間通信可直接互訪;并且有了海量的地址空間,滿足了部署大規(guī)模、高密度低速個(gè)域網(wǎng)設(shè)備的條件;另外無需路由分配,即可無狀態(tài)的自動(dòng)分配地址。
? 普及性、適用性:IP網(wǎng)絡(luò)應(yīng)用廣泛且IP網(wǎng)絡(luò)協(xié)議棧架構(gòu)受到廣泛的認(rèn)可,對于網(wǎng)絡(luò)層及以上的開發(fā)者,不再需要關(guān)心具體鏈路層的協(xié)議,而單純當(dāng)做一個(gè)IP設(shè)備來進(jìn)行管理,開發(fā)簡單且開發(fā)效率更高。
? 支持低功耗:在6LowPAN網(wǎng)絡(luò)中,葉子節(jié)點(diǎn)可以睡眠進(jìn)入低功耗。
? 靈活度大:其為物理層提供了全面的支持,在不同頻帶和物理媒介上構(gòu)建網(wǎng)絡(luò)提供足夠的自由度。
Part 03
基于BLE之上的構(gòu)建6LoWPAN的原理
BLE網(wǎng)絡(luò)作為一種低速無線個(gè)域網(wǎng),BLE設(shè)備接入互聯(lián)網(wǎng)以及BLE網(wǎng)絡(luò)與其他異構(gòu)網(wǎng)絡(luò)之間通信,一直是業(yè)界廣泛關(guān)注的問題。下面,小編就以6LowPAN技術(shù)在BLE網(wǎng)絡(luò)的應(yīng)用為例,來說明6LowPAN的原理。

圖2 基于BLE的6LoWPAN端到端數(shù)據(jù)通信協(xié)議模型
如圖2,BLE設(shè)備與網(wǎng)關(guān)建立鏈路層及L2CAP連接之后的端到端數(shù)據(jù)通信協(xié)議模型,對于一個(gè)節(jié)點(diǎn),與網(wǎng)關(guān)建立連接之后,發(fā)送數(shù)據(jù)時(shí)應(yīng)用層將構(gòu)建一個(gè)普通的IP數(shù)據(jù)包,發(fā)送到網(wǎng)絡(luò)層,網(wǎng)絡(luò)層收到數(shù)據(jù)后,將其路由到一個(gè)虛擬網(wǎng)絡(luò)設(shè)備(B)進(jìn)行6LoWPAN分片、封裝,然后一個(gè)個(gè)轉(zhuǎn)發(fā)到藍(lán)牙協(xié)議棧,進(jìn)行L2CAP封裝,最后通過BLE鏈路層發(fā)送出去。
接收數(shù)據(jù)時(shí),BLE鏈路收到數(shù)據(jù),移除L2TP頭,然后路由到虛擬網(wǎng)絡(luò)設(shè)備(B)進(jìn)行6LoWPAN解封、組裝,恢復(fù)出IPv6原始報(bào)文,然后轉(zhuǎn)發(fā)到標(biāo)準(zhǔn)IP網(wǎng)絡(luò)層。
Part 04
● Linux系統(tǒng)上如何基于BLE構(gòu)建6LoWPAN ●
由于Linux 內(nèi)核早期就已經(jīng)支持藍(lán)牙協(xié)議棧,3.2內(nèi)核主線版本加入了對6LowPAN的支持,然后隨著藍(lán)牙4.0發(fā)布之后,低功耗藍(lán)牙BLE的誕生,藍(lán)牙4.2發(fā)布,BLE開始支持6LoWPAN,所以在linux系統(tǒng)上,基于BLE構(gòu)建6LoWPAN變得十分容易。
本節(jié),作者將使用兩臺ubuntu PC+兩個(gè)BLE藍(lán)牙dongle,手把手帶大家學(xué)習(xí)如何在linux系統(tǒng)上,基于BLE構(gòu)建6LoWPAN,最后通過BLE鏈路,完成兩個(gè)BLE設(shè)備之間的IP報(bào)文的交換,以此驗(yàn)證6LoWPAN是否成功構(gòu)建。
注意:本實(shí)驗(yàn)中,Ubuntu版本使用14.04,其中內(nèi)核版本使用3.8.4;BLE藍(lán)牙dongle使用CSR8510 BT5.0版本。
4.1 BLE從機(jī)配置
1)、確認(rèn)系統(tǒng)上藍(lán)牙驅(qū)動(dòng)安裝成功

圖3 從機(jī)上藍(lán)牙設(shè)備詳細(xì)信息
2)、加載支持BLE的6lowpan內(nèi)核模塊
注:若系統(tǒng)中不存在此內(nèi)核模塊,請重新配置并編譯內(nèi)核。
3)、開啟6lowpan功能,并讓藍(lán)牙設(shè)備多路復(fù)用支持此新協(xié)議
4)、作為從機(jī),開啟廣播通告,周期的向周圍廣告廣播數(shù)據(jù)
4.2 BLE主機(jī)配置
1)、確認(rèn)系統(tǒng)上藍(lán)牙驅(qū)動(dòng)安裝成功

圖4 主機(jī)上藍(lán)牙設(shè)備詳細(xì)信息
2)、加載支持BLE的6lowpan內(nèi)核
3)、開啟6lowpan功能,并讓藍(lán)牙設(shè)備多路復(fù)用支持此新協(xié)議
4.3 BLE主機(jī)掃描并連接從設(shè)備
1)、掃描設(shè)備,獲取從設(shè)備的mac地址
2)、連接從設(shè)備
其中1,是藍(lán)牙地址類型,1表示公共地址;2表示隨機(jī)地址。
8C:88:2B:42:3F:17是第一步中獲取的從設(shè)備MAC地址。
3)、如何判斷設(shè)備連接成功
一旦6lowpan建立成功,則在主從機(jī)上敲ifconfig命令,將會發(fā)現(xiàn)系統(tǒng)多出一個(gè)名為bt0的虛擬網(wǎng)絡(luò)設(shè)備。
如下所示:
從機(jī)網(wǎng)口

圖5 從機(jī)上bt0虛擬網(wǎng)絡(luò)設(shè)備信息
主機(jī)網(wǎng)口


圖6 主機(jī)上bt0虛擬網(wǎng)絡(luò)設(shè)備信息
4.4 從機(jī)使用ping命令,驗(yàn)證兩個(gè)BLE之間的IPv6連通性

圖7 主從機(jī)之間ping6通信
可見,主從機(jī)之間已經(jīng)可以通過BLE鏈路交換IPv6的報(bào)文;由此可知,在linux系統(tǒng)上,基于BLE構(gòu)建6LoWPAN是成功的。
4.5 連接成功/失敗的內(nèi)核日志
在執(zhí)行連接操作時(shí)候,通過tail -f /var/log/syslog 進(jìn)行內(nèi)核日志查看。
4.6 BLE主機(jī)主動(dòng)斷開連接
Part 05
總結(jié)
綜上,在linux系統(tǒng)上,基于BLE構(gòu)建6LoWPAN十分容易,基于其他低速無線局域網(wǎng)構(gòu)建6LoWPAN原理相同。所以在多個(gè)異構(gòu)網(wǎng)絡(luò)之間,通過構(gòu)建6LoWPAN,讓家庭內(nèi)部異構(gòu)網(wǎng)絡(luò)之間的鏈路層之上完全統(tǒng)一起來,具有很強(qiáng)的可操作性。相信隨著萬物互聯(lián)的到來,隨著IPv6的普及,6LoWPAN在家庭網(wǎng)絡(luò)中的重要性將會更加顯現(xiàn),應(yīng)用性會更加廣泛。















 
 
 






 
 
 
 