龙空技术网

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

移动Labs 160

前言:

眼前姐妹们对“ubuntubluetooth”大致比较关注,你们都想要学习一些“ubuntubluetooth”的相关文章。那么小编在网摘上汇集了一些关于“ubuntubluetooth””的相关文章,希望我们能喜欢,大家一起来学习一下吧!

随着家庭智能硬件越来越多,通过应用网关将低速无线设备接入互联网的方式弊端日益显现,如数据转发效率低,开发难度较大等等。随着IPv6的普及,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 bluetooth_6lowpan

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

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

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

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

hciconfig hci0 leadv 0

4.2 BLE主机配置

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

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

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

modprobe bluetooth_6lowpan

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

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

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

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

hcitool lescan

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在家庭网络中的重要性将会更加显现,应用性会更加广泛。

标签: #ubuntubluetooth