-
Notifications
You must be signed in to change notification settings - Fork 0
/
quic_tester_compare.npf
150 lines (105 loc) · 5.34 KB
/
quic_tester_compare.npf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
%info
A test script to compare performance of QUIC stacks
This file is intended to be run with NPF
%variables
NB_CORES={2:1core,4:2cores}
%late_variables
key= ${NPF_ROOT}/server.key
cert= ${NPF_ROOT}/server.cert
%config
timeout=25
n_runs=10
%init@client
//removing irqbalance, core 2 will handles every interrupt
sudo ethtool -L ens1f0 combined 1 && sudo systemctl stop irqbalance && sudo /usr/sbin/set_irq_affinity_cpulist.sh 2 ens1f0
%init@server
//removing irqbalance, core 2 will handles every interrupt
sudo ethtool -L ${self:0:ifname} combined 1 && sudo systemctl stop irqbalance && sudo /usr/sbin/set_irq_affinity_cpulist.sh 2 ${self:0:ifname}
%init@server
//removing irqbalance, core 2 will handles every interrupt
sudo ethtool -L ${self:0:ifname} combined 1 && sudo systemctl stop irqbalance && sudo /usr/sbin/set_irq_affinity_cpulist.sh 2 ${self:0:ifname}
//Not a good solution here
//%pyexit
//import os
//#Enabling IRQ balance avec the test
//os.system('sudo ethtool -L ${self:0:ifname} combined 32 && sudo systemctl start irqbalance && sudo /usr/sbin/set_irq_affinity_cpulist.sh 0-31 ${self:0:ifname} >> /dev/null')
//--------------
// General command to run the differents scripts
// command : python3 ../npf/npf-compare.py msquic+msquic quicly+quicly picoquic+picoquic picoquic_dpdk+picoquic_dpdk quiche+quiche picotls+picotls --test quic_tester_compare.npf --cluster client=client server=server
// command_short : python3 ../npf/npf-compare.py local+msquic:msquic quicly:quicly --test quic_tester_compare.npf --cluster client=client server=server
// from : /home/nikita/workspace/quic_implems_cmp
//--------------
//--------------
// picoquic-dpdk
//--------------
%picoquic_dpdk:script@server sudo=true
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/nikita/dpdk_install_21.11/lib/x86_64-linux-gnu
sudo env PATH=$PATH LD_LIBRARY_PATH=$LD_LIBRARY_PATH dpdk_picoquicdemo --dpdk -l 2-3 -a 0000:18:00.0 -- -c $cert -k $key -p 4443
%picoquic_dpdk:script@client sudo=true delay=3
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/nikita/dpdk_install_21.11/lib/x86_64-linux-gnu
sudo env PATH=$PATH LD_LIBRARY_PATH=$LD_LIBRARY_PATH dpdk_picoquicdemo --dpdk -l 2-3 -a 0000:18:00.0 -- -X -D -A 50:6b:4b:f3:7c:70 10.100.0.2 4443 /20000000000 | tee ~/out.pquic_dpdk
echo "RESULT-GOODPUT "$(cat ~/out.pquic_dpdk | grep -ioE '[0-9.]+ mbps' | awk '{print $1 /1000}' |bc)
//--------------
// picoquic
//--------------
%picoquic:script@server sudo=true
cd /home/nikita/workspace/dpdk_picoquic
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/nikita/dpdk_install_21.11/lib/x86_64-linux-gnu
sudo env PATH=$PATH LD_LIBRARY_PATH=$LD_LIBRARY_PATH taskset -c $NB_CORES dpdk_picoquicdemo --nodpdk -B 1000000000 -p 4443
//working
%picoquic:script@client sudo=true delay=3
echo client
cd /home/nikita/workspace/dpdk_picoquic
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/nikita/dpdk_install_21.11/lib/x86_64-linux-gnu
sudo env PATH=$PATH LD_LIBRARY_PATH=$LD_LIBRARY_PATH taskset -c $NB_CORES dpdk_picoquicdemo --nodpdk -B 1000000000 -D -A 50:6b:4b:f3:7c:71 10.100.0.2 4443 /20000000000 | tee ~/out.pquic
echo "RESULT-GOODPUT "$(cat ~/out.pquic | grep -ioE '[0-9.]+ mbps' | awk '{print $1 /1000}' | bc)
//--------------
// msquic
//--------------
//working
%msquic:script@server sudo=true
sudo env PATH=$PATH taskset -c $NB_CORES secnetperf -cipher:1 -bind:10.100.0.2
%msquic:script@client sudo=true delay=3
sudo env PATH=$PATH taskset -c $NB_CORES secnetperf -cipher:1 -TestName:throughput -target:10.100.0.2 -p 4433 -download:20000000000 | tee ~/out.msquic
echo "RESULT-GOODPUT "$(grep -ioE '[0-9]+ kbps' ~/out.msquic | awk '{print $1 /1000000}' | bc)
//--------------
// quicly
//--------------
//working
%quicly:script@server sudo=true
sudo env PATH=$PATH taskset -c $NB_CORES cli_quicly -c $cert -k $key 10.100.0.2 4567 -b 20000000000 -G
%quicly:script@client sudo=true delay=3
res=$(sudo env PATH=$PATH taskset -c $NB_CORES cli_quicly -p /20000000000 10.100.0.2 4567 -O -b 20000000000 -G | grep -ioE '[0-9.]+ gbps' | awk '{print $1}')
echo "RESULT-GOODPUT "$res
//--------------
// quiche
//--------------
//working
%quiche:script@server sudo=true
sudo env PATH=$PATH taskset -c $NB_CORES http3-server -p 4445 -k $key -c $cert
%quiche:script@client sudo=true delay=10
res=$(sudo env PATH=$PATH $NB_CORES http3-client -G 8000000000 -X keys.log 10.100.0.2 4445 | tee -a ~/out_quiche | grep -ioE '[0-9.]+ mbps' | awk '{print $1 /1000}' | bc)
echo "RESULT-GOODPUT "$res
//--------------
// quant
//--------------
//working (non netmap version)
%quant:script@server
cd /home/nikita/workspace/quant
./Release/bin/server -b 10000000 -i ${self:0:ifname}
%quant:script@client delay=3
cd /home/nikita/workspace/quant
./Release/bin/client -r 2 -i ${self:0:ifname} -b 10000000 -c false -i ${self:0:ifname} URL https://10.100.0.2:4433/20000000000 | tee out
echo "RESULT-GOODPUT "$(cat out | grep https | grep -ioE '[0-9.]+ gb/s' | tail -n 1 | awk '{print $1}')
//--------------
// picoTLS
//--------------
//working
%picotls:script@server
sudo env PATH=$PATH taskset -c $NB_CORES cli -c $cert -k $key 10.100.0.2 8443 -B -y aes128gcmsha256 2>&1 | tee ~/out.picotls
res=$(cat ~/out.picotls | grep -ioE "[0-9.]+Mbps" | rev | cut -c7- | rev | awk '{print $1 /1000}' | bc)
echo "RESULT-GOODPUT "$res
%picotls:script@client delay=3
sudo env PATH=$PATH taskset -c $NB_CORES cli 10.100.0.2 -B 8443 -y aes128gcmsha256 &
sleep 20
sudo kill $(pidof cli)