@youthenoob said in Is it worth me writing a program to check the network?:
I already work in software development and networking, and am now wondering whether it is worth my time (perhaps a day to two) to write some software to test/record the network performance.
It's always nice to have more data on network performance for investigation.
So before I start investing/wasting too much time on this I thought i would get your opinions. The things I was looking at testing were:
- Ping times to the local gateway, to see if there is jitter (caused by the wifi/bad cabling/s**t router).
- Ping times to a distant IP address to see if there are ISP issues
You can do some latency tests, although I usually just point people to ping.canbeuseful.com for running a latency test during the game, I think weak WiFi links aren't the issue in 99.9% of games, most people are smart enough to think of that themselves.
- iPerf (bandwidth tester), to see the max bandwidth the user has
That would be quite interesting, you could add information to your tool that tells the user what games they will be able to run (2v2, 4v4, 5v5, 6v6, ...). Bandwidth scales rather linearly with peer count, up / down bandwidth is symmetrical.
- The bandwidth used during gameplay, to see if something else is taking all of it (vs total bandwidth).
If you can monitor / obtain info about other system traffic that might be interesting to discover background load, like steam updates.
Traffic in FA consists of 2 packets per peer per tick. 10 Ticks per second. One of those packets is ~15 bytes, the other one is ~25-70 bytes.
- Nvidia driver version (to test for the old driver issue)
- Whether the user is using Global Carrier NAT; games get routed through a relay and ping times are added.
That would also be quite interesting.
A lot of data is also available from the ice adapter debug window, which is currently not visible due to the client not having a JRE with JavaFX.
The ICE adapter already measures latency to each peer.
It can also tell you which candidate pair it chose for each peer (host, prflx, srflx, relay), from which you can infer information about network and NAT architecture.
The best option would probably to add some of those measurements to the ice adapter itself, as it has already gotten access to the traffic as well as quite a bit of other debugging information. You can e.g. just start counting game traffic here: https://github.com/FAForever/java-ice-adapter/blob/master/ice-adapter/src/main/java/com/faforever/iceadapter/ice/PeerIceModule.java#L390
Not sure if that's an option for you though, language-wise as well as taking into account you want to access system traffic info and want to perform measurements to local gateway.