-
Notifications
You must be signed in to change notification settings - Fork 0
link_bandwidth_test
Configure bgp policy to match, add and delete statically configured BGP link bandwidth communities to routes based on a prefix match.
-
Testbed configuration - Setup external BGP sessions and prefixes.
- Generate config for 2 DUT and ATE ports where:
- DUT port 1 to ATE port 1 EBGP session.
- DUT port 2 to ATE port 2 IBGP session.
- Configure dummy accept policies and attach it to both sessions on DUT.
- Create a
/routing-policy/policy-definitions/policy-definition/policy-definition
named 'allow_all' with the followingstatements
- statement[name='allow-all']/
- actions/config/policy-result = ACCEPT_ROUTE
- statement[name='allow-all']/
- Use
/network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/afi-safis/afi-safi/apply-policy/config/import-policy
to apply the policy on the DUT bgp neighbor to the ATE port 1.
- Create a
- Configure ATE port 1 with a BGP session to DUT port 1.
- Advertise ipv4 and ipv6 prefixes to DUT port 1 using the following communities:
- prefix-set-1 with 2 ipv4 and 2 ipv6 routes without communities.
- prefix-set-2 with 2 ipv4 and 2 ipv6 routes with communities
[ "100:100" ]
. - prefix-set-3 with 2 ipv4 and 2 ipv6 routes with extended communities
[ "link-bandwidth:100:0" ]
.
- Advertise ipv4 and ipv6 prefixes to DUT port 1 using the following communities:
- Configure Send community knob to IBGP neigbour to advertise the communities to IBGP peer
- use
/network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/config/send-community
.
- use
- Generate config for 2 DUT and ATE ports where:
-
RT-7.5.1 - Validate bgp sessions and traffic
- For IPv4 and IPv6 prefixes:
- Observe received prefixes at ATE port-2.
- Generate traffic from ATE port-2 to ATE port-1.
- Verify traffic is received on ATE port 1 for advertised prefixes. routes.
- For IPv4 and IPv6 prefixes:
-
RT-7.5.2 - Validate adding and removing link-bandwidth ext-community-sets using OC model release 3.x
-
Configure the following extended community sets on the DUT: (prefix:
routing-policy/defined-sets/bgp-defined-sets/ext-community-sets/ext-community-set
)- Create an ext-community-set named 'linkbw_0' with:
- ext-community-member = [ "link-bandwidth:100:0" ]
- Create an ext-community-set named 'linkbw_1M' with members as follows:
- ext-community-member = [ "link-bandwidth:100:1M" ]
- Create an ext-community-set named 'linkbw_2G' with members as follows:
- ext-community-member = [ "link-bandwidth:100:2G" ]
- Create an community-set named 'regex_match_comm100' with members as follows:
- community-member = [ "^100:.*$" ]
- Create an ext-community-set named 'linkbw_any' with members as follows:
- ext-community-member = [ "^link-bandwidth:.:.$" ]
- Create an ext-community-set named 'linkbw_any_0' with members as follows:
- ext-community-member = [ "^link-bandwidth:.*:.0" ]
- Create an ext-community-set named 'linkbw_0' with:
-
Create a
/routing-policy/policy-definitions/policy-definition/policy-definition
named 'set_linkbw_0' with the followingstatements
- statement[name='zero_linkbw']/
- actions/bgp-actions/set-ext-community/reference/config/ext-community-set-refs = 'linkbw_0'
- actions/bgp-actions/set-ext-community/config/options = ADD
- actions/bgp-actions/set-community/config/method = REFERENCE
- actions/config/policy-result = NEXT_STATEMENT
- statement[name='accept_all_routes']/
- actions/config/policy-result = ACCEPT_ROUTE
- statement[name='zero_linkbw']/
-
Create a
/routing-policy/policy-definitions/policy-definition/policy-definition
named 'not_match_100_set_linkbw_1M' with the followingstatements
- statement[name='1-megabit-match']/
- conditions/bgp-conditions/match-community-set/config/community-set = 'regex_match_comm100'
- conditions/bgp-conditions/match-community-set/config/match-set-options = INVERT
- actions/bgp-actions/set-ext-community/reference/config/ext-community-set-refs = 'linkbw_1M'
- actions/config/policy-result = NEXT_STATEMENT
- statement[name='accept_all_routes']/
- actions/config/policy-result = ACCEPT_ROUTE
- statement[name='1-megabit-match']/
-
Create a
/routing-policy/policy-definitions/policy-definition/policy-definition
named 'match_100_set_linkbw_2G' with the followingstatements
- statement[name='2-gigabit-match']/
- conditions/bgp-conditions/match-community-set/config/community-set = 'regex_match_comm100'
- conditions/bgp-conditions/match-community-set/config/match-set-options = ANY
- actions/bgp-actions/set-ext-community/reference/config/ext-community-set-refs = 'linkbw_2G'
- actions/config/policy-result = NEXT_STATEMENT
- statement[name='accept_all_routes']/
- actions/config/policy-result = ACCEPT_ROUTE
- statement[name='2-gigabit-match']/
-
Create a
/routing-policy/policy-definitions/policy-definition/policy-definition
named 'del_linkbw' with the followingstatements
- statement[name='del_linkbw']/
- actions/bgp-actions/set-ext-community/config/options = 'REMOVE'
- actions/bgp-actions/set-ext-community/config/method = 'REFERENCE'
- actions/bgp-actions/set-ext-community/reference/config/ext-community-set-refs = 'linkbw_any'
- actions/config/policy-result = NEXT_STATEMENT
- statement[name='accept_all_routes']/
- actions/config/policy-result = ACCEPT_ROUTE
- statement[name='del_linkbw']/
-
Create a
/routing-policy/policy-definitions/policy-definition/policy-definition
named 'match_linkbw_0_remove_and_set_localpref_5' with the followingstatements
- statement[name='match_and_remove_linkbw_any_0']/
- conditions/bgp-conditions/match-ext-community-set/config/community-set = 'linkbw_any_0'
- actions/bgp-actions/set-ext-community/reference/config/ext-community-set-refs = 'linkbw_any_0'
- actions/bgp-actions/set-ext-community/config/method = 'REFERENCE'
- actions/bgp-actions/set-ext-community/config/options = 'REMOVE'
- actions/bgp-actions/config/set-local-pref = 5
- actions/config/policy-result = NEXT_STATEMENT
- statement[name='accept_all_routes']/
- actions/config/policy-result = ACCEPT_ROUTE
- statement[name='match_and_remove_linkbw_any_0']/
-
For each policy-definition created, run a subtest (RT-7.8.3.x-<policy_name_here>) to
-
Use gnmi Set REPLACE option for:
-
/routing-policy/policy-definitions
to configure the policy - Use
/network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/afi-safis/afi-safi/apply-policy/config/import-policy
to apply the policy on the DUT bgp neighbor to the ATE port 1.
-
-
Verify expected communities are present in ATE.
-
Verify expected communities are present in DUT state.
- Do not fail test if this path is not supported, only log results
/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv4-unicast/neighbors/neighbor/adj-rib-in-post/routes/route/state/ext-community-index
/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv6-unicast/neighbors/neighbor/adj-rib-in-post/routes/route/state/ext-community-index
-
Expected community values for each policy
set_linkbw_0 not_match_100_set_linkbw_1M prefix-set-1 [ "link-bandwidth:100:0" ] [none] prefix-set-2 [ "100:100", "link-bandwidth:100:0" ] [ "100:100" ] prefix-set-3 [ "link-bandwidth:100:0" ] [ "link-bandwidth:100:0" ] match_100_set_linkbw_2G del_linkbw rm_any_zero_bw_set_LocPref_5 prefix-set-1 [ none ] [none] [none] prefix-set-2 [ "100:100", "link-bandwidth:100:2000000000" ] [ "100:100" ] [ "100:100" ] prefix-set-3 [ "link-bandwidth:100:0" ] [ none ] [ none ], localpref=5 -
LocalPreference The prefixes of "prefix-set-3" matching policy "rm_any_zero_bw_set_LocPref_5" should have Local Preference value 5.
All other prefixes, Local Preference should be none or 100 (standard default).
For all other policies, Local Preference should be none or 100 (standard default) -
Regarding prefix-set-3 and policy "nomatch_100_set_linkbw_2G"
- prefix-set-3 is advertised to the DUT with community "link-bandwidth:100:0" set.
- The DUT evaluates a match for "regex_nomatch_as100". This does not match because the regex pattern does not include the link-bandwidth community type.
- Community linkbw_2G should be added.
-
Regarding policy-definition "match_linkbw_0_remove_and_set_localpref_5"
- The link-bandwidth value 0 is interpreted by some implementation as weight "0" in WCMP group. In these implementations the remaining members distribute traffic according to weights.
- Other implementations consider value 0 invalid or not having link-bandwidth. These implementations create ECMP group with all routes including this one, and ignores link-bandwidth of all members - distribute traffic equally.
- This policy intention is to overcome this implementation difference, by deprefering (LocPref) routes with link-bandwidth 0 (only this routes) to prevent them becoming part of multipath, and remove link-bandwidth community so route will not be treated with WCMP behavior.
-
-
-
The below yaml defines the OC paths intended to be covered by this test. OC paths used for test setup are not listed here.
paths:
## Config Parameter Coverage
## Configuration to enable advertise communities to bgp peer
/network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/config/send-community:
## Policy for community-set configuration
/routing-policy/defined-sets/bgp-defined-sets/ext-community-sets/ext-community-set/config/ext-community-set-name:
/routing-policy/defined-sets/bgp-defined-sets/ext-community-sets/ext-community-set/config/ext-community-member:
## Policy action configuration
/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/actions/config/policy-result:
/routing-policy/policy-definitions/policy-definition/statements/statement/actions/bgp-actions/set-ext-community/config/options:
/routing-policy/policy-definitions/policy-definition/statements/statement/actions/bgp-actions/set-community/config/method:
/routing-policy/policy-definitions/policy-definition/statements/statement/actions/bgp-actions/set-ext-community/reference/config/ext-community-set-refs:
/routing-policy/policy-definitions/policy-definition/statements/statement/actions/bgp-actions/config/set-local-pref:
## Policy for community-set match configuration
/routing-policy/policy-definitions/policy-definition/statements/statement/conditions/bgp-conditions/match-ext-community-set/config/ext-community-set:
/routing-policy/policy-definitions/policy-definition/statements/statement/conditions/bgp-conditions/match-ext-community-set/config/match-set-options:
## Policy attachment point configuration
/network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/afi-safis/afi-safi/apply-policy/config/import-policy:
/network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/afi-safis/afi-safi/apply-policy/config/export-policy:
/network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group/apply-policy/config/import-policy:
/network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group/apply-policy/config/export-policy:
## Telemetry Parameter Coverage
/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv4-unicast/neighbors/neighbor/adj-rib-in-post/routes/route/state/ext-community-index:
/network-instances/network-instance/protocols/protocol/bgp/rib/afi-safis/afi-safi/ipv6-unicast/neighbors/neighbor/adj-rib-in-post/routes/route/state/ext-community-index:
rpcs:
gnmi:
gNMI.Subscribe:
vRX - Virtual Router Device
-
Home
- Test Plans
- Authz: General Authz (1-4) tests
- CNTR-2: Container network connectivity tests
- DP-1.2: QoS policy feature config
- DP-1.3: QoS ECN feature config
- DP-1.4: QoS Interface Output Queue Counters
- DP-1.7: One strict priority queue traffic test
- DP-1.8: Two strict priority queue traffic test
- DP-1.9: WRR traffic test
- DP-1.10: Mixed strict priority and WRR traffic test
- DP-1.11: Bursty traffic test
- DP-1.14: QoS basic test
- example-0.1: Topology Test
- FP-1.1: Power admin DOWN/UP Test
- gNMI-1.1: cli Origin
- gNMI-1.2: Benchmarking: Full Configuration Replace
- gNMI-1.3: Benchmarking: Drained Configuration Convergence Time
- gNMI-1.4: Telemetry: Inventory
- gNMI-1.5: Telemetry: Port Speed Test
- gNMI-1.8: Configuration Metadata-only Retrieve and Replace
- gNMI-1.9: Get requests
- gNMI-1.10: Telemetry: Basic Check
- gNMI-1.11: Telemetry: Interface Packet Counters
- gNMI-1.12: Mixed OpenConfig/CLI Origin
- gNMI-1.13: Optics Telemetry, Instant, threshold, and miscellaneous static info
- gNMI-1.14: OpenConfig metadata consistency during large config push
- gNMI-1.15: Set Requests
- gNMI-1.16: fabric redundancy test
- gNMI-1.17: Controller Card redundancy test
- gNMI-1.18: gNMI subscribe with sample mode for backplane capacity counters
- gNMI-1.19: ConfigPush after Control Card switchover
- gNMI-1.20: Telemetry: Optics Thresholds
- gNMI-1.21: Integrated Circuit Hardware Resource Utilization Test
- gNMI-1.22: Controller card port attributes
- gNMI-1.27: gNMI Sample Mode Test
- gNOI-2.1: Packet-based Link Qualification
- gNOI-3.1: Complete Chassis Reboot
- gNOI-3.2: Per-Component Reboot
- gNOI-3.3: Supervisor Switchover
- gNOI-3.4: Chassis Reboot Status and Reboot Cancellation
- gNOI-4.1: Software Upgrade
- gNOI-5.1: Ping Test
- gNOI-5.2: Traceroute Test
- gNOI-5.3: Copying Debug Files
- gNOI-6.1: Factory Reset
- Health-1.1: Generic Health Check
- Health-1.2: Healthz component status paths
- MGT-1: Management HA solution test
- MTU-1.3: Large IP Packet Transmission
- OC-1.2: Default Address Families
- OC-26.1: Network Time Protocol (NTP)
- P4RT-1.1: Base P4RT Functionality
- P4RT-1.2: P4RT Daemon Failure
- P4RT-2.1: P4RT Election
- P4RT-2.2: P4RT Metadata Validation
- P4RT-3.1: Google Discovery Protocol: PacketIn
- P4RT-3.2: Google Discovery Protocol: PacketOut
- P4RT-5.1: Traceroute: PacketIn
- P4RT-5.2: Traceroute Packetout
- P4RT-6.1: Required Packet I/O rate: Performance
- P4RT-7.1: LLDP: PacketIn
- P4RT-7.2: LLDP: PacketOut
- Replay-1.0: Record/replay presession test
- Replay-1.1: Record/replay diff command trees test
- Replay-1.2: P4RT Replay Test
- RT-1.1: Base BGP Session Parameters
- RT-1.2: BGP Policy & Route Installation
- RT-1.3: BGP Route Propagation
- RT-1.4: BGP Graceful Restart
- RT-1.5: BGP Prefix Limit
- RT-1.7: Local BGP Test
- RT-1.10: BGP Keepalive and HoldTimer Configuration Test
- RT-1.11: BGP remove private AS
- RT-1.12: BGP always compare MED
- RT-1.14: BGP Long-Lived Graceful Restart
- RT-1.19: BGP 2-Byte and 4-Byte ASN support
- RT-1.21: BGP TCP MSS and PMTUD
- RT-1.23: BGP AFI SAFI OC DEFAULTS
- RT-1.24: BGP 2-Byte and 4-Byte ASN support with policy
- RT-1.25: Management network-instance default static route
- RT-1.26: Basic static route support
- RT-1.27: Static route to BGP redistribution
- RT-1.28: BGP to IS-IS redistribution
- RT-1.29: BGP chained import/export policy attachment
- RT-1.30: BGP nested import/export policy attachment
- RT-1.32: BGP policy actions - MED, LocPref, prepend, flow-control
- RT-1.33: BGP Policy with prefix-set matching
- RT-1.51: BGP multipath ECMP
- RT-1.52: BGP multipath UCMP support with Link Bandwidth Community
- RT-2.1: Base IS-IS Process and Adjacencies
- RT-2.2: IS-IS LSP Updates
- RT-2.6: IS-IS Hello-Padding enabled at interface level
- RT-2.7: IS-IS Passive is enabled at interface level
- RT-2.8: IS-IS metric style wide not enabled
- RT-2.9: IS-IS metric style wide enabled
- RT-2.10: IS-IS change LSP lifetime
- RT-2.11: IS-IS Passive is enabled at the area level
- RT-2.12: Static route to IS-IS redistribution
- RT-2.13: Weighted-ECMP for IS-IS
- RT-2.14: IS-IS Drain Test
- RT-3.1: Policy based VRF selection
- RT-3.2: Multiple <Protocol, DSCP> Rules for VRF Selection
- RT-4.10: AFTs Route Summary
- RT-5.1: Singleton Interface
- RT-5.2: Aggregate Interfaces
- RT-5.3: Aggregate Balancing
- RT-5.4: Aggregate Forwarding Viable
- RT-5.5: Interface hold-time
- RT-5.6: Interface Loopback mode
- RT-5.8: IPv6 Link Local
- RT-5.9: Disable IPv6 ND Router Arvetisment
- RT-5.10: IPv6 Link Local generated by SLAAC
- RT-6.1: Core LLDP TLV Population
- RT-7.1: BGP default policies
- RT-7.2: BGP Policy Community Set
- RT-7.3: BGP Policy AS Path Set
- RT-7.4: BGP Policy AS Path Set and Community Set
- RT-7.5: BGP Policy - Match and Set Link Bandwidth Community
- RT-7.8: BGP Policy Match Standard Community and Add Community Import/Export Policy
- RT-7.11: BGP Policy - Import/Export Policy Action Using Multiple Criteria
- SEC-3.1: Authentication
- SFLOW-1: sFlow Configuration and Sampling
- System-1: System testing
- TE-1.1: Static ARP
- TE-1.2: My Station MAC
- TE-2.1: gRIBI IPv4 Entry
- TE-2.2: gRIBI IPv4 Entry With Aggregate Ports
- TE-3.1: Base Hierarchical Route Installation
- TE-3.2: Traffic Balancing According to Weights
- TE-3.3: Hierarchical weight resolution
- TE-3.5: Ordering: ACK Received
- TE-3.6: ACK in the Presence of Other Routes
- TE-3.7: Base Hierarchical NHG Update
- TE-3.31: Hierarchical weight resolution with PBF
- TE-4.1: Base Leader Election
- TE-4.2: Persistence Mode
- TE-5.1: gRIBI Get RPC
- TE-6.1: Route Removal via Flush
- TE-6.2: Route Removal In Non Default VRF
- TE-8.1: DUT Daemon Failure
- TE-8.2: Supervisor Failure
- TE-9.1: FIB FAILURE DUE TO HARDWARE RESOURCE EXHAUST
- TE-9.2: MPLS based forwarding Static LSP
- TE-9: gRIBI MPLS Compliance
- TE-10: gRIBI MPLS Forwarding
- TE-11.1: Backup NHG: Single NH
- TE-11.2: Backup NHG: Multiple NH
- TE-11.3: Backup NHG: Actions
- TE-11.21: Backup NHG: Multiple NH with PBF
- TE-11.31: Backup NHG: Actions with PBF
- TE-13.1: gRIBI route ADD during Failover
- TE-13.2: gRIBI route DELETE during Failover
- TE-14.1: gRIBI Scaling
- TE-14.2: encap and decap scale
- TE-15.1: gRIBI Compliance
- TE-16.1: basic encapsulation tests
- TE-16.2: encapsulation FRR scenarios
- TE-17.1: VRF selection policy driven TE
- TR-6.1: Remote Syslog feature config
- TRANSCEIVER-1: Telemetry: 400ZR Chromatic Dispersion(CD) telemetry values streaming
- TRANSCEIVER-3: Telemetry: 400ZR Optics firmware version streaming
- TRANSCEIVER-4: Telemetry: 400ZR RX input and TX output power telemetry values streaming.
- TRANSCEIVER-5: Configuration: 400ZR channel frequency, output TX launch power and operational mode setting.
- TRANSCEIVER-6: Telemetry: 400ZR Optics performance metrics (pm) streaming.
- TRANSCEIVER-7: Telemetry: 400ZR Optics inventory info streaming
- TRANSCEIVER-8: Telemetry: 400ZR Optics module temperature streaming.
- TRANSCEIVER-9: Telemetry: 400ZR TX laser bias current telemetry values streaming.
- TRANSCEIVER-10: Telemetry: 400ZR Optics FEC(Forward Error Correction) Uncorrectable Frames Streaming.
- TRANSCEIVER-11: Telemetry: 400ZR Optics logical channels provisioning and related telemetry.
- TRANSCEIVER-12: Telemetry: 400ZR Transceiver Supply Voltage streaming.
- TRANSCEIVER-13: Configuration: 400ZR Transceiver Low Power Mode Setting.
- TUN-1.4: Interface based IPv6 GRE Encapsulation
- TUN-1.9: GRE inner packet DSCP
- Test Plans