[ovs-dev] [PATCH 0/2] avoid using xport_lookup() in case of recirculation

Zoltan Balogh zoltan.balogh at ericsson.com
Fri Jan 12 13:34:09 UTC 2018


The main goal of this series is to avoid invocation of xlate_lookup() in case
of recirculation (except recirc due to bond), because it can return pointer to
a wrong xport.
For instance, if L3 packet with MPLS label is received on a L3 tunnel port and
pop_mpls + resubmit actions are performed, then first packet_type is changed
due to pushing a dummy ethernet header, MPLS label is removed, then resubmit
action is processed. This triggers recirculation, where xport_lookup() fails
due to former change of packet_type. 

The series introduces UUID for xport and stores the UUID of first xport packet
was received on in frozen state in case of recirculation. So, when upcall is
processed due to recirculation then xport can be found by using the saved UUID
and xlate_lookup() should not be invoked.

Zoltan Balogh (2):
  ofproto-dpif-xlate: add uuid to xports
  xlate: fix xport lookup for recirc

 ofproto/ofproto-dpif-rid.c   |   5 +-
 ofproto/ofproto-dpif-rid.h   |   1 +
 ofproto/ofproto-dpif-xlate.c |  64 +++++++++++++++++++++++
 ofproto/ofproto-dpif-xlate.h |   4 ++
 tests/packet-type-aware.at   | 122 +++++++++++++++++++++++++++++++++++++++++++
 5 files changed, 195 insertions(+), 1 deletion(-)

-- 
2.14.1



More information about the dev mailing list