Another respin. Still the RARP activation strategy patch has pending
questions to resolve. The rest are ready to merge.
RARP activation strategy patch limitations, reiterated:
- flows are deleted from pinctrl thread; the idea would be to make the
thread inform main thread about the necessary flow modifications and
then handle the actual flow manipulation from main;
- flows should be removed with ofctrl module to also updated
desired_flows table, avoiding duplicate flow deletes;
- run_activated_ports should not destroy() the list of activated ports
until it's sure that the activation information is committed to db;
- (optional) test case to check that activation flows are cleared even
when db is down.
v11: int -> size_t changes for iterations over ovsdb list fields.
v11: memleak resolved in consider_port_binding.
v11: rebased, conflicts resolved.
v10: compiler warning fixed.
v9: removed unnecessary OVN action (new opcode is enough).
v9: set all flows in PHY tables.
v9: fixed pinctrl handler sending DELETEs for incorrect matches.
v9: added test checks for behavior of activation-strategy when a port on
the chassis that is additional for another port sends packets to the
latter.
v9: (WIP) included a test scenario to validate activation when
ovsdb-server is down (currently skipped because vswitchd doesn't
deliver packets to controller() handler when ovsdb-server is down).
v8: build warnings fixed.
v7: dropped the patch that tags all traffic from tunnels as LOCAL_ONLY
(unneeded now that this series doesn't handle local traffic in
remote table).
v7: local_binding_set_up: don't set up when pb->chassis is NULL.
v7: added more test scenarios: 3 chassis, flipping chassis roles (main
to additional and vice versa), check behavior when one of chassis
doesn't claim a port.
v7: don't update_lport_tracking when port is not newly claimed.
v7: release localports from additional chassis too.
v7: properly handle binding when ->chassis not set but chassis name can
be found in the requested-chassis option.
v7: refactored consider_port_binding to simplify the logic, remove
redundant code paths.
v7: remove redundant flows that were left from prior versions of the
series.
v6: rebased, solved git conflicts.
v5: moved activation flows from table=8 to table=0.
v5: removed pause=true from rarp activation flow since we don't rely on
continuations.
v5: make rarp handle resubmit() admitted RARP packet to table=8. This
allows to avoid holding pending packets / waiting for flows deleted
etc.
v5: when cloning packets destined to a local binding to additional
chassis, clone them to tunnels in table=37, not table=38, to stay
consistent with tables' intent.
v5: dropped patch that added chassis-mirroring-enabled option. The
option doesn't resolve the ARP flipping issue. Instead, just
document the behavior of localnet attached switches when ports are
multi-chassis.
v5: (minor) set match's port and dp key inside
put_remote_port_redirect_overlay.
v4: redesign to reuse requested-chassis option
v4: support >2 chassis per port
v4: allow to disable tunneling enforcement when n_chassis >= 2
v3: re-sent as a single series
v2: added ddlog implementation
v2: re-inject RARP packet after vswitch updates flows
v1: split into pieces
v1: renamed options: migration-destination ->
requested-additional-chassis,
migration-unblocked ->
additional-chassis-activated
v1: introduced options:activation-strategy=rarp to allow for other
strategies / having default no-op strategy
v1: implement in-memory port-activated tracking to avoid races
v1: numerous code cleanup / bug fixes
v1: special handling for localnet attached switches
v0: initial draft (single patch)
Ihar Hrachyshka (4):
Update port-up on main chassis only
Support LSP:options:requested-chassis as a list
Clone packets to all port chassis
Implement RARP activation strategy for ports
NEWS | 3 +
controller/binding.c | 303 +++++++--
controller/binding.h | 5 +
controller/if-status.c | 15 +-
controller/if-status.h | 1 +
controller/lport.c | 46 +-
controller/lport.h | 11 +-
controller/ovn-controller.c | 4 +-
controller/physical.c | 462 +++++++++----
controller/pinctrl.c | 226 ++++++-
controller/pinctrl.h | 5 +
include/ovn/actions.h | 3 +
northd/northd.c | 72 +-
northd/ovn-northd.c | 7 +-
ovn-nb.xml | 40 +-
ovn-sb.ovsschema | 17 +-
ovn-sb.xml | 87 ++-
tests/ovn.at | 1276 +++++++++++++++++++++++++++++++++++
18 files changed, 2329 insertions(+), 254 deletions(-)
--
2.34.1
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev