前言
本文档的完成时间是2018年12月3日,整个搭建过程加上文档编写大概花了两周时间,在此期间,也遇到了一些问题,在师兄的帮助下,顺利完成了6LowPAN的边界路由器的搭建。
正文
文章内容概要:
1.1硬件准备及介绍
1.2 搭建步骤
1.2.1 组装树莓派及烧录系统
1.2.2 树莓派简单配置
1.2.3 搭建6LBR路由器
1.2.4访问6LBR
CETIC-6LBR是基于Contiki操作系统的开源6LoWPAN / RPL边界路由器。同时,CETIC-6LBR是一种6LoWPAN / RPL边界路由器解决方案。它可以作为嵌入式硬件或Linux主机上的独立路由器。它旨在实现灵活性,可配置为支持各种网络拓扑,同时智能地将WSN与IP世界互连。
1.1硬件准备及介绍
树莓派、CC2538DK及配件、显示屏、鼠标、键盘、HDMI/VGA转换接口、PC
树莓派:
(1)型号
raspberry pi 3b
(2)采购链接
树莓派在淘宝上采购,附上链接:
https://item.taobao.com/item.htm?id=527630316715&ali_refid=a3_420434_1006:1105051756:N:%E6%A0%91%E8%8E%93%E6%B4%BE:fb5f2a602a2e970d61e70d82acf6f438&ali_trackid=1_fb5f2a602a2e970d61e70d82acf6f438&spm=a230r.1.1957635.2
(3)说明
商家提供了大量树莓派的学习资料,并且SD卡也烧录了raspbian系统,对于我们来说很方便,开箱即用。借助树莓派,我们可以搭建6BLR。
CC2538DK:
(1)型号
SM14Z2538DK1
(2)采购链接
https://item.taobao.com/item.htm?spm=a230r.1.14.16.27ee8b0czJ9oof&id=521029215029&ns=1&abbucket=17#detail
(3)说明
CC2538开发板即可作为6LBR的无线接入部分,也可作为6LoWPAN网络中的通信节点。
1.2 搭建步骤
1.2.1 组装树莓派及烧录系统
树莓派组件如图:
开发板1,充电器1,充电线1,树莓派外壳1,16G Flash1,读卡器1,散热风扇1,扇热片3
组装成品如图:
实力买家秀啊
虽然商家已经装好了系统,在此还是把烧录raspbian系统的过程列出来:
(1)系统镜像文件下载
登陆树莓派的官网,点击DOWNLOADS下载系统镜像文件,下载后解压。过程如下图所示:
官网链接:https://www.raspberrypi.org/
(2)Win32 Disk Imager工具下载
下载一个工具Win32 Disk Imager,其作用是把“.img”镜像文件写入SD卡或USB卡中。
百度一下“Win32 Disk Imager”即可下载。
(3)镜像烧写
把SD卡插入读卡器中,在把读卡器插到电脑的USB接口,打开Win32 Disk Imager工具,选择刚刚下载的镜像文件,在点击“WRITE”进行写入。如图:
提示框直接点YES,格式化SD卡,开始写入,速度视电脑与SD卡的通讯速度而定,
等待提示Write Successful!表示成功。
(4)启动树莓派
待树莓派连接好显示屏等其他设备后,接通电源,开启树莓派。成功开机如下图:
附上主板接口说明图:
1.2.2 树莓派简单配置
(1)修改密码
修改系统pi用户和root用户密码。
(2)设置网络连接
打开终端,输人ifconfig -a 查看存在的网卡。如图:
有线、无线网卡都有,由于后面6LBR搭建需要用有线网卡,我们在此就配置无线上网。
修改网络配置文件,命令如下:
nano /etc/network/interfaces
在文件中加入如下内容(不需要输入#后面的内容):
auto wlan0
allow-hotplug wlan0
iface wlan0 inet dhcp
wpa-ssid "TP-LINK_1FD7" #wifi名称
wpa-psk "woshixiaobaitu" #wifi密码
保存后退出,nano编辑器的使用方法可以百度。
输入以下命令使配置文件生效:
service networking restart
(3)安装vim编辑器
更新系统软件包在终端输入如下命令:
sudo apt-get update
安装vim编辑器:
sudo apt-get install vim
(4)安装gcc编译器
其实有的软件在烧录系统的时候就安装好了,我们就可以不用重复安装。比如,gcc编译器。
先用whereis gcc命令查看gcc是否安装,操作如下图:
whereis gcc
可以看到,gcc已经安装了。如果没有安装,输入sudo apt-get intasll gcc安装
sudo apt-get intasll gcc
注意:命令sudo使用的是root权限,如果是普通用户提示符,执行某些命令就需要带上sudo命令,如果是“#”提示符,就不需要。
那么,如何从$切换到#?在终端中输入su,在输入之前设置的root用户密码即可。
1.2.3 搭建6LBR路由器
参考github上提供的资料搭建,本次安装将采用源码编译,并把6LBR配置为路由器工作模式。
网站链接:https://github.com/cetic/6lbr/wiki
路由器运行模式的拓扑结构如下:
(1)安装配置需要的软件包:
apt-get install bridge-utils
apt-get install git build-essential libncurses5-dev
(2)下载6LBR
git clone https://github.com/cetic/6lbr
cd 6lbr
git checkout develop-1.4.1 #optional, if you plan to use a develop snapshot
git submodule update --init --recursive
cd examples/6lbr
(3)编译6LBR
make all
make plugins
make tools
(4)安装6LBR,以root权限安装
make install
make plugins-install
设置开机自启动
update-rc.d 6lbr defaults
(5)接口配置
默认情况下6LBR是没有配置文件的,只是在/etc/6lbr/目录下给了几个例子,我们需要自己新建conf.d文件。输入vim /etc/6lbr/blbr.conf命令新建配置文件,如图:
vim /etc/6lbr/blbr.conf
在 /etc/6lbr/6lbr.conf 文件中进行如下配置(可以先用ifconfig命令查看以太网接口):
配置内容为:
RAW_ETH=0
BRIDGE=1
CREATE_BRIDGE=0
DEV_ETH=enxb827eb92ab64
DEV_BRIDGE=br0
DEV_TAP=tap0
LOG_LEVEL=3
配置文件截图为:
(6)网络配置
还需要创建一个桥接接口br0,在/etc/network/interfaces文件中添加如下内容:
iface enxb827eb92ab64 inet static
address 0.0.0.0
auto br0
iface br0 inet manual
bridge_ports enxb827eb92ab64
bridge_stp off
up echo 0 > /sys/devices/virtual/net/br0/bridge/multicast_snooping
post-up ip link set br0 address `ip link show eth0 | grep ether | awk '{print $2}'`
还需要在/etc/dhcpcd.conf添加如下内容:
denyinterfaces enxb827eb92ab64 tap0
(7) SLIP-RADIO配置
我们把CC2538DK作为SLIP-RADIO部分。需要把相应的程序编译好后下载到开发板中。
由于某宝上购买了CC2538DK,商家提供了丰富的资料。
CC2538DK开发板接口连接说明图:
实物连接图:
在VMWare中打开instant-contick3.0环境,然后把cc2538开发板的USB模块插到电脑上,并接通电源。
编译并下载程序到开发板中:
A.开发板处于下载模式
给开发板上电,按住K1按键不要松开,然后按一下reset按键,先松开reset,之后松开K1按键,led会处于熄灭状态,证明现在处于bootloader模式,这样才可以使用串口下载。
B.修改设备权限
先查看设备有没有连接到虚拟机,在修改设备使用权限,最后查看权限是否设置成功
C.编译下载
在终端执行如下命令(前提是已经导入了contiki-3.0文件):
cd /home/user/contiki-3.0/examples/ipv6/slip-radio
sudo make TARGET=cc2538dk slip-radio.upload
如下图
执行成功如图
下载成功后把开发板接到树莓派上,直接用串口模块连接。
如图:
在/etc/6lbr/6lbr.conf中添加如下内容:
DEV_RADIO=/dev/ttyUSB0
BAUDRATE=115200
配置文件截图为:
把cc2538连接到树莓派,并接通电源。
如图:
查看cc2538DK的名称:
cd /dev
ls -l ttyU*
如图:
UART无线电与内核串行控制台和串行登录冲突。为了正常工作,必须禁用它们。
在/boot/cmdline.txt文件中删除“console=serial0,115200”内容,并执行如下如下命令:
systemctl disable [email protected]
(8)启动6LBR
命令如下:
cd /etc/init.d
ls -l
./6lb start
启动后可以查看日志文件,操作如下图:
如果启动成功,在/etc/log/中会有6lbr.ip文件生成,可以通过其命令查看6LBR地址。
cat /etc/log/6lbr.ip
用ifconfig查看端口开启状态:
可以看到我们之前配置的br0和tap0都已生效。
如果启动失败,可以通过查看日志输出里面存在什么问题。命令如下:
nano /var/log/6lbr.log
在这里我们提供一种远程登录的方式查看日志情况。要实现PC远程访问树莓派,首先,在树莓派系统上安装并开启ssh服务,一般情况下,树莓派的ssh服务是安装并开启的。由于我们的树莓派使用的是内网IP,还需要PC和树莓派在同一局域网中。除此之外,我们还要下载安装putty远程连接工具,直接百度即可下载安装。具体操作如:
查看SSH服务开启情况:
打开putty工具,输入树莓派无线网卡的IP V4地址,点击“open”按钮,输入用户和密码。如下图:
输入tail -100 /var/log/6lbr.log查看6LBR运行情况。在这里展示文件部分截图。
可以看到是正常运行的状态,如果有问题,会出现报错情况。
1.2.4访问6LBR
用另一台window PC访问6LBR
在树莓派终端输入如下命令:
sysctl -w net.ipv6.conf.enxb827eb92ab64.accept_ra_rt_info_max_plen = 64
用网线把树莓派和PC连接起来,在PC上配置IP V6,配置如图:
打开“网络和共享中心”,点击“更改适配器设置”。
更改网络配置如下。
配置好后开始测试:
(1)打开PC终端界面,输入ping bbbb::100,结果如下:
(2)打开浏览器,输入http://[bbbb::100],结果如下:
通过浏览器访问,可以很方便的管理6LBR。