博主有幸接触到自组织网络这个batman-adv开源项目,并通过树莓派3b硬件实验了自组织网络,简单介绍自组织网络的概念
简答介绍自组织网络的概念(来自百度)
移动自组织(Ad Hoc)网络是一种多跳的临时性自治系统,它的原型是美国早在1968年建立的ALOHA网络和之后于1973提出的PR(Packet Radio)网络。ALOHA网络需要固定的基站,网络中的每一个节点都必须和其它所有节点直接连接才能互相通信,是一种单跳网络。直到PR网络,才出现了真正意义上的多跳网络,网络中的各个节点不需要直接连接,而是能够通过中继的方式,在两个距离很远而无法直接通信的节点之间传送信息。PR网络被广泛应用于军事领域。IEEE在开发802.11标准时,提出将PR网络改名为Ad Hoc网络,也即今天我们常说的移动自组织网络。
作为一种分布式网络,移动自组织网络是一种自治、多跳网络,整个网络没有固定的基础设施,能够在不能利用或者不便利用现有网络基础设施(如基站、AP)的情况下,提供终端之间的相互通信。由于终端的发射功率和无线覆盖范围有限,因此距离较远的两个终端如果要进行通信就必须借助于其它节点进行分组转发,这样节点之间构成了一种无线多跳网络。
网络中的移动终端具有路由和分组转发功能,可以通过无线连接构成任意的网络拓扑。移动自组织网络既可以作为单独的网络独立工作,也可以以末端子网的形式接入现有网络,如Internet网络和蜂窝网。
下面是batman-adv概述
高级BATMAN(通常称为batman-adv)是在第2层上运行的Linux内核模块形式的BATMAN路由协议的实现。是aodv的改进版本,也称为mesh网络
第2层数据链路层
大多数其他无线路由协议实现(例如batman守护程序)在第3层上运行,这意味着它们通过发送UDP数据包来交换路由信息,并通过操作内核路由表使其路由决策生效。蝙蝠侠完全操作ISO/ OSI第2层 - 不仅路由信息使用原始以太网帧传输,而且数据流量由batman-adv处理。它封装并转发所有流量,直到到达目的地,从而模拟所有参与节点的虚拟网络交换机。因此,所有节点似乎都是本地链路,并且不知道网络的拓扑结构,也不受任何网络变化的影响。
这种设计具有一些有趣的特征:
网络层不可知 - 您可以在batman-adv之上运行任何您想要的:IPv4,IPv6,DHCP,IPX ..
节点可以在没有IP的情况下参与网格
轻松整合非网格(移动)客户端(无需手动HNA调整)
漫游非网状客户端
优化通过网格的数据流(例如接口交替,组播,前向纠错等)
运行依赖于网状和非网状客户端(Windows邻居,mDNS,流媒体等)上的广播/组播的协议。
好了接下来就是博主的具体配置过程
前期需要树莓派的基础配置,
请看博主的
第一篇原创博客《笔记本一根网线ssh连上树莓派3B,第一次必要的配置(固定静态ip静态地址很重要)》以及
第二篇博客《 树莓派3b本地编译内核,详细过程和内容》
以下batman-adv配置过程都是开源,若是有侵权行为请在评论中联系博主
Batman-adv源码参考以下链接1
Batman-adv openmesh网络官网
参考链接1:https://www.open-mesh.org/projects/batman-adv
关于博文中关于博主实验使用的系统版本和内核版本都放在了百度网盘中,可下载参考
百度网盘 链接:https://pan.baidu.com/s/1m0FXVpa497bSGVu6OkYm2A密码:64hg
在上一篇博客中我们编译的树莓派内核源码,就可以开始安装batman-adv自组织网络程序了。
首先回到pi文件目录下
root@raspberrypi:/home/pi# apt-get install libncurses5-dev//lib依赖库如图1
图1
root@raspberrypi:/home/pi# sudo apt-get update && sudoapt-get upgrade -y//升级避免缺少依赖文件如图2
图2
root@raspberrypi:/home/pi# sudo apt-get install git//如图3
图3
root@raspberrypi:/home/pi# sudo apt install libnl-3-devlibnl-genl-3-dev//安装lib3dev库如图4
图4
root@raspberrypi:/home/pi#sudo git clone https://git.open-mesh.org/batctl.git//下载batman和batctl调试工具源码如图5
图5
cd batctl //进入batctl文件目录下
sudo makeinstall //编译自组织网源码如图6
图6
root@raspberrypi:/home/pi/batctl# cd ..//回到pi目录下
root@raspberrypi:/home/pi# sudo nano batsetup-rpi3.sh//写配置脚本文件
//脚本文件内容如下
# Activate batman-adv
sudo modprobe batman-adv
# Disable and configure wlan0
sudo ip link set wlan0 down
sudo ifconfig wlan0 mtu 1532
sudo iwconfig wlan0 mode ad-hoc
sudo iwconfig wlan0 essid my-mesh-network
sudo iwconfig wlan0 ap any
sudo iwconfig wlan0 channel 8
sleep 1s
sudo ip link set wlan0 up
sleep 1s
sudo batctl if add wlan0
sleep 1s
sudo ifconfig bat0 up
sleep 5s
# Use different IPv4 addresses for each device
# This is the only change necessary to the script for
# different devices. Make sure to indicate the number
# of bits used for the mask.
sudo ifconfig bat0 172.27.0.1/16
//写完后保存退出,ctrl+o ctrl+x
root@raspberrypi:/home/pi# sudo chown root:pi batsetup-rpi3.sh//赋予权限
root@raspberrypi:/home/pi# sudo chmod 700 batsetup-rpi3.sh//赋予权限
root@raspberrypi:/home/pi# sudo nano /etc/rc.local//设置开机启动
//写入lc文件
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success orany other
# value on error.
#
# In order to enable or disable this script just change theexecution
# bits.
#
# By default this script does nothing.
# Print the IP address
#_IP=$(hostname -I) || true
#if [ "$_IP" ]; then
# printf "My IPaddress is %s\n" "$_IP"
#fi
#exit 0
# Add the directory to your script
/home/pi/batsetup-rpi.sh &
//写完后保存退出
将以上配置多台树莓派,就可以运行自组织网络了,以上就是博主的详细自组织网络配置过程
Sudo reboot 重新启动就可以使用了
具体使用例子如下
Sudo batctl tg//发现附近节点
Sudo batctl tgping MAC -R//通信并显示路径
其他使用方法可以看参考链接:https://downloads.open-mesh.org/batman/manpages/batctl.8.html
以上都是开源项目batman-adv树莓派配置过程,若有侵权行为请在评论中留言,若是有疑问请在评论中留言。
另外推荐一个很好的博文,树莓派的系统拷贝脚本很好用,我配置了一台自组网系统后直接用该脚本拷贝,并配置了其他树莓派3b,省去了很多时间http://www.cnblogs.com/haochuang/p/7090171.html