(一)基本要求
- 编写Python程序,调用OpenDaylight的北向接口实现以下功能
(1) 利用Mininet平台搭建下图所示网络拓扑,并连接OpenDaylight;
.生成拓扑
sudo mn --topo=single,3 --controller=remote,ip=127.0.0.1,port=6633 --switch ovsk,protocols=OpenFlow13
启动 OpenDaylight:./../distribution-karaf-0.4.4-Beryllium-SR4/bin/karaf
2) 下发指令删除s1上的流表数据。
.编写delete.py,调用OpenDaylight的北向接口下发指令删除s1上的流表数据
delete.py
3) 下发硬超时流表,实现拓扑内主机h1和h3网络中断20s。
.编写timeout.py及timeout.json,调用OpenDaylight的北向接口下发硬超时
流表,实现拓扑内主机h1和h3网络中断20s
timeout.py
timeout.json点击查看代码
4) 获取s1上活动的流表数。
.编写get_flows.py,调用OpenDaylight的北向接口获取s1上活动的流表数
get_flows.py
- 编写Python程序,调用Ryu的北向接口实现以下功能
(1) 实现上述OpenDaylight实验拓扑上相同的硬超时流表下发。
.ryu_timeout.py
.ryu_timeout.json点击查看代码
(2) 参考Ryu REST API的文档,基于VLAN实验的网络拓扑,编程实现相同的VLAN配置。
提示:拓扑生成后需连接Ryu,且Ryu应能够提供REST API服务
VLAN_ID | Hosts |
---|---|
0 | h1 h3 |
1 | h2 h4 |
.ryu_topo.py |
.ryu_vlan.py点击查看代码
.用ryu_topo.py生成拓扑: sudo mn --custom ryu_topo.py --topo mytopo --mac --controller=remote,ip=127.0.0.1,port=6633 --switch ovsk,protocols=OpenFlow13
.连接Ryu,同时开启REST API和运行一个支持OpenFlow 1.3的交换机命令:
ryu-manager ryu/ryu/app/ofctl_rest.py ryu/ryu/app/simple_switch_13.py
.删除流表y
curl -X DELETE http://localhost:8080/stats/flowentry/clear/1
curl -X DELETE http://localhost:8080/stats/flowentry/clear/2
总结:这次实验难度比较大,因为python运用的不是很好所以参考了其他人的代码
划分vlan时,没有成功划分,使用curl命令删除流表后完成划分