Skip to content

Commit 3efe7fa

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 3efe7fa

33 files changed

Lines changed: 4428 additions & 947 deletions

File tree

.github/buildomat/jobs/deploy.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
#:
33
#: name = "helios / deploy"
44
#: variety = "basic"
5-
#: target = "lab-2.0-opte-0.39"
5+
#: target = "lab-2.0-opte-0.40"
66
#: output_rules = [
77
#: "%/var/svc/log/oxide-*.log*",
88
#: "%/zone/oxz_*/root/var/svc/log/oxide-*.log*",

Cargo.lock

Lines changed: 35 additions & 35 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", rev = "c570ac2126dbbebbd8e98e73b580c5be6b7e460e", 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", rev = "c570ac2126dbbebbd8e98e73b580c5be6b7e460e" }
661661
oso = "0.27"
662662
owo-colors = "4.2.2"
663663
oximeter = { path = "oximeter/oximeter" }

0 commit comments

Comments
 (0)