-
Bug
-
Resolution: Done
-
Major
-
None
-
OVN FDP 24.C
-
None
-
True
-
-
False
-
Impediment
-
rhel-9
-
rhel-sst-network-fastdatapath-ovn
-
-
-
ssg_networking
-
+
Description:
ipv6 packets are always forwarding to the same gw when there are multiple ecmp routes
Version:
ovn23.09-23.09.3-5.el9
roducer:
1. server # foo -- R1 -- join - R2 -- alice -- | # | | server # bar ---- - R3 --- bob ---- | # systemctl start openvswitch systemctl start ovn-northd ovn-nbctl set-connection ptcp:6641 ovn-sbctl set-connection ptcp:6642 ovs-vsctl set open . external_ids:system-id=hv1 external_ids:ovn-remote=tcp:20.0.211.25:6642 external_ids:ovn-encap-type=geneve external_ids:ovn-encap-ip=20.0.211.25 systemctl restart ovn-controller ovn-nbctl lr-add R1 ovn-nbctl lr-add R2 ovn-nbctl lr-add R3 ovn-nbctl set logical_router R1 options:chassis=hv1 ovn-nbctl set logical_router R2 options:chassis=hv1 ovn-nbctl set logical_router R3 options:chassis=hv1 ovn-nbctl ls-add foo ovn-nbctl ls-add bar ovn-nbctl ls-add alice ovn-nbctl ls-add bob ovn-nbctl ls-add join ovn-nbctl lrp-add R1 foo 00:00:01:01:02:03 192.168.1.1/24 2001::1/64 ovn-nbctl lsp-add foo rp-foo -- set logical_switch_port rp-foo \ type=router options:router-port=foo addresses=\"00:00:01:01:02:03\" ovn-nbctl lrp-add R1 bar 00:00:01:01:02:04 192.168.2.1/24 2002::1/64 ovn-nbctl lsp-add bar rp-bar -- set Logical_Switch_Port rp-bar \ type=router options:router-port=bar addresses=\"00:00:01:01:02:04\" ovn-nbctl lrp-add R2 alice 00:00:02:01:02:03 172.16.1.1/24 3001::1/64 ovn-nbctl lsp-add alice rp-alice -- set Logical_Switch_Port rp-alice \ type=router options:router-port=alice addresses=\"00:00:02:01:02:03\" ovn-nbctl lrp-add R3 bob 00:00:03:01:02:03 172.17.1.1/24 3002::1/64 ovn-nbctl lsp-add bob rp-bob -- set Logical_Switch_Port rp-bob \ type=router options:router-port=bob addresses=\"00:00:03:01:02:03\" ovn-nbctl lrp-add R1 R1_join 00:00:04:01:02:03 20.0.0.1/24 4000::1/64 ovn-nbctl lsp-add join r1-join -- set Logical_Switch_Port r1-join \ type=router options:router-port=R1_join addresses='"00:00:04:01:02:03"' ovn-nbctl lrp-add R2 R2_join 00:00:04:01:02:04 20.0.0.2/24 4000::2/64 ovn-nbctl lsp-add join r2-join -- set Logical_Switch_Port r2-join \ type=router options:router-port=R2_join addresses='"00:00:04:01:02:04"' ovn-nbctl lrp-add R3 R3_join 00:00:04:01:02:05 20.0.0.3/24 4000::3/64 ovn-nbctl lsp-add join r3-join -- set Logical_Switch_Port r3-join \ type=router options:router-port=R3_join addresses='"00:00:04:01:02:05"' ovn-nbctl lr-route-add R2 192.168.0.0/16 20.0.0.1 ovn-nbctl lr-route-add R3 192.168.0.0/16 20.0.0.1 ovn-nbctl lr-route-add R2 2001::/64 4000::1 ovn-nbctl lr-route-add R2 2002::/64 4000::1 ovn-nbctl lr-route-add R3 2001::/64 4000::1 ovn-nbctl lr-route-add R3 2002::/64 4000::1 ovn-nbctl lr-route-add R2 1.1.1.0/24 172.16.1.3 ovn-nbctl lr-route-add R3 1.1.1.0/24 172.17.1.4 ovn-nbctl lr-route-add R2 1111::/64 3001::3 ovn-nbctl lr-route-add R3 1111::/64 3002::4 ovn-nbctl lsp-add bar bar1 -- lsp-set-addresses bar1 'f0:00:00:01:02:05 192.168.2.2 2002::2' ip netns add foo1 ovs-vsctl add-port br-int foo1 -- set interface foo1 type=internal ip link set foo1 netns foo1 ip netns exec foo1 ip link set foo1 address f0:00:00:01:02:03 ip netns exec foo1 ip link set foo1 up ip netns exec foo1 ip addr add 192.168.1.2/24 dev foo1 ip netns exec foo1 ip -6 addr add 2001::2/64 dev foo1 ip netns exec foo1 ip route add default via 192.168.1.1 dev foo1 ip netns exec foo1 ip -6 route add default via 2001::1 dev foo1 ovs-vsctl set interface foo1 external_ids:iface-id=foo1 ovn-nbctl lsp-add foo foo1 -- lsp-set-addresses foo1 "f0:00:00:01:02:03 192.168.1.2 2001::2" ovs-vsctl add-br br_alice ovs-vsctl add-br br_bob ovs-vsctl set open . external-ids:ovn-bridge-mappings=net_alice:br_alice,net_bob:br_bob ovn-nbctl lsp-add alice ln_alice ovn-nbctl lsp-set-type ln_alice localnet ovn-nbctl lsp-set-addresses ln_alice unknown ovn-nbctl lsp-set-options ln_alice network_name=net_alice ip netns add alice1 ovs-vsctl add-port br_alice alice1 -- set interface alice1 type=internal ip link set alice1 netns alice1 ip netns exec alice1 ip link set alice1 address f0:00:00:01:02:04 ip netns exec alice1 ip link set alice1 up ip netns exec alice1 ip addr add 172.16.1.3/24 dev alice1 ip netns exec alice1 ip -6 addr add 3001::3/64 dev alice1 ip netns exec alice1 ip route add default via 172.16.1.1 dev alice1 ip netns exec alice1 ip -6 route add default via 3001::1 dev alice1 ovn-nbctl lsp-add bob ln_bob ovn-nbctl lsp-set-type ln_bob localnet ovn-nbctl lsp-set-addresses ln_bob unknown ovn-nbctl lsp-set-options ln_bob network_name=net_bob ip netns add bob1 ip link add bob1 netns bob1 type veth peer name bob1_br ip netns exec bob1 ip link set bob1 address f0:00:00:01:02:06 ip netns exec bob1 ip link set bob1 up ip netns exec bob1 ip addr add 172.17.1.4/24 dev bob1 ip netns exec bob1 ip -6 addr add 3002::4/64 dev bob1 ip netns exec bob1 ip route add default via 172.17.1.1 dev bob1 ip netns exec bob1 ip -6 route add default via 3002::1 dev bob1 ip link set bob1_br up ovs-vsctl add-port br_bob bob1_br ip link add br_test type bridge ip link set br_test up ip link add a1 netns alice1 type veth peer name a1_br ip link add b1 netns bob1 type veth peer name b1_br ip link set a1_br master br_test ip link set b1_br master br_test ip link set a1_br up ip link set b1_br up ip netns exec alice1 ip link set a1 up ip netns exec bob1 ip link set b1 up ip netns exec alice1 ip addr add 1.1.1.1/24 dev a1 ip netns exec alice1 ip -6 addr add 1111::1/64 dev a1 ip netns exec bob1 ip addr add 1.1.1.2/24 dev b1 ip netns exec bob1 ip -6 addr add 1111::2/64 dev b1 ip netns exec alice1 sysctl -w net.ipv4.conf.all.forwarding=1 ip netns exec bob1 sysctl -w net.ipv4.conf.all.forwarding=1 ip netns exec alice1 sysctl -w net.ipv6.conf.all.forwarding=1 ip netns exec bob1 sysctl -w net.ipv6.conf.all.forwarding=1 ip netns add server ip link add s1 netns server type veth peer name s1_br ip link set s1_br master br_test ip link set s1_br up ip netns exec server ip link set s1 up ip netns exec server ip addr add 1.1.1.10/24 dev s1 ip netns exec server ip route add default via 1.1.1.1 dev s1 ip netns exec server ip -6 addr add 1111::10/64 dev s1 ip netns exec server ip -6 route add default via 1111::1 dev s1 ip netns exec server sysctl -w net.ipv4.conf.all.rp_filter=0 ip netns exec server sysctl -w net.ipv4.conf.default.rp_filter=0 ovn-nbctl --ecmp-symmetric-reply lr-route-add R1 0.0.0.0/0 20.0.0.2 ovn-nbctl --ecmp-symmetric-reply lr-route-add R1 0.0.0.0/0 20.0.0.3 ovn-nbctl --ecmp-symmetric-reply lr-route-add R1 ::/0 4000::2 ovn-nbctl --ecmp-symmetric-reply lr-route-add R1 ::/0 4000::3 ovn-nbctl --wait=hv sync 2. client systemctl start openvswitch ovs-vsctl set open . external_ids:system-id=hv0 external_ids:ovn-remote=tcp:20.0.211.25:6642 external_ids:ovn-encap-type=geneve external_ids:ovn-encap-ip=20.0.211.26 systemctl restart ovn-controller ip netns add bar1 ip link add bar1 netns bar1 type veth peer name bar1_br ip netns exec bar1 ip link set bar1 address f0:00:00:01:02:05 ip netns exec bar1 ip link set bar1 up ip netns exec bar1 ip addr add 192.168.2.2/24 dev bar1 ip netns exec bar1 ip -6 addr add 2002::2/64 dev bar1 ip netns exec bar1 ip route add default via 192.168.2.1 dev bar1 ip netns exec bar1 ip -6 route add default via 2002::1 dev bar1 ip link set bar1_br up ovs-vsctl add-port br-int bar1_br ovs-vsctl set interface bar1_br external_ids:iface-id=bar1 3. start ncat on server ip netns exec server ncat -6 -l -k 10013 & 4. connect to server on both foo1 and bar1 for i in {1..100}; do ip netns exec bar1 ncat 1111::10 10013 <<< h; done for i in {1..100}; do ip netns exec foo1 ncat 1111::10 10013 <<< h; done
actual result:
all packets are sent through the same gw (alice1 or bob1), not distributed
packets can't be captured on alice1 or bob1
expected result:
packet should be distributed between the 2 gw (alice1 and bob1)
packets can't be captured on both alice1 and bob1
[root@wsfd-advnetlab18 FDP-371]# rpm -qa | grep -E "openvswitch|ovn"
openvswitch-selinux-extra-policy-1.0-34.el9fdp.noarch
openvswitch3.2-3.2.0-63.el9fdp.x86_64
python3-openvswitch3.2-3.2.0-63.el9fdp.x86_64
ovn23.09-23.09.3-5.el9fdp.x86_64
ovn23.09-central-23.09.3-5.el9fdp.x86_64
ovn23.09-host-23.09.3-5.el9fdp.x86_64
[root@wsfd-advnetlab18 FDP-371]# ovn-nbctl lr-route-list R1 IPv4 Routes Route Table <main>: 0.0.0.0/0 20.0.0.2 dst-ip ecmp ecmp-symmetric-reply 0.0.0.0/0 20.0.0.3 dst-ip ecmp ecmp-symmetric-reply IPv6 Routes Route Table <main>: ::/0 4000::2 dst-ip ecmp ecmp-symmetric-reply ::/0 4000::3 dst-ip ecmp ecmp-symmetric-reply