iOS 6 Network Link Conditioner

I was poking through the settings in iOS 6 and was surprised discover new additions to the developers menu. If you take a look in Settings.app > Developer you’ll now find:

  • Energy Diagnostics Logging
  • Network Link Conditioner
  • iAd Testing options
  • PassKit Testing options

I’m certain the PassKit options weren’t there before since PassKit is brand new but I hadn’t noticed the Network Link Conditioner before.

It turns out the network link conditioner basically gives you the option to enable crappy network service (incase, you know, you want to feel like you’re on AT&T or something). You can configure and simulate various types of network conditions so that you can test and see how your app responds. You can create your own profiles but the default list contains these seven:

  • 100% Loss
    • In bandwidth: 0 Kbps
    • In packet loss: 100%
    • In delay: 0 ms
    • Out bandwidth: 0 Kbps
    • Out packet loss: 100%
    • Out delay: 0 ms
    • DNS delay: 0 ms
    • Protocol: Any
    • Interface: null
  • 3G
    • In bandwidth: 780 Kbps
    • In packet loss: 0%
    • In delay: 100 ms
    • Out bandwidth: 330 Kbps
    • Out packet loss: 0%
    • Out delay: 100 ms
    • DNS delay: 0 ms
    • Protocol: Any
    • Interface: null
  • DSL
    • In bandwidth: 2000 Kbps
    • In packet loss: 0%
    • In delay: 5 ms
    • Out bandwidth: 256 Kbps
    • Out packet loss: 0%
    • Out delay: 5 ms
    • DNS delay: 0 ms
    • Protocol: Any
    • Interface: null
  • Edge
    • In bandwidth: 240 Kbps
    • In packet loss: 0%
    • In delay: 400 ms
    • Out bandwidth: 200 Kbps
    • Out packet loss: 0%
    • Out delay: 440 ms
    • DNS delay: 0 ms
    • Protocol: Any
    • Interface: null
  • High Latency DNS
    • In bandwidth: 0 Kbps
    • In packet loss: 0%
    • In delay: 0 ms
    • Out bandwidth: 0 Kbps
    • Out packet loss: 0%
    • Out delay: 0 ms
    • DNS delay: 3000 ms
    • Protocol: Any
    • Interface: null
  • Very Bad Network
    • In bandwidth: 1000 Kbps
    • In packet loss: 10%
    • In delay: 500 ms
    • Out bandwidth: 1000 Kbps
    • Out packet loss: 10%
    • Out delay: 500 ms
    • DNS delay: 0 ms
    • Protocol: Any
    • Interface: null
  • Wifi
    • In bandwidth: 40000 Kbps
    • In packet loss: 0%
    • In delay: 1 ms
    • Out bandwidth: 33000 Kbps
    • Out packet loss: 0%
    • Out delay: 1 ms
    • DNS delay: 0 ms
    • Protocol: Any
    • Interface: null

Creating your own also offers the options of specifying IPv4 or IPv6 for the Protocol and one of Wi-Fi or Cellular for Interface.

To simulate a specific profile simply tap the profile and then Enable the network link conditioner with the toggle at the top of the list view. I tried enabling Very Bad Network and then switching to Mobile Safari, which started to acting like a pig, taking a good minute to load Apple.com over wifi where it took only seconds under normal operation.

This is a great addition to the testing abilities of iOS 6 but it would be nice if there was an indicator on the screen to show that this “mode” is enabled. I can see this being an issue when pranksters get a hold of your phone and enable shitty reception without your knowledge.