From 5ee0bc206805a50748dd056e7ddab26507bf5971 Mon Sep 17 00:00:00 2001 From: Praveen Chaudhary Date: Thu, 2 May 2019 13:25:50 -0700 Subject: [PATCH 1/5] frr-kernel graceful restart design and UTP doc. Signed-off-by: Praveen Chaudhary pchaudhary@linkedin.com RB= G=lnos-reviewers R=pchaudhary,pmao,rmolina,samaity,sfardeen,zxu A= --- doc/frr-kernel/frr_kernel_design_doc_utp.md | 873 +++++++++++++++++++ doc/frr-kernel/img/After frr_kernel fix.png | Bin 0 -> 104905 bytes doc/frr-kernel/img/Before frr_kernel fix.png | Bin 0 -> 104288 bytes 3 files changed, 873 insertions(+) create mode 100644 doc/frr-kernel/frr_kernel_design_doc_utp.md create mode 100644 doc/frr-kernel/img/After frr_kernel fix.png create mode 100644 doc/frr-kernel/img/Before frr_kernel fix.png diff --git a/doc/frr-kernel/frr_kernel_design_doc_utp.md b/doc/frr-kernel/frr_kernel_design_doc_utp.md new file mode 100644 index 00000000000..e5cc067c606 --- /dev/null +++ b/doc/frr-kernel/frr_kernel_design_doc_utp.md @@ -0,0 +1,873 @@ + +## FRR-KERNEL RECONCILIATION DESIGN AND UTP + +## Table of Contents +- [ 1. Problem Statement](#1-problem-statement) +- [2. Observation](#2-observation) +- [3. Proposed Solution and comparison](#3-proposed-solution-and-comparison) +- [4. Approach Selected](#4-approach-selected) +- [5. Low Level details](#5-low-level-details) +- [6. Code Details](#6-code-details) +- [7. Unit Test Plan](#7-unit-test-plan) +- [8. DB schema](#8-db-schema) +- [9. Flows and SAI APIs](#9-flows-and-sai-apis) +- [10. Debug dump and relevant logs](#10-debug-dump-and-relevant-logs) +- [11. Memory consumption](#11-memory-consumption) +- [12. Performance](#12-performance) +- [13. Error flows handling](#13-error-flows-handling) +- [14. Show handling](#14-show-handling) + +## 1. Problem Statement: +> While s/w upgrade to FRR docker or while maintenence FRR docker restart, minimum disturbance to Control Plane Route (i.e Kernel Route) should happen. For some organisation, it is critical to keep control plane unreachability less than ~1 secs for critical services to work with switch while FRR docker restart. +> +>Today Zebra can run with -r flag to retain routes in kernel. But during startup: +i.) Without -k flag: Zebra cleans all kernel routes and insert them back if learned via BGPD/OSPF or any other protocol again. This may take 10-15 secs. [Data copied below.] +> +> ii.) With -k flags: Zebra rib contains stale routes, which will not be deleted ever. Also depending on preference calculated by zebra, these stale route result in no update to kernel and FPM. + +## 2. Observation: +> Below analysis were done before deciding on the approaches, which can be used to solve above problem. + +### 2.1 Zebra restart with -k -r options. +Before restart: +``` +B>* 100.1.0.32/32 [20/0] via 10.0.0.63, Ethernet124, 00:01:46 +B>* 172.16.16.0/32 [20/0] via 10.0.0.63, Ethernet124, 00:01:46 +B>* 172.16.16.1/32 [20/0] via 10.0.0.63, Ethernet124, 00:01:46 +B>* 172.16.16.2/32 [20/0] via 10.0.0.63, Ethernet124, 00:01:46 +B>* 172.16.16.3/32 [20/0] via 10.0.0.63, Ethernet124, 00:01:46 +B>* 172.16.16.4/32 [20/0] via 10.0.0.63, Ethernet124, 00:01:46 +C>* 172.25.11.0/24 is directly connected, eth0 +``` +After restart: +Zebra has 2 routes per destination. [Behavior may have changed on later Zebra, i.e >=6.0.2] +``` +B 100.1.0.32/32 [20/0] via 10.0.0.63, Ethernet124, 00:01:27 +K>* 100.1.0.32/32 via 10.0.0.63, Ethernet124 +B 172.16.16.0/32 [20/0] via 10.0.0.63, Ethernet124, 00:01:27 +K>* 172.16.16.0/32 via 10.0.0.63, Ethernet124 +B 172.16.16.1/32 [20/0] via 10.0.0.63, Ethernet124, 00:01:27 +K>* 172.16.16.1/32 via 10.0.0.63, Ethernet124 +B 172.16.16.2/32 [20/0] via 10.0.0.63, Ethernet124, 00:01:27 +K>* 172.16.16.2/32 via 10.0.0.63, Ethernet124 +B 172.16.16.3/32 [20/0] via 10.0.0.63, Ethernet124, 00:01:27 +K>* 172.16.16.3/32 via 10.0.0.63, Ethernet124 +B 172.16.16.4/32 [20/0] via 10.0.0.63, Ethernet124, 00:01:27 +K>* 172.16.16.4/32 via 10.0.0.63, Ethernet124 +C>* 172.25.11.0/24 is directly connected, eth0 +``` +Ip monitor: Zebra adds no new route, because it already preferred kernel routes. + +---- +### 2.2 Kernel static route with same prefix and same NHs. + +[Note: Kernel Static route analysis was done in more detail, but is not included in this Design Doc. Because kenrel static routes are not used in detail in SONiC.] + +FRR Restart when kernel has extra route same prefix and same NHs but lower matrix than zebra: [Same behavior is observed for high matrix, Zebra always prefere Kernel Route.] + +Add Kernel Static route +``` +sudo ip route del 172.16.16.2/32 via 10.0.0.63 metric 15 +``` +Kernel: +``` +172.16.16.0 10.0.0.63 255.255.255.255 UGH 20 0 0 Ethernet124 +172.16.16.1 10.0.0.63 255.255.255.255 UGH 20 0 0 Ethernet124 +172.16.16.2 10.0.0.63 255.255.255.255 UGH 15 0 0 Ethernet124 +172.16.16.3 10.0.0.63 255.255.255.255 UGH 20 0 0 Ethernet124 +172.16.16.4 10.0.0.63 255.255.255.255 UGH 20 0 0 Ethernet124 +172.16.16.9 10.0.0.63 255.255.255.255 UGH 0 0 0 Ethernet124 +172.25.11.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 +240.127.1.0 0.0.0.0 255.255.255.0 U 0 0 0 docker0 +``` +Frr before restart: +``` +B>* 100.1.0.32/32 [20/0] via 10.0.0.63, Ethernet124, 00:01:46 +B>* 172.16.16.0/32 [20/0] via 10.0.0.63, Ethernet124, 00:01:46 +B>* 172.16.16.1/32 [20/0] via 10.0.0.63, Ethernet124, 00:01:46 +B>* 172.16.16.3/32 [20/0] via 10.0.0.63, Ethernet124, 00:01:46 +B>* 172.16.16.4/32 [20/0] via 10.0.0.63, Ethernet124, 00:01:46 +K>* 172.16.16.2/32 via 10.0.0.63, Ethernet124 +B 172.16.16.2/32 [20/0] via 10.0.0.63, Ethernet124, 00:17:43 +C>* 172.25.11.0/24 is directly connected, eth0 +``` +Ip monitor: +``` +sudo ip route add 172.16.16.2/32 via 10.0.0.63 +172.16.16.2 via 10.0.0.63 dev Ethernet124 +Deleted 172.16.16.2 via 10.0.0.63 dev Ethernet124 proto zebra metric 20 +``` +As per IP monitor, Zebra, after listening about kernel static routes, deletes BGP route from kernel and FPM. For FPM, a code was added to keep protocol inforamtion in APP_DB, which confirm same behavior. + +APP_DB before Kernel Static Route: +``` +127.0.0.1:6379> HGETALL "ROUTE_TABLE:172.16.16.2" +1) "nexthop" +2) "10.0.0.63" +3) "ifname" +4) "Ethernet124" +5) "protocol" +6) "ZEBRA" +``` +After adding kernel Static Routes: +``` +127.0.0.1:6379> HGETALL "ROUTE_TABLE:172.16.16.4" +1) "nexthop" +2) "10.0.0.63" +3) "ifname" +4) "Ethernet124" +5) "protocol" +6) "KERNEL" +``` +After restart routes remains same as above in kernel and FPM, because no updates was sent from Zebra. + +----- +### 2.3 Timing between route deletion in Kernel during Zebra restart and route addition in Kernel, when Zebra runs without option -k. [FRR-3.0.3] +Below start_del_time in Epoch shows when first kernel route was deleted. +1554926630 = Wednesday, April 10, 2019 20:03:50 +``` +Apr 10 20:04:01.354327 falco-test-dut01 NOTICE zebra[58]: frr-kernel: Added 1 routes from zebra, startup_del_time 1554926630 +Apr 10 20:04:02.485333 falco-test-dut01 NOTICE zebra[58]: frr-kernel: Added 1001 routes from zebra, startup_del_time 1554926630 +Apr 10 20:04:03.981137 falco-test-dut01 NOTICE zebra[58]: frr-kernel: Added 2001 routes from zebra, startup_del_time 1554926630 +Apr 10 20:04:05.108101 falco-test-dut01 NOTICE zebra[58]: frr-kernel: Added 3001 routes from zebra, startup_del_time 1554926630 +Apr 10 20:04:06.417365 falco-test-dut01 NOTICE zebra[58]: frr-kernel: Added 4001 routes from zebra, startup_del_time 1554926630 +Apr 10 20:04:07.525413 falco-test-dut01 NOTICE zebra[58]: frr-kernel: Added 5001 routes from zebra, startup_del_time 1554926630 +Apr 10 20:04:08.594670 falco-test-dut01 NOTICE zebra[58]: frr-kernel: Added 6001 routes from zebra, startup_del_time 1554926630 +Apr 10 20:04:10.048414 falco-test-dut01 NOTICE zebra[58]: frr-kernel: Added 7001 routes from zebra, startup_del_time 1554926630 +Apr 10 20:04:11.267177 falco-test-dut01 NOTICE zebra[58]: frr-kernel: Added 8001 routes from zebra, startup_del_time 1554926630 +Apr 10 20:04:12.292980 falco-test-dut01 NOTICE zebra[58]: frr-kernel: Added 9001 routes from zebra, startup_del_time 1554926630 +Apr 10 20:04:13.881074 falco-test-dut01 NOTICE zebra[58]: frr-kernel: Added 10001 routes from zebra, startup_del_time 1554926630 +``` +It ~23 secs between first kernel route deletion and to add 6001 routes. + +#### 2.3.1 On FRR 6.0.2: +1555633942 = Friday, April 19, 2019 00:32:22 +``` +Apr 19 00:32:24.747571 falco-test-dut01 NOTICE bgp#zebra[86]: frr-kernel: Added 1 routes. Del time 1555633942 +Apr 19 00:32:24.876074 falco-test-dut01 NOTICE bgp#zebra[86]: frr-kernel: Added 1001 routes. Del time 1555633942 +Apr 19 00:32:25.055259 falco-test-dut01 NOTICE bgp#zebra[86]: frr-kernel: Added 2001 routes. Del time 1555633942 +Apr 19 00:32:25.210264 falco-test-dut01 NOTICE bgp#zebra[86]: frr-kernel: Added 3001 routes. Del time 1555633942 +Apr 19 00:32:25.388983 falco-test-dut01 NOTICE bgp#zebra[86]: frr-kernel: Added 4001 routes. Del time 1555633942 +Apr 19 00:32:25.527489 falco-test-dut01 NOTICE bgp#zebra[86]: frr-kernel: Added 5001 routes. Del time 1555633942 +Apr 19 00:32:25.653258 falco-test-dut01 NOTICE bgp#zebra[86]: frr-kernel: Added 6001 routes. Del time 1555633942 +Apr 19 00:32:25.789716 falco-test-dut01 NOTICE bgp#zebra[86]: frr-kernel: Added 7001 routes. Del time 1555633942 +Apr 19 00:32:25.951092 falco-test-dut01 NOTICE bgp#zebra[86]: frr-kernel: Added 8001 routes. Del time 1555633942 +Apr 19 00:32:28.949341 falco-test-dut01 NOTICE bgp#zebra[86]: frr-kernel: Added 9001 routes. Del time 1555633942 +Apr 19 00:32:29.072326 falco-test-dut01 NOTICE bgp#zebra[86]: frr-kernel: Added 10001 routes. Del time 1555633942 +``` +It ~7 secs between first kernel route deletion and to add 6001 routes. + +---- +### 2.5 Static ARP Entries Analysis: +Add Static ARP Entry before Zebra Restart: +``` +sudo ip -4 neigh add 172.16.16.4 dev Ethernet120 lladdr 00:11:22:33:44:55 +1172.16.16.4 ether 00:11:22:33:44:55 CM Ethernet120 +``` +Ip monitor: +``` +172.16.16.4 dev Ethernet120 lladdr 00:11:22:33:44:55 PERMANENT +``` +Kernel routes: +``` +100.1.0.32 10.0.0.63 255.255.255.255 UGH 20 0 0 Ethernet124 +172.16.16.0 10.0.0.63 255.255.255.255 UGH 20 0 0 Ethernet124 +172.16.16.0 0.0.0.0 255.255.255.0 U 0 0 0 Ethernet120 +172.16.16.1 10.0.0.63 255.255.255.255 UGH 20 0 0 Ethernet124 +172.16.16.2 10.0.0.63 255.255.255.255 UGH 20 0 0 Ethernet124 +172.16.16.3 10.0.0.63 255.255.255.255 UGH 20 0 0 Ethernet124 +172.16.16.4 10.0.0.63 255.255.255.255 UGH 20 0 0 Ethernet124 +``` + +Zebra Route: +[Zebra does not learn about ARP, In Sonic NeighSyncd listens to netlink and populates APP_DB. So Sonic and Linux kernel both keep route table and Neighbour table seperately. Which suggests if a zebra route has same prefix as ARP\NDP Entry then Conflict happens only in H/W, and it depends on H/W which one will be preferered.] +``` +C>* 172.16.16.0/24 is directly connected, Ethernet120 +B>* 172.16.16.0/32 [20/0] via 10.0.0.63, Ethernet124, 00:15:13 +B>* 172.16.16.1/32 [20/0] via 10.0.0.63, Ethernet124, 00:15:13 +B>* 172.16.16.2/32 [20/0] via 10.0.0.63, Ethernet124, 00:15:13 +B>* 172.16.16.3/32 [20/0] via 10.0.0.63, Ethernet124, 00:15:13 +B>* 172.16.16.4/32 [20/0] via 10.0.0.63, Ethernet124, 00:15:13 +``` +APP_DB: +``` +127.0.0.1:6379> keys *172.16.16.4* +1) "NEIGH_TABLE:Ethernet120:172.16.16.4" +2) "ROUTE_TABLE:172.16.16.4" +127.0.0.1:6379> hgetall "NEIGH_TABLE:Ethernet120:172.16.16.4" +1) "neigh" +2) "00:11:22:33:44:55" +3) "family" +4) "IPv4" +127.0.0.1:6379> hgetall "ROUTE_TABLE:172.16.16.4" +1) "nexthop" +2) "10.0.0.63" +3) "ifname" +4) "Ethernet124" +127.0.0.1:6379> +``` +H/W Entries: (Broadcom) +``` +admin@falco-test-dut01:~$ sudo bcmcmd "l3 l3table show" | grep 172.16.16.4 +admin@falco-test-dut01:~$ sudo bcmcmd "l3 defip show" | grep 172.16.16.4 +32782 0 172.16.16.4/32 00:00:00:00:00:00 100015 0 0 0 0 n +admin@falco-test-dut01:~$ sudo bcmcmd "l3 egress show" | grep 100015 +100015 52:54:00:92:6c:c0 4087 8 130 0 -1 no no 6 no +``` +Restart ZEbra\FRR will have no impact on Neigh_Table. + +---- + +### 2.6 Kernel keeps only one copy of Routes from one source. +This is important because if zebra sends multiple adds to kernel for same route via netlink, where rtm_protocol field is same as before then kernel will only update this entry, but will not add a new entry. +To check this, multiple add\update were sent to kernel from zebra. +``` +falco-test-dut01 NOTICE bgp#zebra[85]: P 0.0.0.0/0 rn 0x556d54234ca0 +falco-test-dut01 NOTICE bgp#zebra[85]: P 192.168.0.1/32 rn 0x556d5423d780 +falco-test-dut01 NOTICE bgp#zebra[85]: P 192.168.0.2/32 rn 0x556d5423da00 +falco-test-dut01 NOTICE bgp#zebra[85]: P 192.168.0.3/32 rn 0x556d5423dc80 +falco-test-dut01 NOTICE bgp#zebra[85]: P 192.168.0.4/32 rn 0x556d5423df80 +falco-test-dut01 NOTICE bgp#zebra[85]: P 192.168.0.5/32 rn 0x556d5423e280 +falco-test-dut01 NOTICE bgp#zebra[85]: P 192.168.0.8/32 rn 0x556d5423ea00 +falco-test-dut01 NOTICE bgp#zebra[85]: P 100.1.0.1/32 rn 0x556d5423d280 +falco-test-dut01 NOTICE bgp#zebra[85]: P 192.168.0.6/32 rn 0x556d5423e500 +falco-test-dut01 NOTICE bgp#zebra[85]: P 100.1.0.2/32 rn 0x556d5423d500 +falco-test-dut01 NOTICE bgp#zebra[85]: Send Update to kernel rn 0x556d54234ca0 +falco-test-dut01 NOTICE bgp#zebra[85]: Send Update to kernel rn 0x556d5423d780 +falco-test-dut01 NOTICE bgp#zebra[85]: Send Update to kernel rn 0x556d5423da00 +falco-test-dut01 NOTICE bgp#zebra[85]: Send Update to kernel rn 0x556d5423dc80 +falco-test-dut01 NOTICE bgp#zebra[85]: Send Update to kernel rn 0x556d5423df80 +falco-test-dut01 NOTICE bgp#zebra[85]: Send Update to kernel rn 0x556d5423e280 +falco-test-dut01 NOTICE bgp#zebra[85]: Send Update to kernel rn 0x556d5423ea00 +falco-test-dut01 NOTICE bgp#zebra[85]: Send Update to kernel rn 0x556d54334390 +falco-test-dut01 NOTICE bgp#zebra[85]: Send Update to kernel rn 0x556d5423d280 +falco-test-dut01 NOTICE bgp#zebra[85]: Send Update to kernel rn 0x556d5423e500 +falco-test-dut01 NOTICE bgp#zebra[85]: Send Update to kernel rn 0x556d5423d500 +``` +But kernel react to only those which has some update, and does keep only one copy of route. +Ip monitor: +``` +admin@falco-test-dut01:~$ ip monitor +192.168.0.4 via 10.0.0.1 dev Ethernet0 proto 186 src 10.1.0.32 metric 20 +192.168.0.8 via 10.0.0.1 dev Ethernet0 proto 186 src 10.1.0.32 metric 20 +192.168.0.9 via 10.0.0.1 dev Ethernet0 proto 186 src 10.1.0.32 metric 20 +Deleted 192.168.0.7 via 10.0.0.3 dev Ethernet4 proto 186 src 10.1.0.32 metric 20 +``` + +## 3. Proposed Solution and comparison: + + +| Field | FPMSYNCD | ORCHAGENT | ZEBRA RIB | +| ------ | ------ |------ | ------ | +| Description | Utilize current approach of DB reconciliation in FPMSyncd. Once reconciliation is done, send the netlink to kernel with add/del/change to APP_DB. | Utilize current approach of DB reconciliation in FPMSyncd. Inside Orchagent, When RouteOrch class processes these APP_DB route entries to update ASIC_DB, same time send the netlink to kernel. | Read kernel Routes while Zebra starts up, and change Zebra RIB calculation to reconcile with old kernel route. After reconciliation , Send an update to kernel and FPM about new route. Also delete stale kernel routes from rib after reconciliation. FpmSyncd DB reconcilation code may go away. | +|Special handling while System Restart (warm reboot). | Since Kernel route will be deleted due to restart, FPMSyncd needs to populate kernel routes while restoration process. While restoration FPMSyncd Reads APP_DB Routes in a MAP. | This approach needs no special handling for this case, since after coming up Orchagent will recompile APP_DB route entries to create new ASIC_DB. Kernel routes will be installed during this compilation. | During startup Zebra has to read routes from APP_DB for restoration. Which means Many APIs must be exposed to Zebra. This may not be needed, if current APP_DB reconciliation remains in FPMsyncd. But it is good to deprecate FpmSyncd DB reconcilation, with that, kernel route should be populated similar to neigh table from APP_DB after restart. | +| SWSS docker restart | No special case handling. | Orchagent will recompile APP_DB route entries to create new ASIC_DB. Orchagent will send another netlink to kernel. If no change (or just add\change) in DB, Kernel routes will remain same. Because kernel keeps only one route per prefix from Zebra. If route del in APP_DB was done during swss restart. Orchagent will send netlink del msg to kernel, because events are queued in DB. | No special case handling. | +| OwnerShip | FPMSyncd will be clear owner of route both in Kernel and DB. May rename as RouteMgrD.| Source of truth will be APP_DB for kernel Routes. FPMSyncd will add APP_DB route and Orchagent will add kernel Route. | Similar as today. Zebra will be Routing Manager and owner.| +| If Kernel Netlink fails with ENOMEM. | No retry mechanism. Should system continue working, as per today No, because Zebra exits in such cases. | No retry mechanism. Should system continue working, as per today No, because Zebra exits in such cases. | No retry mechanism. Should system continue working, as per today No, because Zebra exits in such cases.| +| Kernel Fails with EAGAIN. | No retry mechanism. Should system continue working, as per today YES, because Zebra assume it as success case. APP_DB and kernel will not be in sync. | Same | Same | +| Support More Families like MPLS, CLNS and VRF later. | FPMSyncd will need Individual deserialization mechanism in place to convert from Netlink to Tuple for each family. With this approach serialization mechanism will be needed in FPMsyncd. | FPMSyncd will need Individual deserialization mechanism in place to convert from Netlink to Tuple for each family. With this approach serialization mechanism will be needed in Orchagent. | Separate handing per Family is not needed, as of now, Zebra does not support MPLS. | +| EOR Handling. | EOR must be passed\extended till FPMSyncd, so that FPMSyncd reconciliation steps can be executed as per EOR arrival. | EOR must be passed\extended till FPMSyncd, so that FPMSyncd reconciliation steps can be executed as per EOR arrival. | EOR processing may remain till Zebra. | +| Knob known to daemon. | FPMSyncd must know about warm reboot knob, frr restart knob and warm restart FRR timer. (Already done). | Same as today. | Zebra must have an option to exceute kernel reconciliation at start. | +| When static (or kernel learned) Route is Added before FRR restart. [See Observations section for complete data.] | When Static Route is added, Zebra learns about it and sends a delete to kernel and FPM. So kernel and FPM keep only one copy of route for this prefix. After Zebra Restart: [ADD= Zebra learns same route, Change = Zebra learns same prefix with NH change, DEL = Zebra does not learn same prefix.] # Case ADD: After restart Zebra will learn kernel static route from kernel while start up. And Zebra will learn same prefix Route via BGP. Zebra will choose kernel route in RIB calculation. Zebra will send no update to APP_DB and kernel. [**This case shows rtm_protocol = RTPROT_ZEBRA in netlink message is necessary, else Zebra would not have considered Static Route in RIB Calculation.] As per current code, it will delete APP_DB Route. [APP_DB reconciliation will not delete Route if rtm_protocol is stored in DB.] # Case Change: Same as ADD. # Case Del: Same as ADD, except Zebra will not learn any BGP Route for same prefix. | Same | Rib Calculation will not change for Static or kernel learned route. It will work fine without FpmSyncd DB reconciliation code. | +| When static (or kernel learned) Route is Added during FRR restart. i.e. Zebra was down when kernel route was added. | This is hard to recover scenario. Since Zebra is down while static route is added to kernel. No delete message is received by kernel and FPM. As a result kernel has 2 routes for same prefix and APP_DB has zebra route [non static route] in DB. | Same | Same | +| ARP/NDP is learned which has same prefix as zebra route. | After learning, Kernel will add ARP in neigh table which will have pointer from route table, but will not have an entry in route table. So Zebra and FPM will play no role in it because they never know about the ARP entry. From neighsyncd, ARP entry will be installed in APP_DB, then ASIC_DB and then in H/W. So H/W will learn about same prefix as neighbor and as Route. H/W behavior is out of scope because it may vary. +| **Brief Implementation details.** | +| Zebra code changes: | Zebra uses kernel_route_rib() to add/del/change in kernel route. kernel_route_rib() calls netlink_route_multipath(). In netlink_route_multipath(), update must be blocked for single\multi path route to kernel. Propagate EOR down to FPMSyncd after sending routes update to FPMSyncd. Note: Zebra will be started with -r option (Retain kernel Route option) but without -k option. So After restart Zebra will try to delete all Zebra routes from kernel, but due to block in netlink_route_multipath(), no change will go to kernel. This Delete will go to FPM for previous Zebra Routes, but this is fine because FPMSyncd keeps only one entry for each destprefix. So at last the final update will come into effect. | Same as Fpmsyncd | During startup in netlink_route_change_read_unicast(), all stale zebra routes learned from kernel will be marked with a special flag. If a route is learned for same prefix then stale route will be marked for deletion while adding new route in rib_add_multipath(). For remaining stale routes, a sweep function will be called with EOR or with timer. An option will be introduced in Zebra to enable kernel reconcile functionality. | +| FPMSyncd Code changes | RouteTableWarmStartHelper will be inherited from WarmStartHelper class, which will override WarmStartHelper::reconcile() to send netlink message to kernel while updating DB. FpmSyncd needs to handle EOR message and call reconciliation when arrive. To handle warm reboot case. Similar handler must be called from runRestoration(). Netlink message creation part should be implemented for each family. | FpmSyncd needs to handle EOR message and call reconciliation when arrive. | FpmSyncd DB reconciliation may be deprecated. | +| Orchagent Code Changes | N/A | In RouteOrch Class functions, whenever SaiRedis API call is done to update ASIC_DB, a call to netlink_kernel_route() must be done to sent netlink msg to kernel. Netlink message creation part should be implemented for each family. | N/A | + +## 4. Approach Selected + +Approach 3 : Zebra RIB Calculation is chosen to address FRR-Kernel Reconciliation after considering all above comparison points. + +## 5. Low Level details: + +### 5.1 Before Fix: + +![](https://github.com/praveen-li/SONiC/tree/master/doc/frr-kernel/img/Before%20frr_kernel%20fix.png) + +Above image explains the Zebra behavior right now on startup with -k (keep_kernel_mode option. +``` +1.) Zebra reads kernel routes including previous instance of Zebra routes. + +2.) Zebra pushes these routes in RIB Table as per family of route. + +3.) Rnode creation and route_entry creation of old kernel route is done and route_entry is inserted in Rnode of the destprefix. + Next-hops for this route will be markes as active, since this route is learned from Kernel. + Note: This will result in call to rib_process, but since Rnode contains only one route which is already in FIB, so rib_process will result in NO_OP. + +4.) Bgpd will queue new routes to Zebra after getting first keepalive (implicit EOR) from bgp peer. + +5.) Zebra will process new routes and call rib_add() for this route. + +6.) A new route_entry will be created and will be inserted in correct Rnode. There may be 2 scenarios here, + a.) Rnode already contains other routes including old kernel routes or + b.) new Rnode is created for this route_entry. + +7.) Updated Rnode will be queued for rib processing. During rib processing, Zebra will run best route selection, + which on most of the FRR version will select old kernel route which is already marked as active in FIB. + +8.) No update will be sent to Kernel and FPM, which may result in route deletion from APP_DB as per current Fpmsyncd DB reconciliation code. + Update will be sent only for those route for which stale kernel route is not present. +``` + +Current behavior will result in: +``` + +1.) Route deletion from APP_DB. + +2.) Stale route in Kernel. + +3.) Stale routes in Zebra RIB. +``` + +### 5.2 After Fix: + +![](https://github.com/praveen-li/SONiC/tree/master/doc/frr-kernel/img/After%20frr_kernel%20fix.png) + +``` +1.) Zebra reads kernel routes including previous instance of Zebra routes and mark them with ZEBRA_FLAG_KERNEL_STALE_RT. +A timer will start (default 60 secs) to clean stale kernel routes. + +2.) Zebra pushes these routes in RIB Table as per family of route. + +3.) Rnode creation and route_entry creation of old kernel route is done and route_entry is inserted in Rnode of the destprefix. + Next-hops for this route will be markes as active, since this route is learned from Kernel. + Note: This will result in call to rib_process, but since Rnode contains only one route which is already in FIB, so rib_process will result in NO_OP. + +4.) Bgpd will queue new routes to Zebra after getting first keepalive (implicit EOR) from bgp peer. + +5.) Zebra will process new routes and call rib_add() for this route. + +6.) A new route_entry will be created and will be inserted in correct Rnode. There may be 2 scenarios here, + a.) Rnode already contains other routes including old kernel routes or + b.) new Rnode is created for this route_entry. + In first case, if previously exist route is marked with ZEBRA_FLAG_KERNEL_STALE_RT, then previous route will be marked for deletion. + +7.) Updated Rnode will be queued for rib processing. During rib processing, Zebra will run best route selection, + which will select newly learned route since stale kernel route is marked for deletion. + +8.) Update will be sent to Kernel and FPM in all cases. + +9.) Upon timer expire, a sweep function will mark all reamining routes with ZEBRA_FLAG_KERNEL_STALE_RT flag for deletion. + Eventually rib_process function will free stale route. + +10.) This will result in delete update to kernel and FPM. +``` + +After fix, it will result in: +``` +1.) Kernel and FPM getting updated only when (and as soon as) new route is learned. + +2.) Stale routes in Kernel and fpm will be cleaned after timeout. + +3.) No Stale routes in Zebra RIB. +``` + +## 6. Code Details: +- new option to zebra: + +A new option -K is added to zebra. -K is choosed to match with -k (small -k) because both deals with stale kernel routes. + +Use Case: +zebra -K 30 +(Option -K is for kernel level graceful restart. 30 is timer after which all stale kernel routes will be cleaned. With in 30 mins all newly learned kernel routes will be gracefully updated.) + +in zebra\main.c +``` + {"retain", no_argument, NULL, 'r'}, ++ {"kernel_gr", required_argument, NULL, 'K'}, + #ifdef HAVE_NETLINK + {"vrfwnetns", no_argument, NULL, 'n'}, + + +int main(int argc, char **argv) + + frr_opt_add( +- "bakz:e:l:r" ++ "bakz:e:l:r:K" + #ifdef HAVE_NETLINK + "s:n" + #endif + + +int main(int argc, char **argv) + " -l, --label_socket Socket to external label manager\n" + " -k, --keep_kernel Don't delete old routes which were installed by zebra.\n" + " -r, --retain When program terminates, retain added route by zebra.\n" ++ " -K, --kernel_gr Zebra graceful restart at kernel level. Arg: timer to expire stale routes\n" + #ifdef HAVE_NETLINK + " -n, --vrfwnetns Use NetNS as VRF backend\n" + " -s, --nl-bufsize Set netlink receive buffer size\n" +@@ -311,6 +313,13 @@ int main(int argc, char **argv) + case 'r': + retain_mode = 1; + break; ++ case 'K': ++ kernel_gr = 1; ++ kernel_gr_timer = atoi(optarg); ++ /* Allow all positive values for testing. */ ++ if (kernel_gr_timer < 1) ++ kernel_gr_timer = ZEBRA_KERNEL_GR_TIME; ++ break; + ``` + +1.) Zebra reads kernel routes including previous instance of Zebra routes and mark them with ZEBRA_FLAG_KERNEL_STALE_RT. + + A timer will start (default 60 secs) to clean stale kernel routes. + +File: zebra/main.c +``` +int main(int argc, char **argv) + * Initialize NS( and implicitly the VRF module), and make kernel + * routing socket. */ + zebra_ns_init(); ++ if (kernel_gr) ++ thread_add_timer(zebrad.master, rib_sweep_stale_rt_kernel_gr, ++ NULL, kernel_gr_timer, NULL); +``` + +File: zebra/rt_netlink.c +``` + static int netlink_route_change_read_unicast(struct nlmsghdr *h, ns_id_t ns_id, ++ /* ++ * At startup, Mark all routes from previous instance of Zebra ++ * with KERNEL_RECONCILE flag. ++ */ ++ if (kernel_gr && startup ++ && is_selfroute(rtm->rtm_protocol)) { ++ ++zrouter->zebra_stale_rt_add; ++ flags |= ZEBRA_FLAG_KERNEL_STALE_RT; ++ } +``` + +2.) Zebra pushes these routes in RIB Table as per family of route. + +3.) Rnode creation and route_entry creation of old kernel route is done and route_entry is inserted in Rnode of the destprefix. Next-hops for this route will be markes as active, since this route is learned from Kernel. Note: This will result in call to rib_process, but since Rnode contains only one route which is already in FIB, so rib_process will result in NO_OP. + +4.) Bgpd will queue new routes to Zebra after getting first keepalive (implicit EOR) from bgp peer. + +5.) Zebra will process new routes and call rib_add() for this route. + +6.) A new route_entry will be created and will be inserted in correct Rnode. There may be 2 scenarios here, a.) Rnode already contains other routes including old kernel routes or new Rnode is created for this route_entry. In first case, if previously exist route is marked with ZEBRA_FLAG_KERNEL_STALE_RT, then previous route will be marked for deletion. + +File: zebra\zebra_rib. + +``` +int rib_add_multipath(afi_t afi, safi_t safi, struct prefix *p, ++ /* If kernel_reconcile is set, then mark Zebra-originated route ++ * for deletion. Zebra learned these routes from kernel while ++ * start up. Now, since we learned new route for same destination, ++ * this is the time to clear stale route, so that both kernel ++ * and FPM are updated while rib_process. This will result in no ++ * traffic loss, if same route->NH is learned after startup. ++ */ ++ if (kernel_gr && !kernel_stale_rt ++ && CHECK_FLAG(same->flags, ZEBRA_FLAG_KERNEL_STALE_RT)) { ++ ++zrouter->zebra_stale_rt_del; ++ if (IS_ZEBRA_DEBUG_RIB) ++ rnode_debug(rn, same->vrf_id, ++ "kernel_gr: match, add %lu del %lu rn %p", ++ zrouter->zebra_stale_rt_add, ++ zrouter->zebra_stale_rt_del, rn); ++ kernel_stale_rt = same; ++ continue; ++ } +``` + +7.) Updated Rnode will be queued for rib processing. During rib processing, Zebra will run best route selection, which will select newly learned route since stale kernel route is marked for deletion. + +8.) Update will be sent to Kernel and FPM in all cases. + +9.) Upon timer expire, a sweep function will mark all reamining routes with ZEBRA_FLAG_KERNEL_STALE_RT flag for deletion. Eventually rib_process function will free stale route. + +File zebra\zebra_rib. +``` ++/* Sweep all RIB tables after the timer if kernel_reconcile is set. */ ++int rib_sweep_stale_rt_kernel_gr(struct thread *thread) ++{ +.... +.... + + RB_FOREACH (vrf, vrf_id_head, &vrfs_by_id) { + + if ((zvrf = vrf->info) == NULL) + + continue; + + + + rib_sweep_table(zvrf->table[AFI_IP][SAFI_UNICAST], + + ZEBRA_FLAG_KERNEL_STALE_RT); + + rib_sweep_table(zvrf->table[AFI_IP6][SAFI_UNICAST], + + ZEBRA_FLAG_KERNEL_STALE_RT); + + } +.... +.... +``` + +10.) This will result in delete update to kernel and FPM. + + +## 7. Unit Test Plan: + +Unit Test Plan includes below 3 test cases: [All 3 test cases will be repeated for IPV4 and IPV6 family] + +### 7.1 Test Cases. + +#### Test Case 1.) Ping\Fast Ping 3 destinations using PTF from the source address which used BGP Routes. Ping will run continuosly during FRR restart. + - Create Ping packet in PTF. + - Create Expected Packet. + - Sent Ping packet on port 1. + - Verify expected Packet on Port 2. + +#### Test Case 2.) Test add, change and delete in BGP prefixes across FRR restart. + + - Have 2 BGP peers publishing 5 prefixes each, where 2 prefixes are published from both peers. + - Observe expected routes in Zebra and Kernel. + - Stop FRR + - Add a new prefix to publish in peer1. + - Add a prefix to publish in peer1 which was published only from peer 2 before. + - Delete a prefix from peer2 which was published from both peer1 and peer2. + - Delete a prefix from peer2 which was published only from peer 2 before. + - Start FRR. + - Observe Zebra logs, ip monitor, kernel routes and Zebra routes. + +#### Test Case 3.) Scaled testing: Perform FRR restart with > 6 K routes published from at least 4 peers. [6500 routes with 32 peers, as per T1 topology], [6k routes and 4 BGP peers as per T0] + + - Have atleast >3 BGP peers publishing same 6k prefixes. Rest BGP peers can publish 10-15 routes each which are unique. + - Observe expected routes in Zebra and Kernel. + - Stop FRR + - Bring 1 BGP peer down which publishes 6k routes. [Change case ECMP to Non ECMP]. + - Change all published prefixes from 1 BGP peer which publishes 10-15 routes. [ADD and DELETE case] + - Start FRR. + - Observe Zebra logs, ip monitor, kernel routes and Zebra routes. + +### 7.2 Details of Test Cases: + +#### Test Case 1.) Ping\Fast Ping 3 destinations using PTF from the source address which used BGP Routes in DUT. Ping will run continuosly during FRR restart. + + **Verify expected Packet on Port 2.** + +For Example: If installed BGP routes are as below: +``` +dut01# 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, + > - selected route, * - FIB route +B>* 192.168.0.4/32 [20/0] via 10.0.0.1, Ethernet0, 00:00:29 +B>* 192.168.0.5/32 [20/0] via 10.0.0.1, Ethernet0, 00:00:29 + * via 10.0.0.3, Ethernet4, 00:00:29 +B>* 192.168.0.6/32 [20/0] via 10.0.0.3, Ethernet4, 00:00:29 +B>* 192.168.0.8/32 [20/0] via 10.0.0.1, Ethernet0, 00:00:29 +B>* 192.168.0.9/32 [20/0] via 10.0.0.1, Ethernet0, 00:00:29 +``` + +**Create Ping packet in PTF.** + +PTF ICMP packet will be: +``` +pkt = simple_icmp_packet(pktlen=pktlen, + eth_dst=self.router_mac, + eth_src=src_mac, + ip_src="192.168.0.6", + ip_dst="10.0.0.0", + ip_ttl=64) + +Packet: +00:e0:ec:7b:ba:bb > 52:54:00:4b:bb:87, ethertype 802.1Q (0x8100), length 102: vlan 1681, p 0, ethertype IPv4, 192.168.0.6 > 10.0.0.0: ICMP echo request, id 19456, seq 9, length 64 +``` + +**Create Expected Packet.** +``` +exp_pkt = simple_icmp_packet(pktlen=pktlen, + eth_src=self.router_mac, + ip_dst=ip_src, + icmp_type=0) +``` + +**Sent Ping packet on port 1.** +``` +send_packet(self, src_port, pkt) +``` + +**Then Verify the Packet on Port 2:** +``` +(matched_index, received) = verify_packet_any_port(self, masked_exp_pkt, [2]]) +``` + +#### Test Case 2.) Test add, change and delete in BGP prefixes across FRR restart. + +- Have 2 BGP peers publishing 5 prefixes each, where 2 prefixes are published from both peers. + +Routes are published to DUT from 2 BGP peers: (Track 192.168.0.* routes) + +**Peer1:** +``` +ARISTA01T2(config)#show ip route + +VRF name: default +Codes: C - connected, S - static, K - kernel, + O - OSPF, IA - OSPF inter area, E1 - OSPF external type 1, + E2 - OSPF external type 2, N1 - OSPF NSSA external type 1, + N2 - OSPF NSSA external type2, B I - iBGP, B E - eBGP, + R - RIP, I L1 - ISIS level 1, I L2 - ISIS level 2, + A B - BGP Aggregate, A O - OSPF Summary, + NG - Nexthop Group Static Route, V - VXLAN Control Service + +Gateway of last resort is not set + + C 10.0.0.0/31 is directly connected, Ethernet1 + B E 10.1.0.32/32 [200/0] via 10.0.0.0, Ethernet1 + C 10.10.246.0/24 is directly connected, Ethernet9 + C 100.1.0.1/32 is directly connected, Loopback0 + S 192.168.0.1/32 [1/0] via 10.10.246.100, Ethernet9 + S 192.168.0.2/32 [1/0] via 10.10.246.100, Ethernet9 + S 192.168.0.3/32 [1/0] via 10.10.246.100, Ethernet9 + S 192.168.0.4/32 [1/0] via 10.10.246.100, Ethernet9 + S 192.168.0.5/32 [1/0] via 10.10.246.100, Ethernet9 +``` + + +**Peer2:** +``` +ARISTA02T2(config)#show ip route + +VRF name: default +Codes: C - connected, S - static, K - kernel, + O - OSPF, IA - OSPF inter area, E1 - OSPF external type 1, + E2 - OSPF external type 2, N1 - OSPF NSSA external type 1, + N2 - OSPF NSSA external type2, B I - iBGP, B E - eBGP, + R - RIP, I L1 - ISIS level 1, I L2 - ISIS level 2, + A B - BGP Aggregate, A O - OSPF Summary, + NG - Nexthop Group Static Route, V - VXLAN Control Service + +Gateway of last resort is not set + + C 10.0.0.2/31 is directly connected, Ethernet1 + B E 10.1.0.32/32 [200/0] via 10.0.0.2, Ethernet1 + C 10.10.246.0/24 is directly connected, Ethernet9 + C 100.1.0.2/32 is directly connected, Loopback0 + S 192.168.0.4/32 [1/0] via 10.10.246.100, Ethernet9 + S 192.168.0.5/32 [1/0] via 10.10.246.100, Ethernet9 + S 192.168.0.6/32 [1/0] via 10.10.246.100, Ethernet9 + S 192.168.0.7/32 [1/0] via 10.10.246.100, Ethernet9 + S 192.168.0.8/32 [1/0] via 10.10.246.100, Ethernet9 +``` + +- Observe expected routes in Zebra and Kernel. + +**Zebra DUT:** +``` +dut01# 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, + > - selected route, * - FIB route + +B>* 0.0.0.0/0 [20/0] via 10.0.0.1, Ethernet0, 00:04:30 + * via 10.0.0.3, Ethernet4, 00:04:30 +C>* 10.0.0.0/31 is directly connected, Ethernet0, 00:04:32 +C>* 10.0.0.2/31 is directly connected, Ethernet4, 00:04:32 +C>* 10.1.0.32/32 is directly connected, lo, 00:04:32 +B>* 100.1.0.1/32 [20/0] via 10.0.0.1, Ethernet0, 00:04:30 +B>* 100.1.0.2/32 [20/0] via 10.0.0.3, Ethernet4, 00:04:30 +C>* 172.25.11.0/24 is directly connected, eth0, 00:04:32 +B>* 192.168.0.1/32 [20/0] via 10.0.0.1, Ethernet0, 00:04:30 +B>* 192.168.0.2/32 [20/0] via 10.0.0.1, Ethernet0, 00:04:30 +B>* 192.168.0.3/32 [20/0] via 10.0.0.1, Ethernet0, 00:04:30 +B>* 192.168.0.4/32 [20/0] via 10.0.0.1, Ethernet0, 00:04:30 + * via 10.0.0.3, Ethernet4, 00:04:30 +B>* 192.168.0.5/32 [20/0] via 10.0.0.1, Ethernet0, 00:04:30 + * via 10.0.0.3, Ethernet4, 00:04:30 +B>* 192.168.0.6/32 [20/0] via 10.0.0.3, Ethernet4, 00:04:30 +B>* 192.168.0.7/32 [20/0] via 10.0.0.3, Ethernet4, 00:04:30 +B>* 192.168.0.8/32 [20/0] via 10.0.0.3, Ethernet4, 00:04:30 +``` + + +**Kernel Route: route -n** +``` +admin@dut01:~$ sudo route -n +Kernel IP routing table +Destination Gateway Genmask Flags Metric Ref Use Iface +0.0.0.0 10.0.0.1 0.0.0.0 UG 20 0 0 Ethernet0 +10.0.0.0 0.0.0.0 255.255.255.254 U 0 0 0 Ethernet0 +10.0.0.2 0.0.0.0 255.255.255.254 U 0 0 0 Ethernet4 +100.1.0.1 10.0.0.1 255.255.255.255 UGH 20 0 0 Ethernet0 +100.1.0.2 10.0.0.3 255.255.255.255 UGH 20 0 0 Ethernet4 +172.25.11.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 +192.168.0.1 10.0.0.1 255.255.255.255 UGH 20 0 0 Ethernet0 +192.168.0.2 10.0.0.1 255.255.255.255 UGH 20 0 0 Ethernet0 +192.168.0.3 10.0.0.1 255.255.255.255 UGH 20 0 0 Ethernet0 +192.168.0.4 10.0.0.1 255.255.255.255 UGH 20 0 0 Ethernet0 +192.168.0.5 10.0.0.1 255.255.255.255 UGH 20 0 0 Ethernet0 +192.168.0.6 10.0.0.3 255.255.255.255 UGH 20 0 0 Ethernet4 +192.168.0.7 10.0.0.3 255.255.255.255 UGH 20 0 0 Ethernet4 +192.168.0.8 10.0.0.3 255.255.255.255 UGH 20 0 0 Ethernet4 +240.127.1.0 0.0.0.0 255.255.255.0 U 0 0 0 docker0 +``` + +**Stop FRR** +``` +admin@dut01:~$ date +Tue Apr 23 22:05:02 UTC 2019 +admin@dut01:~$ sudo service bgp stop +``` + + +**Changes in Published route** +``` +Peer1: +ip route 192.168.0.8/32 10.10.246.100 (Change case: NH move from Peer 2 to Peer 1) +ip route 192.168.0.9/32 10.10.246.100 (Absolute add case: New Route) + +Peer2: +no ip route 192.168.0.4/32 10.10.246.100 (Change case: from ECMP to non_ecmp) +no ip route 192.168.0.7/32 10.10.246.100 (Delete Case) (Should be deleted after time out) +no ip route 192.168.0.8/32 10.10.246.100 (Change case: ) +``` + +**Start FRR** +``` +admin@dut01:~$ date +Tue Apr 23 22:05:48 UTC 2019 +admin@dut01:~$ sudo service bgp start +``` + +**Zebra logs: +Note: All logs may not be part of final diff** +``` +Apr 23 22:05:59.589030 dut01 NOTICE bgp#zebra[85]: kernel_reconcile: match, A 11 D 1 P 0.0.0.0/0 rn 0x556d54234ca0 +Apr 23 22:05:59.589301 dut01 NOTICE bgp#zebra[85]: kernel_reconcile: match, A 11 D 2 P 192.168.0.1/32 rn 0x556d5423d780 +Apr 23 22:05:59.589378 dut01 NOTICE bgp#zebra[85]: kernel_reconcile: match, A 11 D 3 P 192.168.0.2/32 rn 0x556d5423da00 +Apr 23 22:05:59.589691 dut01 NOTICE bgp#zebra[85]: kernel_reconcile: match, A 11 D 4 P 192.168.0.3/32 rn 0x556d5423dc80 +Apr 23 22:05:59.589788 dut01 NOTICE bgp#zebra[85]: kernel_reconcile: match, A 11 D 5 P 192.168.0.4/32 rn 0x556d5423df80 +Apr 23 22:05:59.589859 dut01 NOTICE bgp#zebra[85]: kernel_reconcile: match, A 11 D 6 P 192.168.0.5/32 rn 0x556d5423e280 +Apr 23 22:05:59.589931 dut01 NOTICE bgp#zebra[85]: kernel_reconcile: match, A 11 D 7 P 192.168.0.8/32 rn 0x556d5423ea00 +Apr 23 22:05:59.590001 dut01 NOTICE bgp#zebra[85]: kernel_reconcile: match, A 11 D 8 P 100.1.0.1/32 rn 0x556d5423d280 +Apr 23 22:05:59.590072 dut01 NOTICE bgp#zebra[85]: kernel_reconcile: match, A 11 D 9 P 192.168.0.6/32 rn 0x556d5423e500 +Apr 23 22:05:59.590142 dut01 NOTICE bgp#zebra[85]: kernel_reconcile: match, A 11 D 10 P 100.1.0.2/32 rn 0x556d5423d500 +Apr 23 22:05:59.599051 dut01 NOTICE bgp#zebra[85]: Send Update to kernel rn 0x556d54234ca0 +Apr 23 22:05:59.599334 dut01 NOTICE bgp#zebra[85]: Send Update to kernel rn 0x556d5423d780 +Apr 23 22:05:59.599462 dut01 NOTICE bgp#zebra[85]: Send Update to kernel rn 0x556d5423da00 +Apr 23 22:05:59.599533 dut01 NOTICE bgp#zebra[85]: Send Update to kernel rn 0x556d5423dc80 +Apr 23 22:05:59.599665 dut01 NOTICE bgp#zebra[85]: Send Update to kernel rn 0x556d5423df80 +Apr 23 22:05:59.600987 dut01 NOTICE bgp#zebra[85]: Send Update to kernel rn 0x556d5423e280 +Apr 23 22:05:59.600987 dut01 NOTICE bgp#zebra[85]: Send Update to kernel rn 0x556d5423ea00 +Apr 23 22:05:59.600987 dut01 NOTICE bgp#zebra[85]: Send Update to kernel rn 0x556d54334390 +Apr 23 22:05:59.600987 dut01 NOTICE bgp#zebra[85]: Send Update to kernel rn 0x556d5423d280 +Apr 23 22:05:59.601044 dut01 NOTICE bgp#zebra[85]: Send Update to kernel rn 0x556d5423e500 +Apr 23 22:05:59.601044 dut01 NOTICE bgp#zebra[85]: Send Update to kernel rn 0x556d5423d500 + +Apr 23 22:06:12.615442 dut01 NOTICE bgp#zebra[85]: kernel_reconcile: timer_expire stats before flush: add 11, del 10 +Apr 23 22:06:12.615442 dut01 NOTICE bgp#zebra[85]: kernel_reconcile: sweep, A 11 D 11 P 192.168.0.7/32 rn 0x556d5423e780 +Apr 23 22:06:12.615741 dut01 NOTICE bgp#zebra[85]: Send Delete to kernel rn 0x556d5423e780 +Apr 23 22:06:12.615824 dut01 NOTICE bgp#zebra[85]: kernel_reconcile: timer_expire stats after flush: add 11, del 11 +Apr 23 22:06:12.615896 dut01 NOTICE bgp#zebra[85]: kernel_reconcile: Reset kernel_reconcile = 0 +``` + +**Ip monitor:** +``` +admin@dut01:~$ ip monitor +192.168.0.4 via 10.0.0.1 dev Ethernet0 proto 186 src 10.1.0.32 metric 20 +192.168.0.8 via 10.0.0.1 dev Ethernet0 proto 186 src 10.1.0.32 metric 20 +192.168.0.9 via 10.0.0.1 dev Ethernet0 proto 186 src 10.1.0.32 metric 20 +Deleted 192.168.0.7 via 10.0.0.3 dev Ethernet4 proto 186 src 10.1.0.32 metric 20 +``` + +**Zebra DUT:** +``` +dut01# 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, + > - selected route, * - FIB route + +B>* 0.0.0.0/0 [20/0] via 10.0.0.1, Ethernet0, 00:00:29 + * via 10.0.0.3, Ethernet4, 00:00:29 +C>* 10.0.0.0/31 is directly connected, Ethernet0, 00:00:31 +C>* 10.0.0.2/31 is directly connected, Ethernet4, 00:00:31 +C>* 10.1.0.32/32 is directly connected, lo, 00:00:31 +B>* 100.1.0.1/32 [20/0] via 10.0.0.1, Ethernet0, 00:00:29 +B>* 100.1.0.2/32 [20/0] via 10.0.0.3, Ethernet4, 00:00:29 +C>* 172.25.11.0/24 is directly connected, eth0, 00:00:31 +B>* 192.168.0.1/32 [20/0] via 10.0.0.1, Ethernet0, 00:00:29 +B>* 192.168.0.2/32 [20/0] via 10.0.0.1, Ethernet0, 00:00:29 +B>* 192.168.0.3/32 [20/0] via 10.0.0.1, Ethernet0, 00:00:29 +B>* 192.168.0.4/32 [20/0] via 10.0.0.1, Ethernet0, 00:00:29 +B>* 192.168.0.5/32 [20/0] via 10.0.0.1, Ethernet0, 00:00:29 + * via 10.0.0.3, Ethernet4, 00:00:29 +B>* 192.168.0.6/32 [20/0] via 10.0.0.3, Ethernet4, 00:00:29 +B>* 192.168.0.8/32 [20/0] via 10.0.0.1, Ethernet0, 00:00:29 +B>* 192.168.0.9/32 [20/0] via 10.0.0.1, Ethernet0, 00:00:29 +``` + +**Kernel:** +``` +admin@dut01:~$ sudo route -n +Kernel IP routing table +Destination Gateway Genmask Flags Metric Ref Use Iface +0.0.0.0 10.0.0.1 0.0.0.0 UG 20 0 0 Ethernet0 +10.0.0.0 0.0.0.0 255.255.255.254 U 0 0 0 Ethernet0 +10.0.0.2 0.0.0.0 255.255.255.254 U 0 0 0 Ethernet4 +100.1.0.1 10.0.0.1 255.255.255.255 UGH 20 0 0 Ethernet0 +100.1.0.2 10.0.0.3 255.255.255.255 UGH 20 0 0 Ethernet4 +172.25.11.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 +192.168.0.1 10.0.0.1 255.255.255.255 UGH 20 0 0 Ethernet0 +192.168.0.2 10.0.0.1 255.255.255.255 UGH 20 0 0 Ethernet0 +192.168.0.3 10.0.0.1 255.255.255.255 UGH 20 0 0 Ethernet0 +192.168.0.4 10.0.0.1 255.255.255.255 UGH 20 0 0 Ethernet0 +192.168.0.5 10.0.0.1 255.255.255.255 UGH 20 0 0 Ethernet0 +192.168.0.6 10.0.0.3 255.255.255.255 UGH 20 0 0 Ethernet4 +192.168.0.8 10.0.0.1 255.255.255.255 UGH 20 0 0 Ethernet0 +192.168.0.9 10.0.0.1 255.255.255.255 UGH 20 0 0 Ethernet0 +240.127.1.0 0.0.0.0 255.255.255.0 U 0 0 0 docker0 +``` + + +#### Test Case 3.) Scaled testing: Perform FRR restart with > 6 K routes published from at least 4 peers. [6500 routes with 32 peers, as per T1 topology], [6k routes and 4 BGP peers as per T0] +Steps will be similar to Test case 2. + +## 8. DB schema + No Change. +## 9. Flows and SAI APIs + N/A +## 10. Debug dump and relevant logs +Following logs will appear in Zebra at DEBUG level. For testing LOGs were added at NOTICE level. +``` +Apr 23 22:05:59.589030 dut01 NOTICE bgp#zebra[85]: kernel_reconcile: match, A 11 D 1 P 0.0.0.0/0 rn 0x556d54234ca0 +Apr 23 22:05:59.589301 dut01 NOTICE bgp#zebra[85]: kernel_reconcile: match, A 11 D 2 P 192.168.0.1/32 rn 0x556d5423d780 +Apr 23 22:05:59.589378 dut01 NOTICE bgp#zebra[85]: kernel_reconcile: match, A 11 D 3 P 192.168.0.2/32 rn 0x556d5423da00 +Apr 23 22:05:59.589691 dut01 NOTICE bgp#zebra[85]: kernel_reconcile: match, A 11 D 4 P 192.168.0.3/32 rn 0x556d5423dc80 +Apr 23 22:05:59.589788 dut01 NOTICE bgp#zebra[85]: kernel_reconcile: match, A 11 D 5 P 192.168.0.4/32 rn 0x556d5423df80 +Apr 23 22:05:59.589859 dut01 NOTICE bgp#zebra[85]: kernel_reconcile: match, A 11 D 6 P 192.168.0.5/32 rn 0x556d5423e280 +Apr 23 22:05:59.589931 dut01 NOTICE bgp#zebra[85]: kernel_reconcile: match, A 11 D 7 P 192.168.0.8/32 rn 0x556d5423ea00 +Apr 23 22:05:59.590001 dut01 NOTICE bgp#zebra[85]: kernel_reconcile: match, A 11 D 8 P 100.1.0.1/32 rn 0x556d5423d280 +Apr 23 22:05:59.590072 dut01 NOTICE bgp#zebra[85]: kernel_reconcile: match, A 11 D 9 P 192.168.0.6/32 rn 0x556d5423e500 +Apr 23 22:05:59.590142 dut01 NOTICE bgp#zebra[85]: kernel_reconcile: match, A 11 D 10 P 100.1.0.2/32 rn 0x556d5423d500 + +Apr 23 22:06:12.615442 dut01 NOTICE bgp#zebra[85]: kernel_reconcile: timer_expire stats before flush: add 11, del 10 +Apr 23 22:06:12.615442 dut01 NOTICE bgp#zebra[85]: kernel_reconcile: sweep, A 11 D 11 P 192.168.0.7/32 rn 0x556d5423e780 +Apr 23 22:06:12.615741 dut01 NOTICE bgp#zebra[85]: Send Delete to kernel rn 0x556d5423e780 +Apr 23 22:06:12.615824 dut01 NOTICE bgp#zebra[85]: kernel_reconcile: timer_expire stats after flush: add 11, del 11 +``` +## 11. Memory consumption + + Zebra will consume memory similar to -k option till timer with -K expires. + +## 12. Performance +``` + Zebra already perform sweep and entire rib list look up. So performance will not change. +``` + +## Should call out if any platform specific code will be introduced and why. Need to avoid platform specific code from the design phase + N/A + +## 13. Error flows handling + Statistics are added to counts all routes for which new flag will be added\removed with -K option. This will be used for verification if Zebra contains any stale kernel routes. + +## 14. Show commands + N/A +## External reference +https://github.com/FRRouting/frr/pull/4197 +Final UTP results will be updated here. diff --git a/doc/frr-kernel/img/After frr_kernel fix.png b/doc/frr-kernel/img/After frr_kernel fix.png new file mode 100644 index 0000000000000000000000000000000000000000..4abb49b695f5aa99f3890f2febcc212274e44af8 GIT binary patch literal 104905 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
8T=6dJHz2&xIX2*; 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 literal 0 HcmV?d00001 diff --git a/doc/frr-kernel/img/Before frr_kernel fix.png b/doc/frr-kernel/img/Before frr_kernel fix.png new file mode 100644 index 0000000000000000000000000000000000000000..10c2c273c72b2d0ea907f589f407db40e23d133f GIT binary patch literal 104288 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 z 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 Date: Thu, 2 May 2019 13:31:08 -0700 Subject: [PATCH 2/5] [frr_kernel_design_doc_utp.md]: Correct image links. Signed-off-by: Praveen Chaudhary pchaudhary@linkedin.com --- doc/frr-kernel/frr_kernel_design_doc_utp.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/frr-kernel/frr_kernel_design_doc_utp.md b/doc/frr-kernel/frr_kernel_design_doc_utp.md index e5cc067c606..625821121b7 100644 --- a/doc/frr-kernel/frr_kernel_design_doc_utp.md +++ b/doc/frr-kernel/frr_kernel_design_doc_utp.md @@ -284,7 +284,7 @@ Approach 3 : Zebra RIB Calculation is chosen to address FRR-Kernel Reconciliatio ### 5.1 Before Fix: -![](https://github.com/praveen-li/SONiC/tree/master/doc/frr-kernel/img/Before%20frr_kernel%20fix.png) +![](https://github.com/praveen-li/SONiC/blob/frr_kernel_design_utp_doc/doc/frr-kernel/img/Before%20frr_kernel%20fix.png) Above image explains the Zebra behavior right now on startup with -k (keep_kernel_mode option. ``` @@ -323,7 +323,7 @@ Current behavior will result in: ### 5.2 After Fix: -![](https://github.com/praveen-li/SONiC/tree/master/doc/frr-kernel/img/After%20frr_kernel%20fix.png) +![](https://github.com/praveen-li/SONiC/blob/frr_kernel_design_utp_doc/doc/frr-kernel/img/After%20frr_kernel%20fix.png) ``` 1.) Zebra reads kernel routes including previous instance of Zebra routes and mark them with ZEBRA_FLAG_KERNEL_STALE_RT. From b7598f43aeb28ba5f74718e533590229cf674efc Mon Sep 17 00:00:00 2001 From: Praveen Chaudhary Date: Tue, 14 May 2019 13:31:28 -0700 Subject: [PATCH 3/5] Minor updates frr-kernel graceful restart design doc. Signed-off-by: Praveen Chaudhary pchaudhary@linkedin.com --- doc/frr-kernel/frr_kernel_design_doc_utp.md | Bin 49485 -> 43521 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/doc/frr-kernel/frr_kernel_design_doc_utp.md b/doc/frr-kernel/frr_kernel_design_doc_utp.md index 625821121b7e6f5d5906361dc9045ce180d34a20..206cdd3982ad851c9ec214d833840a12ec74f41b 100644 GIT binary patch literal 43521 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 literal 49485 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 From 2a0faafe6ba9cd128d5b63dd5af4b231d1ae0e20 Mon Sep 17 00:00:00 2001 From: Praveen Chaudhary Date: Tue, 14 May 2019 17:41:37 -0700 Subject: [PATCH 4/5] Minor Changes frr-kernel graceful restart design and UTP doc. Signed-off-by: Praveen Chaudhary pchaudhary@linkedin.com --- doc/frr-kernel/frr_kernel_design_doc_utp.md | Bin 43521 -> 49061 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/doc/frr-kernel/frr_kernel_design_doc_utp.md b/doc/frr-kernel/frr_kernel_design_doc_utp.md index 206cdd3982ad851c9ec214d833840a12ec74f41b..e57f97bf5e9696bb959a9fcf95ee826eb10a040e 100644 GIT binary patch literal 49061 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 K$#leF5dRl_yMbZ= literal 43521 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 From a801ea43bd1b9c48c53e65a939384c9b93044b8d Mon Sep 17 00:00:00 2001 From: Praveen Chaudhary Date: Wed, 15 May 2019 12:14:50 -0700 Subject: [PATCH 5/5] Added FRR related test cases in frr-kernel graceful restart design and UTP doc. Signed-off-by: Praveen Chaudhary pchaudhary@linkedin.com --- doc/frr-kernel/frr_kernel_design_doc_utp.md | 316 +++++++++++++++++--- 1 file changed, 276 insertions(+), 40 deletions(-) diff --git a/doc/frr-kernel/frr_kernel_design_doc_utp.md b/doc/frr-kernel/frr_kernel_design_doc_utp.md index e57f97bf5e9..e898abb5653 100644 --- a/doc/frr-kernel/frr_kernel_design_doc_utp.md +++ b/doc/frr-kernel/frr_kernel_design_doc_utp.md @@ -18,8 +18,8 @@ - [14. Show handling](#14-show-handling) ## 1. Problem Statement: -> While s/w upgrade to FRR docker or while maintenence FRR docker restart, minimum disturbance to Control Plane Route (i.e Kernel Route) should happen. For some organisation, it is critical to keep control plane unreachability less than ~1 secs for critical services to work with switch while FRR docker restart. -> +> While s/w upgrade to FRR docker or while maintenance FRR docker restart, minimum disturbance to Control Plane Route (i.e Kernel Route) should happen. For some organization, it is critical to keep control plane unreachability less than ~1 secs for critical services to work with switch while FRR docker restart. +> >Today Zebra can run with -r flag to retain routes in kernel. But during startup: i.) Without -k flag: Zebra cleans all kernel routes and insert them back if learned via BGPD/OSPF or any other protocol again. This may take 10-15 secs. [Data copied below.] > @@ -111,7 +111,7 @@ APP_DB before Kernel Static Route: ``` After adding kernel Static Routes: ``` -127.0.0.1:6379> HGETALL "ROUTE_TABLE:172.16.16.4" +127.0.0.1:6379> HGETALL "ROUTE_TABLE:172.16.16.2" 1) "nexthop" 2) "10.0.0.63" 3) "ifname" @@ -180,7 +180,7 @@ Kernel routes: ``` Zebra Route: -[Zebra does not learn about ARP, In Sonic NeighSyncd listens to netlink and populates APP_DB. So Sonic and Linux kernel both keep route table and Neighbour table seperately. Which suggests if a zebra route has same prefix as ARP\NDP Entry then Conflict happens only in H/W, and it depends on H/W which one will be preferered.] +[Zebra does not learn about ARP, In Sonic NeighSyncd listens to netlink and populates APP_DB. So Sonic and Linux kernel both keep route table and Neighbour table seperately. Which suggests if a zebra route has same prefix as ARP\NDP Entry then Conflict happens only in H/W, and it depends on H/W which one will be preferred.] ``` C>* 172.16.16.0/24 is directly connected, Ethernet120 B>* 172.16.16.0/32 [20/0] via 10.0.0.63, Ethernet124, 00:15:13 @@ -214,7 +214,7 @@ admin@falco-test-dut01:~$ sudo bcmcmd "l3 defip show" | grep 172.16.16.4 admin@falco-test-dut01:~$ sudo bcmcmd "l3 egress show" | grep 100015 100015 52:54:00:92:6c:c0 4087 8 130 0 -1 no no 6 no ``` -Restart ZEbra\FRR will have no impact on Neigh_Table. +Restart Zebra\FRR will have no impact on Neigh_Table. ---- @@ -292,7 +292,7 @@ Above image explains the Zebra behavior right now on startup with -k (keep_kerne 2.) Zebra pushes these routes in RIB Table as per family of route. -3.) Rnode creation and route_entry creation of old kernel route is done and route_entry is inserted in Rnode of the destprefix. +3.) Rnode creation and route_entry creation of old kernel route is done and route_entry is inserted in Rnode of the destprefix. Next-hops for this route will be markes as active, since this route is learned from Kernel. Note: This will result in call to rib_process, but since Rnode contains only one route which is already in FIB, so rib_process will result in NO_OP. @@ -300,14 +300,14 @@ Above image explains the Zebra behavior right now on startup with -k (keep_kerne 5.) Zebra will process new routes and call rib_add() for this route. -6.) A new route_entry will be created and will be inserted in correct Rnode. There may be 2 scenarios here, - a.) Rnode already contains other routes including old kernel routes or +6.) A new route_entry will be created and will be inserted in correct Rnode. There may be 2 scenarios here, + a.) Rnode already contains other routes including old kernel routes or b.) new Rnode is created for this route_entry. -7.) Updated Rnode will be queued for rib processing. During rib processing, Zebra will run best route selection, +7.) Updated Rnode will be queued for rib processing. During rib processing, Zebra will run best route selection, which on most of the FRR version will select old kernel route which is already marked as active in FIB. -8.) No update will be sent to Kernel and FPM, which may result in route deletion from APP_DB as per current Fpmsyncd DB reconciliation code. +8.) No update will be sent to Kernel and FPM, which may result in route deletion from APP_DB as per current Fpmsyncd DB reconciliation code. Update will be sent only for those route for which stale kernel route is not present. ``` @@ -465,7 +465,7 @@ File: zebra/main.c int main(int argc, char **argv) /* * Initialize NS( and implicitly the VRF module), and make kernel - * routing socket. + * routing socket. */ zebra_ns_init((const char *)vrf_default_name_configured); @@ -492,7 +492,7 @@ int rib_add_multipath(afi_t afi, safi_t safi, struct prefix *p, + * and FPM are updated while rib_process. This will result in no + * traffic loss, if same route->NH is learned after startup. + */ -+ ++ + if (kernel_gr && !kernel_stale_rt + && (same->uptime < zrouter.startup_time)) { + ++zrouter->zebra_stale_rt_del; @@ -578,6 +578,14 @@ Unit Test Plan includes below 3 test cases: [All 3 test cases will be repeated f - Start FRR. - Observe Zebra logs, ip monitor, kernel routes and Zebra routes. +#### Test case 4.) Add 12 k routes from sharpd and then restart zebra with -K 35 option. After restart, enter new routes. + +#### Test case 5.) Add 14 k routes from sharpd and then restart zebra with -K 55 option secs. After restart add no routes. + +#### Test 6: Test with 900 K routes, with -K 25. Install same 900K routes after restart. + +#### Test 7: Test with 900 K routes, with -K 20. Do not install any routes after restart. + ### 7.2 Details of Test Cases: #### Test Case 1.) Ping\Fast Ping 3 destinations using PTF from the source address which used BGP Routes in DUT. Ping will run continuosly during FRR restart. @@ -776,33 +784,33 @@ admin@dut01:~$ sudo service bgp start **Zebra logs: Note: All logs may not be part of final diff** ``` -Apr 23 22:05:59.589030 dut01 NOTICE bgp#zebra[85]: kernel_reconcile: match, A 11 D 1 P 0.0.0.0/0 rn 0x556d54234ca0 -Apr 23 22:05:59.589301 dut01 NOTICE bgp#zebra[85]: kernel_reconcile: match, A 11 D 2 P 192.168.0.1/32 rn 0x556d5423d780 -Apr 23 22:05:59.589378 dut01 NOTICE bgp#zebra[85]: kernel_reconcile: match, A 11 D 3 P 192.168.0.2/32 rn 0x556d5423da00 -Apr 23 22:05:59.589691 dut01 NOTICE bgp#zebra[85]: kernel_reconcile: match, A 11 D 4 P 192.168.0.3/32 rn 0x556d5423dc80 -Apr 23 22:05:59.589788 dut01 NOTICE bgp#zebra[85]: kernel_reconcile: match, A 11 D 5 P 192.168.0.4/32 rn 0x556d5423df80 -Apr 23 22:05:59.589859 dut01 NOTICE bgp#zebra[85]: kernel_reconcile: match, A 11 D 6 P 192.168.0.5/32 rn 0x556d5423e280 -Apr 23 22:05:59.589931 dut01 NOTICE bgp#zebra[85]: kernel_reconcile: match, A 11 D 7 P 192.168.0.8/32 rn 0x556d5423ea00 -Apr 23 22:05:59.590001 dut01 NOTICE bgp#zebra[85]: kernel_reconcile: match, A 11 D 8 P 100.1.0.1/32 rn 0x556d5423d280 -Apr 23 22:05:59.590072 dut01 NOTICE bgp#zebra[85]: kernel_reconcile: match, A 11 D 9 P 192.168.0.6/32 rn 0x556d5423e500 -Apr 23 22:05:59.590142 dut01 NOTICE bgp#zebra[85]: kernel_reconcile: match, A 11 D 10 P 100.1.0.2/32 rn 0x556d5423d500 -Apr 23 22:05:59.599051 dut01 NOTICE bgp#zebra[85]: Send Update to kernel rn 0x556d54234ca0 -Apr 23 22:05:59.599334 dut01 NOTICE bgp#zebra[85]: Send Update to kernel rn 0x556d5423d780 -Apr 23 22:05:59.599462 dut01 NOTICE bgp#zebra[85]: Send Update to kernel rn 0x556d5423da00 -Apr 23 22:05:59.599533 dut01 NOTICE bgp#zebra[85]: Send Update to kernel rn 0x556d5423dc80 -Apr 23 22:05:59.599665 dut01 NOTICE bgp#zebra[85]: Send Update to kernel rn 0x556d5423df80 -Apr 23 22:05:59.600987 dut01 NOTICE bgp#zebra[85]: Send Update to kernel rn 0x556d5423e280 -Apr 23 22:05:59.600987 dut01 NOTICE bgp#zebra[85]: Send Update to kernel rn 0x556d5423ea00 -Apr 23 22:05:59.600987 dut01 NOTICE bgp#zebra[85]: Send Update to kernel rn 0x556d54334390 -Apr 23 22:05:59.600987 dut01 NOTICE bgp#zebra[85]: Send Update to kernel rn 0x556d5423d280 -Apr 23 22:05:59.601044 dut01 NOTICE bgp#zebra[85]: Send Update to kernel rn 0x556d5423e500 -Apr 23 22:05:59.601044 dut01 NOTICE bgp#zebra[85]: Send Update to kernel rn 0x556d5423d500 - -Apr 23 22:06:12.615442 dut01 NOTICE bgp#zebra[85]: kernel_reconcile: timer_expire stats before flush: add 11, del 10 -Apr 23 22:06:12.615442 dut01 NOTICE bgp#zebra[85]: kernel_reconcile: sweep, A 11 D 11 P 192.168.0.7/32 rn 0x556d5423e780 -Apr 23 22:06:12.615741 dut01 NOTICE bgp#zebra[85]: Send Delete to kernel rn 0x556d5423e780 -Apr 23 22:06:12.615824 dut01 NOTICE bgp#zebra[85]: kernel_reconcile: timer_expire stats after flush: add 11, del 11 -Apr 23 22:06:12.615896 dut01 NOTICE bgp#zebra[85]: kernel_reconcile: Reset kernel_reconcile = 0 +Apr 23 22:05:59.589030 dut01 DEBUG bgp#zebra[85]: kernel_gr: match, A 11 D 1 P 0.0.0.0/0 rn 0x556d54234ca0 +Apr 23 22:05:59.589301 dut01 DEBUG bgp#zebra[85]: kernel_gr: match, A 11 D 2 P 192.168.0.1/32 rn 0x556d5423d780 +Apr 23 22:05:59.589378 dut01 DEBUG bgp#zebra[85]: kernel_gr: match, A 11 D 3 P 192.168.0.2/32 rn 0x556d5423da00 +Apr 23 22:05:59.589691 dut01 DEBUG bgp#zebra[85]: kernel_gr: match, A 11 D 4 P 192.168.0.3/32 rn 0x556d5423dc80 +Apr 23 22:05:59.589788 dut01 DEBUG bgp#zebra[85]: kernel_gr: match, A 11 D 5 P 192.168.0.4/32 rn 0x556d5423df80 +Apr 23 22:05:59.589859 dut01 DEBUG bgp#zebra[85]: kernel_gr: match, A 11 D 6 P 192.168.0.5/32 rn 0x556d5423e280 +Apr 23 22:05:59.589931 dut01 DEBUG bgp#zebra[85]: kernel_gr: match, A 11 D 7 P 192.168.0.8/32 rn 0x556d5423ea00 +Apr 23 22:05:59.590001 dut01 DEBUG bgp#zebra[85]: kernel_gr: match, A 11 D 8 P 100.1.0.1/32 rn 0x556d5423d280 +Apr 23 22:05:59.590072 dut01 DEBUG bgp#zebra[85]: kernel_gr: match, A 11 D 9 P 192.168.0.6/32 rn 0x556d5423e500 +Apr 23 22:05:59.590142 dut01 DEBUG bgp#zebra[85]: kernel_gr: match, A 11 D 10 P 100.1.0.2/32 rn 0x556d5423d500 +Apr 23 22:05:59.599051 dut01 DEBUG bgp#zebra[85]: Send Update to kernel rn 0x556d54234ca0 +Apr 23 22:05:59.599334 dut01 DEBUG bgp#zebra[85]: Send Update to kernel rn 0x556d5423d780 +Apr 23 22:05:59.599462 dut01 DEBUG bgp#zebra[85]: Send Update to kernel rn 0x556d5423da00 +Apr 23 22:05:59.599533 dut01 DEBUG bgp#zebra[85]: Send Update to kernel rn 0x556d5423dc80 +Apr 23 22:05:59.599665 dut01 DEBUG bgp#zebra[85]: Send Update to kernel rn 0x556d5423df80 +Apr 23 22:05:59.600987 dut01 DEBUG bgp#zebra[85]: Send Update to kernel rn 0x556d5423e280 +Apr 23 22:05:59.600987 dut01 DEBUG bgp#zebra[85]: Send Update to kernel rn 0x556d5423ea00 +Apr 23 22:05:59.600987 dut01 DEBUG bgp#zebra[85]: Send Update to kernel rn 0x556d54334390 +Apr 23 22:05:59.600987 dut01 DEBUG bgp#zebra[85]: Send Update to kernel rn 0x556d5423d280 +Apr 23 22:05:59.601044 dut01 DEBUG bgp#zebra[85]: Send Update to kernel rn 0x556d5423e500 +Apr 23 22:05:59.601044 dut01 DEBUG bgp#zebra[85]: Send Update to kernel rn 0x556d5423d500 + +Apr 23 22:06:12.615442 dut01 NOTICE bgp#zebra[85]: kernel_gr: timer_expire stats before flush: add 11, del 10 +Apr 23 22:06:12.615442 dut01 NOTICE bgp#zebra[85]: kernel_gr: sweep, A 11 D 11 P 192.168.0.7/32 rn 0x556d5423e780 +Apr 23 22:06:12.615741 dut01 DEBUG bgp#zebra[85]: Send Delete to kernel rn 0x556d5423e780 +Apr 23 22:06:12.615824 dut01 NOTICE bgp#zebra[85]: kernel_gr: timer_expire stats after flush: add 11, del 11 +Apr 23 22:06:12.615896 dut01 NOTICE bgp#zebra[85]: kernel_gr: Reset kernel_gr = 0 ``` **Ip monitor:** @@ -868,6 +876,234 @@ Destination Gateway Genmask Flags Metric Ref Use Iface #### Test Case 3.) Scaled testing: Perform FRR restart with > 6 K routes published from at least 4 peers. [6500 routes with 32 peers, as per T1 topology], [6k routes and 4 BGP peers as per T0] Steps will be similar to Test case 2. +#### Test case 4.) Add 12 k routes from sharpd and then restart zebra with -K 35 option. After restart, enter new routes as shown below. + +Routes before restart: +—————— +sharp install route 10.0.0.0 nexthop 172.25.11.53 6000 +sharp install route 20.0.0.0 nexthop 172.25.11.53 6000 + +Routes after restart: +—————— +sharp install route 10.0.0.0 nexthop 172.25.11.43 6000 +sharp install route 20.0.0.0 nexthop 172.25.11.53 5000 +sharp install route 30.0.0.0 nexthop 172.25.11.53 3000 + +Expectation: +—————— +Prefix 10.0.0.0: should be update to kernel immediately with new next-hop. +Prefix 20.0..0.0: 5k routes should be updated to kernel with same NH. Extra 1 k routes must be deleted later after around 35 secs. +Prefix 30.0.0.0: routes must be update to kernel immediately. +Zebra log must show that 12k routes were added with Stale flag and 1 were swept after timer expire. + +Restart options: +—————— +zebra_options=" -r -A 127.0.0.1 -K 35 -s 90000000" + +Results: +``` +Kernel routes before restart: +—————— +Every 5.0s: ./route.sh Fri May 3 22:01:29 2019 + +Fri May 3 22:01:29 PDT 2019 +sudo route -n | grep 10.0 | wc -l +6002 +sudo route -n | grep 20.0 | wc -l +6001 +sudo route -n | grep 30.0 | wc -l +0 + +pchaudha@server05:/home/pchaudha/srcCode/pc_frr$ systemctl restart frr +—————— + +Zebra Logs and Kernel Routes with timestamp: +—————— +May 3 22:01:55 server05 watchfrr[13520]: all daemons up, doing startup-complete notify +May 3 22:01:55 server05 frrinit.sh[13508]: * Started watchfrr +May 3 22:01:55 server05 systemd[1]: Started FRRouting.… +... + +Every 5.0s: ./route.sh Fri May 3 22:02:27 2019 + +Fri May 3 22:02:11 PDT 2019 +sudo route -n | grep 10.0 | wc -l +6003 +sudo route -n | grep 20.0 | wc -l +6001 +sudo route -n | grep 30.0 | wc -l +3000 +….. +Every 5.0s: ./route.sh Fri May 3 22:02:27 2019 + +Fri May 3 22:02:27 PDT 2019 +sudo route -n | grep 10.0 | wc -l +6003 +sudo route -n | grep 20.0 | wc -l +6001 +sudo route -n | grep 30.0 | wc -l +3000 +….. +May 3 22:02:29 server05 zebra[13541]: kernel_gr: timer_expire before sweep: add 12000, del 11000 +May 3 22:02:29 server05 zebra[13541]: kernel_gr: timer_expire after sweep: add 12000, del 12000 +May 3 22:02:29 server05 zebra[13541]: kernel_gr: Reset kernel_gr = 0 +…. +[** Stale Flag was added to 12K routes, 11K were learned before timer expires.] +…. + +Every 5.0s: ./route.sh Fri May 3 22:02:43 2019 + +Fri May 3 22:02:32 PDT 2019 +sudo route -n | grep 10.0 | wc -l +6003 +sudo route -n | grep 20.0 | wc -l +5001 +sudo route -n | grep 30.0 | wc -l +3000 +—————— +``` + +#### Test case 5.) Add 14 k routes from sharpd and then restart zebra with -K 55 option secs. After restart add no routes. + +Expectation: +—————— +Should delete all routes from kernel after kernel_gr time expire. Zebra notice level logs must show time and count for routes. +Zebra log must show that 14k routes were added with Stale flag and all 14k were swept after timer expire. + +Routes before restart +—————— +sharp install route 10.0.0.0 nexthop 172.25.11.43 6000 +sharp install route 20.0.0.0 nexthop 172.25.11.53 5000 +sharp install route 30.0.0.0 nexthop 172.25.11.53 3000 + +Restart options: +—————— +40 zebra_options=" -r -A 127.0.0.1 -K 55 -s 90000000" + +``` +pchaudha@server05:/home/pchaudha/srcCode/pc_frr$ systemctl restart frr +—————— +Zebra Logs and kernel routes with timestamp: +————— +Fri May 3 22:09:03 PDT 2019 +sudo route -n | grep 10.0 | wc -l +6003 +sudo route -n | grep 20.0 | wc -l +5001 +sudo route -n | grep 30.0 | wc -l +3000 +……….. +May 3 22:09:04 server05 watchfrr[14963]: all daemons up, doing startup-complete notify +May 3 22:09:04 server05 frrinit.sh[14948]: * Started watchfrr +May 3 22:09:04 server05 systemd[1]: Started FRRouting. +.....…. +Fri May 3 22:09:19 PDT 2019 +sudo route -n | grep 10.0 | wc -l +6003 +sudo route -n | grep 20.0 | wc -l +5001 +sudo route -n | grep 30.0 | wc -l +3000 +……………. +May 3 22:09:59 server05 zebra[14985]: kernel_gr: timer_expire before sweep: add 14000, del 0 +May 3 22:09:59 server05 NetworkManager[1141]: [1556946599.5236] platform-linux: netlink: read: too many netlink events. Need to resynchronize platform cache +May 3 22:09:59 server05 NetworkManager[1141]: [1556946599.5308] platform-linux: netlink: read: too many netlink events. Need to resynchronize platform cache +May 3 22:09:59 server05 NetworkManager[1141]: [1556946599.5371] platform-linux: netlink: read: too many netlink events. Need to resynchronize platform cache +May 3 22:09:59 server05 NetworkManager[1141]: [1556946599.5436] platform-linux: netlink: read: too many netlink events. Need to resynchronize platform cache +May 3 22:09:59 server05 zebra[14985]: kernel_gr: timer_expire after sweep: add 14000, del 14000 +May 3 22:09:59 server05 zebra[14985]: kernel_gr: Reset kernel_gr = 0 +……………… +Fri May 3 22:10:02 PDT 2019 +sudo route -n | grep 10.0 | wc -l +1 +sudo route -n | grep 20.0 | wc -l +0 +sudo route -n | grep 30.0 | wc -l +0 +``` + + + + + +#### Test 6: Test with 900 K routes, with -K 25. Install same 900K routes after restart. + +Routes before and after restart: +—————— +sharp install route 10.0.0.0 nexthop 172.25.11.43 100000 +sharp install route 20.0.0.0 nexthop 172.25.11.43 100000 +sharp install route 30.0.0.0 nexthop 172.25.11.43 100000 +sharp install route 40.0.0.0 nexthop 172.25.11.43 100000 +sharp install route 50.0.0.0 nexthop 172.25.11.43 100000 +sharp install route 60.0.0.0 nexthop 172.25.11.43 100000 +sharp install route 70.0.0.0 nexthop 172.25.11.43 100000 +sharp install route 80.0.0.0 nexthop 172.25.11.43 100000 +sharp install route 90.0.0.0 nexthop 172.25.11.43 100000 + +Expectation: +—————— +Zebra log must show that 900k routes were added with Stale flag and 0 were swept after timer expire, I.e. all 900K were learned back before timer expire. + + +ZEbra logs and kernel Routes: +—————— +``` +Every 3.0s: route -n | wc -l +Fri May 3 22:25:01 2019 + +900007 +………… +May 3 22:25:11 server05 systemd[1]: Started FRRouting. +May 3 22:25:13 server05 systemd[1]: Started CUPS Scheduler. +May 3 22:25:36 server05 zebra[17253]: kernel_gr: timer_expire before sweep: add 900000, del 900000 +May 3 22:25:36 server05 zebra[17253]: kernel_gr: timer_expire after sweep: add 900000, del 900000 +May 3 22:25:36 server05 zebra[17253]: kernel_gr: Reset kernel_gr = 0 +…………. +Every 3.0s: route -n | wc -l + +Fri May 3 22:25:40 2019 + +900007 +``` + + +#### Test 7: Test with 900 K routes, with -K 20. Do not install any routes after restart. + +Routes before restart: +—————— +sharp install route 10.0.0.0 nexthop 172.25.11.43 100000 +sharp install route 20.0.0.0 nexthop 172.25.11.43 100000 +sharp install route 30.0.0.0 nexthop 172.25.11.43 100000 +sharp install route 40.0.0.0 nexthop 172.25.11.43 100000 +sharp install route 50.0.0.0 nexthop 172.25.11.43 100000 +sharp install route 60.0.0.0 nexthop 172.25.11.43 100000 +sharp install route 70.0.0.0 nexthop 172.25.11.43 100000 +sharp install route 80.0.0.0 nexthop 172.25.11.43 100000 +sharp install route 90.0.0.0 nexthop 172.25.11.43 100000 + +Expectation: +—————— +Zebra log must show that 900k routes were added with Stale flag and all 900k were swept after timer expire, I.e. all 0 were learned back before timer expire. + +ZEbra logs and kernel Routes: +—————— +``` +Fri May 3 22:27:07 2019 + +900007 +……… +May 3 22:27:10 server05 systemd[1]: Started FRRouting. +May 3 22:27:30 server05 zebra[17459]: kernel_gr: timer_expire before sweep: add 900000, del 0 +May 3 22:27:31 server05 zebra[17459]: kernel_gr: timer_expire after sweep: add 900000, del 900000 +May 3 22:27:31 server05 zebra[17459]: kernel_gr: Reset kernel_gr = 0 +…………. +Every 3.0s: route -n | wc -l +Fri May 3 22:27:34 2019 + +7 +————— +``` + ## 8. DB schema No Change. ## 9. Flows and SAI APIs @@ -902,7 +1138,7 @@ Apr 23 22:06:12.615824 dut01 NOTICE bgp#zebra[85]: kernel_reconcile: timer_expir ## Should call out if any platform specific code will be introduced and why. Need to avoid platform specific code from the design phase N/A - + ## 13. Error flows handling Statistics are added to counts all routes for which new flag will be added\removed with -K option. This will be used for verification if Zebra contains any stale kernel routes.