Advertise VPN flow pressure capability
This commit is contained in:
@@ -3273,6 +3273,7 @@ func heartbeatPayload(cfg config.Config, identity state.Identity, meshState *syn
|
|||||||
payload.Capabilities["vpn_fabric_session_transport"] = true
|
payload.Capabilities["vpn_fabric_session_transport"] = true
|
||||||
payload.Capabilities["vpn_packet_batch_binary_frames"] = true
|
payload.Capabilities["vpn_packet_batch_binary_frames"] = true
|
||||||
payload.Capabilities["vpn_fabric_session_stream_shards"] = true
|
payload.Capabilities["vpn_fabric_session_stream_shards"] = true
|
||||||
|
payload.Capabilities["vpn_fabric_flow_pressure"] = true
|
||||||
if meshState != nil && meshState.VPNFabricEndpointObservations != nil {
|
if meshState != nil && meshState.VPNFabricEndpointObservations != nil {
|
||||||
payload.Metadata["vpn_fabric_endpoint_health_report"] = meshState.VPNFabricEndpointObservations.Report(observedAt, maxVPNFabricEndpointHealthReportEntries)
|
payload.Metadata["vpn_fabric_endpoint_health_report"] = meshState.VPNFabricEndpointObservations.Report(observedAt, maxVPNFabricEndpointHealthReportEntries)
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -781,6 +781,9 @@ func TestHeartbeatPayloadIncludesMeshEndpointReport(t *testing.T) {
|
|||||||
if payload.Capabilities["vpn_fabric_session_stream_shards"] != true {
|
if payload.Capabilities["vpn_fabric_session_stream_shards"] != true {
|
||||||
t.Fatalf("vpn fabric stream shard capability missing: %+v", payload.Capabilities)
|
t.Fatalf("vpn fabric stream shard capability missing: %+v", payload.Capabilities)
|
||||||
}
|
}
|
||||||
|
if payload.Capabilities["vpn_fabric_flow_pressure"] != true {
|
||||||
|
t.Fatalf("vpn fabric flow pressure capability missing: %+v", payload.Capabilities)
|
||||||
|
}
|
||||||
if payload.Capabilities["vpn_fabric_endpoint_health_feedback"] != true {
|
if payload.Capabilities["vpn_fabric_endpoint_health_feedback"] != true {
|
||||||
t.Fatalf("vpn fabric endpoint health capability missing: %+v", payload.Capabilities)
|
t.Fatalf("vpn fabric endpoint health capability missing: %+v", payload.Capabilities)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -472,6 +472,8 @@ reasons.
|
|||||||
Heartbeat VPN fabric transport reports now include a compact
|
Heartbeat VPN fabric transport reports now include a compact
|
||||||
`flow_pressure` summary with level, score, reasons, bulk pressure, route
|
`flow_pressure` summary with level, score, reasons, bulk pressure, route
|
||||||
recovery timing, reason counts, and recommended per-class windows.
|
recovery timing, reason counts, and recommended per-class windows.
|
||||||
|
Nodes advertise the `vpn_fabric_flow_pressure` capability when that heartbeat
|
||||||
|
summary is available.
|
||||||
Endpoint ranking treats `capacity_limited` observations as a soft pressure
|
Endpoint ranking treats `capacity_limited` observations as a soft pressure
|
||||||
penalty instead of a hard recent failure, enabling load spreading without
|
penalty instead of a hard recent failure, enabling load spreading without
|
||||||
marking the carrier unhealthy.
|
marking the carrier unhealthy.
|
||||||
|
|||||||
Reference in New Issue
Block a user