The motivation of this series is to allow some sequences of actions
that include MPLS actions to be performed using recirculation.
Sequences of actions that could not previously be handled.
For example pop_mpls:0x0800,dec_ttl.
This uses recirculation after the pop_mpls action to allow access to L3
information of the inner packet which is used by the dec_ttl action.
This series begins by improving the existing recirculation infrastructure
and allowing output to bonding interfaces to work with recirculation
for packet_out messages with an in_port that is not present in the
datapath.
The series then builds on this to add recirculation for MPLS.
Key changes between v2 and v3
* Drop support for patch ports
* Rework support for packet out
- Broken out into separate patches which start by
adding infrastructure and using it for recirculation for bonding
Key changes between v1 and v2
* Support for: packet_out and patch ports
* More tests
In order for the test-suite to pass and "ofproto-dpif: MPLS recirculation"
to apply without a minor conflict the following patches are required:
[PATCH/RFC] ofproto-dpif-upcall: Filter translated mask using flow
[PATCH v3] ofproto: per-table statistics
And the following patch should be reverted
1f8675481e8cc976 "ofproto-dpif-upcall: Fix ovs-vswitchd crash."
To aid review this series and its dependencies are available in git
https://github.com/horms/openvswitch devel/mpls-flow-based-recirculation-v3
Simon Horman (16):
ofproto-dpif: Move recirc members from struct xlate_out to struct
xlate_ctx
ofproto-dpif: Add has_recirc field to struct xlate_out
dpif: Defer recirc actions in dpif_execute_helper_cb()
dpif: Allow hash actions in dpif_execute_helper_cb()
ofproto-dpif: Execute deferred recirc actions in
ofproto_dpif_execute_actions()
ofproto-dpif: Execute with helper if recirc actions are present
ofproto-dpif: Bonding with in_port that isn't present in the datapath
flow: Add mf_is_l3_or_higher()
ofproto-dpif: Add table_is_internal() helper
ofproto-dpif: Move RECIRC_RULE_PRIORITY to common header
ofproto-dpif: Add recirc_id field to struct rule_dpif
ofproto-dpif: Add idle_timeout parameter to
ofproto_dpif_add_internal_flow()
ofproto-dpif: MPLS recirculation
ofp-actions: Allow pop_mpls on MPLS packets
ofproto-dpif: Break out MPLS controller tests into their own test
ofproto-dpif: Add MPLS tests
lib/dpif.c | 40 +-
lib/dpif.h | 10 +
lib/meta-flow.h | 8 +
lib/ofp-actions.c | 6 -
ofproto/bond.c | 3 +-
ofproto/ofproto-dpif-xlate.c | 196 ++++++-
ofproto/ofproto-dpif-xlate.h | 4 +-
ofproto/ofproto-dpif.c | 154 ++++-
ofproto/ofproto-dpif.h | 8 +
tests/ofproto-dpif.at | 1268 +++++++++++++++++++++++++++++++++++-------
10 files changed, 1438 insertions(+), 259 deletions(-)
--
1.8.5.2
_______________________________________________
dev mailing list
[email protected]
http://openvswitch.org/mailman/listinfo/dev