Network.framework Lag Every 0.5s

We're running a peer-to-peer video streaming app over Network.framework, with the frames going over a UDP connection. However I'm running into a very predictable lag occuring every 0.5s on the receiving side. In the minimal example below I'm sending a UDP packet 30 times per second, and here are the time deltas between the packets (in milliseconds) – the sending side consistent, the receiver side lagging: https://gist.github.com/PatrickPijnappel/9f413ad3b1a5bdff19bcc3d38f1921cd


The source for the minimal example to repoduce is in the gist below. Configured for iPad/iPhone but easy to adjust:

https://gist.github.com/PatrickPijnappel/77e45cace7dc8f90b1c1075893c7444b


Things I've tried:

- Doesn't seem related to noise (moving to a noise free makes no difference).

- Happens equally over router (en0) and peer-to-peer WiFi (awdl0).

- Happens regardless of packet size.

- A packet trace shows no signs of simultaneous traffic hogging bandwidth


Any insights would be greatly appreciated!


Tested on iOS 12.3.1 & iPhone XS & iPad Pro (A1673)

Replies

You can find some general advice on this topic in my Investigating Network Latency Problems post.

Share and Enjoy

Quinn “The Eskimo!”
Apple Developer Relations, Developer Technical Support, Core OS/Hardware

let myEmail = "eskimo" + "1" + "@apple.com"

Thank you, that was very helpful. The standard packet trace (which I also did before) came up with nothing but from the WiFi level packet trace it seems the interuption is from what appears to be network discovery, happening every 0.5s. The snippet is taken from between two application-level UDP packets, with the interruption causing a ~100ms lag.


Maybe the malformed packets (bad-fcs) are causing repeated retransmission? Possibly worsened by the low transmit rate of that connection (1Mb/s). Also this is a pretty weak signal (it's just some router in range, not mine).


Oddly though, the lag seems to happen anywhere (several locations in the city), as long as either one of the devices has WiFi network discovery enabled. Disabling it for both (i.e. both allowing peer-to-peer WiFi only) makes the lag disappear.


10:45:28.233423 559262912us tsft short preamble 24.0 Mb/s 2462 MHz 11g -25dBm signal -96dBm noise antenna 0 Request-To-Send TA:c0:a6:00:be:ab:fd (oui Unknown)
10:45:28.233463 559262959us tsft short preamble 24.0 Mb/s 2462 MHz 11g -57dBm signal -96dBm noise antenna 0 Clear-To-Send RA:c0:a6:00:be:ab:fd (oui Unknown)
10:45:28.233527 559263013us tsft -26dBm signal -96dBm noise antenna 0 2462 MHz 11n ht/20 130.0 Mb/s MCS 15 20 MHz long GI mixed BCC FEC IP6 patricks-iphone.local.56170 > fe80::1c13:de6f:8d01:62fc.51399: UDP, length 500
10:45:28.233569 559263104us tsft short preamble 24.0 Mb/s 2462 MHz 11g -57dBm signal -96dBm noise antenna 0 BA RA:c0:a6:00:be:ab:fd (oui Unknown)
10:45:28.234100 559263504us tsft short preamble 24.0 Mb/s 2462 MHz 11g -57dBm signal -96dBm noise antenna 0 Request-To-Send TA:34:e8:94:0a:e3:69 (oui Unknown)
10:45:28.234141 559263551us tsft short preamble 24.0 Mb/s 2462 MHz 11g -31dBm signal -96dBm noise antenna 0 Clear-To-Send RA:34:e8:94:0a:e3:69 (oui Unknown)
10:45:28.234375 559263704us tsft short preamble 24.0 Mb/s 2462 MHz 11g -31dBm signal -96dBm noise antenna 0 BA RA:34:e8:94:0a:e3:69 (oui Unknown)
10:45:28.241107 559268992us tsft 1.0 Mb/s 2462 MHz 11g -89dBm signal -96dBm noise antenna 0 Beacon (Telstra Air) [1.0* 2.0* 5.5* 11.0* 18.0 24.0* 36.0 54.0 Mbit] ESS CH: 10
10:45:28.245490 559274661us tsft 1.0 Mb/s 2462 MHz 11g -33dBm signal -96dBm noise antenna 0
10:45:28.245756 559275090us tsft 1.0 Mb/s 2462 MHz 11g -57dBm signal -96dBm noise antenna 0 Acknowledgment RA:c0:a6:00:be:ab:fd (oui Unknown)
10:45:28.257324 559283458us tsft 1.0 Mb/s 2462 MHz 11g -78dBm signal -96dBm noise antenna 0 Probe Response (TelstraAFB64F) [1.0* 2.0* 5.5* 11.0* 18.0 24.0 36.0 54.0 Mbit] CH: 11, PRIVACY
10:45:28.261248 559287301us tsft 1.0 Mb/s 2462 MHz 11g -81dBm signal -96dBm noise antenna 0 Probe Response (TelstraAFB64F) [1.0* 2.0* 5.5* 11.0* 18.0 24.0 36.0 54.0 Mbit] CH: 11, PRIVACY
10:45:28.267083 559294768us tsft 1.0 Mb/s 2462 MHz 11g -57dBm signal -96dBm noise antenna 0 Beacon (WiFi-E369) [1.0* 2.0* 5.5* 11.0* 18.0 24.0 36.0 54.0 Mbit] ESS CH: 11
10:45:28.272754 559298771us tsft bad-fcs 1.0 Mb/s 2462 MHz 11g -82dBm signal -96dBm noise antenna 0 Probe Response (TelstraAFB64F) [1.0* 2.0* 5.5* 11.0* 18.0 24.0 36.0 54.0 Mbit] CH: 11, PRIVACY
10:45:28.276491 559302578us tsft 1.0 Mb/s 2462 MHz 11g -81dBm signal -96dBm noise antenna 0 Probe Response (TelstraAFB64F) [1.0* 2.0* 5.5* 11.0* 18.0 24.0 36.0 54.0 Mbit] CH: 11, PRIVACY
10:45:28.280329 559306416us tsft 1.0 Mb/s 2462 MHz 11g -79dBm signal -96dBm noise antenna 0 Probe Response (TelstraAFB64F) [1.0* 2.0* 5.5* 11.0* 18.0 24.0 36.0 54.0 Mbit] CH: 11, PRIVACY
10:45:28.284184 559310286us tsft bad-fcs 1.0 Mb/s 2462 MHz 11g -82dBm signal -96dBm noise antenna 0 Probe Response (TelstraAFB64M-g), PRIVACY[|802.11]
10:45:28.288002 559314093us tsft bad-fcs 1.0 Mb/s 2462 MHz 11g -83dBm signal -96dBm noise antenna 0 Probe Response (), PRIVACY[|802.11]
10:45:28.291797 559317945us tsft 1.0 Mb/s 2462 MHz 11g -78dBm signal -96dBm noise antenna 0 Probe Response (TelstraAFB64F) [1.0* 2.0* 5.5* 11.0* 18.0 24.0 36.0 54.0 Mbit] CH: 11, PRIVACY
10:45:28.295601 559321768us tsft bad-fcs 1.0 Mb/s 2462 MHz 11g -82dBm signal -96dBm noise antenna 0 Probe Response (TelstraAFB64F) [1.0* 2.0* 5.5* 11.0* 18.0 24.0 36.0 54.0 Mbit] CH: 11, PRIVACY
10:45:28.299534 559325630us tsft 1.0 Mb/s 2462 MHz 11g -82dBm signal -96dBm noise antenna 0 Probe Response (TelstraAFB64F) [1.0* 2.0* 5.5* 11.0* 18.0 24.0 36.0 54.0 Mbit] CH: 11, PRIVACY
10:45:28.303346 559329473us tsft bad-fcs 1.0 Mb/s 2462 MHz 11g -78dBm signal -96dBm noise antenna 0 Probe Response (TelstraAFB64F) [1.0* 2.0* 5.5* 11.0* 18.0 24.0 36.0 54.0 Mbit] CH: 11, PRIVACY[|802.11]
10:45:28.311183 559337856us tsft 1.0 Mb/s 2462 MHz 11g -77dBm signal -96dBm noise antenna 0 Beacon (TelstraAFB64F) [1.0* 2.0* 5.5* 11.0* 18.0 24.0 36.0 54.0 Mbit] ESS CH: 11, PRIVACY
10:45:28.313658 559340796us tsft 1.0 Mb/s 2462 MHz 11g -79dBm signal -96dBm noise antenna 0 Beacon () [1.0* 2.0* 5.5* 11.0* 18.0 24.0 36.0 54.0 Mbit] ESS CH: 11, PRIVACY
10:45:28.315905 559343266us tsft bad-fcs 1.0 Mb/s 2462 MHz 11g -82dBm signal -96dBm noise antenna 0 Beacon (Telstra Air) [1.0* 2.0* 5.5* 11.0* 18.0 24.0 36.0 54.0 Mbit] ESS CH: 11
10:45:28.318213 559345550us tsft 1.0 Mb/s 2462 MHz 11g -83dBm signal -96dBm noise antenna 0 Beacon (Fon WiFi) [1.0* 2.0* 5.5* 11.0* 18.0 24.0 36.0 54.0 Mbit] ESS CH: 11
10:45:28.321720 559347810us tsft 1.0 Mb/s 2462 MHz 11g -82dBm signal -96dBm noise antenna 0 Probe Response (TelstraAFB64F) [1.0* 2.0* 5.5* 11.0* 18.0 24.0 36.0 54.0 Mbit] CH: 11, PRIVACY
10:45:28.325544 559351672us tsft 1.0 Mb/s 2462 MHz 11g -78dBm signal -96dBm noise antenna 0 Probe Response (TelstraAFB64F) [1.0* 2.0* 5.5* 11.0* 18.0 24.0 36.0 54.0 Mbit] CH: 11, PRIVACY
10:45:28.328720 559356114us tsft bad-fcs 1.0 Mb/s 2462 MHz 11g -82dBm signal -96dBm noise antenna 0 Probe Response (Telstra Air) [1.0* 2.0* 5.5* 11.0* 18.0 24.0 36.0 54.0 Mbit] CH: 11[|802.11]
10:45:28.331743 559359124us tsft 1.0 Mb/s 2462 MHz 11g -82dBm signal -96dBm noise antenna 0 Probe Response (Telstra Air) [1.0* 2.0* 5.5* 11.0* 18.0 24.0 36.0 54.0 Mbit] CH: 11
10:45:28.332260 559361432us tsft 1.0 Mb/s 2462 MHz 11g -34dBm signal -96dBm noise antenna 0
10:45:28.332559 559361861us tsft 1.0 Mb/s 2462 MHz 11g -58dBm signal -96dBm noise antenna 0 Acknowledgment RA:c0:a6:00:be:ab:fd (oui Unknown)
10:45:28.334747 559364151us tsft short preamble 24.0 Mb/s 2462 MHz 11g -25dBm signal -96dBm noise antenna 0 Request-To-Send TA:c0:a6:00:be:ab:fd (oui Unknown)
10:45:28.334794 559364198us tsft short preamble 24.0 Mb/s 2462 MHz 11g -57dBm signal -96dBm noise antenna 0 Clear-To-Send RA:c0:a6:00:be:ab:fd (oui Unknown)
10:45:28.334841 559364252us tsft -96dBm noise antenna 0 2462 MHz 11n ht/20 130.0 Mb/s MCS 15 20 MHz long GI greenfield BCC FEC IP6 patricks-iphone.local.56170 > fe80::1c13:de6f:8d01:62fc.51399: UDP, length 500