[probe,multicast] enroll probes as mcast group members#10520
Open
zeeshanlakhani wants to merge 1 commit into
Open
[probe,multicast] enroll probes as mcast group members#10520zeeshanlakhani wants to merge 1 commit into
zeeshanlakhani wants to merge 1 commit into
Conversation
5122670 to
e4cafa3
Compare
This extends multicast group membership to include probes. Previously, only instances could be members of a multicast group, so much of the work is mechanical: updating the datastore, RPW, and API to handle a polymorphic enum. This introduces `Probe` as a second "parent kind", with membership fixed at probe creation. ## API surface A new version PROBE_MULTICAST (2026-05-26) reshapes the `MulticastGroupMember` view from a single `instance_id` field to one with a `kind` discriminator plus polymorphic `parent_id`. `ProbeCreate.multicast_groups` takes `Vec<MulticastGroupJoinSpec>`, the same shape as instance joins, so probes and instances share one input form. ## Datastore The `multicast_group_member` table carries a `parent_kind` column (`'instance' | 'probe'`) backfilled to `'instance'` for pre-existing rows and prior versions of the API. The unique constraint is rebuilt as `(external_group_id, parent_kind, parent_id)`. We move to a new schema version in this work ~ `multicast-member-parent-kind`. ## Reconciler The RPW reconciler dispatches on `(parent_kind, state)`. Instance-parented members traverse the VMM-bound state machine and issue sled-agent RPCs to update OPTE multicast subscriptions on midlife join/leave. Probe-parented members skip those RPCs, as probes have no runtime update path, and the multicast subscription set is delivered in the initial probe-create payload (new in this PR). The probe path still runs the lifecycle state machine to drive dataplane teardown on probe-delete. ## Sled-agent Sled-agent API v42 (`probe_multicast_groups`) extends `ProbeCreate` with `multicast_groups: Vec<InstanceMulticastMembership>`. The probe manager applies the subscriptions to the OPTE port during zone provisioning, while empty groups (the default) preserve pre-version behavior.
e4cafa3 to
04c7105
Compare
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.
This extends multicast group membership to include probes. Previously, only instances could be members of a multicast group, so much of the work is mechanical: updating the datastore, RPW, and API to handle a polymorphic enum. This introduces
Probeas a second "parent kind", with membership fixed at probe creation.API surface
A new version PROBE_MULTICAST (2026-05-26) reshapes the
MulticastGroupMemberview from a singleinstance_idfield to one with akinddiscriminator plus polymorphicparent_id.ProbeCreate.multicast_groupstakesVec<MulticastGroupJoinSpec>, the same shape as instance joins, so probes and instances share one input form.Datastore
The
multicast_group_membertable carries aparent_kindcolumn ('instance' | 'probe') backfilled to'instance'for pre-existing rows and prior versions of the API. The unique constraint is rebuilt as(external_group_id, parent_kind, parent_id).We move to a new schema version in this work ~
multicast-member-parent-kind.Reconciler
The RPW reconciler dispatches on
(parent_kind, state). Instance-parented members traverse the VMM-bound state machine and issue sled-agent RPCs to update OPTE multicast subscriptions on midlife join/leave. Probe-parented members skip those RPCs, as probes have no runtime update path, and the multicast subscription set is delivered in the initial probe-create payload (new in this PR). The probe path still runs the lifecycle state machine to drive dataplane teardown on probe-delete.Sled-agent
Sled-agent API v42 (
probe_multicast_groups) extendsProbeCreatewithmulticast_groups: Vec<InstanceMulticastMembership>. The probe manager applies the subscriptions to the OPTE port during zone provisioning, while empty groups (the default) preserve pre-version behavior.