澳洲进口奶制品联盟

如何统一家庭内部异构网络?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在家庭网络中的重要性将会更加显现,应用性会更加广泛。


举报 | 1楼 回复

友情链接