On Thu, Jun 30, 2016 at 04:07:57PM -0400, Nikolai Snow wrote: > Hello, > > Sorry about the initial message, it was truncated accidentally before > sending. I am trying to introduce new attributes in the Openflow header. I > am implementing this between Open VSwitch and Floodlight. As a test I am > inserting a new attribute in the padding of the header. > > This is an excerpt from open vswitch's flow.h > > ofp_port_t actset_output; /* Output port in action set. */ > uint16_t SNOW; // new test variable replacing pad*** > > //uint8_t pad2[2]; /* Pad to 64 bits. */ > > /* L2, Order the same as in the Ethernet header! (64-bit aligned) */ > struct eth_addr dl_dst; /* Ethernet destination address. */ > > I followed the guide on the Open VSwitch github on how to introduce a new > attribute and have also modified /lib/flow.c, /lib/meta-flow.h, > /lib/meta-flow.c, /lib/nx-match.c. > > Excerpt from meta-flow.h > > /* "SNOW". > > * > > * new testing attribute. > > * > > * Type: be16. > > * Maskable: no. > > * Formatting: hexadecimal. > > * Prerequisites: none. > > * Access: read/write. > > * NXM: none. > > * OXM: none. > > */ > MFF_SNOW, > > I can provide the other excerpts of edited OVS source if needed. My code > compiles, and I can run mininet using this custom OVS and test pings can be > sent and received successfully. I run mininet the arguments --switch > ovsk,protocol=OpenFlow14. When I try to connect this mininet to floodlight, > there are errors generated in floodlight's commandline. > > Here is the terminal output starting at connection of the switch until > close, truncated because it repeats itself until the mininet connection is > terminated. > > 15:28:02.342 INFO [n.f.c.i.OFChannelHandler:nioEventLoopGroup-3-2] New > switch connection from /192.168.56.101:46228 > 15:28:02.343 INFO [n.f.c.i.OFChannelHandler:nioEventLoopGroup-3-2] > Negotiated down to switch OpenFlow version of OF_13 for / > 192.168.56.101:46228 using lesser hello header algorithm. > 15:28:02.396 INFO [n.f.c.i.OFSwitchHandshakeHandler:nioEventLoopGroup-3-2] > Switch OFSwitch DPID[00:00:00:00:00:00:00:01] bound to class class > net.floodlightcontroller.core.internal.OFSwitch, description > SwitchDescription [manufacturerDescription=Nicira, Inc., > hardwareDescription=Open vSwitch, softwareDescription=2.5.0, > serialNumber=None, datapathDescription=None] > 15:28:02.535 INFO [n.f.c.i.OFSwitchHandshakeHandler:nioEventLoopGroup-3-2] > Defining switch role from config file: ROLE_MASTER > 15:28:02.562 WARN [n.f.c.i.C.s.notification:main] Switch > 00:00:00:00:00:00:00:01 connected. > 15:28:03.033 ERROR [n.f.c.i.OFChannelHandler:nioEventLoopGroup-3-2] Error > while processing message from switch [00:00:00:00:00:00:00:01(0x0) from > 192.168.56.101:46228]state > net.floodlightcontroller.core.internal.OFChannelHandler$CompleteState@217a252e > io.netty.handler.codec.DecoderException: > org.projectfloodlight.openflow.exceptions.OFParseError: Unknown value for > discriminator typeLen of class OFOxmVer13: 83458 > at > io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:358) > ~[floodlight.jar:na] > at > io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:230) > ~[floodlight.jar:na] > at > io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:308) > [floodlight.jar:na] > at > io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:294) > [floodlight.jar:na] > at > io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:846) > [floodlight.jar:na] > at > io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:131) > [floodlight.jar:na] > at > io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:511) > [floodlight.jar:na] > at > io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:468) > [floodlight.jar:na] > at > io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:382) > [floodlight.jar:na] > at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:354) > [floodlight.jar:na] > at > io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:112) > [floodlight.jar:na] > at > io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:137) > [floodlight.jar:na] > at java.lang.Thread.run(Thread.java:745) [na:1.8.0_91] > Caused by: org.projectfloodlight.openflow.exceptions.OFParseError: Unknown > value for discriminator typeLen of class OFOxmVer13: 83458 > at > org.projectfloodlight.openflow.protocol.ver13.OFOxmVer13$Reader.readFrom(OFOxmVer13.java:442) > ~[floodlight.jar:na] > ... 22 common frames omitted > 15:28:03.040 WARN [n.f.c.i.C.s.notification:main] Switch > 00:00:00:00:00:00:00:01 disconnected. > 15:28:03.040 INFO [n.f.c.i.OFChannelHandler:nioEventLoopGroup-3-2] > [[00:00:00:00:00:00:00:01(0x0) from 192.168.56.101:46228]] Disconnected > connection > 15:28:03.344 INFO [n.f.c.i.OFChannelHandler:nioEventLoopGroup-3-1] New > switch connection from /192.168.56.101:46230 > > I have attached a .pcapng dumped from wireshark of the session. Can anybody > help me understand what I am doing wrong? Thanks in advance.
It looks like your modified OVS sends a new field to the controller and that your controller does not understand that field and reports an error. If you're sending a new field to the controller, though, you should put that in the NXM: or OXM: declaration in meta-flow.h instead of saying "none". _______________________________________________ openflow-discuss mailing list openflow-discuss@lists.stanford.edu https://mailman.stanford.edu/mailman/listinfo/openflow-discuss