Hi, this is a rebase plus a number of issues handled in RARP activation patch, that is also now included in the series.
There are still several outstanding issues with the last, RARP activation, patch that need to be addressed. The rest of the series should be ready to merge and is independent of the RARP patch. Outstanding issues with RAPR activation patch: - 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. Changes included in this iteration: This is the same as v7 except build failures due to switch statements fixed. This series still misses the RARP activation strategy patch that will be sent separately. 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 | 468 +++++++++---- 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, 2330 insertions(+), 259 deletions(-) -- 2.34.1 _______________________________________________ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev