0

I have an Opendaylight Carbon application that is running just fine. Now I want to add QoS and queues to it (Open vSwitch 2.5.2). If I create a qos using ovs-vsctl in a terminal, Opendaylight starts logging stack traces. The ovs-vsctl command:

sudo ovs-vsctl -- set port s1-eth1 qos=@newqos -- --id=@newqos create qos type=linux-htb other-config:max-rate=800000

The stack trace (only included the first few stack traces):

2017-12-12 17:54:21,802 | WARN  | rd-dispatcher-23 | ShardDataTree                    | 204 - org.opendaylight.controller.sal-distributed-datastore - 1.5.2.Carbon | member-1-shard-inventory-operational: Store Tx member-1-datastore-operational-fe-0-chn-408-txn-3-0: Data validation failed for path /(urn:opendaylight:inventory?revision=2013-08-19)nodes/node/node[{(urn:opendaylight:inventory?revision=2013-08-19)id=openflow:1}]/node-connector/node-connector[{(urn:opendaylight:inventory?revision=2013-08-19)id=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}]/node-connector/node-connector[{(urn:opendaylight:inventory?revision=2013-08-19)id=1}] does not exist. Cannot apply modification to its children.
    at org.opendaylight.yangtools.yang.data.impl.schema.tree.AbstractNodeContainerModificationStrategy.checkTouchApplicable(AbstractNodeContainerModificationStrategy.java:281)[81:org.opendaylight.yangtools.yang-data-impl:1.1.2.Carbon]
    at org.opendaylight.yangtools.yang.data.impl.schema.tree.SchemaAwareApplyOperation.checkApplicable(SchemaAwareApplyOperation.java:125)[81:org.opendaylight.yangtools.yang-data-impl:1.1.2.Carbon]
    at org.opendaylight.yangtools.yang.data.impl.schema.tree.AbstractNodeContainerModificationStrategy.checkChildPreconditions(AbstractNodeContainerModificationStrategy.java:305)[81:org.opendaylight.yangtools.yang-data-impl:1.1.2.Carbon]
    at org.opendaylight.yangtools.yang.data.impl.schema.tree.AbstractNodeContainerModificationStrategy.checkTouchApplicable(AbstractNodeContainerModificationStrategy.java:288)[81:org.opendaylight.yangtools.yang-data-impl:1.1.2.Carbon]
    at org.opendaylight.yangtools.yang.data.impl.schema.tree.SchemaAwareApplyOperation.checkApplicable(SchemaAwareApplyOperation.java:125)[81:org.opendaylight.yangtools.yang-data-impl:1.1.2.Carbon]
    at org.opendaylight.yangtools.yang.data.impl.schema.tree.AbstractNodeContainerModificationStrategy.checkChildPreconditions(AbstractNodeContainerModificationStrategy.java:305)[81:org.opendaylight.yangtools.yang-data-impl:1.1.2.Carbon]
    at org.opendaylight.yangtools.yang.data.impl.schema.tree.AbstractNodeContainerModificationStrategy.checkTouchApplicable(AbstractNodeContainerModificationStrategy.java:288)[81:org.opendaylight.yangtools.yang-data-impl:1.1.2.Carbon]
    at org.opendaylight.yangtools.yang.data.impl.schema.tree.SchemaAwareApplyOperation.checkApplicable(SchemaAwareApplyOperation.java:125)[81:org.opendaylight.yangtools.yang-data-impl:1.1.2.Carbon]
    at org.opendaylight.yangtools.yang.data.impl.schema.tree.AbstractNodeContainerModificationStrategy.checkChildPreconditions(AbstractNodeContainerModificationStrategy.java:305)[81:org.opendaylight.yangtools.yang-data-impl:1.1.2.Carbon]
    at org.opendaylight.yangtools.yang.data.impl.schema.tree.AbstractNodeContainerModificationStrategy.checkTouchApplicable(AbstractNodeContainerModificationStrategy.java:288)[81:org.opendaylight.yangtools.yang-data-impl:1.1.2.Carbon]
    at org.opendaylight.yangtools.yang.data.impl.schema.tree.SchemaAwareApplyOperation.checkApplicable(SchemaAwareApplyOperation.java:125)[81:org.opendaylight.yangtools.yang-data-impl:1.1.2.Carbon]
    at org.opendaylight.yangtools.yang.data.impl.schema.tree.AbstractNodeContainerModificationStrategy.checkChildPreconditions(AbstractNodeContainerModificationStrategy.java:305)[81:org.opendaylight.yangtools.yang-data-impl:1.1.2.Carbon]
    at org.opendaylight.yangtools.yang.data.impl.schema.tree.AbstractNodeContainerModificationStrategy.checkTouchApplicable(AbstractNodeContainerModificationStrategy.java:288)[81:org.opendaylight.yangtools.yang-data-impl:1.1.2.Carbon]
    at org.opendaylight.yangtools.yang.data.impl.schema.tree.SchemaAwareApplyOperation.checkApplicable(SchemaAwareApplyOperation.java:125)[81:org.opendaylight.yangtools.yang-data-impl:1.1.2.Carbon]
    at org.opendaylight.yangtools.yang.data.impl.schema.tree.StructuralContainerModificationStrategy.checkApplicable(StructuralContainerModificationStrategy.java:99)[81:org.opendaylight.yangtools.yang-data-impl:1.1.2.Carbon]
    at org.opendaylight.yangtools.yang.data.impl.schema.tree.AbstractNodeContainerModificationStrategy.checkChildPreconditions(AbstractNodeContainerModificationStrategy.java:305)[81:org.opendaylight.yangtools.yang-data-impl:1.1.2.Carbon]
    at org.opendaylight.yangtools.yang.data.impl.schema.tree.AbstractNodeContainerModificationStrategy.checkTouchApplicable(AbstractNodeContainerModificationStrategy.java:288)[81:org.opendaylight.yangtools.yang-data-impl:1.1.2.Carbon]
    at org.opendaylight.yangtools.yang.data.impl.schema.tree.SchemaAwareApplyOperation.checkApplicable(SchemaAwareApplyOperation.java:125)[81:org.opendaylight.yangtools.yang-data-impl:1.1.2.Carbon]
    at org.opendaylight.yangtools.yang.data.impl.schema.tree.RootModificationApplyOperation.checkApplicable(RootModificationApplyOperation.java:72)[81:org.opendaylight.yangtools.yang-data-impl:1.1.2.Carbon]
    at org.opendaylight.yangtools.yang.data.impl.schema.tree.AbstractDataTreeTip.validate(AbstractDataTreeTip.java:35)[81:org.opendaylight.yangtools.yang-data-impl:1.1.2.Carbon]
    at org.opendaylight.controller.cluster.datastore.ShardDataTree.lambda$processNextPendingTransaction$0(ShardDataTree.java:743)[204:org.opendaylight.controller.sal-distributed-datastore:1.5.2.Carbon]
    at org.opendaylight.controller.cluster.datastore.ShardDataTree.processNextPending(ShardDataTree.java:789)[204:org.opendaylight.controller.sal-distributed-datastore:1.5.2.Carbon]
    at org.opendaylight.controller.cluster.datastore.ShardDataTree.processNextPendingTransaction(ShardDataTree.java:736)[204:org.opendaylight.controller.sal-distributed-datastore:1.5.2.Carbon]
    at org.opendaylight.controller.cluster.datastore.ShardDataTree.startCanCommit(ShardDataTree.java:819)[204:org.opendaylight.controller.sal-distributed-datastore:1.5.2.Carbon]
    at org.opendaylight.controller.cluster.datastore.SimpleShardDataTreeCohort.canCommit(SimpleShardDataTreeCohort.java:90)[204:org.opendaylight.controller.sal-distributed-datastore:1.5.2.Carbon]
    at org.opendaylight.controller.cluster.datastore.CohortEntry.canCommit(CohortEntry.java:97)[204:org.opendaylight.controller.sal-distributed-datastore:1.5.2.Carbon]
    at org.opendaylight.controller.cluster.datastore.ShardCommitCoordinator.handleCanCommit(ShardCommitCoordinator.java:236)[204:org.opendaylight.controller.sal-distributed-datastore:1.5.2.Carbon]
    at org.opendaylight.controller.cluster.datastore.ShardCommitCoordinator.handleReadyLocalTransaction(ShardCommitCoordinator.java:200)[204:org.opendaylight.controller.sal-distributed-datastore:1.5.2.Carbon]
    at org.opendaylight.controller.cluster.datastore.Shard.handleReadyLocalTransaction(Shard.java:675)[204:org.opendaylight.controller.sal-distributed-datastore:1.5.2.Carbon]
    at org.opendaylight.controller.cluster.datastore.Shard.handleNonRaftCommand(Shard.java:316)[204:org.opendaylight.controller.sal-distributed-datastore:1.5.2.Carbon]
    at org.opendaylight.controller.cluster.raft.RaftActor.handleCommand(RaftActor.java:270)[198:org.opendaylight.controller.sal-akka-raft:1.5.2.Carbon]
    at org.opendaylight.controller.cluster.common.actor.AbstractUntypedPersistentActor.onReceiveCommand(AbstractUntypedPersistentActor.java:44)[197:org.opendaylight.controller.sal-clustering-commons:1.5.2.Carbon]
    at akka.persistence.UntypedPersistentActor.onReceive(PersistentActor.scala:170)[185:com.typesafe.akka.persistence:2.4.18]
    at org.opendaylight.controller.cluster.common.actor.MeteringBehavior.apply(MeteringBehavior.java:104)[197:org.opendaylight.controller.sal-clustering-commons:1.5.2.Carbon]
    at akka.actor.ActorCell$$anonfun$become$1.applyOrElse(ActorCell.scala:544)[178:com.typesafe.akka.actor:2.4.18]
    at akka.actor.Actor$class.aroundReceive(Actor.scala:502)[178:com.typesafe.akka.actor:2.4.18]
    at akka.persistence.UntypedPersistentActor.akka$persistence$Eventsourced$$super$aroundReceive(PersistentActor.scala:168)[185:com.typesafe.akka.persistence:2.4.18]
    at akka.persistence.Eventsourced$$anon$1.stateReceive(Eventsourced.scala:727)[185:com.typesafe.akka.persistence:2.4.18]
    at akka.persistence.Eventsourced$class.aroundReceive(Eventsourced.scala:183)[185:com.typesafe.akka.persistence:2.4.18]
    at akka.persistence.UntypedPersistentActor.aroundReceive(PersistentActor.scala:168)[185:com.typesafe.akka.persistence:2.4.18]
    at akka.actor.ActorCell.receiveMessage(ActorCell.scala:526)[178:com.typesafe.akka.actor:2.4.18]
    at akka.actor.ActorCell.invoke(ActorCell.scala:495)[178:com.typesafe.akka.actor:2.4.18]
    at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:257)[178:com.typesafe.akka.actor:2.4.18]
    at akka.dispatch.Mailbox.run(Mailbox.scala:224)[178:com.typesafe.akka.actor:2.4.18]
    at akka.dispatch.Mailbox.exec(Mailbox.scala:234)[178:com.typesafe.akka.actor:2.4.18]
    at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)[174:org.scala-lang.scala-library:2.11.11.v20170413-090219-8a413ba7cc]
    at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)[174:org.scala-lang.scala-library:2.11.11.v20170413-090219-8a413ba7cc]
    at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)[174:org.scala-lang.scala-library:2.11.11.v20170413-090219-8a413ba7cc]
    at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)[174:org.scala-lang.scala-library:2.11.11.v20170413-090219-8a413ba7cc]
2017-12-12 17:54:21,803 | ERROR | lt-dispatcher-21 | LocalThreePhaseCommitCohort      | 204 - org.opendaylight.controller.sal-distributed-datastore - 1.5.2.Carbon | Failed to prepare transaction member-1-datastore-operational-fe-0-chn-408-txn-3-0 on backend
TransactionCommitFailedException{message=Data did not pass validation., errorList=[RpcError [message=Data did not pass validation., severity=ERROR, errorType=APPLICATION, tag=operation-failed, applicationTag=null, info=null, cause=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}]/node-connector/node-connector[{(urn:opendaylight:inventory?revision=2013-08-19)id=1}] does not exist. Cannot apply modification to its children.]]}
    at org.opendaylight.controller.cluster.datastore.ShardDataTree.lambda$processNextPendingTransaction$0(ShardDataTree.java:760)[204:org.opendaylight.controller.sal-distributed-datastore:1.5.2.Carbon]
    at org.opendaylight.controller.cluster.datastore.ShardDataTree.processNextPending(ShardDataTree.java:789)[204:org.opendaylight.controller.sal-distributed-datastore:1.5.2.Carbon]
    at org.opendaylight.controller.cluster.datastore.ShardDataTree.processNextPendingTransaction(ShardDataTree.java:736)[204:org.opendaylight.controller.sal-distributed-datastore:1.5.2.Carbon]
    at org.opendaylight.controller.cluster.datastore.ShardDataTree.startCanCommit(ShardDataTree.java:819)[204:org.opendaylight.controller.sal-distributed-datastore:1.5.2.Carbon]
    at org.opendaylight.controller.cluster.datastore.SimpleShardDataTreeCohort.canCommit(SimpleShardDataTreeCohort.java:90)[204:org.opendaylight.controller.sal-distributed-datastore:1.5.2.Carbon]
    at org.opendaylight.controller.cluster.datastore.CohortEntry.canCommit(CohortEntry.java:97)[204:org.opendaylight.controller.sal-distributed-datastore:1.5.2.Carbon]
    at org.opendaylight.controller.cluster.datastore.ShardCommitCoordinator.handleCanCommit(ShardCommitCoordinator.java:236)[204:org.opendaylight.controller.sal-distributed-datastore:1.5.2.Carbon]
    at org.opendaylight.controller.cluster.datastore.ShardCommitCoordinator.handleReadyLocalTransaction(ShardCommitCoordinator.java:200)[204:org.opendaylight.controller.sal-distributed-datastore:1.5.2.Carbon]
    at org.opendaylight.controller.cluster.datastore.Shard.handleReadyLocalTransaction(Shard.java:675)[204:org.opendaylight.controller.sal-distributed-datastore:1.5.2.Carbon]
    at org.opendaylight.controller.cluster.datastore.Shard.handleNonRaftCommand(Shard.java:316)[204:org.opendaylight.controller.sal-distributed-datastore:1.5.2.Carbon]
    at org.opendaylight.controller.cluster.raft.RaftActor.handleCommand(RaftActor.java:270)[198:org.opendaylight.controller.sal-akka-raft:1.5.2.Carbon]
    at org.opendaylight.controller.cluster.common.actor.AbstractUntypedPersistentActor.onReceiveCommand(AbstractUntypedPersistentActor.java:44)[197:org.opendaylight.controller.sal-clustering-commons:1.5.2.Carbon]
    at akka.persistence.UntypedPersistentActor.onReceive(PersistentActor.scala:170)[185:com.typesafe.akka.persistence:2.4.18]
    at org.opendaylight.controller.cluster.common.actor.MeteringBehavior.apply(MeteringBehavior.java:104)[197:org.opendaylight.controller.sal-clustering-commons:1.5.2.Carbon]
    at akka.actor.ActorCell$$anonfun$become$1.applyOrElse(ActorCell.scala:544)[178:com.typesafe.akka.actor:2.4.18]
    at akka.actor.Actor$class.aroundReceive(Actor.scala:502)[178:com.typesafe.akka.actor:2.4.18]
    at akka.persistence.UntypedPersistentActor.akka$persistence$Eventsourced$$super$aroundReceive(PersistentActor.scala:168)[185:com.typesafe.akka.persistence:2.4.18]
    at akka.persistence.Eventsourced$$anon$1.stateReceive(Eventsourced.scala:727)[185:com.typesafe.akka.persistence:2.4.18]
    at akka.persistence.Eventsourced$class.aroundReceive(Eventsourced.scala:183)[185:com.typesafe.akka.persistence:2.4.18]
    at akka.persistence.UntypedPersistentActor.aroundReceive(PersistentActor.scala:168)[185:com.typesafe.akka.persistence:2.4.18]
    at akka.actor.ActorCell.receiveMessage(ActorCell.scala:526)[178:com.typesafe.akka.actor:2.4.18]
    at akka.actor.ActorCell.invoke(ActorCell.scala:495)[178:com.typesafe.akka.actor:2.4.18]
    at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:257)[178:com.typesafe.akka.actor:2.4.18]
    at akka.dispatch.Mailbox.run(Mailbox.scala:224)[178:com.typesafe.akka.actor:2.4.18]
    at akka.dispatch.Mailbox.exec(Mailbox.scala:234)[178:com.typesafe.akka.actor:2.4.18]
    at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)[174:org.scala-lang.scala-library:2.11.11.v20170413-090219-8a413ba7cc]
    at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)[174:org.scala-lang.scala-library:2.11.11.v20170413-090219-8a413ba7cc]
    at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)[174:org.scala-lang.scala-library:2.11.11.v20170413-090219-8a413ba7cc]
    at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)[174:org.scala-lang.scala-library:2.11.11.v20170413-090219-8a413ba7cc]
Caused by: 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}]/node-connector/node-connector[{(urn:opendaylight:inventory?revision=2013-08-19)id=1}] does not exist. Cannot apply modification to its children.
    at org.opendaylight.yangtools.yang.data.impl.schema.tree.AbstractNodeContainerModificationStrategy.checkTouchApplicable(AbstractNodeContainerModificationStrategy.java:281)[81:org.opendaylight.yangtools.yang-data-impl:1.1.2.Carbon]
    at org.opendaylight.yangtools.yang.data.impl.schema.tree.SchemaAwareApplyOperation.checkApplicable(SchemaAwareApplyOperation.java:125)[81:org.opendaylight.yangtools.yang-data-impl:1.1.2.Carbon]
    at org.opendaylight.yangtools.yang.data.impl.schema.tree.AbstractNodeContainerModificationStrategy.checkChildPreconditions(AbstractNodeContainerModificationStrategy.java:305)[81:org.opendaylight.yangtools.yang-data-impl:1.1.2.Carbon]
    at org.opendaylight.yangtools.yang.data.impl.schema.tree.AbstractNodeContainerModificationStrategy.checkTouchApplicable(AbstractNodeContainerModificationStrategy.java:288)[81:org.opendaylight.yangtools.yang-data-impl:1.1.2.Carbon]
    at org.opendaylight.yangtools.yang.data.impl.schema.tree.SchemaAwareApplyOperation.checkApplicable(SchemaAwareApplyOperation.java:125)[81:org.opendaylight.yangtools.yang-data-impl:1.1.2.Carbon]
    at org.opendaylight.yangtools.yang.data.impl.schema.tree.AbstractNodeContainerModificationStrategy.checkChildPreconditions(AbstractNodeContainerModificationStrategy.java:305)[81:org.opendaylight.yangtools.yang-data-impl:1.1.2.Carbon]
    at org.opendaylight.yangtools.yang.data.impl.schema.tree.AbstractNodeContainerModificationStrategy.checkTouchApplicable(AbstractNodeContainerModificationStrategy.java:288)[81:org.opendaylight.yangtools.yang-data-impl:1.1.2.Carbon]
    at org.opendaylight.yangtools.yang.data.impl.schema.tree.SchemaAwareApplyOperation.checkApplicable(SchemaAwareApplyOperation.java:125)[81:org.opendaylight.yangtools.yang-data-impl:1.1.2.Carbon]
    at org.opendaylight.yangtools.yang.data.impl.schema.tree.AbstractNodeContainerModificationStrategy.checkChildPreconditions(AbstractNodeContainerModificationStrategy.java:305)[81:org.opendaylight.yangtools.yang-data-impl:1.1.2.Carbon]
    at org.opendaylight.yangtools.yang.data.impl.schema.tree.AbstractNodeContainerModificationStrategy.checkTouchApplicable(AbstractNodeContainerModificationStrategy.java:288)[81:org.opendaylight.yangtools.yang-data-impl:1.1.2.Carbon]
    at org.opendaylight.yangtools.yang.data.impl.schema.tree.SchemaAwareApplyOperation.checkApplicable(SchemaAwareApplyOperation.java:125)[81:org.opendaylight.yangtools.yang-data-impl:1.1.2.Carbon]
    at org.opendaylight.yangtools.yang.data.impl.schema.tree.AbstractNodeContainerModificationStrategy.checkChildPreconditions(AbstractNodeContainerModificationStrategy.java:305)[81:org.opendaylight.yangtools.yang-data-impl:1.1.2.Carbon]
    at org.opendaylight.yangtools.yang.data.impl.schema.tree.AbstractNodeContainerModificationStrategy.checkTouchApplicable(AbstractNodeContainerModificationStrategy.java:288)[81:org.opendaylight.yangtools.yang-data-impl:1.1.2.Carbon]
    at org.opendaylight.yangtools.yang.data.impl.schema.tree.SchemaAwareApplyOperation.checkApplicable(SchemaAwareApplyOperation.java:125)[81:org.opendaylight.yangtools.yang-data-impl:1.1.2.Carbon]
    at org.opendaylight.yangtools.yang.data.impl.schema.tree.StructuralContainerModificationStrategy.checkApplicable(StructuralContainerModificationStrategy.java:99)[81:org.opendaylight.yangtools.yang-data-impl:1.1.2.Carbon]
    at org.opendaylight.yangtools.yang.data.impl.schema.tree.AbstractNodeContainerModificationStrategy.checkChildPreconditions(AbstractNodeContainerModificationStrategy.java:305)[81:org.opendaylight.yangtools.yang-data-impl:1.1.2.Carbon]
    at org.opendaylight.yangtools.yang.data.impl.schema.tree.AbstractNodeContainerModificationStrategy.checkTouchApplicable(AbstractNodeContainerModificationStrategy.java:288)[81:org.opendaylight.yangtools.yang-data-impl:1.1.2.Carbon]
    at org.opendaylight.yangtools.yang.data.impl.schema.tree.SchemaAwareApplyOperation.checkApplicable(SchemaAwareApplyOperation.java:125)[81:org.opendaylight.yangtools.yang-data-impl:1.1.2.Carbon]
    at org.opendaylight.yangtools.yang.data.impl.schema.tree.RootModificationApplyOperation.checkApplicable(RootModificationApplyOperation.java:72)[81:org.opendaylight.yangtools.yang-data-impl:1.1.2.Carbon]
    at org.opendaylight.yangtools.yang.data.impl.schema.tree.AbstractDataTreeTip.validate(AbstractDataTreeTip.java:35)[81:org.opendaylight.yangtools.yang-data-impl:1.1.2.Carbon]
    at org.opendaylight.controller.cluster.datastore.ShardDataTree.lambda$processNextPendingTransaction$0(ShardDataTree.java:743)[204:org.opendaylight.controller.sal-distributed-datastore:1.5.2.Carbon]
    ... 28 more

As it shows a ModifiedNodeDoesNotExistException, do I have to install some ovs related feature? If so, which one?

I assume that ODL gets notified of the qos and queue creation and tries to update the operational data store. The Exception complains that node

Node /(urn:opendaylight:inventory?revision=2013-08-19)nodes/node/node[{(urn:opendaylight:inventory?revision=2013-08-19)id=openflow:1}]/node-connector/node-connector[{(urn:opendaylight:inventory?revision=2013-08-19)id=1}]

does not exist. Why isn't this nodeconnector id=openflow:1:1 in stead of id=1?

Wireshark openflow shows that these exceptions are likely triggered by the OFPMP_QUEUE reply. If no queues, this message is empty. If queues exist (like example below, queue 0,1,2) it reports stats for queues on port 1:

OpenFlow 1.3
    Version: 1.3 (0x04)
    Type: OFPT_MULTIPART_REPLY (19)
    Length: 136
    Transaction ID: 5709
    Type: OFPMP_QUEUE (5)
    Flags: 0x0000
    Pad: 00000000
    Queue stats
        Port number: 1
        Queue ID: 0
        Tx bytes: 60
        Tx packets: 1
        Tx errors: 0
        Duration sec: 2954916689
        Duration nsec: 174000000
    Queue stats
    Queue stats
I assume that ODL fails to map port 1 to node-connector openflow:1:1. This probably causes the exception because node-connector 1 cannot be found.
  • This seems like a bug in ODL so I just opened a bug: https://jira.opendaylight.org/browse/OPNFLWPLUG-995 – ecelgp Apr 06 '18 at 01:03

1 Answers1

0

The problem is indeed that the controller is parsing the OFPMP_QUEUE reply and wants to write statistics to node-connector '1' in stead of 'openflow:1:1'. To test this hypothesis, I wrote my own node-connector '1' in the operational datastore, containing queue 0, 1 and 2. I adapted my application to use queues and as soon I created the queues with ovs-vsctl command in first post, everything works:

  • The node-connector '1' is updated with queue stats in the operational DS
  • Flows that use the queue are indeed limited by the max-rate of the queue

The question is now:

Is this a bug
OR do I actually have to do it this way
OR should I only use queues that are created through the OVSDB plugin of ODL?

I am developing from a maven ODL Carbon archetype and have not been able to get OVSDB support. The OVSDB does not (yet?) seem to exist as a plugin feature for the Carbon release.

Any help is appreciated.

  • These look like questions for [the OpenDaylight mailing list](https://lists.opendaylight.org/mailman/listinfo), maybe `openflowplugin-users`? – pchaigno Dec 27 '17 at 12:28