• 2019 SDN上机第4次作业


    2019 SDN上机第4次作业

    1. 解压安装OpenDayLight控制器

    下载完成后,在下在目录打开终端执行以下指令解压:

    tar -zxvf distribution-karaf-0.4.4-Beryllium-SR4.tar.gz

    启动之前需要预先配置java环境,参考链接

    我电脑上的Ubuntu用java写过程序,已经配置好java环境,不再演示。。。

    2. 启动并安装插件

    (1)解压完成后进入bin文件夹

    cd distribution-karaf-0.4.4-Beryllium-SR4/bin/

    (2)运行karaf

    ./karaf

    (3)安装并配置

    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

    打开浏览器在地址栏输入127.0.0.1:8181/index.html,可看到如下界面:

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

    Python脚本建立拓扑:

    from mininet.topo import Topo
     
    class Topo2( Topo ):
     
        def __init__( self ):
     
    	# 初始化拓扑
    	Topo.__init__( self )
    
    	# 添加一台SDN交换机和三台主机
    	h1 = self.addHost('h1')
    	h2 = self.addHost('h2')
    	h3 = self.addHost('h3')
    	sw1 = self.addSwitch('s1')
    
    	# 添加连接
    	self.addLink(h1,sw1,1,1)
    	self.addLink(h2,sw1,1,2)
    	self.addLink(h3,sw1,1,3)
    
    topos = { 'mytopo': ( lambda: Topo2() ) }
    

    新建的py脚本文件权限要改为可执行

    运行拓扑:

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

    在控制器端查看拓扑:

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

    (1)选择PUT方式下发流表,node填入openflow:1,table为0,flow为1

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

    (2) 点击添加flow list,id为0,in-port输入端口选择2(交换机连接h2的端口),ethernet-type写入0x0800(表示以太网帧是ip协议)

    (3)layer-3-match:ipv4-match 三层匹配为ipv4匹配,ipv4-source:数据包源ip匹配项(这里由于port2进入的数据包只可能是h2发送的所以可以不填),ipv4-destination:数据包目的ip匹配项

    (4)新增instruction list这是流表项匹配到数据报后要执行的指令,order:0 指令id0, instruction:apply-actions-case 执行动作
    新增action list ,action drop-action-case 丢包动作(转发动作为output-action 并要在output-node-connector填写转发端口),order:0 动作id0

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

    (6)在send之前,先在mininet中执行

    h2 ping h3

    然后将刚刚配置好的流表下发

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

    解压Postman:

    tar -zxvf Postman-linux-x64-7.9.0.tar.gz

    Postman下发流表:

    地址设置为

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

    body:

    {
        "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": {}
                                    }
                                ]
                            }
                        }
                    ]
                },
                "flow-name": "flow1",
                "priority": "65535",
                "hard-timeout": "20",
                "cookie": "0x02",
                "table_id": "0"
            }
        ]
    }
    

    在ODL里面用GET方式查看流表:

  • 相关阅读:
    手把手的教你激活PyCharm --Pycharm激活详细教程(二)(非常详细,非常实用)
    api-ms-win-crt-process-l1-1-0.dll 丢失的处理,遇到问题和完美解决
    关于pycharm安装出现的interpreter field is empty,无法创建项目存储位置
    手把手的教你安装PyCharm --Pycharm安装详细教程(一)(非常详细,非常实用)
    谷歌浏览器的各种插件网址Chrome插件(谷歌浏览器)-超级详细
    selenium之 chromedriver与chrome版本映射表(更新至v2.43)
    火狐l浏览器所有版本
    1、MySQL主从同步机制及同步中的问题处理
    PyCharm证书过期:Your license has expired
    Git的使用--如何将本地项目上传到Github(三种简单、方便的方法)(二)(详解)
  • 原文地址:https://www.cnblogs.com/SilentSamsara/p/11905088.html
Copyright © 2020-2023  润新知