VoWiFi Unstable on iOS – Connection Frequently Lost

Can someone investigate the behavior of VoWiFi? The VoWiFi connection is generally very unstable and is randomly lost, even when the Wi-Fi connection itself is in excellent condition.

I suspect this may be a general iOS issue that has been present across several iOS versions.

A clear and easy way to reproduce the issue is:

  1. Turn off the iPhone screen.
  2. Wait 5 minutes.
  3. Receive a phone call.

The call will not be received over VoWiFi. It will either fall back to the cellular network or be missed entirely.

The issue can occur randomly in other situations as well, but putting the iPhone into standby makes the problem particularly easy to reproduce.

Can someone investigate the behavior of VoWiFi?

Unfortunately, my experience has been that this kind of issue is inherently very difficult to investigate. Nearly every issue I've ever investigated has turned out to be an issue with the Wi-Fi network, but the exact nature of that issue is incredibly varied and impossible to summarize.

Even worse, from experience, I've found that the most easily accessible data, the system console log, tends to be far less useful than you'd think. Putting that in more concrete terms, with a lot of practice and experience, all you can really determine from the console log is that:

  1. Everything worked fine as far as the system is concerned, except that some final component ("the app") failed before the call reached "you". This is fairly common in 3rd-party VoIP apps, but I've NEVER seen this occur with Phone.app.

  2. The device was not connected to a working network when the call arrived.

  3. The device THOUGHT it was connected to a working network when the call arrived.

I picked the word "thought" intentionally. That's because I've never seen our calling infrastructure fail on a network that was actually working properly. I've seen several cases where, as far as the device is concerned, it looks like the call "should" have worked, but all of those have also turned out to be network-level problems that just happened to not be visible on the iOS device side.

For example, I've seen a few cases where a poorly configured intermediate NAT router severed the WAN side connection (the connection from the NAT router to "our" servers) while leaving the LAN side connection (the connection from the NAT router to the iOS device) open. Many of our connections are intentionally long-lived connections with minimal traffic, so the iOS device did nothing because, as far as it could tell, everything was working fine.

That leads to here:

A clear and easy way to reproduce the issue is: Turn off the iPhone screen. Wait 5 minutes. Receive a phone call.

This failure pattern is extremely common with this sort of issue. While the device is being actively used, things often "work better", either because the device is simply more active on the network or because secondary effects "fix" issues which would otherwise create problems.

For example, MANY apps use APNS, which means the first thing they do on launch is ask the system for their push token. The system validates their push token by contacting our push servers of the same connections used to receive pushes, which means that many app launches indirectly either:

  • Generates traffic on the push connection, acting as a quasi-keep alive.

OR

  • ...or cause the system to reconnect when the transmission failure makes it realize the connection is actually dead.

All of that sort of thing stops (or slows down considerably) once the device is locked, making failure more likely.

That leads to here:

...even when the Wi-Fi connection itself is in excellent condition.

Unfortunately, this is much trickier to determine than it seems. Most of these issues happen above the "base" radio layer, which means things like signal strength aren't relevant. Similarly, the use of very long-lived connections is somewhat unusual, which means comparisons with other devices aren't all that meaningful.

Finally, on the question of bugs:

I suspect this may be a general iOS issue that has been present across several iOS versions.

From what I've written above, you might assume that I think the system is "perfect" and always works great. Let me assure you, that is not the case. I've found and experienced plenty of bugs across nearly all of the system. The difference here is that I've been looking into issues like this for a 10+ years and found SHOCKINGLY few cases where the system was the problem. Again and again, what I've found when looking at this particular area of the system is:

  1. The system was working exactly as it should.

  2. Something else wasn't.

I'm happy to try and answer any questions you have, but the best advice I can give is to look much more closely at your larger network instead of focusing on iOS.

__
Kevin Elliott
DTS Engineer, CoreOS/Hardware

Thank you for the detailed explanation.

I understand that a network or NAT-related issue could cause a persistent connection to become stale while the device still appears to have a perfectly healthy Wi-Fi connection. However, I have already tried several different configurations, routers, and Wi-Fi networks, and the issue seems to occur consistently across all of them.

One aspect that makes the issue particularly difficult to understand is that it appears to affect VoWiFi specifically. Other third-party applications that maintain persistent network connections continue to work normally and do not appear to disconnect or require reconnection after the iPhone has been idle for several minutes.

For this reason, I would like to better understand how I could test whether the network is actually contributing to the issue. Are there any specific tests, diagnostics, packet captures, or network conditions you would recommend checking to determine whether NAT timeouts, UDP/IPsec sessions, or another network-related issue could be causing the VoWiFi connection to become unavailable?

I would be happy to perform any tests that could help isolate whether this is caused by the network, the carrier infrastructure, or iOS itself.

VoWiFi Unstable on iOS – Connection Frequently Lost
 
 
Q