zoukankan      html  css  js  c++  java
  • 2019 SDN第四次上机作业

    作业博客链接:http://edu.cnblogs.com/campus/fzu/fzusdn2019/homework/10017

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

    • OpenDayLight是java实现的,因此需要先[配置java环境]
    • 然后下载JDK安装包解压
    • 配置相应的环境变量
    • 在终端输入java -version 检查java环境是否配置成功

    2. 启动并安装插件

    进入文件地址 /distribution-karaf-0.4.4-Beryllium-SR4/bin
    打开终端执行命令 ./karaf
    安装插件Features执行命令

    opendaylight-user@root>feature:install odl-restconf
    opendaylight-user@root>feature:install odl-l2switch-switch-ui
    opendaylight-user@root>feature:install odl-openflowplugin-all
    opendaylight-user@root>feature:install odl-mdsal-apidocs
    opendaylight-user@root>feature:install odl-dlux-core
    opendaylight-user@root>feature:install odl-dlux-node
    opendaylight-user@root>feature:install odl-dlux-yangui
    

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

    • Python脚本如下
    from mininet.topo import Topo
    
    class Mytopo(Topo):
        def __init__(self):
            Topo.__init__(self)
            sw=self.addSwitch('s1')
            count=1
            for i in range(3):
                    host = self.addHost('h{}'.format(count))
                    self.addLink(host,sw,1,count)
                    count = count + 1
    
    topos = {'mytopo': (lambda:Mytopo())}
    
    • 运行脚本,并检查拓扑连接状况
      执行命令sudo mn --custom /home/joker/桌面/mytopo.py --topo mytopo --controller=remote,ip=127.0.0.1,port=6633 --switch ovsk,protocols=OpenFlow13
      然后pingall

    • 在ODl打开的情况下登陆网站http://localhost:8181/index.html
      账号 admin
      密码 admin

    • Reload检查拓扑连接状况

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

    在控制器的Web中的Yang UI>Opendaylight-inventory>config>nodes>table>flow

    • node/ openflow:1 //交换机编号
    • table/ 0 //流表编号
    • flow/不超过1024,不冲突即可 流表项编号
    • GET为查询流表,下发流表要修改为PUT

    配置match

    • id=:流表项id,任意值,不冲突即可
    • in-port:流表项匹配的进入端口,这里需填h1对应的port号
    • ethernet-type:以太网类型0x0800表示以太网帧是ip协议
    • layer-3-match:ipv4-match 三层匹配为ipv4匹配
    • ipv4-source:数据包源ip匹配项(这里由于port2进入的数据包只可能是h2发送的所以可以不填)
    • ipv4-destination:数据包目的ip匹配项

    配置instructions

    • instruction list这是流表项匹配到数据报后要执行的指令
    • order=:0 指令id0
    • instruction=:apply-actions-case 执行动作
    • 新增action list=:
    • action drop-action-case 丢包动作

    配置flow信息

    • flow-name 流表项名字,可不填
    • priority 流表项优先级,要大于odl下发的默认流表,这里设置成最大65535
    • hard-timeout 硬超时,流表项下发后生效时长
    • cookie 可不填,为方便在ovs中查找下发成功的流表项可以设置成容易找的到值如0x02(要填16进制)
    • table_id 流表id 默认为0

    在mininet终端执行h2 ping h3然后在Web UI 上点击send下发流表

    • 在h2 ping h3之后下发流表,包序号会有个调变 图中从4->25

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

    • 通过preview查看刚刚下发的流表项的json格式,可以调用北向接口传送json数据来对ODL下发指令(如果刚刚下发的流表项内容找不到了可以通过node id, table id, flow id, GET回来,然后把GET按钮切换成PUT按钮查看preview)

    • 下载解压Postman压缩包

    • 执行命令cd Postman/

    • 执行命令 ./Postman

    • 打开postman,将preview里的url复制到地址栏,消息方式选PUT,IP为控制器所在的PC的IP,type选择Basic Auth 用户名和密码是ODL的登录账号和密码都是admin

    • Body中将消息格式设置成json,上传方式设置为raw

    • 将preview中的消息粘贴在文本框内,可以看到参数都是在ODL里面设置的为了避免和之前ODL下发过的重合,在这把流表项id改为2或者删除之前发的流表项
      修改消息内id的同时url后的flow id也要改为2,否则会收到error,点击send后下发成功

    • 发送成功后改为GET并send查看刚刚下发的流表项

    • 在h2 ping h3后点击send
      如图在7->28,中间h2和h320ping不通

    6.实验总结

    ​在本次实验中,熟悉了ODL控制器的简单使用。在搭建拓扑之后,连接到ODL控制器,在WEB UI中下发流表实现使h2 20s内ping不通h3,20s后恢复。实验中还借助了Postman通过OpenDayLight的北向接口下发流表,再利用OpenDayLight北向接口查看已下发的流表,熟悉Postman的基本使用方法。通过本次实验,对控制平面和控制器有了更进一步的了解。

  • 相关阅读:
    ie6内存泄漏问题的解决
    精简版拖动
    【转】在ASP.Net中写系统日志
    转 集中遍历遍历datatable的方法
    水晶报表字段为空时设置默认值
    数据库一种IN查询
    两种获得路径的测试
    整理——ASP.net UTF8支持
    Subversion svnserve 服务配置 整理
    [转自CSDN] SQL基础> 约束(CONSTRAINT)
  • 原文地址:https://www.cnblogs.com/JokerLSJ/p/11927004.html
Copyright © 2011-2022 走看看