|
General Info:
mininet version: 2.1.0
ovs_version: "2.0.0"
controller: distributions-virtualization-0.2.0-20140709.101228-22-osgipackage.zip
Related to: CONTROLLER-618
#############################################################################
Issues:
1- LLDP packets flood
2- wrong topology discovery
3- high CPU usage on controller and OVS nodes
4- Exceptions in controller (related?)
5- No flow rules in OVS
#############################################################################
Steps to reproduce
mininet$ wget https://raw.githubusercontent.com/aryantaheri/miniexp/master/topo/core.py
mininet$ sudo mn --custom ./core.py --topo core1 --controller=remote,ip=192.168.10.10 --switch ovsk,protocols=OpenFlow13
controller$ ./run.sh -virt ovsdb -of13
#############################################################################
Result:
see wrong-topo2.png in attachments
osgi> printNodeEdges
...
OF|00:00:00:00:00:00:00:04 (OF|2@OF|00:00:00:00:00:00:00:02->OF|2@OF|00:00:00:00:00:00:00:04)
OF|00:00:00:00:00:00:00:04 (OF|1@OF|00:00:00:00:00:00:00:03->OF|2@OF|00:00:00:00:00:00:00:04)
OF|00:00:00:00:00:00:00:04 (OF|2@OF|00:00:00:00:00:00:00:03->OF|3@OF|00:00:00:00:00:00:00:04)
OF|00:00:00:00:00:00:00:04 (OF|1@OF|00:00:00:00:00:00:00:04->OF|3@OF|00:00:00:00:00:00:00:04)
OF|00:00:00:00:00:00:00:04 (OF|2@OF|00:00:00:00:00:00:00:02->OF|3@OF|00:00:00:00:00:00:00:04)
OF|00:00:00:00:00:00:00:04 (OF|1@OF|00:00:00:00:00:00:00:03->OF|3@OF|00:00:00:00:00:00:00:04)
OF|00:00:00:00:00:00:00:04 (OF|1@OF|00:00:00:00:00:00:00:03->OF|1@OF|00:00:00:00:00:00:00:04)
OF|00:00:00:00:00:00:00:04 (OF|2@OF|00:00:00:00:00:00:00:02->OF|1@OF|00:00:00:00:00:00:00:04)
OF|00:00:00:00:00:00:00:04 (OF|3@OF|00:00:00:00:00:00:00:04->OF|1@OF|00:00:00:00:00:00:00:03)
OF|00:00:00:00:00:00:00:04 (OF|3@OF|00:00:00:00:00:00:00:04->OF|2@OF|00:00:00:00:00:00:00:02)
OF|00:00:00:00:00:00:00:04 (OF|1@OF|00:00:00:00:00:00:00:02->OF|3@OF|00:00:00:00:00:00:00:04)
OF|00:00:00:00:00:00:00:04 (OF|2@OF|00:00:00:00:00:00:00:01->OF|3@OF|00:00:00:00:00:00:00:04)
OF|00:00:00:00:00:00:00:04 (OF|2@OF|00:00:00:00:00:00:00:01->OF|1@OF|00:00:00:00:00:00:00:04)
OF|00:00:00:00:00:00:00:04 (OF|1@OF|00:00:00:00:00:00:00:02->OF|1@OF|00:00:00:00:00:00:00:04)
OF|00:00:00:00:00:00:00:04 (OF|3@OF|00:00:00:00:00:00:00:03->OF|3@OF|00:00:00:00:00:00:00:04)
OF|00:00:00:00:00:00:00:04 (OF|2@OF|00:00:00:00:00:00:00:04->OF|3@OF|00:00:00:00:00:00:00:04)
OF|00:00:00:00:00:00:00:04 (OF|2@OF|00:00:00:00:00:00:00:03->OF|1@OF|00:00:00:00:00:00:00:04)
OF|00:00:00:00:00:00:00:04 (OF|1@OF|00:00:00:00:00:00:00:04->OF|1@OF|00:00:00:00:00:00:00:04)
OF|00:00:00:00:00:00:00:04 (OF|1@OF|00:00:00:00:00:00:00:04->OF|2@OF|00:00:00:00:00:00:00:03)
OF|00:00:00:00:00:00:00:04 (OF|1@OF|00:00:00:00:00:00:00:01->OF|3@OF|00:00:00:00:00:00:00:04)
OF|00:00:00:00:00:00:00:04 (OF|1@OF|00:00:00:00:00:00:00:01->OF|1@OF|00:00:00:00:00:00:00:04)
OF|00:00:00:00:00:00:00:04 (OF|3@OF|00:00:00:00:00:00:00:04->OF|2@OF|00:00:00:00:00:00:00:01)
OF|00:00:00:00:00:00:00:04 (OF|3@OF|00:00:00:00:00:00:00:04->OF|1@OF|00:00:00:00:00:00:00:02)
OF|00:00:00:00:00:00:00:04 (OF|3@OF|00:00:00:00:00:00:00:04->OF|1@OF|00:00:00:00:00:00:00:01)
OF|00:00:00:00:00:00:00:04 (OF|1@OF|00:00:00:00:00:00:00:04->OF|1@OF|00:00:00:00:00:00:00:01)
OF|00:00:00:00:00:00:00:04 (OF|1@OF|00:00:00:00:00:00:00:04->OF|2@OF|00:00:00:00:00:00:00:01)
OF|00:00:00:00:00:00:00:04 (OF|1@OF|00:00:00:00:00:00:00:04->OF|1@OF|00:00:00:00:00:00:00:02)
OF|00:00:00:00:00:00:00:04 (OF|3@OF|00:00:00:00:00:00:00:04->OF|3@OF|00:00:00:00:00:00:00:04)
OF|00:00:00:00:00:00:00:04 (OF|3@OF|00:00:00:00:00:00:00:04->OF|2@OF|00:00:00:00:00:00:00:03)
OF|00:00:00:00:00:00:00:04 (OF|3@OF|00:00:00:00:00:00:00:04->OF|1@OF|00:00:00:00:00:00:00:04)
OF|00:00:00:00:00:00:00:04 (OF|2@OF|00:00:00:00:00:00:00:04->OF|2@OF|00:00:00:00:00:00:00:01)
OF|00:00:00:00:00:00:00:04 (OF|2@OF|00:00:00:00:00:00:00:04->OF|1@OF|00:00:00:00:00:00:00:02)
OF|00:00:00:00:00:00:00:04 (OF|2@OF|00:00:00:00:00:00:00:04->OF|1@OF|00:00:00:00:00:00:00:01)
OF|00:00:00:00:00:00:00:04 (OF|2@OF|00:00:00:00:00:00:00:04->OF|2@OF|00:00:00:00:00:00:00:03)
OF|00:00:00:00:00:00:00:04 (OF|3@OF|00:00:00:00:00:00:00:03->OF|1@OF|00:00:00:00:00:00:00:04)
OF|00:00:00:00:00:00:00:04 (OF|2@OF|00:00:00:00:00:00:00:04->OF|1@OF|00:00:00:00:00:00:00:04)
OF|00:00:00:00:00:00:00:04 (OF|1@OF|00:00:00:00:00:00:00:01->OF|2@OF|00:00:00:00:00:00:00:04)
OF|00:00:00:00:00:00:00:04 (OF|3@OF|00:00:00:00:00:00:00:04->OF|2@OF|00:00:00:00:00:00:00:04)
OF|00:00:00:00:00:00:00:04 (OF|3@OF|00:00:00:00:00:00:00:04->OF|3@OF|00:00:00:00:00:00:00:03)
OF|00:00:00:00:00:00:00:04 (OF|1@OF|00:00:00:00:00:00:00:04->OF|1@OF|00:00:00:00:00:00:00:03)
OF|00:00:00:00:00:00:00:04 (OF|1@OF|00:00:00:00:00:00:00:04->OF|2@OF|00:00:00:00:00:00:00:02)
OF|00:00:00:00:00:00:00:04 (OF|2@OF|00:00:00:00:00:00:00:04->OF|2@OF|00:00:00:00:00:00:00:04)
OF|00:00:00:00:00:00:00:04 (OF|3@OF|00:00:00:00:00:00:00:03->OF|2@OF|00:00:00:00:00:00:00:04)
OF|00:00:00:00:00:00:00:04 (OF|2@OF|00:00:00:00:00:00:00:04->OF|3@OF|00:00:00:00:00:00:00:03)
OF|00:00:00:00:00:00:00:04 (OF|2@OF|00:00:00:00:00:00:00:04->OF|1@OF|00:00:00:00:00:00:00:03)
OF|00:00:00:00:00:00:00:04 (OF|2@OF|00:00:00:00:00:00:00:04->OF|2@OF|00:00:00:00:00:00:00:02)
OF|00:00:00:00:00:00:00:04 (OF|1@OF|00:00:00:00:00:00:00:02->OF|2@OF|00:00:00:00:00:00:00:04)
OF|00:00:00:00:00:00:00:04 (OF|2@OF|00:00:00:00:00:00:00:01->OF|2@OF|00:00:00:00:00:00:00:04)
OF|00:00:00:00:00:00:00:04 (OF|1@OF|00:00:00:00:00:00:00:04->OF|2@OF|00:00:00:00:00:00:00:04)
OF|00:00:00:00:00:00:00:04 (OF|2@OF|00:00:00:00:00:00:00:03->OF|2@OF|00:00:00:00:00:00:00:04)
OF|00:00:00:00:00:00:00:04 (OF|1@OF|00:00:00:00:00:00:00:04->OF|3@OF|00:00:00:00:00:00:00:03)
...
Exception:
2014-07-10 13:51:13.715 CEST [FlowCapableTopologyExporter-flow:1] ERROR o.o.m.c.t.manager.OperationProcessor - Topology export transaction DOM-122167 failed
org.opendaylight.controller.md.sal.common.api.data.OptimisticLockFailedException: Optimistic lock failed.
at org.opendaylight.controller.md.sal.dom.store.impl.InMemoryDOMDataStore$ThreePhaseCommitImpl$1.call(InMemoryDOMDataStore.java:321) ~[na:na]
at org.opendaylight.controller.md.sal.dom.store.impl.InMemoryDOMDataStore$ThreePhaseCommitImpl$1.call(InMemoryDOMDataStore.java:311) ~[na:na]
at java.util.concurrent.FutureTask.run(FutureTask.java:262) ~[na:1.7.0_60]
at com.google.common.util.concurrent.MoreExecutors$SameThreadExecutorService.execute(MoreExecutors.java:293) ~[na:na]
at com.google.common.util.concurrent.AbstractListeningExecutorService.submit(AbstractListeningExecutorService.java:61) ~[na:na]
at org.opendaylight.controller.md.sal.dom.store.impl.InMemoryDOMDataStore$ThreePhaseCommitImpl.canCommit(InMemoryDOMDataStore.java:311) ~[na:na]
at org.opendaylight.controller.md.sal.dom.broker.impl.DOMDataCommitCoordinatorImpl$CommitCoordinationTask.canCommitAll(DOMDataCommitCoordinatorImpl.java:345) ~[na:na]
at org.opendaylight.controller.md.sal.dom.broker.impl.DOMDataCommitCoordinatorImpl$CommitCoordinationTask.canCommitBlocking(DOMDataCommitCoordinatorImpl.java:187) ~[na:na]
at org.opendaylight.controller.md.sal.dom.broker.impl.DOMDataCommitCoordinatorImpl$CommitCoordinationTask.call(DOMDataCommitCoordinatorImpl.java:164) ~[na:na]
at org.opendaylight.controller.md.sal.dom.broker.impl.DOMDataCommitCoordinatorImpl$CommitCoordinationTask.call(DOMDataCommitCoordinatorImpl.java:144) ~[na:na]
at java.util.concurrent.FutureTask.run(FutureTask.java:262) ~[na:1.7.0_60]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) ~[na:1.7.0_60]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) ~[na:1.7.0_60]
at java.lang.Thread.run(Thread.java:745) [na:1.7.0_60]
Caused by: org.opendaylight.yangtools.yang.data.api.schema.tree.ConflictingModificationAppliedException: Node was deleted by other transaction.
at org.opendaylight.yangtools.yang.data.impl.schema.tree.SchemaAwareApplyOperation.checkConflicting(SchemaAwareApplyOperation.java:80) ~[na:na]
at org.opendaylight.yangtools.yang.data.impl.schema.tree.NormalizedNodeContainerModificationStrategy.checkSubtreeModificationApplicable(NormalizedNodeContainerModificationStrategy.java:167) ~[na:na]
at org.opendaylight.yangtools.yang.data.impl.schema.tree.SchemaAwareApplyOperation.checkApplicable(SchemaAwareApplyOperation.java:131) ~[na:na]
at org.opendaylight.yangtools.yang.data.impl.schema.tree.NormalizedNodeContainerModificationStrategy.checkChildPreconditions(NormalizedNodeContainerModificationStrategy.java:178) ~[na:na]
at org.opendaylight.yangtools.yang.data.impl.schema.tree.NormalizedNodeContainerModificationStrategy.checkMergeApplicable(NormalizedNodeContainerModificationStrategy.java:186) ~[na:na]
at org.opendaylight.yangtools.yang.data.impl.schema.tree.SchemaAwareApplyOperation.checkApplicable(SchemaAwareApplyOperation.java:137) ~[na:na]
at org.opendaylight.yangtools.yang.data.impl.schema.tree.NormalizedNodeContainerModificationStrategy.checkChildPreconditions(NormalizedNodeContainerModificationStrategy.java:178) ~[na:na]
at org.opendaylight.yangtools.yang.data.impl.schema.tree.NormalizedNodeContainerModificationStrategy.checkSubtreeModificationApplicable(NormalizedNodeContainerModificationStrategy.java:168) ~[na:na]
at org.opendaylight.yangtools.yang.data.impl.schema.tree.SchemaAwareApplyOperation.checkApplicable(SchemaAwareApplyOperation.java:131) ~[na:na]
at org.opendaylight.yangtools.yang.data.impl.schema.tree.NormalizedNodeContainerModificationStrategy.checkChildPreconditions(NormalizedNodeContainerModificationStrategy.java:178) ~[na:na]
at org.opendaylight.yangtools.yang.data.impl.schema.tree.NormalizedNodeContainerModificationStrategy.checkSubtreeModificationApplicable(NormalizedNodeContainerModificationStrategy.java:168) ~[na:na]
at org.opendaylight.yangtools.yang.data.impl.schema.tree.SchemaAwareApplyOperation.checkApplicable(SchemaAwareApplyOperation.java:131) ~[na:na]
at org.opendaylight.yangtools.yang.data.impl.schema.tree.NormalizedNodeContainerModificationStrategy.checkChildPreconditions(NormalizedNodeContainerModificationStrategy.java:178) ~[na:na]
at org.opendaylight.yangtools.yang.data.impl.schema.tree.NormalizedNodeContainerModificationStrategy.checkSubtreeModificationApplicable(NormalizedNodeContainerModificationStrategy.java:168) ~[na:na]
at org.opendaylight.yangtools.yang.data.impl.schema.tree.SchemaAwareApplyOperation.checkApplicable(SchemaAwareApplyOperation.java:131) ~[na:na]
at org.opendaylight.yangtools.yang.data.impl.schema.tree.NormalizedNodeContainerModificationStrategy.checkChildPreconditions(NormalizedNodeContainerModificationStrategy.java:178) ~[na:na]
at org.opendaylight.yangtools.yang.data.impl.schema.tree.NormalizedNodeContainerModificationStrategy.checkSubtreeModificationApplicable(NormalizedNodeContainerModificationStrategy.java:168) ~[na:na]
at org.opendaylight.yangtools.yang.data.impl.schema.tree.SchemaAwareApplyOperation.checkApplicable(SchemaAwareApplyOperation.java:131) ~[na:na]
at org.opendaylight.yangtools.yang.data.impl.schema.tree.InMemoryDataTree.validate(InMemoryDataTree.java:86) ~[na:na]
at org.opendaylight.controller.md.sal.dom.store.impl.InMemoryDOMDataStore$ThreePhaseCommitImpl$1.call(InMemoryDOMDataStore.java:315) ~[na:na]
mininet$ sudo ovs-appctl bridge/dump-flows s3
duration=22s, priority=180005, n_packets=0, n_bytes=0, priority=180005,arp,arp_tpa=192.168.10.10,arp_op=2,actions=NORMAL
duration=22s, priority=180000, n_packets=0, n_bytes=0, priority=180000,udp,in_port=LOCAL,dl_src=aa:38:ca:cd:81:4d,tp_src=68,tp_dst=67,actions=NORMAL
duration=22s, priority=180008, n_packets=0, n_bytes=0, priority=180008,tcp,nw_src=192.168.10.10,tp_src=6633,actions=NORMAL
duration=22s, priority=180006, n_packets=0, n_bytes=0, priority=180006,arp,arp_spa=192.168.10.10,arp_op=1,actions=NORMAL
duration=22s, priority=180007, n_packets=0, n_bytes=0, priority=180007,tcp,nw_dst=192.168.10.10,tp_dst=6633,actions=NORMAL
duration=22s, priority=180002, n_packets=0, n_bytes=0, priority=180002,arp,dl_src=aa:38:ca:cd:81:4d,arp_op=1,actions=NORMAL
duration=22s, priority=180004, n_packets=0, n_bytes=0, priority=180004,arp,dl_src=52:54:00:93:9a:b3,arp_op=1,actions=NORMAL
duration=22s, priority=180003, n_packets=0, n_bytes=0, priority=180003,arp,dl_dst=52:54:00:93:9a:b3,arp_op=2,actions=NORMAL
duration=22s, priority=180001, n_packets=0, n_bytes=0, priority=180001,arp,dl_dst=aa:38:ca:cd:81:4d,arp_op=2,actions=NORMAL
table_id=254, duration=22s, priority=0, n_packets=0, n_bytes=0, priority=0,reg0=0x3,actions=drop
table_id=254, duration=22s, priority=0, n_packets=31, n_bytes=2295, priority=0,reg0=0x1,actions=controller(reason=no_match)
table_id=254, duration=22s, priority=0, n_packets=0, n_bytes=0, priority=0,reg0=0x2,actions=drop
mininet$ sudo tcpdump -i s2-eth1
05:00:07.153632 LLDP, length 49: openflow:3
05:00:07.154639 LLDP, length 49: openflow:1
05:00:07.154921 LLDP, length 49: openflow:1
05:00:07.157869 LLDP, length 49: openflow:2
05:00:07.158061 LLDP, length 49: openflow:2
05:00:07.158219 LLDP, length 49: openflow:1
05:00:07.160828 LLDP, length 49: openflow:2
05:00:07.161023 LLDP, length 49: openflow:4
05:00:07.161876 LLDP, length 49: openflow:2
05:00:07.162123 LLDP, length 49: openflow:4
05:00:07.162260 LLDP, length 49: openflow:4
05:00:07.163506 LLDP, length 49: openflow:4
05:00:07.164788 LLDP, length 49: openflow:4
...
#############################################################################
Expected Results:
see right-topo2.png
mininet> net
s1 lo: s1-eth1:s3-eth3 s1-eth2:s4-eth3
s2 lo: s2-eth1:s4-eth1 s2-eth2:s3-eth1
s3 lo: s3-eth1:s2-eth2 s3-eth2:s4-eth2 s3-eth3:s1-eth1
s4 lo: s4-eth1:s2-eth1 s4-eth2:s3-eth2 s4-eth3:s1-eth2
c0
osgi> printNodeEdges
Node Edge
OF|00:00:00:00:00:00:00:02 (OF|1@OF|00:00:00:00:00:00:00:02->OF|1@OF|00:00:00:00:00:00:00:04)
OF|00:00:00:00:00:00:00:02 (OF|1@OF|00:00:00:00:00:00:00:04->OF|1@OF|00:00:00:00:00:00:00:02)
OF|00:00:00:00:00:00:00:02 (OF|2@OF|00:00:00:00:00:00:00:02->OF|1@OF|00:00:00:00:00:00:00:03)
OF|00:00:00:00:00:00:00:02 (OF|1@OF|00:00:00:00:00:00:00:03->OF|2@OF|00:00:00:00:00:00:00:02)
OF|00:00:00:00:00:00:00:03 (OF|1@OF|00:00:00:00:00:00:00:01->OF|3@OF|00:00:00:00:00:00:00:03)
OF|00:00:00:00:00:00:00:03 (OF|3@OF|00:00:00:00:00:00:00:03->OF|1@OF|00:00:00:00:00:00:00:01)
OF|00:00:00:00:00:00:00:03 (OF|2@OF|00:00:00:00:00:00:00:04->OF|2@OF|00:00:00:00:00:00:00:03)
OF|00:00:00:00:00:00:00:03 (OF|2@OF|00:00:00:00:00:00:00:03->OF|2@OF|00:00:00:00:00:00:00:04)
OF|00:00:00:00:00:00:00:03 (OF|2@OF|00:00:00:00:00:00:00:02->OF|1@OF|00:00:00:00:00:00:00:03)
OF|00:00:00:00:00:00:00:03 (OF|1@OF|00:00:00:00:00:00:00:03->OF|2@OF|00:00:00:00:00:00:00:02)
OF|00:00:00:00:00:00:00:01 (OF|3@OF|00:00:00:00:00:00:00:04->OF|2@OF|00:00:00:00:00:00:00:01)
OF|00:00:00:00:00:00:00:01 (OF|1@OF|00:00:00:00:00:00:00:01->OF|3@OF|00:00:00:00:00:00:00:03)
OF|00:00:00:00:00:00:00:01 (OF|3@OF|00:00:00:00:00:00:00:03->OF|1@OF|00:00:00:00:00:00:00:01)
OF|00:00:00:00:00:00:00:01 (OF|2@OF|00:00:00:00:00:00:00:01->OF|3@OF|00:00:00:00:00:00:00:04)
OF|00:00:00:00:00:00:00:04 (OF|1@OF|00:00:00:00:00:00:00:02->OF|1@OF|00:00:00:00:00:00:00:04)
OF|00:00:00:00:00:00:00:04 (OF|3@OF|00:00:00:00:00:00:00:04->OF|2@OF|00:00:00:00:00:00:00:01)
OF|00:00:00:00:00:00:00:04 (OF|2@OF|00:00:00:00:00:00:00:01->OF|3@OF|00:00:00:00:00:00:00:04)
OF|00:00:00:00:00:00:00:04 (OF|2@OF|00:00:00:00:00:00:00:04->OF|2@OF|00:00:00:00:00:00:00:03)
OF|00:00:00:00:00:00:00:04 (OF|1@OF|00:00:00:00:00:00:00:04->OF|1@OF|00:00:00:00:00:00:00:02)
OF|00:00:00:00:00:00:00:04 (OF|2@OF|00:00:00:00:00:00:00:03->OF|2@OF|00:00:00:00:00:00:00:04)
|