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
显示交换机1的相关信息
在没有ping之前直接查看交换机当前的流表,这时只有packet-in
mn中h1 ping h2
这时再查看流表的情况:
匹配的是目标mac地址和源端口
mn:h1 ping h3
浏览器中查看流表情况:
这时会发现新增加了h1和h3之间的流表
对流表进行更改,选择post,
查看现在的流表,发现已经有了改变:
在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
显示交换机1的相关信息
在没有ping之前直接查看交换机当前的流表,这时只有packet-in
mn中h1 ping h2
这时再查看流表的情况:
匹配的是目标mac地址和源端口
mn:h1 ping h3
浏览器中查看流表情况:
这时会发现新增加了h1和h3之间的流表
对流表进行更改,选择post,
查看现在的流表,发现已经有了改变:
在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是广播的