我通过启用 sflow 并连接到 POX 控制器以进行拓扑发现,在 mininet 中创建了一个环面拓扑。下面是命令。
sudo mn --custom=sflow-rt/extras/sflow.py --link tc,bw=10 --topo torus,3,3 --controller remote --switch ovsk,stp=1 --mac
我的拓扑发现程序运行良好,但是当我尝试 ping 所有主机时没有看到任何响应。
mininet> h1x1 ping h1x2
PING 10.0.0.2 (10.0.0.2) 56(84) bytes of data.
From 10.0.0.1 icmp_seq=1 Destination Host Unreachable
From 10.0.0.1 icmp_seq=2 Destination Host Unreachable
From 10.0.0.1 icmp_seq=3 Destination Host Unreachable
From 10.0.0.1 icmp_seq=4 Destination Host Unreachable
From 10.0.0.1 icmp_seq=5 Destination Host Unreachable
From 10.0.0.1 icmp_seq=6 Destination Host Unreachable
因此,我在 ovsk 开关中添加了 arp 和 icmp 规则。即使添加后,ping 也不起作用。
sudo ovs-ofctl add-flow s1x1 priority=65535,arp,in_port=1,vlan_tci=0x0000,dl_src=00:00:00:00:00:01,dl_dst=00:00:00:00:00:02,arp_spa=10.0.0.1,arp_tpa=10.0.0.2,arp_op=2 actions=output:1
sudo ovs-ofctl add-flow s1x2 priority=65535,arp,in_port=1,vlan_tci=0x0000,dl_src=00:00:00:00:00:02,dl_dst=00:00:00:00:00:01,arp_spa=10.0.0.2,arp_tpa=10.0.0.1,arp_op=2,actions=output:1
sudo ovs-ofctl add-flow s1x1 priority=65535,icmp,in_port=1,vlan_tci=0x0000,dl_src=00:00:00:00:00:01,dl_dst=00:00:00:00:00:02,nw_src=10.0.0.1,nw_dst=10.0.0.2,nw_tos=0,icmp_type=8,icmp_code=0,actions=output:1
sudo ovs-ofctl add-flow s1x2 priority=65535,icmp,in_port=1,vlan_tci=0x0000,dl_src=00:00:00:00:00:02,dl_dst=00:00:00:00:00:01,nw_src=10.0.0.2,nw_dst=10.0.0.1,nw_tos=0,icmp_type=8,icmp_code=0,actions=output:1
我不确定还需要添加什么。我也尝试过使用 l2_learning 运行 POX,但是 python 程序崩溃了。
有人可以帮我解决这个问题吗?提前致谢。