网络实验——在linux平台安装OLSR协议
在linux平台安装OLSR协议
前言
因为要做一个OLSR和SDN自定义控制面的对比实验,所以要利用mininet-wifi平台自定义拓扑跑一下OLSR协议。
平台:ubuntu20.04
安装
通过mininet-wifi安装
- 进入mininet-wifi目录
sudo ./install.sh -o
从git安装(没有亲自试,来自网络)
-
安装语法分析器:
sudo apt install bison flex
-
下载源码:
git clone https://github.com/OLSR/olsrd
-
编译:
cd olsrd;make
-
安装:
sudo make install
mininet-wifi拓扑构建
构造一个网络拓扑来测试OLSR协议。
拓扑文件(参考example/adhoc.py):
https://github.com/leeshy-tech/mininet-wifi/blob/master/examples/OLSR/olsr_test.py
|
可视化:
解读:
从图中可以看出,sta1只能与sta2和sta3进行单跳通信,如果要与sta4通信,就需要sta2或者sta3进行中继。如果没有OLSR协议,节点在收到目的IP不是本节点的包之后就会丢掉,无法完成中继。OLSR协议会在网络中的节点维护整个网络拓扑,就能完成中继。
实验测试
关闭NetworkManager
sudo systemctl stop NetworkManager
NetworkManager是linux的自动网络配置工具,我们希望自己配置网络,所以要把它关掉。
查看节点的网络状态ip addr
,没有图中的NO-CARRIER
说明NetworkManager已经被关闭。(这个命令可以在本机运行,也可以在mininet虚拟主机运行。)
配置OLSR
编辑配置文件:vim /etc/olsrd/olsrd.conf
添加所有节点的网卡:
退出、保存
运行拓扑文件
sudo python olsr_test.py olsrd
网络测试
sta1 ping sta4
能ping通,说明OLSR协议运行正常。
查看路由:sta3 route
多了三条路由,这是OLSR协议运行的结果。
结束
恢复系统
开启NetworkManager:sudo systemctl start NetworkManager
退出mininet-wifi:exit
清理系统:sudo mn -c
参考文献
Unable to create IPv6 multi hop mesh network in ad hoc mode #342这个issue救了大命了
Linux卸载olsrd,olsrd路由协议移植到嵌入式linux中使用
www.olsr.org/官网写的说明太少了,根本看不懂,麻了。