如何统一家庭内部异构网络?6LoWPAN是个好选择

网络
本文将详细介绍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内核模块

modprobe

注:若系统中不存在此内核模块,请重新配置并编译内核。

3)、开启6lowpan功能,并让蓝牙设备多路复用支持此新协议

echo 62 > /sys/kernel/debug/bluetooth/6lowpan_psm

4)、作为从机,开启广播通告,周期的向周围广告广播数据

hciconfig hci0 leadv 0

4.2 BLE主机配置

1)、确认系统上蓝牙驱动安装成功

图片

图4 主机上蓝牙设备详细信息


2)、加载支持BLE的6lowpan内核

modprobe

3)、开启6lowpan功能,并让蓝牙设备多路复用支持此新协议

echo 62 > /sys/kernel/debug/bluetooth/6lowpan_psm

4.3 BLE主机扫描并连接从设备

1)、扫描设备,获取从设备的mac地址

hcitool

2)、连接从设备

echo "connect 8C:88:2B:42:3F:17 1" >/sys/kernel/debug/bluetooth/6lowpan_control

其中1,是蓝牙地址类型,1表示公共地址;2表示随机地址。

8C:88:2B:42:3F:17是第一步中获取的从设备MAC地址。

3)、如何判断设备连接成功

一旦6lowpan建立成功,则在主从机上敲ifconfig命令,将会发现系统多出一个名为bt0的虚拟网络设备。

如下所示:

从机网口

图片

图5 从机上bt0虚拟网络设备信息

主机网口

图片

图片

图6 主机上bt0虚拟网络设备信息

4.4 从机使用ping命令,验证两个BLE之间的IPv6连通性

ping6 -I bt0 fe80::8e88:2bff:fe21:b552

图片

图7 主从机之间ping6通信

可见,主从机之间已经可以通过BLE链路交换IPv6的报文;由此可知,在linux系统上,基于BLE构建6LoWPAN是成功的。

4.5 连接成功/失败的内核日志

在执行连接操作时候,通过tail -f  /var/log/syslog 进行内核日志查看。

4.6 BLE主机主动断开连接

echo "disconnect 8C:88:2B:42:3F:17" > /sys/kernel/debug/bluetooth/6lowpan_control

Part 05

总结 

综上,在linux系统上,基于BLE构建6LoWPAN十分容易,基于其他低速无线局域网构建6LoWPAN原理相同。所以在多个异构网络之间,通过构建6LoWPAN,让家庭内部异构网络之间的链路层之上完全统一起来,具有很强的可操作性。相信随着万物互联的到来,随着IPv6的普及,6LoWPAN在家庭网络中的重要性将会更加显现,应用性会更加广泛。

责任编辑:庞桂玉 来源: 移动Labs
相关推荐

2010-04-19 10:48:55

培训

2020-10-25 16:49:14

程序员跳槽公司

2016-10-19 15:20:41

2022-08-29 10:53:48

云路由家庭内网Wi-Fi

2018-06-15 16:17:08

2009-04-25 11:49:50

IPv6家庭网络协议

2012-05-09 09:59:07

思杰OpenStack虚拟化

2019-03-10 16:22:37

网易相册服务器网盘

2013-11-19 16:17:23

2020-03-18 14:55:01

GitHubnpm开源

2024-09-12 13:09:32

2018-09-10 13:02:48

人工智能AI创业公司

2012-04-06 10:32:14

企业网络WLANWi-Fi网络

2024-03-04 14:15:16

OpenAI语言嵌入模型

2015-11-18 13:54:41

网易段子

2018-12-09 16:18:38

物联网无线技术通信

2021-06-11 17:17:22

黑客网络安全网络攻击

2022-06-13 09:51:39

低代码

2013-12-03 09:32:19

2013-12-09 10:16:38

企业黑米小米
点赞
收藏

51CTO技术栈公众号