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
    2019 SDN上机第4次作业_第1张图片

  • 解压安装OpenDayLight控制器
    拷贝安装包
    命令:tar -xf distribution-karaf-0.4.4-Beryllium-SR4.tar.gz
    2019 SDN上机第4次作业_第2张图片


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
    2019 SDN上机第4次作业_第3张图片

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

2019 SDN上机第4次作业_第4张图片

  • 创建拓扑
    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 = {'mytopo': (lambda: MyTopo())}
  • 查看拓扑
    命令:sudo mn --custom /home/chanshanshan/sdn4.py --topo mytopo --controller=remote,ip=127.0.0.1,port=6633 --switch ovsk,protocols=OpenFlow13
    2019 SDN上机第4次作业_第5张图片
  • 连接opendaylight控制器


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

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

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查看刚下发的流表,如下图
    2019 SDN上机第4次作业_第9张图片
    2019 SDN上机第4次作业_第10张图片

你可能感兴趣的:(2019 SDN上机第4次作业)