1. The ovn-northd.8.xml didn't cover the flow in the lr_in_arp_resolve stage.
2. The original test didn't really test the ecmp-symmetric-reply because the option takes effect only for gateway routers. This patch set the chassis to make the router a gateway router. Also, add the check for the ecmp-symmetric-reply related flow in the lr_in_arp_resolve stage.. Signed-off-by: Han Zhou <hz...@ovn.org> --- northd/ovn-northd.8.xml | 17 ++++++++++++++--- tests/ovn-northd.at | 4 ++++ 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/northd/ovn-northd.8.xml b/northd/ovn-northd.8.xml index 4784bff04..51e132239 100644 --- a/northd/ovn-northd.8.xml +++ b/northd/ovn-northd.8.xml @@ -3520,9 +3520,12 @@ output; <code>ct_label</code> value is used to choose the destination. The least significant 48 bits of the <code>ct_label</code> tell the destination MAC address to which the packet should be sent. The next 16 bits tell the - logical router port on which the packet should be sent. These values in - the <code>ct_label</code> are set when the initial ingress traffic is - received over the ECMP route. + logical router port on which the packet should be sent. These values are + saved to the <code>ct_label</code> when the initial ingress traffic is + received over the ECMP route and committed to conntrack. The + priority-10300 flows in this stage set the <code>outport</code>, + while the <code>eth.dst</code> is set by flows at the ARP/ND Resolution + stage. </p> <p> @@ -3881,6 +3884,14 @@ outport = <var>P</var> </p> </li> + <li> + <p> + Priority-200 flows that match ECMP reply traffic for the routes + configured to use symmetric replies, with actions + <code>eth.dst = ct_label.ecmp_reply_eth; next;</code>. + </p> + </li> + <li> <p> Static MAC bindings. MAC bindings can be known statically based on diff --git a/tests/ovn-northd.at b/tests/ovn-northd.at index 17d4f31b3..e661bd84d 100644 --- a/tests/ovn-northd.at +++ b/tests/ovn-northd.at @@ -5664,6 +5664,7 @@ ovn_start check ovn-sbctl chassis-add ch1 geneve 127.0.0.1 check ovn-nbctl lr-add lr0 +check ovn-nbctl set logical_router lr0 options:chassis=ch1 check ovn-nbctl ls-add public check ovn-nbctl lrp-add lr0 lr0-public 00:00:20:20:12:13 192.168.0.1/24 check ovn-nbctl lsp-add public public-lr0 @@ -5692,6 +5693,9 @@ AT_CHECK([grep -e "lr_in_ip_routing_ecmp" lr0flows | sed 's/192\.168\.0\..0/192. table=??(lr_in_ip_routing_ecmp), priority=100 , match=(reg8[[0..15]] == 1 && reg8[[16..31]] == 2), action=(reg0 = 192.168.0.??; reg1 = 192.168.0.1; eth.src = 00:00:20:20:12:13; outport = "lr0-public"; next;) table=??(lr_in_ip_routing_ecmp), priority=150 , match=(reg8[[0..15]] == 0), action=(next;) ]) +AT_CHECK([grep -e "lr_in_arp_resolve.*ecmp" lr0flows | sed 's/table=../table=??/'], [0], [dnl + table=??(lr_in_arp_resolve ), priority=200 , match=(ct.rpl && ct_label.ecmp_reply_port == 1), action=(eth.dst = ct_label.ecmp_reply_eth; next;) +]) # add ecmp route with wrong nexthop check ovn-nbctl --wait=sb --ecmp-symmetric-reply lr-route-add lr0 1.0.0.1 192.168.1.20 -- 2.30.2 _______________________________________________ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev