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

    ------------恢复内容开始------------
    ------------恢复内容开始------------

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

    • 用U盘从机房电脑拷贝文件并解压
    tar xvf distribution-karaf-0.4.4-Beryllium-SR4.tar.gz
    
    • 安装JAVA环境
      • 在JAVA开源网站上下载安装包
      • 解压安装包
      • 添加环境变量

    2. 启动并安装插件

    cd distribution-karaf-0.4.4-Beryllium-SR4/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控制器

    • python脚本内容如下:
    from mininet.topo import Topo
    class MyTopo(Topo):
    
        def __init__(self):
    
            #初始化拓扑
            Topo.__init__(self)
    
            #添加主机和交换机
            h1 = self.addHost('h1')
            h2 = self.addHost('h2')
            h3 = self.addHost('h3')
            s1 = self.addSwitch('s1')
            #添加连线
            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 ./test.py --topo mytopo --controller=remote,ip=127.0.0.1,port=6633 --switch ovsk,protocols=OpenFlow13
    

    • 执行PING ALL指令后,控制器拓扑图如下:

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

    • 下发流表,node填入openflow:1,table为0,flow为1,层级结构如下所示:

    • 将GET 改为 PUT
    • 查询链路连接情况
    • id:流表项id in-port:进接口 type:上层协议类型(0x0800为IP协议)
    • layer-3-match: 三层匹配协议选择 source:源IP匹配 destination:目的IP匹配
    • instruction list:匹配到流表项以后执行系列动作 (本例中为丢弃报文动作)
    • flow_name:流表项名 priority:流表项优先级 hard-timeout:硬超时
    • 下发流表(点击SEND)

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

    • PRIVIEW流表项的URL和JSON文本
    • 打开POSTMAN,更改GET为PUT,并将URL复制进文本框如下所示

      URL地址如下:
    http://127.0.0.1:8181/restconf/config/opendaylight-inventory:nodes/node/openflow:1/flow-node-inventory:table/0/flow/1
    
    • 选择认证方式并填入OPENDAYLIGHT账户
    • Body更改上传方式为raw,更改文本类型为json

      json 文本内容如下:
    {
        "flow": [
            {
                "id": "1",
                "match": {
                    "in-port": "1",
                    "ethernet-match": {
                        "ethernet-type": {
                            "type": "0x0800"
                        }
                    },
                    "ipv4-destination": "10.0.0.3/32"
                },
                "instructions": {
                    "instruction": [
                        {
                            "order": "0",
                            "apply-actions": {
                                "action": [
                                    {
                                        "order": "0",
                                        "drop-action": {}
                                    }
                                ]
                            }
                        }
                    ]
                },
                "flow-name": "flow0",
                "priority": "65535",
                "hard-timeout": "20",
                "cookie": "2",
                "table_id": "0"
            }
        ]
    }
    
    • 点击PUT,下发流表
  • 相关阅读:
    Android studio 使用flutter插件 运行第一个flutter项目 报错 Warning: License for package Android SDK Build-Tools 28.0.3 not accepted.
    Android 使用GPS获取到经纬度后 无法在Android8.0上使用Geocoder类获取位置信息
    Android 利用 gson 将 json 转成 对象object 集合list
    Android 6.0 7.0 8.0 一个简单的app内更新版本-okgo app版本更新
    iview组件 eslint校验出错 Parsing error: x-invalid-end-tag
    新建 Vue项目 使用iView报错解决
    Typora 自定义主题 修改左右间距
    Vue 嵌套数组 数组更新视图不更新
    如何在手机设备上实时调试
    通过ReRes让chrome拥有路径映射的autoResponse功能。
  • 原文地址:https://www.cnblogs.com/fzu-lzh/p/11922222.html
Copyright © 2011-2022 走看看