10.4.2 创建Native-Border-Router
完成Slip-Radio的工作之后,我们接着在树莓派中创建Native-Border-Router。
1.树莓派中复制Contiki源代码
在树莓派控制台获取Contiki源代码,可在树莓派控制台中输入以下内容:
# 进入repo目录
cd ~/repo
# 获取Contiki源代码
git clone https://github.com/contiki-os/contiki.git # 获取子模块并更新子模块
git submodule update –init
2.创建Native-Border-Router
编译native-border-router之前需要在树莓派中安装必要的依赖项。native-border-router位于Contiki源代码目录中的examples/ipv6目录下,进入native-border-router文件夹,通过make TARGET=native便可生成可执行文件border-router.native,该可执行文件可在树莓派中直接运行。
# 更新软件源
sudo apt-get update
# 安装必要的依赖项
sudo apt-get install libncurses5-dev
# 进入native-border-router目录cd ~/repo/contiki/examples/ipv6/native-border-router # 生成可执行文件
make TARGET=native
3.border-router.native使用方法
在树莓派控制台中输入“./border-router.native-h”便可查看border-router.native的使用方法,常用的参数如下:
·-B:指定串行通信波特率,默认为115200。
·-s:指定串行通信设备,默认为/dev/ttyUSB0。
·-a:用于指定主机IP地址,该参数只有在cooja仿真才被使用。
·-p:用于指定服务端口号,该参数只有在cooja仿真才被使用。
·ipaddress:用于指定全局网络前缀,一般为fd00::1/64。
# 查看border-router.native使用方法
./border-router.native -h
usage: ./border-router.native [options] ipaddress
example: border-router.native -L -v2 -s ttyUSB1 fd00::1/64
Options are:
-B baudrate 9600,19200,38400,57600,115200,921600 (default 115200)
-H Hardware CTS/RTS flow control (default disabled)
-L Log output format (adds time stamps)
-s siodev Serial device (default /dev/ttyUSB0)
-a host Connect via TCP to server at <host>
-p port Connect via TCP to server at <host>:<port>
-t tundev Name of interface (default tun0)
把Slip-Radio通过USB转串口设备与树莓派相连,连接方法如图10-12所示。一旦Slip-Radio与树莓派正确连接,树莓派中将会出现一个名为ttyUSB0的设备。
图10-12 Slip-Radio与树莓派连接
在树莓派控制台中输入以下命令:
sudo ./border-router.native -s /dev/ttyUSB0 fd00::1/64
由于需要操作/dev目录下的ttyUSB0设备,所以此处需要使用sudo权限,通过-s参数指定使用ttyUSB0设备,在此处的IPv6网络的全局网络前缀为fd00::1/64,64表示网络ID为IPv6地址的前64位。若border-router.native正常运行,那么在树莓派控制台中可获得以下输出内容:
# 控制台输出
RPL-Border router started
********SLIP started on ''/dev/ttyUSB0''
opened tun device ''/dev/tun0''
ifconfig tun0 inet `hostname` up
ifconfig tun0 add fd00::1/64
ifconfig tun0
# 省略部分内容
Setting prefix fd00::1
created a new RPL dag
Server IPv6 addresses:
0x49ba4: =>fd00::212:4b00:5af:8404
0x49bc4: =>fe80::212:4b00:5af:8404
4.加入开机启动项
为了更方便地使用边界路由,可以把border-router.native加入到树莓派开机启动项中,通过编写/etc/rc.local文件便可增加用户开机启动项。
# 修改树莓派开机启动项sudo nano /etc/rc.local
在/etc/rc.local文件中增加Native-Border-Router启动相关操作。先通过cd指令进入border-router.native可执行文件所在目录,然后通过-s参数指定串行设备名称,一般为“/dev/ttyUSB0”,IPv6全局网络前缀为“fd00::1/64”,指令最后的“&”符号表示border-router.native处于后台运行状态。此处还需要注意以下几点内容:
·此处虽然需