mininet+RYU实现交换机

启动mininet:
sudo mn --topo single,3 --mac --switch=user --controller=remote

启动ryu控制器:
cd /usr/local/lib/python2.7/dist-packages/ryu/app
ryu-manager --verbose simple_switch_13.py ofctl_rest.py rest_topology.py(后面的两个文件是为了进行restapi的调用加载的)

在浏览器中调用ryu的api
mininet+RYU实现交换机
mininet+RYU实现交换机
mininet+RYU实现交换机
显示交换机1的相关信息

在没有ping之前直接查看交换机当前的流表,这时只有packet-in
mininet+RYU实现交换机
mininet+RYU实现交换机
mn中h1 ping h2
这时再查看流表的情况:
mininet+RYU实现交换机
mininet+RYU实现交换机
匹配的是目标mac地址和源端口

mn:h1 ping h3
浏览器中查看流表情况:
mininet+RYU实现交换机
mininet+RYU实现交换机
这时会发现新增加了h1和h3之间的流表


对流表进行更改,选择post,
mininet+RYU实现交换机
mininet+RYU实现交换机
查看现在的流表,发现已经有了改变:
mininet+RYU实现交换机
mininet+RYU实现交换机
在mn中h1 ping h2,会发现Ping不通

h1 ping h2 的过程
h1 arp request h2 广播 mac_to_port中保存h1的信息
h2 arp reply h1 添加h2-h1流表,执行packet-out;mac_to_port中添加h2的信息
h1 icmp request h2 添加h1-h2流表,执行packet-out;
h2 icmp reply h1 h2-h1流表已经存在,执行packet-out
在这个过程中,h2-h1的流表会被执行2次,h1-h2的流表会被执行一次,第一次的arp request是广播的
启动mininet:
sudo mn --topo single,3 --mac --switch=user --controller=remote

启动ryu控制器:
cd /usr/local/lib/python2.7/dist-packages/ryu/app
ryu-manager --verbose simple_switch_13.py ofctl_rest.py rest_topology.py(后面的两个文件是为了进行restapi的调用加载的)

在浏览器中调用ryu的api
mininet+RYU实现交换机
mininet+RYU实现交换机
mininet+RYU实现交换机
显示交换机1的相关信息

在没有ping之前直接查看交换机当前的流表,这时只有packet-in
mininet+RYU实现交换机
mininet+RYU实现交换机
mn中h1 ping h2
这时再查看流表的情况:
mininet+RYU实现交换机
mininet+RYU实现交换机
匹配的是目标mac地址和源端口

mn:h1 ping h3
浏览器中查看流表情况:
mininet+RYU实现交换机
mininet+RYU实现交换机
这时会发现新增加了h1和h3之间的流表


对流表进行更改,选择post,
mininet+RYU实现交换机
mininet+RYU实现交换机
查看现在的流表,发现已经有了改变:
mininet+RYU实现交换机
mininet+RYU实现交换机
在mn中h1 ping h2,会发现Ping不通

h1 ping h2 的过程
h1 arp request h2 广播 mac_to_port中保存h1的信息
h2 arp reply h1 添加h2-h1流表,执行packet-out;mac_to_port中添加h2的信息
h1 icmp request h2 添加h1-h2流表,执行packet-out;
h2 icmp reply h1 h2-h1流表已经存在,执行packet-out
在这个过程中,h2-h1的流表会被执行2次,h1-h2的流表会被执行一次,第一次的arp request是广播的