aboutsummaryrefslogtreecommitdiff
path: root/scripts/measure.sh
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/measure.sh')
-rwxr-xr-xscripts/measure.sh73
1 files changed, 73 insertions, 0 deletions
diff --git a/scripts/measure.sh b/scripts/measure.sh
new file mode 100755
index 0000000..ee05442
--- /dev/null
+++ b/scripts/measure.sh
@@ -0,0 +1,73 @@
+#!/bin/bash
+
+#
+# A script that performs a single onion-grab measurement with Mullvad VPN.
+#
+# Don't forget to shuffle the input file before running, and to document how the
+# system is configured. E.g., systemd-resolved is disabled, /etc/resolv.conf
+# lists 8.8.8.8 and 8.8.4.4, output of uname -a and sysctl -a is ..., etc.
+#
+
+relay=se-sto-wg-001
+limit=1450
+num_workers=10000
+input_file=/path/to/input/file
+timeout_s=30
+response_max_mib=64
+metrics_interval=1h
+
+out_dir=data/$(date +%Y%m%d-%H%M%S)
+mullvad_wait_s=5
+
+set -eu
+function main() {
+ num_sites=$(wc -l $input_file | cut -d' ' -f1)
+ debug "relay=$relay"
+ debug "limit=${limit}"
+ debug "num_workers=$num_workers"
+ debug "input_file=$input_file ($num_sites sites)"
+ debug "timeout_s=$timeout_s"
+ debug "response_max_mib=$response_max_mib"
+ debug "out_dir=$out_dir"
+ debug "mullvad_wait_s=$mullvad_wait_s"
+
+ mkdir -p "$out_dir"
+ stdout_file=$out_dir/$relay-l$limit.stdout
+ stderr_file=$out_dir/$relay-l$limit.stderr
+ info "storing results in $out_dir"
+
+ now=$(date +%s)
+ runtime_s=$(( $num_sites / $limit ))
+ wait_onion_grab_s=$(( $timeout_s * 2 ))
+ estimated_done=$(( $now + $runtime_s + $mullvad_wait_s + $wait_onion_grab_s ))
+ debug "estimated done? approximately $(date -d @$estimated_done +"%Y-%m-%d %H:%M:%S %Z")"
+
+ mullvad disconnect >/dev/null
+ mullvad relay set hostname $relay >/dev/null
+ mullvad connect >/dev/null
+ sleep $mullvad_wait_s
+
+ ip=$(curl -s https://ifconfig.me)
+ info "starting measurement from relay $relay ($ip)"
+ debug "view progress with \"tail -f $stderr_file\""
+
+ onion-grab\
+ -i "$input_file"\
+ -w "$num_workers"\
+ -l "$limit"\
+ -r "$response_max_mib"\
+ -t "$timeout_s"s\
+ -m "$metrics_interval"\
+ >"$stdout_file" 2>"$stderr_file"
+
+ ./digest.py\
+ -v info\
+ -i "$stdout_file"\
+ -o "$out_dir/$relay-l$limit-onion-all.txt"\
+ -d "$out_dir/$relay-l$limit-domain-all.txt"
+}
+
+function debug() { echo "$(date +"%Y-%m-%d %H:%M:%S %Z") [DEBU] $@" >&2; }
+function info() { echo "$(date +"%Y-%m-%d %H:%M:%S %Z") [INFO] $@" >&2; }
+
+main $@