关于SimpleFowarding转发问题
求教几个问题:
1.我启动osgi后,连接mininet,然后mininet两台主机发起ping,然后在osgi中把simpleForwarding停掉,但是会发现mininet ping还在继续,这是因为流表被下发了,默认不会流表超时吗?
mininet> h1 ping h2
PING 10.0.0.2 (10.0.0.2) 56(84) bytes of data.
64 bytes from 10.0.0.2: icmp_seq=1 ttl=64 time=0.156 ms
64 bytes from 10.0.0.2: icmp_seq=2 ttl=64 time=0.120 ms
64 bytes from 10.0.0.2: icmp_seq=3 ttl=64 time=0.121 ms
64 bytes from 10.0.0.2: icmp_seq=4 ttl=64 time=0.114 ms
64 bytes from 10.0.0.2: icmp_seq=5 ttl=64 time=0.123 ms
64 bytes from 10.0.0.2: icmp_seq=6 ttl=64 time=0.120 ms
64 bytes from 10.0.0.2: icmp_seq=7 ttl=64 time=0.109 ms
- 我首先停掉simpleForwarding然后发起mininet连接,连接完毕后再启动simpleForwarding,此时发起ping,结果显示时间跟之前不一样:
mininet> h1 ping h2
PING 10.0.0.2 (10.0.0.2) 56(84) bytes of data.
64 bytes from 10.0.0.2: icmp_seq=153 ttl=64 time=14.9 ms
64 bytes from 10.0.0.2: icmp_seq=154 ttl=64 time=9.80 ms
64 bytes from 10.0.0.2: icmp_seq=155 ttl=64 time=10.6 ms
64 bytes from 10.0.0.2: icmp_seq=156 ttl=64 time=9.95 ms
64 bytes from 10.0.0.2: icmp_seq=157 ttl=64 time=10.6 ms
64 bytes from 10.0.0.2: icmp_seq=158 ttl=64 time=11.0 ms
64 bytes from 10.0.0.2: icmp_seq=159 ttl=64 time=10.6 ms
64 bytes from 10.0.0.2: icmp_seq=160 ttl=64 time=9.43 ms
64 bytes from 10.0.0.2: icmp_seq=161 ttl=64 time=8.31 ms
明显多了好久,想请教一下原因。
3.我未在simpleForwarding源码中看到流表下发的地方,也没看到洪泛,这些不是在simpleForwarding中处理吗?
2 个回复
君子一诺 - 软件测试外加小小编一枚
赞同来自: wty 、moxiaoji
针对第一个问题,交换机中有流表产生,即使在控制器里停掉simpleForwarding,但是交换机里此时还有流表,ping还是能ping的通的,而且流表虽然超时了,但是主机一直在ping,流表还是会有的,所以一直通信;
第二个,可能之前一直在请求没有响应,但是请求时间一直在减少,到后面的话,时间应该是正常的;
第三个,流表下发及泛洪并不是你所说的simpleForwarding中,是要调用上报消息,原理的话,你可以看看这篇文章http://www.open-open.com/lib/v ... .html
回答的不一定准确(^__^) ……
gnagihs
赞同来自: wty
关于第二个问题,
从ping的响应时间来看,第一种情况是交换机中存在流表。而第二种情况是交换机中并无流表,ping包都转发给controller再由controller转发回交换机。
如何验证:
开启osgi
启动mininet虚拟机
ssh <ip of mininet> -X 连接虚拟机
在mininet中创建一个新的网络拓扑
这里可以在mininet中使用指令:sh ovs-ofctl dump-flows s1 来显示交换机s1中的流表 (ps del-flows 可删除流表)
并且:
在mininet中开启wireshark抓包可以观察在两种情况下mininet是否将packets转发至controller