Connection TTL is a hard cap on total connection duration. No matter how active the device is, the server closes the connection after this period and sends ACK|ERR|ttl_expired. The device should reconnect.
Keep-alive idle timeout is the maximum silence between frames. If the device stops sending data for this long, the server closes the connection with ACK|ERR|keep_alive_timeout. Sending any frame (including PING) resets the timer.
Both timers start when the connection is accepted. TTL counts total elapsed time; keep-alive resets on every received frame.
PING is exempt from rate limiting on TCP and UDP. On HTTP, HEAD counts toward the uplink RPM. On MQTT, keepalive is handled natively by PINGREQ/PINGRESP.
See each transport page for transport-specific limits.