- Joined
- Jul 6, 2022
- Messages
- 4
- Reaction score
- 1
Self hosted v20 U9 (build 995), no SBC. Every mobile app user on cellular gets audio in 1 to 6 second bursts, a beep, "Recovering", then they hang up. T-Mobile and AT&T, iOS and Android, current builds. Same app and phone on district Wi-Fi is flawless.
WAN edge packet capture of the failing calls (port 5090, TCP control plus UDP media) shows a repeating 8.5 second cycle: the app opens a UDP flow, sends about 3.3 seconds of audio, then abandons that port completely while the PBX keeps streaming at 50 packets per second into it for another 4.6 to 4.9 seconds. At 8.5 seconds the app opens a new UDP port and a new TCP connection and starts over. The app sends the RST or FIN itself, the PBX never closes first and answers each new port within about 100ms.
For reference: on Wi-Fi one TCP connection held 324 seconds and one UDP flow held 329 seconds with zero gaps. Cellular but idle, one port held 90 seconds or more. The churn only happens while a call is active.
Firewall side is clean: 21 to 22 sessions per phone across 20 to 22 source ports per window, all accepted, zero denies, destination NAT only with no source port rewrite, no DoS policies, IPS clear.
Control test: a laptop tethered to that same phone over cellular, using the 3CX web client, 55 second call, single UDP media flow, 2,747 packets up and 2,729 down, continuous, no audio problems.
Questions:
WAN edge packet capture of the failing calls (port 5090, TCP control plus UDP media) shows a repeating 8.5 second cycle: the app opens a UDP flow, sends about 3.3 seconds of audio, then abandons that port completely while the PBX keeps streaming at 50 packets per second into it for another 4.6 to 4.9 seconds. At 8.5 seconds the app opens a new UDP port and a new TCP connection and starts over. The app sends the RST or FIN itself, the PBX never closes first and answers each new port within about 100ms.
For reference: on Wi-Fi one TCP connection held 324 seconds and one UDP flow held 329 seconds with zero gaps. Cellular but idle, one port held 90 seconds or more. The churn only happens while a call is active.
Firewall side is clean: 21 to 22 sessions per phone across 20 to 22 source ports per window, all accepted, zero denies, destination NAT only with no source port rewrite, no DoS policies, IPS clear.
Control test: a laptop tethered to that same phone over cellular, using the 3CX web client, 55 second call, single UDP media flow, 2,747 packets up and 2,729 down, continuous, no audio problems.
Questions:
- Known issue on carriers using 464XLAT and carrier grade NAT, where the app drops its tunnel media flow after a few seconds?
- What makes the app abandon the flow after 3.3 seconds and rebuild the tunnel at 8.5, on cellular only? Is there a client timer?
- Can the mobile apps be forced to tunnel over TCP, or is KEEPALIVE_TIME_UDP=30 it?