From b3885f9f89cb659f760e502baab720f5b41add16 Mon Sep 17 00:00:00 2001 From: Chuan Wu Date: Thu, 15 Dec 2022 11:21:18 +0800 Subject: [PATCH] Add BGP Suppress FIB Pending test plan Add BGP Suppress FIB Pending test plan Change-Id: I1be42ed1bcddf0ad7ea9c45a809a89583a6554dd --- .../BGP-Suppress-FIB-Pending-test-plan.md | 173 ++++++++++++++++++ .../Img/BGP_Suppress_FIB_Pending_Topo.png | Bin 0 -> 17943 bytes .../Img/Bgp_Suppress_FIB_Pending_Use_Case.png | Bin 0 -> 23827 bytes 3 files changed, 173 insertions(+) create mode 100644 docs/testplan/BGP-Suppress-FIB-Pending-test-plan.md create mode 100644 docs/testplan/Img/BGP_Suppress_FIB_Pending_Topo.png create mode 100644 docs/testplan/Img/Bgp_Suppress_FIB_Pending_Use_Case.png diff --git a/docs/testplan/BGP-Suppress-FIB-Pending-test-plan.md b/docs/testplan/BGP-Suppress-FIB-Pending-test-plan.md new file mode 100644 index 00000000000..ee083bbc17b --- /dev/null +++ b/docs/testplan/BGP-Suppress-FIB-Pending-test-plan.md @@ -0,0 +1,173 @@ +# BGP Suppress FIB Pending Test Plan + +## Related documents + +| **Document Name** | **Link** | +|-------------------|----------| +| BGP Suppress FIB Pending HLD | [https://github.com/stepanblyschak/SONiC/blob/bgp-suppress-fib-pending/doc/BGP/BGP-supress-fib-pending.md]| + +## Overview + +As of today, SONiC BGP advertises learnt prefixes regardless of whether these prefixes were successfully programmed into ASIC. +While route programming failure is followed by orchagent crash and all services restart, even for successfully created routes there is a short period of time when the peer will be black holing traffic. +Also, in the following scenario, a credit loop occurs: +###### Figure 1. Use case scenario + +![Use case scenario](Img/Bgp_Suppress_FIB_Pending_Use_Case.png) + +The problem with BGP programming occurs after the T1 switch is rebooted: +1. First, the T1 FRR learns a default route from at least 1 T2 +2. The T0 advertises it’s prefixes to T1 +3. FRR advertises the prefixes to T2 without waiting for them to be programmed in the ASIC +4. T2 starts forwarding traffic for prefixes not yet programmed, according to T1’s routing table, T1 sends it back to a default route – same T2 + +To avoid that, the route programming has to be synchronous down to the ASIC to avoid credit loops. + +### Scope + +The test is to verify the mechanism that allows BGP not to advertise routes that haven't been installed into ASIC yet. + +### Scale / Performance + +No scale/performance test involved in this test plan + +### Related **DUT** CLI commands +Command to enable the feature: +``` +admin@sonic:~$ sudo config suppress-fib-pending enabled +``` +Command to disable the feature: +``` +admin@sonic:~$ sudo config suppress-fib-pending disabled +``` + +### Supported Topology +The tests will be supported on t1 topo. + +###### Figure 2. Logic Topology +![Use case scenario](Img/BGP_Suppress_FIB_Pending_Topo.png) + +## Test cases +### Test case # 1 - BGPv4 route suppress test +1. Enable BGP suppress-fib-pending function at DUT +2. Save configuration and execute one action randomly choosen from(__reboot__/__config reload__/__fast-reboot__/__warm-reboot__) +3. Suspend orchagent process to simulate a delay +``` +kill -SIGSTOP $(pidof orchagent) +``` +4. Announce BGP ipv4 prefixes to DUT from T0 VM by exabgp +5. Make sure announced BGP routes are in __queued__ state in the DUT routing table +6. Verify the routes are not announced to T2 VM peer +7. Send traffic matching the prefixes and verify packets are not forwarded to T0 VM +8. Restore orchagent process +``` +kill -SIGCONT $(pidof orchagent) +``` +9. Make sure announced BGP routes are not in __queued__ state in the DUT routing table +10. Make sure the routes are programmed in FIB by checking __offloaded__ flag in the DUT routing table +``` +show ip route 1.1.1.0/24 json + +{ + "1.1.1.0/24": [ + { + "destSelected": true, + "distance": 20, + "installed": true, + "installedNexthopGroupId": 277, + "internalFlags": 264, + "internalNextHopActiveNum": 1, + "internalNextHopNum": 1, + "internalStatus": 80, + "metric": 0, + "nexthopGroupId": 277, + "nexthops": [ + { + "active": true, + "afi": "ipv4", + "fib": true, + "flags": 3, + "interfaceIndex": 17, + "interfaceName": "PortChannel1021", + "ip": "10.0.0.65", + "weight": 1 + } + ], + "offloaded": true, + "prefix": "1.1.1.0/24", + "prefixLen": 24, + "protocol": "bgp", + "selected": true, + "table": 254, + "uptime": "00:08:08", + "vrfId": 0, + "vrfName": "default" + } + ] +} +``` +11. Verify the routes are announced to T2 peer +12. Send traffic matching the prefixes and verify packets are forwarded to T0 VM +13. This test should cover __default__ and __user defined vrf__ + +### Test case # 2 - BGPv6 route suppress test +1. Enable BGP suppress-fib-pending function at DUT +2. Save configuration and execute one action randomly choosen from(__reboot__/__config reload__/__fast-reboot__/__warm-reboot__) +3. Suspend orchagent process to simulate a delay +4. Announce BGP ipv6 prefixes to DUT from T0 VM by exabgp +5. Make sure announced BGP routes are in __queued__ state in the DUT routing table +6. Verify the routes are not announced to T2 VM peer +7. Send traffic matching the prefixes and verify packets are not forwarded to T0 VM +8. Restore orchagent process +9. Make sure announced BGP routes are not in __queued__ state in the DUT routing table +10. Make sure the routes are programmed in FIB by checking __offloaded__ flag in the DUT routing table +11. Verify the routes are announced to T2 peer +12. Send traffic matching the prefixes and verify packets are forwarded to T0 VM +13. This test should cover __default__ and __user defined vrf__ + +### Test case # 3 - Test BGP route without suppress +1. No BGP suppress-fib-pending function configured at DUT +2. Suspend orchagent process to simulate a delay +3. Announce BGP prefixes to DUT from T0 VM by exabgp +4. Make sure announced BGP routes are not in __queued__ state in the DUT routing table +5. Verify the BGP routes are announced to T2 peer +6. Restore orchagent process +7. Make sure the routes are programmed in FIB by checking __offloaded__ flag in the DUT routing table +8. Send traffic matching the prefixes and verify packets are forwarded to T0 VM + +### Test case # 4 - Test BGP test work with suppress +1. No BGP suppress-fib-pending function configured at DUT +2. Run BGP test suite +3. Make sure BGP tests are not affected +4. Enable BGP suppress-fib-pending function at DUT +5. Run BGP test suite +6. Make sure BGP tests are not affected + +### Test case # 5 - Test BGP route suppress under negative operation +1. Enable BGP suppress-fib-pending function at DUT +2. Suspend orchagent process to simulate a delay +3. Announce BGP prefixes to DUT from T0 VM by exabgp +4. Execute __BGP session restart__ +5. Verify BGP neighborships are established +6. Make sure announced BGP routes are in __queued__ state in the DUT routing table +7. Configure __static routes__ then redistribute to BGP +8. Verify the __redistributed routes__ are in the DUT routing table +9. Verify the routes are announced to T2 VM peer +10. Send traffic matching the prefixes and verify packets are not forwarded to T0 VM +11. Restore orchagent process +12. Make sure announced BGP routes are not in queued state in the DUT routing table +13. Make sure the routes are programmed in FIB by checking __offloaded__ flag in the DUT routing table +14. Verify the BGP routes are announced to T2 peer +15. Send traffic matching the prefixes and verify packets are forwarded to T0 VM + +### Test case # 6 - Test BGP route suppress in credit loops scenario +1. No BGP suppress-fib-pending function configured at DUT +2. Suspend orchagent process to simulate a delay +3. Announce a default route to DUT from T2 VM +4. Announce BGP prefixes to DUT from T0 VM by exabgp +5. Verify the BGP routes are announced to T2 VM peer +6. Send traffic matching the prefixes and verify packets are forwarded __back to T2 VM__ +7. Enable BGP suppress-fib-pending function at DUT +8. Restore orchagent process +9. Make sure the routes are programmed in FIB by checking __offloaded__ flag in the DUT routing table +10. Send traffic matching the prefixes and verify packets are forwarded to __T0 VM__ diff --git a/docs/testplan/Img/BGP_Suppress_FIB_Pending_Topo.png b/docs/testplan/Img/BGP_Suppress_FIB_Pending_Topo.png new file mode 100644 index 0000000000000000000000000000000000000000..51a780782292753009b6345df4e22523ed7eefc0 GIT binary patch literal 17943 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 ZUQ{0Tdeb8qc$mwBw+ia=P}vW`{|A>j=Ia0e literal 0 HcmV?d00001 diff --git a/docs/testplan/Img/Bgp_Suppress_FIB_Pending_Use_Case.png b/docs/testplan/Img/Bgp_Suppress_FIB_Pending_Use_Case.png new file mode 100644 index 0000000000000000000000000000000000000000..33934b271440c6d1081574b3fb07b182b027e9e1 GIT binary patch literal 23827 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

n$h}spUXcVh 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 Hy%O|ac~xj( literal 0 HcmV?d00001