From 956dd6f8d52458707d952fcbdfbb10e7815c6024 Mon Sep 17 00:00:00 2001 From: sudhanshukumar22 Date: Tue, 16 Jul 2019 03:14:38 -0700 Subject: [PATCH 1/5] bgp error handling changes for review on master branch --- .../BGP_Route_Error_Handling_Arlo.md | 217 ++++++++++++++++++ .../images/bgp_error_handling_flow1.png | Bin 0 -> 17945 bytes .../images/bgp_error_handling_flow1.xml | 2 + .../images/bgp_error_handling_flow2.png | Bin 0 -> 36965 bytes .../images/bgp_error_handling_flow2.xml | 2 + .../images/bgp_error_handling_flow3.png | Bin 0 -> 25105 bytes .../images/bgp_error_handling_flow3.xml | 2 + .../images/bgp_error_handling_flow4.png | Bin 0 -> 24713 bytes .../images/bgp_error_handling_flow4.xml | 2 + 9 files changed, 225 insertions(+) create mode 100644 doc/bgp_error_handling/BGP_Route_Error_Handling_Arlo.md create mode 100644 doc/bgp_error_handling/images/bgp_error_handling_flow1.png create mode 100644 doc/bgp_error_handling/images/bgp_error_handling_flow1.xml create mode 100644 doc/bgp_error_handling/images/bgp_error_handling_flow2.png create mode 100644 doc/bgp_error_handling/images/bgp_error_handling_flow2.xml create mode 100644 doc/bgp_error_handling/images/bgp_error_handling_flow3.png create mode 100644 doc/bgp_error_handling/images/bgp_error_handling_flow3.xml create mode 100644 doc/bgp_error_handling/images/bgp_error_handling_flow4.png create mode 100644 doc/bgp_error_handling/images/bgp_error_handling_flow4.xml diff --git a/doc/bgp_error_handling/BGP_Route_Error_Handling_Arlo.md b/doc/bgp_error_handling/BGP_Route_Error_Handling_Arlo.md new file mode 100644 index 00000000000..6939dc84cb7 --- /dev/null +++ b/doc/bgp_error_handling/BGP_Route_Error_Handling_Arlo.md @@ -0,0 +1,217 @@ + + +# BGP Route Install Error Handling +# High Level Design Document +#### Rev 0.1 + +# Table of Contents + * [List of Tables](#list-of-tables) + * [Revision](#revision) + * [About This Manual](#about-this-manual) + * [Scope](#scope) + * [Definition/Abbreviation](#definitionabbreviation) + +# List of Tables +[Table 1: Abbreviations](#table-1-abbreviations) + +# Revision +| Rev | Date | Author | Change Description | +|:---:|:-----------:|:------------------:|-----------------------------------| +| 0.1 | 05/07/2019 | Sudhanshu Kumar | Initial version | + +# About this Manual +This document provides information about how to handle the "route add failure in hardware" related errors in BGP in SONIC. +# Scope +This document describes the high level design of BGP route install error handling feature. Implementation for warm reboot and GR for BGP is out of scope for this feature. When route installation fails in hardware due to table full, BGP may retry again when some routes get deleted. This Retry mechanism in BGP for failed routes will not be implemented in this release. + +# Definition/Abbreviation +### Table 1: Abbreviations + +| **Term** | ***Meaning*** | +|-------------------|-------------------------| +| BGP | Border Gateway Protocol | +| GR | Graceful Restart | +| SONIC | Software for Open Networking in the Cloud | +| FRR | FRRouting | +| FPM | Forwarding Plane Manager | +| SwSS | SONiC Switch State Service | +# 1 Requirement Overview + When BGP learns a prefix, it advertises the route to its peers and sends it to route table manager(Zebra). The routes are installed in kernel and sent to APP_DB via fpmsyncd. +The Orchagent reads the route from APP_DB, creates new resources like nexthop or nexthop group Id and installs the route in ASIC_DB. The syncd triggers the appropriate SAI API and route is installed in hardware. The CRM manages the count of critical resources allocated by orchagent through SAI API. +Due to resource allocations failures in hardware, SAI API calls can fail and these failures should be notified to Zebra and BGP to withdraw failed routes from kernel and BGP peers. + +## 1.1 Functional Requirements + + + + 1. BGP should withdraw the routes from its peers which have failed to be installed in hardware. + 1. BGP should mark the routes which are not installed in hardware as failed routes in its RIB-IN table. + 1. Zebra should mark the routes which are not successfully installed in hardware as failed routes. + 1. Zebra should withdraw the failed routes from kernel. + +## 1.2 Configuration and Management Requirements +## 1.3 Scalability Requirements +## 1.4 Warm Boot Requirements + There is no change needed in BGP warm reboot for supporting this feature. +# 2 Functionality +Refer to section 1 + +## 2.1 Target Deployment Use Cases + +## 2.2 Functional Description +Refer to section 1.1 + +# 3 Design +## 3.1 Overview +fpmsyncd subscribes to the changes in the ERROR_ROUTE_TABLE entries. Whenever the error status in ERROR_ROUTE_TABLE is updated, fpmsyncd is notified. It then sends a message to Zebra's routing table to take appropriate action. +Zebra should lookup the route and mark it as not installed in hardware. It should create a route-netlink message to withdraw this state in kernel. Also, it sends message to the source protocol for the route (BGP). +BGP marks the route as not installed in hardware and will withdraw the route from its peer. It should mark the route in RIB-IN as not installed in hardware and remove it from RIB-OUT list, if any. +For ECMP case, BGP sends route with list of nexthops to Zebra for programming. In fpmsyncd, as per the route table schema, the route is received with a list of nexthops. If the nexthop group programming fails, it is treated as route add failure in BGP. +For ADD-PATH feature, if the route-add failure notification comes to BGP, it will not switch to route of next best rank. + +## 3.2 DB Changes +There are no DB changes associated with this feature. +### 3.2.1 CONFIG DB +### 3.2.2 APP DB +### 3.2.3 STATE DB +### 3.2.4 ASIC DB +### 3.2.5 COUNTER DB + +## 3.3 FRRouting Design +### 3.3.1 Zebra changes +Zebra, on receiving the message containing failed route notification, will withdraw the route from kernel. It will also mark the route with flag as "Not installed in hardware" and store the route. It will not send the next best route to fpmsyncd. At this stage, route is present in Zebra. It will also notify BGP of the route add failure. + +### 3.3.2 BGP changes +When BGP learns a route, it immediately sends its best route to its peers without waiting for notification from the hardware. However, the route may or may not be successfully installed in hardware. On receiving route add failed notification message, BGP will remove the route from RIB-OUT list and place in RIB-IN with a flag marking the route as not installed in hardware. It will also withdraw the route from its peers. +In case user wants to retry the installation of failed routes, he/she can issue the command in Zebra. The command will notify BGP. If BGP has the route with flag marked as not installed in hardware, it will remove the flag and send the route to its peers. + +## 3.4 SwSS Design + +### 3.4.1 fpmsyncd changes +A new class is added in fpmsyncd to subscribe to ERROR_ROUTE_TABLE present inside the ERROR_DB. Subscription to this table is sufficient to handle the errors in route installation. +Currently, fpmsyncd has a TCP socket with Zebra listening on FPM_DEFAULT_PORT. This socket is used by Zebra to send route add/delete related messages to fpmsyncd. We will reuse the same socket to send information back to Zebra. +fpmsyncd will convert the ERROR_ROUTE_TABLE entry to Zebra common header format and send the message. It will also send a delete route message to clean the route from APP_DB so that OrchAgent can process it. If processing this results in a further error, then fpmsyncd silently ignores this. + +## 3.5 SyncD + +## 3.6 SAI + + +## 3.7 CLI +### 3.7.1 Data Models +### 3.7.2 Configuration Commands +### 3.7.3 Show Commands +``` +sonic(config-router-af)# do show bgp ipv4 unicast +BGP table version is 1, local router ID is 10.1.0.1, vrf id 0 +Status codes: s suppressed, d damped, h history, * valid, > best, = multipath,# not installed in hardware + i internal, r RIB-failure, S Stale, R Removed +Nexthop codes: @NNN nexthop's vrf id, < announce-nh-self +Origin codes: i - IGP, e - EGP, ? - incomplete + + Network Next Hop Metric LocPrf Weight Path +*># 21.21.21.21/32 4.1.1.2 0 0 101 ? + +Displayed 1 routes and 1 total paths + ``` + + + + +``` +sonic(config-router-af)# 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, + > - selected route, * - FIB route, # - Not installed in hardware + +K>* 0.0.0.0/0 [0/0] via 10.59.128.1, eth0, 09:44:37 +C>* 4.1.1.0/24 is directly connected, Ethernet4, 00:01:48 +C>* 10.1.0.1/32 is directly connected, lo, 09:44:37 +C>* 10.59.128.0/20 is directly connected, eth0, 09:44:37 +B># 21.21.21.21/32 [20/0] via 4.1.1.2, Ethernet4, 00:00:07 +``` +A new command has been introduced for seeing the failed routes as follows + show {ip | ipv6} route not-installed [prefix/mask] +``` +sonic# show ip route not-installed +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 # - not installed in hardware +B> # 22.1.1.1/32 [20/0] via 4.1.1.2, Ethernet4, 00:00:20 +B> # 22.1.1.2/32 [20/0] via 4.1.1.2, Ethernet4, 00:00:20 +B> # 30.1.1.1/32 [20/0] via 4.1.1.2, Ethernet4, 00:00:20 +B> # 30.1.1.2/32 [20/0] via 4.1.1.2, Ethernet4, 00:00:20 +B> # 30.1.1.3/32 [20/0] via 4.1.1.2, Ethernet4, 00:00:20 +B> # 30.1.1.4/32 [20/0] via 4.1.1.2, Ethernet4, 00:00:20 +B> # 30.1.1.5/32 [20/0] via 4.1.1.2, Ethernet4, 00:00:20 +B> # 30.1.1.6/32 [20/0] via 4.1.1.2, Ethernet4, 00:00:20 +B> # 30.1.1.7/32 [20/0] via 4.1.1.2, Ethernet4, 00:00:20 +B> # 30.1.1.8/32 [20/0] via 4.1.1.2, Ethernet4, 00:00:20 +``` +### 3.7.4 Debug Commands +In order to retry the installation of failed routes from Zebra, a clear command has been provided. + clear {ip | ipv6} route {not-installed | } + ``` +sonic# clear ip route + not-installed not installed in hardware +sonic# clear ip route not-installed + + A.B.C.D/M ipv4 prefix with mask + X:X::X:X/M ipv6 prefix with mask +``` +The above command will send route add message for the failed route from Zebra to fpmsyncd. The same message is also sent to BGP so that BGP can advertise the route. + + +### 3.7.5 REST API Support + +# 4 Flow Diagrams + ![BGP](images/bgp_error_handling_flow1.png "Figure 1: High level module interaction for route install error notification") + +__Figure 1: High level module interaction for route install error notification__ + +![BGP](images/bgp_error_handling_flow2.png "Figure 2: Module flow for route add error notification") + +__Figure 2: Module flow for route add error notification__ + +![BGP](images/bgp_error_handling_flow3.png "Figure 3: Module flow for route install success notification") + +__Figure 3: Module flow for route add success notification__ + ![BGP](images/bgp_error_handling_flow4.png "Figure 4: Module flow for route delete success/fail notification") + +__Figure 4: Module flow for route delete success/fail notification__ + +# 5 Serviceability and Debug + + +# 6 Warm Boot Support + +# 7 Scalability + +# 8 Unit Test + +The UT testcases are as follows: + +|**Test-Case ID**|**Description**|**Status**|**Comments**| +|----------------|---------------|----------|------------| +1 | Send an iBGP route from the traffic generator and see that route is learnt in BGP. | | Check the route in zebra. fpmsyncd should send route to APP_DB. Check APP_DB. Check that orchagent should send this route to ASIC_DB. Check that syncd should send the route to ASIC. | + 2 | Send an eBGP route from the traffic generator and see that route is learnt in BGP. | | | + 3 | Install a route and check that error status is present in "show ip route" in zebra. | | | + 4 | Install a route and check that route is present in kernel. | | | + 5 | Install a route and check that route is present in APP_DB and ASIC_DB. | | | + 6 | Execute the command "show bgp ipv4". Check that the error status (installed in hardware flag) is shown as 0. | | | + 7 | Check that routes with installed flag as TRUE is sent to eBGP peers. Also, BGP ribout list should have this route. | | | + 8 | Check that routes with installed flag as TRUE is sent to iBGP peers. (Rules for iBGP and route reflector will apply). | | | + 9 | Send an iBGP route from the traffic generator and see that route is learnt in BGP. But this route is not installed in ASIC_DB. Check that error status is correctly shown in APP_DB. Please note that route will be present in BGP/Zebra/APP_DB. | | Check the route in zebra. fpmsyncd should send route to APP_DB. Check APP_DB. Check that orchagent should send this route to ASIC_DB. Check that syncd should send the route to ASIC. | + 10 | Send an eBGP route from the traffic generator and see that route is learnt in BGP. But this route is not installed in ASIC_DB. Check that error status is correctly shown in APP_DB. Check different kinds of errors like nexthop group-id add failed, nexthop add failed, route add failed, route table/nexthop table is full etc. | | | + 11 | Install a route and check that route is present in zebra, but not in ASIC_DB and kernel. | | | + 12 | Install a route and check that route is not present in APP_DB and ASIC_DB. (Can be due to send error from fpmsyncd). | | | + 13 | Execute the command "show bgp ipv4". Check that the error status (installed flag) is shown as some non-zero value. Also check the rib failure flag. In case of error, check if BGP ribout message does not contain this route. | | | + 14 | Check that routes with installed flag as FALSE is not sent to eBGP peers. Also, BGP ribout list should not have this route. If route has already been sent by BGP, it should be withdrawn. | | | + 15 | Check that routes with installed flag as FALSE is not sent to iBGP peers. (Rules for iBGP and route reflector will apply). If route has already been sent by BGP, it should be withdrawn. | | | + 16 | Send a route. Execute "show bgp ipv4". Check that this command shows the error status (installed flag). See that it shows error. Also, check the rib-failure flag. | | | +17 | Send a route. Execute "show bgp ipv4". Check that this command shows the error status (installed flag). See that it shows error. Also, check the rib-failure flag. Now,send the same route again so that it in installed successfully. Check all the flags. | | | +# 9 Internal Design Information \ No newline at end of file diff --git a/doc/bgp_error_handling/images/bgp_error_handling_flow1.png b/doc/bgp_error_handling/images/bgp_error_handling_flow1.png new file mode 100644 index 0000000000000000000000000000000000000000..810a9ca6bfaa85b09bfb5341ddf2c58cf1b1bc48 GIT binary patch literal 17945 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 \ No newline at end of file diff --git a/doc/bgp_error_handling/images/bgp_error_handling_flow2.png b/doc/bgp_error_handling/images/bgp_error_handling_flow2.png new file mode 100644 index 0000000000000000000000000000000000000000..d21e4f5755cd1d65c85b4d60ef231ffaa8a88d72 GIT binary patch literal 36965 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 Zp(&$2yRGIOu~XoWBI35(J6V0y{{=!PG+h7y literal 0 HcmV?d00001 diff --git a/doc/bgp_error_handling/images/bgp_error_handling_flow2.xml b/doc/bgp_error_handling/images/bgp_error_handling_flow2.xml new file mode 100644 index 00000000000..b42bd3a8c9f --- /dev/null +++ b/doc/bgp_error_handling/images/bgp_error_handling_flow2.xml @@ -0,0 +1,2 @@ + +7Vtfd6o4EP80nnPvQz2E8Kc+Vlvb3r3buu1pu9uXeyJE5DYSN2LV/fSbQEAgWCuFas/RByGTMAwzv5lMhtCCvcnykqHp+E/qYtLSNXfZguctXfwAPwjKKqbYlhETPOa7MQmsCff+f1gSNUmd+y6e5QaGlJLQn+aJDg0C7IQ5GmKMLvLDRpTk7zpFHlYI9w4iKvXJd8NxTD3V7TX9CvveOLkzsDpxzwQlg+WTzMbIpYsMCV60YI9RGsZnk2UPE6G8RC/xdf0NvalgDAfhey4YdP0f15Z7AkbXw+e7gfHwfBGcSGO8IjKXD9y9HEh5w1WiBEbngYsFH9CC3cXYD/H9FDmid8HNzmnjcEJktyqXFPUVsxAvMyQp5yWmExyyFR8ie02pMokZ04ybi4wB5IhxRvdQ0pA0uZfyXWuFn0jF7KAkW1GSoiFu3Kk4JX7wkldHanaNNwgaYtJFzosXqbRHCWURA9jp9Hp9LmQ3RMzD4QAznwuPmdCzH3h8kCWY0Tlz8IZOrm+2+lvcqW0mzX+kFFHjfCnFiFsr2dposFiU7ejBbs6HVLNmDGeWGC6hMUxQ6L/mPa/MmvIOA+pziVPUdPKogXoBD1J58UVZRynwOc3zOTXzbKSBimwiZKXPXB1snY+ArXYIxDp7Q1xovxMrSUA/ELCkE4y0smFVREsadlZ5FH4SXJLHyODlGQ8Z2nsMB/ZhBXGgH5RjbfcXeFD+Ao2aoiu09usvUIHBaDqZrQLH3bvLQO3AXEZNfM4Gg1/n3Y2O46y467iYbVfXMNbtz2FKSLOi23nIueD69GoYW/VqlenVbEqvhzXHH0iEMeyaIoxhddrmPmOMrsYYvc3b9zjgQUb7xrhuegH4LiRy1bDDR52JlavwJ4JmM9+ptKLoR78vYPhC3g5A1UwMbGHUtNnNo1urVrGAVvDGyo5tgb2mDrpVYl+LcHV1RzSSc21o6985TTpOZlFV64wPANp0ue7kZ544Xtzd3d5F02rMjUsXM4y7v9hsaxbWz6bd3vN8q6t5zC1zxsjDEij7TPpsPa+uRDP7Svr004OKYlvXSYlxDyTc2VZNWYwFCznM55ahdDVHhZkc5iJIsNZk5jILGX3BmR7Q0TQIv8Csp+QilZfLxhZGDeMgiTMZHBhHHFQum4Bi3H73osbewqhpHAAFB6bAwQ0N/dERAZsRoBjOqIiA4syiMGoaAbqCAEsg4I7OQ8yP18EsRBGbPvLJERq75wqg6juI4sJIYdQ0NNSCh92WQJgznGDBd7i2aHBExFuL5bwh7brShiKjphGhbiwAQEDiHBMchYtj5rBbBqlXDQ5FKCiMmoaCWhbrNJ85jKLfl0ZAMXPQtZoyB4VR0whQC2enx+mhjtVEsQJauVT+yaVUWLalardSaqeskgq0KCPFE/qamWO0PqMTfvgDs0BsT3xflTXEy7AAtCJwUkiNfELK6Ij4XiBwywEV1WlFXZDjnJzJjonvuuKGpYXGdSnyzRLZDnsyjHxNKd2bmIFvurDM4rdYdKit2ggP61Xo1mojPKxqY9GPK1cbi4w+edNbEteKOcJxhvho1lj1ZWpnC5+mAaGuH+p51waiKvYA82isa09+OHYZWrx3SjjibBM8zF1htunCyrh6mGF2O/wtvgHQtUj3MUMeOCQgkkKVnxaqRml48QOhJ8TcBYra7lz8h1QYgVGPoclEbLTWtaHQsdwuxnUdsRmKsUEUoLCbXEaTN4zfGB5FaMMcOiy6TeCSmNvVz/PvbWlrwuf+MSUuZvlPFgI0kVZ6RMxHQw7GiP62/5gZ20mH2yG3Cah4I5xLayQpyWgIHoW75jM8KWMjEjnImI/DQV3b5vJzoKEmNXZNSQ1vZnBWHs+cy5tH8OuqP/rd/zm7eSC94V9PpZ8Q1BLOMtHsTOwlOgayDwUysPMae9OF9U2QOmQB8n50bkzoQUNf9pn1eKK+jtkZUKAUUHpZla4eVJUavgQch7K8TjdefPRlncKoMjh4c/3FWDx8/d0dvPgf \ No newline at end of file diff --git a/doc/bgp_error_handling/images/bgp_error_handling_flow3.png b/doc/bgp_error_handling/images/bgp_error_handling_flow3.png new file mode 100644 index 0000000000000000000000000000000000000000..c5a2cf8695ced2c20eae7fc5701d94012d3465b0 GIT binary patch literal 25105 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 Ni@nw7+&bh61_0|gdOZLD literal 0 HcmV?d00001 diff --git a/doc/bgp_error_handling/images/bgp_error_handling_flow3.xml b/doc/bgp_error_handling/images/bgp_error_handling_flow3.xml new file mode 100644 index 00000000000..38d4a4d9de4 --- /dev/null +++ b/doc/bgp_error_handling/images/bgp_error_handling_flow3.xml @@ -0,0 +1,2 @@ + +7Vrfb9owEP5rkLaHVnGcH80jUNp12tYING3ryxQSk0QNMTOmwP762cQOSQyCZtCkErwQ39kX+7vvzmdDB/anq3vizaKvOEBJR9eCVQfednT+AeyLS9aZxAZmJghJHGQisBWM4r9ICDUhXcQBmpc6UowTGs/KQh+nKfJpSeYRgpflbhOclN8680KkCEa+l6jSH3FAo0x6o9tb+ScUh5F8M7CcTDP1ZGexknnkBXhZEMFBB/YJxjR7mq76KOHgSVyycXd7tPnECErpMQPcXvz5wQquwORh/DR0je9Pg/TKyKy8eMlCLLh374r50rUEgeBFGiBuB3RgbxnFFI1mns+1S+Z2JovoNBFqdV5iqi+IULQqiMQ87xGeIkrWrIvQmjfZCMEZU1BmWXCAADUqYA+FzBMuD3O7W1TYgwDmFSDZCkgKQsy5M/6YxOlzGQ6GAln/ZA3t2pTNX0XdLV+0lrfWopXThTcSb4ySnuc/hxtX9HGCyebF0HH6/Tu2uB71SIioi0jMFo0I90+chqyTxY3hBfHRHuVeh2UmD7MHBaUYUt1acJy5w3FSRlDi0filHHm7vCne4OKYzThnjVNmTc4RaUGAkA0qBkrFDgBlQ07FjkC6amdDrXzR9dnmNMG2+hyQibolJNBhhQVmTRZUk9Abs0DCWqDBExoTr/HcDJx2JWegv7N4ga2KF2idKGvCm2bjBSo0mMym83XqB42HDNRbFjJqQdN13d+3vb2B469Z6ASIHIZrnGH7ZZwL8qrlcUGZFXQ6XA3rIK7WLlzNc+Harq27JRnGOFVdZjj2tdlkjtHVHKNfs/YIpSzJaB8Iw6afgo98RoGadlivLj+R8nhKvPk89ssEOLLiv9t8eH9K8DMqaICjaRC+A0pUGAGqme7oGg0eMHRuQpiXgFe9Ykk7/xvwluE0HPDWDv9aCYOrN8GbmW4dbf1ZYKm4mm/usbqsA9Bmq62SPYX8ezAcPg43G25mjc0uM5ip39k+bOllh8tNt6l9WFfrm0fiR16IBE2aLAZteBCsNy0GZW3akhx28PwknduSZGfbp0p2Fiynukp0nDvVqbUrLNQ2g1Ry7VLRHFWJ1L12qp7HFUNn5oHMMwUeGBce1L5OAXbtw84BQ+fmAVB4YHIefMM0nlwYsJ8BynFXq8kAZWepGjo3Ay63Gcf8vlB3v1cMGW/rXkP96fe1Zxtn19EG8CzhInZG0bUuvwU57oRzSSD7LkdenT/2DaxNKNbc/k0h6779swcc/AM= \ No newline at end of file diff --git a/doc/bgp_error_handling/images/bgp_error_handling_flow4.png b/doc/bgp_error_handling/images/bgp_error_handling_flow4.png new file mode 100644 index 0000000000000000000000000000000000000000..aa18f18ba85d486d0bb8cb857f415babfce53a6f GIT binary patch literal 24713 zcmb@ubySsKyEY1f(%m85Ag~Al>6T6@>F$)0k`77fkWOik?gmMf2I)`)>8>-E{@%U) zzIX3)zWt5!k3+{m)_mr3&-;q|nk!scQ5p@I7#Riz22JLY++y&G-fJFWwCG5o{S1)JaP7bkME)*Ms?VbH{rOu zS|DAHldAclG4;W@`h!=Z-@!{iT-W4#!{-<^&Be#N2n4?DsN%|J7-Dx_>=-$Ij_4LE zfi!-M5#iY+Ys~Cy2D|P19do$*9o!eqYaHZvr{B7Yel=ep#19(4H{an*ia$CdvL`3= z&PL=~7g!WUko0aqkh~#aUF3E1jHQ3wrhCYH`&La8S?};yKZaZ2b%lN9{HB0i7oKw| z-GumCiS-V|AkGUmm%c_PETz+Xv!+iY$&EJ}C8`DEF9iD2%(p!K8+LFG`)n_{W(+U7 z4XY>FZe3ZnQ~b)c+o!C2wVe(TI?P;k6`e3BPdjwcdkh-_zG#i&EZptp7#|Mu3}K$% z(^XSg_)R!q&u2v>sUm%*DjFiR3R1ICyHJjm6xv}FP^t0Ojj#KDGL88;-Enpb)`a$g zh}x2pEa z5X_IzpU@E)u*w}g)_tswV87J=b8fM=6VHgt-Cn+wS%Ch%|MS6S5}M$+ck)J0zg`zU zcfageEyjow8OB$3C&IR?a=@kzg8ld`%9m!&IWut<%_e^@Bj&xutRpkQ;Nx-8$RJjm zzJ$uWZ|2oThXl+6WV}D$4UFr#@%;?!mubMq7vG|`DrcM3E`i0^t)>Z8&KMk4-8uMp zb&OY>+tTZ;Fneh(yy<)HC2K`X8_!6U9olq)qxCgkQaqtZy>>bv(tFbUO`CJz6{Yz} z32l}swY?FEAXd49Q>s@=Hu_;xntPuSxpjvi25@>krGKFeal2m`Cald+8e<<1 zEnD!^66|dmr!dr@oc`z`CT^Z>yg*VMzZ)R-WoDFdPOw~=Am)R~_cUiapMtvZe8UtU z<6?HStR1118djdtDNQ%Eh0j{ru4d13Gclg>LpEitoDIty&@9JY?Lt!UXPl38n(RC^ zT$;XZNibUPE6LQ^!i8TrBJBrA@Q>>8ptB6s^XMtw=yDP8Z+bC1;1uD#C59|A`^B9Z zhd#i-7^kL=JmMA;P3`pUFJDC)MBvDs9c&pZpHsh?gft9L>n3%O9{phHQ+!opp3%%Z zm|%)TNB;7QRkZYcN)qX)w?^rR&`jmJfDw+lST&;f2Z89irf2>IN?UF=+2=&@GK2=@ zspbKXOyZaDUd7iKW6D`|o>%D*M+H(on9&+(fGI{JT()Fd8VZaT!17-qBZbL`KyXDx zgt#54S0vQW$*=shRl+r?ac@&U!6%<&Gbb7}YhFeksC9Ok8_X|Ql=YPQPBTFgI}@(R zu@0o12Yj@xBQmzv%A%pWvSYcI zMf`Px1>QM|R7^*Gd~lf##3k+S7fEH2G8GX`4tC*U{l}9dS4b_~QYVK@t{T|X^;X|x z`a?UdMR7{W*IKR4^AtE!DUE+r#StcBVEa4h4w}g)^E=?oIBE148SNHDIC2i9PU3Vi zM~%R|SZcIwP%S4+mK{CAvxH5GEv#`2<<#McP}o|m`%LXMa`-qJ-xu9-=2MB=BQ@e$ zduPU85`!gr-FQl`ul;hQJUL&_!?chk6ZdZCQkq{(W3?*W6dA%&A|^7{#r$+OTV2%< zvnj>M5-P5bIEjl~!u;-JV%Js6S@e){gdX1O>hR_#T{g1yId492le z(NNIqoIZxe2ih-+5IOl1bP&D=@J@fQzTuyK=ribeXcZ%xL-=|1Q?EH$FkG;SL_~;I zdPA1*+?=@m$AekH3i$U?=QS?~Bl$YYWZyG6x_ihIq?+=FR}DYgIJmBeU^@++A20~y z2<&;WQ>3*1WdCJ@tUq?7)RcBlrfubTFtOt^SsL4PhNlKkEIU^T_;MyC6|bZ9+k_hP z)d^|*c~A~LHR1D2->dY-K5bY2z&9L=cjhn^9H%*qNNC#B%KJuB8v9y*gUp(BMEyze zPHcp1LjjBXv*%kQ$W>Q1#&W5II}(LDY+pMNTxUi`?V@!mP;i!M*3x}=@?fJGWPVJ3 zPZRFBT&*M>^a9J$)vt>WO zAD{C=xwyCnHQSHy9Gs{O)`Erhy(uvU13eJcr>%#Ro*d2FR1VG8*`RdrI4rUF-Cr+n zww*7aCdOXIzIU$ar;FhyCol+IcmiUle3G5)#I!whU91JFD(TyGq;e>Si z<{|HpC7<(ekCFp1gc>OXD1>w`Y<&*<2vF8`ONuf%*1i`c>%X)A);x4LK+Yz7cNk+9 zBY0N)2wDH-!v|0K2}f{!Pd-Z@-CghRCooE69O(0^UCfR9Y8>E<;LdlHvPUIj!{Q+- zqlTxT4rp7vr`2nIrGmwk9NCNJJ(j_D)Utd#MqA5K7wla^x+HKIEI@(5BxwkCgu`V^ zzUgu+ee>k2Qu2Br}q1LR9p&-~+F=&LSf{G?o7Z_oJ_>zhD!+Th3IfjN^8MYp;(T!* zLz!w9fi#BjP1T~yxZu$z=1Sb&0r!q;y*cntu+R|>=1`V*-zr1Q;s?!z4m#l;I=M}V zA`n6D-|u@5m?G;9np%f*?!7{QjiAKp;-M0d&UIG33dwS~(-@2V&U_qTpnvn6zuoEj z7){u_C5G0_BFm@#=A=kC3MIbTZAQ=iJ(f6cSQr9ZF9tb$>?r;klPR*2z@fzD7Ei~I z6H!UF)`I|n!(JS^r9oV(>sOx`iw4>JF6EH(E>@KaXfck%5lkj?6mi9I#SdrIauXfm ziI;E6(^Oi%k3<30;;+_Mg5?4pOhmyJO*dwM@?~ zB5I1)r#ohfhhKGK1)EnxNFuAQ=V#jKz)|IHwHU&OCELOwUoIAZ&k({8vc_5bTyB|; zyZ!Pdw+siY*pdKvt!_$I`EeBes+ja7LhV4wRiaD2Shx;>!#8;~)+*)fh zl?KA89A**TphLLNYmD|EvS)qDv%omcAL&X36N56L;aFC57# z;#9IdQZ z657lfRGW_yA3M%Ull!P2EK-J1upD;>4kMtGS~6_D^p3wHhs`2!XjSn&$s?z2Q`ft` zJl-Bw@;$L6uGA^qvlM2@)GbeVRr zTh~)9>WHW$-acBb?pt-~I1kP1vzU~+4wY(YnrCji42>nYUPmo$=*t4`JClt12Rjo? zHaFIrs@%RT2JMS1M2rMqbuQn%BAtyHhnT|XG}ymCab}|*R`Kpaa>10q#ADX1NYFI! znF>Qiq`E$4yFX$JuxMJjWWTuVCTKVG)v2?l&AJ@1VCojyp<;1ZXmrZsJ0lVHz(?~n zr2fU}F~KB(=}R$>E^r`nto86_#d7oD*!;ug{qs@AQ2qx(gXpV4UH4a&_wRhp<_3&x zm^t?VG9=2eHc9+yJJZNKTS>Rw8}ze>pJ7)IL9-n`9v3#i zq{n0mC3Ozt>n9X@IG)m_v`}w1%4z8M5fc5e-{Iz?!?J#+*Dt=gdb{+?xn|eWOEgGu ze8&MP(T&K+3Lm6Yv+}9&a6}~l0^PGEFNdyU(=w3-vt+$b4=`tzYaVZY^zYkVd&`z& zQ_<9K7)@P*73kpe^Cf?{92&drQtO;RE!H)A6#=qtpUM%hXq@*TYd~-PGh40z5sHT69UE}zbrBR?^i zcytyhmqPI{3%|p5t|rYi!8*#ol{~($vSJd$Fb2UsHfJf1gyAWcxpbii18dI5g zNWh%s$AOd))IJN%0&hm{?z6oG6yrw$kK#XPuXHWfYdM()W7o*8q~NKIrt`$?%SR?@ zUyzt+aVvCRtcVt3VqSEJ;cr&;pvRlU2x_!n^szl1!fkfkeaey2B~N*#M{yl!LA#n$ zb>UytwzMb7cn}K`B=e|-&x0=TJ&fy*F9jP7{VK)`J9Rq@*!$MYcUU$* z9C)e2!r<2<9ReXn{k?9pRYqG5-szDtJI$^?k%^>rL(LLr7fBPfBjY_I211U?t-}pG zZI~QXqR6}0o|eT{cTbr|+X)y^!lNarh_>eHjb{oflpXSY&XbOzBQi>NWjbqadpgVZ zl*a_Aa5G-d+G?*?2-CFs;F)iaR78&HVo3fSWE-iFhdpZh1eAuPn<8Tf zo+uwnYBQi>SkGge+*Um*@Ypuc@UrDALd^9&3BB{i#Xc;(yQxj~`9~pOddrbfzvnk`~`J|%G zUZwywFE!N3=WGX8-LK94tI%BaEgO{;+d zWfQFR^o&Hz5e*f1zE*STeLU}tAh`NtAzIoH({*im)KwR%#-JyJ(%$BV4oI2T0kqCh zQBnPmO%rW9L?J=8#*v_$HC%?Ge!aoWY;2VUL>$TKx7%3RNWDNNbo+&<~ zA)7C&hnPi2klCB`OaYzIp2f`Ayjb<5w1d^AJ%JyOy_ILg*JIAi`G9={t5riDb={^?Q$8`7#2!(NoNkX-$S1RqZZRHj)yG#a8y$^Swa!$HEth@HxdVnWb*ws4kl4C5 zGIKmgk?KEy+Ltc9$7{b#$8}mhI2>Kh_bx8{X4;U0JwwMiiG$wem7mE5zD-smm^Zo-e!QqVK#nkzZkcdue`m8E zw`tN+MxByDO+<;TKWDy_p4>8-&<6# zY=(MdtDew?>{`4P{5(lkug02=>&l>XL3!A9{ViAWEpp6TB;UfhuX20as*bv0h1reB z4&*t69|AlRF-sy=o!v_uE-tqm=7UC2e623y5(#T~Ft6?OriaPnk7%CUyo-KWdA4~| zH}3yzJ(6?dogAyxyMicee$gfQG_IjWJY0Gw4?Ndb9q$unLj|Ot3`Ku+=kxoChoISi z3a$Tg+Ht0?r{RRiWc4_@Qg%Kp4fENvMhdIrRB- zc$lS$zi1joeJy83GJHvrOz&y8O(Fz%wA_+LfL#*{27K%{6w^NC44Z@07dt^;8dGz+ z0uj<_9acwFwR$0(2~=M}u}1Wi?tkLB@jm9U3)p(t(RvZ*=DmKlP2yW{Qzy4^K+3Rq zvlsXM=~tXOdWJ@xGEhjy*qW$DQ9@)e)^Zsp7d~$tbe9&~jJ&(kM?RzTF7(Llnme^d zn@K1}{)oT_`l&H&E6OM&UIYDi#7*nIOJ zFE`#^h8QsV4L?>@W*t`hb(?R@;Bn%sZeBe3`M!_t+R1ZOu7v>-6q*xKYlrzsOEJg? z_slUpTdP0hG+yyp$pKoko_)BuQ*ILPqbAjzdE;U0o*DR#)GR(1bDWm}M2gFI%Qi#n z)>ThVGjfXMl_wb;R#8>iIVXYWr!J=0%0suQ3B4ClU*85~D^fsVjEq8qiSwh=dVlvl z##NLTA?|@qJzNaqS*yA@&3F#yuWP8RD;zy+T}dVo{u1r5c<0?ynb6Uf)HGLMx!J4O zbRHj(V@xkJN6Wk!eSdz~j+uO3z#(q+meN*vV4Zi@SuXPNh}e?bf}Lcrx-LZhLq}<4 zyUqcHr@XAswVx8S_in>398jBo=%W5n2UskXTPG~SARsh!*ZUoQs;F%a_x&UegK^Si zjFlaC%{*GbLI`~ZwGajaX%KPKt9to*DR$ljt;||QQef3Z`)ZXXx^1bw-LUIH_4wN^uP&Rno`h2t8FxqQMwLQ4b0^t&3kP2&ils+P z1GT>DGlmHD*ia|DsRnIzv$t}UP&Y0ncOURmhTAkv=yWWp!^@*(UDC8Abxb&+Cta)TSoVe{z zD+rkqiI7>hsmVVW$^Ebiw{x9UMfHhT214Eacw=FzR8upwI8@U_@H;R@EQB0=7&qiL zzS*yk&;S@ptw;E-lp0+ zL2*oRw;$y6yD~)B9fH+SF)!5RB647u#s$waPQHH@uV_2dv083#Gekm_<9eXA1K$dD zlbU{3v}^!=dHlb)NpE4Ec9MIn_&aw!BhTTl5>osFa-Z8jVMP z`9s{rF4`{E-f|dq!)v#CR2x1Rz>b0mqEf6R;&aZ|B+6kY-jHj(k8M4M+B9nvRjxlZ zY9GLk?_OMv`;l#9C)!n+5)TNOxZG8={QB@EREKbH0e%|v;Vw%4N7d!%b`d!{2g5fz z>|HV!Bb1tgFqgT{yi16b$nqbV(LG+(7UMl?RLT;fYspMLx?aB5uiD?p4n*geLrwaE z=zYDg{B+zLDv2`!nRZg8*}srEWK6DvlKX0n@okfOe$NSgr~l~;g1KTO1QB8S(o43} zn^(s?z<$ikS29Gpri&)hzQL4%$1hH%j;c4x>b>HRFyg`!E6N9&_sFW?tVy7ts}3^! zV|2GpI3b9P(Cx|BQE{;tzAeHhtdmoUD{jCO8!m5H($VC%hFlEMXR)B6p&eBMu~)wP8*OPitH$&7HW9z^9(uvc>=q(WOxT=eZ~-i|;V7OZ%QOA8!o@-b z66&yLuf8i^RF9vPG&%XhR_|~8D9U;&tR#4vFl4*xg#4}9HGbb`-|Hxk{PwvUU@foH zik)|X6CwEsjo9=I{;}W9A(Ib-*~xqNB`d|9;DdoLuaj({TadVJjo}I$4$_{H%8h(F zmoOJ@n9FyijvBkDp30C{t{s@y;~HgJDwt%Lshpc()X|t3rU*+lrf*?@_Y~vs+j}}ZEcKLAw6;cX+JPM+m|B$^ z^*Ey7W_bS{@xjB~US!;xkXV05WaLymx4FKLfh%)B|JyFqkIvqI+xMMeF$-kx4mZ$X zG0N(Se$1bS$b?9W$i&=Qb`fx33@oQGM8q(t!ztBjJV&D#-&5kpyE;Af;P9rQ<5uCI zjEN=vX4gWPxhTUq0?RE;@_ngCa?RV&%igy-f7Vu2D#xs7z4M@DUUZ0{E=O+4@rdFD z?+dr-*;&h=vDs>qsN2xYI;Vq9!ShAxap8M!O3qLp9!yf8mudpF@l4SI zQ@epps9d!@3X}zh;;twE)%U#78X4s5GOCR3OHs12&u>N51 z6d?lw8JNHuIMe~k-L6#mD6pmo z&Cy^&o%eK8l4>q&`p$=(!5({W4Q`A@Gaxp_Z{_MfYJ6=AGcHaVdCr?eM@9Q8YLrt1 zlr@Zcu--cahK7z4j{B0GV>^zrK*o2jGF#R^;x9O>knW!~M~ z7o{47(Iczp9rw2ZT4MD`!lI(V9p|$qG0(gPR_my;f9OjKx-9Tr99A8JZ9}#SF`*rfWn9EOXS^;m_yty0AV`inJ$)55}Ai!3nSFev(@(tu7&p zH%xGRk9ZjjbGf3~s&@!>x44Y38;K@a|FzYsI&qnJKO+sp@z!WO@Z+_fx$fYG-yUra z7r1PX1)m?lKy<$XD(1K|D1?jEdl_FUz0)gJEI6fKF z|8jZ132tG!J;wmY`~wL5XUOXl%VX1@s>X;I7=a9;{;^2Y%t(Yma^m8Fm;ETx5^Le3 zr5fe$a>PSrfhA=&k^=eC;pf*C*tzQgV0=UumGXNXgGSi2F-vp~3akRTKy&Pr*%Qxf zW_@j~;UNe7;+?&C?+FtA(IlH@fZqpnjQUXA0b z7~g*DvFYi~l+;0vp(jOVMPwN+$8$^rpX)Pj?V`C_i}cWig7+`JNYISlS9w;y_a2g? zDLoDpC`RuP(1p%ahC!2*mjYEb9vE{%DfD1N+`DX+LlB`?*7;*lGkXKX_l-FayI@27yVAZ?e)-R zvVr{>D&=~hu~PI)0Hzz6lplLmQ3>I^B7KkIvj+VU$QZy(vHb^0>J$Fx+mmksjy8n{lK$b4Rk(48H6LqRW=~uy)0+DtB6t*YQ)D9-u?WFEtk+aB_8wy z_Q<6asdf*Xop;gi5H?_wTslstU(!(rVOQW#c3@JF-$XPpFIhtyX;XI^BLCmL8uxcA zWo_Bz@LZ4L`MoTpECWzGzI_XL4&0+M3?aHkXnnCgaT7*qg&1Uy!*)Kt6PO@s;40tR z;8EZ@J(m>v9+M-50S*I02&s7r9TgvH9#3H$+fq!O8#G*`N>`1U0q5oV> zTD&q?4Y7F$X><_!S1zA}?;`3&i5vc7jRjVx8$<52^_>mM=-_puwfN_Wnw8FY`|SAW59Dk*S*sfn_^;3r7E91 z%OVc861D5aB)4ZagBDTh)$;xA^3l;STY4lWD3#AuyVEN0g9y@a@h-K09)vFM-ycM+ zP(BXy`=KxjfCUGCVL?Wa@gUx`#B9!A&|XMr3_xele-=zp`$8hn)Fec{f}dmP>n!?~ z2u{i#|21=Tr;ob;%|NE(i6Yt{LCqt?ScHwP$r82AJ^}+SC=~v$h!Y0=lu16$k5*ro z#;yhal?9+9diJV#B#nDmi^G1Amx$Y1UFOwvr2!ilXeQChC8fB1YjIEZJl>M|IbB{V zhIfljCZN?H{g`=gzHXs}tt?RZM}9ojvbf1?6&UT+oJkWkfuVaU^c2`E*O zVi0ZM@VoPlAM#&m1T$)d`iDfc>Hf&(g%naxZD*_0%n|MA6w+wm5YV~iiVO`f?HLfr zy{lOCnm>j=ukETf0Z-kJNS9zXoFr4E_#T;vqV>^rK!E+!hZoKZb`7Z`+Epv3&|ZS0 zBw%z?CFZ!^9~B&_J$o+8sbLi0I(zQn>3;j@_{hGcjy?DL`xwpPmY4eR_)pxpD?=~i zk!0pdTo5OZU3&P~1-LE2xH@2*UOqsj+f~WvaN6#uYhhw$$_Yv^bDC8PPF9khCv)r5 zCP%d~smU2ESLaUnHJMr08!4m0*D`9n63N!eF-p#SqVsW(MLaN88%*m^i8y*$Hnpma zB}IeE01AVqua2qQb!a}G`2-l$=13%0RXz`sw}Lq}RE!blSeOd~y6JbgS3XZnP~gzX zGqAv-z7moxJ*t)Q+u65ZIj8*1tkmhm!Crtkh-5en|cNJ#lKjH zxw3H$*%P$>C}=A@^^|y9D*DE|_>rLgOU4JkPkEwL)1#TGz~@GkI5VRwM_i`%0bbz~ zp`)?zk{BEevm{(#f}09437KV4gFr$GEC;V<%{*1QADSfMh`VJJ7uc!zJcx&w^gqA9 zyG6N9pnxxr74IKD<96P7&iAvd7WulkyWJv=$l8BInKRBceP;09&bQArLOF#fVtC2B zu5@5qsvUE3AC11_$|R)_VM9F4vZk^T(GuE6`=YEL&rhX2cj6T5%YGx$nS-Fk5n^Vk zf%WHeUvu0O{-Lo+817J zCTf2Asw8a3A;z%Uynk`AC49N^viIA8CX~PrqK!%DsK`-CK6%LeP+^i11ydZDTk;r5 z5k?N^HN1mq6ffZ@KYARlbvyGihft(3>Cq7^Eyqim7r!%e?(M}6FW?o@NRKDx!l z7e?{YdWazO-maA=O5h;#0o~WTjd&$utp5%ttYv6gMxI#qFE+UpNXL-z?wedgGDMI|CMN#JK74fq2TYYYAzYw0^SL@;5G{Jo12{#5O$;qws) zHx^@|oNW^2gAKWm6{eju0cG5>Ncpy%52YKQrOCPfCn~3+{mL37hot`-XjTY%{MVv@ z#0g0=4kHbVg6UJXEuLkU`~!umsNVB>R#d9k(CYB<5 z{hcx%3!KCF)BfpsEDG|E(#l1*f3Vg?{@<}y;N}W&o zdq*wOPBXv~qZy0f8EMUt<$K<;jFcG{@?Y^d=zB2v`;pB<2zTBg>Vny_^Zo5P$?t0Z zH=gmov7Y|V*S|cTM+>fgf1g2zakD0x(2#NS4o(zsfTNs$E5>T=5X8pb_5wl|M=1=0

zkH#V)~Yv!(17W2C79o;9r?q{IP?np9wG;y|#`k$Z6> z@Q8{l^;)J+KG&EHN0?~IqV`pnX1vEEN$L(psc3n@O6U>iU1Qh6WwRvj%eh4$h1=8} zh^uQ#fJf!{&2?r7#3}3~09DdAYG{>b1Z3<>CnL|x-yO=R#_EsGPJ8Pu`sk5%>W{BQ z1fxf`^B-kG&>u5_u$NX*yAe%yB6wHElCRwIk+i#lCA4Ou(o3Q5qGAK|T zI9FvPZfahfLRj-)rxOk%0r*?$yD5OS#E-q_ClLY*(W?Q5wAI(bC>GsDSD97GIZ zRET)Y_Q04klEA*wYH}_>CFUxo$Yx>aOBw>&SAM?1!9jwkzjxno`qQ1D?JPUB2So@) zCq*_fF|lcP5K=!rGfYRd!+F|((cf^X?sD>t@ZjoaB~QR(sKEb*#%v{74*0xvFxLPQ zRkjtn9I#&8x&K%%qmu0j!&edy2O=0uUjz4G)|3rvenDPA`NVdy@$)VkF;K)n(&xpR zeK1YU7?lv+ps2-Jq{jtx%ocwMY;wAj6_7yObDFp#sC6Rd#i@hMqc$7&Pdkh`BpF6f zJ&&=J9dQk?7o7$kOF?a;JIb|&fsMfB!^-4y)-jm~BT^$L?g z_qG38r(yDpDCR0f$N?L5oDer{;&~C&RsXob6F^0Bt4Ps&#C1gxpXj$XR*{ZHP=*yY4sXcr5h2f$ z@^A*R%;w9)Z=_meGB!yw$;ivq33~6Zn;s9Ok6JlniqY+x-I!7XLJ)Eo_6_=xOv{rAXwdkC%FI1aw*!VUfE=Fng7uAs^pN z0Gkqz%cE{(simV6YR8_HQmh0RBl?|#GvoM1>|!ERhpf$Ke-Go66FpfiPKVx_KhM2) zG#@hA-6oqK1j?x0M|9KTA;5#^hpD}O4)q{_?4qmw54CcN=6X>T`dV9@Y!b!Oy?=9K z=Dk*ZwkFYMovd%JeyoW;!~%OTPlD*T1rDcJ4Lb$t}3L(tE~G= z@}|wCm%kAU=T%=J9{}Y+QB1t%f6T(JzXd4mV_J+sI7Qzf|Njtg&`0`z5pS=dUh^o= zvMrP`y_V{!c_|GLixf?MZ1l??oR0i=d>F|RHn_VO5dOn<{=e`6sABFuOg>B!*od52 zUcM7Dmaaay(c&7r-H`5xi6!^TL zpF!hn0IfRK_97b6wrFt0E2=__2UnkeXIJ=&5Q8q^sv|@8J@RFmhRabpUE0+(75T}4 zavs7z^7-E&U1X)5pX{B95^pmS)ht_(N!@Qo^CA=v%;W5|MmH=Cvr(F5W8mgeb&Z$C@MaL`&)T3pVV1TG5we-O@?My z6|S;C>b5#h%U=P++me7o`oc_;n1H-}#tHmNd_MPG7(R=OartCuzil+aCVin~qI;Hu z0DB~=RCZ)q^7cH}_(B!np}=1@v8#-<-nu^?=>VyVyf%c(_r_yA{SOS*@49YM8OWld z5phTqD!!kWph^76W^2)OrrqAL()@BWz@K1!HhFP z?7BPqnH2L4OU&rA^8YaerV}m#2;Azee`+_M!ZHHFx@_l5UX_P95ARO)7BqqFoWRJ( zzw6c7+Tt5XWYX|WXYlOtg4unK5c4p(0o4@<_}tWhKuc z@?nl~-)ICLGqT(P0-pol`a$nGN(% z{-tL!6R)}DV5(Z<4h>&;n5b0uy59)x4j0mn-o5U}2uMpNG zy9J>*^U>a2qG#W2?vRI=4O>rM1hA&mr~>umL+ zr)gp8^kKX#&=w}v**6}wQd4hS1fDEXFX>T(ts7EmCKk06Zc<*3u&E(M5Y)8RLbvF{ zlu%nVb1pbTHS*N`GJ=_Oq5$R)(9n0SM8$mk!6&SngSMFXQF4c;MMFT!W?9{J++TOl zF^9@HsJH26c?&~*!^?;wdAW?!3$TC+x z&u^kDci!b@6Iw6Sm(Pu>{elTD&Z~>-A_lYT4A*JxIO9R{wq01{RdI4_&y%yZ24RMQ z_a5>%ijGIa;{pGI4Dfj>pb(H=K<7&@nm-Mz0mzYo?InFBN;b(8w%S9sV>J4tVUY@C zkn4sp0eLyC3OAX?fIZ6boxK*Q0hk6F8|RC^lukJ-=Z2iA?HO{>b|OC?o1DCT+o?u8 z)^7?h?reLuM+O?U7v!*u>UYBqB?6!PA9FpZ`6ox!ImCv9E%C;if_%sSO(7prpRyn! zwu`)iM8ps5bh9up*`;iZXr{x!eaK9$c7L-ioSxVByYF%mCw+Ss0Y*)hhR*g$P{57t zF`bm42{k(D=Q`?3SLWpGRZf;z0rq%2b46qK|6hir9PrEEk=6?6i;`_XJ`8zZLGQQI$!xmUJv|@gxihXw!77SssRo|`qpten67NNv`nAT-uLKictQ<;8bkm?oUTGg^m}k z4u&1UixX~e#=SM7E7APFVxe~oOoNoWPi>{lDp{%60qhV7zWxX)|HojonyJvsF9CB) z=$tL>ylMmhT#~WD&p!gDr1&l2cC0vh9GT$j!GCh+UqBk^>oO2broR@OzO=YI5K!hS zFj6`Gr5jBFYc>UUvx1j;ToQ0Y%bS_O{Q}C73OGgk+McH|g7IuXS374727*z^UIhPs zs~T(51~zoweA;>`=a-8W#%#JfRWH~(3|13)5&kvQ?rVWuGF^ZL@Gqrsp*>V4H+RfEMQxazEms2-$#zt#OQtPh(LYb;#O~^EFBDjJMXyAG_n7jvymITUdh&~o^w;crc&g58| zzf%GKL-dxXgOGZ^>~0n!XQh~gxY%eL@d|7@doLJInobt0NQR=Cd)VdyhYP=V0!y0I z=&qiK0x<_bP78dW?RhG;tL@ zLd1Rf37_=Y>?116FZnWb=`O3m1ZgA6*Jpd_rfItzyt_)`=^!HuvL_q>_xSE_jz_T- zP2aAWmRiH0g+3?pH#9GP$RR%3YZ~G!nA-uO(Sn`6Du4XU=L9}N6J zslMC=wH1=6L~%hw-g%r4SB?251r~wAcUPbMMsHWWv3NI5FbW-kNxfDc9f6@U6A1qy z#-fbw_)TL;WrMt)b0Nj2eywvEbmu>@gtx7nuf)D*_GL^q65u31p)$~oR@}3t#;^{p zE2aJh?rH@%EKx!e7Mgp7dOxT!1#}jE5e2YYTUxTqF$Na3N`_Oi1pfqt6goDRl8}6y z{YHp=4A>(m!0N2Tls({T%13yXAM?m-gxKH9!B07w|B#R~5_IR}A+ym)rmGo=e5S>X z0!9!Y$cN8AvLA%ogq82|j>y3kF(oLW?o``Q4W0af&iz}l6~6n6I5y|!fn1y;2;`*Q z5@AX*tUkk{dQc|?LqEQHVRwC#s}nPRXdUxMdF@?dc}V~W*~29<4*~6(=;McHbQtQv z%s3|dE&D>XO7PG=H*TuzCJPU`7vi7E#|FFWKQ_VtWkQ3AEGQi9=(qA9LL0V!EcwRU zk&B&=NA8cJ*$Xq3La3WrV*{3$ucR?1KAQGAWRmprTp>1O`pi<1d4#BcU0b z|AA}i-*IAd8*P4s`{5&mCjKn#I{HyK{Pn*P{zKcmX)s6~V3H09O7 zeXxPz2`Dt&(MnDz**jTE0| zq#EqMMJVp><+sZvvntRnfj~uEiCR&b&^!FdaBNNa7fd0!wipYr79ZN zB5E3ggXIbDRcG;V)ZK1w&zCzWFxSI!j6Hgro>~_D_CLPdj}g~{15e!DofAPJ(jH3; zcnl1t$Hi*sW`@fcgo@#VV#19W#YiY9I@rrgEAfqW*A`-mdfO#y--f#zp`(oj_mmDw z7N9GLUxrC2WcS3sl0S&c(W)^Gf3?5#O@2bA_rXXa=He63!679O+4^DH5s-sze0mzsnN(SE&H(kW%n zn?{tiS|8TF?5ZxmFW0GKI#1P~7{VKwMTSA1je)D2{7A<8US%M?>mghr!%h-_` zWSBzA$`5dcr)&$Kd{|!LXfibaePJZE8G2DJ-~rA9NHk$H$op?#_+5yL_Rg9)i|Pg( z{+O#R>LT%gPag7TInxPKU^d-**L-{>&nh?UGH@q0_W1a1&7SqQH^#-&Vf2JC@eA;V z)r`r~ad3}deeGirV+4-EfZ01}8U~H-Z4dx$DtyoxcvMS{krcCRW%OpY*=&0RlkTU6 z{Oqoz^7kMtmU@f9Ur&(Ou4{;pO{ru1P%T0Nj4gpE4K9m)%)`Wwn@H3xR1`(RgMZdG zTc&hyRa~aQYl4kyT9q@KN!d!EJ8jW7QR#ci%y&G(IeN$ZGB!Dg6cq-BkQDm80IN+P zKD^P5!nSDDp)|?Sw311a{^TunNR>R+CR8mzQ}Gm*;Ic~-ov%cAkFhZ#?^vebg1{n? zG0I%-f$H-=Aw^-FztQ54MaOd8wSn@loS6utkbElpOIC9CC|J`Oz4T!R;cuL{W96E#V!LOL@G;gZd810hH_9PHPfG5aXbspxH9SgEz4tmm0^{o1+Rb zeb{eR^d8^SQMCG2NVL@u1-(YZd}uxt^~K^y?6=xr!e1aKZN3SEu3RjIDoPPU#93G+ zUr}A{RMf-$#{j*P|63kGb;Z8|h`pxhad0LW0bk&nOU?FLG_)%vN0ovD?#viwAE4z8weoR!cMO z`hjuh8+S)5k{~Q}v*%19yO~c;2=s+gUZs*M{)F=diYZ=Ak&pJsl<$u=6z2SUJO4y( z$b3#zTyQz)y8ghUKaF?eest)@EY95_xQj4)nxf1DzDXen2`7zoRCgDi1CjUyM}URW z}9-KOnKDb%@{Qa%yNR(bSmhh0kat^(&Om(}jzEyIu%e`KxP2ItLB zVrRvRnK`P`HUokpu(Q(PDx@!??|-(P%@32F875aHKGWg%PBU=4%){eag~MfU@9QDU zhJoPYnl;uhhP(fUA9O#uzY!j!DZ$Lm@W>6!@Bf#Hn|pcd6Svsl#|F@>OR+{-i6NYN@f5Mz9XIb}ubnayc$r87F@ zkY>5F|JHkgTs(^G_o$z5g#9m5@t^GJfuXd(3f6zK7O_Cn;2*8-u~SmC0luk$=Z`f0CS8=<8Vfj0)t9G8UY z|EcB7=69R56ZAT*-tBBSQAtQE#C!fZ9nisoh%YLL`)IIceV5B@? zq4p(=i->VC1yD zkK*gTkDP9La}&}+@>VKiUO)X7G!Okc<+=XW?5G-zwhhtl&J_=s#=eU(UA zxHuz`$40>|>YK$4mH%ikO5osZ=`BmimP32jq_pl!w4F<*ypJcMY9B4qHL@jOvWmMJO5n#GZDv<$yEabkjl1@B3TjrK2FFF6#zA!it7Q&L}6lH6jG%J_6< z@+|57#O<~wNCnx4bdv}dDTn@mS2&~^-(&7$54zcsSMeqtlxy)TM~rVuLG!|WqrWvP zxWK)6dz$~)C#*n``>)$yIFGlzliqUoXpFtHmuqnP=CH!JqwnphI|_c{YWp(ww5mct zSAjt`V$@p~NILFkSf)R02SCc@{seUFjn6TYJRWzvh4&#NoOKBH8~IR_ZrZ>*e5WOS z0p?J&p7Zowh0GUWGPTxX`?}6z?>;iT&y!=ElOC<Q756GTzfqS`4r<0Pt=3&Ymwn21n%Oh@B z8Hj;t>v#^7cQfE#0GyHgE&YTNm`^`r)Z|k{nt6B4J{ccj`uB*c-tl$yP_QcXnab|E zyyBy+74M~>{=G<9A<~x#tuxp8eB((mrDBUUsjF6~xr7Ty`ZMsyvHe#LKH7}f>Pe$W zF(e>|aM4+^rJ+jm6b>N?DqqGdD8 zD9L$!qIX^ce>dXyQGl{%of?Jr?B}APiVr!s&P^1AvUC)BG+52OZX!~lKd|Q|)8VaH zybK?vHC25#w|SFU;jIC3+0|3JKl|Y#Hddk*w$b+}1mn?icY?yK1=Xn zJlwLjrvaEoPr4Nn%h9M`4A0XO#t_Lm9??p32_au*UyUZ)TB$ed!S361WON%PLlf=) z&Uno;Q}q!;LVPdG7JOBQt&Dm5tln0Exyk3Zx!Dl|gvHhT3N6n4Ur9`r(!90DU^)iyIbym3U81*2L6t{p*p zXd-m$-c7WPlmic?yA9A&5p$R1SzKG5~3|A?65MMfiz7x_%`f5^m-79%8UlP;vQL`Hh^$wOKbQ z8B1{U3-7{G!hV|$(?;~-swHxMIDUb4wk4bKjU~H?DYHJ^DfEN!uinb6?$=WwLIuzI z{ia9`#ZMrpE0#U<{TZbEo9N1wyUZj;6jGO$*EQ~^)r@{5Gf6ih0tZ&J3)V*9;=ev$ z4-dpFMP2SZP{$>o%8UAoO0=v%@YwZ~5vUse=sW~MUm~!01y`}$>N5N@LYf-2q_Dq zqaB9q8yCy@{>J62WlX;^X^1!cCrsK=X#cK3Z_Mhb_h_nA1QOs2I%-A+R2HA?_g_#0 zL#axabOZm7$(ujtznnrQ*Ur8@RPDub_~}o3?bn0ZGKG6nPJL@Dv1_G*phhdYyh5-by3qb&X{J7~}QW>}i?We&;r#3K6 zS#w^-`R!cFpr^!ICZQ?B(( z-RsE06P+7)pr8w{aoAra3wW01qH6J{o=vBXl=WYN?cIAQ`T}SeSStxd;53w9-+FhIlZ_xDk`Bb`=wsOLiO+V&@1jM@XWELo-GDzKc|Z}pX&XaIp1Ixtc59$f zp)w2rZX_zHB?K8a3!7fF+T(?g=pV)j5pn-$J@q9L^`DW1AL!V)(TeA4d*cq^{Fvj8 zrf>G)XRYmKs#ZB7JyC<}g|Br!z&A^=Ry!t+=fxixioY4bxzr3su{O*+iwc0k+zhJI zYk(SNpWxtJf}^y8RXqx61!us*+~!+499=hVFiZ;ynJA3eDd&#ukHqp=Y!c+?Bn-?F8F-rJ#2(oTa7_aZP5{K3`~C#*O~@yC5*>3r`eSdFTX0=xTVi&Kp}!JD%FUMuW;&O4c_Z2|kpdImh6+xOrnUk%C|H%loCs*zw44 zjHFhYoFfuaCT*QqTgdP@R8Z9F5$Y{0pNggbLYv+Q3+G{i|D({rwv&@K$_?y3&^tZoKYpcY`I97^){{sJE{tiHU`bBri1*xk zx@N^kzI!51GzjPR8hGH`aMhly9QUyLV0t}h<_tX`5xTWymzNC-~&4|n)I4U z?6tP$LSU$~(3v+lp_nglDlzz#D3dSzYkzeKQVA}<%u_P!!6{#T*SNB%`cJ2R0s#kM z;3w!iuLZQ(2jE&AFEC*~x)COr-C6FzficZXO5nEZ2Xt|=TiPRPGA~mv#1cAXwVDyS z&B(8Bt$_9M8khrQ&9)=$vfT)`r6mV!C|G=-u^YQY7mT?RBm&IGr1h{V1KD1e!S~2&uK)6h>BJI7oK)h}^W~%%eleD0AbJ}`U4ph?l8Nt;4FteyPvqPy7u5Fj zFoQ>;$kFI4$bKZr3Pr^}xv*IpM_)AtpD9s9KcleF=6-^hElS!^-fZ?C&tU#E5jtYl zruRycW>#qf&s7SQw-{qMV0ZWIZROBh_5TExlKzgN0Sd734E>?Nr4 z?Gj{H_BHZXLZx8Xwc>BPCdiqE)LGhpb4`#;Kuy^d#A0;+w`ugnn)q>VuL5MADIOHh zzp+tbuJa@WZmd7HcP9jH(5}5bR<|Kl%{3Cjx?TsxciRDn47m`M1%_-8Sc#XcDvd@E z7Y^8Y!2Tsd&a5{2H_7NSM{`fYX<^8@M{PE?qU0O8M7FHjGj#XpPuUh?XZ)XKIbT%P zkL1^Bs#};Y~hog?)>|E*uC&451b4X z@LcFv*)uf>1_6|sy{$(uC2BFStbLOA1unsF2wN4G+{aF&pNgn z4(8z1Wba07pt$=d2q~d)A2aL3FSZUZEmYs;8Todo`ij{(C0R0`J#UE{F}lhSFZC5N3wklR+PT((Z}IR4N!&k%gl0w*0OFP zCTI2O4~7P)2tC4%-93u)#2`5yM;BY){0QY}K51iAq0H7&^;C0=Mcn@TXJeoQ+X~ZS zwtjDV*7%zgA19*1Hpgb(&f$VDQbU(Z!kFA~@Gd$1!o$5VcymW1TD*X?i(#n7`3)3r o9^R#xa1EiM=c6|et-1;1i5UQZ2$lO literal 0 HcmV?d00001 diff --git a/doc/bgp_error_handling/images/bgp_error_handling_flow4.xml b/doc/bgp_error_handling/images/bgp_error_handling_flow4.xml new file mode 100644 index 00000000000..b06c7e9f646 --- /dev/null +++ b/doc/bgp_error_handling/images/bgp_error_handling_flow4.xml @@ -0,0 +1,2 @@ + +7Vrfk6I4EP5rrLp70AIiODz6a+Zm63bHdepubuflKkLE1CDxQhx1//pNICAQOJTV1anSF6QTOkn393U6DS0wXG4fKFwtPhMX+S1Dc7ctMGoZ4qfzi5DsYklPN2OBR7Ebi/S94Bl/R1KoSekauyjMdWSE+Ayv8kKHBAFyWE4GKSWbfLc58fOjrqCHFMGzA31V+oJdtoild0ZvL/8DYW+RjKxbdtyyhElnuZJwAV2yyYjAuAWGlBAW/1tuh8gXxkvsEj93X9GaToyigB3ywGSAPz1ablufP85ep5PuX6/joN2NtbxDfy0XPHiYyPmyXWIEStaBi4QevQUGmwVm6HkFHdG64W7nsgVb+rJZnZec6juiDG0zIjnPB0SWiNEd7yJbzbv4CYkZU0Jmk3GANOoiY3sgZVC63Ev17q3C/0jDHGGknmIkxULcuSvx18fBW94c3Ap09w+/0Tpmcvst2zYSi9bSu528S+Eibnw4Q/4AOm9e5Ioh8QmNBga2PRze88UNGKQeYhNEMV80osI/OPB4J0soI2vqoIrGSofFKuvRg9wch1S3ZhxnljgukVHkQ4bf88wr86YcYUIwn3GKGjuPmhQjiQZphPihLFEKenQ9r8gu6JGWLuqJoJUuujna7EugrTkGkkB9JSAwQAEFZkMUFIPQL0ZBYtYMDF7RjMKLx2bdvq7grBsfjC/gqvgCrAJftIZ8AXeX5QtQYDBfLcNd4LgXpwwwrowyakLTn0z+HQ0qiePsOHVcROvNNYtt++csFaRZy9OacS3odHbtWrV2tcrsap7Lrte1dV9JhOmeKi/r2r2OeckYY6gxxujw+2cU8CCj/Ua5bYaB/rs47opjcMH1vFdfnEgFn3wYhtjJA+DAjP8++on+jJI3lGnRbU0D4ANAooAI3Wiao4EaRecGhHkjvOoVK9m4fpbwlmFfmPBWiX8tn5trMCfRTPeOtv5bk6ShHUZ1rD7voGur7b6R//PEdTydPk2jDTfWxmcXK4ybP9g+bGl5h5tpnL7UTmyoGc4TdRbQQxIol0wHe91ezlyJZS6VDibZ6ZVEsdoTVOLcKwl3vbu8O5uHOwvkg12BHecOdmr2CjLZzThIsHbLaQ7KRbpND9JWjaIz4yCJMxkcdG84aFxQ0a3Gx50aRefGga7gwBQ4+EIYnt8QUI0As5AO6U03hJ5do6gCAdwPcJfpthIdwuoJW2b5OHtAxRpPC69bseSQ1xdNsaMo+sW7SPe6ksorca9SbW/q3tqy/bndq7LXEpvDlKwZ4tfHIGQwUjOKPgiZQ+zf9o4DDhOFkN/4dYxShDkQINV7x6khZKp5Zq+TAuY+AxjscJOS4Aab6h286O2mFVXQq1F05rhiqklnUiNz8XurrODG0Ja1oY+9IK64OdxHiKo1t0RPuIJBqaKDKnd3EUQpWfHLZxSG4vOxfREv1p0fj4ujqVeU9sT0C7DNwTAgolQ3mGPfL8OsXPhIrhoMRB2KE8bvy4Yldl0xVmlha1/6+t/ds/mrzjTtqCluFWHWpLhlPnwbvXz6+n37ZbF2vr69euP+3+0yPB0ZRkqZXmKnS5FfL543jt4zqh48HdlLfaN+fHhsdd0uo6guKDpBIgZoL5gtXAo3hxbaVTZSxIeDs6iDIIncEHlvc9AyR0dRsHoPmke/dEYK4dIPXOVMWiljsjCsZkAlYbVO4aCQMOZnX/HlIZl/nMznIToSUvx2/61s3H3/xTEY/wA= \ No newline at end of file From d54e58e7a6e3f04fb987375909f8381c72e7b52b Mon Sep 17 00:00:00 2001 From: sudhanshukumar22 Date: Sun, 21 Jul 2019 22:00:43 -0700 Subject: [PATCH 2/5] changes for supporting positive ACK for BGP error handling --- .../BGP_Route_Error_Handling_Arlo.md | 456 +++++++++--------- .../images/bgp_error_handling_flow2.png | Bin 36965 -> 36965 bytes .../images/bgp_error_handling_flow2.xml | 2 +- .../images/bgp_error_handling_flow3.png | Bin 25105 -> 25105 bytes .../images/bgp_error_handling_flow3.xml | 2 +- 5 files changed, 242 insertions(+), 218 deletions(-) diff --git a/doc/bgp_error_handling/BGP_Route_Error_Handling_Arlo.md b/doc/bgp_error_handling/BGP_Route_Error_Handling_Arlo.md index 6939dc84cb7..5145dd6e91b 100644 --- a/doc/bgp_error_handling/BGP_Route_Error_Handling_Arlo.md +++ b/doc/bgp_error_handling/BGP_Route_Error_Handling_Arlo.md @@ -1,217 +1,241 @@ - - -# BGP Route Install Error Handling -# High Level Design Document -#### Rev 0.1 - -# Table of Contents - * [List of Tables](#list-of-tables) - * [Revision](#revision) - * [About This Manual](#about-this-manual) - * [Scope](#scope) - * [Definition/Abbreviation](#definitionabbreviation) - -# List of Tables -[Table 1: Abbreviations](#table-1-abbreviations) - -# Revision -| Rev | Date | Author | Change Description | -|:---:|:-----------:|:------------------:|-----------------------------------| -| 0.1 | 05/07/2019 | Sudhanshu Kumar | Initial version | - -# About this Manual -This document provides information about how to handle the "route add failure in hardware" related errors in BGP in SONIC. -# Scope -This document describes the high level design of BGP route install error handling feature. Implementation for warm reboot and GR for BGP is out of scope for this feature. When route installation fails in hardware due to table full, BGP may retry again when some routes get deleted. This Retry mechanism in BGP for failed routes will not be implemented in this release. - -# Definition/Abbreviation -### Table 1: Abbreviations - -| **Term** | ***Meaning*** | -|-------------------|-------------------------| -| BGP | Border Gateway Protocol | -| GR | Graceful Restart | -| SONIC | Software for Open Networking in the Cloud | -| FRR | FRRouting | -| FPM | Forwarding Plane Manager | -| SwSS | SONiC Switch State Service | -# 1 Requirement Overview - When BGP learns a prefix, it advertises the route to its peers and sends it to route table manager(Zebra). The routes are installed in kernel and sent to APP_DB via fpmsyncd. -The Orchagent reads the route from APP_DB, creates new resources like nexthop or nexthop group Id and installs the route in ASIC_DB. The syncd triggers the appropriate SAI API and route is installed in hardware. The CRM manages the count of critical resources allocated by orchagent through SAI API. -Due to resource allocations failures in hardware, SAI API calls can fail and these failures should be notified to Zebra and BGP to withdraw failed routes from kernel and BGP peers. - -## 1.1 Functional Requirements - - - - 1. BGP should withdraw the routes from its peers which have failed to be installed in hardware. - 1. BGP should mark the routes which are not installed in hardware as failed routes in its RIB-IN table. - 1. Zebra should mark the routes which are not successfully installed in hardware as failed routes. - 1. Zebra should withdraw the failed routes from kernel. - -## 1.2 Configuration and Management Requirements -## 1.3 Scalability Requirements -## 1.4 Warm Boot Requirements - There is no change needed in BGP warm reboot for supporting this feature. -# 2 Functionality -Refer to section 1 - -## 2.1 Target Deployment Use Cases - -## 2.2 Functional Description -Refer to section 1.1 - -# 3 Design -## 3.1 Overview -fpmsyncd subscribes to the changes in the ERROR_ROUTE_TABLE entries. Whenever the error status in ERROR_ROUTE_TABLE is updated, fpmsyncd is notified. It then sends a message to Zebra's routing table to take appropriate action. -Zebra should lookup the route and mark it as not installed in hardware. It should create a route-netlink message to withdraw this state in kernel. Also, it sends message to the source protocol for the route (BGP). -BGP marks the route as not installed in hardware and will withdraw the route from its peer. It should mark the route in RIB-IN as not installed in hardware and remove it from RIB-OUT list, if any. -For ECMP case, BGP sends route with list of nexthops to Zebra for programming. In fpmsyncd, as per the route table schema, the route is received with a list of nexthops. If the nexthop group programming fails, it is treated as route add failure in BGP. -For ADD-PATH feature, if the route-add failure notification comes to BGP, it will not switch to route of next best rank. - -## 3.2 DB Changes -There are no DB changes associated with this feature. -### 3.2.1 CONFIG DB -### 3.2.2 APP DB -### 3.2.3 STATE DB -### 3.2.4 ASIC DB -### 3.2.5 COUNTER DB - -## 3.3 FRRouting Design -### 3.3.1 Zebra changes -Zebra, on receiving the message containing failed route notification, will withdraw the route from kernel. It will also mark the route with flag as "Not installed in hardware" and store the route. It will not send the next best route to fpmsyncd. At this stage, route is present in Zebra. It will also notify BGP of the route add failure. - -### 3.3.2 BGP changes -When BGP learns a route, it immediately sends its best route to its peers without waiting for notification from the hardware. However, the route may or may not be successfully installed in hardware. On receiving route add failed notification message, BGP will remove the route from RIB-OUT list and place in RIB-IN with a flag marking the route as not installed in hardware. It will also withdraw the route from its peers. -In case user wants to retry the installation of failed routes, he/she can issue the command in Zebra. The command will notify BGP. If BGP has the route with flag marked as not installed in hardware, it will remove the flag and send the route to its peers. - -## 3.4 SwSS Design - -### 3.4.1 fpmsyncd changes -A new class is added in fpmsyncd to subscribe to ERROR_ROUTE_TABLE present inside the ERROR_DB. Subscription to this table is sufficient to handle the errors in route installation. -Currently, fpmsyncd has a TCP socket with Zebra listening on FPM_DEFAULT_PORT. This socket is used by Zebra to send route add/delete related messages to fpmsyncd. We will reuse the same socket to send information back to Zebra. -fpmsyncd will convert the ERROR_ROUTE_TABLE entry to Zebra common header format and send the message. It will also send a delete route message to clean the route from APP_DB so that OrchAgent can process it. If processing this results in a further error, then fpmsyncd silently ignores this. - -## 3.5 SyncD - -## 3.6 SAI - - -## 3.7 CLI -### 3.7.1 Data Models -### 3.7.2 Configuration Commands -### 3.7.3 Show Commands -``` -sonic(config-router-af)# do show bgp ipv4 unicast -BGP table version is 1, local router ID is 10.1.0.1, vrf id 0 -Status codes: s suppressed, d damped, h history, * valid, > best, = multipath,# not installed in hardware - i internal, r RIB-failure, S Stale, R Removed -Nexthop codes: @NNN nexthop's vrf id, < announce-nh-self -Origin codes: i - IGP, e - EGP, ? - incomplete - - Network Next Hop Metric LocPrf Weight Path -*># 21.21.21.21/32 4.1.1.2 0 0 101 ? - -Displayed 1 routes and 1 total paths - ``` - - - - -``` -sonic(config-router-af)# 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, - > - selected route, * - FIB route, # - Not installed in hardware - -K>* 0.0.0.0/0 [0/0] via 10.59.128.1, eth0, 09:44:37 -C>* 4.1.1.0/24 is directly connected, Ethernet4, 00:01:48 -C>* 10.1.0.1/32 is directly connected, lo, 09:44:37 -C>* 10.59.128.0/20 is directly connected, eth0, 09:44:37 -B># 21.21.21.21/32 [20/0] via 4.1.1.2, Ethernet4, 00:00:07 -``` -A new command has been introduced for seeing the failed routes as follows - show {ip | ipv6} route not-installed [prefix/mask] -``` -sonic# show ip route not-installed -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 # - not installed in hardware -B> # 22.1.1.1/32 [20/0] via 4.1.1.2, Ethernet4, 00:00:20 -B> # 22.1.1.2/32 [20/0] via 4.1.1.2, Ethernet4, 00:00:20 -B> # 30.1.1.1/32 [20/0] via 4.1.1.2, Ethernet4, 00:00:20 -B> # 30.1.1.2/32 [20/0] via 4.1.1.2, Ethernet4, 00:00:20 -B> # 30.1.1.3/32 [20/0] via 4.1.1.2, Ethernet4, 00:00:20 -B> # 30.1.1.4/32 [20/0] via 4.1.1.2, Ethernet4, 00:00:20 -B> # 30.1.1.5/32 [20/0] via 4.1.1.2, Ethernet4, 00:00:20 -B> # 30.1.1.6/32 [20/0] via 4.1.1.2, Ethernet4, 00:00:20 -B> # 30.1.1.7/32 [20/0] via 4.1.1.2, Ethernet4, 00:00:20 -B> # 30.1.1.8/32 [20/0] via 4.1.1.2, Ethernet4, 00:00:20 -``` -### 3.7.4 Debug Commands -In order to retry the installation of failed routes from Zebra, a clear command has been provided. - clear {ip | ipv6} route {not-installed | } - ``` -sonic# clear ip route - not-installed not installed in hardware -sonic# clear ip route not-installed - - A.B.C.D/M ipv4 prefix with mask - X:X::X:X/M ipv6 prefix with mask -``` -The above command will send route add message for the failed route from Zebra to fpmsyncd. The same message is also sent to BGP so that BGP can advertise the route. - - -### 3.7.5 REST API Support - -# 4 Flow Diagrams - ![BGP](images/bgp_error_handling_flow1.png "Figure 1: High level module interaction for route install error notification") - -__Figure 1: High level module interaction for route install error notification__ - -![BGP](images/bgp_error_handling_flow2.png "Figure 2: Module flow for route add error notification") - -__Figure 2: Module flow for route add error notification__ - -![BGP](images/bgp_error_handling_flow3.png "Figure 3: Module flow for route install success notification") - -__Figure 3: Module flow for route add success notification__ - ![BGP](images/bgp_error_handling_flow4.png "Figure 4: Module flow for route delete success/fail notification") - -__Figure 4: Module flow for route delete success/fail notification__ - -# 5 Serviceability and Debug - - -# 6 Warm Boot Support - -# 7 Scalability - -# 8 Unit Test - -The UT testcases are as follows: - -|**Test-Case ID**|**Description**|**Status**|**Comments**| -|----------------|---------------|----------|------------| -1 | Send an iBGP route from the traffic generator and see that route is learnt in BGP. | | Check the route in zebra. fpmsyncd should send route to APP_DB. Check APP_DB. Check that orchagent should send this route to ASIC_DB. Check that syncd should send the route to ASIC. | - 2 | Send an eBGP route from the traffic generator and see that route is learnt in BGP. | | | - 3 | Install a route and check that error status is present in "show ip route" in zebra. | | | - 4 | Install a route and check that route is present in kernel. | | | - 5 | Install a route and check that route is present in APP_DB and ASIC_DB. | | | - 6 | Execute the command "show bgp ipv4". Check that the error status (installed in hardware flag) is shown as 0. | | | - 7 | Check that routes with installed flag as TRUE is sent to eBGP peers. Also, BGP ribout list should have this route. | | | - 8 | Check that routes with installed flag as TRUE is sent to iBGP peers. (Rules for iBGP and route reflector will apply). | | | - 9 | Send an iBGP route from the traffic generator and see that route is learnt in BGP. But this route is not installed in ASIC_DB. Check that error status is correctly shown in APP_DB. Please note that route will be present in BGP/Zebra/APP_DB. | | Check the route in zebra. fpmsyncd should send route to APP_DB. Check APP_DB. Check that orchagent should send this route to ASIC_DB. Check that syncd should send the route to ASIC. | - 10 | Send an eBGP route from the traffic generator and see that route is learnt in BGP. But this route is not installed in ASIC_DB. Check that error status is correctly shown in APP_DB. Check different kinds of errors like nexthop group-id add failed, nexthop add failed, route add failed, route table/nexthop table is full etc. | | | - 11 | Install a route and check that route is present in zebra, but not in ASIC_DB and kernel. | | | - 12 | Install a route and check that route is not present in APP_DB and ASIC_DB. (Can be due to send error from fpmsyncd). | | | - 13 | Execute the command "show bgp ipv4". Check that the error status (installed flag) is shown as some non-zero value. Also check the rib failure flag. In case of error, check if BGP ribout message does not contain this route. | | | - 14 | Check that routes with installed flag as FALSE is not sent to eBGP peers. Also, BGP ribout list should not have this route. If route has already been sent by BGP, it should be withdrawn. | | | - 15 | Check that routes with installed flag as FALSE is not sent to iBGP peers. (Rules for iBGP and route reflector will apply). If route has already been sent by BGP, it should be withdrawn. | | | - 16 | Send a route. Execute "show bgp ipv4". Check that this command shows the error status (installed flag). See that it shows error. Also, check the rib-failure flag. | | | -17 | Send a route. Execute "show bgp ipv4". Check that this command shows the error status (installed flag). See that it shows error. Also, check the rib-failure flag. Now,send the same route again so that it in installed successfully. Check all the flags. | | | + + + +# BGP Route Install Error Handling +# High Level Design Document +#### Rev 0.1 + +# Table of Contents + * [List of Tables](#list-of-tables) + * [Revision](#revision) + * [About This Manual](#about-this-manual) + * [Scope](#scope) + * [Definition/Abbreviation](#definitionabbreviation) + +# List of Tables +[Table 1: Abbreviations](#table-1-abbreviations) + +# Revision +| Rev | Date | Author | Change Description | +|:---:|:-----------:|:------------------:|-----------------------------------| +| 0.1 | 05/07/2019 | Sudhanshu Kumar | Initial version | + +# About this Manual +This document provides information about how to handle the "route add failure in hardware" related errors in BGP in SONIC. +# Scope +This document describes the high level design of BGP route install error handling feature. Implementation for warm reboot and GR for BGP is out of scope for this feature. When route installation fails in hardware due to table full, BGP may retry again when some routes get deleted. This Retry mechanism in BGP for failed routes will not be implemented in this release. + +# Definition/Abbreviation +### Table 1: Abbreviations + +| **Term** | ***Meaning*** | +|-------------------|-------------------------| +| BGP | Border Gateway Protocol | +| GR | Graceful Restart | +| SONIC | Software for Open Networking in the Cloud | +| FRR | FRRouting | +| FPM | Forwarding Plane Manager | +| SwSS | SONiC Switch State Service | +# 1 Requirement Overview + When BGP learns a prefix, it sends it to route table manager(Zebra). The routes are installed in kernel and sent to APP_DB via fpmsyncd. +The Orchagent reads the route from APP_DB, creates new resources like nexthop or nexthop group Id and installs the route in ASIC_DB. The syncd triggers the appropriate SAI API and route is installed in hardware. The CRM manages the count of critical resources allocated by orchagent through SAI API. +Due to resource allocations failures in hardware, SAI API calls can fail and these failures should be notified to Zebra and BGP. +On learning the prefix, BGP can immediately advertise the prefix to its neighbors. However, if the error-handling feature is enabled, BGP waits for success notification from hardware before advertising the same to its peers. If the hardware returns error, the routes are not advertised to the peers. + +## 1.1 Functional Requirements + + + + 1. BGP should not advertise the routes which have failed to be installed in hardware. + 1. BGP should mark the routes which are not installed in hardware as "FIB-install pending" routes in its RIB-IN table. + 1. Zebra should mark the routes which are not successfully installed in hardware as failed routes. + +## 1.2 Configuration and Management Requirements +## 1.3 Scalability Requirements +## 1.4 Warm Boot Requirements + There is no change needed in BGP warm reboot for supporting this feature. +# 2 Functionality +Refer to section 1 + +## 2.1 Target Deployment Use Cases + +## 2.2 Functional Description +Refer to section 1.1 + +# 3 Design +## 3.1 Overview +On enabling the error-handling feature, fpmsyncd subscribes to the changes in the ERROR_ROUTE_TABLE entries. Whenever the error status in ERROR_ROUTE_TABLE is updated, fpmsyncd is notified. It then sends a message to Zebra's routing table to take appropriate action. +Zebra should lookup the route and mark it as not installed in hardware. It should create a route-netlink message to withdraw this state in kernel. Also, it sends message to the source protocol for the route (BGP). +BGP marks the route as not installed in hardware and does not advertise the route to its peers. It should mark the route in RIB-IN as not installed in hardware and remove it from RIB-OUT list, if any. +For ECMP case, BGP sends route with list of nexthops to Zebra for programming. In fpmsyncd, as per the route table schema, the route is received with a list of nexthops. If the nexthop group programming fails, it is treated as route add failure in BGP. +If the error-handling feature is disabled, fpmsyncd does not receive any notification from ERROR_ROUTE_TABLE. +## 3.2 DB Changes +### 3.2.1 CONFIG DB +A new table BGP_ERROR_CFG_TABLE has been introduced in CONFIG DB (refer section 3.7). +### 3.2.2 APP DB +### 3.2.3 STATE DB +### 3.2.4 ASIC DB +### 3.2.5 COUNTER DB + +## 3.3 FRRouting Design +### 3.3.1 Zebra changes +Zebra, on receiving the message containing route install success, will notify BGP so that it can advertise the route to its peers. +Zebra, on receiving the message containing failed route notification, will withdraw the route from kernel. It will also mark the route with flag as "Not installed in hardware" and store the route. It will not send the next best route to fpmsyncd. At this stage, route is present in Zebra. It will NOT notify BGP of the route add failure. + +### 3.3.2 BGP changes +When BGP learns a route, it marks the route as "pending FIB install" and sends the route to Zebra. The route may or may not be successfully installed in hardware. On receiving route add sucess notification message, BGP will remove the "pending FIB install" flag and advertise the route to its peers. + +In case user wants to retry the installation of failed routes, he/she can issue the command in Zebra. The command will reprogram the failed route in kernel and send that route to hardware. If the route is successfully programmed in hardware, it will notify Zebra. Zebra will, in turn, notify BGP and route will be advertised to its neighbors. + +## 3.4 SwSS Design + +### 3.4.1 fpmsyncd changes +A new class is added in fpmsyncd to subscribe to ERROR_ROUTE_TABLE present inside the ERROR_DB. Subscription to this table is sufficient to handle the errors in route installation. +Currently, fpmsyncd has a TCP socket with Zebra listening on FPM_DEFAULT_PORT. This socket is used by Zebra to send route add/delete related messages to fpmsyncd. We will reuse the same socket to send information back to Zebra. +fpmsyncd will convert the ERROR_ROUTE_TABLE entry to Zebra common header format and send the message. Zebra will send a delete route message to clean the route from APP_DB so that OrchAgent can process it. If processing this results in a further error, then fpmsyncd silently ignores this. + +## 3.5 SyncD + +## 3.6 SAI + + +## 3.7 CLI +### 3.7.1 Data Models +A new table is added in CONFIG_DB to enable and disable error_handling feature. +BGP_ERROR_CFG_TABLE +``` +key = BGP_ERROR_CFG_TABLE:config +``` +The above key has field-value pair as {"enable", "true"/"false"} based on configuration. +### 3.7.2 Configuration Commands +A command is provided in SONIC to enable or disable this feature. + +``` +root@sonic:~# config bgp error-handling --help +Usage: config bgp error-handling [OPTIONS] COMMAND [ARGS]... + + Handle BGP route install errors + +Options: + --help Show this message and exit. + +Commands: + disable Administratively Disable BGP error-handling + enable Administratively Enable BGP error handling + ``` + When the error-handling is disabled, fpmsyncd will not subcribe to any notification from ERROR_ROUTE_TABLE. By default, the error-handling feature is disabled. + +### 3.7.3 Show Commands +``` +sonic(config-router-af)# do show bgp ipv4 unicast +BGP table version is 1, local router ID is 10.1.0.1, vrf id 0 +Status codes: s suppressed, d damped, h history, * valid, > best, = multipath,# FIB install pending. + i internal, r RIB-failure, S Stale, R Removed +Nexthop codes: @NNN nexthop's vrf id, < announce-nh-self +Origin codes: i - IGP, e - EGP, ? - incomplete + + Network Next Hop Metric LocPrf Weight Path +*># 21.21.21.21/32 4.1.1.2 0 0 101 ? + +Displayed 1 routes and 1 total paths + ``` + + + + +``` +sonic(config-router-af)# 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, + > - selected route, * - FIB route, # - Not installed in hardware + +K>* 0.0.0.0/0 [0/0] via 10.59.128.1, eth0, 09:44:37 +C>* 4.1.1.0/24 is directly connected, Ethernet4, 00:01:48 +C>* 10.1.0.1/32 is directly connected, lo, 09:44:37 +C>* 10.59.128.0/20 is directly connected, eth0, 09:44:37 +B># 21.21.21.21/32 [20/0] via 4.1.1.2, Ethernet4, 00:00:07 +``` +A new command has been introduced for seeing the failed routes as follows + show {ip | ipv6} route not-installed [prefix/mask] +``` +sonic# show ip route not-installed +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 # - not installed in hardware +B> # 22.1.1.1/32 [20/0] via 4.1.1.2, Ethernet4, 00:00:20 +B> # 22.1.1.2/32 [20/0] via 4.1.1.2, Ethernet4, 00:00:20 +B> # 30.1.1.1/32 [20/0] via 4.1.1.2, Ethernet4, 00:00:20 +B> # 30.1.1.2/32 [20/0] via 4.1.1.2, Ethernet4, 00:00:20 +B> # 30.1.1.3/32 [20/0] via 4.1.1.2, Ethernet4, 00:00:20 +B> # 30.1.1.4/32 [20/0] via 4.1.1.2, Ethernet4, 00:00:20 +B> # 30.1.1.5/32 [20/0] via 4.1.1.2, Ethernet4, 00:00:20 +B> # 30.1.1.6/32 [20/0] via 4.1.1.2, Ethernet4, 00:00:20 +B> # 30.1.1.7/32 [20/0] via 4.1.1.2, Ethernet4, 00:00:20 +B> # 30.1.1.8/32 [20/0] via 4.1.1.2, Ethernet4, 00:00:20 +``` +### 3.7.4 Debug Commands +In order to retry the installation of failed routes from Zebra, a clear command has been provided. + clear {ip | ipv6} route {not-installed | } + ``` +sonic# clear ip route + not-installed not installed in hardware +sonic# clear ip route not-installed + + A.B.C.D/M ipv4 prefix with mask + X:X::X:X/M ipv6 prefix with mask +``` +The above command will send route add message for the failed route from Zebra to fpmsyncd. + +### 3.7.5 REST API Support + +# 4 Flow Diagrams + ![BGP](images/bgp_error_handling_flow1.png "Figure 1: High level module interaction for route install error notification") + +__Figure 1: High level module interaction for route install error notification__ + +![BGP](images/bgp_error_handling_flow2.png "Figure 2: Module flow for route add error notification") + +__Figure 2: Module flow for route add error notification__ + +![BGP](images/bgp_error_handling_flow3.png "Figure 3: Module flow for route install success notification") + +__Figure 3: Module flow for route add success notification__ + ![BGP](images/bgp_error_handling_flow4.png "Figure 4: Module flow for route delete success/fail notification") + +__Figure 4: Module flow for route delete success/fail notification__ + +# 5 Serviceability and Debug + + +# 6 Warm Boot Support + +# 7 Scalability + +# 8 Unit Test + +The UT testcases are as follows: + +|**Test-Case ID**|**Description**|**Status**|**Comments**| +|----------------|---------------|----------|------------| +1 | Send an iBGP route from the traffic generator and see that route is learnt in BGP. | | Check the route in zebra. fpmsyncd should send route to APP_DB. Check APP_DB. Check that orchagent should send this route to ASIC_DB. Check that syncd should send the route to ASIC. | + 2 | Send an eBGP route from the traffic generator and see that route is learnt in BGP. | | | + 3 | Install a route and check that error status is present in "show ip route" in zebra. | | | + 4 | Install a route and check that route is present in kernel. | | | + 5 | Install a route and check that route is present in APP_DB and ASIC_DB. | | | + 6 | Execute the command "show bgp ipv4". Check that the error status (installed in hardware flag) is shown as 0. | | | + 7 | Check that routes with installed flag as TRUE is sent to eBGP peers. Also, BGP ribout list should have this route. | | | + 8 | Check that routes with installed flag as TRUE is sent to iBGP peers. (Rules for iBGP and route reflector will apply). | | | + 9 | Send an iBGP route from the traffic generator and see that route is learnt in BGP. But this route is not installed in ASIC_DB. Check that error status is correctly shown in APP_DB. Please note that route will be present in BGP/Zebra/APP_DB. | | Check the route in zebra. fpmsyncd should send route to APP_DB. Check APP_DB. Check that orchagent should send this route to ASIC_DB. Check that syncd should send the route to ASIC. | + 10 | Send an eBGP route from the traffic generator and see that route is learnt in BGP. But this route is not installed in ASIC_DB. Check that error status is correctly shown in APP_DB. Check different kinds of errors like nexthop group-id add failed, nexthop add failed, route add failed, route table/nexthop table is full etc. | | | + 11 | Install a route and check that route is present in zebra, but not in ASIC_DB and kernel. | | | + 12 | Install a route and check that route is not present in APP_DB and ASIC_DB. (Can be due to send error from fpmsyncd). | | | + 13 | Execute the command "show bgp ipv4". Check that the error status (installed flag) is shown as some non-zero value. Also check the rib failure flag. In case of error, check if BGP ribout message does not contain this route. | | | + 14 | Check that routes with installed flag as FALSE is not sent to eBGP peers. Also, BGP ribout list should not have this route. If route has already been sent by BGP, it should be withdrawn. | | | + 15 | Check that routes with installed flag as FALSE is not sent to iBGP peers. (Rules for iBGP and route reflector will apply). If route has already been sent by BGP, it should be withdrawn. | | | + 16 | Send a route. Execute "show bgp ipv4". Check that this command shows the error status (installed flag). See that it shows error. Also, check the rib-failure flag. | | | +17 | Send a route. Execute "show bgp ipv4". Check that this command shows the error status (installed flag). See that it shows error. Also, check the rib-failure flag. Now,send the same route again so that it in installed successfully. Check all the flags. | | | # 9 Internal Design Information \ No newline at end of file diff --git a/doc/bgp_error_handling/images/bgp_error_handling_flow2.png b/doc/bgp_error_handling/images/bgp_error_handling_flow2.png index d21e4f5755cd1d65c85b4d60ef231ffaa8a88d72..60a68ff85b6d9b1d032e8681ff0a30f04a1b3083 100644 GIT binary patch delta 32706 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 delta 32642 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 \ No newline at end of file +7Vttc+I2EP41zNx9CGNbfgkfAwm5XK8Xhsxd23zpCFs2amSLChGgv76SLRvbIiH4TCAzZDLBWsnrZffZF62VDhjEq1sGZ9PfaYBIxzKCVQdcdyzLtC2rI3+NYJ1RPNPJCBHDgVq0ITzg/5AiGoq6wAGaVxZySgnHsyrRp0mCfF6hQcbosrospKT61BmMkEZ48CHRqX/ggE8z6qXlbehfEI6m+ZNNt5fNxDBfrL7JfAoDuiyRwE0HDBilPLuKVwNEpPJyvWT3DV+YLQRjKOFvuWHUx1/v3ODCDO8mj+OR/ePxJrmwMy7PkCzUF+7fjpS8fJ0rgdFFEiDJx+yA/nKKOXqYQV/OLoXZBW3KY6KmdbmUqM+IcbQqkZSct4jGiLO1WKJmHaUyhRlHQWZZMoBaMS3pHigaVCaPCr4brYgLpZg9lORpStI0JIw7k5cEJ09VdRRmN8SAwAkifeg/RalKB5RQljIAvd5gMBRC9jlkEeIjxLAQHjGpZ5xEYpErmdEF89ELk0LfbP2nfFLXyYd/KSnSwfVKiZGN1mr0osEyUXajBwUVH9LNWjKcs8VwOY0hAjl+rnreNmuqJ4woFhIXqOlVUQOsGh6U8rKbyo5S43NZ5XPpVNkoA9XZpMgqvnNzsPV+BWytQyDT2SviAu+NWMkD+omApUgwysq22xAtRdhZV1H4TnDJv0YJL49owuDRY7jpnVYQN62Tcqzd/gJOyl+A3VJ0Be5x/QVoMAhn8Xyd+MHRXQYYJ+YyeuFzNRr9fd1/0XH8tXCdALHd6ppkuv02KQhFVXS/4IILak+vtr1Tr+42vTqH0utp5fgTiTC211KEsd1e1zlmjLH0GGN2xfgBJSLIGJ+Y0M0gMT9LiQI97IhVV3LnKv2JwPkc+412FMP05wMYvla3m2bTSszcwejQZnfObq1bxTWNmjc2dmzXPGrpYLlb7OsSoa5+SFM5N4Z2/13QfOJinna1rsQC05itNpPiKpKfN+Px/ThNqxk3IV3GMJv+YNnWqe2fHa975Hxr6XXMPfOnMEIKKMcs+jyrqq5cM8cq+qzLk4piO/dJuXFPJNx5bktVjAtqNcz7tqEsvUa1SjXMTZJj7ZCVy5wz+oRKM2bPMAD4AFlPq0Uab5ftHYwOjIM8zpRwAM44aNw2Metx+82bGm8Ho0PjwNRwYEscfKcch2cEvIwAzXB2QwTUM4vG6NAIsDQEOBIBY7rgSHzeJXMOUzZDiMkZGvvXCmbTdxD1jZHG6NDQ0BseblcBYcFQjgXsC23R5IyI1zbLVUN6bZUNdUaHRoR+sKAnEXGNCEqjxblw2K+AtJrGhjoSNEaHRoLeFesdvnAI058PjYB64WAZLRUOGqNDI0Dvm3nn7NDGZqLeAG3cKX/nTirYdqJqv05qb1sj9TKtR1FMn0spxhgyGouP3xBL5OHEt/VYOVrxGs7quCkQFWJCttEhwVEiYSvwlHZpZVdQwJxcqYkYB4F84NY246YR+WqDbI8TGXa1o1ScTCyht9hWluFbbzm01msEp/UidGevEZxWr7Huxo17jXVGrR15+zFH7H7yjzyYaxlpbM4YioCv/DjfPeJi9xgWaQEnUm+QBUuYjoOF/MuptB6jEYNxLE8/WsZE6lyd4RC6T9lM5NokTSwoyG+jedv/E0OhcElhSpFaWPqYJCAZty/frj93FUiIcMkpJQFi1XPECYyV1X5ChuFEoDWlv37Y1inZUvnHHiEnofI1TSXaKFIeaAgK+b5hRsRKFpI0gU7FOpS0dZalCk1bjzVeS7FGDEs42x5+LMASGH3tfXdABGxrNWTuzwu9pbX3+zxzWxoyjW1bnbflnV3VzkerUYqXV7/a8NQYNQ5KYrg5dZ8t3/zvArj5Hw== \ No newline at end of file diff --git a/doc/bgp_error_handling/images/bgp_error_handling_flow3.png b/doc/bgp_error_handling/images/bgp_error_handling_flow3.png index c5a2cf8695ced2c20eae7fc5701d94012d3465b0..be435a6a19ce8badf1eb2e8975c844d94fd127f4 100644 GIT binary patch literal 25105 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 Ni@nw7+&bh61_0|gdOZLD diff --git a/doc/bgp_error_handling/images/bgp_error_handling_flow3.xml b/doc/bgp_error_handling/images/bgp_error_handling_flow3.xml index 38d4a4d9de4..930be9b53e3 100644 --- a/doc/bgp_error_handling/images/bgp_error_handling_flow3.xml +++ b/doc/bgp_error_handling/images/bgp_error_handling_flow3.xml @@ -1,2 +1,2 @@ -7Vrfb9owEP5rkLaHVnGcH80jUNp12tYING3ryxQSk0QNMTOmwP762cQOSQyCZtCkErwQ39kX+7vvzmdDB/anq3vizaKvOEBJR9eCVQfednT+AeyLS9aZxAZmJghJHGQisBWM4r9ICDUhXcQBmpc6UowTGs/KQh+nKfJpSeYRgpflbhOclN8680KkCEa+l6jSH3FAo0x6o9tb+ScUh5F8M7CcTDP1ZGexknnkBXhZEMFBB/YJxjR7mq76KOHgSVyycXd7tPnECErpMQPcXvz5wQquwORh/DR0je9Pg/TKyKy8eMlCLLh374r50rUEgeBFGiBuB3RgbxnFFI1mns+1S+Z2JovoNBFqdV5iqi+IULQqiMQ87xGeIkrWrIvQmjfZCMEZU1BmWXCAADUqYA+FzBMuD3O7W1TYgwDmFSDZCkgKQsy5M/6YxOlzGQ6GAln/ZA3t2pTNX0XdLV+0lrfWopXThTcSb4ySnuc/hxtX9HGCyebF0HH6/Tu2uB71SIioi0jMFo0I90+chqyTxY3hBfHRHuVeh2UmD7MHBaUYUt1acJy5w3FSRlDi0filHHm7vCne4OKYzThnjVNmTc4RaUGAkA0qBkrFDgBlQ07FjkC6amdDrXzR9dnmNMG2+hyQibolJNBhhQVmTRZUk9Abs0DCWqDBExoTr/HcDJx2JWegv7N4ga2KF2idKGvCm2bjBSo0mMym83XqB42HDNRbFjJqQdN13d+3vb2B469Z6ASIHIZrnGH7ZZwL8qrlcUGZFXQ6XA3rIK7WLlzNc+Harq27JRnGOFVdZjj2tdlkjtHVHKNfs/YIpSzJaB8Iw6afgo98RoGadlivLj+R8nhKvPk89ssEOLLiv9t8eH9K8DMqaICjaRC+A0pUGAGqme7oGg0eMHRuQpiXgFe9Ykk7/xvwluE0HPDWDv9aCYOrN8GbmW4dbf1ZYKm4mm/usbqsA9Bmq62SPYX8ezAcPg43G25mjc0uM5ip39k+bOllh8tNt6l9WFfrm0fiR16IBE2aLAZteBCsNy0GZW3akhx28PwknduSZGfbp0p2Fiynukp0nDvVqbUrLNQ2g1Ry7VLRHFWJ1L12qp7HFUNn5oHMMwUeGBce1L5OAXbtw84BQ+fmAVB4YHIefMM0nlwYsJ8BynFXq8kAZWepGjo3Ay63Gcf8vlB3v1cMGW/rXkP96fe1Zxtn19EG8CzhInZG0bUuvwU57oRzSSD7LkdenT/2DaxNKNbc/k0h6779swcc/AM= \ No newline at end of file +7Vtbc6s2EP41nmkfnEGIS3j0LWl6ek489nTak5eODDJmgpErcByfX18JBAaEDw42sZPaL4GVWKTd71vtSqQDB8vXe4pWi6/EwX5HVZzXDhx2VPbTLPaHS7aJxAR6InCp5yQisBNMvR9YCBUhXXsODgsdI0L8yFsVhTYJAmxHBRmilGyK3ebEL751hVwsCaY28mXpX54TLRLprWru5L9hz12kbwaGmPASpZ3FTMIFcsgmJ4KjDhxQQqLkavk6wD43XmqX5Lm7Pa3ZwCgOokMeGPe93x8MpwvmD7OnyVj782kUdLVEywvy12LC/fuxGG+0TY1AyTpwMNcDOrC/WXgRnq6QzVs3zO1MtoiWvmiWxyWG+oJphF9zIjHOe0yWOKJb1kW06rfJEwIzuoDMJucAYdRFzvZQyJBwuZvp3VmFXQjDvMFIpmQkyULMuSt+6XvBc9EczAp0+ze7UW709PZ7vm3IJ61kd1txl8GF3/hohv0+sp/d2BUD4hMavxha1mBwxybXjxB1cTTG1GOTxpT7xwtc1sngysia2nhP416HJSrr0YOdAodkt+Ycp1c4LpVR7KPIeykyr8qb4g1j4rERZ6ixiqjJMJJqEEZIHsoTpaQHgKIiq6RHWLqsJ4ZWNunmaLPOgbbmGEgD9YWAQIUlFOgNUVAOQu+MgtSsORg84RlFZ4/NwLqs4AzUD8YXeFF8gcaJoia8PS9foASD+WoZbgPbOTtloHphlJETmt54/M+wv5c49pZRx8G03lyzxLZ/zDJBlrU8riOmBZ/OrppRa1ejyq56W3a9rKX7QiKMdqq8TLPMG/2cMUaVYwy4YfdTHLAgo/xCmW0GAfiVj8iRww7r1eMVKeeTj8LQs4sAODDjv4t/vH9EyTPOtQBLUSD8AJAoIQKUI93BORqsUdQ2IPQr4WWvGKmeYwlvaNaZCW9U+Nfwmbn6cxKPdOdo4981SRu6YbyP1WMdgLJ63TWyK5f/HU0mj5N4wU20sdElCpPmD7YOG2rR4emie651WJXzm0dqL5CLBUzOmQyasNZY75oMprnphcSw2vopde6FBDvTPFWwM2Ax1JXY0Xaok3NXNZfbjIIUa9eM5qBMpOm2U7kelxS1jIM0zuRwAK84aLydAszGxU6NorZxACQcaBwH30jkza8I2I8AqdxVGiJAWlnKitpGwHU345DzhabrvaRIe1/3avLR71trG6uqtLF4lBhjVqOoSo/vghxW4VwDyL5jzDevIPsePB2ghsHLnWLcG+Ppw7fJly9fF93J9668YLzZyZV+qPDVxST7TTeupC2S9jauKn2lHs396n0NnZP/IQgjFI8hXNs2DsNc2nBYMGCldFREBsXs1WgWd+ARYMUtE9tK73f0IZMg33MDDiwGlXiDhJfkno38nmhYeo7Dn/9J9JjHv2xEUlGffWYkRtLJPu7JQ3Q/O/ZuCig3KjDMAiRSHx0JWVCsKtXi82Q+D3ErCJO3yj9dNJBIXF7BD675ymGlvVSg0ldyJmAUeTyVePz5CQvrCKuboIpaR4Kqa1RGgfYJe8BRxkcnrMSzxt8GaTWKWiasvL9t/qQ2/4Tk1GvICfRSdZVmp00R1D7/qo6aPhn/JNoYDfkHlBpFLfNPPjK5/X/xz6jjn5aeJ5xmcTyGfux295F90n33rwpw9B8= \ No newline at end of file From 4bb7315631b2a4ed52a6cb658ff619d37ae59f86 Mon Sep 17 00:00:00 2001 From: sudhanshukumar22 Date: Fri, 26 Jul 2019 05:40:22 -0700 Subject: [PATCH 3/5] Updated with changes for config replay --- doc/bgp_error_handling/BGP_Route_Error_Handling_Arlo.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/bgp_error_handling/BGP_Route_Error_Handling_Arlo.md b/doc/bgp_error_handling/BGP_Route_Error_Handling_Arlo.md index 5145dd6e91b..44824396097 100644 --- a/doc/bgp_error_handling/BGP_Route_Error_Handling_Arlo.md +++ b/doc/bgp_error_handling/BGP_Route_Error_Handling_Arlo.md @@ -123,7 +123,7 @@ Commands: disable Administratively Disable BGP error-handling enable Administratively Enable BGP error handling ``` - When the error-handling is disabled, fpmsyncd will not subcribe to any notification from ERROR_ROUTE_TABLE. By default, the error-handling feature is disabled. + When the error-handling is disabled, fpmsyncd will not subcribe to any notification from ERROR_ROUTE_TABLE. By default, the error-handling feature is disabled. During system reload, config replay for this feature is possible when the docker routing config mode is unified and/or split. ### 3.7.3 Show Commands ``` From 592ed86ee854072d8caf8ccd54a8291fd3c1384e Mon Sep 17 00:00:00 2001 From: sudhanshukumar22 Date: Fri, 26 Jul 2019 05:43:33 -0700 Subject: [PATCH 4/5] Updated with changes for config replay --- doc/bgp_error_handling/BGP_Route_Error_Handling_Arlo.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/bgp_error_handling/BGP_Route_Error_Handling_Arlo.md b/doc/bgp_error_handling/BGP_Route_Error_Handling_Arlo.md index 44824396097..913a29e9a43 100644 --- a/doc/bgp_error_handling/BGP_Route_Error_Handling_Arlo.md +++ b/doc/bgp_error_handling/BGP_Route_Error_Handling_Arlo.md @@ -123,7 +123,7 @@ Commands: disable Administratively Disable BGP error-handling enable Administratively Enable BGP error handling ``` - When the error-handling is disabled, fpmsyncd will not subcribe to any notification from ERROR_ROUTE_TABLE. By default, the error-handling feature is disabled. During system reload, config replay for this feature is possible when the docker routing config mode is unified and/or split. + When the error-handling is disabled, fpmsyncd will not subcribe to any notification from ERROR_ROUTE_TABLE. By default, the error-handling feature is disabled. During system reload, config replay for this feature is possible when the docker routing config mode is unified or split. ### 3.7.3 Show Commands ``` From 395761830c5662b8ad730e2a291c37627e487767 Mon Sep 17 00:00:00 2001 From: sudhanshukumar22 Date: Tue, 10 Sep 2019 22:34:32 -0700 Subject: [PATCH 5/5] Updated warm-reboot (section 6) and config knob(3.7.2) --- .../BGP_Route_Error_Handling_Arlo.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/doc/bgp_error_handling/BGP_Route_Error_Handling_Arlo.md b/doc/bgp_error_handling/BGP_Route_Error_Handling_Arlo.md index 913a29e9a43..99c53610930 100644 --- a/doc/bgp_error_handling/BGP_Route_Error_Handling_Arlo.md +++ b/doc/bgp_error_handling/BGP_Route_Error_Handling_Arlo.md @@ -1,5 +1,6 @@ + # BGP Route Install Error Handling # High Level Design Document @@ -124,6 +125,8 @@ Commands: enable Administratively Enable BGP error handling ``` When the error-handling is disabled, fpmsyncd will not subcribe to any notification from ERROR_ROUTE_TABLE. By default, the error-handling feature is disabled. During system reload, config replay for this feature is possible when the docker routing config mode is unified or split. + This feature can be turned off on demand. But it can affect the system stability. When the config was turned on, there may be some routes in BGP, for which, it is waiting for update from hardware. When the feature is turned off, we will unsubscribe from ERROR_DB and will no longer receive any notifications from hardware. Hence, some of the routes may not receive any notification from hardware. +It is recommended to restart the BGP docker when the config state is changed to disable from enable. By default, this config is disabled. If the config is changed from disable to enable, we do not need to restart the docker. But the feature will be affecting only those routes which will be learnt after enabling the feature. ### 3.7.3 Show Commands ``` @@ -212,6 +215,13 @@ __Figure 4: Module flow for route delete success/fail notification__ # 6 Warm Boot Support +There are two scenarios here. One is warm-reboot case and another is unplanned reboot (like bgp restart or docker restart due to cold reboot). Note that in current sonic code, we don't retain routes learnt by Zebra across +warm-reboot. +During warm reboot, fpmsyncd supports syncing of existing routes in APP_DB with newly learnt routes. After warm reboot of BGP docker, BGP sends newly learnt routes to fpmsyncd. Since warm reboot is enabled, fpmsyncd will mark the existing db routes and send only the newly learnt routes to APP_DB. If BGP error-handling is enabled, for the routes which were same as before, we will send an implicit positive ACK to Zebra. +Before warm reboot, suppose, we had 5 routes sent by BGP to fpmsynd, out of them., 5th route failed to be installed in hardware. Zebra will delete the 5th route from kernel, APP_DB, ASIC_DB and ERROR_DB. After warm reboot, when fpmsyncd receives the 5 routes again from BGP, it will send add for the 5th route again (since 5th route was never present in APP_DB prior to warm reboot). +During unplanned reboot, for the same 5 routes, suppose, fpmsyncd crashed before processing the add failure for the 5th route. Now, all the 5 routes are present in APP_DB and ASIC_DB. Since +the 5th route failed to be installed in hardware, it is present in ERROR_DB. When docker comes up again, orchagent will send the notification for the 5th route failure to fpmsyncd. fpmsyncd will send this message to Zebra. Zebra cleans the route from APP_DB and ASIC_DB. After the warm reboot timer expires, fpmsyncd will +receive the implicit ACK for the remaining routes (routes which did not change during warm-reboot). If any route changes during warm-reboot, the route will be sent to orchagent for installation in hardware and ACK will take its normal flow. # 7 Scalability