1. 解压安装OpenDayLight控制器(本次实验统一使用Beryllium版本)
安装ODL后安装插件
2.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())}
搭建拓扑后输入pingall检测连通性,同时在控制器端查看拓扑图:
3.在控制器提供的WEB UI中下发流表使h2 20s内ping不通h3,20s后恢复
输入links,查看端口连通情况,可以看到h2连接交换机的2号端口
在Yang UI界面输入node、table和flow的id,进入端口设置为2,ethernet-type设置为0x0800,设置ipv4-march中的源地址为10.0.0.2/32,目标地址为10.0.0.3/32
instruction与action的order设置为0
时间延迟设置为20s,table的id设置为0,因为没有下发过其它流表所以优先级暂时不设置
开始h2 ping h3后下发流表,查看连通断开与恢复的情况,可以看到第4秒开始,中断了20秒,然后才恢复通讯
4.借助Postman通过OpenDayLight的北向接口下发流表,再利用OpenDayLight北向接口查看已下发的流表
在DLUX界面中点击预览,复制代码
关闭DLUX界面,但保留ODL开启,打开Postman,输入账号密码授权,再写入URL与代码后,实现调用ODL接口
预览如下:
{ "flow": [ { "id": "1", "match": { "in-port": "2", "ethernet-match": { "ethernet-type": { "type": "2048" } }, "ipv4-destination": "10.0.0.3/32" }, "instructions": { "instruction": [ { "order": "0", "apply-actions": { "action": [ { "order": "0", "drop-action": {} } ] } } ] }, "hard-timeout": "20", "table_id": "0" } ] }
再次开始h2 ping h3 ,Postman下发流表,查看连通断开与恢复的情况,可以看到第5秒开始,中断了20秒,然后才恢复通讯