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

Number of flows in Table stats does not match the number of flows in the table

    XMLWordPrintable

Details

    • Bug
    • Status: Resolved
    • Resolution: Done
    • None
    • None
    • General
    • None
    • Operating System: Mac OS
      Platform: Macintosh

    • 367

    Description

      When flows are added to Table 2 on ovs in mininet, the <flow-count> parameter in <aggregate-flow-statistics> does not match the number of flows in the table.

      To reproduce, use mininet, Chrome Postman, and the 'ODL Node' Collection attached to this report as follows:

      1. start mininet with 'sudo mn --topo single,3 --controller 'remote,ip=<your-ip-address>:6653' --switch ovsk,protocols=OpenFlow13'

      2. Import the attached collection into Postman. You may have to edit the server IP address in the collection to reflect your controller's IP address.

      3. Issue 'GET Node oper openflow:1' request to validate that the ovs node is up

      4. Wait for stats collection to occur, and then issue the GET Table oper openflow:1/Tabl 2' request to validate that the table is empty. <flow-count> in <aggregate-flow-statistics> is reported as 0.

      5. Add Flow 135: Issue the 'PUT FLOW openflow:1/Table 2/Flow 135' request

      7. Add Flow 256: Issue the 'PUT FLOW openflow:1/Table 2/Flow 256' request

      7. Add Flow 257: Issue the 'PUT FLOW openflow:1/Table 2/Flow 257' request

      7. Add Flow 258: Issue the 'PUT FLOW openflow:1/Table 2/Flow 258' request

      6. Issue the 'GET Node oper openflow:1/Table 2' request to get Table 2 oper data. <flow-count> in <aggregate-flow-statistics> should be 4, but it is 2. The flows are reported in the table. You may also issue the 'sudo ovs-ofctl -O OpenFlow13 dump-flows s1' command on mininet to validate that the flows were programmed into the switch

      Also, as soon as the flow are programmed, the following exception is being observed for each stats collection:

      2014-01-24 15:38:13.194 PST [pool-24-thread-3] ERROR o.o.c.m.s.c.i.service.TwoPhaseCommit - Transaction: DOM-4130 Request Commit failed
      java.lang.IllegalArgumentException: Node must contains all keys.
      at com.google.common.base.Preconditions.checkArgument(Preconditions.java:92) ~[bundlefile:na]
      at org.opendaylight.yangtools.yang.util.YangDataUtils.getKeyMap(YangDataUtils.java:37) ~[na:na]
      at org.opendaylight.yangtools.yang.util.YangDataUtils.toIndexMap(YangDataUtils.java:25) ~[na:na]
      at org.opendaylight.yangtools.yang.util.YangDataOperations._mergeMultiple(YangDataOperations.java:99) ~[na:na]
      at org.opendaylight.yangtools.yang.util.YangDataOperations.mergeMultiple(YangDataOperations.java:215) ~[na:na]
      at org.opendaylight.yangtools.yang.util.YangDataOperations.mergeContainer(YangDataOperations.java:183) ~[na:na]
      at org.opendaylight.yangtools.yang.util.YangDataOperations.merge(YangDataOperations.java:42) ~[na:na]
      at org.opendaylight.yangtools.yang.util.YangDataOperations._mergeMultiple(YangDataOperations.java:79) ~[na:na]
      at org.opendaylight.yangtools.yang.util.YangDataOperations.mergeMultiple(YangDataOperations.java:209) ~[na:na]
      at org.opendaylight.yangtools.yang.util.YangDataOperations.mergeContainer(YangDataOperations.java:183) ~[na:na]
      at org.opendaylight.yangtools.yang.util.YangDataOperations.merge(YangDataOperations.java:42) ~[na:na]
      at org.opendaylight.yangtools.yang.util.YangDataOperations._mergeMultiple(YangDataOperations.java:79) ~[na:na]
      at org.opendaylight.yangtools.yang.util.YangDataOperations.mergeMultiple(YangDataOperations.java:209) ~[na:na]
      at org.opendaylight.yangtools.yang.util.YangDataOperations.mergeContainer(YangDataOperations.java:183) ~[na:na]
      at org.opendaylight.yangtools.yang.util.YangDataOperations.merge(YangDataOperations.java:42) ~[na:na]
      at org.opendaylight.controller.sal.dom.broker.impl.SchemaAwareDataStoreAdapter.mergeData(SchemaAwareDataStoreAdapter.java:159) ~[na:na]
      at org.opendaylight.controller.sal.dom.broker.impl.SchemaAwareDataStoreAdapter$NormalizedDataModification.mergeOperationalData(SchemaAwareDataStoreAdapter.java:325) ~[na:na]
      at org.opendaylight.controller.sal.dom.broker.impl.SchemaAwareDataStoreAdapter$NormalizedDataModification.mergeOperationalData(SchemaAwareDataStoreAdapter.java:289) ~[na:na]
      at org.opendaylight.controller.md.sal.common.impl.AbstractDataModification.putOperationalData(AbstractDataModification.java:81) ~[bundlefile:na]
      at org.opendaylight.controller.sal.dom.broker.impl.SchemaAwareDataStoreAdapter.prepareMergedTransaction(SchemaAwareDataStoreAdapter.java:179) ~[na:na]
      at org.opendaylight.controller.sal.dom.broker.impl.SchemaAwareDataStoreAdapter.requestCommit(SchemaAwareDataStoreAdapter.java:115) ~[na:na]
      at org.opendaylight.controller.md.sal.common.impl.service.TwoPhaseCommit.call(TwoPhaseCommit.java:76) [bundlefile:na]
      at org.opendaylight.controller.md.sal.common.impl.service.TwoPhaseCommit.call(TwoPhaseCommit.java:31) [bundlefile:na]
      at java.util.concurrent.FutureTask.run(FutureTask.java:262) [na:1.7.0_51]
      at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [na:1.7.0_51]
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [na:1.7.0_51]
      at java.lang.Thread.run(Thread.java:744) [na:1.7.0_51]
      2014-01-24 15:38:13.197 PST [pool-24-thread-4] ERROR o.o.c.m.s.c.i.service.TwoPhaseCommit - Transaction: DOM-4131 Request Commit failed
      java.lang.IllegalArgumentException: Node must contains all keys.
      at com.google.common.base.Preconditions.checkArgument(Preconditions.java:92) ~[bundlefile:na]
      at org.opendaylight.yangtools.yang.util.YangDataUtils.getKeyMap(YangDataUtils.java:37) ~[na:na]
      at org.opendaylight.yangtools.yang.util.YangDataUtils.toIndexMap(YangDataUtils.java:25) ~[na:na]
      at org.opendaylight.yangtools.yang.util.YangDataOperations._mergeMultiple(YangDataOperations.java:99) ~[na:na]
      at org.opendaylight.yangtools.yang.util.YangDataOperations.mergeMultiple(YangDataOperations.java:215) ~[na:na]
      at org.opendaylight.yangtools.yang.util.YangDataOperations.mergeContainer(YangDataOperations.java:183) ~[na:na]
      at org.opendaylight.yangtools.yang.util.YangDataOperations.merge(YangDataOperations.java:42) ~[na:na]
      at org.opendaylight.yangtools.yang.util.YangDataOperations._mergeMultiple(YangDataOperations.java:79) ~[na:na]
      at org.opendaylight.yangtools.yang.util.YangDataOperations.mergeMultiple(YangDataOperations.java:209) ~[na:na]
      at org.opendaylight.yangtools.yang.util.YangDataOperations.mergeContainer(YangDataOperations.java:183) ~[na:na]
      at org.opendaylight.yangtools.yang.util.YangDataOperations.merge(YangDataOperations.java:42) ~[na:na]
      at org.opendaylight.yangtools.yang.util.YangDataOperations._mergeMultiple(YangDataOperations.java:79) ~[na:na]
      at org.opendaylight.yangtools.yang.util.YangDataOperations.mergeMultiple(YangDataOperations.java:209) ~[na:na]
      at org.opendaylight.yangtools.yang.util.YangDataOperations.mergeContainer(YangDataOperations.java:183) ~[na:na]
      at org.opendaylight.yangtools.yang.util.YangDataOperations.merge(YangDataOperations.java:42) ~[na:na]
      at org.opendaylight.controller.sal.dom.broker.impl.SchemaAwareDataStoreAdapter.mergeData(SchemaAwareDataStoreAdapter.java:159) ~[na:na]
      at org.opendaylight.controller.sal.dom.broker.impl.SchemaAwareDataStoreAdapter$NormalizedDataModification.mergeOperationalData(SchemaAwareDataStoreAdapter.java:325) ~[na:na]
      at org.opendaylight.controller.sal.dom.broker.impl.SchemaAwareDataStoreAdapter$NormalizedDataModification.mergeOperationalData(SchemaAwareDataStoreAdapter.java:289) ~[na:na]
      at org.opendaylight.controller.md.sal.common.impl.AbstractDataModification.putOperationalData(AbstractDataModification.java:81) ~[bundlefile:na]
      at org.opendaylight.controller.sal.dom.broker.impl.SchemaAwareDataStoreAdapter.prepareMergedTransaction(SchemaAwareDataStoreAdapter.java:179) ~[na:na]
      at org.opendaylight.controller.sal.dom.broker.impl.SchemaAwareDataStoreAdapter.requestCommit(SchemaAwareDataStoreAdapter.java:115) ~[na:na]
      at org.opendaylight.controller.md.sal.common.impl.service.TwoPhaseCommit.call(TwoPhaseCommit.java:76) [bundlefile:na]
      at org.opendaylight.controller.md.sal.common.impl.service.TwoPhaseCommit.call(TwoPhaseCommit.java:31) [bundlefile:na]
      at java.util.concurrent.FutureTask.run(FutureTask.java:262) [na:1.7.0_51]
      at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [na:1.7.0_51]
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [na:1.7.0_51]
      at java.lang.Thread.run(Thread.java:744) [na:1.7.0_51]

      Attachments

        No reviews matched the request. Check your Options in the drop-down menu of this sections header.

        Activity

          People

            Unassigned Unassigned
            jmedved@cisco.com Jan Medved
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: