frr
frr copied to clipboard
PIMv6 - IPv6 mroute source is unreachable but KAT timer getting refreshed
Issue - In below topology , have make source unreachable for R11 ( removing redistribute connect/static from R4 BGP address family ) , source subnet removed from unicast routing table but IPv6 mroute KAT timer getting refreshed and mroute still intact
Same interface i have IPv4 multicast traffic and join , there i see mroute waiting for KAT timer to finish after that mroute /upstream getting removed , this also looks to be an issue to me , i think once source route removed from unicast routing table , KAT should get canceled and mroute should prune immediately .
Setup
R11(LHR)-------R2(RP)--------R4(source)
Build - frr_8.4-dev-PR11714-g1006598-20220801.124455-1~ubuntu18.04.1_amd64.deb Ubuntu 18.04 kernel - 4.20
o/p
R11# do show ip pim upstream
Iif Source Group State Uptime JoinTimer RSTimer KATimer RefCnt
ens192.4001 * 226.1.1.1 J 03:54:50 00:00:36 --:--:-- --:--:-- 2
ens192.4001 * 226.1.1.2 J 03:54:50 00:00:36 --:--:-- --:--:-- 2
ens192.4001 * 226.1.1.3 J 03:54:50 00:00:36 --:--:-- --:--:-- 2
ens192.4001 * 226.1.1.4 J 03:54:50 00:00:36 --:--:-- --:--:-- 2
ens192.4001 * 226.1.1.5 J 03:54:50 00:00:36 --:--:-- --:--:-- 2
R11#
R11#
R11#
R11# do show ipv6 pim upstream
Iif Source Group State Uptime JoinTimer RSTimer KATimer RefCnt
ens192.4001 * ff05::2 J 23:17:36 00:00:00 --:--:-- --:--:-- 2
ens192.4001 * ffaa::1 J 03:55:00 00:00:00 --:--:-- --:--:-- 2
Unknown 1020::10 ffaa::1 NotJ 00:05:10 --:--:-- --:--:-- 00:03:08 2
Unknown 5101::10 ffaa::1 NotJ 00:05:10 --:--:-- --:--:-- 00:03:22 2
ens192.4001 * ffaa::2 J 03:55:00 00:00:00 --:--:-- --:--:-- 2
Unknown 1020::10 ffaa::2 NotJ 00:05:10 --:--:-- --:--:-- 00:03:02 2
Unknown 5101::10 ffaa::2 NotJ 00:05:10 --:--:-- --:--:-- 00:03:17 2
ens192.4001 * ffaa::3 J 03:55:00 00:00:00 --:--:-- --:--:-- 2
Unknown 1020::10 ffaa::3 NotJ 00:05:10 --:--:-- --:--:-- 00:03:00 2
Unknown 5101::10 ffaa::3 NotJ 00:05:10 --:--:-- --:--:-- 00:03:05 2
ens192.4001 * ffaa::4 J 03:55:00 00:00:00 --:--:-- --:--:-- 2
Unknown 1020::10 ffaa::4 NotJ 00:05:10 --:--:-- --:--:-- 00:03:27 2
Unknown 5101::10 ffaa::4 NotJ 00:05:10 --:--:-- --:--:-- 00:03:18 2
ens192.4001 * ffaa::5 J 03:55:00 00:00:00 --:--:-- --:--:-- 2
Unknown 1020::10 ffaa::5 NotJ 00:05:10 --:--:-- --:--:-- 00:03:01 2
Unknown 5101::10 ffaa::5 NotJ 00:05:10 --:--:-- --:--:-- 00:03:26 2
R11# do show ip mroute
IP Multicast Routing Table
Flags: S - Sparse, C - Connected, P - Pruned
R - SGRpt Pruned, F - Register flag, T - SPT-bit set
Source Group Flags Proto Input Output TTL Uptime
* 226.1.1.1 SC IGMP ens192.4001 pimreg 1 03:55:09
IGMP ens225 1
IGMP ens256 1
* 226.1.1.2 SC IGMP ens192.4001 pimreg 1 03:55:09
IGMP ens225 1
IGMP ens256 1
* 226.1.1.3 SC IGMP ens192.4001 pimreg 1 03:55:09
IGMP ens225 1
IGMP ens256 1
* 226.1.1.4 SC IGMP ens192.4001 pimreg 1 03:55:09
IGMP ens225 1
IGMP ens256 1
* 226.1.1.5 SC IGMP ens192.4001 pimreg 1 03:55:09
IGMP ens225 1
IGMP ens256 1
R11# do show ipv6 mroute
IP Multicast Routing Table
Flags: S - Sparse, C - Connected, P - Pruned
R - SGRpt Pruned, F - Register flag, T - SPT-bit set
Source Group Flags Proto Input Output TTL Uptime
* ff05::2 SC MLD ens192.4001 pim6reg 1 23:17:47
MLD ens225 1
MLD ens256 1
* ffaa::1 SC MLD ens192.4001 pim6reg 1 03:55:11
MLD ens225 1
MLD ens256 1
1020::10 ffaa::1 S STAR ens192.4001 ens225 1 03:54:17
STAR ens256 1
5101::10 ffaa::1 S STAR ens192.4001 ens225 1 03:54:18
STAR ens256 1
* ffaa::2 SC MLD ens192.4001 pim6reg 1 03:55:11
MLD ens225 1
MLD ens256 1
1020::10 ffaa::2 S STAR ens192.4001 ens225 1 03:54:17
STAR ens256 1
5101::10 ffaa::2 S STAR ens192.4001 ens225 1 03:54:18
STAR ens256 1
* ffaa::3 SC MLD ens192.4001 pim6reg 1 03:55:11
MLD ens225 1
MLD ens256 1
1020::10 ffaa::3 S STAR ens192.4001 ens225 1 03:54:17
STAR ens256 1
5101::10 ffaa::3 S STAR ens192.4001 ens225 1 03:54:18
STAR ens256 1
* ffaa::4 SC MLD ens192.4001 pim6reg 1 03:55:11
MLD ens225 1
MLD ens256 1
1020::10 ffaa::4 S STAR ens192.4001 ens225 1 03:54:17
STAR ens256 1
5101::10 ffaa::4 S STAR ens192.4001 ens225 1 03:54:18
STAR ens256 1
* ffaa::5 SC MLD ens192.4001 pim6reg 1 03:55:11
MLD ens225 1
MLD ens256 1
1020::10 ffaa::5 S STAR ens192.4001 ens225 1 03:54:17
STAR ens256 1
5101::10 ffaa::5 S STAR ens192.4001 ens225 1 03:54:18
STAR ens256 1
R11# do show ip route
Codes: K - kernel route, C - connected, S - static, R - RIP,
O - OSPF, I - IS-IS, B - BGP, E - EIGRP, N - NHRP,
T - Table, v - VNC, V - VNC-Direct, A - Babel, D - SHARP,
F - PBR, f - OpenFabric,
> - selected route, * - FIB route, q - queued, r - rejected, b - backup
t - trapped, o - offload failure
B>* 19.1.1.0/24 [20/0] via 21.1.1.2, ens161.4005, weight 1, 21:57:34
* via 21.2.1.2, ens161.4006, weight 1, 21:57:34
* via 21.3.1.2, ens161.4007, weight 1, 21:57:34
* via 21.4.1.2, ens161.4008, weight 1, 21:57:34
B>* 31.2.1.0/24 [20/0] via 11.1.1.2, ens192.4001, weight 1, 23:32:51
* via 11.2.1.2, ens192.4002, weight 1, 23:32:51
* via 11.3.1.2, ens192.4003, weight 1, 23:32:51
* via 11.4.1.2, ens192.4004, weight 1, 23:32:51
B>* 31.3.1.0/24 [20/0] via 11.1.1.2, ens192.4001, weight 1, 23:32:51
* via 11.2.1.2, ens192.4002, weight 1, 23:32:51
* via 11.3.1.2, ens192.4003, weight 1, 23:32:51
* via 11.4.1.2, ens192.4004, weight 1, 23:32:51
B>* 31.4.1.0/24 [20/0] via 11.1.1.2, ens192.4001, weight 1, 23:32:51
* via 11.2.1.2, ens192.4002, weight 1, 23:32:51
* via 11.3.1.2, ens192.4003, weight 1, 23:32:51
* via 11.4.1.2, ens192.4004, weight 1, 23:32:51
B>* 41.1.1.0/24 [20/0] via 21.1.1.2, ens161.4005, weight 1, 21:57:34
* via 21.2.1.2, ens161.4006, weight 1, 21:57:34
* via 21.3.1.2, ens161.4007, weight 1, 21:57:34
* via 21.4.1.2, ens161.4008, weight 1, 21:57:34
B>* 41.2.1.0/24 [20/0] via 21.1.1.2, ens161.4005, weight 1, 21:57:34
* via 21.2.1.2, ens161.4006, weight 1, 21:57:34
* via 21.3.1.2, ens161.4007, weight 1, 21:57:34
* via 21.4.1.2, ens161.4008, weight 1, 21:57:34
B>* 41.3.1.0/24 [20/0] via 21.1.1.2, ens161.4005, weight 1, 21:57:34
* via 21.2.1.2, ens161.4006, weight 1, 21:57:34
* via 21.3.1.2, ens161.4007, weight 1, 21:57:34
* via 21.4.1.2, ens161.4008, weight 1, 21:57:34
B>* 41.4.1.0/24 [20/0] via 21.1.1.2, ens161.4005, weight 1, 21:57:34
* via 21.2.1.2, ens161.4006, weight 1, 21:57:34
* via 21.3.1.2, ens161.4007, weight 1, 21:57:34
* via 21.4.1.2, ens161.4008, weight 1, 21:57:34
C>* 65.0.0.0/24 is directly connected, ens193, 23:33:09
B>* 78.78.78.0/24 [20/0] via 11.1.1.2, ens192.4001, weight 1, 23:32:51
* via 11.2.1.2, ens192.4002, weight 1, 23:32:51
* via 11.3.1.2, ens192.4003, weight 1, 23:32:51
* via 11.4.1.2, ens192.4004, weight 1, 23:32:51
C>* 101.101.101.101/32 is directly connected, lo, 23:33:09
B>* 102.102.102.102/32 [20/0] via 11.1.1.2, ens192.4001, weight 1, 23:32:51
* via 11.2.1.2, ens192.4002, weight 1, 23:32:51
* via 11.3.1.2, ens192.4003, weight 1, 23:32:51
* via 11.4.1.2, ens192.4004, weight 1, 23:32:51
B>* 103.103.103.103/32 [20/0] via 21.1.1.2, ens161.4005, weight 1, 21:57:34
* via 21.2.1.2, ens161.4006, weight 1, 21:57:34
* via 21.3.1.2, ens161.4007, weight 1, 21:57:34
* via 21.4.1.2, ens161.4008, weight 1, 21:57:34
C>* 175.1.1.0/24 is directly connected, ens225, 23:26:48
S>* 190.190.190.190/32 [1/0] via 25.25.25.2, ens256, weight 1, 23:26:39
R11# do show ipv6 route
Codes: K - kernel route, C - connected, S - static, R - RIPng,
O - OSPFv3, I - IS-IS, B - BGP, N - NHRP, T - Table,
v - VNC, V - VNC-Direct, A - Babel, D - SHARP, F - PBR,
f - OpenFabric,
> - selected route, * - FIB route, q - queued, r - rejected, b - backup
t - trapped, o - offload failure
C>* 1101::/64 is directly connected, ens192.4001, 23:33:18
C>* 1102::/64 is directly connected, ens192.4002, 23:33:18
C>* 1103::/64 is directly connected, ens192.4003, 23:33:18
C>* 1104::/64 is directly connected, ens192.4004, 23:33:18
C>* 1111::/64 is directly connected, lo, 23:33:18
B>* 1222::1/128 [20/0] via fe80::250:56ff:feb7:54ad, ens192.4001, weight 1, 23:33:00
B>* 1333::1/128 [20/0] via fe80::250:56ff:feb7:540f, ens161.4005, weight 1, 21:57:43
C>* 1750::/64 is directly connected, ens225, 23:26:56
C>* 2101::/64 is directly connected, ens161.4005, 23:33:18
C>* 2102::/64 is directly connected, ens161.4006, 23:33:18
C>* 2103::/64 is directly connected, ens161.4007, 23:33:18
C>* 2104::/64 is directly connected, ens161.4008, 23:33:18
C>* 2525::/64 is directly connected, ens256, 23:26:46
B>* 3101::/64 [20/0] via fe80::250:56ff:feb7:54ad, ens192.4001, weight 1, 23:33:00
B>* 3201::/64 [20/0] via fe80::250:56ff:feb7:54ad, ens192.4001, weight 1, 23:33:00
B>* 3301::/64 [20/0] via fe80::250:56ff:feb7:54ad, ens192.4001, weight 1, 23:33:00
B>* 3401::/64 [20/0] via fe80::250:56ff:feb7:54ad, ens192.4001, weight 1, 23:33:00
B>* 4101::/64 [20/0] via fe80::250:56ff:feb7:540f, ens161.4005, weight 1, 21:57:43
B>* 4201::/64 [20/0] via fe80::250:56ff:feb7:540f, ens161.4005, weight 1, 21:57:43
B>* 4301::/64 [20/0] via fe80::250:56ff:feb7:540f, ens161.4005, weight 1, 21:57:43
B>* 4401::/64 [20/0] via fe80::250:56ff:feb7:540f, ens161.4005, weight 1, 21:57:43
C>* 6501::/120 is directly connected, ens193, 23:33:18
``
Logs attached
Similar issue observed while shut RP subnet , after RP subnet shut no unicast route for RP but rp-info still populated , same is working for IPv4
R11(config)# do show ip route
Codes: K - kernel route, C - connected, S - static, R - RIP,
O - OSPF, I - IS-IS, B - BGP, E - EIGRP, N - NHRP,
T - Table, v - VNC, V - VNC-Direct, A - Babel, D - SHARP,
F - PBR, f - OpenFabric,
> - selected route, * - FIB route, q - queued, r - rejected, b - backup
t - trapped, o - offload failure
K>* 10.0.0.0/8 [0/0] via 10.173.215.253, ens160, 00:27:27
C>* 10.173.208.0/21 is directly connected, ens160, 00:27:27
C>* 11.1.1.0/24 is directly connected, ens192.4001, 00:27:27
C>* 11.2.1.0/24 is directly connected, ens192.4002, 00:27:27
C>* 11.3.1.0/24 is directly connected, ens192.4003, 00:27:27
C>* 11.4.1.0/24 is directly connected, ens192.4004, 00:27:27
B>* 19.1.1.0/24 [20/0] via 21.1.1.2, ens161.4005, weight 1, 00:27:23
* via 21.2.1.2, ens161.4006, weight 1, 00:27:23
* via 21.3.1.2, ens161.4007, weight 1, 00:27:23
* via 21.4.1.2, ens161.4008, weight 1, 00:27:23
C>* 21.1.1.0/24 is directly connected, ens161.4005, 00:27:27
C>* 21.2.1.0/24 is directly connected, ens161.4006, 00:27:27
C>* 21.3.1.0/24 is directly connected, ens161.4007, 00:27:27
C>* 21.4.1.0/24 is directly connected, ens161.4008, 00:27:27
C>* 25.25.25.0/24 is directly connected, ens256, 00:27:27
B>* 31.1.1.0/24 [20/0] via 11.1.1.2, ens192.4001, weight 1, 00:27:18
* via 11.2.1.2, ens192.4002, weight 1, 00:27:18
* via 11.3.1.2, ens192.4003, weight 1, 00:27:18
* via 11.4.1.2, ens192.4004, weight 1, 00:27:18
B>* 31.2.1.0/24 [20/0] via 11.1.1.2, ens192.4001, weight 1, 00:27:18
* via 11.2.1.2, ens192.4002, weight 1, 00:27:18
* via 11.3.1.2, ens192.4003, weight 1, 00:27:18
* via 11.4.1.2, ens192.4004, weight 1, 00:27:18
B>* 31.3.1.0/24 [20/0] via 11.1.1.2, ens192.4001, weight 1, 00:27:18
* via 11.2.1.2, ens192.4002, weight 1, 00:27:18
* via 11.3.1.2, ens192.4003, weight 1, 00:27:18
* via 11.4.1.2, ens192.4004, weight 1, 00:27:18
B>* 31.4.1.0/24 [20/0] via 11.1.1.2, ens192.4001, weight 1, 00:27:18
* via 11.2.1.2, ens192.4002, weight 1, 00:27:18
* via 11.3.1.2, ens192.4003, weight 1, 00:27:18
* via 11.4.1.2, ens192.4004, weight 1, 00:27:18
B>* 41.1.1.0/24 [20/0] via 21.1.1.2, ens161.4005, weight 1, 00:27:23
* via 21.2.1.2, ens161.4006, weight 1, 00:27:23
* via 21.3.1.2, ens161.4007, weight 1, 00:27:23
* via 21.4.1.2, ens161.4008, weight 1, 00:27:23
B>* 41.2.1.0/24 [20/0] via 21.1.1.2, ens161.4005, weight 1, 00:27:23
* via 21.2.1.2, ens161.4006, weight 1, 00:27:23
* via 21.3.1.2, ens161.4007, weight 1, 00:27:23
* via 21.4.1.2, ens161.4008, weight 1, 00:27:23
B>* 41.3.1.0/24 [20/0] via 21.1.1.2, ens161.4005, weight 1, 00:27:23
* via 21.2.1.2, ens161.4006, weight 1, 00:27:23
* via 21.3.1.2, ens161.4007, weight 1, 00:27:23
* via 21.4.1.2, ens161.4008, weight 1, 00:27:23
B>* 41.4.1.0/24 [20/0] via 21.1.1.2, ens161.4005, weight 1, 00:27:23
* via 21.2.1.2, ens161.4006, weight 1, 00:27:23
* via 21.3.1.2, ens161.4007, weight 1, 00:27:23
* via 21.4.1.2, ens161.4008, weight 1, 00:27:23
C>* 65.0.0.0/24 is directly connected, ens193, 00:27:27
B>* 78.78.78.0/24 [20/0] via 11.1.1.2, ens192.4001, weight 1, 00:27:18
* via 11.2.1.2, ens192.4002, weight 1, 00:27:18
* via 11.3.1.2, ens192.4003, weight 1, 00:27:18
* via 11.4.1.2, ens192.4004, weight 1, 00:27:18
C>* 101.101.101.101/32 is directly connected, lo, 00:27:27
B>* 103.103.103.103/32 [20/0] via 21.1.1.2, ens161.4005, weight 1, 00:27:23
* via 21.2.1.2, ens161.4006, weight 1, 00:27:23
* via 21.3.1.2, ens161.4007, weight 1, 00:27:23
* via 21.4.1.2, ens161.4008, weight 1, 00:27:23
C>* 175.1.1.0/24 is directly connected, ens225, 00:27:27
S>* 190.190.190.190/32 [1/0] via 25.25.25.2, ens256, weight 1, 00:27:27
R11(config)# do show ipv6 route
Codes: K - kernel route, C - connected, S - static, R - RIPng,
O - OSPFv3, I - IS-IS, B - BGP, N - NHRP, T - Table,
v - VNC, V - VNC-Direct, A - Babel, D - SHARP, F - PBR,
f - OpenFabric,
> - selected route, * - FIB route, q - queued, r - rejected, b - backup
t - trapped, o - offload failure
C>* 1101::/64 is directly connected, ens192.4001, 00:30:41
C>* 1102::/64 is directly connected, ens192.4002, 00:30:41
C>* 1103::/64 is directly connected, ens192.4003, 00:30:41
C>* 1104::/64 is directly connected, ens192.4004, 00:30:41
C>* 1111::/64 is directly connected, lo, 00:30:41
B>* 1333::1/128 [20/0] via fe80::250:56ff:feb7:540f, ens161.4005, weight 1, 00:30:37
C>* 1750::/64 is directly connected, ens225, 00:30:41
C>* 2101::/64 is directly connected, ens161.4005, 00:30:41
C>* 2102::/64 is directly connected, ens161.4006, 00:30:41
C>* 2103::/64 is directly connected, ens161.4007, 00:30:41
C>* 2104::/64 is directly connected, ens161.4008, 00:30:41
C>* 2525::/64 is directly connected, ens256, 00:30:41
B>* 3101::/64 [20/0] via fe80::250:56ff:feb7:54ad, ens192.4001, weight 1, 00:30:32
B>* 3201::/64 [20/0] via fe80::250:56ff:feb7:54ad, ens192.4001, weight 1, 00:30:32
B>* 3301::/64 [20/0] via fe80::250:56ff:feb7:54ad, ens192.4001, weight 1, 00:30:32
B>* 3401::/64 [20/0] via fe80::250:56ff:feb7:54ad, ens192.4001, weight 1, 00:30:32
B>* 4101::/64 [20/0] via fe80::250:56ff:feb7:540f, ens161.4005, weight 1, 00:30:37
B>* 4201::/64 [20/0] via fe80::250:56ff:feb7:540f, ens161.4005, weight 1, 00:30:37
B>* 4301::/64 [20/0] via fe80::250:56ff:feb7:540f, ens161.4005, weight 1, 00:30:37
B>* 4401::/64 [20/0] via fe80::250:56ff:feb7:540f, ens161.4005, weight 1, 00:30:37
C>* 6501::/120 is directly connected, ens193, 00:30:41
B>* 7878::/64 [20/0] via fe80::250:56ff:feb7:54ad, ens192.4001, weight 1, 00:30:32
C * fe80::/64 is directly connected, ens161.4008, 00:30:41
C * fe80::/64 is directly connected, ens161.4007, 00:30:41
C * fe80::/64 is directly connected, ens161.4006, 00:30:41
C * fe80::/64 is directly connected, ens161.4005, 00:30:41
C * fe80::/64 is directly connected, ens192.4004, 00:30:41
C * fe80::/64 is directly connected, ens192.4003, 00:30:41
C * fe80::/64 is directly connected, ens192.4002, 00:30:41
C * fe80::/64 is directly connected, ens192.4001, 00:30:41
C * fe80::/64 is directly connected, ens256, 00:30:41
C * fe80::/64 is directly connected, ens225, 00:30:41
C * fe80::/64 is directly connected, ens193, 00:30:41
C * fe80::/64 is directly connected, ens192, 00:30:41
C * fe80::/64 is directly connected, ens161, 00:30:41
C>* fe80::/64 is directly connected, ens160, 00:30:41
R11(config)# do show ip pim rp-info
RP address group/prefix-list OIF I am RP Source Group-Type
102.102.102.102 226.1.1.0/24 (Unknown) no Static ASM
R11(config)# do show ipv6 pim rp-info
RP address group/prefix-list OIF I am RP Source Group-Type
1222::1 ff00::/8 ens192.4001 no Static ASM
The same behaviour is present in PIMV4 as well.
In the setup
R11(LHR)-------R2(RP)--------R4(source)
SPT and RPT are same. So when source is not reachable in R11(LHR), (s,g) mroute is switched from SPT to RPT path. pim Upstream set to Not-Joined, iif as unknown.
This commit https://github.com/FRRouting/frr/commit/69e3538cd89b070d3434192bb28b94d7b721ceeb intentionally has added this behaviour which deviates a little from RFC in order to make things work.
Discussed this with Vijay. Since this https://github.com/FRRouting/frr/commit/69e3538cd89b070d3434192bb28b94d7b721ceeb commit has specifically added this behaviour to fix scenarios where SPT path is not available to fall back on RPT path, we are not fixing it. Duplicate of #11506.