[VPNSERVICE-9] Deleting vpn interfaces and ietf interfaces does not remove flows and group entries from switches Created: 29/May/15  Updated: 19/Nov/19  Resolved: 12/Feb/16

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

Type: Bug
Reporter: Sindhuri B Assignee: Hema Gopalakrishnan
Resolution: Cannot Reproduce Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment:

Operating System: All
Platform: All


Attachments: Text File delete_logs.txt    
Severity: normal
External issue ID: 3428

 Description   

Topology:
h1-s1-----s2-h2

Steps:
=====
->Bring up switches as in above.
->Configure vpn service for the two hosts in the same vpn
Configuration is attached.
->Delete the vpn interfaces through rest. config and operational datastores are cleared.

Table 0 and group entries not removed from switches.

s1:
==
mininet> dpctl dump-flows -O OpenFlow13

      • s1 ------------------------------------------------------------------------
        ^[[AOFPST_FLOW reply (OF1.3) (xid=0x2):
        cookie=0x8000001, duration=2993.610s, table=0, n_packets=2, n_bytes=214, priority=10,in_port=2 actions=goto_table:20
        cookie=0x1030000, duration=3410.560s, table=20, n_packets=2, n_bytes=214, priority=0 actions=write_actions(CONTROLLER:65535)
        cookie=0x8000003, duration=3410.560s, table=21, n_packets=0, n_bytes=0, priority=0 actions=write_actions(CONTROLLER:65535)
        mininet> dpctl dump-groups -O OpenFlow13
      • s1 ------------------------------------------------------------------------
        OFPST_GROUP_DESC reply (OF1.3) (xid=0x2):
        group_id=1,type=indirect,bucket=weight:0,actions=output:2
        group_id=2,type=indirect,bucket=weight:0,actions=pop_mpls:0x0800,set_field:00:00:00:00:00:01->eth_dst,output:1
        mininet>

s2:
==
mininet> dpctl dump-flows -O OpenFlow13

      • s2 ------------------------------------------------------------------------
        OFPST_FLOW reply (OF1.3) (xid=0x2):
        cookie=0x8000001, duration=2981.235s, table=0, n_packets=3, n_bytes=321, priority=10,in_port=2 actions=goto_table:20
        cookie=0x1030000, duration=3392.099s, table=20, n_packets=3, n_bytes=321, priority=0 actions=write_actions(CONTROLLER:65535)
        cookie=0x8000003, duration=3392.076s, table=21, n_packets=0, n_bytes=0, priority=0 actions=write_actions(CONTROLLER:65535)
        mininet> dpctl dump-groups -O OpenFlow13
      • s2 ------------------------------------------------------------------------
        OFPST_GROUP_DESC reply (OF1.3) (xid=0x2):
        group_id=4,type=indirect,bucket=weight:0,actions=pop_mpls:0x0800,set_field:00:00:00:00:00:02->eth_dst,output:1
        group_id=3,type=indirect,bucket=weight:0,actions=output:2
        mininet>

Errors:
======
2015-05-29 11:35:55,290 | ERROR | ult-dispatcher-2 | DataTreeChangeListenerActor | 179 - org.opendaylight.controller.sal-distributed-datastore - 1.2.0.SNAPSHOT | Error notifying listener org.opendaylight.controller.md.sal.binding.impl.BindingDOMDataTreeChangeListenerAdapter@39a0ceec
java.lang.NullPointerException: Flow can not be null or empty!
at com.google.common.base.Preconditions.checkNotNull(Preconditions.java:226)[61:com.google.guava:18.0.0]
at org.opendaylight.openflowplugin.applications.frm.impl.FlowForwarder.tableIdValidationPrecondition(FlowForwarder.java:161)[205:org.opendaylight.openflowplugin.applications.forwardingrules-manager:0.1.0.SNAPSHOT]
at org.opendaylight.openflowplugin.applications.frm.impl.FlowForwarder.remove(FlowForwarder.java:96)[205:org.opendaylight.openflowplugin.applications.forwardingrules-manager:0.1.0.SNAPSHOT]
at org.opendaylight.openflowplugin.applications.frm.impl.FlowForwarder.remove(FlowForwarder.java:47)[205:org.opendaylight.openflowplugin.applications.forwardingrules-manager:0.1.0.SNAPSHOT]
at org.opendaylight.openflowplugin.applications.frm.impl.AbstractListeningCommiter.onDataTreeChanged(AbstractListeningCommiter.java:52)[205:org.opendaylight.openflowplugin.applications.forwardingrules-manager:0.1.0.SNAPSHOT]
at org.opendaylight.controller.md.sal.binding.impl.BindingDOMDataTreeChangeListenerAdapter.onDataTreeChanged(BindingDOMDataTreeChangeListenerAdapter.java:41)[157:org.opendaylight.controller.sal-binding-broker-impl:1.2.0.SNAPSHOT]
at org.opendaylight.controller.cluster.datastore.DataTreeChangeListenerActor.dataChanged(DataTreeChangeListenerActor.java:53)[179:org.opendaylight.controller.sal-distributed-datastore:1.2.0.SNAPSHOT]
at org.opendaylight.controller.cluster.datastore.DataTreeChangeListenerActor.handleReceive(DataTreeChangeListenerActor.java:37)[179:org.opendaylight.controller.sal-distributed-datastore:1.2.0.SNAPSHOT]
at org.opendaylight.controller.cluster.common.actor.AbstractUntypedActor.onReceive(AbstractUntypedActor.java:34)[171:org.opendaylight.controller.sal-clustering-commons:1.2.0.SNAPSHOT]
at akka.actor.UntypedActor$$anonfun$receive$1.applyOrElse(UntypedActor.scala:167)[164:com.typesafe.akka.actor:2.3.10]
at akka.actor.Actor$class.aroundReceive(Actor.scala:467)[164:com.typesafe.akka.actor:2.3.10]
at akka.actor.UntypedActor.aroundReceive(UntypedActor.scala:97)[164:com.typesafe.akka.actor:2.3.10]
at akka.actor.ActorCell.receiveMessage(ActorCell.scala:516)[164:com.typesafe.akka.actor:2.3.10]
at akka.actor.ActorCell.invoke(ActorCell.scala:487)[164:com.typesafe.akka.actor:2.3.10]
at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:254)[164:com.typesafe.akka.actor:2.3.10]
at akka.dispatch.Mailbox.run(Mailbox.scala:221)[164:com.typesafe.akka.actor:2.3.10]
at akka.dispatch.Mailbox.exec(Mailbox.scala:231)[164:com.typesafe.akka.actor:2.3.10]
at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)[161:org.scala-lang.scala-library:2.10.4.v20140209-180020-VFINAL-b66a39653b]
at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)[161:org.scala-lang.scala-library:2.10.4.v20140209-180020-VFINAL-b66a39653b]
at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)[161:org.scala-lang.scala-library:2.10.4.v20140209-180020-VFINAL-b66a39653b]
at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)[161:org.scala-lang.scala-library:2.10.4.v20140209-180020-VFINAL-b66a39653b]
2015-05-29 11:35:55,530 | DEBUG | lt-dispatcher-26 | MDSALManager | 210 - org.opendaylight.vpnservice.mdsalutil-impl - 0.1.0.SNAPSHOT | Delete Flow – Committedsuccessfully
2015-05-29 11:35:55,530 | DEBUG | lt-dispatcher-26 | FibManager | 215 - org.opendaylight.vpnservice.fibmanager-impl - 0.1.0.SNAPSHOT | Successfully delete fib entry for 10.0.0.2 vpnId 1
2015-05-29 11:35:55,530 | DEBUG | ult-dispatcher-4 | FibManager | 215 - org.opendaylight.vpnservice.fibmanager-impl - 0.1.0.SNAPSHOT | deleting route 10.0.0.1 1
2015-05-29 11:35:55,531 | DEBUG | ult-dispatcher-4 | FibManager | 215 - org.opendaylight.vpnservice.fibmanager-impl - 0.1.0.SNAPSHOT | Adding route to DPN. ip 10.0.0.1 masklen 32
2015-05-29 11:35:55,531 | DEBUG | ult-dispatcher-4 | FibManager | 215 - org.opendaylight.vpnservice.fibmanager-impl - 0.1.0.SNAPSHOT | LFIB Entry for dpID 2 : label : 2 group 2 modified successfully {}
2015-05-29 11:35:55,535 | ERROR | lt-dispatcher-14 | DataTreeChangeListenerActor | 179 - org.opendaylight.controller.sal-distributed-datastore - 1.2.0.SNAPSHOT | Error notifying listener org.opendaylight.controller.md.sal.binding.impl.BindingDOMDataTreeChangeListenerAdapter@39a0ceec
java.lang.NullPointerException: Flow can not be null or empty!
at com.google.common.base.Preconditions.checkNotNull(Preconditions.java:226)[61:com.google.guava:18.0.0]
at org.opendaylight.openflowplugin.applications.frm.impl.FlowForwarder.tableIdValidationPrecondition(FlowForwarder.java:161)[205:org.opendaylight.openflowplugin.applications.forwardingrules-manager:0.1.0.SNAPSHOT]
at org.opendaylight.openflowplugin.applications.frm.impl.FlowForwarder.remove(FlowForwarder.java:96)[205:org.opendaylight.openflowplugin.applications.forwardingrules-manager:0.1.0.SNAPSHOT]
at org.opendaylight.openflowplugin.applications.frm.impl.FlowForwarder.remove(FlowForwarder.java:47)[205:org.opendaylight.openflowplugin.applications.forwardingrules-manager:0.1.0.SNAPSHOT]
at org.opendaylight.openflowplugin.applications.frm.impl.AbstractListeningCommiter.onDataTreeChanged(AbstractListeningCommiter.java:52)[205:org.opendaylight.openflowplugin.applications.forwardingrules-manager:0.1.0.SNAPSHOT]
at org.opendaylight.controller.md.sal.binding.impl.BindingDOMDataTreeChangeListenerAdapter.onDataTreeChanged(BindingDOMDataTreeChangeListenerAdapter.java:41)[157:org.opendaylight.controller.sal-binding-broker-impl:1.2.0.SNAPSHOT]
at org.opendaylight.controller.cluster.datastore.DataTreeChangeListenerActor.dataChanged(DataTreeChangeListenerActor.java:53)[179:org.opendaylight.controller.sal-distributed-datastore:1.2.0.SNAPSHOT]
at org.opendaylight.controller.cluster.datastore.DataTreeChangeListenerActor.handleReceive(DataTreeChangeListenerActor.java:37)[179:org.opendaylight.controller.sal-distributed-datastore:1.2.0.SNAPSHOT]
at org.opendaylight.controller.cluster.common.actor.AbstractUntypedActor.onReceive(AbstractUntypedActor.java:34)[171:org.opendaylight.controller.sal-clustering-commons:1.2.0.SNAPSHOT]
at akka.actor.UntypedActor$$anonfun$receive$1.applyOrElse(UntypedActor.scala:167)[164:com.typesafe.akka.actor:2.3.10]
at akka.actor.Actor$class.aroundReceive(Actor.scala:467)[164:com.typesafe.akka.actor:2.3.10]
at akka.actor.UntypedActor.aroundReceive(UntypedActor.scala:97)[164:com.typesafe.akka.actor:2.3.10]
at akka.actor.ActorCell.receiveMessage(ActorCell.scala:516)[164:com.typesafe.akka.actor:2.3.10]
at akka.actor.ActorCell.invoke(ActorCell.scala:487)[164:com.typesafe.akka.actor:2.3.10]
at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:254)[164:com.typesafe.akka.actor:2.3.10]
at akka.dispatch.Mailbox.run(Mailbox.scala:221)[164:com.typesafe.akka.actor:2.3.10]
at akka.dispatch.Mailbox.exec(Mailbox.scala:231)[164:com.typesafe.akka.actor:2.3.10]
at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)[161:org.scala-lang.scala-library:2.10.4.v20140209-180020-VFINAL-b66a39653b]
at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)[161:org.scala-lang.scala-library:2.10.4.v20140209-180020-VFINAL-b66a39653b]
at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)[161:org.scala-lang.scala-library:2.10.4.v20140209-180020-VFINAL-b66a39653b]
at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)[161:org.scala-lang.scala-library:2.10.4.v20140209-180020-VFINAL-b66a39653b]

Attaching logs and captures.



 Comments   
Comment by Sindhuri B [ 01/Jun/15 ]

Attachment delete_logs.txt has been added with description: logs

Comment by Vishal Thapar [ 03/Jun/15 ]

https://git.opendaylight.org/gerrit/#/c/21814/

Comment by Vishal Thapar [ 04/Jun/15 ]

Fixed by https://git.opendaylight.org/gerrit/#/c/21814/

Still seeing some issue with groups not being deleted. Need to see if it is OFPluing issue, OVS issue or VPNservice issue. Assigned to Hema for investigation.

Comment by Sindhuri B [ 24/Jun/15 ]

Workaround is to delete the flows from config datastore through restconf.
Reducing the importance due to available workaround.

Comment by Abhinav Gupta [ 26/Jun/15 ]

Table 0 entry was not getting deleted upon deleting tunnel interface.
Fixed by: https://git.opendaylight.org/gerrit/#/c/23274/

Comment by Hema Gopalakrishnan [ 12/Feb/16 ]

Is this bug valid in Beryllium as its port based tunnelling. ITM and interface manager code is very different

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