Skip to content

Commit 98e9742

Browse files
[multicast] M2P forwarding, OPTE port subscription, and sled-agent propagation
Complete the multicast data path by adding per-sled M2P (multicast-to- physical) mapping, forwarding entry management, and OPTE port subscription for multicast group members. Sled-agent: - Add `multicast_subscribe` / `multicast_unsubscribe` endpoints (API v29) that configure M2P, forwarding, and OPTE port subscription for a VMM - OPTE port_manager gains set/clear operations for M2P and forwarding - Port subscription cleanup on PortTicket release Nexus: - New `sled.rs` (MulticastSledClient) encapsulating all sled-agent multicast interactions: subscribe/unsubscribe, M2P/forwarding propagation and teardown - Groups RPW propagates M2P and forwarding entries to all member sleds after DPD configuration, with convergent retry on failure - Members RPW uses MemberReconcileCtx to thread shared reconciliation state. This handles subscribe on join, unsubscribe on leave, and re-subscribe on migration - Dataplane client updated for bifurcated replication groups Tests: - Integration tests for M2P/forwarding/subscribe lifecycle - Instance migration multicast re-convergence
1 parent a741697 commit 98e9742

31 files changed

Lines changed: 4425 additions & 944 deletions

File tree

Cargo.lock

Lines changed: 34 additions & 34 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -648,7 +648,7 @@ omicron-workspace-hack = "0.1.0"
648648
omicron-zone-package = "0.12.2"
649649
oxide-client = { path = "clients/oxide-client" }
650650
oxide-tokio-rt = "0.1.2"
651-
oxide-vpc = { git = "https://github.com/oxidecomputer/opte", rev = "e547d07b08c3f3d6c821c9eb7a958adcffce6e56", features = [ "api", "std" ] }
651+
oxide-vpc = { git = "https://github.com/oxidecomputer/opte", branch = "zl/filter-mcast-srcs", features = [ "api", "std" ] }
652652
oxlog = { path = "dev-tools/oxlog" }
653653
oxnet = "0.1.4"
654654
once_cell = "1.21.3"
@@ -657,7 +657,7 @@ openapiv3 = "2.2.0"
657657
# must match samael's crate!
658658
openssl = "0.10"
659659
openssl-sys = "0.9"
660-
opte-ioctl = { git = "https://github.com/oxidecomputer/opte", rev = "e547d07b08c3f3d6c821c9eb7a958adcffce6e56" }
660+
opte-ioctl = { git = "https://github.com/oxidecomputer/opte", branch = "zl/filter-mcast-srcs" }
661661
oso = "0.27"
662662
owo-colors = "4.2.2"
663663
oximeter = { path = "oximeter/oximeter" }

0 commit comments

Comments
 (0)