Skip to content

Commit

Permalink
Merge branch 'main' into bgp-comm
Browse files Browse the repository at this point in the history
  • Loading branch information
dplore authored Dec 27, 2024
2 parents e4faf63 + fc4804c commit 7d89b29
Show file tree
Hide file tree
Showing 6 changed files with 51 additions and 45 deletions.
43 changes: 17 additions & 26 deletions feature/bgp/prefixlimit/otg_tests/bgp_prefix_limit_test/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ BGP Prefix Limit

## Procedure

* Configure eBGP session between ATE port-1 and DUT port-1,with an Accept-route all import-policy/export-policy under the neighbor AFI/SAFI.
* Configure eBGP session between ATE port-1 and DUT port-1,with an Accept-route all import-policy/export-policy under the BGP peer-group AFI/SAFI.
* With maximum prefix limits of unlimited, and N.
* Advertise prefixes of `limit - 1`, `limit`, `limit + 1`. Validate
session state meets expected value at ATE.
Expand All @@ -20,31 +20,22 @@ BGP Prefix Limit
table by forwarding traffic to `prefix{0..n-1}` and `prefix{n}` where n is
the maximum prefix limit configured.

## 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

Parameters:

* afi-safis/afi-safi/ipv4-unicast/prefix-limit/config/max-prefixes
* afi-safis/afi-safi/ipv4-unicast/prefix-limit/config/restart-timer

## Telemetry Parameter coverage

* TODO: afi-safis/afi-safi/ipv\[46\]-unicast/prefix-limit/state/restart-timer
* TODO:
afi-safis/afi-safi/ipv\[46\]-unicast/prefix-limit/state/warning-threshold-pct
* TODO:
afi-safis/afi-safi/ipv\[46\]-unicast/prefix-limit/state/max-prefix-limit
* TODO:
afi-safis/afi-safi/ipv\[46\]-unicast/prefix-limit/state/prefix-limit-exceeded

## Protocol/RPC Parameter coverage

N/A
## OpenConfig Path and RPC Coverage

```yaml
paths:
/network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group/state/peer-group-name:
/network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/state/neighbor-address:
/network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-unicast/prefix-limit/config/max-prefixes:
/network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-unicast/prefix-limit/state/warning-threshold-pct:
/network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-unicast/prefix-limit/state/prefix-limit-exceeded:

rpcs:
gnmi:
gNMI.Get:
gNMI.Subscribe:
gNMI.Set:
```
## Minimum DUT platform requirement
Expand Down
2 changes: 1 addition & 1 deletion feature/bgp/tests/local_bgp_test/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ The local\_bgp\_test brings up two OpenConfig controlled devices and tests that
* Disconnected between them.
* Verify BGP neighbor parameters

Enable an Accept-route all import-policy/export-policy for eBGP session under the neighbor AFI/SAFI.
Enable an Accept-route all import-policy/export-policy for eBGP session under the BGP peer-group AFI/SAFI.


This test is suitable for running in a KNE environment.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ BGP Keepalive and HoldTimer Configuration Test

* Establish eBGP sessions as follows between ATE and DUT
* The DUT has eBGP peering with ATE port 1 and ATE port 2.
* Enable an Accept-route all import-policy/export-policy under the neighbor AFI/SAFI.
* Enable an Accept-route all import-policy/export-policy under the BGP peer-group AFI/SAFI.
* The first pair is called the "source" pair, and the second the "destination" pair

* Validate BGP session state on DUT using telemetry.
Expand Down
20 changes: 8 additions & 12 deletions feature/gribi/otg_tests/get_rpc_test/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,18 +48,14 @@ Validate gRIBI Get RPC.
[fib_status]: https://github.com/openconfig/gribi/blob/08d53dffce45e942c6e7f07521c58b557984e4b7/v1/proto/service/gribi.proto#L485
[rib_status]: https://github.com/openconfig/gribi/blob/08d53dffce45e942c6e7f07521c58b557984e4b7/v1/proto/service/gribi.proto#L483

## Config Parameter coverage

No additional configuration parameters.

## Telemetry Parameter coverage

No additional telemetry parameters.

## Protocol/RPC Parameter coverage

* gRIBI
* Get
## OpenConfig Path and RPC Coverage

```yaml
rpcs:
gnmi:
gNMI.Get:
gNMI.Set:
```
## Minimum DUT platform requirement
Expand Down
27 changes: 23 additions & 4 deletions feature/gribi/otg_tests/get_rpc_test/get_rpc_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ import (
"github.com/openconfig/ondatra"
"github.com/openconfig/ondatra/gnmi"
"github.com/openconfig/ondatra/gnmi/oc"
"github.com/openconfig/ygnmi/ygnmi"
"github.com/openconfig/ygot/ygot"
)

Expand Down Expand Up @@ -316,8 +317,17 @@ func testIPv4LeaderActive(ctx context.Context, t *testing.T, args *testArgs) {
// Verify the above entries are active through AFT Telemetry.
for ip := range ateDstNetCIDR {
ipv4Path := gnmi.OC().NetworkInstance(deviations.DefaultNetworkInstance(args.dut)).Afts().Ipv4Entry(ateDstNetCIDR[ip])
if got, want := gnmi.Get(t, args.dut, ipv4Path.State()).GetPrefix(), ateDstNetCIDR[ip]; got != want {
t.Errorf("ipv4-entry/state/prefix got %s, want %s", got, want)
lastValue, ok := gnmi.Watch(t, args.dut, ipv4Path.State(), time.Minute, func(v *ygnmi.Value[*oc.NetworkInstance_Afts_Ipv4Entry]) bool {
return v.IsPresent()
}).Await(t)

if !ok {
t.Fatalf("gnmi.Watch() failed value received = %s", lastValue)
}

ipv4, _ := lastValue.Val()
if got, want := ipv4.GetPrefix(), ateDstNetCIDR[ip]; got != want {
t.Fatalf("ipv4-entry/state/prefix got %s, want %s", got, want)
}
}

Expand Down Expand Up @@ -346,8 +356,17 @@ func testIPv4LeaderActive(ctx context.Context, t *testing.T, args *testArgs) {
validateGetRPC(ctx, t, args.clientA)
for ip := range ateDstNetCIDR {
ipv4Path := gnmi.OC().NetworkInstance(deviations.DefaultNetworkInstance(args.dut)).Afts().Ipv4Entry(ateDstNetCIDR[ip])
if got, want := gnmi.Get(t, args.dut, ipv4Path.State()).GetPrefix(), ateDstNetCIDR[ip]; got != want {
t.Errorf("ipv4-entry/state/prefix got %s, want %s", got, want)
lastValue, ok := gnmi.Watch(t, args.dut, ipv4Path.State(), time.Minute, func(v *ygnmi.Value[*oc.NetworkInstance_Afts_Ipv4Entry]) bool {
return v.IsPresent()
}).Await(t)

if !ok {
t.Fatalf("gnmi.Watch() failed value received = %s", lastValue)
}

ipv4, _ := lastValue.Val()
if got, want := ipv4.GetPrefix(), ateDstNetCIDR[ip]; got != want {
t.Fatalf("ipv4-entry/state/prefix got %s, want %s", got, want)
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -400,7 +400,7 @@ func injectEntries(ctx context.Context, t *testing.T, dut *ondatra.DUTDevice, cl
t.Logf("Add an IPv4Entry for %s pointing to ATE port-2 via gRIBI client", ateDstNetCIDR)
client.AddNH(t, nhIndex, atePort2.IPv4, deviations.DefaultNetworkInstance(dut), fluent.InstalledInRIB)
client.AddNHG(t, nhgIndex, map[uint64]uint64{nhIndex: 1}, deviations.DefaultNetworkInstance(dut), fluent.InstalledInRIB)
client.AddIPv4(t, ateDstNetCIDR, nhgIndex, networkInstanceName, deviations.DefaultNetworkInstance(dut), fluent.InstalledInRIB)
injectIPEntry(ctx, t, dut, client, networkInstanceName, ateDstNetCIDR)
}

// injectIPEntry adds only IPv4 entry to the specified network instance referencing to the nhgid, to the VRF.
Expand Down

0 comments on commit 7d89b29

Please sign in to comment.