Configuration

Configuration of the desired client behaviors, network conditions, VPN access, and so on are specified in the config.json file in the root directory of this tool.

Key Description
behaviors List of one or more target behaviors. All target behaviors will be run for each specified set of network conditions. For possible values see Behaviors.
conditions List of nested configuration specifying desired network conditions. E.g. [{"latency": "50ms", "bandwidth": "10Mbps"}]. For configuration see Conditions.
vpn Nested configuration for a VPN connection. For configuration see VPN Config.
system Nested configuration for options which affect the performance of the tool. For configuration see System Config.

Behaviors

List of values. Possible values:

Value Description
none Do nothing.
ping Ping a DNS server once every three seconds. Great for testing purposes.
browsing Run a script to endlessly browse Twitter.
streaming Run a script to endlessly watch YouTube.
custom/<filename.py> Run a custom Python script. See Using Custom Scripts.

Conditions

List of nested objects. Each object has keys:

Key Description
latency Milliseconds. The desired amount of network latency to be injected. E.g. "50ms"
bandwidth Megabits per second. The desired download speed. E.g. "10Mbit"

VPN

Nested object. Keys:

Key Description
enabled true or false. Whether or not a VPN should be used.
server URL or IP to the desired VPN service. E.g. "vpn.ucsd.edu".

System

Nested object. Keys:

Key Description
shared_memory_size Gigabytes. The shared memory size for all client containers in a tool run. E.g. '2gb'. If this is too low, clients may crash due to out-of-memory errors. You cannot exceed the amount of memory available to your host machine. In general, 2 GB is a good size!
use_local_images true or false. Whether or not to use locally built Docker images versus those hosted on Docker Hub. If you want to hack the tool to use custom software, set this to true. See Using Local Images.