Hello all

I am working on adding to openflowplugin the nsh support that has been
available since OVS 2.8. Some of us had some discussions about this on
DDF, that have continued on the project meetings and now continue on
this email.

Openflowplugin already had nsh support for an OVS 2.5/2.6 unoficially
patched out of branch with [1], but now the official available support
is somewhat different to that.

Early discussions we had about this we talked about preserving backward
compatibility, but it seems that some of us understood different things
about backward compatibility: whether we wanted API backward
compatibility for applications or whether we want to support both old
OSV+nsh patch and new OVS nsh implementations at the same time. I
assumed the former, but needs to be further discussed. Afaik, user
applications are SFC, Netvirt and GBP. Unaware about downstreamers, but
users unlikely due to being a patched OVS.

The main difference between both implementations is that the same nsh
match fields are now experimenter oxm_class=0xFFFF with experimenter ID
NXOXM_NSH=0x005ad650. These are the first of its kind, as existing
nicira fields up until now, including the previous version of nsh
fields already implemented for patched OVS, are all standard OXM fields
under nicira vendor/class (NXM_OF=0x0000, NXM_NX=0x0001). For
reference, new nsh fields introduced with OVS 2.8 that did not exist on
the patched OVS are already proposed on patch [2], where as
coincidental fields are to be migrated to the new enconding in a future
patch.

Aside from the fields themselves, some of the existing openflowplugin
nicira actions that were being used to manipulate these fields require
changes to be able to support experimenter fields:

- NXAST_REG_LOAD action is used to set values to nicira fields. This
action does not support oxm experimenter fields. NXAST_REG_LOAD2 needs
to be used instead. There is already a patch proposed for this [3].
This patch will keep intact the existing application API for reg load
action, and internally implement NXAST_REG_LOAD or NXAST_REG_LOAD2
depending on whether the field to be set is experimenter or not.

- NXAST_RAW_REG_MOVE action is used to copy values between nicira oxm
fields. It does support experimenter fields, but not as implemented on
its current form as it allows only 4 byte for oxm headers. Needs to be
extended to support 8 byte experimenter oxm headers. There is already a
patch proposed for this [4].

- NXAST_RAW_OUTPUT_REG action is used to out to a port based on the
value of a field. Similarly to NXAST_REG_LOAD, it does not support
experimenter oxm headers, NXAST_RAW_OUTPUT_REG2 needs to be used
instead.

Topics I would like to discuss:

- What kind of backward compatibility would we like? OVS backward
compatibility to an unofficial out of branch patched OVS? API backward
compatibility for applications? Both? None?
- As these are experimenter fields, we are extending the experimenter
id case in the model as proposed on [2], but Anil sugested if we could
avoid this. I think we could but I would like to understand why.
- As propoosed in [3], is it accetable to keep a single API for
openflow actions that have two versions, non-experimenter vs
experimenter? Initially thought to be API backward compatible, but even
regardless?

[1] https://github.com/yyang13/ovs_nsh_patches
[2] https://git.opendaylight.org/gerrit/#/c/71895/
[3] https://git.opendaylight.org/gerrit/#/c/71917/
[4] https://git.opendaylight.org/gerrit/#/c/71999/

Thanks and BR
Jaime.


_______________________________________________
openflowplugin-dev mailing list
[email protected]
https://lists.opendaylight.org/mailman/listinfo/openflowplugin-dev

Reply via email to