Skip to content

[testing, multicast] Extend commtest with multicast end-to-end coverage - #11118

Open
zeeshanlakhani wants to merge 5 commits into
zl/probe-multicastfrom
zl/mcast-e2e-commtest
Open

[testing, multicast] Extend commtest with multicast end-to-end coverage#11118
zeeshanlakhani wants to merge 5 commits into
zl/probe-multicastfrom
zl/mcast-e2e-commtest

Conversation

@zeeshanlakhani

@zeeshanlakhani zeeshanlakhani commented Aug 20, 2026

Copy link
Copy Markdown
Collaborator

This new multicast phase supports repeatable --mcast-group arguments with optional source filters, plus --mcast-deny-group arguments for negative source-filter tests. It creates or reuses the required multicast IP pools, enrolls probes during creation, sends ICMP multicast traffic from the host's external address, and verifies delivery and replication to every member.

The "commtest" writes multicast-connectivity-report.json with per-group and per-member delivery statistics.

Includes:

  • Adds multicast and source-filter CLI parsing and validation.
  • Partitions multicast pools into valid ASM/SSM ranges around the IPv4 SSM block.
  • Makes multicast pool and range setup idempotent, including existing and partially overlapping ranges.
  • Recreates stale probes when their desired multicast memberships are missing or differ.
  • Adds multicast ICMP helpers with:
    • per-member reply accounting,
    • multicast TTL/hop configuration,
    • source and reply validation,
    • late-reply draining and quiescence detection,
    • and sender self-delivery detection.
  • Adds positive delivery and negative source-filter denial expectations.
  • Adds parser, pool partitioning, range coverage, and ICMP reply-classification unit tests
  • We update the a4x2 deployment job as well (though we're moving to https://github.com/oxidecomputer/voxel anyway).

@zeeshanlakhani zeeshanlakhani changed the title Extend commtest with multicast end-to-end coverage. Extend commtest with multicast end-to-end coverage Aug 20, 2026
socket2's set_multicast_ttl_v4 passes the TTL as a four-byte c_int, which
illumos rejects with EINVAL because IP_MULTICAST_TTL must be a single byte
(uchar_t). The multicast pinger now sets the option directly via libc on
illumos and keeps the socket2 path on other platforms.
…bing

commtest gains a multicast phase driven by --mcast-group: it sends from
the host external address, asserts per-group delivery and replication,
and writes multicast-connectivity-report.json. The icmp helpers grow the
mcast echo scaffolding it uses. The a4x2-deploy job adds per-group host
egress routes and mirrors external groups to both switch-facing sidecars,
since the elected switch is not knowable at setup time.
@zeeshanlakhani zeeshanlakhani changed the title Extend commtest with multicast end-to-end coverage [testing, multicast] Extend commtest with multicast end-to-end coverage Aug 21, 2026
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