[ovs-dev] [PATCH 02/24] nx-match: Do not include NXM only matches when putting an OMX match

Ben Pfaff blp at nicira.com
Wed Jul 25 02:22:51 UTC 2012


On Wed, Jul 25, 2012 at 09:40:07AM +0900, Simon Horman wrote:
> 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 <yamahata at valinux.co.jp?
> > > > > Signed-off-by: Simon Horman <horms at 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?

Yes, I think so.

(What unexpected metadata fields was Ryu getting?)



More information about the dev mailing list