ubuntu16.04搭建opendaylight和mininet实验环境小结

      在ubuntu16.04系统搭建opendaylight和mininet的博文很多,但是从我自身的实际搭建环境过程中,还是从中学到不少,为了完整的记录自己搭建opendaylight和mininet环境的完整过程,写此博文记录总结

第一部分:配置ubuntu16.04的初始化环境

          在虚拟机中新装的ubuntu系统,无法直接用root用户登录。虽然用普通用户进行实验也可以,有的博文甚至反对直接使用root用户进行操作。但是普通用户总会面临各种因为权限导致的各种坑,在实验过程中会多次的查询某些权限的获取方法,很是累人。因此,本文的实验环境在root用户环境下进行,设置方法如下:

        1、 打开终端,使用 sudo passwd root 命令重置root密码

        2ubuntu 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