Performance modelling of Snowflake
As a followup to previous discussions on Snowflake performance, the purpose of this issue is to track work on modelling and measuring the impact of Snowflake improvements on network performance. This work will be primarily done with the Shadow network simulation tool. This tool can measure the impact that changes to Snowflake can have on the throughput of traffic for clients, as well as resource consumption of the broker and bridge.
Snowflake shadow simulation scripts can be found at https://gitlab.torproject.org/cohosh/snowflake-simulation
There are a few tasks to complete before we are ready to conduct performance experiments:
-
Help Shadow developers debug outstanding issues with go network code -
Improve the Snowflake network model to accurately reflect the network conditions faced by both snowflake clients and proxy volunteers -
Improve the output format of test results so they can be easily interpreted
Once these pieces are in place, I plan to conduct the following experiments:
-
Tune turbotunnel parameters by experimenting with the space of probable configurations (#40026) -
Splitting traffic across multiple snowflake proxies (#25723) -
The impact of geographic location of proxies on client performance (#31661)
Shadow simulations do have some limitations. We have also deployed onionperf instances to measure real-world Snowflake performance. If evidence for performance improvements is compelling enough, we can measure the impact of the change in deployment from these locations.