How does simulated network works?

First let me say what a great tool www.webpagetest.org is, and that I really appreciate you for keeping it free.

The simulated network feature, though, bothers me, and I’ll be thankful if you could clarify these next two issues:

  1. How does it work? Is it using something like Linux’s TC?
  2. If a RTT to google.com is 50 ms, does setting latency to 20ms mean that testing to google.com will now experience a 70 ms RTT?

thanks and hope I made myself clear :slight_smile:

1 - Sort of but significantly more accurate. It uses DUMMYNET (originally on an external FreeBSD box but now on the test box itself) to simulate the network characteristics. It was designed as a link simulator for doing protocol testing and is significantly more accurate than anything else I have found.

2 - Correct. The simulated network feature essentially simulates the “last mile” and the latency will be added on top of whatever existing latency is on the link. In the locations.ini file you can specify a first-hop latency for the real connectivity in which case it will be subtracted from the added latency (makes configuring different test locations consistent but may be overkill for a private install).

I have a pretty detailed write-up on it from a while back here: Performance Matters: Traffic Shaping

Thanks,

-Pat

Thanks!

considering (2), it would be nice to have an estimation of the network conditions for each test location (at least their last-mile bandwidth, but I guess finding the RTT to the target url shouldn’t be a big problem). This will enable one to tune the simulated last mile better.

In theory end users shouldn’t have to do any tuning - the parameters should ensure consistent testing across locations and the system will accommodate the real last-mile conditions for each test location.

This IS true for latency right now (though I don’t have an indicator in the UI yet to tell you what the minimum is for a given location) and bandwidth isn’t an additive problem, just becomes a problem if you are trying to test at a higher bandwidth than what is available (another thing I need to add UI indicators for).

For example, the UK and (new) Paris locations both have 1st hop (last mile) latencies of 10 ms while Dulles has 1 ms. When you select the DSL profile (1.5Mbps/384Kbps 50ms latency) the system will actually configure the UK and Paris locations with 40ms of added latency and Dulles with 49ms to get you to the desired end result.

It gets more difficult if you want to test at Fiber speeds from a location that is not physically capable of going that fast or having latencies that low which is why I need to add some logic to the UI to expose where those limits are.