Hi Neale, I will attempt this on this latest.
Yes ARP cache flush is one option as that seems to help out , I find that arp flush per interface requires a walk through all the arp entries and identify those that are specifically on the interface in question. Not sure whether I am missing something better. Thanks a lot for your help and valuable feedback. Thanks Rupesh On Thu, Feb 4, 2021 at 6:01 PM Neale Ranns <ne...@graphiant.com> wrote: > > > Hi Rupesh, > > > > 19.08 is no longer supported, please upgrade. > > > > The down side of flushing the ARP cache on link down is that the ARP > cached gets flushed 😉 you have to rebuild it when the link comes back > up, this takes time. Otherwise I see no issue with doing so. > > > > The adj walk is there to remove that adj/path from the ECMP set when the > interface goes down, it does not conflict with flushing the ARP cache, > which will make the adj incomplete. > > > > /neale > > > > > > *From: *Rupesh Raghuvaran <rupesh.raghuva...@gmail.com> > *Date: *Thursday, 4 February 2021 at 12:58 > *To: *Neale Ranns <ne...@graphiant.com> > *Cc: *vpp-dev@lists.fd.io <vpp-dev@lists.fd.io> > *Subject: *Re: [vpp-dev] Fib entries as per show ip fib for prefix has > forwarding UNRESOLVED though packet is forwarded. > > Hi Neale, > > > > This is version 19.08. > > > > Meanwhile, based on whatever I understood from the discussion so far, I > experimented by adding a link down function that does an arp flush on the > respective interface which resulted in arp delete and subsequent adj nbr > removal. This seems to provide the desired result of the fib entry getting > marked resolved. Note currently there is only arp flush done on the admin > state change in ethernet/arp.c. Do you see any issues or potential downside > with this arp flush being done on link down ? > > There is also a backwalk associated with interface link up/down > via adj_nbr_interface_state_change_one, I am not sure about what is > expected from that walk, and the above handling from arp flush have any > conflicts ? > > > > Thanks > > Rupesh > > > > On Thu, Feb 4, 2021 at 3:50 PM Neale Ranns <ne...@graphiant.com> wrote: > > > > What VPP version is this? > > > > /neale > > > > *From: *Rupesh Raghuvaran <rupesh.raghuva...@gmail.com> > *Date: *Wednesday, 3 February 2021 at 17:39 > *To: *Neale Ranns <ne...@graphiant.com> > *Cc: *vpp-dev@lists.fd.io <vpp-dev@lists.fd.io> > *Subject: *Re: [vpp-dev] Fib entries as per show ip fib for prefix has > forwarding UNRESOLVED though packet is forwarded. > > Hi Neale, > > > > Looking at the show ip arp we see that the arp entries still remain the > same even after the link is down. > > > > show ip arp > Time IP4 Flags Ethernet Interface > 1.9954 10.0.0.14 D de:ad:de:ad:00:04 GigabitEthernet0/3/0 > 1.9633 10.0.0.15 D de:ad:de:ad:00:05 GigabitEthernet0/4/0 > 2.8591 10.0.1.132 S 00:65:0d:98:00:00 loop10 > 2.8611 10.0.2.132 S 00:65:0e:bf:00:00 loop10 > 2.8626 12.0.1.2 S 00:65:0c:ca:00:00 loop10 > Proxy arps enabled for: > Fib_index 0 0.0.0.0 - 255.255.255.255 > > ---- > > show hardware GigabitEthernet0/4/0 > Name Idx Link Hardware > GigabitEthernet0/4/0 3 down GigabitEthernet0/4/0 > Link speed: 10 Gbps > Ethernet address de:ad:de:ad:00:01 > Red Hat Virtio > carrier down > flags: admin-up pmd maybe-multiseg > > <sniped> > ---- > > show hardware GigabitEthernet0/3/0 > Name Idx Link Hardware > GigabitEthernet0/3/0 2 up GigabitEthernet0/3/0 > Link speed: 10 Gbps > Ethernet address de:ad:de:ad:00:01 > Red Hat Virtio > carrier up full duplex mtu 9206 > flags: admin-up pmd maybe-multiseg > rx: queues 1 (max 1), desc 256 (min 0 max 65535 align 1) > tx: queues 1 (max 1), desc 256 (min 0 max 65535 align 1) > <snipped> > > > > Regarding the ARP responses dropped my understanding is that for an ARP > reply are acceptable if we have a fib source via a api/cli on the interface > enabling a successful arp reply src ip address lookup. That is essentially > saying that the such a specific arp reply is valid as per the > configuration, i am not sure about any harm with such a configuration as it > is correct as per topology. > > > > Thanks > > Rupesh > > > > On Wed, Feb 3, 2021 at 7:15 PM Neale Ranns <ne...@graphiant.com> wrote: > > > > Hi Rupesh, > > > > Dropping those ARP responses is a clue that you’re not doing something > right 😉 > > > > I would expect the ARP entry, adj and adj-source on the fib entry to be > removed (in that order) when the link goes down. ‘sh ip eighbours’ please. > > > > > https://github.com/FDio/vpp/blob/master/docs/gettingstarted/developers/fib20/routes.rst#adjacency-source-fib-entries > > > > /neale > > > > > > *From: *Rupesh Raghuvaran <rupesh.raghuva...@gmail.com> > *Date: *Wednesday, 3 February 2021 at 12:03 > *To: *Neale Ranns <ne...@graphiant.com> > *Cc: *vpp-dev@lists.fd.io <vpp-dev@lists.fd.io> > *Subject: *Re: [vpp-dev] Fib entries as per show ip fib for prefix has > forwarding UNRESOLVED though packet is forwarded. > > Hi Neale, > > > > Thanks for your reply. > > > > I am adding a default route via 10.0.0.15 dev Ge0/4/0, a subnet route > 10.0.0.0/24 via 10.0.0.15 dev Ge0/4/0 and a host route to the > 10.0.0.15/32 on dev Ge0/4/0. No explicit arp entry is added. Without the > specific 10.0.0.15/32 on dev Ge0/4/0 link the arp ipv4 response for > 10.0.0.15 gets dropped for the reason src subnet not local to interface. > > On the link down of Ge0/4/0 all the routes specified above gets deleted. > But on the other link Ge0/3/0 we have similar routes, default route and > subnet route via 10.0.0.14 and host route to 10.0.0.14/32 on dev > Ge0/3/0. > > > > As per the fib log the src API based path gets removed but the src adj > based one remains. Even if the interface is down the adjacency source entry > remains the cover seems to get updated. to 7 , which is on a different > interface ie Ge0/3/0 than that is in the adjacency is still on Ge0/4/0. > > > > show ip fib 10.0.0.15 > ipv4-VRF:0, fib_index:0, flow hash:[src dst sport dport proto ] > locks:[src:plugin-hi:2, src:DHCP:7, src:adjacency:5, src:default-route:1, ] > 10.0.0.15/32 fib:0 index:8 locks:2 > src:adjacency refs:1 entry-flags:attached, > src-flags:added,contributing,active, cover:7 > path-list:[17] locks:2 uPRF-list:7 len:1 itfs:[3, ] > path:[18] pl-index:17 ip4 weight=1 pref=0 attached-nexthop: > 10.0.0.15 GigabitEthernet0/4/0^M > [@0]: ipv4 via 10.0.0.15 GigabitEthernet0/4/0: mtu:9000 > deaddead0005deaddead00010800 > Extensions: > path:18 > forwarding: UNRESOLVED > > > > and cover fib entry 7 specified above is the following. > > 7@10.0.0.0/24 > unicast-ip4-chain > [@0]: dpo-load-balance: [proto:ip4 index:9 buckets:1 uRPF:36 > to:[1770:254632]] > [0] [@5]: ipv4 via 10.0.0.14 GigabitEthernet0/3/0: mtu:9000 > deaddead0004deaddead00010800 > > > > > > When the interface is down is the corresponding fib entry sourced by the > adjacency expected to be deleted. ? Could you also explain a bit on the > adjacency source refinement? > > > > Thanks > > Rupesh > > > > > > > > > > On Wed, Feb 3, 2021 at 2:40 PM Neale Ranns <ne...@graphiant.com> wrote: > > Hi Rupesh, > > > > 10.0.0.15 remains unresolved after link down because there remains an > adjacency/ARP-entry for it on Ge0/4/0 – did you add a static one? It is > unresolved because it fails the adjacency source refinement criteria. > Packets to 10.0.0.15 are forwarded using the default route. This is > expected behaviour. > > > > Your use of unnumbered is unconventional. You’d get a better experience if > you used standard IP addressing. For example, add separate /31s on your > gigEs, then another /32 on the loopbacks. Add routes to the peer’s > loopbacks via your control plane agent. The tunnel endpoints should be the > loopback addresses. > > > > /neale > > > > > > *From: *vpp-dev@lists.fd.io <vpp-dev@lists.fd.io> on behalf of Rupesh > Raghuvaran via lists.fd.io <rupesh.raghuvaran=gmail....@lists.fd.io> > *Date: *Tuesday, 2 February 2021 at 17:08 > *To: *vpp-dev@lists.fd.io <vpp-dev@lists.fd.io> > *Subject: *[vpp-dev] Fib entries as per show ip fib for prefix has > forwarding UNRESOLVED though packet is forwarded. > > > > VPP is configured as router (R0) connects to two routers referred as R1 > and R2 , and there is direct link between R1 and R2 is connected. > > > > R0 has a loopback interface loop0 configured with 10.0.0.16/32 and > 10.0.0.18/32 , interface Ge0/3/0 and Ge0/4/0 is unnumbered to loop0 > > R0 Ge0/3/0 connects to R1 > > R0 Ge0/4/0 connecte to R2 > > > > R1 has a loopback interface with 10.0.0.14/32 and the R1-R0 interface > is unnumbered to that interface. > > R2 has a loopback interface with 10.0.0.15/32 and the R2-R0 interface > is unnumbered to that interface. > > > > > > R0 is configured with following routes > > > > 0.0.0.0/0 via 10.0.0.14 > > 0.0.0.0/0 via 10.0.0.15 > > 10.0.0.0/24 via 10.0.0.14 > > 10.0.0.0/24 via 10.0.0.15 > > 10.0.0.14/32 via Ge0/3/0 > > 10.0.0.15/32 via Ge0/4/0 > > > > with this configuration I am able to ping 10.0.0.15 and 10.0.0.14 on > respective link. > > > > show ip fib 10.0.0.15 > > ipv4-VRF:0, fib_index:0, flow hash:[src dst sport dport proto ] > locks:[src:plugin-hi:2, src:DHCP:7, src:adjacency:5, src:default-route:1, ] > > 10.0.0.15/32 fib:0 index:8 locks:3 > > src:API refs:1 entry-flags:attached, src-flags:added,contributing,active, > > path-list:[12] locks:2 flags:shared, uPRF-list:14 len:1 itfs:[3, ] > > path:[12] pl-index:12 ip4 weight=1 pref=0 attached-nexthop: > oper-flags:resolved, cfg-flags:attached, > > 10.0.0.15 GigabitEthernet0/4/0 > > [@0]: ipv4 via 10.0.0.15 GigabitEthernet0/4/0: mtu:9000 > deaddead0005deaddead00010800 > > > > src:adjacency refs:1 entry-flags:attached, src-flags:added, cover:-1 > > path-list:[17] locks:1 uPRF-list:7 len:1 itfs:[3, ] > > path:[18] pl-index:17 ip4 weight=1 pref=0 attached-nexthop: > oper-flags:resolved, > > 10.0.0.15 GigabitEthernet0/4/0^M > > [@0]: ipv4 via 10.0.0.15 GigabitEthernet0/4/0: mtu:9000 > deaddead0005deaddead00010800 > > Extensions: > > path:18 > > forwarding: unicast-ip4-chain > > [@0]: dpo-load-balance: [proto:ip4 index:10 buckets:1 uRPF:14 > to:[2020:207099]] > > [0] [@5]: ipv4 via 10.0.0.15 GigabitEthernet0/4/0: mtu:9000 > deaddead0005deaddead00010800 > > > > > > On Link down of Ge0/4/0 the control plange agent on the link down event > removes following routes > > ie corresponding to the one via the specific link set to down. > > 0.0.0.0/0 via 10.0.0.15 > > 10.0.0.0/24 via 10.0.0.15 > > 10.0.0.15/32 via Ge0/4/0 > > > > When the Ge0/4/0 link is down fib entry for 10.0.0.15 has forwarding > marked as UNRESOLVED. > > > > show ip fib 10.0.0.15 > > ipv4-VRF:0, fib_index:0, flow hash:[src dst sport dport proto ] > locks:[src:plugin-hi:2, src:DHCP:7, src:adjacency:5, src:default-route:1, ] > > 10.0.0.15/32 fib:0 index:8 locks:2 > > src:adjacency refs:1 entry-flags:attached, > src-flags:added,contributing,active, cover:7 > > path-list:[17] locks:2 uPRF-list:7 len:1 itfs:[3, ] > > path:[18] pl-index:17 ip4 weight=1 pref=0 attached-nexthop: > > 10.0.0.15 GigabitEthernet0/4/0 > > [@0]: ipv4 via 10.0.0.15 GigabitEthernet0/4/0: mtu:9000 > deaddead0005deaddead00010800 > > Extensions: > > path:18 > > forwarding: UNRESOLVED > > > > Its found that the packets destined to 10.0.0.15 is send out via the > Ge0/3/0 as expected even though it is marked unresolved. > > ie ping from R0 to R2 ip 10.0.0.15 via R1 when link from R0 to R2 is down > > > > > > 00:13:42:303487: ip4-input > > ICMP: 10.0.0.16 -> 10.0.0.15 > > tos 0x00, ttl 64, length 84, checksum 0xbd3c > > fragment id 0x694e, flags DONT_FRAGMENT > > ICMP echo_request checksum 0xe43a > > 00:13:42:303492: ip4-lookup > > fib 0 dpo-idx 3 flow hash: 0x00000000 > > ICMP: 10.0.0.16 -> 10.0.0.15 > > tos 0x00, ttl 64, length 84, checksum 0xbd3c > > fragment id 0x694e, flags DONT_FRAGMENT > > ICMP echo_request checksum 0xe43a > > 00:13:42:303497: ip4-rewrite > > tx_sw_if_index 2 dpo-idx 3 : ipv4 via 10.0.0.14 GigabitEthernet0/3/0: > mtu:9000 deaddead0004deaddead00010800 flow hash: 0x00000000 > > 00000000: > deaddead0004deaddead0001080045000054694e40003f01be3c0a0000100a00 > > 00000020: 000f0800e43a0a4700504066196000000000ea940600000000001011 > > 00:13:42:303500: GigabitEthernet0/3/0-output > > GigabitEthernet0/3/0 > > IP4: de:ad:de:ad:00:01 -> de:ad:de:ad:00:04 > > ICMP: 10.0.0.16 -> 10.0.0.15 > > tos 0x00, ttl 63, length 84, checksum 0xbe3c > > fragment id 0x694e, flags DONT_FRAGMENT > > ICMP echo_request checksum 0xe43a > > 00:13:42:303503: GigabitEthernet0/3/0-tx > > GigabitEthernet0/3/0 tx queue 0 > > buffer 0x18e07: current data -14, length 98, buffer-pool 0, ref-count 1, > trace handle 0x28 > > PKT MBUF: port 65535, nb_segs 1, pkt_len 98 > > buf_len 2176, data_len 98, ol_flags 0x0, data_off 114, phys_addr > 0x73a38240 > > packet_type 0x0 l2_len 0 l3_len 0 outer_l2_len 0 outer_l3_len 0 > > rss 0x0 fdir.hi 0x0 fdir.lo 0x0 > > IP4: de:ad:de:ad:00:01 -> de:ad:de:ad:00:04 > > ICMP: 10.0.0.16 -> 10.0.0.15 > > tos 0x00, ttl 63, length 84, checksum 0xbe3c > > fragment id 0x694e, flags DONT_FRAGMENT > > ICMP echo_request checksum 0xe43a > > > > But for any gre tunnels with l2 adj index which refers to 10.0.0.15 seems > to have forwarding dpo-drop as drop. > > Why is the fib entry for 10.0.0.15 remains with forwarding unresolved ? > > I hope the configuration attempted is supported. Please find the related > logs and various fib related cli outputs before and after. > > Thanks in Advance > Rupesh > > > >
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#18677): https://lists.fd.io/g/vpp-dev/message/18677 Mute This Topic: https://lists.fd.io/mt/80318226/21656 Group Owner: vpp-dev+ow...@lists.fd.io Unsubscribe: https://lists.fd.io/g/vpp-dev/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-