On 17 March 2015 at 15:00, Jarno Rajahalme <jrajaha...@nicira.com> wrote:
>
> On Mar 17, 2015, at 2:01 PM, Ben Pfaff <b...@nicira.com> wrote:
>
> On Fri, Mar 13, 2015 at 04:52:00PM -0700, Jarno Rajahalme wrote:
>
> xlate_actions() now considers an optional recirculation context (via
> 'xin') and restores OpenFlow pipeline metadata (registers, 'metadata',
> etc.) based on it.  The recirculation context may contain an action
> set and stack to be restored and further actions to be executed upon
> recirculation.  It also contains a table_id number to be used for rule
> lookup in cases where no post-recirculation actions are used.
>
> The translation context internal metadata is restored using a new
> internal action: UNROLL_XLATE action stores the translation context
> data visible to OpenFlow controllers via PACKET_IN messages.  This
> includes the current table number and the current rule cookie.
> UNROLL_XLATE actions are inserted only when the remaining actions may
> generate PACKET_IN messages.
>
> These changes allow the post-MPLS recirculation to properly continue
> with the pipeline metadata that existed at the time of recirculation.
>
> The internal table is still consulted for bonds.
>
> Signed-off-by: Jarno Rajahalme <jrajaha...@nicira.com>
>
>
> I'm a little concerned about ukey_create_from_dpif_flow(), which seems
> to get called whenever the datapath does not support ufids.  It seems
> to reject recirculation actions in that case.  Does that mean that
> userspace becomes incompatible (if any recirculation is attempted)
> with older datapaths?  I think that is what happens, but I don't think
> that is the intent.
>
>
> The only user of key_create_from_dpif_flow() has this comment just above:
>
>         /* Usually we try to avoid installing flows from revalidator
> threads,
>          * because locking on a umap may cause handler threads to block.
>          * However there are certain cases, like when ovs-vswitchd is
>          * restarted, where it is desirable to handle flows that exist in
> the
>          * datapath gracefully (ie, don't just clear the datapath). */
>
> It seems to me that the dpif-layer always provides the ufid, by hashing from
> the flow key. By looking at lib/dpif-netlink.c parse_odp_packet(), it seems
> that the upcall’s ufid is always hashed from the datapath key, regardless of
> the presence of an FLOW_ATTR_UKEY. So there should not be a problem here.
> Maybe Joe could confirm this?

Sorry, missed this email earlier. Correct, the dpif layer is expected
to always provide a UFID, regardless of support further down.
_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to