2019 SDN上机第4次作业

1. 解压安装OpenDayLight控制器(本次实验统一使用Beryllium版本)

  • 在虚拟机上查看java版本
    命令:java -version

  • 其次配置java环境, 环境变量配置
    命令: sudo gedit ~/.bashrc

  • 在弹出来的代码底部输入一下语句:
    export JAVA_HOME=/usr/local/java/jdk1.8.0_201
    export JRE_HOME=${JAVA_HOME}/jre
    export CLASSPATH=.😒{JAVA_HOME}/lib:${JRE_HOME}/lib
    export PATH=${JAVA_HOME}/bin:$PATH

  • 解压安装OpenDayLight控制器
    拷贝安装包
    命令:tar -xf distribution-karaf-0.4.4-Beryllium-SR4.tar.gz


2. 启动并安装插件

  • 启动
    命令:进入ODL中bin的文件夹,运行./karaf(用一系列cd 或者一次cd和/操作以后,进入bin目录下,然后输入一下命令)
    ./karaf
  • 安装插件
    命令:
    feature:install odl-restconf
    feature:install odl-l2switch-switch-ui
    feature:install odl-openflowplugin-all
    feature:install odl-mdsal-apidocs
    feature:install odl-dlux-core
    feature:install odl-dlux-node
    feature:install odl-dlux-yangui

3. 用Python脚本搭建如下拓扑,连接OpenDayLight控制器

  • 创建拓扑
    from mininet.topo import Topo
    class MyTopo(Topo):

    def init(self):

    initilaize topology

    Topo.init(self)

    add hosts and switches

    h1 = self.addHost('h1')
    h2 = self.addHost('h2')
    h3 = self.addHost('h3')

    s1 = self.addSwitch('s1')

    add links

    self.addLink(h1, s1, 1, 1)
    self.addLink(h2, s1, 1, 2)
    self.addLink(h3, s1, 1, 3)
    topos =

  • 查看拓扑
    命令:sudo mn --custom /home/chanshanshan/sdn4.py --topo mytopo --controller=remote,ip=127.0.0.1,port=6633 --switch ovsk,protocols=OpenFlow13

  • 连接opendaylight控制器


4. 在控制器提供的WEB UI中下发流表使h2 20s内ping不通h3,20s后恢复

  • 打开图形化界面一次打开:Yang UI>Opendaylight-inventory>config>nodes>table>flow
  • 检查连通性:
  • odl部署;
  • 在mininet中进行h2 ping h3,点击send,由于设置了前20s不同,结果如图,icmp_seq会延迟20.
  • 具体报文:

5. 借助Postman通过OpenDayLight的北向接口下发流表,再利用OpenDayLight北向接口查看已下发的流表。

  • 安装postman,并直接解压,进入postman界面。

  • 查看刚刚下发的流表项的json格式,如下图
    http://127.0.0.1:8181/restconf/config/opendaylight-inventory:nodes/node/openflow:1/flow- node- inventory:table/0/flow/1

    {
    "flow": [
    {
    "id": "1",
    "match": {
    "in-port": "2",
    "ethernet-match": {
    "ethernet-type": {
    "type": "0x0800"
    }
    },
    "ipv4-destination": "10.0.0.3/32"
    },
    "instructions": {
    "instruction": [
    {
    "order": "0",
    "apply-actions": {
    "action": [
    {
    "order": "0",
    "drop-action": {}
    }
    ]
    }
    }
    ]
    },
    "priority": "65535",
    "hard-timeout": "20",
    "table_id": "0"
    }
    ]
    }

  • 把preview里的url复制到地址栏,消息方式选择PUT,type设置为Basic Auth,填写账户和密码。

  • 将preview的消息粘贴在文本框中,修改id和url里的flow为2,防止与之前的流表重合,点击send后下发成功,然后改为GET并send查看刚下发的流表,如下图

posted @ 2019-11-25 16:13  小同学-  阅读(153)  评论(0)    收藏  举报