Hi Neale, Thanks for your reply. The bugfix partly solved the issue - VRRP goes into master/backup and keeps stable for a while. Unfortunately, it changes back to master/master after some time (15 minutes - 1 hour). We are currently trying to get more details and will come back to you.
But thanks for your support so far, BR/Mechthild From: Neale Ranns <ne...@graphiant.com> Sent: Thursday, 24 June 2021 12:33 To: Mechthild Buescher <mechthild.buesc...@ericsson.com>; vpp-dev@lists.fd.io Subject: Re: VRRP issue when using interface in a table Hi Mechthild, You'll need to include: https://gerrit.fd.io/r/c/vpp/+/32298<https://protect2.fireeye.com/v1/url?k=43a4cf37-1c3ff635-43a48fac-869a14f4b08c-2b79380bed927e16&q=1&e=c3c90cbe-5ad1-4c2c-b574-111bb859ccb5&u=https%3A%2F%2Fgerrit.fd.io%2Fr%2Fc%2Fvpp%2F%2B%2F32298> /neale From: vpp-dev@lists.fd.io<mailto:vpp-dev@lists.fd.io> <vpp-dev@lists.fd.io<mailto:vpp-dev@lists.fd.io>> on behalf of Mechthild Buescher via lists.fd.io <mechthild.buescher=ericsson....@lists.fd.io<mailto:mechthild.buescher=ericsson....@lists.fd.io>> Date: Thursday, 24 June 2021 at 10:49 To: vpp-dev@lists.fd.io<mailto:vpp-dev@lists.fd.io> <vpp-dev@lists.fd.io<mailto:vpp-dev@lists.fd.io>> Subject: [vpp-dev] VRRP issue when using interface in a table Hi all, we are using VPP on two nodes where we would like to run VRRP. This works fine if the VRRP VR interface is in fib 0 but if we but the interface into FIB table 1 instead, VRRP is not working correctly anymore. Can you please help? Our setup: * 2 nodes with VPP on each node and one DPDK interface (we reduced the config to isolate the issue) connected to each VPP * a switch between the nodes which just forwards the traffic, so that it's like a peer-2-peer connection The VPP version is (both nodes): vpp# show version vpp v21.01.0-6~gf70123b2c built by suse on SUSE at 2021-05-06T12:18:31 vpp# show version verbose Version: v21.01.0-6~gf70123b2c Compiled by: suse Compile host: SUSE Compile date: 2021-05-06T12:18:31 Compile location: /root/vpp-sp/vpp Compiler: GCC 7.5.0 Current PID: 6677 The VPP config uses the DPDK interface (both nodes): vpp# show hardware-interfaces Name Idx Link Hardware Ext-0 1 up Ext-0 Link speed: 10 Gbps Ethernet address e4:43:4b:ed:59:10 Intel X710/XL710 Family carrier up full duplex mtu 9206 flags: admin-up pmd maybe-multiseg tx-offload intel-phdr-cksum rx-ip4-cksum Devargs: rx: queues 1 (max 192), desc 1024 (min 64 max 4096 align 32) tx: queues 3 (max 192), desc 1024 (min 64 max 4096 align 32) pci: device 8086:1572 subsystem 1028:1f9c address 0000:17:00.00 numa 0 max rx packet len: 9728 promiscuous: unicast off all-multicast on vlan offload: strip off filter off qinq off rx offload avail: vlan-strip ipv4-cksum udp-cksum tcp-cksum qinq-strip outer-ipv4-cksum vlan-filter vlan-extend jumbo-frame scatter keep-crc rss-hash rx offload active: ipv4-cksum jumbo-frame scatter tx offload avail: vlan-insert ipv4-cksum udp-cksum tcp-cksum sctp-cksum tcp-tso outer-ipv4-cksum qinq-insert vxlan-tnl-tso gre-tnl-tso ipip-tnl-tso geneve-tnl-tso multi-segs mbuf-fast-free tx offload active: udp-cksum tcp-cksum multi-segs rss avail: ipv4-frag ipv4-tcp ipv4-udp ipv4-sctp ipv4-other ipv6-frag ipv6-tcp ipv6-udp ipv6-sctp ipv6-other l2-payload rss active: none tx burst mode: Scalar rx burst mode: Vector AVX2 Scattered The VRRP configs are (MASTER): set interface state Ext-0 up set interface ip address Ext-0 192.168.61.52/25 vrrp vr add Ext-0 vr_id 61 priority 200 no_preempt accept_mode 192.168.61.50 and on the system under test (SUT): ip table add 1 set interface ip table Ext-0 1 set interface state Ext-0 up set interface ip address Ext-0 192.168.61.51/25 vrrp vr add Ext-0 vr_id 61 priority 100 no_preempt accept_mode 192.168.61.50 On the MASTER, we started VRRP with: vrrp proto start Ext-0 vr_id 61 so that it has: vpp# show vrrp vr [0] sw_if_index 1 VR ID 61 IPv4 state Master flags: preempt no accept yes unicast no priority: configured 200 adjusted 200 timers: adv interval 100 master adv 100 skew 21 master down 321 virtual MAC 00:00:5e:00:01:3d addresses 192.168.61.50 peer addresses tracked interfaces On the SUT, we did not yet start VRRP, so we see: vpp# show vrrp vr [0] sw_if_index 1 VR ID 61 IPv4 state Initialize flags: preempt no accept yes unicast no priority: configured 100 adjusted 100 timers: adv interval 100 master adv 0 skew 0 master down 0 virtual MAC 00:00:5e:00:01:3d addresses 192.168.61.50 peer addresses tracked interfaces Here I see already that something is going wrong as the VRRP packets are not reaching vrrp4-input: vpp# show errors Count Node Reason Severity 5 dpdk-input no error error 138 ip4-local ip4 source lookup miss error (If we configure SUT similar to the MASTER, ie interface in FIB 0, I can see vrrp4-input at this point) The trace of dpdk-input gives: Packet 1 00:00:57:644818: dpdk-input Ext-0 rx queue 0 buffer 0x9b7ec: current data 0, length 60, buffer-pool 0, ref-count 1, totlen-nifb 0, trace handle 0x1000000 ext-hdr-valid l4-cksum-computed l4-cksum-correct PKT MBUF: port 0, nb_segs 1, pkt_len 60 buf_len 2176, data_len 60, ol_flags 0x180, data_off 128, phys_addr 0x26dfb80 packet_type 0x691 l2_len 0 l3_len 0 outer_l2_len 0 outer_l3_len 0 rss 0x0 fdir.hi 0x0 fdir.lo 0x0 Packet Offload Flags PKT_RX_IP_CKSUM_GOOD (0x0080) IP cksum of RX pkt. is valid PKT_RX_L4_CKSUM_GOOD (0x0100) L4 cksum of RX pkt. is valid Packet Types RTE_PTYPE_L2_ETHER (0x0001) Ethernet packet RTE_PTYPE_L3_IPV4_EXT_UNKNOWN (0x0090) IPv4 packet with or without extension headers RTE_PTYPE_L4_NONFRAG (0x0600) Non-fragmented IP packet IP4: 00:00:5e:00:01:3d -> 01:00:5e:00:00:12 VRRP: 192.168.61.50 -> 224.0.0.18 tos 0x00, ttl 255, length 32, checksum 0xdd80 dscp CS0 ecn NON_ECN fragment id 0x0000 00:00:57:644832: ethernet-input frame: flags 0x3, hw-if-index 1, sw-if-index 1 IP4: 00:00:5e:00:01:3d -> 01:00:5e:00:00:12 00:00:57:644840: ip4-input-no-checksum VRRP: 192.168.61.50 -> 224.0.0.18 tos 0x00, ttl 255, length 32, checksum 0xdd80 dscp CS0 ecn NON_ECN fragment id 0x0000 00:00:57:644843: ip4-mfib-forward-lookup fib 1 entry 11 00:00:57:644846: ip4-mfib-forward-rpf entry 11 itf 1 flags Accept, 00:00:57:644848: ip4-replicate replicate: 8 via [@1]: dpo-receive 00:00:57:644850: ip4-local VRRP: 192.168.61.50 -> 224.0.0.18 tos 0x00, ttl 255, length 32, checksum 0xdd80 dscp CS0 ecn NON_ECN fragment id 0x0000 00:00:57:644854: ip4-drop VRRP: 192.168.61.50 -> 224.0.0.18 tos 0x00, ttl 255, length 32, checksum 0xdd80 dscp CS0 ecn NON_ECN fragment id 0x0000 00:00:57:644855: error-drop rx:Ext-0 00:00:57:644856: drop ip4-local: ip4 source lookup miss And the FIB table 1: vpp# show ip fib table 1 ipv4-VRF:1, fib_index:1, flow hash:[src dst sport dport proto ] epoch:0 flags:none locks:[CLI:2, ] 0.0.0.0/0 unicast-ip4-chain [@0]: dpo-load-balance: [proto:ip4 index:8 buckets:1 uRPF:7 to:[0:0]] [0] [@0]: dpo-drop ip4 0.0.0.0/32 unicast-ip4-chain [@0]: dpo-load-balance: [proto:ip4 index:9 buckets:1 uRPF:8 to:[0:0]] [0] [@0]: dpo-drop ip4 192.168.61.0/32 unicast-ip4-chain [@0]: dpo-load-balance: [proto:ip4 index:14 buckets:1 uRPF:14 to:[0:0]] [0] [@0]: dpo-drop ip4 192.168.61.0/25 unicast-ip4-chain [@0]: dpo-load-balance: [proto:ip4 index:13 buckets:1 uRPF:13 to:[0:0]] [0] [@4]: ipv4-glean: [src:192.168.61.0/25] Ext-0: mtu:9000 next:1 ffffffffffffe4434be52a100806 192.168.61.51/32 unicast-ip4-chain [@0]: dpo-load-balance: [proto:ip4 index:16 buckets:1 uRPF:18 to:[0:0]] [0] [@2]: dpo-receive: 192.168.61.51 on Ext-0 192.168.61.127/32 unicast-ip4-chain [@0]: dpo-load-balance: [proto:ip4 index:15 buckets:1 uRPF:16 to:[0:0]] [0] [@0]: dpo-drop ip4 224.0.0.0/4 unicast-ip4-chain [@0]: dpo-load-balance: [proto:ip4 index:11 buckets:1 uRPF:10 to:[0:0]] [0] [@0]: dpo-drop ip4 240.0.0.0/4 unicast-ip4-chain [@0]: dpo-load-balance: [proto:ip4 index:10 buckets:1 uRPF:9 to:[0:0]] [0] [@0]: dpo-drop ip4 255.255.255.255/32 unicast-ip4-chain [@0]: dpo-load-balance: [proto:ip4 index:12 buckets:1 uRPF:11 to:[0:0]] [0] [@0]: dpo-drop ip4 If I read the trace correctly, ip4-mfib-forward-lookup goes into index 11 instead of index 13 and therefore is not reaching local, vrrp4-input. (Again, if I configure SUT using FIB 0, I can see that ip4-mfib-forward-lookup is pointing to the FIB entry 192.168.61.0/25 and then reaches local, vrrp4-input) If I start VR at this point in time (vrrp proto start Ext-0 vr_id 61), VRRP is changing to BACKUP, then immediately to MASTER while the peer stays on MASTER. So, we have MASTER/MASTER. And 'show errors' still doesn't list vrrp4-input. Is this a bug in VPP or is VRRP not supported with FIBs other than 0? Do you have a suggestion how to fix/solve this? Thank you and best regards, Mechthild Buescher
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#19659): https://lists.fd.io/g/vpp-dev/message/19659 Mute This Topic: https://lists.fd.io/mt/83756732/21656 Group Owner: vpp-dev+ow...@lists.fd.io Unsubscribe: https://lists.fd.io/g/vpp-dev/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-