Contents

Python-第三方库-mininet-Openflow教程

mininet官网

mininet官网文档

mininet官网api

openflow教程

学习开发工具

启动网络

https://github.com/mininet/openflow-tutorial/wiki/images/Three_switch_layout_simple.png
1
sudo mn --topo single,3 --mac --switch ovsk --controller remote

ovs-ofctl 示例用法

ovs-ofctl是 Open vSwitch 附带的实用程序,可以查看和控制单个交换机的流表。

连接到交换机并转储(打印)其端口状态和功能

1
ovs-ofctl show s1

只打印流表信息可以使用

1
ovs-ofctl dump-flows s1

访问远程 OVS 实例或 Stanford 参考交换机

ovs-ofctl通过 Unix 域套接字与 Open vSwitch 通信,不管是本地交换机还是远程交换机

连接交换机的完整格式

1
2
# ovs-ofctl dump-flows tcp:{ip address}:{port}
ovs-ofctl dump-flows tcp:127.0.0.1:6634

尽量不用使用dpctl和ovs-dpctl命令,使用 Open vSwitch 可以让您检查 OVS 的内核流缓存

ping 测试

1
mininet> h1 ping -c3 h2

交换机流表是空的吗,没有控制器连接到交换机,交换机不知道如何处理传入流量,从而导致 ping 失败

使用ovs-ofctl手动安装必要的流表

1
2
ovs-ofctl add-flow s1 in_port=1,actions=output:2 
ovs-ofctl add-flow s1 in_port=2,actions=output:1

检查流表

1
ovs-ofctl dump-flows s1

再ping就能通过了

启动 Wireshark

1
sudo wireshark &

他这里提示使用ssh x11登录节点,我建议使用mx命令

1
2
# mx 节点名
mx c0

选择ens33添加过滤规则openflow

启动 Controller 并在 Wireshark 中查看启动消息

首先停止 mininet 并清理

1
2
mininet> exit
mn -c 

我这里是在openflow虚拟机里面启动 OpenFlow 参考控制器

1
controller ptcp:6633

启动拓扑

1
mn --topo single,3 --mac --switch ovsk --controller remote,ip=192.168.xxx.xxx,port=6633

带 iperf 的基准控制器

1
iperf h1 h2
 |