On Thu, Dec 27, 2012 at 2:37 PM, Ethan Jackson <et...@nicira.com> wrote:
>
>> Why shouldn't we give up in trace, as we do in the packet receive
>> path, if the port can't be found?  "trace" is supposed to match the
>> packet receive path (otherwise it isn't as useful).  I guess the
>> reason is that we don't have to, since the user specified the ofproto
>> name, but I think that we should anyway.
>
>
> There seems to be some contention on this point.  Currently, the unit tests
> rely on this behavior.  Specifically, you can do a trace without specifying
> an in_port and it will implicitly use OFPP_NONE.  In previous rounds of
> review, I had suggested that we remove this option, and require a valid
> in_port to trace.  Jesse suggested that this feature is important.  I really
> don't care either way.  Could you two please make a decision on the point?

I think the problem is that trace has historically been pretty loose
about whether the data that it is interpreting is userspace level
(i.e. OpenFlow) or kernel level.  It wasn't that important before
since they matched up pretty closely but with the single datapath
changes it's important that it's clear.

 * Userspace format: Anything that is logged by the core of userspace,
which will be after ODP/vlan/tunnel translation.  This can also
include exact match OpenFlow flows.  Here it's important to support
omitting the input port since it is commonly used with packet outs
(this is what I was talking about before).  We also shouldn't try to
do any translation and instead will take an ofproto and OpenFlow port.

 * Kernel format: Packets coming up from the kernel or existing flows.
 These definitely require translation and shouldn't require an ofproto
since it is implicit.  Miss upcalls should always have an input port.
There is one possible case for not having an input port, which is a
packet out that then gets sent to userspace, such as for sFlow.  It
probably doesn't make a lot of sense to trace these packets since
they're in the middle of an action list (and sFlow will just throw
them away anyways) so we could just disallow it.

 * Full packet: This one currently confuses the above two formats
since it expects both a userspace flow and kernel metadata like mark
and priority.  This will become a problem soon since with IPsec flow
based tunneling the mark can determine the input port.  In an ideal
world we would support both of the above modes independently and not
allow cross over.

If we start making the sematics clear that it will be a lot easier to
determine the right behavior.  For example, in the case of the unit
tests we should switch then from kernel style to userspace style.
_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to