Hi, running into an outbound SIP trunk issue that looks like a TCP-level blackhole to our carrier, and I’m trying to figure out how much of this is on our carrier’s side vs. something we can address from the LiveKit side.
Setup: BYO outbound trunk to Tata Tele (Smartflo) in India, dialed via sip.create_sip_participant from our agent after collecting call context. Inbound on the same account works fine. Outbound has never connected.
Trunk config (matches our carrier’s dashboard exactly Termination URI, port, and transport confirmed identical on both sides):
Outbound trunk id: ST_GQ8fyWocyxcb
Name: Outbound test 1
Termination URI/Address in outbound trunk: voice-sip.ttsl.tel:49868
Transport: TCP
Every outbound attempt fails with:
transport<TCP> dial err=dial tcp :9256->14.97.48.21:49868: connect: connection timed out
disconnectReason: SIP_TRUNK_FAILURE
This is a raw TCP connect timeout no SYN-ACK, nothing happening before any SIP signaling is attempted. We’ve confirmed via the carrier’s own call dashboard that these attempts never even register on their end, which points to the packets being dropped somewhere in transit rather than rejected by their SBC application layer.
We’ve seen this fail from multiple different source IPs across attempts (e.g. 143.223.91.185, 143.223.91.151, 143.223.94.92), all falling within the published India-region static IP ranges (143.223.88.0/21, 161.115.160.0/19, 153.57.128.0/18). Our working theory is that our carrier’s SBC firewall isn’t whitelisting this range (or isn’t whitelisting it fully.
But it could also be a setup issue in the outbound trunk config?
Three questions:
- Is there any way to pin outbound SIP dialing for a specific trunk to a single fixed egress IP (rather than the full regional static range), to make carrier-side whitelisting more tractable? Region pinning docs mention
destination_countrybut I don’t see anything about narrowing egress to one IP. - For everyone using BYO trunks with carriers that require strict IP whitelisting (especially outside the US/EU), what’s the common pattern — do most people front LiveKit with their own small SBC/B2BUA on a fixed IP specifically to solve this, or is there a more direct option I’m missing?
- Has anyone here specifically connected a BYO outbound trunk to an Indian carrier (Tata Tele/Smartflo, Airtel, etc.) and run into this same kind of TCP-timeout-at-the-firewall pattern? Curious whether this is a known integration hurdle with Indian SBCs specifically.
Happy to share more logs/call IDs if useful. Thanks!