Skip to content

Add L3VNI host mobility test cases (L3VNI_dci:59, 60, 62, 63)#16

Open
bpar9 wants to merge 1 commit intomasterfrom
devin/1775089190-l3vni-dci-testcases
Open

Add L3VNI host mobility test cases (L3VNI_dci:59, 60, 62, 63)#16
bpar9 wants to merge 1 commit intomasterfrom
devin/1775089190-l3vni-dci-testcases

Conversation

@bpar9
Copy link
Copy Markdown
Owner

@bpar9 bpar9 commented Apr 2, 2026

Description of PR

Summary: Adds four new L3VNI host mobility test cases to the VXLAN DCI test suite, covering host movement scenarios with L3VNI cross-DC traffic validation.

New test cases:

Test ID Method Scenario
L3VNI_dci:59 test_base_dci_l3vni_host_mobility_within_dc Orphan host move within DC (DC1-L0 → DC1-L1)
L3VNI_dci:60 test_base_dci_l3vni_host_mobility_across_dci Orphan host move across DCI (DC1-L0 → DC2-L0)
L3VNI_dci:62 test_base_dci_l3vni_host_mobility_orphan_to_mh Orphan to multi-homed port within DC
L3VNI_dci:63 test_base_dci_l3vni_host_mobility_mh_to_mh_across_dci MH to MH port across DCI

Key addition: verify_l3vni_host_mobility_dci() — a shared 10-phase helper that combines the existing MAC move infrastructure with L3VNI traffic verification (learn → verify MAC → verify L3 traffic → move → verify MAC seq → verify L3 traffic → move back → verify MAC seq → verify L3 traffic → cleanup).

Only test_vxlan_dci.py is modified. No changes to vxlan_helper.py — existing helpers (verify_mac_seq, verify_traffic, etc.) are sufficient.

Type of change

  • Bug fix
  • Testbed and Framework(new/improvement)
  • New Test case
    • Skipped for non-supported platforms
  • Test case improvement

Back port request

  • 202205
  • 202305
  • 202311
  • 202405
  • 202411
  • 202505
  • 202511

Approach

What is the motivation for this PR?

Enable L3VNI host mobility test coverage for the VXLAN DCI solution per the DCI Solution Testplan (L3VNI_dci:59, 60, 62, 63). These scenarios validate that L3VNI cross-DC traffic correctly converges to the new host location after MAC moves.

How did you do it?

  • Added 4 new move_dir entries (l3vni_orphan_within_dc, l3vni_orphan_across_dc, l3vni_orphan_to_mh_within_dc, l3vni_mh_to_mh_across_dc) to the move_config, _MAC_SUFFIX, and _MOVE_BAND dictionaries to define node mappings, unique MAC addresses, and IP bands for each scenario.
  • Updated _get_dci_mh_expected_nodes() to handle the new MH-related move directions.
  • Implemented verify_l3vni_host_mobility_dci() following the existing verify_mac_move_dci() 9-phase pattern, extending it with L3VNI traffic verification at phases 3, 6, and 9.
  • Added four test methods that call the shared helper with appropriate parameters.

How did you verify/test it?

  • python3 -m py_compile passes (no syntax errors)
  • flake8 --select=E9,F63,F7,F82 shows only pre-existing F824 warnings (unused globals in the original code)
  • Functional verification requires the 3-DC EVPN-VXLAN testbed with IXIA traffic generation

⚠️ Items for reviewer attention

  1. l3vni_orphan_to_mh_within_dc has dest1_node == dest2_node == 'leaf0_dc1' — the move is from an orphan port to a PortChannel on the same leaf pair (differentiated by dest2_prefer_pc=True). Please confirm this matches the testplan intent for L3VNI_dci:62.

  2. _MOVE_BAND spacing — values are 50, 60, 70, 75. The last entry breaks the 10-octet spacing pattern. Please verify band 75 won't overlap with band 70 given the logic in _dci_mm_host_last_octets().

  3. All four tests use host_type="mac+ipv4" — confirm this is correct for all L3VNI scenarios or whether any should use mac+ipv6.

  4. L3VNI_dci:59 (within-DC) uses l3_traffic_scope='cross' — verify that cross-DC L3VNI streams are the correct traffic to validate for a within-DC host move.

  5. mm_handles key access — The helper directly accesses keys like src1_stream_handle, dest1_handle, mm_host without .get(). If get_stream_handles_dci() doesn't populate these for the new move directions, tests will hit KeyError at runtime.

Any platform specific information?

Requires 3-DC EVPN-VXLAN topology with BGW spines and IXIA traffic generation (spytest framework).

Supported testbed topology if it's a new test case?

3-datacenter EVPN-VXLAN DCI topology (DC1: 4 leafs + 2 spines + 2 BGW spines, DC2: 2 leafs + 2 BGW spines, DC3: 1 leaf + 1 BGW spine).

Documentation

Test cases are documented in DCI_Solution_Testplan.xlsx (L3VNI_dci:59, 60, 62, 63).

Link to Devin session: https://cisco-demo.devinenterprise.com/sessions/61b3aeaa669d43f18dfd488a3991c980
Requested by: @bpar9

- Add verify_l3vni_host_mobility_dci() helper method combining MAC move
  mechanics with L3VNI cross-DC traffic verification (10-phase pattern)
- Add test_base_dci_l3vni_host_mobility_within_dc (L3VNI_dci:59)
- Add test_base_dci_l3vni_host_mobility_across_dci (L3VNI_dci:60)
- Add test_base_dci_l3vni_host_mobility_orphan_to_mh (L3VNI_dci:62)
- Add test_base_dci_l3vni_host_mobility_mh_to_mh_across_dci (L3VNI_dci:63)
- Add new move_dir configurations for L3VNI scenarios
- Update _get_dci_mh_expected_nodes for new move directions
@devin-ai-integration
Copy link
Copy Markdown

🤖 Devin AI Engineer

I'll be helping with this pull request! Here's what you should know:

✅ I will automatically:

  • Address comments on this PR. Add '(aside)' to your comment to have me ignore it.
  • Look at CI failures and help fix them

Note: I can only respond to comments from users who have write access to this repository.

⚙️ Control Options:

  • Disable automatic comment and CI monitoring

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant