Uploaded image for project: 'OpenFlowPlugin'
  1. OpenFlowPlugin
  2. OPNFLWPLUG-319

learning switch fails to install learnt flows

    XMLWordPrintable

Details

    • Bug
    • Status: Resolved
    • Resolution: Done
    • None
    • None
    • General
    • None
    • Operating System: All
      Platform: All

    • 2407

    Description

      When using the learning switch bundle to install flows reactively, an error is generated which prevents the learnt flows to be installed on the switch. This causes every packet to traverse the controller.

      To replicate this scenario:
      1. Build the openflowplugin/distribution/base and openflowplugin/samples/learningswitch at master
      2. Delete simple forwarding bundle at /plugin/org.opendaylight.controller.samples.simpleforwarding-0.5.0.jar.
      3. Install the learning switch bundle learning-switch-0.1.0-SNAPSHOT.jar at /plugin
      4. Run the controller, mininet with topo=single,2
      5. ping h2 from h1.
      6. Print the flow table of s1 with ovs-ofctl. s1 only has the default entry (goto controller) installed without any learned flows installed.

      The cause may be a data precondition failure as listed in the following part of the log.

      2014-11-18 11:50:24.468 EST [md-sal-binding-notification-3] DEBUG o.o.o.l.LearningSwitchHandler - Received packet via match: Match [_inPort=Uri[_value=openflow:1:2], augmentation=[]]
      2014-11-18 11:50:24.468 EST [md-sal-binding-notification-3] DEBUG o.o.o.l.LearningSwitchHandler - Received packet from MAC match: MacAddress [_value=00:00:00:00:00:02], ingress: Uri [_value=openflow:1:2]
      2014-11-18 11:50:24.468 EST [md-sal-binding-notification-3] DEBUG o.o.o.l.LearningSwitchHandler - Received packet to MAC match: MacAddress [_value=00:00:00:00:00:01]
      2014-11-18 11:50:24.468 EST [md-sal-binding-notification-3] DEBUG o.o.o.l.LearningSwitchHandler - Ethertype: 800
      2014-11-18 11:50:24.468 EST [md-sal-binding-notification-3] DEBUG o.o.o.l.LearningSwitchHandler - covering mac path: MacAddress [_value=00:00:00:00:00:02]MacAddress [_value=00:00:00:00:00:01] by [Uri [_value=openflow:1:1]]

      ..
      2014-11-18 11:50:24.474 EST [WriteTxCommit-0] WARN o.o.c.m.s.d.s.i.InMemoryDOMDataStore - Store Tx: DOM-CFG-57 Data Precondition failed for /(urn:opendaylight:inventory?revision=2013-08-19)nodes/node/node[

      {(urn:opendaylight:inventory?revision=2013-08-19)id=openflow:1}

      ].
      org.opendaylight.yangtools.yang.data.api.schema.tree.ModifiedNodeDoesNotExistException: Node /(urn:opendaylight:inventory?revision=2013-08-19)nodes/node/node[

      {(urn:opendaylight:inventory?revision=2013-08-19)id=openflow:1}

      ] does not exist. Cannot apply modification to its children.
      at org.opendaylight.yangtools.yang.data.impl.schema.tree.NormalizedNodeContainerModificationStrategy.checkSubtreeModificationApplicable(NormalizedNodeContainerModificationStrategy.java:164) ~[bundlefile:na]
      at org.opendaylight.yangtools.yang.data.impl.schema.tree.SchemaAwareApplyOperation.checkApplicable(SchemaAwareApplyOperation.java:135) ~[bundlefile:na]
      at org.opendaylight.yangtools.yang.data.impl.schema.tree.NormalizedNodeContainerModificationStrategy.checkChildPreconditions(NormalizedNodeContainerModificationStrategy.java:178) ~[bundlefile:na]
      at org.opendaylight.yangtools.yang.data.impl.schema.tree.NormalizedNodeContainerModificationStrategy.checkSubtreeModificationApplicable(NormalizedNodeContainerModificationStrategy.java:168) ~[bundlefile:na]
      at org.opendaylight.yangtools.yang.data.impl.schema.tree.SchemaAwareApplyOperation.checkApplicable(SchemaAwareApplyOperation.java:135) ~[bundlefile:na]
      at org.opendaylight.yangtools.yang.data.impl.schema.tree.NormalizedNodeContainerModificationStrategy.checkChildPreconditions(NormalizedNodeContainerModificationStrategy.java:178) ~[bundlefile:na]
      at org.opendaylight.yangtools.yang.data.impl.schema.tree.NormalizedNodeContainerModificationStrategy.checkSubtreeModificationApplicable(NormalizedNodeContainerModificationStrategy.java:168) ~[bundlefile:na]
      at org.opendaylight.yangtools.yang.data.impl.schema.tree.SchemaAwareApplyOperation.checkApplicable(SchemaAwareApplyOperation.java:135) ~[bundlefile:na]
      at org.opendaylight.yangtools.yang.data.impl.schema.tree.NormalizedNodeContainerModificationStrategy.checkChildPreconditions(NormalizedNodeContainerModificationStrategy.java:178) ~[bundlefile:na]
      at org.opendaylight.yangtools.yang.data.impl.schema.tree.NormalizedNodeContainerModificationStrategy.checkSubtreeModificationApplicable(NormalizedNodeContainerModificationStrategy.java:168) ~[bundlefile:na]
      at org.opendaylight.yangtools.yang.data.impl.schema.tree.SchemaAwareApplyOperation.checkApplicable(SchemaAwareApplyOperation.java:135) ~[bundlefile:na]
      at org.opendaylight.yangtools.yang.data.impl.schema.tree.RootModificationApplyOperation.checkApplicable(RootModificationApplyOperation.java:72) ~[bundlefile:na]
      at org.opendaylight.yangtools.yang.data.impl.schema.tree.InMemoryDataTree.validate(InMemoryDataTree.java:77) ~[bundlefile:na]
      at org.opendaylight.controller.md.sal.dom.store.impl.InMemoryDOMDataStore$ThreePhaseCommitImpl$1.call(InMemoryDOMDataStore.java:246) [bundlefile:na]
      at org.opendaylight.controller.md.sal.dom.store.impl.InMemoryDOMDataStore$ThreePhaseCommitImpl$1.call(InMemoryDOMDataStore.java:242) [bundlefile:na]
      at java.util.concurrent.FutureTask.run(FutureTask.java:262) [na:1.7.0_65]
      at com.google.common.util.concurrent.MoreExecutors$SameThreadExecutorService.execute(MoreExecutors.java:293) [bundlefile:na]
      at com.google.common.util.concurrent.AbstractListeningExecutorService.submit(AbstractListeningExecutorService.java:61) [bundlefile:na]
      at org.opendaylight.controller.md.sal.dom.store.impl.InMemoryDOMDataStore$ThreePhaseCommitImpl.canCommit(InMemoryDOMDataStore.java:242) [bundlefile:na]
      at org.opendaylight.controller.md.sal.dom.broker.impl.DOMDataCommitCoordinatorImpl$CommitCoordinationTask.canCommitAll(DOMDataCommitCoordinatorImpl.java:209) [bundlefile:na]
      at org.opendaylight.controller.md.sal.dom.broker.impl.DOMDataCommitCoordinatorImpl$CommitCoordinationTask.canCommitBlocking(DOMDataCommitCoordinatorImpl.java:179) [bundlefile:na]
      at org.opendaylight.controller.md.sal.dom.broker.impl.DOMDataCommitCoordinatorImpl$CommitCoordinationTask.call(DOMDataCommitCoordinatorImpl.java:150) [bundlefile:na]
      at org.opendaylight.controller.md.sal.dom.broker.impl.DOMDataCommitCoordinatorImpl$CommitCoordinationTask.call(DOMDataCommitCoordinatorImpl.java:127) [bundlefile:na]
      at org.opendaylight.yangtools.util.concurrent.DeadlockDetectingListeningExecutorService$2.call(DeadlockDetectingListeningExecutorService.java:192) [bundlefile:na]
      at java.util.concurrent.FutureTask.run(FutureTask.java:262) [na:1.7.0_65]
      at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [na:1.7.0_65]
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [na:1.7.0_65]
      at java.lang.Thread.run(Thread.java:745) [na:1.7.0_65]

      Attachments

        1. debug.log
          84 kB
        2. trace.log
          105 kB
        No reviews matched the request. Check your Options in the drop-down menu of this sections header.

        Activity

          People

            mbobak@cisco.com Martin Bobak
            boven.yan@nyu.edu Bo Yan
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: