zoukankan      html  css  js  c++  java
  • 基于OpenDaylight和Mininet的试验床平台搭建

    版权声明:本文为Heriam博主原创文章,遵循CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

    博客主页:https://jiang-hao.com

    相关论文:https://www.researchgate.net/publication/305277465_A_Secure_Multi-Tenant_Framework_for_SDN

    ######################################平台架构#######################################

    一、虚拟机安装和镜像加载

    *本部分过程非常简单,所以不详细描述,基本流程稍微提一下。

    1. 虚拟机软件:安装虚拟机软件主要有VMware Station, VirtualBox等,后者免费,下载网址为:https://www.virtualbox.org/wiki/Downloads,本文以VMware Station为例。请自行下载安装,这里不多做赘述。

    2. Ubuntu系统加载:到Ubuntu官网下载自身操作系统对应的最新版Ubuntu桌面镜像,通过VMware加载Ubuntu镜像。

    3. Mininet VM加载:到Mininet官网:http://mininet.org/vm-setup-notes/下载镜像文件(打开网页后有相关指南,可以参照其进行加载安装,懒得看英文的话就只用先把Mininet镜像导入VMware,不用启动,后文会对这里接下来的操作进行详述)。

    4. 最后Ubuntu部分的相关配置参数如下图,Mininet的导入不需要进行任何参数配置,至少在启动前不用。注意虚拟机网卡都是默认的NAT模式不用更改。

    二、Ubuntu系统下OpenDaylight安装

    *本部分操作比较多,因此针对每一步都另文给出详细步骤:

    1. Ubuntu系统中搭建Java开发环境:《Linux Ubuntu系统下Java开发环境搭建》

    2. Ubuntu系统中安装Apache Maven:《Linux Ubuntu系统下Apache Maven的安装和配置》

    3. Ubuntu系统中安装OpenDaylight:《SDN开发之Linux Ubuntu系统下OpenDaylight源码编译安装和调试》

    三、OpenDaylight功能组件安装和调试

    *本部分解决OpenDaylight控制器和Mininet的连接,并且通过OpenDaylight DLUX的Web GUI显示。

    *本部分基于上文步骤全部完成,已经搭建了一个初步装好OpenDaylight的Ubuntu虚拟机。

    *下文用ODL指代OpenDaylight。

    1. 一键启动控制器:ODL每次启动controller需要cd目录十分麻烦。这里同样可以自己写一个启动脚本来管理ODL控制器的运行:

      vim odl
      <Insert>
      !#/bin/bash
      /home/<usrname>/developApps/openDayLight/integration/distributions/karaf/target/assembly/bin/karaf
      <Esc>
      :wq!
      sudo mv odl /usr/local/bin
      sudo chmod 755 /usr/local/bin/odl

      这样在任何地方都只用输入(sudo -i) odl就可以运行控制器了。

    2. OpenDaylight的Features安装和调试。

      现在就可以输入odl命令来启动控制器了,先进入如下界面:

      

    安装支持REST API的组件:

    feature:install odl-restconf

    安装L2 switch和OpenFlow插件:

    feature:install odl-l2switch-switch

    feature:install odl-openflowplugin-all

    安装基于karaf控制台的md-sal控制器功能,包括nodes、yang UI、Topology:

    feature:install odl-mdsal-apidocs    #此组件写错 很容易无法登录

    安装DLUX功能:

    feature:install odl-dlux-all

    安装基于karaf控制台的ad-sal功能,包括Connection manager、Container、Network、Flows:

    feature:install odl-adsal-northbound

    *注意:请按照一定的顺序安装,安装顺序不合理的话,会导致后面Web界面无法访问!且记录遇到的一个问题:在没有按照顺序安装组件的情况下,无法登录进入ODL主界面。解决方法是通过logout退出karaf平台,进入上级目录,删除data目录:rm –r data,进入bin目录:cd bin,执行./karaf clean,再次重复上面的安装组件操作。

    (本部分摘自:《OpenDaylight的Helium(氦)版本安装》@君子一诺 )

    Web界面访问:此时可以登录ODL的Web UI界面进行访问。用浏览器访问网址:http://<ODL的IP>:8181/dlux/index.html,<ODL_IP>为安装ODL所在的主机IP地址,特别注意的是此版本的ODL访问端口为8181,因8080端口被karaf控制台进程所占用。某些情况下不需要进入/dlux目录而直接访问http://<ODL的IP>:8181/index.html。

    登陆用户名为admin,密码为admin,如下图:

    *关于Features出问题,可以vim查看/developApps/openDayLight/integration/distributions/karaf/target/assembly/etc目录下的org.apache.karaf.features.cfg

    *由于还没有连接数据面Mininet的交换机,因此登陆进去后还不会显示任何拓扑。

    四、Mininet虚拟机的安装和登录调试

    *本部分接着第一部分下载好Mininet镜像后,解决Mininet导入虚拟机后的加载配置并重点阐述远程免密码自动登录的设置。

    1. 在虚拟机成功导入.OVF后缀的mininet文件后,直接启动。

    2. 启动完成后,进入到登录界面,账号密码都是mininet(注意密码敲了不会有显示很正常,敲完再敲回车就行)。

    mininet-vm login: mininet                   
    Password: mininet                               

    3. 好,重点来了,接下来说明如何从Ubuntu的虚拟机"远程"SSH登录到Mininet,这样做的目的是可以避免在两个虚拟机之间切来切去的麻烦。

    a)首先,需要找到Mininet虚拟机的IP地址,一般是192.168.x.y格式的地址。在Mininet的命令行界面输入:

    ifconfig eth0                                          

    b)如果你不希望每次从Ubuntu虚拟机SSH登录Mininet的时候都输一遍这个 IP地址,可以在Ubuntu虚拟机端修改一下/etc/hosts文件:

    sudo gedit /etc/hosts                           

    然后在文档末尾添加以下内容后保存退出:

    192.168.x.y minivm

    这样就可以在每次登陆的时候用“minivm”代替IP地址。

    c)接下来就可以从Ubuntu虚拟机端SSH到Mininet了。在Ubuntu端终端输入以下命令(没有修改hosts文件的话就用mininet的IP地址代替minivm):

    ssh -Y mininet@minivm                     

    d)登陆后输入账号mininet密码mininet,就到了Mininet的命令行界面了。

    4.(可选)写脚本一键SSH免密码自动登录Mininet。

    每次都要手动敲命令还要输入账号密码登陆Mininet稍显麻烦,我们还可以做出如下简化:

    a)设置免密码登陆:在Ubuntu端check一下是否已经有SSH密钥:    ~/.ssh/id_rsa     或者     ~/.ssh/id_dsa      

           如果都不能找到任何文件的话,那么就需要通过命令生成SSH密钥,同样在Ubuntu端:       ssh-keygen -t rsa        

           为了加快以后SSH连接的速度,需要将你的公钥添加给Mininet端。同样在Ubuntu端:     scp ~/.ssh/id_rsa.pub mininet@minivm:~/     

           最后,在Ubuntu端先通过SSH登陆进Mininet,再在Mininet命令行模式下输入:

                           cd ~/ && mkdir -p .ssh && chmod 700 .ssh && cd .ssh && touch authorized_keys2 && chmod 600 authorized_keys2 && cat ../id_rsa.pub >> authorized_keys2 && rm ../id_rsa.pub && cd ..                            

           操作完成后,以后每次登陆就不必输入账号密码了。

    b)写一键登陆脚本:嫌输命令麻烦的童鞋还可以继续写一个脚本,输入:(其中<>表示按键)

        vim mininet
        <Insert>(在文档内添加以下内容)
        !#/bin/bash
        ssh -Y mininet@minivm
        <Esc>
        :wq!
        sudo mv mininet /usr/local/bin
        sudo chmod 755 /usr/local/bin/mininet

        这样以后在Ubuntu端每次只用通过mininet命令来一键登陆Mininet。

    五、OpenDaylight+Mininet联动

    *本部分测试ODL和Mininet的连接,初步搭建好一个SDN试验床。

    1. 启动MIninet和ODL。调试好网络连接。首先通过一端Ping另一端测试网络连通性。

    2. 通过"minivm"命令运行脚本登陆Mininet:创建简单实验拓扑并指定远程ODL作为控制器,简单的命令可以尝试:

    sudo mn --controller=remote,ip=<ODL的IP>                        

    完成后将输出一下内容:

    mininet@mininet-vm:~$ sudo mn --controller=remote,ip=192.168.174.128
    *** Creating network
    *** Adding controller
    *** Adding hosts:
    h1 h2
    *** Adding switches:
    s1
    *** Adding links:
    (h1, s1) (h2, s1)
    *** Configuring hosts
    h1 h2
    *** Starting controller
    c0
    *** Starting 1 switches
    s1 ...
    *** Starting CLI:
    mininet>

    3. 打开网页登陆ODL的Web界面,看到如图拓扑,联动测试完成,一个基本的基于ODL+Mininet的SDN实验平台就搭建好了!

    祝顺利!

    版权声明:本文为Heriam博主原创文章,遵循CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

    博客主页:https://jiang-hao.com

    相关论文:https://www.researchgate.net/publication/305277465_A_Secure_Multi-Tenant_Framework_for_SDN

  • 相关阅读:
    VS2010 自动跳过代码现象
    Reverse Linked List II 【纠结逆序!!!】
    Intersection of Two Linked Lists
    Linked List Cycle II
    Remove Nth Node From End of List 【另一个技巧,指针的指针】
    Swap Nodes in Pairs
    Merge Two Sorted Lists
    Remove Duplicates from Sorted List
    Linked List Cycle
    Dungeon Game
  • 原文地址:https://www.cnblogs.com/cciejh/p/opendaylight2.html
Copyright © 2011-2022 走看看