test(evpn): add FRR preference-DF interop#497
Draft
lance0 wants to merge 1 commit into
Draft
Conversation
There was a problem hiding this comment.
Pull request overview
Adds a new cross-vendor EVPN multi-homing interop smoke (M69) to validate RFC 9785 Highest-Preference DF election between rustbgpd and FRR, and wires it into hosted CI while updating interop documentation/changelog.
Changes:
- Introduce M69 containerlab topology + driver script covering rustbgpd ↔ FRR 10.3.1 preference-DF interop.
- Extend the shared FRR EVPN-MH startup helper to optionally configure
evpn mh es-df-pref. - Update CI (
kernel-dataplane), INTEROP/ROADMAP/CHANGELOG, and clarify M49 commentary now that FRR interop is covered by M69.
Reviewed changes
Copilot reviewed 11 out of 11 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| tests/interop/scripts/test-m69-evpn-preference-df-frr.sh | New M69 smoke test script asserting Type4 exchange, extcomm decode, and DF/NonDF outcomes across rustbgpd↔FRR. |
| tests/interop/scripts/test-m49-evpn-preference-df.sh | Updates comments to point cross-vendor coverage to M69. |
| tests/interop/scripts/start-frr-vtep-mh.sh | Adds optional DF preference argument and applies/removes evpn mh es-df-pref during dynamic config. |
| tests/interop/m69-evpn-preference-df-frr.clab.yml | New containerlab topology for rustbgpd↔FRR preference-DF interop. |
| tests/interop/m49-evpn-preference-df.clab.yml | Updates comments to reference M69 for FRR interop. |
| tests/interop/configs/rustbgpd-m69-pe1.toml | New rustbgpd config for M69 PE1 (df_preference=100, highest-preference). |
| tests/interop/configs/frr-bgpd-m69-pe2.conf | New FRR config for M69 PE2 including evpn mh es-df-pref 200. |
| ROADMAP.md | Marks the FRR cross-vendor preference-DF smoke as covered by M69. |
| docs/INTEROP.md | Adds M69 to the hosted kernel-dataplane CI list and interop matrix. |
| CHANGELOG.md | Documents the new M69 FRR interop proof. |
| .github/workflows/kernel-dataplane.yml | Adds an M69 job to run the new topology/script in hosted CI. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Comment on lines
32
to
34
| if [ $# -lt 4 ]; then | ||
| echo "usage: start-frr-vtep-mh.sh <loopback-ip> <vni> <es-id> <es-sys-mac>" >&2 | ||
| echo "usage: start-frr-vtep-mh.sh <loopback-ip> <vni> <es-id> <es-sys-mac> [df-pref]" >&2 | ||
| exit 1 |
Comment on lines
+147
to
+150
| dump_debug() { | ||
| echo "--- rustbgpd Type 4 routes ---" >&2 | ||
| grpc_list_type4 >&2 || true | ||
| echo "--- rustbgpd evpn_df_role metrics ---" >&2 |
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.
Summary
evpn mh es-df-prefargumentProof
M69 uses VNI 200 where default modulo carving would elect rustbgpd (lower IP). rustbgpd advertises Highest-Preference with
df_preference = 100; FRR advertisesevpn mh es-df-pref 200. The test asserts:Local verification
bash -n tests/interop/scripts/test-m69-evpn-preference-df-frr.sh tests/interop/scripts/start-frr-vtep-mh.sh tests/interop/scripts/test-m49-evpn-preference-df.shgit diff --checkcontainerlab deploy -t tests/interop/m69-evpn-preference-df-frr.clab.ymlbash tests/interop/scripts/test-m69-evpn-preference-df-frr.sh→ 8/8 passedcontainerlab destroy -t tests/interop/m69-evpn-preference-df-frr.clab.yml --cleanupcargo fmt --all -- --checkcargo clippy --workspace --all-targets -- -D warningsRUSTDOCFLAGS='-D warnings' cargo doc --workspace --no-depsLinear: LAN-30