Skip to content

[multicast, refactor]: add ddm-peers omdb view, shift member writes to mg-lower#10346

Open
zeeshanlakhani wants to merge 1 commit into
zl/multicast-m2p-forwardingfrom
zl/multicast-mgd-ddm
Open

[multicast, refactor]: add ddm-peers omdb view, shift member writes to mg-lower#10346
zeeshanlakhani wants to merge 1 commit into
zl/multicast-m2p-forwardingfrom
zl/multicast-mgd-ddm

Conversation

@zeeshanlakhani

@zeeshanlakhani zeeshanlakhani commented Apr 30, 2026

Copy link
Copy Markdown
Collaborator

This PR stacks atop #10070 and inherits the multicast-to-physical (M2P) underlay forwarding and VMM-keyed instance subscription endpoints.

Under RFD 488 (incoming changes), and akin to unicast tunnel routes, mg-lower and ddmd derive underlay members directly from DDM peer subscriptions, so Nexus no longer resolves live sled-to-switch-port from inventory or DDM peers. The DDM client, instead, becomes a read-only peer view, and the reconciler's member->"Joined" path is a pure DB CAS plus best-effort sled-agent propagation, decoupled from MGS, the switch zone, and DPD member updates.

Includes:

  • Adds the omdb nexus multicast ddm-peers view backed by the read-only DDM client, with a new internal-dns resolver helper (lookup_all_socket_v6_by_target) so per-switch clients correlate sockets back to their SRV targets
  • Adds reconciler config knobs to MulticastGroupReconcilerConfig: group_concurrency_limit, member_concurrency_limit, and orphan_grace_secs (grace before an orphaned empty "Creating" group is reaped), wired through the example, SMF, and test configs
  • Shifts underlay member writes to mg-lower, trimming the reconciler's member state machine and switch-zone coordination accordingly
  • Splits the multicast dataplane client into focused modules: mrib.rs for per-pass MRIB route reconciliation and switch_zone.rs for the MGD/DDM switch-zone clients, leaving dataplane.rs to DPD group operations
  • Adds schema migration multicast-member-origin (schema version 267): a new multicast_group_member_origin enum (static / igmp_snooped) and a membership_origin column on multicast group members defaulting to static. Groundwork for the RFD 488 static and IGMP/MLD paths, distinguishing which rows a future soft-state reaper may expire
  • Aligns the simulated sled-agent's set_mcast_fwd with real OPTE's additive next-hop semantics, and reads back through the list_mcast_fwd API in the multi-sled test
    • Also, the sled-agent multicast membership API was renamed instance_join/leave_multicast_groupvmm_join/leave_multicast_group (for sim + client/HTTP surface).
  • Corrects stale reconciler, switch-zone, and API-version docs throughout
  • Documents the test boundary: coverage stops at the Omicron-owned edge, while
    DDM exchange and DPD member programming are maghemite/dendrite's domain
  • Cleans up the now-dead inventory-based test scaffolding

@zeeshanlakhani zeeshanlakhani force-pushed the zl/multicast-mgd-ddm branch 6 times, most recently from 15e64aa to 92d912b Compare May 1, 2026 16:06
@zeeshanlakhani zeeshanlakhani self-assigned this May 2, 2026
@zeeshanlakhani zeeshanlakhani requested review from internet-diglett and jgallagher and removed request for jgallagher May 2, 2026 08:16
@zeeshanlakhani zeeshanlakhani force-pushed the zl/multicast-m2p-forwarding branch 3 times, most recently from 44e7675 to ef44f19 Compare May 7, 2026 12:05
@zeeshanlakhani zeeshanlakhani force-pushed the zl/multicast-mgd-ddm branch 2 times, most recently from 76d0d3f to 0e64f2d Compare May 26, 2026 10:02
…o mg-lower

Under RFD 488 (incoming changes), and akin to unicast tunnel routes, mg-lower
and ddmd derive underlay members directly from DDM peer subscriptions, so Nexus
no longer resolves live sled-to-switch-port from inventory or DDM peers. The DDM
client, instead, becomes a read-only peer view, and the reconciler's
member->"Joined" path is a pure DB CAS plus best-effort sled-agent propagation,
decoupled from MGS, the switch zone, and DPD member updates.

Includes:

- Adds the `omdb nexus multicast ddm-peers` view backed by the read-only DDM
  client, with a new internal-dns resolver helper (`lookup_all_socket_v6_by_target`)
  so per-switch clients correlate sockets back to their SRV targets
- Adds reconciler config knobs to `MulticastGroupReconcilerConfig`:
  `group_concurrency_limit`, `member_concurrency_limit`, and `orphan_grace_secs`
  (grace before an orphaned empty "Creating" group is reaped), wired through the
  example, SMF, and test configs
- Shifts underlay member writes to mg-lower, trimming the reconciler's
  member state machine and switch-zone coordination accordingly
- Splits the multicast dataplane client into focused modules: `mrib.rs` for
  per-pass MRIB route reconciliation and `switch_zone.rs` for the MGD/DDM
  switch-zone clients, leaving `dataplane.rs` to DPD group operations
- Adds schema migration `multicast-member-origin` (schema version 267): a new
  `multicast_group_member_origin` enum (`static` / `igmp_snooped`) and a
  `membership_origin` column on multicast group members defaulting to `static`.
  Groundwork for the RFD 488 static and IGMP/MLD paths, distinguishing which
  rows a future soft-state reaper may expire
- Aligns the simulated sled-agent's `set_mcast_fwd` with real OPTE's additive
  next-hop semantics, and reads back through the `list_mcast_fwd` API in the
  multi-sled test
  - Also, the sled-agent multicast membership API was renamed
  `instance_join/leave_multicast_group` → `vmm_join/leave_multicast_group`
  (for sim + client/HTTP surface).
- Corrects stale reconciler, switch-zone, and API-version docs throughout
- Documents the test boundary: coverage stops at the Omicron-owned edge, while
  DDM exchange and DPD member programming are maghemite/dendrite's domain
- Cleans up the now-dead inventory-based test scaffolding
@zeeshanlakhani zeeshanlakhani changed the title [multicast] connect MGD and DDM to Omicron [multicast, refactor]: add ddm-peers omdb view, shift member writes to mg-lower Jun 16, 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