On Tue, Jul 24, 2012 at 05:20:20PM -0700, Ben Pfaff wrote:
> On Wed, Jul 25, 2012 at 08:57:08AM +0900, Simon Horman wrote:
> > On Tue, Jul 24, 2012 at 11:53:49AM -0700, Ben Pfaff wrote:
> > > On Mon, Jul 23, 2012 at 03:16:31PM +0900, Simon Horman wrote:
> > > > Suggested by Isaku Yamahata
> > > > 
> > > > Cc: Isaku Yamahata <yamah...@valinux.co.jp?
> > > > Signed-off-by: Simon Horman <ho...@verge.net.au>
> > > 
> > > I don't think I agree with this idea.  There is no incompatibility
> > > between OXM and NXM and in fact the NXM classes are reserved
> > > explicitly in OF1.2 for Nicira use.  What's the benefit to omitting
> > > important details from a flow?
> > 
> > Is the implication of this that a parser should just ignore fields that it
> > doesn't understand?
> >
> > The reason that this came up was that I was testing OVS using Ryu and
> > Ryu does strict parsing, complaining bitterly if a field which it
> > doesn't understand is present.
> 
> No, I don't think a parser should ignore fields that it doesn't
> understand[*], and I think (without knowing anything about Ryu) that
> Ryu is probably doing the right thing.  Here are the two possibilities
> and my opinion on their implications:
> 
>         - OVS only sends OXM-defined fields in OXM contexts.  Suppose
>           a controller is initializing itself by dumping a flow table
>           and comparing against what it thinks should be there.  If an
>           NXM controller was running before, then the new controller
>           could see duplicate flows (that differ only in match fields
>           it doesn't see), and it could see flows that it thinks have
>           match fields it understands but really have hidden match
>           fields that it doesn't.  If it tries to delete or change any
>           of those flows, it can easily make the problem worse,
>           because it could create more "duplicates" or not match
>           anything for deletion because of the lack of the hidden
>           fields.  The controller could get very confused and just
>           foul everything up more and more over time.
> 
>         - OVS sends the full match, including NXM fields.  Consider
>           the same situation.  The controller may complain bitterly
>           but it can easily recognize what the situation is, which
>           gives it some clear options.  It could, for example, copy
>           the raw match bytewise into a flow_mod to delete those flows
>           individually, or it could just send a "delete all flows"
>           message.
> 
> [*] One exception is "packet-in" messages, where I think that the
>     controller should just ignore the extra metadata fields it doesn't
>     recognize.  There isn't the same problem as above in that
>     situation.  (That's why OVS has the "loose" versions of NXM/OXM
>     parsing.)

The test-case was using packet-in messages. So to clarify, it would
be best if Ryu ignored unknown OXM fields in packet-in messages?

With regards to non-packet-in messages, I'm also not sufficiently familiar
with Ryu to say what it should do. But in general I believe it would be up
to the Ryu application that is in use and providing the option to do loose
parsing seems logical to me.

_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to