Skip to content

test(evpn): add FRR preference-DF interop#497

Draft
lance0 wants to merge 1 commit into
mainfrom
test/evpn-preference-df-frr
Draft

test(evpn): add FRR preference-DF interop#497
lance0 wants to merge 1 commit into
mainfrom
test/evpn-preference-df-frr

Conversation

@lance0

@lance0 lance0 commented Jun 14, 2026

Copy link
Copy Markdown
Owner

Summary

  • add M69, a rustbgpd ↔ FRR 10.3.1 EVPN preference-DF interop smoke
  • extend the shared FRR EVPN-MH startup helper with an optional evpn mh es-df-pref argument
  • wire M69 into hosted kernel-dataplane CI and true up INTEROP/ROADMAP/CHANGELOG plus stale M49 comments

Proof

M69 uses VNI 200 where default modulo carving would elect rustbgpd (lower IP). rustbgpd advertises Highest-Preference with df_preference = 100; FRR advertises evpn mh es-df-pref 200. The test asserts:

  • both peers exchange Type 4 ES routes
  • rustbgpd decodes FRR's raw DF Election extended community as Highest-Preference / preference 200
  • rustbgpd settles NonDF and DF=0
  • FRR reports itself DF with local preference 200 and remote rustbgpd preference 100

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.sh
  • git diff --check
  • containerlab deploy -t tests/interop/m69-evpn-preference-df-frr.clab.yml
  • bash tests/interop/scripts/test-m69-evpn-preference-df-frr.sh → 8/8 passed
  • containerlab destroy -t tests/interop/m69-evpn-preference-df-frr.clab.yml --cleanup
  • cargo fmt --all -- --check
  • cargo clippy --workspace --all-targets -- -D warnings
  • RUSTDOCFLAGS='-D warnings' cargo doc --workspace --no-deps

Linear: LAN-30

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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
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.

2 participants