[ovs-dev] Adding NoviFlow experimenters to OVS.

yann bourdeau yann.bourdeau at noviflow.com
Wed Oct 11 21:01:34 UTC 2017

> Le 11 oct. 2017 à 14:00, Ben Pfaff <blp at ovn.org> a écrit :
>> I was successful to add the flow with my new type.
>> However, I needed to comment some code in the following function because my OXM is not mapped.
> Oh, I forgot that the variable-length fields we have already follow a
> different model.  Any individual field at a given time has a fixed
> length, but the controller can change those lengths.  This is because
> they were invented for Geneve TLVs.  Each TLV has a fixed length, but
> different controllers might use different TLVs, so when the controller
> connects to the switch it configures ("maps") the TLVs it wants onto
> OXMs reserved for that purpose.
> I think you're doing something else, where a single OXM can have
> different lengths at the same time.  You might need to break new ground
> here, then.  OVS doesn't have any variable-length OXMs of that kind yet.

The OXM is variable for each of its use. Not based on the controller like the tunnelMD. I will fix code where it does not work when I’ll try it (when running a packet to be matched, for now the flow install).
I’m looking to implement this OXM field in miniflow_extract() (lib/flow.c). However I don’t know the offset and length of the field until the switch receive an experimenter message for a table that set the offset and size for the field. When this message is received, the miniflow_extract() should start copying the field in miniflow (that goes in flow). So I’ll be able to match the OXM later on. In fact, I have talked to our switch dev guys and this is similar on how our switch work. 
Here are the steps:
1- Configure the UDP offset and UDP size in TABLE 2 via an experimenter message.
2- miniflow_extract() start copying this new UDP field only for table 2.
3- put OXM UDP match payload in nx_put_raw().

In your opinion will this be hard to do? I there a structure that contains table information that can be used in miniflow_extract()?

Thanks again for all your help,


More information about the dev mailing list