Re: [ovs-dev] [PATCH ovn v11 0/4] Support multiple requested-chassis
I merged patches 1-3 to main and branch-22.06. I will give patch 4 a look tomorrow. On 5/31/22 16:30, Ihar Hrachyshka wrote: 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 delet
[ovs-dev] [PATCH ovn v11 0/4] Support multiple requested-chassis
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 d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev