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的基本使用方法。通过本次实验,对控制平面和控制器有了更进一步的了解。

  • 相关阅读:
    Bit Manipulation
    218. The Skyline Problem
    Template : Two Pointers & Hash -> String process
    239. Sliding Window Maximum
    159. Longest Substring with At Most Two Distinct Characters
    3. Longest Substring Without Repeating Characters
    137. Single Number II
    142. Linked List Cycle II
    41. First Missing Positive
    260. Single Number III
  • 原文地址:https://www.cnblogs.com/JokerLSJ/p/11927004.html
Copyright © 2011-2022 走看看