Workers - New L4 transport telemetry fields in Workers
Key Points
- clientTcpRtt: smoothed TCP RTT (ms)
- clientQuicRtt: smoothed QUIC RTT (ms)
- edgeL4.deliveryRate: data delivery rate (B/s)
Summary
Cloudflare Workers now expose Layer 4 transport telemetry directly on request.cf so your Worker can read real-time connection quality signals (RTT and delivery rate) without client changes. This data was previously only available via the Server-Timing: cfL4 header.
Key Points
- New properties on request.cf:
clientTcpRtt(number | undefined): smoothed TCP RTT in milliseconds (HTTP/1, HTTP/2).clientQuicRtt(number | undefined): smoothed QUIC RTT in milliseconds (HTTP/3).edgeL4?.deliveryRate(number | undefined): recent data delivery rate in bytes/second.
- Values are estimates and may be
undefined; always check and provide fallbacks. - Common uses: routing by transport, adaptive responses, logging, metrics, and propagating telemetry to upstreams.
- Practical inline example:
rtt = cf.clientTcpRtt ?? cf.clientQuicRtt ?? 0,deliveryRate = cf.edgeL4?.deliveryRate ?? 0, then set headers likeX-Client-RTTandX-Delivery-Ratebefore fetching upstream.
Actionable Notes
- Treat RTT as milliseconds and deliveryRate as bytes/second when computing thresholds.
- Prefer transport-specific field (
clientQuicRttfor QUIC,clientTcpRttfor TCP). - Instrument logging and routing rules to handle
undefinedand smoothed values appropriately.