Skip to content

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 3 times, most recently from 275e35c to 491d3e0 Compare January 20, 2026 18:46
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
@zeeshanlakhani zeeshanlakhani marked this pull request as ready for review January 21, 2026 07:11
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