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