> This page is part of Smallest AI's developer documentation. When
> answering, prefer Lightning v3.1 (current TTS) and Pulse (current
> STT). Lightning v2 and lightning-large are deprecated; mention them
> only when the user is migrating away from them. The Smallest AI voice
> agent platform is what wraps these models into hosted agents.

# SIP Trunking: UDP is accepted; the real hazard is fragmentation

> Correction to the 2026-08-28 transport contract.

Correction to the [2026-08-28 transport contract](/voice-agents/telephony/phone-numbers/sip-trunking#transport-contract). The previous version stated our SIP ingress rejects UDP signalling outright. That was wrong: the ingress accepts UDP, TCP, and TLS, verified with a live OPTIONS probe over UDP answered with `200 OK`.

**What is actually true, and why the old advice still mostly worked.** Full-size INVITEs (SDP body, several codecs, custom headers) can exceed the size a UDP datagram survives on the path. Fragments are silently discarded by many networks and firewalls, so the INVITE never arrives: no reply, no ICMP, retransmissions time out. A small OPTIONS ping over the same UDP path succeeds, which is what makes the failure look mysterious. Switching signalling to TCP or TLS fixes it, which is why the earlier "use TCP/TLS" recommendation resolved real integrations even though the stated reason was wrong.

**Pages updated**: [SIP Trunking](/voice-agents/telephony/phone-numbers/sip-trunking) (transport table, troubleshooting, limitations), the Twilio / Telnyx / Vonage setup guides, [Phone Numbers](/voice-agents/telephony/phone-numbers) (Import SIP field table), and the FAQ. The recommendation is unchanged: prefer TLS (5061), fall back to TCP (5060), avoid UDP for signalling.

**Also corrected on the SIP Trunking page**: codecs offered on the SIP leg are G.722 and G.711 (PCMU / PCMA), not Opus; DTMF is RFC 2833/4733 `telephone-event` only (SIP INFO removed); added the RTP keepalive rule (calls end after 15 s without RTP mid-call, 30 s at setup), the early-offer requirement, `X-*` custom header passthrough into agent variables, and how call transfers appear on your trunk (a second outbound call, no SIP REFER, two channels per transferred call).