--- /dev/null
+#!/bin/bash
+
+if test $# -ne 3; then
+ echo "Usage: $0 type host1 host2" 1>&2
+ exit 1
+fi
+
+# toggle _DEBUG ("on"/"off") when necessary
+_DEBUG="on"
+
+experiment_type="$1"
+hostname1="$2"
+hostname2="$3"
+
+DEBUG()
+{
+ test "$_DEBUG" = "on" && $@
+}
+
+# convert host_id and veid to veth IP address in 10.0.0.0/8 network
+host_veid_to_eth_ip()
+{
+ host_id=$1
+ veid=$2
+ ip_part1=$(($veid / 100))
+ ip_part2=$(($veid % 100))
+ id=$(echo "$host_id" | awk '{printf "%d", $1;}')
+ echo "10.$ip_part1.$id.$ip_part2"
+}
+
+hostname_to_veth_ip()
+{
+ host=$1
+
+ veid=${host##*-}
+ tmp=${host%-*}
+ host_id=${tmp##*-}
+
+ host_veid_to_eth_ip $host_id $veid
+}
+
+
+run_remote()
+{
+ host=$1
+ port=$2
+
+ client_type="$3"
+ listen_port="$4"
+ buffer_size="$5"
+ frequency="$6"
+ remote_ip="$7"
+ remote_port="$8"
+ remote_buffer_size="$9"
+
+ ssh -n -p $port p2p@$host "nohup /home/p2p/signal-socket/local_run_$experiment_type $client_type $listen_port $buffer_size $frequency $remote_ip $remote_port $remote_buffer_size &"
+}
+
+# TODO: rsync
+
+base_host1=${hostname1%-*}.grid.pub.ro
+base_host2=${hostname2%-*}.grid.pub.ro
+ssh_port1=${hostname1##*-}22
+ssh_port2=${hostname2##*-}22
+
+DEBUG echo "host1: p2p@$base_host1:$ssh_port1"
+DEBUG echo "host2: p2p@$base_host2:$ssh_port2"
+
+leader_ip=$(hostname_to_veth_ip $hostname1)
+follower_ip=$(hostname_to_veth_ip $hostname2)
+
+DEBUG echo "leader_ip = $leader_ip"
+DEBUG echo "follower_ip = $follower_ip"
+
+DEBUG echo "running remote leader ..."
+run_remote $base_host1 $ssh_port1 "leader" $leader_port $leader_buffer_size $leader_frequency $follower_ip $follower_port $follower_buffer_size
+DEBUG echo "running remote follower ..."
+run_remote $base_host2 $ssh_port2 "follower" $follower_port $follower_buffer_size $follower_frequency $leader_ip $leader_port $leader_buffer_size