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

    1.解压三个文件

    2、配置Java环境

    在终端输入sudo gedit ~/.bashrc命令
    

    在这里插入图片描述
    对bashrc文件进行修改,在文件底部添加以下语句(Java_HOME的路径为安装的jdk所在的位置):
    在这里插入图片描述

    3、启动安装插件

    进入OpenDayLigh的文件夹,运行./karaf (注意不能用sudo运行):
    在这里插入图片描述

    安装feature    feature:install odl-restconf odl-l2switch-switch-ui odl-openflowplugin-all odl-mdsal-apidocs odl-dlux-core odl-dlux-node odl-dlux-yangui
    

    在这里插入图片描述

    4、用Python脚本搭建给定的拓扑,并连接OpenDayLight控制器

    sdn2.py代码如下:

    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())}
    

    打开OpenDayLigh,在终端输入如下命令:

    sudo mn --custom /home/muxi1/sdn2.py --topo mytopo --controller=remote,ip=127.0.0.1,port=6633 --switch ovsk,protocols=OpenFlow13
    

    在这里插入图片描述
    pingall测试连通性
    在这里插入图片描述

    5、火狐浏览器访问http://127.0.0.1:8181/index.html,进入ODL图形化界面

    在这里插入图片描述
    在这里插入图片描述
    在控制器提供的WEB UI中下发流表使h2 在20s内ping不通h3,20s后恢复
    在这里插入图片描述
    分别设置nod、table、flow的值,如下图所示(其中node/openflow:1 交换机编号;table/0 流表编号;flow/不超过1024,不冲突即可流表项编号;GET为查询流表,下发流表要修改为PUT;点击加号添加流表项):
    在这里插入图片描述
    使h2在20s内ping不通h3首先要知道h2和h3分别连接ovs的哪个端口,在mininet中用links查询链路连接情况:
    在这里插入图片描述
    从链路连接情况可以看出,h2连接s1的2号端口,h3连接s1的3号端口

    在Opendaylight下设置相关值,如下图所示:

    id:流表项id,为任意值,不冲突即可
    in-port:流表项匹配的进入端口,这里需填h2对应的port号
    ethernet-type:以太网类型0x0800
    在这里插入图片描述
    layer-3-match:ipv4-match 三层匹配为ipv4匹配
    ipv4-source:数据包源ip匹配项(这里由于port1进入的数据包只可能是h2发送的所以可以不填)ipv4-destination:数据包目的ip匹配项。
    在这里插入图片描述
    新增instruction list这是流表项匹配到数据报后要执行的指令
    instruction:apply-actions-case 执行动作
    action drop-action-case 丢包动作(转发动作为output-action 并要在output-node-connector填写转发端口)
    在这里插入图片描述
    priority 流表项优先级,要大于odl下发的默认流表,这里设置成最大65535
    hard-timeout 硬超时,流表项下发后生效时长
    table_id 流表id 默认为0
    在这里插入图片描述

    在mininet中h2 ping h3
    

    在这里插入图片描述
    借助Postman通过OpenDayLight的北向接口下发流表,再利用OpenDayLight北向接口查看已下发的流表。
    在这里插入图片描述

    http://127.0.0.1:8181/restconf/config/opendaylight-inventory:nodes/node/openflow:1/flow-node-inventory:table/0/flow/5
    
    {
        "flow": [
            {
                "id": "5",
                "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": {}
                                    }
                                ]
                            }
                        }
                    ]
                },
                "hard-timeout": "20",
                "table_id": "0"
            }
        ]
    }
    

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

    http://127.0.0.1:8181/restconf/config/opendaylight-inventory:nodes/node/openflow:1/flow-node-inventory:table/0/flow/1
    

    在这里插入图片描述
    将报文复制到Body内,Send
    在这里插入图片描述

  • 相关阅读:
    Max History CodeForces
    Buy a Ticket CodeForces
    AC日记——字符串的展开 openjudge 1.7 35
    AC日记——回文子串 openjudge 1.7 34
    AC日记——判断字符串是否为回文 openjudge 1.7 33
    AC日记——行程长度编码 openjudge 1.7 32
    AC日记——字符串P型编码 openjudge 1.7 31
    AC日记——字符环 openjudge 1.7 30
    AC日记——ISBN号码 openjudge 1.7 29
    AC日记——单词倒排 1.7 28
  • 原文地址:https://www.cnblogs.com/ljc01/p/11901767.html
Copyright © 2011-2022 走看看