This group is locked. No changes can be made to the group while it is locked.
flow using set-queue-action produces errors in karaf.log
Lokanath Das <lokanath.das@...>
Hi,
I have a Q defined as follows: $ sudo ovs-vsctl set port "OFS1-eth1" qos=@newqos -- --id=@newqos create qos type=linux-htb queues:7=@newqueue -- --id=@newqueue create queue other-config:max-rate=7000000 I would like to use the above Q in a flow. I would like to do the equivalent of the following, but using the REST API. $ sudo ovs-ofctl add-flow OFS1 "tcp,in_port=1,nw_src=10.0.0.1,nw_dst=10.0.0.4,tp_dst=80 actions=set_queue:7,2" $ sudo ovs-ofctl dump-flows OFS1 | grep queue cookie=0x0, duration=5.933s, table=0, n_packets=0, n_bytes=0, idle_age=5, tcp,in_port=1,nw_src=10.0.0.1,nw_dst=10.0.0.4,tp_dst=80 actions=set_queue:7,output:2 My REST API call $ curl -u admin:admin -X PUT -H 'Content-Type: application/json' -d '{"flow":{"flowname":"web_1","id":"web_1","installHw":"true","table_id":"0","match":{"in-port":"openflow :1:1","ethernet-match":{"ethernet-type":{"type":"0x800"}},"ip-match":{"ip-protocol":"6"},"ipv4-source" :"10.0.0.1/32","ipv4-destination":"10.0.0.4/32","tcp-destination-port":"80"},"instructions":{"instruction" :[{"apply-actions":{"action":[{"output-action":{"output-node-connector":"openflow:1:2"},"order":"1"} ,{"set-queue-action":{"queue":"newqueue","queue-id":"7"},"order":"0"}]},"order":"0"}]}}}' 'http://localhost:8181/restconf/config/opendaylight-inventory:nodes/node/op enflow:1/flow-node-inventory:table/0/flow/web_1' This succeeds in storing the flow in config store, but doesn't get into operational/switch. I see the following in karaf.log at java.lang.Thread.run(Thread.java:745)[:1.8.0_60] 2015-08-27 10:48:24,739 | WARN | entLoopGroup-8-2 | OFEncoder | 250 - org.opendaylight.openflowjava.openflow-protocol-impl - 0.6.0.Lithium | Message serialization failed java.lang.IllegalStateException: Serializer for key: msgVersion: 1 objectType: org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.actions.grouping.Action action type: org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.SetQueueCase experimenterID: null was not found - please verify that you are using correct message combination (e.g. OF v1.0 message to OF v1.0 device) at org.opendaylight.openflowjava.protocol.impl.serialization.SerializerRegistryImpl.getSerializer(SerializerRegistryImpl.java:69)[250:org.opendaylight.openflowjava.openflow-protocol-impl:0.6.0.Lithium] at org.opendaylight.openflowjava.protocol.impl.util.ListSerializer.serializeList(ListSerializer.java:41)[250:org.opendaylight.openflowjava.openflow-protocol-impl:0.6.0.Lithium] at org.opendaylight.openflowjava.protocol.impl.serialization.factories.OF10FlowModInputMessageFactory.serialize(OF10FlowModInputMessageFactory.java:52)[250:org.opendaylight.openflowjava.openflow-protocol-impl:0.6.0.Lithium] at org.opendaylight.openflowjava.protocol.impl.serialization.factories.OF10FlowModInputMessageFactory.serialize(OF10FlowModInputMessageFactory.java:31)[250:org.opendaylight.openflowjava.openflow-protocol-impl:0.6.0.Lithium] at org.opendaylight.openflowjava.protocol.impl.serialization.SerializationFactory.messageToBuffer(SerializationFactory.java:35)[250:org.opendaylight.openflowjava.openflow-protocol-impl:0.6.0.Lithium] at org.opendaylight.openflowjava.protocol.impl.core.OFEncoder.encode(OFEncoder.java:46)[250:org.opendaylight.openflowjava.openflow-protocol-impl:0.6.0.Lithium] at org.opendaylight.openflowjava.protocol.impl.core.OFEncoder.encode(OFEncoder.java:29)[250:org.opendaylight.openflowjava.openflow-protocol-impl:0.6.0.Lithium] at io.netty.handler.codec.MessageToByteEncoder.write(MessageToByteEncoder.java:107)[161:io.netty.codec:4.0.26.Final] at io.netty.channel.AbstractChannelHandlerContext.invokeWrite(AbstractChannelHandlerContext.java:705)[135:io.netty.transport:4.0.26.Final] at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:763)[135:io.netty.transport:4.0.26.Final] at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:698)[135:io.netty.transport:4.0.26.Final] at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:684)[135:io.netty.transport:4.0.26.Final] at io.netty.channel.DefaultChannelPipeline.write(DefaultChannelPipeline.java:940)[135:io.netty.transport:4.0.26.Final] at io.netty.channel.AbstractChannel.write(AbstractChannel.java:234)[135:io.netty.transport:4.0.26.Final] at org.opendaylight.openflowjava.protocol.impl.core.connection.ChannelOutboundQueue.flush(ChannelOutboundQueue.java:188)[250:org.opendaylight.openflowjava.openflow-protocol-impl:0.6.0.Lithium] at org.opendaylight.openflowjava.protocol.impl.core.connection.ChannelOutboundQueue.access$000(ChannelOutboundQueue.java:37)[250:org.opendaylight.openflowjava.openflow-protocol-impl:0.6.0.Lithium] at org.opendaylight.openflowjava.protocol.impl.core.connection.ChannelOutboundQueue$1.run(ChannelOutboundQueue.java:81)[250:org.opendaylight.openflowjava.openflow-protocol-impl:0.6.0.Lithium] at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:328)[136:io.netty.common:4.0.26.Final] at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:350)[135:io.netty.transport:4.0.26.Final] at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:111)[136:io.netty.common:4.0.26.Final] at io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:137)[136:io.netty.common:4.0.26.Final] at java.lang.Thread.run(Thread.java:745)[:1.8.0_60] Any idea how to make my REST call to work? Do I need to specify additional parameters? My setup is Ubuntu 14.04LTS, ODL Lithium, mininet 1 switch & 4 nodes. Really appreciate any help resolving this. thanks -Lokanath |