Skip to content

Comments

Add per-member multicast source filtering#924

Open
zeeshanlakhani wants to merge 4 commits intomasterfrom
zl/filter-mcast-srcs
Open

Add per-member multicast source filtering#924
zeeshanlakhani wants to merge 4 commits intomasterfrom
zl/filter-mcast-srcs

Conversation

@zeeshanlakhani
Copy link
Contributor

@zeeshanlakhani zeeshanlakhani commented Jan 20, 2026

Implements IGMPv3/MLDv2-based source filtering for multicast subscriptions at two levels:

  • Subscription:: Each member's SourceFilter checked on delivery
  • Forwarding: Aggregated member filters (union) checked before forwarding to a sled

This work includes:

  • 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

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.

@zeeshanlakhani zeeshanlakhani force-pushed the zl/filter-mcast-srcs branch 4 times, most recently from 491d3e0 to 42e42bc Compare January 21, 2026 07:00
@zeeshanlakhani zeeshanlakhani marked this pull request as ready for review January 21, 2026 07:11
Copy link
Collaborator

@FelixMcFelix FelixMcFelix left a comment

Choose a reason for hiding this comment

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

I think this is looking good. Some comments on the intended use of next-hops and some nits.

@zeeshanlakhani zeeshanlakhani self-assigned this Feb 19, 2026
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
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).
Copy link
Collaborator

@FelixMcFelix FelixMcFelix left a comment

Choose a reason for hiding this comment

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

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.

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