Thanks for the feedback. Would revert back shortly with replies and few
questions followed by the v2 patch.

On Mon, Dec 10, 2018 at 1:54 PM Ben Pfaff <b...@ovn.org> wrote:

> On Wed, Nov 28, 2018 at 10:30:07AM -0800, Ashish Varma wrote:
> > OVS supports Nicira version of Flow Monitor feature which allows an
> OpenFlow
> > controller to keep track of any changes in the flow table. (The changes
> can
> > done by the controller itself or by any other controller connected to
> OVS.)
> > This patch adds support for the OpenFlow 1.4+ OFPMP_FLOW_MONITOR
> multipart
> > message.
> > Also added support in "ovs-ofctl monitor" to send OpenFlow 1.4+ messages
> to
> > OVS.
> > Added unit test cases to test the OpenFlow version of Flow Monitor
> messages.
> >
> > Signed-off-by: Ashish Varma <ashishvarma....@gmail.com>
>
> Thanks a lot for working on this.  The OF1.4+ flow monitor support was
> based on the OVS design for the same feature, so it's a shame that we
> didn't implement it early on.
>
> In openflow-1.4.h, please align the comments on members of structs and
> enumerations to some common column, as is the usual practice in OVS
> code, e.g. instead of this:
>
>     /* struct ofp14_flow_update_full. */
>     OFPFME_INITIAL = 0, /* Flow present when flow monitor created. */
>     OFPFME_ADDED = 1, /* Flow was added. */
>     OFPFME_REMOVED = 2, /* Flow was removed. */
>     OFPFME_MODIFIED = 3, /* Flow instructions were changed. */
>     /* struct ofp14_flow_update_abbrev. */
>     OFPFME_ABBREV = 4, /* Abbreviated reply. */
>     /* struct ofp14_flow_update_header. */
>     OFPFME_PAUSED = 5, /* Monitoring paused (out of buffer space). */
>     OFPFME_RESUMED = 6, /* Monitoring resumed. */
>
> more like this (also adding some blank lines for clarity):
>
>     /* struct ofp14_flow_update_full. */
>     OFPFME_INITIAL = 0,         /* Flow present when flow monitor created.
> */
>     OFPFME_ADDED = 1,           /* Flow was added. */
>     OFPFME_REMOVED = 2,         /* Flow was removed. */
>     OFPFME_MODIFIED = 3,        /* Flow instructions were changed. */
>
>     /* struct ofp14_flow_update_abbrev. */
>     OFPFME_ABBREV = 4,          /* Abbreviated reply. */
>
>     /* struct ofp14_flow_update_header. */
>     OFPFME_PAUSED = 5,          /* Monitoring paused (out of buffer
> space). */
>     OFPFME_RESUMED = 6,         /* Monitoring resumed. */
>
> Also please use the "14" infix for these enumeration members,
> e.g. OFPFME14_INITIAL.
>
> The OFPUTIL_FMF_* flags aren't really abstracted from NXFMF_* and
> OFPFMF14_*; they're just a copy of the OFPFMF14_* ones with the names
> changed.  I think it might be better to just use OFPFMF14_* with a note
> that NXFMF_* doesn't have NXFMF_ONLY_OWN.
>
> It's usually unnecessary to use a union of an ofp_port_t and an
> ofp11_port_t, because OVS can usually reject unsupported ports when it
> parses them from OpenFlow using ofputil_port_from_ofp11().  Maybe there
> is some exception here but that's not obvious to me yet.
>
> I don't see how a piece of code that looks at an
> ofputil_flow_monitor_request can tell whether to look at
> out_port.ofp_port or out_port.ofp11_port.
>
> Our usual style is to start a comment with a capital letter and end it
> with a period:
>
>         /* there is one to one mapping between ofp14_flow_update_event and
>          * ofputil_flow_update_event */
>
> The name ofputil_get_util_flow_update_event_from_nx_event() is pretty
> long and I don't know what the _util_ part of it is there for.
>
> In new code, please try to declare (and initialize) variables at their
> first use, when possible, rather than the older style we used of
> declaring variables at the top of a block.
>
> I think that ofputil_start_flow_update() should always use
> NXST_FLOW_MONITOR_REPLY for OpenFlow 1.0, so it seems to me that it
> should check for OFPUTIL_P_OF10_ANY rather than OFPUTIL_P_OF10_STD_ANY.
> (Or it could accept an OpenFlow version instead of a protocol.)
>
> I don't understand why ofputil_append_flow_update() checks for
> OFPUTIL_P_OF10_STD in particular.  It seems like any OF1.0 protocol
> would make sense.  (Or it could accept an OpenFlow version instead of a
> protocol.)
>
> In general I'm not sure of the rationale here for how OpenFlow versions
> are handled.  Currently, it looks like OVS supports flow monitoring in
> OF1.0 only.  The OpenFlow specification defines flow monitoring for
> OF1.4 and later and for OF1.3 as an "official extension" in extensions
> pack 2 (which you can find at
>
> https://www.opennetworking.org/wp-content/uploads/2014/10/openflow-extensions-1.3.x-pack2.zip
> ).
> So we should use the official specs for 1.3 and later.  For 1.1 and 1.2,
> we have a choice of supporting our extension or the OpenFlow version.  I
> don't have a particular preference.
>
> Thanks!  I'll look forward to the next revision.
>
_______________________________________________
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to