On 10/15/25 12:51 PM, Ales Musil wrote: > On Tue, Oct 14, 2025 at 2:14 PM Dumitru Ceara via dev < > [email protected]> wrote: > >> The new m_setup_*() helpers configure the Linux interfaces and bridges >> while the m_config_*() helpers set up the FRR configuration and >> additional VRFs (if needed). >> >> This allows the m_setup_*() macros to be reused by upcoming commits for >> other similar BGP tests. >> >> Signed-off-by: Dumitru Ceara <[email protected]> >> --- >> tests/multinode-bgp-macros.at | 65 +++++++++++++++++++++++++++++------ >> tests/multinode.at | 24 ++++++++----- >> 2 files changed, 70 insertions(+), 19 deletions(-) >> >> diff --git a/tests/multinode-bgp-macros.at b/tests/multinode-bgp-macros.at >> index d41892b5eb..06d1806eae 100644 >> --- a/tests/multinode-bgp-macros.at >> +++ b/tests/multinode-bgp-macros.at >> @@ -44,14 +44,13 @@ m_setup_external_frr_vrf() { >> check m_as $node $ns_prefix ip link set $lo up >> } >> >> -# m_setup_external_frr_router NODE BGP_AS BGP_ROUTER_ID BGP_IP BGP_MAC >> [VNI] >> +# m_setup_external_frr_router NODE BGP_IP >> # >> # Sets up an external FRR BGP speaker in a network namespace on the >> -# ovn-fake-multinode node NODE. The BGP autonomous system is configured >> to be >> -# BGP_AS. The speaker uses as BGP IP address, BGP_IP and BGP_MAC as mac >> +# ovn-fake-multinode node NODE. The speaker uses as BGP IP address, >> BGP_IP. >> # address. >> m_setup_external_frr_router() { >> - local node=$1 bgp_as=$2 bgp_router_id=$3 bgp_ip=$4 bgp_mac=$5 vni=$6 >> + local node=$1 bgp_ip=$2 >> local br_name=br-$node >> >> check m_as $node ovs-vsctl add-br $br_name >> @@ -95,6 +94,17 @@ m_setup_external_frr_router() { >> fi >> on_exit "m_as $node systemctl stop frr" >> check m_as $node systemctl start frr >> +} >> + >> +# m_config_external_frr_router NODE BGP_AS BGP_ROUTER_ID BGP_IP BGP_MAC >> [VNI] >> +# >> +# Configures an external FRR BGP speaker in a network namespace on the >> +# ovn-fake-multinode node NODE. The BGP autonomous system is configured >> to be >> +# BGP_AS. The speaker uses as BGP IP address, BGP_IP and BGP_MAC as mac >> +# address. >> +m_config_external_frr_router() { >> + local node=$1 bgp_as=$2 bgp_router_id=$3 bgp_ip=$4 bgp_mac=$5 vni=$6 >> + local br_name=br-$node >> >> frr_flags="-N frr-ns" >> if m_is_fedora; then >> @@ -173,17 +183,17 @@ m_ovn_frr_switch_localnet_port_name() { >> } >> >> # m_setup_ovn_frr_router NODE BGP_AS BGP_IP BGP_MAC VNI >> +# m_setup_ovn_frr_router NODE BGP_MAC VNI >> # >> # Sets up an FRR BGP speaker in a VRF in the default network namespace on >> the >> # ovn-fake-multinode node NODE. This speaker is running on an interface >> bound >> -# to a local OVN logical switch, ls-NODE-ext0, and uses the same BGP_IP >> and >> -# BGP_MAC address as a logical router, lr-NODE-ext0, with >> -# routing-protocol-redirect enabled. >> +# to a local OVN logical switch, ls-NODE-ext0, and uses the same BGP_MAC >> +# address as a logical router, lr-NODE-ext0, with >> routing-protocol-redirect >> +# enabled. >> # >> -# The BGP autonomous system is configured to be BGP_AS and the FRR >> instance >> -# runs in vrf VNI. >> +# The FRR instance runs in vrf VNI. >> m_setup_ovn_frr_router() { >> - local node=$1 bgp_as=$2 bgp_ip=$3 bgp_mac=$4 vni=$5 >> + local node=$1 bgp_mac=$2 vni=$3 >> local br_name=br-$node physnet=physnet_${node}_ext0 >> local lr=$(m_ovn_frr_router_name $node) >> local lrp=$(m_ovn_frr_router_port_name $node) >> @@ -243,8 +253,21 @@ m_setup_ovn_frr_router() { >> >> check multinode_nbctl --wait=hv sync >> m_wait_for_ports_up >> +} >> >> - echo "configure >> +# m_config_ovn_frr_router NODE BGP_AS BGP_IP VNI >> +# >> +# Configures an FRR BGP speaker in a VRF in the default network namespace >> on >> +# the ovn-fake-multinode node NODE. This speaker is running on an >> interface >> +# bound to a local OVN logical switch, ls-NODE-ext0, and uses the same >> BGP_IP >> +# as a logical router, lr-NODE-ext0, with routing-protocol-redirect >> enabled. >> +# >> +# The BGP autonomous system is configured to be BGP_AS and the FRR >> instance >> +# runs in vrf VNI. >> +m_config_ovn_frr_router() { >> + local node=$1 bgp_as=$2 bgp_ip=$3 vni=$4 >> + >> +echo "configure >> ip prefix-list no-default seq 5 deny 0.0.0.0/0 >> ip prefix-list no-default seq 10 permit 0.0.0.0/0 le 32 >> >> @@ -338,6 +361,26 @@ m_setup_host_frr_router() { >> # Configure the BGP IP on the bridge LOCAL interface. >> check m_as $node ip addr add $bgp_ip dev $br_name >> check m_as $node ip link set $br_name up >> +} >> + >> +# m_config_host_frr_router NODE BGP_AS BGP_ROUTER_ID BGP_IP BGP_MAC VNI >> +# >> +# Sets up an FRR BGP speaker in the default network namespace on the >> +# ovn-fake-multinode node NODE. This speaker is running on a ovs bridge >> +# interface (simulating the fabric connection). >> +# >> +# The BGP autonomous system is configured to be BGP_AS and the FRR >> instance >> +# runs in vrf-VNI. >> +m_config_host_frr_router() { >> + local node=$1 bgp_as=$2 bgp_router_id=$3 bgp_ip=$4 bgp_mac=$5 vni=$6 >> + >> + local br_name=br-$node physnet=physnet_${node}_ext0 >> + local lr=$(m_ovn_frr_router_name $node) >> + local lrp=$(m_ovn_frr_router_port_name $node) >> + local ls=$(m_ovn_frr_switch_name $node) >> + local lsp=$(m_ovn_frr_switch_port_name $node) >> + local lsp_bgp=$(m_ovn_frr_switch_bgp_port_name $node) >> + local lsp_ln=$(m_ovn_frr_switch_localnet_port_name $node) >> >> # NOTE: we set "no bgp ebgp-requires-policy" to simplify EVPN >> deployments. >> echo "configure >> diff --git a/tests/multinode.at b/tests/multinode.at >> index de61903d71..604a9bd0f2 100644 >> --- a/tests/multinode.at >> +++ b/tests/multinode.at >> @@ -3055,11 +3055,15 @@ add_guest_vm_and_connections() { >> $default_route $default_route_gw $lrp_guest_join >> } >> >> -m_setup_external_frr_router ovn-gw-1 4200000100 41.41.41.41 >> 41.41.41.41/32 12:fb:d6:66:99:0c >> -m_setup_ovn_frr_router ovn-gw-1 4210000000 14.14.14.14 >> 12:fb:d6:66:99:1c 10 >> +m_setup_external_frr_router ovn-gw-1 >> 41.41.41.41/32 >> +m_config_external_frr_router ovn-gw-1 4200000100 41.41.41.41 >> 41.41.41.41/32 12:fb:d6:66:99:0c >> +m_setup_ovn_frr_router ovn-gw-1 >> 12:fb:d6:66:99:1c 10 >> +m_config_ovn_frr_router ovn-gw-1 4210000000 14.14.14.14 >> 10 >> >> -m_setup_external_frr_router ovn-gw-2 4200000200 42.42.42.42 >> 42.42.42.42/32 22:fb:d6:66:99:0c >> -m_setup_ovn_frr_router ovn-gw-2 4210000000 24.24.24.24 >> 22:fb:d6:66:99:2c 20 >> +m_setup_external_frr_router ovn-gw-2 >> 42.42.42.42/32 >> +m_config_external_frr_router ovn-gw-2 4200000200 42.42.42.42 >> 42.42.42.42/32 22:fb:d6:66:99:0c >> +m_setup_ovn_frr_router ovn-gw-2 >> 22:fb:d6:66:99:2c 20 >> +m_config_ovn_frr_router ovn-gw-2 4210000000 24.24.24.24 >> 20 >> >> OVS_WAIT_UNTIL([m_as ovn-gw-2 vtysh -c 'show bgp vrf ovnvrf20 neighbors' >> | grep -qE 'Connections established 1']) >> OVS_WAIT_UNTIL([m_as ovn-gw-1 vtysh -c 'show bgp vrf ovnvrf10 neighbors' >> | grep -qE 'Connections established 1']) >> @@ -3641,11 +3645,15 @@ host_bgp_mac_gw2=00:00:00:02:00:$vni >> check m_as ovn-gw-1 ovs-vsctl set open . >> external-ids:ovn-evpn-vxlan-ports=4789 >> check m_as ovn-gw-2 ovs-vsctl set open . >> external-ids:ovn-evpn-vxlan-ports=4789 >> >> -m_setup_external_frr_router ovn-gw-1 4200000100 $ext_bgp_ip_gw1 >> $ext_bgp_ip_gw1/24 $ext_bgp_mac_gw1 $vni >> -m_setup_host_frr_router ovn-gw-1 4210000000 $host_bgp_ip_gw1 >> $host_bgp_ip_gw1/24 $host_bgp_mac_gw1 $vni >> +m_setup_external_frr_router ovn-gw-1 >> $ext_bgp_ip_gw1/24 >> +m_config_external_frr_router ovn-gw-1 4200000100 $ext_bgp_ip_gw1 >> $ext_bgp_ip_gw1/24 $ext_bgp_mac_gw1 $vni >> +m_setup_host_frr_router ovn-gw-1 4210000000 $host_bgp_ip_gw1 >> $host_bgp_ip_gw1/24 $host_bgp_mac_gw1 $vni >> +m_config_host_frr_router ovn-gw-1 4210000000 $host_bgp_ip_gw1 >> $host_bgp_ip_gw1/24 $host_bgp_mac_gw1 $vni >> >> -m_setup_external_frr_router ovn-gw-2 4200000200 $ext_bgp_ip_gw2 >> $ext_bgp_ip_gw2/24 $ext_bgp_mac_gw2 $vni >> -m_setup_host_frr_router ovn-gw-2 4210000000 $host_bgp_ip_gw2 >> $host_bgp_ip_gw2/24 $host_bgp_mac_gw2 $vni >> +m_setup_external_frr_router ovn-gw-2 >> $ext_bgp_ip_gw2/24 >> +m_config_external_frr_router ovn-gw-2 4200000200 $ext_bgp_ip_gw2 >> $ext_bgp_ip_gw2/24 $ext_bgp_mac_gw2 $vni >> +m_setup_host_frr_router ovn-gw-2 4210000000 $host_bgp_ip_gw2 >> $host_bgp_ip_gw2/24 $host_bgp_mac_gw2 $vni >> +m_config_host_frr_router ovn-gw-2 4210000000 $host_bgp_ip_gw2 >> $host_bgp_ip_gw2/24 $host_bgp_mac_gw2 $vni >> >> OVS_WAIT_UNTIL([m_as ovn-gw-1 vtysh -c 'show bgp neighbors' | grep -qE >> 'Connections established 1']) >> OVS_WAIT_UNTIL([m_as ovn-gw-2 vtysh -c 'show bgp neighbors' | grep -qE >> 'Connections established 1']) >> -- >> 2.51.0 >> >> _______________________________________________ >> dev mailing list >> [email protected] >> https://mail.openvswitch.org/mailman/listinfo/ovs-dev >> >> > Looks good to me, thanks. > Acked-by: Ales Musil <[email protected]> >
Thanks, Ales, applied to main and 25.09. I also fixed up the "The tunnels need to be created before the call to" comment (the same issue you had spotted on patch 4/4). Regards, Dumitru _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
