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: > >> While the existing tests don't really need this explicitly, an upcoming >> commit (adding a multinode L3 EVPN test) will need it. It's better to >> have fixed addresses anyway. >> >> Signed-off-by: Dumitru Ceara <[email protected]> >> --- >> tests/multinode-bgp-macros.at | 35 ++++++++++++++++++++--------------- >> tests/multinode.at | 20 ++++++++++++-------- >> 2 files changed, 32 insertions(+), 23 deletions(-) >> >> diff --git a/tests/multinode-bgp-macros.at b/tests/multinode-bgp-macros.at >> index 95273af847..d41892b5eb 100644 >> --- a/tests/multinode-bgp-macros.at >> +++ b/tests/multinode-bgp-macros.at >> @@ -4,12 +4,12 @@ >> >> OVS_START_SHELL_HELPERS >> >> -# m_setup_external_frr_vrf NODE VNI LOCAL_IP NETNS >> +# m_setup_external_frr_vrf NODE VNI VXLAN_IP LOCAL_MAC LOCAL_IP NETNS >> # >> # Sets up a VRF in NETNS so that it can be used by FRR running in that >> # namespace to advertise EVPN routes. >> m_setup_external_frr_vrf() { >> - local node=$1 vni=$2 local_ip=$3 ns=$4 >> + local node=$1 vni=$2 vxlan_ip=$3 local_mac=$4 local_ip=$5 ns=$6 >> >> local ns_prefix="ip netns exec $ns " >> local vrf=vrf-$vni >> @@ -25,10 +25,13 @@ m_setup_external_frr_vrf() { >> check m_as $node $ns_prefix ip link add $br type bridge >> on_exit "m_as $node $ns_prefix ip link del $br" >> check m_as $node $ns_prefix ip link set $br master $vrf addrgenmode >> none >> + check m_as $node $ns_prefix ip link set $br address $local_mac >> + check m_as $node $ns_prefix ip addr add dev $br $local_ip >> check m_as $node $ns_prefix ip link set dev $br up >> >> # Add VXLAN VTEP for the VNI. >> - check m_as $node $ns_prefix ip link add $vxlan type vxlan id $vni >> dstport 4789 local $local_ip nolearning >> + check m_as $node $ns_prefix ip link add $vxlan type vxlan \ >> + id $vni dstport 4789 local $vxlan_ip nolearning >> on_exit "m_as $node $ns_prefix ip link del $vxlan" >> check m_as $node $ns_prefix ip link set dev $vxlan up >> check m_as $node $ns_prefix ip link set $vxlan master $br >> @@ -41,13 +44,14 @@ 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 [VNI] >> +# m_setup_external_frr_router NODE BGP_AS BGP_ROUTER_ID BGP_IP BGP_MAC >> [VNI] >> # >> # 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 >> +# BGP_AS. The speaker uses as BGP IP address, BGP_IP and BGP_MAC as mac >> +# address. >> m_setup_external_frr_router() { >> - local node=$1 bgp_as=$2 bgp_router_id=$3 bgp_ip=$4 vni=$5 >> + local node=$1 bgp_as=$2 bgp_router_id=$3 bgp_ip=$4 bgp_mac=$5 vni=$6 >> local br_name=br-$node >> >> check m_as $node ovs-vsctl add-br $br_name >> @@ -120,9 +124,9 @@ m_setup_external_frr_router() { >> " | podman exec -i $node vtysh $frr_flags >> >> # Configure VRF, if any provided. >> - bgp_ip=$(echo $bgp_ip | cut -f 1 -d '/') >> + vxlan_ip=$(echo $bgp_ip | cut -f 1 -d '/') >> if [[[ -n "$vni" ]]]; then >> - m_setup_external_frr_vrf $node $vni $bgp_ip frr-ns >> + m_setup_external_frr_vrf $node $vni $vxlan_ip $bgp_mac $bgp_ip >> frr-ns >> fi >> } >> >> @@ -266,12 +270,12 @@ m_setup_ovn_frr_router() { >> " | podman exec -i $node vtysh >> } >> >> -# m_setup_host_frr_vrf NODE VNI LOCAL_IP >> +# m_setup_host_frr_vrf NODE VNI VXLAN_IP LOCAL_MAC LOCAL_IP >> # >> # Sets up a VRF in the default net namespace so that it can be used by OVN >> # and FRR to advertise EVPN routes. >> m_setup_host_frr_vrf() { >> - local node=$1 vni=$2 local_ip=$3 >> + local node=$1 vni=$2 vxlan_ip=$3 local_mac=$4 local_ip=$5 >> >> local vrf=vrf-$vni >> local br=br-$vni >> @@ -288,6 +292,7 @@ m_setup_host_frr_vrf() { >> check m_as $node ip link add $br type bridge >> on_exit "m_as $node ip link del $br" >> check m_as $node ip link set $br master $vrf addrgenmode none >> + check m_as $node ip link set $br address $local_mac >> check m_as $node ip link set dev $br up >> >> # Add VXLAN VTEP for the VNI (linked to the OVS vxlan_sys_<port> >> interface). >> @@ -298,7 +303,7 @@ m_setup_host_frr_vrf() { >> local dstport=$((60000 + $vni)) >> check m_as $node ip link add $vxlan type vxlan \ >> dev vxlan_sys_${vxlan_port} \ >> - id $vni dstport $dstport local $local_ip nolearning >> + id $vni dstport $dstport local $vxlan_ip nolearning >> on_exit "m_as $node ip link del $vxlan" >> check m_as $node ip link set dev $vxlan up >> check m_as $node ip link set $vxlan master $br >> @@ -311,7 +316,7 @@ m_setup_host_frr_vrf() { >> check m_as $node ip link set $lo up >> } >> >> -# m_setup_host_frr_router NODE BGP_AS BGP_ROUTER_ID BGP_IP VNI >> +# m_setup_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 >> @@ -320,7 +325,7 @@ m_setup_host_frr_vrf() { >> # The BGP autonomous system is configured to be BGP_AS and the FRR >> instance >> # runs in vrf-VNI. >> m_setup_host_frr_router() { >> - local node=$1 bgp_as=$2 bgp_router_id=$3 bgp_ip=$4 vni=$5 >> + 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) >> @@ -363,8 +368,8 @@ m_setup_host_frr_router() { >> " | podman exec -i $node vtysh >> >> # Configure VRF. >> - bgp_ip=$(echo $bgp_ip | cut -f 1 -d '/') >> - m_setup_host_frr_vrf $node $vni $bgp_ip >> + vxlan_ip=$(echo $bgp_ip | cut -f 1 -d '/') >> + m_setup_host_frr_vrf $node $vni $vxlan_ip $bgp_mac $bgp_ip >> } >> >> OVS_END_SHELL_HELPERS >> diff --git a/tests/multinode.at b/tests/multinode.at >> index c6a414af3f..de61903d71 100644 >> --- a/tests/multinode.at >> +++ b/tests/multinode.at >> @@ -3055,11 +3055,11 @@ 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 >> -m_setup_ovn_frr_router <http://41.41.41.41/32-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 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-2 4200000200 42.42.42.42 >> 42.42.42.42/32 >> -m_setup_ovn_frr_router <http://42.42.42.42/32-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 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 >> >> 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']) >> @@ -3624,9 +3624,13 @@ CHECK_VRF() >> >> vni=10 >> ext_bgp_ip_gw1=42.42.$vni.11 >> +ext_bgp_mac_gw1=00:00:01:00:00:$vni >> host_bgp_ip_gw1=42.42.$vni.12 >> +host_bgp_mac_gw1=00:00:00:01:00:$vni >> ext_bgp_ip_gw2=42.42.$vni.21 >> +ext_bgp_mac_gw2=00:00:02:00:00:$vni >> host_bgp_ip_gw2=42.42.$vni.22 >> +host_bgp_mac_gw2=00:00:00:02:00:$vni >> >> # Create an flat, distributed OVN localnet switch, with EVPN configured. >> check m_as ovn-gw-1 ovs-vsctl set open . >> external-ids:ovn-bridge-mappings=public:br-ex >> @@ -3637,11 +3641,11 @@ host_bgp_ip_gw2=42.42.$vni.22 >> 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 $vni >> -m_setup_host_frr_router ovn-gw-1 4210000000 $host_bgp_ip_gw1 >> $host_bgp_ip_gw1/24 $vni >> +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-2 4200000200 $ext_bgp_ip_gw2 >> $ext_bgp_ip_gw2/24 $vni >> -m_setup_host_frr_router ovn-gw-2 4210000000 $host_bgp_ip_gw2 >> $host_bgp_ip_gw2/24 $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 >> >> 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, for the review! Applied to main and 25.09. Regards, Dumitru _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
