mirror of https://github.com/dswd/vpncloud.git
Compare commits
2 Commits
a3a7e6c8a2
...
717c360ef1
Author | SHA1 | Date |
---|---|---|
Dennis Schwerdel | 717c360ef1 | |
Dennis Schwerdel | 689d00ba20 |
|
@ -10,7 +10,7 @@ RUN apt-get update \
|
||||||
libc6-dev-armhf-cross \
|
libc6-dev-armhf-cross \
|
||||||
libc6-dev-i386 \
|
libc6-dev-i386 \
|
||||||
gcc-5-multilib \
|
gcc-5-multilib \
|
||||||
ruby-ronn \
|
asciidoctor \
|
||||||
&& rm -rf /var/cache/dpkg
|
&& rm -rf /var/cache/dpkg
|
||||||
|
|
||||||
RUN ln -s asm-generic/ /usr/include/asm
|
RUN ln -s asm-generic/ /usr/include/asm
|
||||||
|
|
|
@ -1,9 +1,7 @@
|
||||||
FROM centos:7
|
FROM centos:7
|
||||||
|
|
||||||
RUN yum groupinstall -y 'Development Tools'
|
RUN yum groupinstall -y 'Development Tools'
|
||||||
|
RUN yum install -y ruby && gem install asciidoctor
|
||||||
RUN yum-config-manager --add-repo http://springdale.math.ias.edu/data/puias/computational/7/x86_64 \
|
|
||||||
&& yum install --nogpgcheck -y rubygem-ronn
|
|
||||||
|
|
||||||
ADD entrypoint.sh /entrypoint.sh
|
ADD entrypoint.sh /entrypoint.sh
|
||||||
|
|
||||||
|
|
21
perf.sh
21
perf.sh
|
@ -1,21 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
DST=$1
|
|
||||||
|
|
||||||
echo
|
|
||||||
echo "----------"
|
|
||||||
echo "Throughput"
|
|
||||||
echo "----------"
|
|
||||||
for i in 0 1 2; do
|
|
||||||
iperf -c $DST -t 30
|
|
||||||
done
|
|
||||||
|
|
||||||
for size in 100 500 1000; do
|
|
||||||
echo
|
|
||||||
echo "--------------------"
|
|
||||||
echo "Latency ($size Bytes)"
|
|
||||||
echo "--------------------"
|
|
||||||
for i in 0 1 2 3 4; do
|
|
||||||
ping $DST -c 30000 -i 0.001 -s $size -U -q
|
|
||||||
done
|
|
||||||
done
|
|
|
@ -0,0 +1,227 @@
|
||||||
|
{
|
||||||
|
"aes256-7000": {
|
||||||
|
"ping_500": {
|
||||||
|
"rtt_min": 0.074,
|
||||||
|
"rtt_avg": 0.088,
|
||||||
|
"pkt_loss": 0.0,
|
||||||
|
"rtt_max": 13.643
|
||||||
|
},
|
||||||
|
"iperf": {
|
||||||
|
"cpu_sender": 6.394363,
|
||||||
|
"cpu_receiver": 54.566188,
|
||||||
|
"throughput": 2736147000.0
|
||||||
|
},
|
||||||
|
"ping_100": {
|
||||||
|
"rtt_min": 0.073,
|
||||||
|
"rtt_avg": 0.085,
|
||||||
|
"pkt_loss": 0.0,
|
||||||
|
"rtt_max": 0.698
|
||||||
|
},
|
||||||
|
"ping_1000": {
|
||||||
|
"rtt_min": 0.077,
|
||||||
|
"rtt_avg": 0.089,
|
||||||
|
"pkt_loss": 0.0,
|
||||||
|
"rtt_max": 0.152
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"results": {
|
||||||
|
"throughput_mbits": {
|
||||||
|
"aes256-7000": 2736.147,
|
||||||
|
"plain-1400": 914.593510048459,
|
||||||
|
"chacha20-1400": 660.0519042921719,
|
||||||
|
"chacha20-7000": 2250.026,
|
||||||
|
"aes256-1400": 761.187334946869,
|
||||||
|
"plain-7000": 3930.962,
|
||||||
|
"native": 9678.675
|
||||||
|
},
|
||||||
|
"latency_ms": {
|
||||||
|
"aes256-7000": {
|
||||||
|
"100": 20.000000000000004,
|
||||||
|
"500": 20.499999999999996,
|
||||||
|
"1000": 21.5
|
||||||
|
},
|
||||||
|
"plain-1400": {
|
||||||
|
"100": 19.000000000000004,
|
||||||
|
"500": 19.000000000000004,
|
||||||
|
"1000": 20.499999999999996
|
||||||
|
},
|
||||||
|
"chacha20-1400": {
|
||||||
|
"100": 22.0,
|
||||||
|
"500": 23.0,
|
||||||
|
"1000": 26.500000000000004
|
||||||
|
},
|
||||||
|
"chacha20-7000": {
|
||||||
|
"100": 21.5,
|
||||||
|
"500": 23.5,
|
||||||
|
"1000": 26.500000000000004
|
||||||
|
},
|
||||||
|
"aes256-1400": {
|
||||||
|
"100": 19.000000000000004,
|
||||||
|
"500": 19.000000000000004,
|
||||||
|
"1000": 21.5
|
||||||
|
},
|
||||||
|
"plain-7000": {
|
||||||
|
"100": 18.500000000000004,
|
||||||
|
"500": 19.000000000000004,
|
||||||
|
"1000": 19.999999999999996
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"plain-1400": {
|
||||||
|
"ping_500": {
|
||||||
|
"rtt_min": 0.073,
|
||||||
|
"rtt_avg": 0.085,
|
||||||
|
"pkt_loss": 0.0,
|
||||||
|
"rtt_max": 13.084
|
||||||
|
},
|
||||||
|
"iperf": {
|
||||||
|
"cpu_sender": 2.973476,
|
||||||
|
"cpu_receiver": 70.948196,
|
||||||
|
"throughput": 914593510.048459
|
||||||
|
},
|
||||||
|
"ping_100": {
|
||||||
|
"rtt_min": 0.066,
|
||||||
|
"rtt_avg": 0.083,
|
||||||
|
"pkt_loss": 0.0,
|
||||||
|
"rtt_max": 13.291
|
||||||
|
},
|
||||||
|
"ping_1000": {
|
||||||
|
"rtt_min": 0.073,
|
||||||
|
"rtt_avg": 0.087,
|
||||||
|
"pkt_loss": 0.0,
|
||||||
|
"rtt_max": 13.257
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"chacha20-1400": {
|
||||||
|
"ping_500": {
|
||||||
|
"rtt_min": 0.08,
|
||||||
|
"rtt_avg": 0.093,
|
||||||
|
"pkt_loss": 0.0,
|
||||||
|
"rtt_max": 13.11
|
||||||
|
},
|
||||||
|
"iperf": {
|
||||||
|
"cpu_sender": 2.598758,
|
||||||
|
"cpu_receiver": 65.3863,
|
||||||
|
"throughput": 660051904.292172
|
||||||
|
},
|
||||||
|
"ping_100": {
|
||||||
|
"rtt_min": 0.071,
|
||||||
|
"rtt_avg": 0.089,
|
||||||
|
"pkt_loss": 0.0,
|
||||||
|
"rtt_max": 13.328
|
||||||
|
},
|
||||||
|
"ping_1000": {
|
||||||
|
"rtt_min": 0.084,
|
||||||
|
"rtt_avg": 0.099,
|
||||||
|
"pkt_loss": 0.0,
|
||||||
|
"rtt_max": 13.41
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"meta": {
|
||||||
|
"ami": "ami-0a02ee601d742e89f",
|
||||||
|
"instance_type": "m5.large",
|
||||||
|
"region": "eu-central-1",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"duration": 870.1210024356842
|
||||||
|
},
|
||||||
|
"chacha20-7000": {
|
||||||
|
"ping_500": {
|
||||||
|
"rtt_min": 0.079,
|
||||||
|
"rtt_avg": 0.094,
|
||||||
|
"pkt_loss": 0.0,
|
||||||
|
"rtt_max": 13.602
|
||||||
|
},
|
||||||
|
"iperf": {
|
||||||
|
"cpu_sender": 5.441034,
|
||||||
|
"cpu_receiver": 58.117002,
|
||||||
|
"throughput": 2250026000.0
|
||||||
|
},
|
||||||
|
"ping_100": {
|
||||||
|
"rtt_min": 0.07,
|
||||||
|
"rtt_avg": 0.088,
|
||||||
|
"pkt_loss": 0.0,
|
||||||
|
"rtt_max": 0.186
|
||||||
|
},
|
||||||
|
"ping_1000": {
|
||||||
|
"rtt_min": 0.085,
|
||||||
|
"rtt_avg": 0.099,
|
||||||
|
"pkt_loss": 0.0,
|
||||||
|
"rtt_max": 1.131
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"aes256-1400": {
|
||||||
|
"ping_500": {
|
||||||
|
"rtt_min": 0.073,
|
||||||
|
"rtt_avg": 0.085,
|
||||||
|
"pkt_loss": 0.0,
|
||||||
|
"rtt_max": 12.865
|
||||||
|
},
|
||||||
|
"iperf": {
|
||||||
|
"cpu_sender": 2.531172,
|
||||||
|
"cpu_receiver": 64.35578,
|
||||||
|
"throughput": 761187334.946869
|
||||||
|
},
|
||||||
|
"ping_100": {
|
||||||
|
"rtt_min": 0.069,
|
||||||
|
"rtt_avg": 0.083,
|
||||||
|
"pkt_loss": 0.0,
|
||||||
|
"rtt_max": 13.247
|
||||||
|
},
|
||||||
|
"ping_1000": {
|
||||||
|
"rtt_min": 0.075,
|
||||||
|
"rtt_avg": 0.089,
|
||||||
|
"pkt_loss": 0.0,
|
||||||
|
"rtt_max": 13.338
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"plain-7000": {
|
||||||
|
"ping_500": {
|
||||||
|
"rtt_min": 0.073,
|
||||||
|
"rtt_avg": 0.085,
|
||||||
|
"pkt_loss": 0.0,
|
||||||
|
"rtt_max": 13.48
|
||||||
|
},
|
||||||
|
"iperf": {
|
||||||
|
"cpu_sender": 9.545279,
|
||||||
|
"cpu_receiver": 66.830757,
|
||||||
|
"throughput": 3930962000.0
|
||||||
|
},
|
||||||
|
"ping_100": {
|
||||||
|
"rtt_min": 0.07,
|
||||||
|
"rtt_avg": 0.082,
|
||||||
|
"pkt_loss": 0.0,
|
||||||
|
"rtt_max": 0.2
|
||||||
|
},
|
||||||
|
"ping_1000": {
|
||||||
|
"rtt_min": 0.075,
|
||||||
|
"rtt_avg": 0.086,
|
||||||
|
"pkt_loss": 0.0,
|
||||||
|
"rtt_max": 0.927
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"native": {
|
||||||
|
"ping_500": {
|
||||||
|
"rtt_min": 0.04,
|
||||||
|
"rtt_avg": 0.047,
|
||||||
|
"pkt_loss": 0.0,
|
||||||
|
"rtt_max": 12.794
|
||||||
|
},
|
||||||
|
"iperf": {
|
||||||
|
"cpu_sender": 14.622503,
|
||||||
|
"cpu_receiver": 74.530595,
|
||||||
|
"throughput": 9678675000.0
|
||||||
|
},
|
||||||
|
"ping_100": {
|
||||||
|
"rtt_min": 0.038,
|
||||||
|
"rtt_avg": 0.045,
|
||||||
|
"pkt_loss": 0.0,
|
||||||
|
"rtt_max": 13.168
|
||||||
|
},
|
||||||
|
"ping_1000": {
|
||||||
|
"rtt_min": 0.041,
|
||||||
|
"rtt_avg": 0.046,
|
||||||
|
"pkt_loss": 0.0,
|
||||||
|
"rtt_max": 13.177
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,227 @@
|
||||||
|
{
|
||||||
|
"aes256-7000": {
|
||||||
|
"ping_500": {
|
||||||
|
"rtt_min": 0.074,
|
||||||
|
"rtt_avg": 0.086,
|
||||||
|
"pkt_loss": 0.0,
|
||||||
|
"rtt_max": 0.585
|
||||||
|
},
|
||||||
|
"iperf": {
|
||||||
|
"cpu_sender": 5.708496,
|
||||||
|
"cpu_receiver": 58.180282,
|
||||||
|
"throughput": 3004232000.0
|
||||||
|
},
|
||||||
|
"ping_100": {
|
||||||
|
"rtt_min": 0.071,
|
||||||
|
"rtt_avg": 0.084,
|
||||||
|
"pkt_loss": 0.0,
|
||||||
|
"rtt_max": 0.691
|
||||||
|
},
|
||||||
|
"ping_1000": {
|
||||||
|
"rtt_min": 0.073,
|
||||||
|
"rtt_avg": 0.087,
|
||||||
|
"pkt_loss": 0.0,
|
||||||
|
"rtt_max": 0.633
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"results": {
|
||||||
|
"throughput_mbits": {
|
||||||
|
"aes256-7000": 3004.232,
|
||||||
|
"plain-1400": 937.318890315313,
|
||||||
|
"chacha20-1400": 616.982586318721,
|
||||||
|
"chacha20-7000": 2139.102,
|
||||||
|
"aes256-1400": 804.276052366516,
|
||||||
|
"plain-7000": 4251.583,
|
||||||
|
"native": 9677.49
|
||||||
|
},
|
||||||
|
"latency_ms": {
|
||||||
|
"aes256-7000": {
|
||||||
|
"100": 19.500000000000004,
|
||||||
|
"500": 19.999999999999996,
|
||||||
|
"1000": 19.999999999999996
|
||||||
|
},
|
||||||
|
"plain-1400": {
|
||||||
|
"100": 18.500000000000004,
|
||||||
|
"500": 19.000000000000004,
|
||||||
|
"1000": 19.000000000000004
|
||||||
|
},
|
||||||
|
"chacha20-1400": {
|
||||||
|
"100": 21.5,
|
||||||
|
"500": 24.0,
|
||||||
|
"1000": 26.000000000000004
|
||||||
|
},
|
||||||
|
"chacha20-7000": {
|
||||||
|
"100": 21.5,
|
||||||
|
"500": 23.5,
|
||||||
|
"1000": 25.0
|
||||||
|
},
|
||||||
|
"aes256-1400": {
|
||||||
|
"100": 19.500000000000004,
|
||||||
|
"500": 20.499999999999996,
|
||||||
|
"1000": 19.999999999999996
|
||||||
|
},
|
||||||
|
"plain-7000": {
|
||||||
|
"100": 18.500000000000004,
|
||||||
|
"500": 18.500000000000004,
|
||||||
|
"1000": 19.000000000000004
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"plain-1400": {
|
||||||
|
"ping_500": {
|
||||||
|
"rtt_min": 0.069,
|
||||||
|
"rtt_avg": 0.084,
|
||||||
|
"pkt_loss": 0.0,
|
||||||
|
"rtt_max": 0.559
|
||||||
|
},
|
||||||
|
"iperf": {
|
||||||
|
"cpu_sender": 2.846318,
|
||||||
|
"cpu_receiver": 65.526508,
|
||||||
|
"throughput": 937318890.315313
|
||||||
|
},
|
||||||
|
"ping_100": {
|
||||||
|
"rtt_min": 0.064,
|
||||||
|
"rtt_avg": 0.082,
|
||||||
|
"pkt_loss": 0.0,
|
||||||
|
"rtt_max": 3.378
|
||||||
|
},
|
||||||
|
"ping_1000": {
|
||||||
|
"rtt_min": 0.072,
|
||||||
|
"rtt_avg": 0.085,
|
||||||
|
"pkt_loss": 0.0,
|
||||||
|
"rtt_max": 0.529
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"chacha20-1400": {
|
||||||
|
"ping_500": {
|
||||||
|
"rtt_min": 0.081,
|
||||||
|
"rtt_avg": 0.094,
|
||||||
|
"pkt_loss": 0.0,
|
||||||
|
"rtt_max": 0.537
|
||||||
|
},
|
||||||
|
"iperf": {
|
||||||
|
"cpu_sender": 2.220085,
|
||||||
|
"cpu_receiver": 59.560219,
|
||||||
|
"throughput": 616982586.318721
|
||||||
|
},
|
||||||
|
"ping_100": {
|
||||||
|
"rtt_min": 0.073,
|
||||||
|
"rtt_avg": 0.088,
|
||||||
|
"pkt_loss": 0.0,
|
||||||
|
"rtt_max": 0.641
|
||||||
|
},
|
||||||
|
"ping_1000": {
|
||||||
|
"rtt_min": 0.085,
|
||||||
|
"rtt_avg": 0.099,
|
||||||
|
"pkt_loss": 0.0,
|
||||||
|
"rtt_max": 0.67
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"meta": {
|
||||||
|
"ami": "ami-0a02ee601d742e89f",
|
||||||
|
"instance_type": "m5.large",
|
||||||
|
"region": "eu-central-1",
|
||||||
|
"version": "1.1.0",
|
||||||
|
"duration": 870.0856907367706
|
||||||
|
},
|
||||||
|
"chacha20-7000": {
|
||||||
|
"ping_500": {
|
||||||
|
"rtt_min": 0.079,
|
||||||
|
"rtt_avg": 0.093,
|
||||||
|
"pkt_loss": 0.0,
|
||||||
|
"rtt_max": 0.397
|
||||||
|
},
|
||||||
|
"iperf": {
|
||||||
|
"cpu_sender": 4.693588,
|
||||||
|
"cpu_receiver": 51.336932,
|
||||||
|
"throughput": 2139102000.0
|
||||||
|
},
|
||||||
|
"ping_100": {
|
||||||
|
"rtt_min": 0.074,
|
||||||
|
"rtt_avg": 0.088,
|
||||||
|
"pkt_loss": 0.0,
|
||||||
|
"rtt_max": 0.569
|
||||||
|
},
|
||||||
|
"ping_1000": {
|
||||||
|
"rtt_min": 0.084,
|
||||||
|
"rtt_avg": 0.097,
|
||||||
|
"pkt_loss": 0.0,
|
||||||
|
"rtt_max": 0.572
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"aes256-1400": {
|
||||||
|
"ping_500": {
|
||||||
|
"rtt_min": 0.071,
|
||||||
|
"rtt_avg": 0.087,
|
||||||
|
"pkt_loss": 0.0,
|
||||||
|
"rtt_max": 10.58
|
||||||
|
},
|
||||||
|
"iperf": {
|
||||||
|
"cpu_sender": 2.510188,
|
||||||
|
"cpu_receiver": 64.157275,
|
||||||
|
"throughput": 804276052.366516
|
||||||
|
},
|
||||||
|
"ping_100": {
|
||||||
|
"rtt_min": 0.067,
|
||||||
|
"rtt_avg": 0.084,
|
||||||
|
"pkt_loss": 0.0,
|
||||||
|
"rtt_max": 1.54
|
||||||
|
},
|
||||||
|
"ping_1000": {
|
||||||
|
"rtt_min": 0.071,
|
||||||
|
"rtt_avg": 0.087,
|
||||||
|
"pkt_loss": 0.0,
|
||||||
|
"rtt_max": 0.237
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"plain-7000": {
|
||||||
|
"ping_500": {
|
||||||
|
"rtt_min": 0.068,
|
||||||
|
"rtt_avg": 0.083,
|
||||||
|
"pkt_loss": 0.0,
|
||||||
|
"rtt_max": 0.402
|
||||||
|
},
|
||||||
|
"iperf": {
|
||||||
|
"cpu_sender": 8.801774,
|
||||||
|
"cpu_receiver": 66.18731,
|
||||||
|
"throughput": 4251583000.0
|
||||||
|
},
|
||||||
|
"ping_100": {
|
||||||
|
"rtt_min": 0.067,
|
||||||
|
"rtt_avg": 0.082,
|
||||||
|
"pkt_loss": 0.0,
|
||||||
|
"rtt_max": 0.701
|
||||||
|
},
|
||||||
|
"ping_1000": {
|
||||||
|
"rtt_min": 0.07,
|
||||||
|
"rtt_avg": 0.085,
|
||||||
|
"pkt_loss": 0.0,
|
||||||
|
"rtt_max": 0.266
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"native": {
|
||||||
|
"ping_500": {
|
||||||
|
"rtt_min": 0.041,
|
||||||
|
"rtt_avg": 0.046,
|
||||||
|
"pkt_loss": 0.0,
|
||||||
|
"rtt_max": 0.52
|
||||||
|
},
|
||||||
|
"iperf": {
|
||||||
|
"cpu_sender": 14.901057,
|
||||||
|
"cpu_receiver": 61.512449,
|
||||||
|
"throughput": 9677490000.0
|
||||||
|
},
|
||||||
|
"ping_100": {
|
||||||
|
"rtt_min": 0.038,
|
||||||
|
"rtt_avg": 0.045,
|
||||||
|
"pkt_loss": 0.0,
|
||||||
|
"rtt_max": 0.651
|
||||||
|
},
|
||||||
|
"ping_1000": {
|
||||||
|
"rtt_min": 0.041,
|
||||||
|
"rtt_avg": 0.047,
|
||||||
|
"pkt_loss": 0.0,
|
||||||
|
"rtt_max": 0.663
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,227 @@
|
||||||
|
{
|
||||||
|
"aes256-7000": {
|
||||||
|
"ping_500": {
|
||||||
|
"rtt_min": 0.077,
|
||||||
|
"rtt_avg": 0.091,
|
||||||
|
"pkt_loss": 0.0,
|
||||||
|
"rtt_max": 0.22
|
||||||
|
},
|
||||||
|
"iperf": {
|
||||||
|
"cpu_sender": 4.870841,
|
||||||
|
"cpu_receiver": 58.056654,
|
||||||
|
"throughput": 2906372000.0
|
||||||
|
},
|
||||||
|
"ping_100": {
|
||||||
|
"rtt_min": 0.076,
|
||||||
|
"rtt_avg": 0.09,
|
||||||
|
"pkt_loss": 0.0,
|
||||||
|
"rtt_max": 0.597
|
||||||
|
},
|
||||||
|
"ping_1000": {
|
||||||
|
"rtt_min": 0.078,
|
||||||
|
"rtt_avg": 0.093,
|
||||||
|
"pkt_loss": 0.0,
|
||||||
|
"rtt_max": 0.925
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"results": {
|
||||||
|
"throughput_mbits": {
|
||||||
|
"aes256-7000": 2906.372,
|
||||||
|
"plain-1400": 845.4989025966671,
|
||||||
|
"chacha20-1400": 593.980680023114,
|
||||||
|
"chacha20-7000": 2290.887,
|
||||||
|
"aes256-1400": 752.968939682118,
|
||||||
|
"plain-7000": 4438.046,
|
||||||
|
"native": 9680.156
|
||||||
|
},
|
||||||
|
"latency_ms": {
|
||||||
|
"aes256-7000": {
|
||||||
|
"100": 22.0,
|
||||||
|
"500": 21.5,
|
||||||
|
"1000": 22.0
|
||||||
|
},
|
||||||
|
"plain-1400": {
|
||||||
|
"100": 20.499999999999996,
|
||||||
|
"500": 20.499999999999996,
|
||||||
|
"1000": 20.999999999999996
|
||||||
|
},
|
||||||
|
"chacha20-1400": {
|
||||||
|
"100": 23.5,
|
||||||
|
"500": 25.500000000000004,
|
||||||
|
"1000": 27.499999999999996
|
||||||
|
},
|
||||||
|
"chacha20-7000": {
|
||||||
|
"100": 23.5,
|
||||||
|
"500": 25.500000000000004,
|
||||||
|
"1000": 26.999999999999996
|
||||||
|
},
|
||||||
|
"aes256-1400": {
|
||||||
|
"100": 21.5,
|
||||||
|
"500": 22.0,
|
||||||
|
"1000": 22.5
|
||||||
|
},
|
||||||
|
"plain-7000": {
|
||||||
|
"100": 20.499999999999996,
|
||||||
|
"500": 20.499999999999996,
|
||||||
|
"1000": 20.499999999999996
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"plain-1400": {
|
||||||
|
"ping_500": {
|
||||||
|
"rtt_min": 0.074,
|
||||||
|
"rtt_avg": 0.089,
|
||||||
|
"pkt_loss": 0.0,
|
||||||
|
"rtt_max": 3.605
|
||||||
|
},
|
||||||
|
"iperf": {
|
||||||
|
"cpu_sender": 1.925076,
|
||||||
|
"cpu_receiver": 65.76581,
|
||||||
|
"throughput": 845498902.596667
|
||||||
|
},
|
||||||
|
"ping_100": {
|
||||||
|
"rtt_min": 0.071,
|
||||||
|
"rtt_avg": 0.087,
|
||||||
|
"pkt_loss": 0.0,
|
||||||
|
"rtt_max": 0.381
|
||||||
|
},
|
||||||
|
"ping_1000": {
|
||||||
|
"rtt_min": 0.077,
|
||||||
|
"rtt_avg": 0.091,
|
||||||
|
"pkt_loss": 0.0,
|
||||||
|
"rtt_max": 3.54
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"chacha20-1400": {
|
||||||
|
"ping_500": {
|
||||||
|
"rtt_min": 0.085,
|
||||||
|
"rtt_avg": 0.099,
|
||||||
|
"pkt_loss": 0.0,
|
||||||
|
"rtt_max": 1.654
|
||||||
|
},
|
||||||
|
"iperf": {
|
||||||
|
"cpu_sender": 1.538928,
|
||||||
|
"cpu_receiver": 59.900258,
|
||||||
|
"throughput": 593980680.023114
|
||||||
|
},
|
||||||
|
"ping_100": {
|
||||||
|
"rtt_min": 0.074,
|
||||||
|
"rtt_avg": 0.093,
|
||||||
|
"pkt_loss": 0.0,
|
||||||
|
"rtt_max": 0.382
|
||||||
|
},
|
||||||
|
"ping_1000": {
|
||||||
|
"rtt_min": 0.088,
|
||||||
|
"rtt_avg": 0.104,
|
||||||
|
"pkt_loss": 0.0,
|
||||||
|
"rtt_max": 3.686
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"meta": {
|
||||||
|
"ami": "ami-0a02ee601d742e89f",
|
||||||
|
"instance_type": "m5.large",
|
||||||
|
"region": "eu-central-1",
|
||||||
|
"version": "1.2.0",
|
||||||
|
"duration": 870.1119563579559
|
||||||
|
},
|
||||||
|
"chacha20-7000": {
|
||||||
|
"ping_500": {
|
||||||
|
"rtt_min": 0.082,
|
||||||
|
"rtt_avg": 0.099,
|
||||||
|
"pkt_loss": 0.0,
|
||||||
|
"rtt_max": 0.702
|
||||||
|
},
|
||||||
|
"iperf": {
|
||||||
|
"cpu_sender": 4.365811,
|
||||||
|
"cpu_receiver": 57.666402,
|
||||||
|
"throughput": 2290887000.0
|
||||||
|
},
|
||||||
|
"ping_100": {
|
||||||
|
"rtt_min": 0.075,
|
||||||
|
"rtt_avg": 0.093,
|
||||||
|
"pkt_loss": 0.0,
|
||||||
|
"rtt_max": 0.591
|
||||||
|
},
|
||||||
|
"ping_1000": {
|
||||||
|
"rtt_min": 0.09,
|
||||||
|
"rtt_avg": 0.103,
|
||||||
|
"pkt_loss": 0.0,
|
||||||
|
"rtt_max": 0.352
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"aes256-1400": {
|
||||||
|
"ping_500": {
|
||||||
|
"rtt_min": 0.077,
|
||||||
|
"rtt_avg": 0.092,
|
||||||
|
"pkt_loss": 0.0,
|
||||||
|
"rtt_max": 0.239
|
||||||
|
},
|
||||||
|
"iperf": {
|
||||||
|
"cpu_sender": 1.643239,
|
||||||
|
"cpu_receiver": 64.53098,
|
||||||
|
"throughput": 752968939.682118
|
||||||
|
},
|
||||||
|
"ping_100": {
|
||||||
|
"rtt_min": 0.075,
|
||||||
|
"rtt_avg": 0.089,
|
||||||
|
"pkt_loss": 0.0,
|
||||||
|
"rtt_max": 1.615
|
||||||
|
},
|
||||||
|
"ping_1000": {
|
||||||
|
"rtt_min": 0.08,
|
||||||
|
"rtt_avg": 0.094,
|
||||||
|
"pkt_loss": 0.0,
|
||||||
|
"rtt_max": 0.676
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"plain-7000": {
|
||||||
|
"ping_500": {
|
||||||
|
"rtt_min": 0.074,
|
||||||
|
"rtt_avg": 0.089,
|
||||||
|
"pkt_loss": 0.0,
|
||||||
|
"rtt_max": 0.586
|
||||||
|
},
|
||||||
|
"iperf": {
|
||||||
|
"cpu_sender": 13.25846,
|
||||||
|
"cpu_receiver": 68.481618,
|
||||||
|
"throughput": 4438046000.0
|
||||||
|
},
|
||||||
|
"ping_100": {
|
||||||
|
"rtt_min": 0.071,
|
||||||
|
"rtt_avg": 0.087,
|
||||||
|
"pkt_loss": 0.0,
|
||||||
|
"rtt_max": 0.503
|
||||||
|
},
|
||||||
|
"ping_1000": {
|
||||||
|
"rtt_min": 0.076,
|
||||||
|
"rtt_avg": 0.09,
|
||||||
|
"pkt_loss": 0.0,
|
||||||
|
"rtt_max": 0.234
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"native": {
|
||||||
|
"ping_500": {
|
||||||
|
"rtt_min": 0.042,
|
||||||
|
"rtt_avg": 0.048,
|
||||||
|
"pkt_loss": 0.0,
|
||||||
|
"rtt_max": 0.305
|
||||||
|
},
|
||||||
|
"iperf": {
|
||||||
|
"cpu_sender": 19.960378,
|
||||||
|
"cpu_receiver": 65.885621,
|
||||||
|
"throughput": 9680156000.0
|
||||||
|
},
|
||||||
|
"ping_100": {
|
||||||
|
"rtt_min": 0.041,
|
||||||
|
"rtt_avg": 0.046,
|
||||||
|
"pkt_loss": 0.0,
|
||||||
|
"rtt_max": 0.312
|
||||||
|
},
|
||||||
|
"ping_1000": {
|
||||||
|
"rtt_min": 0.043,
|
||||||
|
"rtt_avg": 0.049,
|
||||||
|
"pkt_loss": 0.0,
|
||||||
|
"rtt_max": 0.509
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,227 @@
|
||||||
|
{
|
||||||
|
"meta": {
|
||||||
|
"region": "eu-central-1",
|
||||||
|
"instance_type": "m5.large",
|
||||||
|
"ami": "ami-0a02ee601d742e89f",
|
||||||
|
"version": "1.3.0",
|
||||||
|
"duration": 869.9226264953613
|
||||||
|
},
|
||||||
|
"native": {
|
||||||
|
"iperf": {
|
||||||
|
"throughput": 9678121000.0,
|
||||||
|
"cpu_sender": 18.541256,
|
||||||
|
"cpu_receiver": 65.911053
|
||||||
|
},
|
||||||
|
"ping_100": {
|
||||||
|
"rtt_min": 0.047,
|
||||||
|
"rtt_max": 0.113,
|
||||||
|
"rtt_avg": 0.054,
|
||||||
|
"pkt_loss": 0.0
|
||||||
|
},
|
||||||
|
"ping_500": {
|
||||||
|
"rtt_min": 0.05,
|
||||||
|
"rtt_max": 0.14,
|
||||||
|
"rtt_avg": 0.055,
|
||||||
|
"pkt_loss": 0.0
|
||||||
|
},
|
||||||
|
"ping_1000": {
|
||||||
|
"rtt_min": 0.049,
|
||||||
|
"rtt_max": 0.173,
|
||||||
|
"rtt_avg": 0.056,
|
||||||
|
"pkt_loss": 0.0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"plain-1400": {
|
||||||
|
"iperf": {
|
||||||
|
"throughput": 937787147.728354,
|
||||||
|
"cpu_sender": 3.517415,
|
||||||
|
"cpu_receiver": 66.394897
|
||||||
|
},
|
||||||
|
"ping_100": {
|
||||||
|
"rtt_min": 0.074,
|
||||||
|
"rtt_max": 0.242,
|
||||||
|
"rtt_avg": 0.09,
|
||||||
|
"pkt_loss": 0.0
|
||||||
|
},
|
||||||
|
"ping_500": {
|
||||||
|
"rtt_min": 0.076,
|
||||||
|
"rtt_max": 0.256,
|
||||||
|
"rtt_avg": 0.091,
|
||||||
|
"pkt_loss": 0.0
|
||||||
|
},
|
||||||
|
"ping_1000": {
|
||||||
|
"rtt_min": 0.076,
|
||||||
|
"rtt_max": 0.333,
|
||||||
|
"rtt_avg": 0.092,
|
||||||
|
"pkt_loss": 0.0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"aes256-1400": {
|
||||||
|
"iperf": {
|
||||||
|
"throughput": 840253358.805319,
|
||||||
|
"cpu_sender": 3.11095,
|
||||||
|
"cpu_receiver": 63.676868
|
||||||
|
},
|
||||||
|
"ping_100": {
|
||||||
|
"rtt_min": 0.077,
|
||||||
|
"rtt_max": 1.619,
|
||||||
|
"rtt_avg": 0.094,
|
||||||
|
"pkt_loss": 0.0
|
||||||
|
},
|
||||||
|
"ping_500": {
|
||||||
|
"rtt_min": 0.078,
|
||||||
|
"rtt_max": 0.437,
|
||||||
|
"rtt_avg": 0.096,
|
||||||
|
"pkt_loss": 0.0
|
||||||
|
},
|
||||||
|
"ping_1000": {
|
||||||
|
"rtt_min": 0.083,
|
||||||
|
"rtt_max": 3.592,
|
||||||
|
"rtt_avg": 0.098,
|
||||||
|
"pkt_loss": 0.0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"chacha20-1400": {
|
||||||
|
"iperf": {
|
||||||
|
"throughput": 675882455.008626,
|
||||||
|
"cpu_sender": 2.813117,
|
||||||
|
"cpu_receiver": 60.831832
|
||||||
|
},
|
||||||
|
"ping_100": {
|
||||||
|
"rtt_min": 0.079,
|
||||||
|
"rtt_max": 0.249,
|
||||||
|
"rtt_avg": 0.096,
|
||||||
|
"pkt_loss": 0.0
|
||||||
|
},
|
||||||
|
"ping_500": {
|
||||||
|
"rtt_min": 0.085,
|
||||||
|
"rtt_max": 0.29,
|
||||||
|
"rtt_avg": 0.101,
|
||||||
|
"pkt_loss": 0.0
|
||||||
|
},
|
||||||
|
"ping_1000": {
|
||||||
|
"rtt_min": 0.089,
|
||||||
|
"rtt_max": 0.222,
|
||||||
|
"rtt_avg": 0.108,
|
||||||
|
"pkt_loss": 0.0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"plain-7000": {
|
||||||
|
"iperf": {
|
||||||
|
"throughput": 4207272000.0,
|
||||||
|
"cpu_sender": 11.512448,
|
||||||
|
"cpu_receiver": 64.622926
|
||||||
|
},
|
||||||
|
"ping_100": {
|
||||||
|
"rtt_min": 0.074,
|
||||||
|
"rtt_max": 0.214,
|
||||||
|
"rtt_avg": 0.092,
|
||||||
|
"pkt_loss": 0.0
|
||||||
|
},
|
||||||
|
"ping_500": {
|
||||||
|
"rtt_min": 0.076,
|
||||||
|
"rtt_max": 0.341,
|
||||||
|
"rtt_avg": 0.091,
|
||||||
|
"pkt_loss": 0.0
|
||||||
|
},
|
||||||
|
"ping_1000": {
|
||||||
|
"rtt_min": 0.079,
|
||||||
|
"rtt_max": 0.271,
|
||||||
|
"rtt_avg": 0.095,
|
||||||
|
"pkt_loss": 0.0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"aes256-7000": {
|
||||||
|
"iperf": {
|
||||||
|
"throughput": 2896202000.0,
|
||||||
|
"cpu_sender": 8.098468,
|
||||||
|
"cpu_receiver": 57.364265
|
||||||
|
},
|
||||||
|
"ping_100": {
|
||||||
|
"rtt_min": 0.078,
|
||||||
|
"rtt_max": 0.173,
|
||||||
|
"rtt_avg": 0.094,
|
||||||
|
"pkt_loss": 0.0
|
||||||
|
},
|
||||||
|
"ping_500": {
|
||||||
|
"rtt_min": 0.079,
|
||||||
|
"rtt_max": 0.424,
|
||||||
|
"rtt_avg": 0.095,
|
||||||
|
"pkt_loss": 0.0
|
||||||
|
},
|
||||||
|
"ping_1000": {
|
||||||
|
"rtt_min": 0.083,
|
||||||
|
"rtt_max": 0.224,
|
||||||
|
"rtt_avg": 0.098,
|
||||||
|
"pkt_loss": 0.0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"chacha20-7000": {
|
||||||
|
"iperf": {
|
||||||
|
"throughput": 2262884000.0,
|
||||||
|
"cpu_sender": 5.687549,
|
||||||
|
"cpu_receiver": 54.00455
|
||||||
|
},
|
||||||
|
"ping_100": {
|
||||||
|
"rtt_min": 0.078,
|
||||||
|
"rtt_max": 1.712,
|
||||||
|
"rtt_avg": 0.097,
|
||||||
|
"pkt_loss": 0.0
|
||||||
|
},
|
||||||
|
"ping_500": {
|
||||||
|
"rtt_min": 0.084,
|
||||||
|
"rtt_max": 0.353,
|
||||||
|
"rtt_avg": 0.101,
|
||||||
|
"pkt_loss": 0.0
|
||||||
|
},
|
||||||
|
"ping_1000": {
|
||||||
|
"rtt_min": 0.091,
|
||||||
|
"rtt_max": 0.227,
|
||||||
|
"rtt_avg": 0.107,
|
||||||
|
"pkt_loss": 0.0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"results": {
|
||||||
|
"throughput_mbits": {
|
||||||
|
"native": 9678.121,
|
||||||
|
"plain-1400": 937.787147728354,
|
||||||
|
"aes256-1400": 840.253358805319,
|
||||||
|
"chacha20-1400": 675.882455008626,
|
||||||
|
"plain-7000": 4207.272,
|
||||||
|
"aes256-7000": 2896.202,
|
||||||
|
"chacha20-7000": 2262.884
|
||||||
|
},
|
||||||
|
"latency_ms": {
|
||||||
|
"plain-1400": {
|
||||||
|
"100": 18.0,
|
||||||
|
"500": 18.0,
|
||||||
|
"1000": 18.0
|
||||||
|
},
|
||||||
|
"aes256-1400": {
|
||||||
|
"100": 20.0,
|
||||||
|
"500": 20.5,
|
||||||
|
"1000": 21.0
|
||||||
|
},
|
||||||
|
"chacha20-1400": {
|
||||||
|
"100": 21.0,
|
||||||
|
"500": 23.000000000000004,
|
||||||
|
"1000": 26.0
|
||||||
|
},
|
||||||
|
"plain-7000": {
|
||||||
|
"100": 19.0,
|
||||||
|
"500": 18.0,
|
||||||
|
"1000": 19.5
|
||||||
|
},
|
||||||
|
"aes256-7000": {
|
||||||
|
"100": 20.0,
|
||||||
|
"500": 20.0,
|
||||||
|
"1000": 21.0
|
||||||
|
},
|
||||||
|
"chacha20-7000": {
|
||||||
|
"100": 21.5,
|
||||||
|
"500": 23.000000000000004,
|
||||||
|
"1000": 25.5
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,227 @@
|
||||||
|
{
|
||||||
|
"meta": {
|
||||||
|
"region": "eu-central-1",
|
||||||
|
"instance_type": "m5.large",
|
||||||
|
"ami": "ami-0a02ee601d742e89f",
|
||||||
|
"version": "1.4.0",
|
||||||
|
"duration": 869.958389043808
|
||||||
|
},
|
||||||
|
"native": {
|
||||||
|
"iperf": {
|
||||||
|
"throughput": 9680326000.0,
|
||||||
|
"cpu_sender": 16.947174,
|
||||||
|
"cpu_receiver": 62.788147
|
||||||
|
},
|
||||||
|
"ping_100": {
|
||||||
|
"rtt_min": 0.031,
|
||||||
|
"rtt_max": 0.404,
|
||||||
|
"rtt_avg": 0.035,
|
||||||
|
"pkt_loss": 0.0
|
||||||
|
},
|
||||||
|
"ping_500": {
|
||||||
|
"rtt_min": 0.033,
|
||||||
|
"rtt_max": 0.34,
|
||||||
|
"rtt_avg": 0.037,
|
||||||
|
"pkt_loss": 0.0
|
||||||
|
},
|
||||||
|
"ping_1000": {
|
||||||
|
"rtt_min": 0.034,
|
||||||
|
"rtt_max": 0.216,
|
||||||
|
"rtt_avg": 0.038,
|
||||||
|
"pkt_loss": 0.0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"plain-1400": {
|
||||||
|
"iperf": {
|
||||||
|
"throughput": 940748265.414369,
|
||||||
|
"cpu_sender": 2.128748,
|
||||||
|
"cpu_receiver": 67.266424
|
||||||
|
},
|
||||||
|
"ping_100": {
|
||||||
|
"rtt_min": 0.061,
|
||||||
|
"rtt_max": 0.214,
|
||||||
|
"rtt_avg": 0.073,
|
||||||
|
"pkt_loss": 0.0
|
||||||
|
},
|
||||||
|
"ping_500": {
|
||||||
|
"rtt_min": 0.061,
|
||||||
|
"rtt_max": 0.209,
|
||||||
|
"rtt_avg": 0.074,
|
||||||
|
"pkt_loss": 0.0
|
||||||
|
},
|
||||||
|
"ping_1000": {
|
||||||
|
"rtt_min": 0.063,
|
||||||
|
"rtt_max": 0.212,
|
||||||
|
"rtt_avg": 0.076,
|
||||||
|
"pkt_loss": 0.0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"aes256-1400": {
|
||||||
|
"iperf": {
|
||||||
|
"throughput": 848072373.681968,
|
||||||
|
"cpu_sender": 3.673014,
|
||||||
|
"cpu_receiver": 67.785447
|
||||||
|
},
|
||||||
|
"ping_100": {
|
||||||
|
"rtt_min": 0.062,
|
||||||
|
"rtt_max": 1.592,
|
||||||
|
"rtt_avg": 0.076,
|
||||||
|
"pkt_loss": 0.0
|
||||||
|
},
|
||||||
|
"ping_500": {
|
||||||
|
"rtt_min": 0.065,
|
||||||
|
"rtt_max": 0.276,
|
||||||
|
"rtt_avg": 0.078,
|
||||||
|
"pkt_loss": 0.0
|
||||||
|
},
|
||||||
|
"ping_1000": {
|
||||||
|
"rtt_min": 0.066,
|
||||||
|
"rtt_max": 3.276,
|
||||||
|
"rtt_avg": 0.08,
|
||||||
|
"pkt_loss": 0.0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"chacha20-1400": {
|
||||||
|
"iperf": {
|
||||||
|
"throughput": 651477352.697557,
|
||||||
|
"cpu_sender": 3.299836,
|
||||||
|
"cpu_receiver": 62.990183
|
||||||
|
},
|
||||||
|
"ping_100": {
|
||||||
|
"rtt_min": 0.066,
|
||||||
|
"rtt_max": 2.066,
|
||||||
|
"rtt_avg": 0.079,
|
||||||
|
"pkt_loss": 0.0
|
||||||
|
},
|
||||||
|
"ping_500": {
|
||||||
|
"rtt_min": 0.071,
|
||||||
|
"rtt_max": 0.185,
|
||||||
|
"rtt_avg": 0.084,
|
||||||
|
"pkt_loss": 0.0
|
||||||
|
},
|
||||||
|
"ping_1000": {
|
||||||
|
"rtt_min": 0.075,
|
||||||
|
"rtt_max": 0.624,
|
||||||
|
"rtt_avg": 0.089,
|
||||||
|
"pkt_loss": 0.0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"plain-7000": {
|
||||||
|
"iperf": {
|
||||||
|
"throughput": 4369926000.0,
|
||||||
|
"cpu_sender": 13.042179,
|
||||||
|
"cpu_receiver": 68.669349
|
||||||
|
},
|
||||||
|
"ping_100": {
|
||||||
|
"rtt_min": 0.06,
|
||||||
|
"rtt_max": 0.227,
|
||||||
|
"rtt_avg": 0.075,
|
||||||
|
"pkt_loss": 0.0
|
||||||
|
},
|
||||||
|
"ping_500": {
|
||||||
|
"rtt_min": 0.064,
|
||||||
|
"rtt_max": 0.22,
|
||||||
|
"rtt_avg": 0.078,
|
||||||
|
"pkt_loss": 0.0
|
||||||
|
},
|
||||||
|
"ping_1000": {
|
||||||
|
"rtt_min": 0.063,
|
||||||
|
"rtt_max": 0.168,
|
||||||
|
"rtt_avg": 0.076,
|
||||||
|
"pkt_loss": 0.0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"aes256-7000": {
|
||||||
|
"iperf": {
|
||||||
|
"throughput": 3108569000.0,
|
||||||
|
"cpu_sender": 5.808026,
|
||||||
|
"cpu_receiver": 62.726234
|
||||||
|
},
|
||||||
|
"ping_100": {
|
||||||
|
"rtt_min": 0.064,
|
||||||
|
"rtt_max": 0.267,
|
||||||
|
"rtt_avg": 0.078,
|
||||||
|
"pkt_loss": 0.0
|
||||||
|
},
|
||||||
|
"ping_500": {
|
||||||
|
"rtt_min": 0.066,
|
||||||
|
"rtt_max": 0.297,
|
||||||
|
"rtt_avg": 0.08,
|
||||||
|
"pkt_loss": 0.0
|
||||||
|
},
|
||||||
|
"ping_1000": {
|
||||||
|
"rtt_min": 0.069,
|
||||||
|
"rtt_max": 0.208,
|
||||||
|
"rtt_avg": 0.082,
|
||||||
|
"pkt_loss": 0.0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"chacha20-7000": {
|
||||||
|
"iperf": {
|
||||||
|
"throughput": 2136825000.0,
|
||||||
|
"cpu_sender": 4.381177,
|
||||||
|
"cpu_receiver": 50.957336
|
||||||
|
},
|
||||||
|
"ping_100": {
|
||||||
|
"rtt_min": 0.065,
|
||||||
|
"rtt_max": 0.235,
|
||||||
|
"rtt_avg": 0.08,
|
||||||
|
"pkt_loss": 0.0
|
||||||
|
},
|
||||||
|
"ping_500": {
|
||||||
|
"rtt_min": 0.072,
|
||||||
|
"rtt_max": 0.26,
|
||||||
|
"rtt_avg": 0.087,
|
||||||
|
"pkt_loss": 0.0
|
||||||
|
},
|
||||||
|
"ping_1000": {
|
||||||
|
"rtt_min": 0.078,
|
||||||
|
"rtt_max": 0.308,
|
||||||
|
"rtt_avg": 0.091,
|
||||||
|
"pkt_loss": 0.0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"results": {
|
||||||
|
"throughput_mbits": {
|
||||||
|
"native": 9680.326,
|
||||||
|
"plain-1400": 940.748265414369,
|
||||||
|
"aes256-1400": 848.072373681968,
|
||||||
|
"chacha20-1400": 651.477352697557,
|
||||||
|
"plain-7000": 4369.926,
|
||||||
|
"aes256-7000": 3108.569,
|
||||||
|
"chacha20-7000": 2136.825
|
||||||
|
},
|
||||||
|
"latency_ms": {
|
||||||
|
"plain-1400": {
|
||||||
|
"100": 18.999999999999996,
|
||||||
|
"500": 18.5,
|
||||||
|
"1000": 19.0
|
||||||
|
},
|
||||||
|
"aes256-1400": {
|
||||||
|
"100": 20.499999999999996,
|
||||||
|
"500": 20.5,
|
||||||
|
"1000": 21.0
|
||||||
|
},
|
||||||
|
"chacha20-1400": {
|
||||||
|
"100": 22.0,
|
||||||
|
"500": 23.500000000000004,
|
||||||
|
"1000": 25.5
|
||||||
|
},
|
||||||
|
"plain-7000": {
|
||||||
|
"100": 19.999999999999996,
|
||||||
|
"500": 20.5,
|
||||||
|
"1000": 19.0
|
||||||
|
},
|
||||||
|
"aes256-7000": {
|
||||||
|
"100": 21.5,
|
||||||
|
"500": 21.5,
|
||||||
|
"1000": 22.000000000000004
|
||||||
|
},
|
||||||
|
"chacha20-7000": {
|
||||||
|
"100": 22.5,
|
||||||
|
"500": 24.999999999999996,
|
||||||
|
"1000": 26.5
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,387 @@
|
||||||
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
import boto3
|
||||||
|
import atexit
|
||||||
|
import paramiko
|
||||||
|
import io
|
||||||
|
import time
|
||||||
|
import threading
|
||||||
|
import re
|
||||||
|
import json
|
||||||
|
import base64
|
||||||
|
import sys
|
||||||
|
from datetime import date
|
||||||
|
|
||||||
|
|
||||||
|
# Note: this script will run for 15 minutes and incur costs of about $ 0.03
|
||||||
|
|
||||||
|
REGION = "eu-central-1"
|
||||||
|
AMI = "ami-0a02ee601d742e89f"
|
||||||
|
USERNAME = "ec2-user"
|
||||||
|
INSTANCE_TYPE = "m5.large"
|
||||||
|
SPOT = True
|
||||||
|
MAX_PRICE = "0.08" # USD per hour per VM
|
||||||
|
|
||||||
|
VERSION = "1.4.0"
|
||||||
|
|
||||||
|
USERDATA = """#cloud-config
|
||||||
|
packages:
|
||||||
|
- iperf3
|
||||||
|
runcmd:
|
||||||
|
- wget https://github.com/dswd/vpncloud/releases/download/v{version}/vpncloud_{version}.x86_64.rpm -O /tmp/vpncloud.rpm
|
||||||
|
- yum install -y /tmp/vpncloud.rpm
|
||||||
|
""".format(version=VERSION)
|
||||||
|
|
||||||
|
MAX_WAIT = 300
|
||||||
|
|
||||||
|
def eprint(*args, **kwargs):
|
||||||
|
print(*args, file=sys.stderr, **kwargs)
|
||||||
|
|
||||||
|
def run_cmd(connection, cmd):
|
||||||
|
_stdin, stdout, stderr = connection.exec_command(cmd)
|
||||||
|
out = stdout.read().decode('utf-8')
|
||||||
|
err = stderr.read().decode('utf-8')
|
||||||
|
code = stdout.channel.recv_exit_status()
|
||||||
|
if code:
|
||||||
|
raise Exception("Command failed", code, out, err)
|
||||||
|
else:
|
||||||
|
return out, err
|
||||||
|
|
||||||
|
|
||||||
|
class EC2Environment:
|
||||||
|
def __init__(self):
|
||||||
|
self.vpc = None
|
||||||
|
self.igw = None
|
||||||
|
self.rtb = None
|
||||||
|
self.subnet = None
|
||||||
|
self.sg = None
|
||||||
|
self.key_pair = None
|
||||||
|
self.rsa_key = None
|
||||||
|
self.placement_group = None
|
||||||
|
self.sender = None
|
||||||
|
self.receiver = None
|
||||||
|
self.sender_request = None
|
||||||
|
self.receiver_request = None
|
||||||
|
self.sender_ssh = None
|
||||||
|
self.receiver_ssh = None
|
||||||
|
try:
|
||||||
|
self.setup()
|
||||||
|
self.wait_until_ready()
|
||||||
|
eprint("Setup done")
|
||||||
|
except:
|
||||||
|
eprint("Error, shutting down")
|
||||||
|
self.terminate()
|
||||||
|
raise
|
||||||
|
|
||||||
|
def setup(self):
|
||||||
|
ec2 = boto3.resource('ec2', region_name=REGION)
|
||||||
|
ec2client = boto3.client('ec2', region_name=REGION)
|
||||||
|
|
||||||
|
self.vpc = ec2.create_vpc(CidrBlock='172.16.0.0/16')
|
||||||
|
eprint("Created VPC {}".format(self.vpc.id))
|
||||||
|
self.vpc.create_tags(Tags=[{"Key": "Name", "Value": "vpncloud-perf-test"}])
|
||||||
|
self.vpc.wait_until_available()
|
||||||
|
ec2client.modify_vpc_attribute(VpcId=self.vpc.id, EnableDnsSupport={'Value': True})
|
||||||
|
ec2client.modify_vpc_attribute(VpcId=self.vpc.id, EnableDnsHostnames={'Value': True})
|
||||||
|
|
||||||
|
self.igw = ec2.create_internet_gateway()
|
||||||
|
eprint("Created Internet Gateway {}".format(self.igw.id))
|
||||||
|
self.igw.attach_to_vpc(VpcId=self.vpc.id)
|
||||||
|
|
||||||
|
self.rtb = self.vpc.create_route_table()
|
||||||
|
eprint("Created Routing table {}".format(self.rtb.id))
|
||||||
|
self.rtb.create_route(DestinationCidrBlock='0.0.0.0/0', GatewayId=self.igw.id)
|
||||||
|
|
||||||
|
self.subnet = ec2.create_subnet(CidrBlock='172.16.1.0/24', VpcId=self.vpc.id)
|
||||||
|
eprint("Created Subnet {}".format(self.subnet.id))
|
||||||
|
self.rtb.associate_with_subnet(SubnetId=self.subnet.id)
|
||||||
|
|
||||||
|
self.sg = ec2.create_security_group(GroupName='SSH-ONLY', Description='only allow SSH traffic', VpcId=self.vpc.id)
|
||||||
|
eprint("Created security group {}".format(self.sg.id))
|
||||||
|
self.sg.authorize_ingress(CidrIp='0.0.0.0/0', IpProtocol='tcp', FromPort=22, ToPort=22)
|
||||||
|
self.sg.authorize_ingress(CidrIp='172.16.1.0/24', IpProtocol='icmp', FromPort=-1, ToPort=-1)
|
||||||
|
self.sg.authorize_ingress(CidrIp='172.16.1.0/24', IpProtocol='tcp', FromPort=0, ToPort=65535)
|
||||||
|
self.sg.authorize_ingress(CidrIp='172.16.1.0/24', IpProtocol='udp', FromPort=0, ToPort=65535)
|
||||||
|
|
||||||
|
self.key_pair = ec2.create_key_pair(KeyName='vpncloud-perf-test-keypair')
|
||||||
|
eprint("Created key pair {}".format(self.key_pair.name))
|
||||||
|
self.rsa_key = paramiko.RSAKey.from_private_key(io.StringIO(self.key_pair.key_material))
|
||||||
|
self.placement_group = ec2.create_placement_group(GroupName="vpncloud-test-placement", Strategy="cluster")
|
||||||
|
eprint("Created placement group {}".format(self.placement_group.name))
|
||||||
|
if SPOT:
|
||||||
|
response = ec2client.request_spot_instances(
|
||||||
|
SpotPrice = MAX_PRICE,
|
||||||
|
Type = "one-time",
|
||||||
|
InstanceCount = 2,
|
||||||
|
LaunchSpecification = {
|
||||||
|
"ImageId": AMI,
|
||||||
|
"InstanceType": INSTANCE_TYPE,
|
||||||
|
"KeyName": self.key_pair.name,
|
||||||
|
"UserData": base64.b64encode(USERDATA.encode("ascii")).decode('ascii'),
|
||||||
|
"BlockDeviceMappings": [
|
||||||
|
{
|
||||||
|
"DeviceName": "/dev/xvda",
|
||||||
|
"Ebs": {
|
||||||
|
"DeleteOnTermination": True,
|
||||||
|
"VolumeType": "gp2",
|
||||||
|
"VolumeSize": 8,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"NetworkInterfaces": [
|
||||||
|
{
|
||||||
|
'SubnetId': self.subnet.id,
|
||||||
|
'DeviceIndex': 0,
|
||||||
|
'AssociatePublicIpAddress': True,
|
||||||
|
'Groups': [self.sg.group_id]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"Placement": {
|
||||||
|
'GroupName': self.placement_group.name
|
||||||
|
}
|
||||||
|
}
|
||||||
|
)
|
||||||
|
sender, receiver = response['SpotInstanceRequests']
|
||||||
|
self.sender_request = sender['SpotInstanceRequestId']
|
||||||
|
self.receiver_request = receiver['SpotInstanceRequestId']
|
||||||
|
eprint("Created spot instance requests {} and {}".format(self.sender_request, self.receiver_request))
|
||||||
|
eprint("Waiting for spot instance requests")
|
||||||
|
waited = 0
|
||||||
|
while waited < MAX_WAIT:
|
||||||
|
time.sleep(1.0)
|
||||||
|
response = ec2client.describe_spot_instance_requests(SpotInstanceRequestIds=[self.sender_request])
|
||||||
|
sender = response['SpotInstanceRequests'][0]
|
||||||
|
response = ec2client.describe_spot_instance_requests(SpotInstanceRequestIds=[self.receiver_request])
|
||||||
|
receiver = response['SpotInstanceRequests'][0]
|
||||||
|
if 'InstanceId' in sender:
|
||||||
|
self.sender = ec2.Instance(sender['InstanceId'])
|
||||||
|
if 'InstanceId' in receiver:
|
||||||
|
self.receiver = ec2.Instance(receiver['InstanceId'])
|
||||||
|
if self.sender and self.receiver:
|
||||||
|
break
|
||||||
|
if waited >= MAX_WAIT:
|
||||||
|
raise Exception("Waited too long")
|
||||||
|
else:
|
||||||
|
self.sender, self.receiver = ec2.create_instances(
|
||||||
|
ImageId=AMI,
|
||||||
|
InstanceType=INSTANCE_TYPE,
|
||||||
|
MaxCount=2,
|
||||||
|
MinCount=2,
|
||||||
|
NetworkInterfaces=[
|
||||||
|
{
|
||||||
|
'SubnetId': self.subnet.id,
|
||||||
|
'DeviceIndex': 0,
|
||||||
|
'AssociatePublicIpAddress': True,
|
||||||
|
'Groups': [self.sg.group_id]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
Placement={
|
||||||
|
'GroupName': self.placement_group.name
|
||||||
|
},
|
||||||
|
UserData=USERDATA,
|
||||||
|
KeyName='vpncloud-perf-test-keypair'
|
||||||
|
)
|
||||||
|
eprint("Created EC2 instances {} and {}".format(self.sender.id, self.receiver.id))
|
||||||
|
eprint("Waiting for instances to start...")
|
||||||
|
self.sender.wait_until_running()
|
||||||
|
self.receiver.wait_until_running()
|
||||||
|
self.sender.reload()
|
||||||
|
self.receiver.reload()
|
||||||
|
|
||||||
|
def wait_until_ready(self):
|
||||||
|
waited = 0
|
||||||
|
eprint("Waiting for SSH to be ready...")
|
||||||
|
while waited < MAX_WAIT:
|
||||||
|
try:
|
||||||
|
if not self.sender_ssh:
|
||||||
|
self.sender_ssh = self._connect(self.sender)
|
||||||
|
if not self.receiver_ssh:
|
||||||
|
self.receiver_ssh = self._connect(self.receiver)
|
||||||
|
break
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
time.sleep(1.0)
|
||||||
|
waited += 1
|
||||||
|
eprint("Waiting for instances to finish setup...")
|
||||||
|
while waited < MAX_WAIT:
|
||||||
|
try:
|
||||||
|
run_cmd(self.sender_ssh, 'test -f /var/lib/cloud/instance/boot-finished')
|
||||||
|
run_cmd(self.receiver_ssh, 'test -f /var/lib/cloud/instance/boot-finished')
|
||||||
|
break
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
time.sleep(1.0)
|
||||||
|
waited += 1
|
||||||
|
if waited >= MAX_WAIT:
|
||||||
|
raise Exception("Waited too long")
|
||||||
|
|
||||||
|
def terminate(self):
|
||||||
|
eprint("Deleting resources...")
|
||||||
|
if self.sender_ssh:
|
||||||
|
self.sender_ssh.close()
|
||||||
|
if self.receiver_ssh:
|
||||||
|
self.receiver_ssh.close()
|
||||||
|
if self.sender:
|
||||||
|
eprint(self.sender.id)
|
||||||
|
self.sender.terminate()
|
||||||
|
if self.receiver:
|
||||||
|
eprint(self.receiver.id)
|
||||||
|
self.receiver.terminate()
|
||||||
|
if self.sender:
|
||||||
|
self.sender.wait_until_terminated()
|
||||||
|
if self.receiver:
|
||||||
|
self.receiver.wait_until_terminated()
|
||||||
|
if self.sender_request or self.receiver_request:
|
||||||
|
ec2client = boto3.client('ec2', region_name=REGION)
|
||||||
|
if self.sender_request:
|
||||||
|
eprint(self.sender_request)
|
||||||
|
ec2client.cancel_spot_instance_requests(SpotInstanceRequestIds=[self.sender_request])
|
||||||
|
if self.receiver_request:
|
||||||
|
eprint(self.receiver_request)
|
||||||
|
ec2client.cancel_spot_instance_requests(SpotInstanceRequestIds=[self.receiver_request])
|
||||||
|
if self.placement_group:
|
||||||
|
self.placement_group.delete()
|
||||||
|
if self.key_pair:
|
||||||
|
eprint(self.key_pair.name)
|
||||||
|
self.key_pair.delete()
|
||||||
|
if self.sg:
|
||||||
|
eprint(self.sg.id)
|
||||||
|
self.sg.delete()
|
||||||
|
if self.subnet:
|
||||||
|
eprint(self.subnet.id)
|
||||||
|
self.subnet.delete()
|
||||||
|
if self.rtb:
|
||||||
|
eprint(self.rtb.id)
|
||||||
|
self.rtb.delete()
|
||||||
|
if self.igw:
|
||||||
|
eprint(self.igw.id)
|
||||||
|
self.igw.detach_from_vpc(VpcId=self.vpc.id)
|
||||||
|
self.igw.delete()
|
||||||
|
if self.vpc:
|
||||||
|
eprint(self.vpc.id)
|
||||||
|
self.vpc.delete()
|
||||||
|
|
||||||
|
def _connect(self, instance):
|
||||||
|
client = paramiko.SSHClient()
|
||||||
|
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
|
||||||
|
client.connect(hostname=instance.public_dns_name, username=USERNAME, pkey=self.rsa_key, timeout=1.0, banner_timeout=1.0)
|
||||||
|
return client
|
||||||
|
|
||||||
|
|
||||||
|
class PerfTest:
|
||||||
|
def __init__(self, sender_ssh, sender_ip, receiver_ssh, receiver_ip):
|
||||||
|
self.sender_ssh = sender_ssh
|
||||||
|
self.sender_ip = sender_ip
|
||||||
|
self.receiver_ssh = receiver_ssh
|
||||||
|
self.receiver_ip = receiver_ip
|
||||||
|
self.sender_ip_vpncloud = "10.0.0.1"
|
||||||
|
self.receiver_ip_vpncloud = "10.0.0.2"
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_ec2_env(cls, env):
|
||||||
|
return cls(env.sender_ssh, env.sender.private_ip_address, env.receiver_ssh, env.receiver.private_ip_address)
|
||||||
|
|
||||||
|
def run_sender(self, cmd):
|
||||||
|
return run_cmd(self.sender_ssh, cmd)
|
||||||
|
|
||||||
|
def run_receiver(self, cmd):
|
||||||
|
return run_cmd(self.receiver_ssh, cmd)
|
||||||
|
|
||||||
|
def run_ping(self, dst, size):
|
||||||
|
eprint("Running ping {} with size {} ...".format(dst, size))
|
||||||
|
(out, _) = self.run_sender('sudo ping {dst} -c 30000 -i 0.001 -s {size} -U -q'.format(dst=dst, size=size))
|
||||||
|
match = re.search(r'([\d]*\.[\d]*)/([\d]*\.[\d]*)/([\d]*\.[\d]*)/([\d]*\.[\d]*)', out)
|
||||||
|
ping_min = float(match.group(1))
|
||||||
|
ping_avg = float(match.group(2))
|
||||||
|
ping_max = float(match.group(3))
|
||||||
|
match = re.search(r'(\d*)% packet loss', out)
|
||||||
|
pkt_loss = float(match.group(1))
|
||||||
|
return {
|
||||||
|
"rtt_min": ping_min,
|
||||||
|
"rtt_max": ping_max,
|
||||||
|
"rtt_avg": ping_avg,
|
||||||
|
"pkt_loss": pkt_loss
|
||||||
|
}
|
||||||
|
|
||||||
|
def run_iperf(self, dst):
|
||||||
|
eprint("Running iperf on {} ...".format(dst))
|
||||||
|
self.run_receiver('iperf3 -s -D')
|
||||||
|
time.sleep(0.1)
|
||||||
|
(out, _) = self.run_sender('iperf3 -c {dst} -t 30 --json'.format(dst=dst))
|
||||||
|
self.run_receiver('killall iperf3')
|
||||||
|
data = json.loads(out)
|
||||||
|
return {
|
||||||
|
"throughput": data['end']['streams'][0]['receiver']['bits_per_second'],
|
||||||
|
"cpu_sender": data['end']['cpu_utilization_percent']['host_total'],
|
||||||
|
"cpu_receiver": data['end']['cpu_utilization_percent']['remote_total']
|
||||||
|
}
|
||||||
|
|
||||||
|
def run_suite(self, dst):
|
||||||
|
return {
|
||||||
|
"iperf": self.run_iperf(dst),
|
||||||
|
"ping_100": self.run_ping(dst, 100),
|
||||||
|
"ping_500": self.run_ping(dst, 500),
|
||||||
|
"ping_1000": self.run_ping(dst, 1000),
|
||||||
|
}
|
||||||
|
|
||||||
|
def start_vpncloud(self, mtu=1400, crypto=None):
|
||||||
|
eprint("Setting up vpncloud on receiver")
|
||||||
|
crypto_str = " --shared-key test --crypto {}".format(crypto) if crypto else ""
|
||||||
|
args = "-t tap --daemon -l 3210 --no-port-forwarding" + crypto_str
|
||||||
|
self.run_receiver("sudo vpncloud {args} --ifup 'ifconfig $IFNAME {ip}/24 mtu {mtu} up'".format(args=args, mtu=mtu, ip=self.receiver_ip_vpncloud))
|
||||||
|
eprint("Setting up vpncloud on sender")
|
||||||
|
self.run_sender("sudo vpncloud {args} -c {peer}:3210 --ifup 'ifconfig $IFNAME {ip}/24 mtu {mtu} up'".format(args=args, mtu=mtu, ip=self.sender_ip_vpncloud, peer=self.receiver_ip))
|
||||||
|
time.sleep(1.0)
|
||||||
|
|
||||||
|
def stop_vpncloud(self):
|
||||||
|
self.run_sender("sudo killall vpncloud")
|
||||||
|
self.run_receiver("sudo killall vpncloud")
|
||||||
|
time.sleep(3.0)
|
||||||
|
|
||||||
|
def run(self):
|
||||||
|
results = {
|
||||||
|
"meta": {
|
||||||
|
"region": REGION,
|
||||||
|
"instance_type": INSTANCE_TYPE,
|
||||||
|
"ami": AMI,
|
||||||
|
"version": VERSION
|
||||||
|
},
|
||||||
|
"native": self.run_suite(self.receiver_ip)
|
||||||
|
}
|
||||||
|
for mtu in [1400, 7000]:
|
||||||
|
for crypto in [None, "aes256", "chacha20"]:
|
||||||
|
eprint("Running with mtu {} and crypto {}".format(mtu, crypto or "plain"))
|
||||||
|
self.start_vpncloud(mtu=mtu, crypto=crypto)
|
||||||
|
res = self.run_suite(self.receiver_ip_vpncloud)
|
||||||
|
self.stop_vpncloud()
|
||||||
|
results["{}-{}".format(crypto or "plain", mtu)] = res
|
||||||
|
results['results'] = {
|
||||||
|
"throughput_mbits": dict([
|
||||||
|
(k, results[k]["iperf"]["throughput"] / 1000000.0) for k in ["native", "plain-1400", "aes256-1400", "chacha20-1400", "plain-7000", "aes256-7000", "chacha20-7000"]
|
||||||
|
]),
|
||||||
|
"latency_ms": dict([
|
||||||
|
(k, dict([
|
||||||
|
(str(s), (results[k]["ping_%s" % s]["rtt_avg"] - results["native"]["ping_%s" % s]["rtt_avg"])*1000.0/2.0) for s in [100, 500, 1000]
|
||||||
|
])) for k in ["plain-1400", "aes256-1400", "chacha20-1400", "plain-7000", "aes256-7000", "chacha20-7000"]
|
||||||
|
])
|
||||||
|
}
|
||||||
|
return results
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
env = EC2Environment()
|
||||||
|
atexit.register(lambda: env.terminate())
|
||||||
|
|
||||||
|
perf = PerfTest.from_ec2_env(env)
|
||||||
|
|
||||||
|
start = time.time()
|
||||||
|
results = perf.run()
|
||||||
|
duration = time.time() - start
|
||||||
|
|
||||||
|
results["meta"]["duration"] = duration
|
||||||
|
|
||||||
|
name = "{date}_{version}_perf.json".format(date=date.today().strftime('%Y-%m-%d'), version=VERSION)
|
||||||
|
eprint('Storing results in {}'.format(name))
|
||||||
|
with open(name, 'w') as fp:
|
||||||
|
json.dump(results, fp, indent=2)
|
||||||
|
eprint("done.")
|
Loading…
Reference in New Issue