Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

OTG Test - RT-1.4: BGP Graceful Restart #1509

Open
wants to merge 193 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
193 commits
Select commit Hold shift + click to select a range
18f2598
ate test copy
octpetre Feb 24, 2023
8bb43c6
Merge branch 'openconfig:main' into otg-rt1.4
octpetre Feb 28, 2023
2c09263
Merge branch 'openconfig:main' into otg-rt1.4
octpetre Mar 1, 2023
64e4155
Merge branch 'main' of github.com:openconfig/featureprofiles into otg…
octpetre Mar 3, 2023
fbd8ea6
otg related changes
octpetre Mar 7, 2023
dff98fe
Merge branch 'openconfig:main' into otg-rt1.4
octpetre Mar 7, 2023
d122703
Merge branch 'openconfig:main' into otg-rt1.4
octpetre Mar 29, 2023
562fadd
Merge branch 'openconfig:main' into otg-rt1.4
octpetre Apr 5, 2023
ab6f3dd
Merge branch 'openconfig:main' into otg-rt1.4
octpetre May 1, 2023
60ee929
Merge branch 'openconfig:main' into otg-rt1.4
octpetre May 2, 2023
319efa8
sync to the ATE test
octpetre May 2, 2023
56a3878
Merge branch 'otg-rt1.4' of github.com:open-traffic-generator/feature…
octpetre May 2, 2023
29f7f6c
Merge branch 'openconfig:main' into otg-rt1.4
octpetre May 2, 2023
d9e2480
-removed ACL
octpetre May 3, 2023
6ac480c
Merge branch 'openconfig:main' into otg-rt1.4
octpetre May 3, 2023
586773a
replaced rundata with metadata
octpetre May 3, 2023
8691c94
adding gnoi service to Arista
octpetre May 3, 2023
e90e6ec
Merge branch 'main' into otg-rt1.4
octpetre May 3, 2023
baacf86
Merge branch 'openconfig:main' into otg-rt1.4
octpetre May 4, 2023
d08679e
changed gRIBIDaemons map name
octpetre May 4, 2023
11cca4f
Merge branch 'main' into otg-rt1.4
octpetre May 5, 2023
89cd6f0
Merge branch 'main' into otg-rt1.4
octpetre May 5, 2023
94fea12
Merge branch 'main' into otg-rt1.4
octpetre May 8, 2023
1b1f848
Merge branch 'main' into otg-rt1.4
octpetre May 10, 2023
8f49a85
Merge branch 'main' into otg-rt1.4
octpetre May 11, 2023
1b1ecf9
Merge branch 'main' into otg-rt1.4
octpetre May 15, 2023
6df52ea
Merge branch 'openconfig:main' into otg-rt1.4
octpetre May 16, 2023
6e69a93
Merge branch 'main' into otg-rt1.4
octpetre May 17, 2023
7e6fa6f
Merge branch 'main' into otg-rt1.4
octpetre May 18, 2023
851eb47
Merge branch 'main' into otg-rt1.4
octpetre May 22, 2023
b39cc7d
Merge branch 'main' into otg-rt1.4
octpetre May 23, 2023
909e756
deviations updates
octpetre May 23, 2023
1e3d6bb
Merge branch 'otg-rt1.4' of github.com:open-traffic-generator/feature…
octpetre May 23, 2023
7c7f1e1
Merge branch 'main' into otg-rt1.4
octpetre May 25, 2023
a281854
Merge branch 'main' into otg-rt1.4
octpetre May 31, 2023
511018d
Merge branch 'main' into otg-rt1.4
octpetre Jun 1, 2023
6483452
Merge branch 'main' into otg-rt1.4
octpetre Jun 2, 2023
c42e06a
Merge branch 'main' into otg-rt1.4
octpetre Jun 7, 2023
6d96684
Merge branch 'main' of github.com:open-traffic-generator/featureprofi…
octpetre Jun 9, 2023
c29bacc
Merge branch 'main' into otg-rt1.4
octpetre Jun 12, 2023
f8145b2
Merge branch 'main' into otg-rt1.4
octpetre Jun 21, 2023
9b0598e
Merge branch 'main' into otg-rt1.4
octpetre Jun 23, 2023
b4fdb58
Merge branch 'main' into otg-rt1.4
octpetre Jun 23, 2023
a91a90b
Merge branch 'main' into otg-rt1.4
octpetre Jun 27, 2023
e7c7599
Merge branch 'main' into otg-rt1.4
octpetre Jun 28, 2023
f2f3bb5
Merge branch 'main' into otg-rt1.4
octpetre Jun 29, 2023
f1185f5
Merge branch 'main' into otg-rt1.4
octpetre Jul 12, 2023
664303a
updated metadata.textproto
octpetre Jul 12, 2023
3a0d2f5
added missing deviation
octpetre Jul 13, 2023
64d4d8c
Merge branch 'main' into otg-rt1.4
octpetre Jul 13, 2023
f67d730
Merge branch 'main' into otg-rt1.4
octpetre Jul 14, 2023
bc82623
corrected to src ip instead of dstIP for routes
octpetre Jul 14, 2023
ad71d1d
Merge branch 'main' into otg-rt1.4
octpetre Jul 17, 2023
648f73c
Merge branch 'main' into otg-rt1.4
octpetre Jul 19, 2023
4e74a69
Merge branch 'main' into otg-rt1.4
octpetre Jul 19, 2023
397da29
Merge branch 'main' into otg-rt1.4
octpetre Jul 21, 2023
659f940
Merge branch 'main' into otg-rt1.4
octpetre Jul 21, 2023
20a4c8b
Merge branch 'main' into otg-rt1.4
octpetre Jul 25, 2023
33e3bc6
Merge branch 'main' into otg-rt1.4
octpetre Jul 27, 2023
c8462b1
Removed not needed route policies
octpetre Jul 27, 2023
8e2619c
Merge branch 'main' into otg-rt1.4
octpetre Aug 8, 2023
56ad22d
Merge branch 'main' into otg-rt1.4
octpetre Aug 10, 2023
8ecf2ac
Merge branch 'main' into otg-rt1.4
octpetre Aug 11, 2023
a6c78b7
Merge branch 'main' into otg-rt1.4
octpetre Aug 16, 2023
72e0257
Merge branch 'main' into otg-rt1.4
octpetre Aug 17, 2023
0d1f479
Merge branch 'main' into otg-rt1.4
octpetre Aug 18, 2023
63418e2
Merge branch 'main' into otg-rt1.4
octpetre Aug 21, 2023
ccaf423
Merge branch 'main' into otg-rt1.4
octpetre Aug 22, 2023
1d013a3
Merge branch 'main' into otg-rt1.4
octpetre Aug 22, 2023
cb3d9a7
Merge branch 'main' into otg-rt1.4
octpetre Aug 24, 2023
83afbc3
Merge branch 'main' into otg-rt1.4
octpetre Aug 30, 2023
10a6042
Merge branch 'main' into otg-rt1.4
octpetre Aug 31, 2023
cbedc04
Merge branch 'main' into otg-rt1.4
octpetre Sep 5, 2023
8dab1aa
Merge branch 'main' into otg-rt1.4
octpetre Sep 6, 2023
65c9810
Merge branch 'main' into otg-rt1.4
octpetre Sep 8, 2023
22c5745
Merge branch 'main' into otg-rt1.4
octpetre Sep 11, 2023
e874749
Merge branch 'main' into otg-rt1.4
octpetre Sep 12, 2023
92f7ccf
Merge branch 'main' into otg-rt1.4
octpetre Sep 12, 2023
eb4679a
Merge branch 'main' into otg-rt1.4
octpetre Sep 13, 2023
1c58f89
Merge branch 'main' into otg-rt1.4
octpetre Sep 18, 2023
e2e9712
Merge branch 'main' into otg-rt1.4
octpetre Sep 19, 2023
49272ac
Merge branch 'main' into otg-rt1.4
octpetre Sep 20, 2023
5f8f5d9
Merge branch 'main' into otg-rt1.4
octpetre Sep 20, 2023
072484a
Merge branch 'main' into otg-rt1.4
octpetre Sep 22, 2023
fed2ac0
Merge branch 'main' into otg-rt1.4
octpetre Sep 25, 2023
490bcba
Merge branch 'main' into otg-rt1.4
octpetre Sep 26, 2023
be322a5
Merge branch 'main' into otg-rt1.4
octpetre Sep 27, 2023
15b8b5d
Merge branch 'main' into otg-rt1.4
octpetre Oct 4, 2023
d5b16a2
Merge branch 'main' into otg-rt1.4
octpetre Oct 5, 2023
68c63af
Merge branch 'main' into otg-rt1.4
octpetre Oct 5, 2023
a516c31
Merge branch 'main' into otg-rt1.4
octpetre Oct 6, 2023
0010ace
Merge branch 'openconfig:main' into otg-rt1.4
octpetre Oct 6, 2023
7b81221
Merge branch 'main' into otg-rt1.4
octpetre Oct 9, 2023
38313d8
corrected gnoi client init
octpetre Oct 9, 2023
ab945f2
Merge branch 'main' into otg-rt1.4
octpetre Oct 11, 2023
58b886b
Merge branch 'main' into otg-rt1.4
octpetre Oct 12, 2023
ab146c9
Merge branch 'main' into otg-rt1.4
octpetre Oct 13, 2023
8a467f4
Merge branch 'main' into otg-rt1.4
octpetre Oct 16, 2023
aa5e17e
Merge branch 'main' into otg-rt1.4
octpetre Oct 18, 2023
c98198b
Merge branch 'main' into otg-rt1.4
octpetre Oct 19, 2023
28c11f8
Merge branch 'main' into otg-rt1.4
octpetre Oct 23, 2023
8ea82f8
Merge branch 'main' into otg-rt1.4
octpetre Oct 25, 2023
be64cd9
Merge branch 'main' into otg-rt1.4
octpetre Oct 26, 2023
7250ea3
Merge branch 'main' into otg-rt1.4
octpetre Nov 1, 2023
905f042
Merge branch 'main' into otg-rt1.4
octpetre Nov 6, 2023
8b606ec
Merge branch 'main' into otg-rt1.4
octpetre Nov 8, 2023
2fd74e9
Merge branch 'main' into otg-rt1.4
octpetre Nov 9, 2023
0cc4e4f
Merge branch 'main' into otg-rt1.4
octpetre Nov 10, 2023
7d64254
Merge branch 'main' into otg-rt1.4
octpetre Nov 14, 2023
fc98c22
Merge branch 'main' into otg-rt1.4
octpetre Nov 15, 2023
f8ec539
Merge branch 'main' into otg-rt1.4
octpetre Nov 16, 2023
0fa3717
Merge branch 'main' into otg-rt1.4
octpetre Nov 20, 2023
8601cf3
Merge branch 'main' into otg-rt1.4
octpetre Nov 28, 2023
ff0bd68
corrected gosnappi.NewConfig
octpetre Nov 29, 2023
f1b25e9
Merge branch 'main' into otg-rt1.4
octpetre Dec 1, 2023
de2cfa3
PR review changes
octpetre Dec 4, 2023
6e66596
Merge branch 'main' into otg-rt1.4
octpetre Dec 4, 2023
968e7f7
Merge branch 'main' into otg-rt1.4
octpetre Dec 7, 2023
3920e3d
Merge branch 'main' into otg-rt1.4
octpetre Dec 14, 2023
d96a97c
Merge branch 'main' into otg-rt1.4
octpetre Dec 19, 2023
66b3337
Merge branch 'main' into otg-rt1.4
octpetre Dec 20, 2023
8ff18d8
Merge branch 'main' into otg-rt1.4
octpetre Jan 5, 2024
1d10b29
Merge branch 'main' into otg-rt1.4
octpetre Jan 9, 2024
3748911
Merge branch 'main' into otg-rt1.4
octpetre Jan 12, 2024
d1747b1
Merge branch 'main' into otg-rt1.4
octpetre Jan 17, 2024
10d08cb
Merge branch 'main' into otg-rt1.4
octpetre Jan 19, 2024
19260e4
Merge branch 'main' into otg-rt1.4
octpetre Jan 22, 2024
ffb95ee
Merge branch 'main' into otg-rt1.4
octpetre Jan 24, 2024
92935e4
Merge branch 'main' into otg-rt1.4
octpetre Jan 26, 2024
287c2a9
Merge branch 'main' into otg-rt1.4
octpetre Jan 30, 2024
417a254
Merge branch 'main' into otg-rt1.4
octpetre Jan 31, 2024
c252cff
Merge branch 'main' into otg-rt1.4
octpetre Feb 5, 2024
ee20fd6
Merge branch 'main' into otg-rt1.4
octpetre Feb 7, 2024
53c5afe
removed setChoice
octpetre Feb 7, 2024
4df8580
Merge branch 'main' into otg-rt1.4
octpetre Feb 12, 2024
0704374
Merge branch 'main' into otg-rt1.4
octpetre Feb 14, 2024
c6b93bf
Merge branch 'main' into otg-rt1.4
octpetre Feb 15, 2024
13d76d6
addressed pr review comments
octpetre Feb 15, 2024
0033074
Merge branch 'main' into otg-rt1.4
octpetre Feb 22, 2024
39ce91a
Merge branch 'main' into otg-rt1.4
octpetre Feb 27, 2024
c3139ac
Merge branch 'main' into otg-rt1.4
octpetre Feb 28, 2024
0a807ff
Merge branch 'main' into otg-rt1.4
octpetre Feb 29, 2024
1dab77e
Merge branch 'main' into otg-rt1.4
octpetre Mar 1, 2024
53f07b8
Merge branch 'main' into otg-rt1.4
octpetre Mar 4, 2024
db5fb0f
Merge branch 'main' into otg-rt1.4
octpetre Mar 6, 2024
f72bbf5
Merge branch 'main' into otg-rt1.4
octpetre Mar 7, 2024
4935581
Merge branch 'main' into otg-rt1.4
octpetre Mar 8, 2024
c164e2c
Merge branch 'main' into otg-rt1.4
octpetre Mar 11, 2024
782a531
Merge branch 'main' into otg-rt1.4
octpetre Mar 12, 2024
d719150
Merge branch 'main' into otg-rt1.4
octpetre Mar 14, 2024
bb66640
Merge branch 'main' into otg-rt1.4
octpetre Mar 15, 2024
96c2294
Merge branch 'main' into otg-rt1.4
octpetre Mar 15, 2024
64f1e95
Merge branch 'main' into otg-rt1.4
octpetre Mar 18, 2024
295eaad
Merge branch 'main' into otg-rt1.4
octpetre Mar 20, 2024
5101d6e
Merge branch 'main' into otg-rt1.4
octpetre Mar 21, 2024
913151d
Merge branch 'main' into otg-rt1.4
octpetre Mar 27, 2024
a82a2b6
Merge branch 'main' into otg-rt1.4
octpetre Mar 28, 2024
8a6e713
Merge branch 'main' into otg-rt1.4
octpetre Mar 28, 2024
d777f31
Merge branch 'main' into otg-rt1.4
octpetre Apr 3, 2024
48d6c0a
Merge branch 'main' into otg-rt1.4
octpetre Apr 16, 2024
97965c3
Merge branch 'main' into otg-rt1.4
octpetre Apr 19, 2024
08c0def
Merge branch 'main' into otg-rt1.4
octpetre Apr 24, 2024
688aa67
Merge branch 'main' into otg-rt1.4
octpetre May 1, 2024
35c518c
Merge branch 'main' into otg-rt1.4
octpetre May 7, 2024
7a4fbc2
Merge branch 'main' into otg-rt1.4
octpetre May 16, 2024
1460f89
Merge branch 'openconfig:main' into otg-rt1.4
octpetre May 29, 2024
bd27885
Merge branch 'main' into otg-rt1.4
octpetre May 31, 2024
555aeb8
Merge branch 'openconfig:main' into otg-rt1.4
octpetre Jun 10, 2024
8441f0c
Merge branch 'main' into otg-rt1.4
octpetre Jun 17, 2024
a1a480b
major rework - initial commit
octpetre Jun 19, 2024
e9aa5d6
Merge branch 'main' into otg-rt1.4
octpetre Jun 19, 2024
60a8891
Merge branch 'main' into otg-rt1.4
octpetre Jun 25, 2024
920c210
Merge branch 'main' into otg-rt1.4
octpetre Jul 16, 2024
f94aa2a
Merge branch 'main' into otg-rt1.4
octpetre Jul 22, 2024
2938845
moved the configure ATE before configure DUT
octpetre Jul 22, 2024
d578750
Corrected the dst peers
octpetre Jul 22, 2024
93185ae
better logging and timing
octpetre Jul 23, 2024
56f95b1
Merge branch 'main' into otg-rt1.4
octpetre Jul 23, 2024
24223a2
Merge branch 'main' into otg-rt1.4
octpetre Jul 24, 2024
e14a64f
updated README
octpetre Jul 24, 2024
25f3f4e
Added RT-1.4.6 test
octpetre Jul 24, 2024
c5a7165
Merge branch 'main' into otg-rt1.4
octpetre Jul 24, 2024
68a3d52
-corrections to the README
octpetre Jul 26, 2024
d5cac1c
Merge branch 'main' into otg-rt1.4
octpetre Jul 26, 2024
52257e3
added 1.4.7 - 1.4.10
octpetre Jul 27, 2024
ea778a0
Merge branch 'main' into otg-rt1.4
octpetre Aug 5, 2024
e8c56ae
Merge branch 'main' into otg-rt1.4
octpetre Aug 13, 2024
1cb6a90
Merge branch 'main' into otg-rt1.4
octpetre Aug 22, 2024
d3bec76
Merge branch 'main' into otg-rt1.4
octpetre Aug 28, 2024
3a4cc83
Merge branch 'main' into otg-rt1.4
octpetre Sep 4, 2024
8cd40b8
Merge branch 'main' into otg-rt1.4
octpetre Sep 25, 2024
9c12968
Merge branch 'main' into otg-rt1.4
octpetre Oct 22, 2024
7ad8bf9
Merge branch 'main' into otg-rt1.4
octpetre Dec 5, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,158 @@
# RT-1.4: BGP Graceful Restart

## Summary

This is to test the BGP graceful restart capability for BGP. A router that supports BGP graceful restart can work either as a Restarting speaker mode or in helper mode. By advertising BGP graceful restart capability, a router announces to the peer its ability to,
1. [Restarting Speaker] Maintain forwarding state on all the routes in its FIB even when its BGP process is restarting. Therefore the peer functioning as a helper should continue to direct flows at the subject router undergoing BGP process restart.
2. [Helper Router] Support a peer whose BGP process is restarting by continuing to direct flows at the peer.
3. The test checks support for RFC4724 and RFC8538.

While testing for the above, this test also confirms that the implementation respects stale-routes-time timer setting.


## Topology
Create the following connections:
```mermaid
graph LR;
A[ATE:Port1] -- EBGP --> B[Port1:DUT:Port2];
B -- IBGP --> C[Port2:ATE];
```

## Procedure

**RT-1.4.1: Enable and validate BGP Graceful restart feature**
* Configure EBGP peering between ATE:Port1 and DUT:Port1
* Configure IBGP peering between ATE:Port2 and DUT:Port2
* Ensure that the EBGP and IBGP peering are setup for IPv4-Unicast and IPv6-unicast AFI-SAFIs. Total 2xpeer-groups (1 per protocol) with 1 BGP session each.
* Enable `Graceful-Restart` capability at the `Peer-Group` level.
* Ensure that the `restart-time` and the `stale-routes-time` are configured at the `Global` level. The `stale-routes-time` should be set at a value less than the BGP Holddown timer.
* Configure allow route-policy under BGP peer-group address-family
* Validate received capabilities at DUT and ATE reflect support for graceful
restart.


**RT-1.4.2: Restarting DUT speaker whose BGP process was killed gracefully**
* Advertise prefixes between the ATE ports, through the DUT.
* Trigger DUT session restart by killing the BGP process in the DUT. Please use the `gNOI.killProcessRequest_Signal_Term` as per [gNOI_proto](https://github.com/openconfig/gnoi/blob/main/system/system.proto#L326).
* Please kill the right process to restart BGP. For Juniper it is the `RPD` process. For Arista and Cisco this is the `BGP` process. For Nokia this is `sr_bgp_mgr`.
* Once the BGP process on DUT is killed, configure ATE to delay the BGP reestablishment for a period longer than the `stale-routes-time` and start regular traffic from ATE and verify that the packets are,
* Forwarded between ATE port-1 and ATE port-2 for the duration of the specified `stale-routes-time`. Before the stale routes timer expires, stop traffic and ensure that there is zero packet loss.
* After the stale routes timer expires, restart traffic and confirm that there is 100% packet loss.
* Stop traffic, revert ATE configuration to start accepting packets for BGP reestablishement from DUT and wait for the BGP session w/ ATE to be reestablished. Once established, restart traffic to ensure that packets are forwarded again between ATE port-1 and ATE port2 and there is zero packet loss.
* Conduct the above steps once for the IBGP peering and once for the EBGP peering.
* In the case of EBGP Peering the traffic will flow from ATE Port2 to ATE port 1 (towards the EBGP routes)


**RT-1.4.3: Restarting DUT speaker whose BGP process was killed abruptly**
* Follow the same steps as in RT-1.4.2 above but use `gNOI.killProcessRequest_Signal_KILL` this time as per `gNOI proto`
* Pass/Fail criteria in this case too is the same as that for RT-1.4.2. Router that supports Graceful restart is expected to allow traffic flow w/o any packet drops until the `stale-routes-time` timer expires.


**RT-1.4.4: DUT Helper for a restarting EBGP speaker whose BGP process was gracefully killed**
* Advertise prefixes between the ATE ports through the DUT. Send Graceful restart trigger from ATE port-1.
* Start traffic between ATE port-1 and ATE port-2 and prior to the expiry of `stale-routes-time`, stop traffic and ensure that there is zero packet loss.
* Restart traffic post the stale routes timer expiry. Ensure that the subject prefixes are withdrawn, and there is 100% traffic loss between ATE:Port1 and ATE:Port2.
* Repeat the above for the EBGP peering on ATE port1
* In the case of EBGP Peering the traffic will flow from ATE Port2 to ATE port 1 (towards the EBGP routes)


**RT-1.4.5: DUT Helper for a restarting EBGP speaker whose BGP process was killed abruptly**
* Advertise prefixes between the ATE ports through the DUT. Use `gNOI.killProcessRequest_Signal_KILL` as per `gNOI proto` to ATE:Port1.
* Once the BGP process on DUT is killed, configure ATE to delay the BGP reestablishment for a period longer than the `stale-routes-time` and start regular traffic from ATE and verify that the packets are,
* Forwarded between ATE port-1 and ATE port-2 for the duration of the specified `stale-routes-time`. Before the stale routes timer expires, stop traffic and ensure that there is zero packet loss.
* After the stale routes timer expires, restart traffic and confirm that there is 100% packet loss.
* Stop traffic, revert ATE configuration to start accepting/sending packets for BGP reestablishement from/to DUT and wait for the BGP session w/ ATE to be reestablished. Once established, restart traffic to ensure that packets are forwarded again between ATE port-1 and ATE port2 and there is zero packet loss.
* Conduct the above steps once for the IBGP peering between DUT:Port2 and ATE:Port2 and once for the EBGP peering.
* In the case of EBGP Peering the traffic will flow from ATE Port2 to ATE port 1 (towards the EBGP routes)

**RT-1.4.6: Test support for RFC8538 compliance by letting Hold-time expire**

RFC-8538 builds on RFC4724 by adding Graceful restart support for scenarios when the BGP holdtime expires. In order to simulate holdtime expiry, please install an ACL on DUT that drops BGP packets from the Peer (i.e. ATE). Also this time, configure the stale-routes-timer to be longer than the hold-timer. Start traffic and ensure that the packets are,
* Forwarded between ATE port-1 and ATE port-2 for the duration of the specified stale routes time. Stop traffic sometime after the holdtime expires but before the stale-routes-timer expires and confirm that there was zero packet loss.
* Once the stale-routes-timer expires, start traffic again and confirm that there is 100% packet loss. Stop traffic.
* Remove the ACL on DUT:Port1 and allow BGP to be reestablished. Start traffic again between ATE port1 and ATE port2. This time ensure that there is zero packet loss. Stop traffic again.
* Repeat the same process above for the EBGP peering between DUT:Port1 and the ATE:Port1

**RT-1.4.7: TODO (Send Soft Notification) Test support for RFC8538 compliance by sending a BGP Notification message to the peer**

The origial RFC4724 had no coverage for Graceful restart process post send/receive of a Soft BGP notification message. Hence, even though the peers supported Graceful restart, they were expected to flush their FIB for the peering when a BGP Notification is received on the session. However with RFC8538, supporting peers should maintain their FIB even when they receive a Soft Notification. Folowing process to test,
* Advertise prefixes between the ATE ports, through the DUT.
* Trigger BGP soft Notification to/from DUT Port1 towards ATE port1. Please use the `gNOI.ClearBGPNeighborRequest_Soft` message as per [gNOI_proto](https://github.com/openconfig/gnoi/blob/main/bgp/bgp.proto#L41). Once the Notification is received and the TCP connection is reset, configure ATE Port1 to not send/accept any more TCP connections from the DUT:Port1 until the stale-routes-timer on the DUT expires.
* Start traffic from ATE Port2 towards ATE Port1 and stop it right before the stale-routes-timer expires. Confirm there is zero packet loss.
* Once the stale-routes-timer expires, restart traffic. Expectations are that there is 100% packet loss. Stop traffic
* Revert ATE configurtion blocking TCP connection from DUT over TCP-Port:179 so the EBGP peering between ATE:Port1 <> DUT:port1 is reestablished. Restart traffic and confirm that there is zero packet loss.
* Restart the above procedure for the IBGP peering between DUT port-2 and ATE port-2

**RT-1.4.8: TODO (Receive Soft Notification) Test support for RFC8538 compliance by receiving a BGP Notification message from the peer**
* Advertise prefixes between the ATE ports, through the DUT.
* Trigger BGP soft Notification from ATE port1. Please use the `gNOI.ClearBGPNeighborRequest_Soft` message as per [gNOI_proto](https://github.com/openconfig/gnoi/blob/main/bgp/bgp.proto#L41). Once the Notification is sent and the TCP connection is reset, configure ATE Port1 to not start/accept any more TCP connections from the DUT:Port1 until the stale-routes-timer on the DUT expires.
* Start traffic from ATE Port2 towards ATE Port1 and stop the same right before the stale-routes-timer expires. Confirm there is zero packet loss.
* Once the stale-routes-timer expires, restart traffic. Expectations are that there is 100% packet loss. Stop traffic.
* Revert ATE configurtion blocking TCP connection to/from DUT over TCP-Port:179 so the EBGP peering between ATE:Port1 <> DUT:port1 is reestablished. Restart traffic and confirm that there is zero packet loss.
* Restart the above procedure for the IBGP peering between DUT port-2 and ATE port-2


**RT-1.4.9: TODO (Send hard Notification) Test support for RFC8538 compliance by sending a BGP Hard Notification message to the peer**
* Advertise prefixes between the ATE ports, through the DUT.
* Trigger BGP hard Notification from DUT port1. Please use the `gNOI.ClearBGPNeighborRequest_hard` message as per [gNOI_proto](https://github.com/openconfig/gnoi/blob/main/bgp/bgp.proto#L43). Once the Notification is sent and the TCP connection is reset, configure ATE Port1 to not start/accept any more TCP connections to/from the DUT:Port1.
* Start traffic from ATE Port2 towards ATE Port1. Confirm there is zero packet loss. Stop traffic.
* Revert ATE configurtion blocking TCP connection to/from DUT over TCP-Port:179 so the EBGP peering between ATE:Port1 <> DUT:port1 is reestablished. Restart traffic and confirm that there is zero packet loss.
* Restart the above procedure for the IBGP peering between DUT port-2 and ATE port-2


**RT-1.4.10: TODO (Receive hard Notification) Test support for RFC8538 compliance by receiving a BGP Hard Notification message from the peer**
* Advertise prefixes between the ATE ports, through the DUT.
* Trigger BGP hard Notification from ATE port1. Please use the `gNOI.ClearBGPNeighborRequest_hard` message as per [gNOI_proto](https://github.com/openconfig/gnoi/blob/main/bgp/bgp.proto#L43). Once the Notification is sent and the TCP connection is reset, configure ATE Port1 to not start/accept any more TCP connections to/from the DUT:Port1.
* Start traffic from ATE Port2 towards ATE Port1. Confirm there is zero packet loss. Stop traffic.
* Revert ATE configurtion blocking TCP connection to/from DUT over TCP-Port:179 so the EBGP peering between ATE:Port1 <> DUT:port1 is reestablished. Restart traffic and confirm that there is zero packet loss.
* Restart the above procedure for the IBGP peering between DUT port-2 and ATE port-2

## Config Parameter Coverage

For prefixes:

* /network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group
* /network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor
* gNOI.killProcessRequest_Signal_Term [To gracefully kill BGP process]

Parameters:

* /network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group/graceful-restart/config/enabled
* /network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group/graceful-restart/config/helper-only
* /network-instances/network-instance/protocols/protocol/bgp/global/graceful-restart/config/restart-time
* /network-instances/network-instance/protocols/protocol/bgp/global/graceful-restart/config/stale-routes-time

BGP conifguration:
* /network-instances/network-instance/protocols/protocol/bgp/neighbors/peer-group/

* Policy-Definition
* /routing-policy/policy-definitions/policy-definition/config/name
* /routing-policy/policy-definitions/policy-definition/statements/statement/config/name
* /routing-policy/policy-definitions/policy-definition/statements/statement/conditions/match-prefix-set/config/prefix-set
* /routing-policy/policy-definitions/policy-definition/statements/statement/conditions/match-prefix-set/config/match-set-options
* /routing-policy/policy-definitions/policy-definition/statements/statement/actions/config/policy-result/ACCEPT_ROUTE

* Apply Policy at Peer-Group level
* afi-safis/afi-safi/apply-policy/config/import-policy
* afi-safis/afi-safi/apply-policy/config/export-policy

## Telemetry Parameter Coverage

* /network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/afi-safis/afi-safi/afi-safi-name
* /network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/afi-safis/afi-safi/graceful-restart/state/advertised
* /network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/graceful-restart/state/peer-restart-time
* /network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/afi-safis/afi-safi/graceful-restart/state/received
* /network-instances/network-instance/protocols/protocol/bgp/global/graceful-restart/state/restart-time
* /network-instances/network-instance/protocols/protocol/bgp/global/graceful-restart/state/stale-routes-time

## OpenConfig Path and RPC Coverage

```yaml
rpcs:
gnmi:
gNMI.Set:
gNMI.Get:
gNMI.Subscribe:
gnoi:
system.System.KillProcess:
```
Loading
Loading