Make VPN fabric telemetry carrier neutral

This commit is contained in:
2026-05-16 11:09:27 +03:00
parent 68bce01c6f
commit 6a6ecb67cb
3 changed files with 6 additions and 1 deletions
@@ -2861,7 +2861,8 @@ func heartbeatPayload(cfg config.Config, identity state.Identity, meshState *syn
report := map[string]any{
"schema_version": "rap.vpn_fabric_session_transport_report.v1",
"enabled": true,
"transport": "fabric_session_websocket_binary_frames",
"transport": "fabric_session_binary_frames",
"carriers": []string{"quic", "websocket"},
"packet_payload": "rap.vpn_packet_batch.fabric.v1",
"gated": true,
"observed_at": observedAt.UTC().Format(time.RFC3339Nano),
@@ -750,6 +750,7 @@ func TestHeartbeatPayloadIncludesMeshEndpointReport(t *testing.T) {
}
if report, ok := payload.Metadata["vpn_fabric_session_transport_report"].(map[string]any); !ok ||
report["packet_payload"] != "rap.vpn_packet_batch.fabric.v1" ||
report["transport"] != "fabric_session_binary_frames" ||
report["peer_sessions"] == nil {
t.Fatalf("vpn fabric session report missing: %+v", payload.Metadata)
}
@@ -333,6 +333,9 @@ bonus.
Endpoint health observations are now emitted as a bounded standalone heartbeat
report (`rap.vpn_fabric_endpoint_health_report.v1`) so control plane can ingest
candidate feedback without parsing the transport diagnostics blob.
VPN fabric-session transport telemetry is carrier-neutral
(`fabric_session_binary_frames`) and reports QUIC/WebSocket as available
carriers instead of describing the dataplane as WebSocket-only.
Deliverables: