[ovs-discuss] mf_value and mf_subvalue size restrictions

Madhu Challa challa at noironetworks.com
Thu Nov 6 23:43:23 UTC 2014


On Thu, Nov 6, 2014 at 2:37 PM, Jesse Gross <jesse at nicira.com> wrote:
>
> On Thu, Nov 6, 2014 at 10:08 AM, Madhu Challa <challa at noironetworks.com> wrote:
> > Jesse,
> >
> > Thanks for sharing your thoughts on this.
> >
> > On Thu, Nov 6, 2014 at 7:47 AM, Jesse Gross <jesse at nicira.com> wrote:
> >>
> >> On Wed, Nov 5, 2014 at 10:03 AM, Madhu Challa <challa at noironetworks.com>
> >> wrote:
> >> > Thanks Ben. I will debug and get back to you. I will check with Jesse in
> >> > the
> >> > upcoming ovs conference if he has other thoughts on implementing this.
> >>
> >> I haven't had too much time to make progress on this so I don't have
> >> much in the way of additional thoughts at this point. The main one is
> >> that my goal is to not implement support for specific TLVs in OVS but
> >> to expose the full flexibility outwards so that anyone can introduce
> >> new metadata without having to modify OVS (the only possible exception
> >> being things that have to happen autonomously or on a per-packet basis
> >> in OVS).
> >
> >
> > I was thinking along same lines. I was planning on having a new
> > MFF_TUN_METADATA  that is basically parsed as a raw OXM of length between 4
> > and 128 bytes. The match logic would parse multiple of these OXMs from a
> > FlowMod.
> >
> > From the struct match perspective we need to extend struct flow_tnl to carry
> > this metadata. This is the difficult part because struct flow is already 200
> > bytes and the sparse representation only allows an addition of 52 bytes. I
> > feel we could instead have a reference to tnl metadata from flow_tnl. I have
> > not scoped out all the changes to do this, however if you have any thoughts
> > or an alternative that would be great.
>
> I agree that we will need to extend some infrastructure here. I
> haven't thought too much about this yet.
>
> >>
> >> One issue that comes up when doing this is that the TLVs in both
> >> Geneve and OXM are exactly the same size so mapping them directly
> >> would consume the entire OXM space just for Geneve. There was a
> >> suggestion to use experimenter OXMs since they are larger but I
> >> haven't had a chance to look into this yet.
> >
> >
> > Yep I am using experimenter OXMs.
>
> I'm curious how you ended up laying this out. The OpenFlow spec says
> that the extra space should be used as an vendor ID in the form of an
> OUI. How did you reconcile this?


Good that you brought this up. I had different thoughts in mind. One
was to use the Nicira vendor id 0x002320 and a unique oxm_field to
represent MFF_TUN_METADATA. I was thinking we could overlay the Geneve
tunnel options header right after the oxm header, so it looks
something like this.

       3                   2                   1                   0
     1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |           oxm_class           |   oxm_field |M|   oxm_length  |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                            Vendor id                          |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |          Option Class         |      Type     |R|R|R| Length  |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                      Variable Option Data                     |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

oxm_class = 0xffff
vendor_id = 0x002320

I was also thinking if it would be possible to reserve a separate
class for tunnel encap metadata.

I just read Bens email and I guess I can ignore the OUI if I follow
that approach.

Thanks.



More information about the discuss mailing list