[OPNFLWPLUG-215] LLDP packet flood and wrong topology discovery in OpenFlow13 for topologies with redundant edges Created: 10/Jul/14  Updated: 27/Sep/21  Resolved: 05/May/15

Status: Resolved
Project: OpenFlowPlugin
Component/s: General
Affects Version/s: None
Fix Version/s: None

Type: Bug
Reporter: Aryan Assignee: Unassigned
Resolution: Done Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment:

Operating System: Linux
Platform: PC


Attachments: File ropos2.tar    
External issue ID: 1350

 Description   

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)



 Comments   
Comment by Aryan [ 10/Jul/14 ]

Attachment ropos2.tar has been added with description: right and wrong topologies

Comment by Carol Sanders [ 04/May/15 ]

This bug is part of the project to Move all ADSAL associated component bugs to ADSAL.

Comment by Tony Tkacik [ 05/May/15 ]

Please check if this is still correct

Generated at Wed Feb 07 20:31:52 UTC 2024 using Jira 8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d.