route_propagation_test - openconfig/featureprofiles GitHub Wiki
BGP Route Propagation
Establish eBGP sessions between:
- ATE port-1 and DUT port-1
- ATE port-2 and DUT port-2
IPv4 and IPv6 use separate sessions on each port: the IPv4 neighbors carry
IPV4_UNICAST and the IPv6 neighbors carry IPV6_UNICAST. The DUT port-1
neighbors are members of peer-group BGP-PEER-GROUP1 and the DUT port-2
neighbors are members of peer-group BGP-PEER-GROUP2; both peer-groups apply an
accept-all import and export policy. Both ATE peers announce the ADD-Path
capability for IPv4-unicast and IPv6-unicast. ATE port-1 advertises 4 IPv4
prefixes (198.51.100.0/32 to 198.51.100.3/32) and 4 IPv6 prefixes
(2001:db8:1::1/128 to 2001:db8:1::4/128).
- DUT: Configure the Minimum Route Advertisement Interval (MRAI) for desired behavior.
- ATE Port 2: Verify received routes adhere to the MRAI timing.
- DUT: Enable RFC5549 support:
- Update the BGP peer group configuration to enable extended next hop encoding using
/network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-unicast/config/extended-next-hop-encoding
- Update the BGP peer group configuration to enable extended next hop encoding using
- ATE Port 1: Advertise IPv4 routes with IPv6 next-hops.
- ATE Port 2: Validate correct acceptance and propagation of routes with IPv6 next-hops.
- For the Add-Path subtests the ATE port-1 session is iBGP: ATE port-1 uses the DUT AS (65537) and acts as a route reflector that sends multiple paths to its client, the DUT.
- ATE Port 1: Advertise each prefix four times with path IDs 1, 2, 3 and 4.
- RT-1.3.3.1: Add-Path receive on the neighbor
- DUT: On the ATE port-1 neighbors set
/network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/afi-safis/afi-safi/add-paths/config/receivetotruefor IPv4 and IPv6. - Verification (Telemetry):
/network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/afi-safis/afi-safi/add-paths/state/receiveistrueon the ATE port-1 neighbors. - Verification (Telemetry):
/network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/afi-safis/afi-safi/state/prefixes/receivedon the ATE port-1 neighbors is16(4 prefixes x 4 paths): the DUT keeps every path.
- DUT: On the ATE port-1 neighbors set
- RT-1.3.3.2: Add-Path receive on the peer-group
- DUT: Remove the
add-pathsconfiguration from the ATE port-1 neighbors and set/network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group/afi-safis/afi-safi/add-paths/config/receivetotrueonBGP-PEER-GROUP1for IPv4 and IPv6. - Verification (Telemetry):
/network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group/afi-safis/afi-safi/add-paths/state/receiveistrueonBGP-PEER-GROUP1. - Verification (Telemetry):
prefixes/receivedon the ATE port-1 neighbors is16(receive inherited from the peer-group).
- DUT: Remove the
- ADD-Path is negotiated when a session is established, so the BGP sessions are re-established after each configuration change.
The DUT configuration for RT-1.3.3.1:
{
"network-instances": {
"network-instance": [
{
"name": "DEFAULT",
"config": { "name": "DEFAULT" },
"protocols": {
"protocol": [
{
"identifier": "BGP",
"name": "BGP",
"config": { "identifier": "BGP", "name": "BGP" },
"bgp": {
"neighbors": {
"neighbor": [
{
"neighbor-address": "192.0.2.2",
"config": { "neighbor-address": "192.0.2.2", "peer-as": 65537 },
"afi-safis": {
"afi-safi": [
{
"afi-safi-name": "IPV4_UNICAST",
"config": { "afi-safi-name": "IPV4_UNICAST", "enabled": true },
"add-paths": { "config": { "receive": true } }
}
]
}
},
{
"neighbor-address": "2001:db8::2",
"config": { "neighbor-address": "2001:db8::2", "peer-as": 65537 },
"afi-safis": {
"afi-safi": [
{
"afi-safi-name": "IPV6_UNICAST",
"config": { "afi-safi-name": "IPV6_UNICAST", "enabled": true },
"add-paths": { "config": { "receive": true } }
}
]
}
}
]
}
}
}
]
}
}
]
}
}RT-1.3.4: Disabling Add-Path Send: [TODO: https://github.com/openconfig/featureprofiles/issues/3037]
- DUT: Disable Add-Path send for the neighbor connected to ATE Port 2 for both IPv4 and IPv6.
- Verification (Telemetry): Confirm that the DUT's telemetry reflects the disabled Add-Path send status.
- ATE Port 1: Readvertise multiple paths.
- ATE Port 2: Verify that only a single best path is received by ATE Port 2 due to disabled Add-Path send on the DUT.
- DUT: Set
/network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/afi-safis/afi-safi/add-paths/config/receivetofalseon the ATE port-1 neighbors for IPv4 and IPv6. - Verification (Telemetry):
/network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/afi-safis/afi-safi/add-paths/state/receiveisfalseon the ATE port-1 neighbors. - ATE Port 1: Advertise each prefix with path IDs 1 to 4 again.
- Verification (Telemetry):
prefixes/receivedon the ATE port-1 neighbors is4: without receive, each new path replaces the previous one, so the DUT keeps one path per prefix. - ATE Port 2: Verify that the DUT has received and propagated only one single path.
The below yaml defines the OC paths intended to be covered by this test.
paths:
## Config paths
/network-instances/network-instance/protocols/protocol/bgp/global/afi-safis/afi-safi/add-paths/config/receive:
/network-instances/network-instance/protocols/protocol/bgp/global/afi-safis/afi-safi/add-paths/config/send:
/network-instances/network-instance/protocols/protocol/bgp/global/afi-safis/afi-safi/add-paths/config/send-max:
/network-instances/network-instance/protocols/protocol/bgp/global/afi-safis/afi-safi/ipv4-unicast/config/extended-next-hop-encoding:
/network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group/afi-safis/afi-safi/add-paths/config/receive:
/network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group/afi-safis/afi-safi/add-paths/config/send:
/network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group/afi-safis/afi-safi/add-paths/config/send-max:
/network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group/timers/config/minimum-advertisement-interval:
/network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-unicast/config/extended-next-hop-encoding:
/network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/afi-safis/afi-safi/add-paths/config/receive:
/network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/afi-safis/afi-safi/add-paths/config/send:
/network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/afi-safis/afi-safi/add-paths/config/send-max:
/network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/timers/config/minimum-advertisement-interval:
/network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-unicast/config/extended-next-hop-encoding:
## State paths
/network-instances/network-instance/protocols/protocol/bgp/global/afi-safis/afi-safi/add-paths/state/receive:
/network-instances/network-instance/protocols/protocol/bgp/global/afi-safis/afi-safi/add-paths/state/send:
/network-instances/network-instance/protocols/protocol/bgp/global/afi-safis/afi-safi/add-paths/state/send-max:
/network-instances/network-instance/protocols/protocol/bgp/global/afi-safis/afi-safi/ipv4-unicast/state/extended-next-hop-encoding:
/network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group/afi-safis/afi-safi/add-paths/state/receive:
/network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group/afi-safis/afi-safi/add-paths/state/send:
/network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group/afi-safis/afi-safi/add-paths/state/send-max:
/network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group/timers/state/minimum-advertisement-interval:
/network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-unicast/state/extended-next-hop-encoding:
/network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/afi-safis/afi-safi/add-paths/state/receive:
/network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/afi-safis/afi-safi/add-paths/state/send:
/network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/afi-safis/afi-safi/add-paths/state/send-max:
/network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/timers/state/minimum-advertisement-interval:
/network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-unicast/state/extended-next-hop-encoding:
/network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/state/supported-capabilities:
/network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/afi-safis/afi-safi/state/prefixes/received:
rpcs:
gnmi:
gNMI.Set:
gNMI.Subscribe:- MFF - A modular form factor device containing LINECARDs, FABRIC and redundant CONTROLLER_CARD components
- FFF - fixed form factor