Add per-member multicast source filtering#924
Open
zeeshanlakhani wants to merge 4 commits intomasterfrom
Open
Conversation
491d3e0 to
42e42bc
Compare
Collaborator
FelixMcFelix
left a comment
There was a problem hiding this comment.
I think this is looking good. Some comments on the intended use of next-hops and some nits.
3a42030 to
0ac8d82
Compare
Implements IGMPv3/MLDv2-based source filtering for multicast subscriptions, including:
- SourceFilter and FilterMode types in oxide-vpc API
- Fast-path optimization for EXCLUDE() (accept all) case
- Per-member/port filtering on both Tx and Rx paths
- Per-next-hop forwarding filtering: Check aggregated SourceFilter before
forwarding to each remote sled
- Allows skipping forwarding to sleds where no subscriber would accept the packet
- This will involve additions to Omicron, but we have to do that anyway for OPTE changes
- DTrace probe and stats for filtered/filtered-out packets
- Benchmark(s) and integration tests
- This PR also includes optimizations to the xde test suite setup for mcast
- Note: Contains an API bump
- Minor: clippy test cleanup
0ac8d82 to
f8efca5
Compare
f8efca5 to
befe65c
Compare
This aligns us with the current updates on master, addresses reviewer feedback, and adds dump_m2p ioctl (which is needed in Omicron, as I've been working on that code).
befe65c to
028f8b1
Compare
FelixMcFelix
approved these changes
Feb 23, 2026
Collaborator
FelixMcFelix
left a comment
There was a problem hiding this comment.
Looks good to me, comment nit aside! Keep in mind we'll want to hold merging this until R19 is cut, to keep any image shenanigans out of the critical path if we need to push urgent fixes.
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.
Implements IGMPv3/MLDv2-based source filtering for multicast subscriptions at two levels:
SourceFilterchecked on deliveryThis work includes:
forwarding to each remote sled
We can't really afford (stages, etc) to do this source filtering on the Tofino switch (currently), as it has to happen post-replication, which happens at the Egress portion pipeline of the sidecar. So, it makes sense to handle this in OPTE at the moment.