Add L3VNI DCI test cases: TC48, TC54, TC55, TC56#20
Open
bpar9 wants to merge 1 commit into
Open
Conversation
- TC48 (test_base_dci_l3vni_external_intf_flap): External router interface shut/no-shut flap test with VRF-lite eBGP peering validation - TC54 (test_base_dci_l3vni_line_rate_performance): Line rate L3VNI traffic across DCI for 1 hour with 0-loss and latency verification - TC55 (test_base_dci_l3vni_convergence_time): Convergence time measurement parametrized over link_shut/bgp_clear/bgw_reboot/process_kill_bgp triggers - TC56 (test_base_dci_l3vni_imix_traffic): IMIX traffic pattern (64B/512B/1518B) with per-frame-size latency thresholds Helper functions added to vxlan_helper.py: - snapshot_interface_counters: Capture DUT interface error/drop counters - compare_interface_counters: Compute counter deltas between snapshots - compute_convergence_ms: Calculate convergence time from Ixia stats - get_traffic_item_stats: Get detailed per-stream traffic statistics - pick_cross_dc_l3_stream: Select cross-DC L3 stream from tgen handles
🤖 Devin AI EngineerI'll be helping with this pull request! Here's what you should know: ✅ I will automatically:
Note: I can only respond to comments from users who have write access to this repository. ⚙️ Control Options:
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description of PR
Summary: Adds 4 new cross-DC L3VNI test cases from the DCI Solution Testplan, plus supporting helper functions in
vxlan_helper.py.Test cases added to
test_vxlan_dci.py(inTestVxlanDCIBase):test_base_dci_l3vni_external_intf_flap): External router interface shut/no-shut flap test. Configures VRF-lite eBGP peering (same as TC47), runs continuous traffic, flaps the ext-facing interface 3× with 15s hold, verifies BGP re-establishment and traffic recovery. Parametrized for IPv4/IPv6.test_base_dci_l3vni_line_rate_performance): Runs cross-DC L3VNI traffic at 100% line rate for 1 hour. Verifies 0% loss and max latency ≤ 100µs. Includes periodic core-file health checks.test_base_dci_l3vni_convergence_time): Measures convergence time after trigger events. Parametrized over:link_shut(≤50ms),bgp_clear(≤500ms),bgw_reboot(≤30s),process_kill_bgp(≤5s).test_base_dci_l3vni_imix_traffic): IMIX traffic pattern (64B weight-7, 512B weight-4, 1518B weight-1) for 5 minutes with per-frame-size latency thresholds.Helper functions added to
vxlan_helper.py:snapshot_interface_counters/compare_interface_counters: Capture and diff DUT interface error/drop counterscompute_convergence_ms: Calculate convergence time from Ixia traffic stats (prefersloss_duration_us, falls back to frames_lost/PPS)get_traffic_item_stats: Detailed per-stream stats (tx/rx pkts, PPS, loss%, latency)pick_cross_dc_l3_stream: Select a cross-DC L3 stream from tgen handlesNote: TC47 and TC49 (external router IPv4/IPv6 connectivity) already exist as
test_base_dci_l3vni_external_connectivity.Type of change
Back port request
Approach
What is the motivation for this PR?
Expand cross-DC L3VNI DCI test coverage to include interface flap resilience and performance/convergence benchmarking.
How did you do it?
Followed existing test patterns in
TestVxlanDCIBase(e.g.,test_base_dci_l3vni_external_connectivityfor TC48 setup, existing traffic verification patterns for performance tests). All tests callreport_result(), usest.banner()/st.log()conventions, and perform core-file checks.How did you verify/test it?
py_compile) passes for both filesAny platform specific information?
Requires IXIA (IxNetwork) traffic generator and the 3-DC EVPN-VXLAN DCI topology.
Supported testbed topology if it's a new test case?
3-datacenter EVPN-VXLAN DCI fabric: DC1 (4 leafs + 2 spines + 2 BGW spines), DC2 (2 leafs + 2 BGW spines), DC3 (1 leaf + 1 BGW spine), with external router connected to DC1/DC2 leaves.
Documentation
Refer to DCI_Solution_Testplan.xlsx for test case specifications.
Reviewer Notes — Areas to scrutinize
snapshot_interface_countersparsing logic (vxlan_helper.py): The counter parsing searches for header-like strings (RX_ERR,TX_DRP) in data rows — verify this matches actual SONiCshow interfaces countersoutput format on target devices.test_base_dci_l3vni_external_connectivity. Consider whether a shared setup helper would be better.link_shut ≤ 50msis aggressive — verify this is achievable on target hardware/topology.get_traffic_item_statsassumesavg_delay/max_delayare in nanoseconds (divides by 1000 for µs). Confirm this matches the IxNetwork version in use.st.vtysh()/st.config()directly for trigger actions rather thanvxlan_obj.config_dut()— intentional for simplicity but worth noting for consistency.Link to Devin session: https://cisco-demo.devinenterprise.com/sessions/1849ed21f9c04ca1a02f8329683d1afd
Requested by: @bpar9