Mininet+Opendaylight+Wireshark搭建SDN环境
折腾了一天,终于把SDN环境搭建完毕,最怕搭建实战环境了,每次都要折腾很久,网上的说明大部分都是一步执行成功,好佩服,基本上我都每个坑都跳,总结分享一下,以后少点弯路。最后感谢伟大的Google以及大神们的分享,期待后续SDN之旅。
本文用到的软件及其版本如下:
FVMware Workstation 12.5.5 build-5234757
F Mininet镜像:mininet-2.2.2-170321-ubuntu-14.04.4-server-amd64
FOpenDayLight(硼Boron版本0.5.2)即karaf-0.5.2-Boron-SR2
F Wireshark软件:wireshark-2.2.5
FXmanager - Passive
FQT5:qt-opensource-linux-x64-5.8.0
FSecureCRT:8.1.1
F操作系统:windows10
Mininet镜像的安装
Mininet主要是虚拟出OpenFlow交换机以及host主机节点,可以使用Python语言自定义拓扑,实验平台也内置了一些基本的拓扑结构,能够方便地满足测试的需要。Mininet的安装有两种方式,一种是导入虚拟机镜像,一种是源码编译安装,建议新手采用前者。本次也采用最简单的安装方法。
在windows 10 操作系统中,从mininet官网http://mininet.org下载最新的虚拟机文件,解压、并导入到vmware workstation,启动虚拟机。关于虚拟机的配置不再赘述,请自行解决。(这种方式安装的mininet是server版的,没有桌面图形化界面,不好操作。)
进入虚拟机后,用户名和密码都是mininet(密码不会显示出来)。
Opendaylight的安装
(1)lrzsz软件安装
为了后续windows与ubuntu文件传递方便,这里安装了lrzsz软件。
mininet@mininet-vm:~$sudo rz
sudo:rz: command not found
mininet@mininet-vm:~$sudo apt-get install lrzsz -y
安装完毕之后,在windows10上从Opendaylight官网上(https://www.opendaylight.org/downloads)下载最新版本(distribution-karaf-0.5.2-Boron-SR2.zip),通过以下的操作传递到ubuntu,后续涉及的软件安装有一部分也是通过这种方式先从windows上下载完毕之后再传完ubuntu上,不再累赘。
mininet@mininet-vm:~$sudo rz
rzwaiting to receive.
Startingzmodem transfer. Press Ctrl+C to cancel.
Transferringdistribution-karaf-0.5.2-Boron-SR2.zip...
100% 417012 KB 10692 KB/sec 00:00:39 0 Errors
(2)安装unzip软件解压文件
mininet@mininet-vm:~$ sudo apt-get install unzip
mininet@mininet-vm:~$sudo unzip distribution-karaf-0.5.2-Boron-SR2.zip -d /opt/
mininet@mininet-vm:~$cd /opt/mininet/distribution-karaf-0.5.2-Boron-SR2/bin$
兴高采烈的准备进行安装时,发现噩梦才刚开始,一系列问题接踵而至。
mininet@mininet-vm:~/distribution-karaf-0.5.2-Boron-SR2/bin$sudo ./karaf
karaf:JAVA_HOME not set; results may vary
./karaf:line 221: type: java: not found
karaf:java command not found
好的,按照网上说法,OpenDayLight(硼Boron版本0.5.2)需要jdk8以上的版本
(3)安装JDK8
mininet@mininet-vm:/$ sudo apt-get install openjdk-8-jdk
Readingpackage lists... Done
Buildingdependency tree
Readingstate information... Done
E: Unableto locate package openjdk-8-jdk
如上按照常规方式进行安装未果,更新下软件发现只有jdk7的版本,好吧,只能够通过源码自行进行编译了。
mininet@mininet-vm:/$sudo apt-get update
mininet@mininet-vm:/$sudo apt-cache search jdk
从官网上(http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html)下载最新的java版本(jdk-8u121-linux-x64.tar.gz)
mininet@mininet-vm:~$sudo tar zxvf jdk-8u121-linux-x64.tar.gz -C /opt/
修改环境变量
mininet@mininet-vm:~$sudo vim /etc/profile在最后面添加以下四行。
export JAVA_HOME=/opt/jdk1.8.0_1219(此处为jdk解压存放的位置)
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
验证结果:
mininet@mininet-vm:~$source /etc/profile
mininet@mininet-vm:~$echo $JAVA_HOME
/opt/jdk1.8.0_121
mininet@mininet-vm:~$java -version
javaversion "1.8.0_121"
Java(TM)SE Runtime Environment (build 1.8.0_121-b13)
JavaHotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)
mininet@mininet-vm:~$echo $CLASSPATH
.:/opt/jdk1.8.0_121/lib:/opt/jdk1.8.0_121/jre/lib
mininet@mininet-vm:~$echo $PATH
/opt/jdk1.8.0_121/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
(4)重新开始安装Opendaylight,
进入解压目录
mininet@mininet-vm:~$cd /opt/distribution-karaf-0.5.2-Boron-SR2/etc/
修改参数配置,保存备份
mininet@mininet-vm:/opt/distribution-karaf-0.5.2-Boron-SR2/etc$vim org.apache.karaf.management.cfg
rmiRegistryHost= 0.0.0.0 改为 rmiRegistryHost = 127.0.0.1
rmiServerHost= 0.0.0.0 改为 rmiServerHost = 127.0.0.1
mininet@mininet-vm:/opt/distribution-karaf-0.5.2-Boron-SR2$cd ./bin/
启动opendaylight容器karaf,其结果如下图:
列举已安装的feature,不加-i参数的话,表示列举已安装和未安装的所有feature
通过命令行的方式安装一下feature,注意安装顺序,否则后续网页打开opendaylight会出错
opendaylight-user@root>feature:install odl-restconf
opendaylight-user@root>feature:install odl-l2switch-switch-ui
opendaylight-user@root>feature:install odl-openflowplugin-flow-services-ui
opendaylight-user@root>feature:installodl-openflowplugin-all-he(网上有种说法是安装这个,新手还不太清楚亮着有什么不同,但安装时报错,所以我就采用上面那一种)
opendaylight-user@root>feature:install odl-mdsal-all
opendaylight-user@root>feature:install odl-dlux-all
opendaylight-user@root>feature:install odl-dlux-node
opendaylight-user@root>feature:install odl-dlux-yangman
(5)界面访问:
在浏览器中输入http://192.168.135.128:8181/index.html %我的ip是 192.168.135.128,端口默认8181,初始用户名密码都是admin。
注意:
1)安装odl-openflowplugin-all-he时会出现警告提示服务或功能重叠,不影响使用。
2)请按照一定的顺序安装,安装顺序不合理的话,会导致后面Web界面无法访问!且记录遇到的一个问题:在没有按照顺序安装组件的情况下,无法登录进入ODL主界面。解决方法是通过logout退出 karaf平台,进入上级目录,删除data目录:rm –r data,进入bin目录:cd bin,执行./karafclean,再次重复上面的安装组件操作
SDN初体验
(1)Mininet初试
习惯了采用SecureCRT进行远程操作,初次体验Mininet
(2)Opendaylight与Mininet联合初体验
我们会发现只有三台交换机,而没有Host主机,此时在Mininet上执行pingall即可
在mininet上测试h1、h2、h3是否能够正常ping通,如山图所示,此时你会发现opendaylight可以正常发现hosts主机了
(3)Mininet自定义图形界面初体验
通过SecureCRT是无法调用图形化界面,此时需要手动在windows上安装Xmanager5软件,安装完毕后启用Xmanager – Passive,如下修改下SecureCRT软件的session会话设置,
最后在mininet上修改/etc/profile文件,在最后一行增加如下命令:
mininet@mininet-vm:~$sudo vim /etc/profile
export DISPLAY=192.168.135.1:0.0(%我的windows10的ip是 192.168.135.1)
mininet@mininet-vm:~$source /etc/profile
见证奇迹的时刻,mininet可以进行图形化界面自定义了拓扑了
(4)基本知识普及
$ 这个符号代表现在处于 Linux 的shell交互下,需要使用的是 Linux 命令
mininet> 这个符号表示现在处于 Mininet 交互下,需要使用的是Mininet 的命令
#这个符号表示的是现在处于 Linux 的 root权限下,但是mininet官方下载的虚拟机镜像进行直接导入,无法采用su -切换到root模式下,不知道密码是什么?只能够采用sudo的方式来代理root权限进行操作。
opendaylight-user@root>这个符号表示现在处于 Opendaylight交互下,需要使用的是 Mininet 的命令
备注:由于篇幅的原因,wireshark安装可参考下一篇博文