在ubuntu16.04系统搭建opendaylight和mininet的博文很多,但是从我自身的实际搭建环境过程中,还是从中学到不少,为了完整的记录自己搭建opendaylight和mininet环境的完整过程,写此博文记录总结
第一部分:配置ubuntu16.04的初始化环境
在虚拟机中新装的ubuntu系统,无法直接用root用户登录。虽然用普通用户进行实验也可以,有的博文甚至反对直接使用root用户进行操作。但是普通用户总会面临各种因为权限导致的各种坑,在实验过程中会多次的查询某些权限的获取方法,很是累人。因此,本文的实验环境在root用户环境下进行,设置方法如下:
1、 打开终端,使用 sudo passwd root 命令重置root密码
2、ubuntu 16.04 系统中,使用 su root 命令以 root 身份登录 ubuntu 系统;
3、安装vim:apt-get update
apt-get upgrade
apt-get install vim
4、在系统用户登录界面,添加root用户登录选项,具体分两步执行:
1)用su root登录ubuntu系统后,切换到/usr/share/lightdm/lightdm.conf.d 目录,并查看该目录 下的文件,找到50-unity-greeter.conf
2)使用 vim 50-unity-greeter.conf 命令打开50-unity-greeter.conf 文件,在其中添加如下信息:
user-session=ubuntu
greeter-show-manual-login=true
all-guest=false
3) 使用vim /root/.profile 命令 打开 .profile 文件,并修改其最后一行为:tty -s && mesg n || true,如图所示:
4) 操作完成后,保存文档,重启系统,就可以用root用户登录ubuntu系统,如图所示:
第二部分:安装opendaylight控制器
本文以安装Nitrogen-SR3为例进行说明。安装前先查看官方文档中的安装文档,各版本功能有差别,但是安 装的过程没什么太大差别,都可以参考
1. 安装odl依赖包
apt-get update
apt-get upgrate
说明:update命令是用于同步/etc/apt/sources.list和/etc/apt/sources.list.d中列出的源的索引,这样 才能获取最新的软件包
upgrade命令是升级已安装的所有软件包,升级之后的版本在本地索引。索引在执行upgrade之前必 须执行update,才能下载安装最新版软件
这两个命令在安装过程中要多次使用,保证系统软件和各种依赖为最新
a)基础包(如果未安装的话执行)
apt-get install unziplrzsz
apt-get install vim
b)jdk
apt-get installopenjdk-8-jdk
c)设置java环境变量,编辑环境变量文档
vim /etc/environment
文件最末尾增加一行:
JAVA_HOME="/usr/lib/jvm/java-8-openjdk-amd64"
保存配置文档,重启系统,环境变量才能生效。重启系统,运行java -version查看是否配置成功,如图:
2. 下载ODL包
从OpenDaylight官网下载:https://www.opendaylight.org/downloads,并下载Nitrogen版本opendaylight
3.直接解压ODL包到指定文件夹下:右键选择提取到此处即可
4. 修改配置
进入karaf-0.7.3目录, 修改etc/org.apache.karaf.management.cfg文件的以下两行内容:
rmiRegistryHost= 127.0.0.1
rmiServerHost= 127.0.0.1
5. 运行ODL
进入karaf-0.7.3的bin目录执行:./karaf,如图所示
6. 安装功能组件
组件可根据自身的需要进行安装,这里只简单说明基础组件:
安装组件的命令为feature,具体使用方法:
feature:install 功能组件名称
也可以同时安装多个组件:
feature:install 组件1 组件2 组件3...组件n
说明:由于兼容性问题,不可能同时启动所有的karaf功能,兼容性值表示如下:
all--此功能完全兼容其他功能
self+all--该功能可以与值为all的功能组件完全兼容使用,但是可能与其他self+all的功能组件不兼容
安装支持REST API的组件:feature:install odl-restconf
安装L2 switch和OpenFlow插件:feature:install odl-l2switch-switch-ui,feature:install odl-openflowplugin-flow- services- ui
安装基于karaf控制台的md-sal控制器功能,包括nodes、yang UI、Topology:feature:install odl-mdsal-all
安装DLUX功能:feature:install odl-dluxapps-applications
安装完成后,可以使用feature:list -i,来查看已安装功能
卸载已安装功能,必须关闭opendaylight,删除对应的数据目录,然后重启opendaylight
7. 登陆管理WEB UI
http://localhost:8181/index.html
用户名和密码都是admin
第三部分:源码安装mininet功能
Mininet官方的教程提供了四种安装mininet的方法,本文只说明源码编译安装方法,有兴趣使用其他方法的可去mininet官网查看对应教程。源码安装方法适用于本地虚拟机、EC2远程和本地安装,不适用于从旧版本的Mininet或OVS升级。
1、 更新软件
apt-get update
apt-get upgrade
这里如果ubuntu没有安装git,需要安装
apt install git
2、 从github上获取Mininet源码
执行命令: git clone git://github.com/mininet/mininet
此外,可以查看当前获取的Mininet版本,在~/mininet目录下,我们可以通过git tag命令列出所有可用的Mininet版本:
cd mininet
git tag
如果你想安装的任意版本,可执行以下命令:
git checkout -b your-mininet-version,如2.2.1
3、 获取源码树并安装Mininet
获取源码树:cat INSTALL,如果你直接安装最新版,这一步可跳过执行
切换到mininet文件下:cd mininet
这里有多个安装选项:mininet/util/install.sh[options]
“-a”:完整安装包括Mininet VM,还包括如Open vSwitch等依赖关系软件,以及像的OpenFlow Wireshark和POX。默认情况下,这些工具将被安装在你的home目录中。完整安装命令:./util/install.sh -a
“-nfv”:安装Mininet、基于OpenFlow的交换机和Open vSwitch。命令:./util/install.sh -nfv
“-s mydir” :安装到指定目录,而不是在home目录中:./tuil/install.sh -s mydir
只安装OpenFlow1.3和Open vSwitch2.9.0,可以使用安装命令:mininet/util/install.sh -n3V 2.9.0
4、 安装完成后可通过简单的命令测试Mininet的基本功能
mn --test pingall
可查看安装的版本是否正确:mn --version
第四部分:升级mininet自带的openvswitch版本为最新版本
由于mininet 2.3.0d1自带的openswitch版本为2.5.4,因而在很多功能上跟最新的openvswitch差别很大,比如对openflow1.3版本的meter表功能只有2.8.0版本的openvswitch才支持。所以需要升级到最新版本,以满足实验需求。
1、 环境确认
确认mininet已正确安装,并查看mininet版本和mininet自带ovs版本,命令如下:
mn --version
ovs-vsctl --version
2、升级步骤
2.1下载最新版Open vSwitch
1)cd /home
2)mkdir openvswitch
3)cd openvswitch
4)wget http://openvswitch.org/releases/openvswitch-2.9.0.tar.gz
5)tar -xzf openvswitch-2.9.0.tar.gz
6)cd openvswitch-2.9.0
说明:为以防下文中生成的deb安装出现不必要的麻烦,建议新建目录openvswitch,在新建目录中下载Open vSwitch的包,以便后文生成的deb包在此目录下执行。
2.2 安装依赖
安装Open vSwitch需要如下依赖:
1)、apt-get install build-essential fakeroot
2)、apt-get install debhelper autoconf automake libssl-dev pkg-config bzip2 openssl python-all procps python-qt4 python-zope.interface python-twisted-conch
执行下面命令检查依赖是否已全部安装,没有安装的继续安装:dpkg-checkbuilddeps
说明:如果在安装依赖过程中,有些依赖可能由于网络问题获取失败,可以重新执行安装依赖命令;如果重新执行还是不行,那么需要执行apt-get update和apt-get upgrade后,再重新执行安装依赖命令
2.3 编译Open vSwitch
构建Debian包:fakeroot debian/rules binary
执行此命令后,将生成用于安装Open vSwitch交换机的deb包。
说明:在依赖安装正确,构建deb包时失败时,可以选择重新执行命令;如果重新执行还是失败,如果重新执 行还是不行,那么需要执行apt-get update和apt-get upgrade后,再重新执行构建deb命令
2.4 安装Open vSwitch
1)安装Open vSwitch:
cd .. #即退出到新创建的openvswitch目录
dpkg -i *.deb
说明:如果在安装过程中,出现缺少依赖的失败问题,可以执行apt-get -f install命令后,再重新安装
2)重启Open vSwitch
/etc/init.d/openvswitch-switch restart
2.5 验证安装
检验OVS版本,版本已经由2.5.4升到到2.9.0,如图:
检验Mininet版本,Mininet版本还是2.3.0d1,如查看结果显示如图:
验证Mininet是否在正常使用:mn --test pingall
第五部分:简单实验
本实验通过mininet构建一个包含一个交换机和三个主机直连的简单拓扑,并连接远程opendaylight控制器,并用opendaylight的web查看拓扑图,验证实验环境是否可以正常使用
1、启动odl控制器,具体参照第二部分,此处不再赘述:
2、启动mininet,并验证主机是否可以正常通信,输入命令:mn --topo single,3 --controller remote --switch ovsk,protocols=OpenFlow13,并确认ovs连接,如图:
3、查看web界面,如图所示:
疑问:在不指定openflow协议为1.3版本的情况下,mininet跟opendaylight控制器无法连接,这个问题还待确认原因?
附录:
因为SDN控制器默认的连接端口指定为6653和6633,如果在一个系统中需要使用多种SDN控制器的情况下,那么就会出现端口占用无法连接控制器的情况,在这里简单的给出修改默认端口的方法,以供参考:
1、切换到安装的opendaylight文件夹/karaf-0.7.3/etc/opendaylight/datastore/initial/config,找到default-openflow-connection-config.xml或者legacy-openflow-connection-config.xml,如图所示:
2、使用gedit打开文件,并编辑<port>6653<port>这一行为你想要指定的端口,保存退出,重启opendaylight即可:
本文适合新手,文文仅仅是根据个人实践所得,有不合理的地方,还望指正!
本文参考:
http://blog.csdn.net/rocson001/article/details/52460717
https://www.sdnlab.com/3679.html
http://blog.csdn.net/rocson001/article/details/52460717
https://www.sdnlab.com/1931.html
http://docs.opendaylight.org/en/stable-carbon/getting-started-guide/installing_opendaylight.html
http://blog.csdn.net/csdn_flyyoung/article/details/52966583