2019 SDN上机第4次作业

1 安装OpenDayLight控制器,启动并安装插件

2 用Python脚本搭建如下拓扑:

from mininet.topo import Topo
class Mytopo(Topo):
    def __init__(self):
        Topo.__init__(self)
        sw=self.addSwitch('s1')
        h1=self.addHost('h1')
	h2=self.addHost('h2')
        h3=self.addHost('h3')
	self.addLink(sw,h1)
        self.addLink(sw,h2)
	self.addLink(sw,h3)
topos = {'mytopo': (lambda:Mytopo())}

pingall,显示各主机都连通:

控制器端拓扑图:

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

下发流表过程:

in-port=2 :对2号端口进来的数据进行限制


instructio n: apply-actions-case (执行动作)
action : drop-action-case (丢包动作)

hard-timeout:硬超时,在流表下发之后改时间内的报文都会执行上文设置的丢弃动作

流表内容设置好之后点击SEND,成功之后流表就会生效,在20秒内h2 无法ping通h3

Preview:

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

{
    "flow": [
        {
            "id": "2",
            "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": "flow111",
            "hard-timeout": "20",
            "table_id": "0"
        }
    ]
}

links:

在下发流表前,icmp_seq=1和icmp_seq=2的报文正常通信。
在这时下发流表,之后的20秒都无法ping通:

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

将preview的url复制到地址栏,输入odl的默认账号和密码admin

使用PUT方法 下发流表:

使用GET方法 查看刚刚下发的流表项

原文地址:https://www.cnblogs.com/xzhcode/p/11900775.html