Just wanted to follow up on this with our solution. The OpenFlow library
soon to be backing Floodlight is OpenFlowJ-Loxigen. Using Loxigen (
https://github.com/floodlight/loxigen/wiki/OpenFlowJ-Loxi), we were able to
(1) define the additional Nicira extension OXMs as OpenFlow input, (2) add
the MatchField and its dependencies, and (3) regenerate the library. This
was very straightforward and demonstrates the ease of adding your own OXMs
or other extensions to Loxigen.

(1)

// Nicira extension for tun_ipv4_src (31)
struct of_oxm_tunnel_ipv4_src : of_oxm {
    uint32_t type_len == 0x00013e04;
    of_ipv4_t value;
};

struct of_oxm_tunnel_ipv4_src_masked : of_oxm {
    uint32_t type_len == 0x00013f08;
    of_ipv4_t value;
    of_ipv4_t value_mask;
};

// Nicira extension for tun_ipv4_dst (32)
struct of_oxm_tunnel_ipv4_dst : of_oxm {
    uint32_t type_len == 0x00014004;
    of_ipv4_t value;
};

struct of_oxm_tunnel_ipv4_dst_masked : of_oxm {
    uint32_t type_len == 0x00014108;
    of_ipv4_t value;
    of_ipv4_t value_mask;
};

(2)

TUNNEL_IPV4_SRC,
TUNNEL_IPV4_DST,

and

public final static MatchField<IPv4Address> TUNNEL_IPV4_SRC =
         new MatchField<IPv4Address>("tunnel_ipv4_src",
MatchFields.TUNNEL_IPV4_SRC,
                 new Prerequisite<EthType>(MatchField.ETH_TYPE,
EthType.IPv4));

public final static MatchField<IPv4Address> TUNNEL_IPV4_DST =
         new MatchField<IPv4Address>("tunnel_ipv4_dst",
MatchFields.TUNNEL_IPV4_DST,
                 new Prerequisite<EthType>(MatchField.ETH_TYPE,
EthType.IPv4));

(3)

make all
make package-java

Ryan Izard
Graduate Research/Teaching Assistant
306B Fluor Daniel Building
ECE Department, Clemson University
Clemson, SC 29634
riz...@g.clemson.edu
---------------------------------------------------
Big Switch Networks
ryan.iz...@bigswitch.com

On Fri, Nov 14, 2014 at 2:20 PM, Ryan Izard <riz...@g.clemson.edu> wrote:

> Thanks Ben!
>
> Ryan Izard
> Graduate Research/Teaching Assistant
> 306B Fluor Daniel Building
> ECE Department, Clemson University
> Clemson, SC 29634
> riz...@g.clemson.edu
> ---------------------------------------------------
> Big Switch Networks
> ryan.iz...@bigswitch.com
>
> On Sun, Nov 9, 2014 at 5:41 PM, Ben Pfaff <b...@nicira.com> wrote:
>
>> On Sat, Nov 08, 2014 at 11:57:48AM -0500, Ryan Izard wrote:
>> > There are two Nicira extension OXMs that our library was not able to
>> > process in the controller within a PACKET_IN message from OVS. Could
>> > someone shed some light as to what those are and any others that OVS
>> 2.1.1
>> > or any other version might send? The field IDs are 31 and 32.
>>
>> Nicira extension OXMs are documented in meta-flow.h.  I guess you're
>> looking for these:
>>
>>     /* "tun_src".
>>      *
>>      * The IPv4 source address in the outer IP header of a tunneled
>> packet.
>>      *
>>      * For non-tunneled packets, the value is 0.
>>      *
>>      * Type: be32.
>>      * Maskable: bitwise.
>>      * Formatting: IPv4.
>>      * Prerequisites: none.
>>      * Access: read/write.
>>      * NXM: NXM_NX_TUN_IPV4_SRC(31) since v2.0.
>>      * OXM: none.
>>      * Prefix lookup member: tunnel.ip_src.
>>      */
>>     MFF_TUN_SRC,
>>
>>     /* "tun_dst".
>>      *
>>      * The IPv4 destination address in the outer IP header of a tunneled
>>      * packet.
>>      *
>>      * For non-tunneled packets, the value is 0.
>>      *
>>      * Type: be32.
>>      * Maskable: bitwise.
>>      * Formatting: IPv4.
>>      * Prerequisites: none.
>>      * Access: read/write.
>>      * NXM: NXM_NX_TUN_IPV4_DST(32) since v2.0.
>>      * OXM: none.
>>      * Prefix lookup member: tunnel.ip_dst.
>>      */
>>     MFF_TUN_DST,
>>
>
>
_______________________________________________
discuss mailing list
discuss@openvswitch.org
http://openvswitch.org/mailman/listinfo/discuss

Reply via email to