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

Reply via email to