Skip to content

Commit b510a9f

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 b510a9f

34 files changed

Lines changed: 4436 additions & 955 deletions

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: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -586,8 +586,8 @@ ntp-admin-api = { path = "ntp-admin/api" }
586586
ntp-admin-client = { path = "clients/ntp-admin-client" }
587587
ntp-admin-types = { path = "ntp-admin/types" }
588588
ntp-admin-types-versions = { path = "ntp-admin/types/versions" }
589-
mg-admin-client = { git = "https://github.com/oxidecomputer/maghemite", rev = "b603c9f3dccefcf1d3e941c04505ff6bdd1826b6" }
590-
ddm-admin-client = { git = "https://github.com/oxidecomputer/maghemite", rev = "b603c9f3dccefcf1d3e941c04505ff6bdd1826b6" }
589+
mg-admin-client = { git = "https://github.com/oxidecomputer/maghemite", branch = "multicast-e2e" }
590+
ddm-admin-client = { git = "https://github.com/oxidecomputer/maghemite", branch = "multicast-e2e" }
591591
multimap = "0.10.1"
592592
nexus-auth = { path = "nexus/auth" }
593593
nexus-background-task-interface = { path = "nexus/background-task-interface" }
@@ -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" }
@@ -721,7 +721,7 @@ rats-corim = { git = "https://github.com/oxidecomputer/rats-corim.git", rev = "f
721721
raw-cpuid = { git = "https://github.com/oxidecomputer/rust-cpuid.git", rev = "a4cf01df76f35430ff5d39dc2fe470bcb953503b" }
722722
rayon = "1.10"
723723
rcgen = "0.12.1"
724-
rdb-types = { git = "https://github.com/oxidecomputer/maghemite", rev = "b603c9f3dccefcf1d3e941c04505ff6bdd1826b6" }
724+
rdb-types = { git = "https://github.com/oxidecomputer/maghemite", branch = "multicast-e2e" }
725725
reconfigurator-cli = { path = "dev-tools/reconfigurator-cli" }
726726
reedline = "0.40.0"
727727
ref-cast = "1.0"

0 commit comments

Comments
 (0)