Skip to content
Snippets Groups Projects
Commit 62bfbcc6 authored by Bartolomeo Berend Müller's avatar Bartolomeo Berend Müller
Browse files

Changed to multiple emulated networks

parent 3ff1d7fd
No related branches found
No related tags found
No related merge requests found
Showing
with 588 additions and 576 deletions
import csv
import numpy as np
import os
import sys
# FIXME: Here the first number on each line should have been ignored, this should be fixed in the future
# NOTE: maybe this file wont be used at all
MAIN_DIR = 'analyzed'
act_data = []
act_rtts = []
COLUMN_NAMES = ["id","avg","std","median","0.75-qtl","0.95-qtl"]
def read_result(name_of_file):
del act_data[:]
del act_rtts[:]
with open(name_of_file) as csv_file:
rows = csv.reader(csv_file, delimiter=',')
for row in rows:
tmp_row = []
for value in row:
tmp_row.append(value)
finite_row = []
act_rtts.append(tmp_row.pop(0))
for value in tmp_row:
finite_row.append(float(value))
act_data.append(finite_row)
return
def make_dir(name_of_file):
if not os.path.exists(MAIN_DIR):
os.makedirs(MAIN_DIR)
subdir_index = name_of_file.rfind('/')
if subdir_index == -1:
directory = MAIN_DIR
else:
directory = '{}/{}'.format(MAIN_DIR, name_of_file[:subdir_index])
if not os.path.exists(directory):
os.makedirs(directory)
return '{}/{}'.format(MAIN_DIR, name_of_file)
def setup(name_of_file):
read_result(name_of_file)
return make_dir(name_of_file)
def calculate_qunatiles(data):
result = []
result.append(act_rtts.pop(0))
result.append(np.mean(data))
result.append(np.std(data))
result.append(np.quantile(data, 0.5))
result.append(np.quantile(data, .75))
result.append(np.quantile(data, .95))
return result
# Main
files_to_analyze = []
if len(sys.argv) > 1:
for i in range (1, len(sys.argv)):
dirPath = sys.argv[i]
secLevels = [d for d in os.listdir(dirPath) if os.path.isdir(os.path.join(dirPath, d))]
print(secLevels)
for j in range (0, len(secLevels)):
subdirPath = dirPath + "/" + secLevels[j]
for f in os.listdir(subdirPath):
files_to_analyze.append(subdirPath + "/" + f)
for file in files_to_analyze:
print(file)
else:
sys.exit("Error: No handed filename - Please add name of the file that should be analyzed while calling this script")
for file in files_to_analyze:
filepath = setup(file)
with open(filepath,'a') as out:
csv_out = csv.writer(out)
csv_out.writerow(COLUMN_NAMES)
for row in act_data:
csv_out.writerow(calculate_qunatiles(row))
...@@ -4,7 +4,7 @@ import numpy as np ...@@ -4,7 +4,7 @@ import numpy as np
import pandas as pd import pandas as pd
import pyshark import pyshark
import helper_functions import helper_scripts.helper_functions as helper_functions
# NOTE there is also a packet called scapy which might work # NOTE there is also a packet called scapy which might work
...@@ -195,8 +195,8 @@ def get_packets_sent_by_node(udp_packets_df): ...@@ -195,8 +195,8 @@ def get_packets_sent_by_node(udp_packets_df):
] ]
) )
# print(df.info())
print(df) print(df)
print(df.info())
def analyze_udp_packets(kem_id_df): def analyze_udp_packets(kem_id_df):
......
#!/usr/bin/env python #!/usr/bin/env python
from multiprocessing import Pool import multiprocessing as mp
import networkmgmt
import os import os
import subprocess import subprocess
import sys import sys
...@@ -9,10 +8,16 @@ import sys ...@@ -9,10 +8,16 @@ import sys
import csv import csv
import pandas as pd import pandas as pd
# POOL_SIZE is the parallelism level. There should be the same amount of cores or more on your CPU.
POOL_SIZE = 4
# There must be the same amount of network namespaces with each an nginx running as NETWORK_NAMESPACES.
# The amount of network namespaces should be at least POOL_SIZE. The amount is specified by setup.sh's first argument.
NETWORK_NAMESPACES = 4
# Ensure that TIMERS * MEASUREMENTS_PER_TIMER is at least 200 to get a good results.
# TIMERS should be a multiple of POOL_SIZE. Best is to have TIMERS = POOL_SIZE.
TIMERS = 4
MEASUREMENTS_PER_TIMER = 50
POOL_SIZE = 7
MEASUREMENTS_PER_TIMER = 20
TIMERS = 10
PROTOCOLS_TO_BENCH = ["quic", "tlstcp"] PROTOCOLS_TO_BENCH = ["quic", "tlstcp"]
DEFAULT_SCENARIO_TO_BENCH = "testscenarios/scenario_static.csv" DEFAULT_SCENARIO_TO_BENCH = "testscenarios/scenario_static.csv"
...@@ -23,13 +28,22 @@ QUIC_S_TIMER = "./quic_s_timer" ...@@ -23,13 +28,22 @@ QUIC_S_TIMER = "./quic_s_timer"
LD_LIBRARY_PATH = "../tmp/.local/openssl/lib64" LD_LIBRARY_PATH = "../tmp/.local/openssl/lib64"
SRV_NS = "srv_ns" SRV_NS = "srv_ns"
SRV_VE = "srv_ve"
CLI_NS = "cli_ns" CLI_NS = "cli_ns"
SRV_VE = "srv_ve"
CLI_VE = "cli_ve" CLI_VE = "cli_ve"
def main(): def main():
timer_pool = Pool(processes=POOL_SIZE) shared_condition = mp.Condition()
shared_array = mp.Array("b", [False] * NETWORK_NAMESPACES)
timer_pool = mp.Pool(
processes=POOL_SIZE,
initializer=init_worker,
initargs=(
shared_condition,
shared_array,
),
)
scenariofiles = parse_scenariofiles_to_bench() scenariofiles = parse_scenariofiles_to_bench()
algorithms_to_bench_dict = read_algorithms() algorithms_to_bench_dict = read_algorithms()
...@@ -42,28 +56,7 @@ def main(): ...@@ -42,28 +56,7 @@ def main():
for _, parameters in scenarios.iterrows(): for _, parameters in scenarios.iterrows():
# set network parameters of scenario # set network parameters of scenario
networkmgmt.change_qdisc( set_network_parameters(parameters)
SRV_NS,
SRV_VE,
parameters["srv_pkt_loss"],
parameters["srv_delay"],
parameters["srv_jitter"],
parameters["srv_duplicate"],
parameters["srv_corrupt"],
parameters["srv_reorder"],
parameters["srv_rate"],
)
networkmgmt.change_qdisc(
CLI_NS,
CLI_VE,
parameters["cli_pkt_loss"],
parameters["cli_delay"],
parameters["cli_jitter"],
parameters["cli_duplicate"],
parameters["cli_corrupt"],
parameters["cli_reorder"],
parameters["cli_rate"],
)
for algorithm_class, algorithms in algorithms_to_bench_dict.items(): for algorithm_class, algorithms in algorithms_to_bench_dict.items():
for kem_alg in algorithms: for kem_alg in algorithms:
...@@ -86,6 +79,14 @@ def main(): ...@@ -86,6 +79,14 @@ def main():
timer_pool.join() timer_pool.join()
# This function declares the global variables namespace_condition and acquired_network_namespaces so they can be used by the pool subprocesses.
def init_worker(condition, shared_array):
global namespace_condition
global acquired_network_namespaces
namespace_condition = condition
acquired_network_namespaces = shared_array
def parse_scenariofiles_to_bench(): def parse_scenariofiles_to_bench():
scenariofiles = [] scenariofiles = []
# Check for handed scenarios # Check for handed scenarios
...@@ -111,6 +112,68 @@ def make_dirs(testscenario_name, protocol, algorithms_to_bench_dict): ...@@ -111,6 +112,68 @@ def make_dirs(testscenario_name, protocol, algorithms_to_bench_dict):
) )
def set_network_parameters(parameters):
for i in range(1, NETWORK_NAMESPACES + 1):
change_qdisc(
f"{SRV_NS}_{i}",
SRV_VE,
parameters["srv_rate"],
parameters["srv_delay"],
parameters["srv_jitter"],
parameters["srv_pkt_loss"],
parameters["srv_duplicate"],
parameters["srv_corrupt"],
parameters["srv_reorder"],
)
change_qdisc(
f"{CLI_NS}_{i}",
CLI_VE,
parameters["cli_rate"],
parameters["cli_delay"],
parameters["cli_jitter"],
parameters["cli_pkt_loss"],
parameters["cli_duplicate"],
parameters["cli_corrupt"],
parameters["cli_reorder"],
)
# TODO maybe add slot configuration for WLAN emulation
def change_qdisc(ns, dev, rate, delay, jitter, pkt_loss, duplicate, corrupt, reorder):
command = [
"ip",
"netns",
"exec",
ns,
"tc",
"qdisc",
"change",
"dev",
dev,
"root",
"netem",
# limit 1000 is the default value for the number of packets that can be queued
"limit",
"1000",
"rate",
f"{rate}mbit",
"delay",
f"{delay}ms",
f"{jitter}ms",
"loss",
f"{pkt_loss}%",
"duplicate",
f"{duplicate}%",
"corrupt",
f"{corrupt}%",
"reorder",
f"{reorder}%",
]
print(" > " + " ".join(command))
run_subprocess(command)
def run_timers(timer_pool, protocol, kem_alg): def run_timers(timer_pool, protocol, kem_alg):
results_nested = timer_pool.starmap( results_nested = timer_pool.starmap(
time_handshake, [(protocol, kem_alg, MEASUREMENTS_PER_TIMER)] * TIMERS time_handshake, [(protocol, kem_alg, MEASUREMENTS_PER_TIMER)] * TIMERS
...@@ -120,12 +183,29 @@ def run_timers(timer_pool, protocol, kem_alg): ...@@ -120,12 +183,29 @@ def run_timers(timer_pool, protocol, kem_alg):
# do TLS handshake (s_timer.c) # do TLS handshake (s_timer.c)
def time_handshake(protocol, kem_alg, measurements) -> list[float]: def time_handshake(protocol, kem_alg, measurements) -> list[float]:
def aquire_network_namespace():
with namespace_condition:
while True:
for i in range(1, len(acquired_network_namespaces) + 1):
if not acquired_network_namespaces[i - 1]:
acquired_network_namespaces[i - 1] = True
return i
# make this process sleep until another wakes him up
namespace_condition.wait()
def release_network_namespace(i):
with namespace_condition:
acquired_network_namespaces[i - 1] = False
# wake another process that is sleeping
namespace_condition.notify()
network_namespace = aquire_network_namespace()
program = QUIC_S_TIMER if protocol == "quic" else S_TIMER program = QUIC_S_TIMER if protocol == "quic" else S_TIMER
command = [ command = [
"ip", "ip",
"netns", "netns",
"exec", "exec",
"cli_ns", f"{CLI_NS}_{network_namespace}",
"env", "env",
f"LD_LIBRARY_PATH={LD_LIBRARY_PATH}", f"LD_LIBRARY_PATH={LD_LIBRARY_PATH}",
program, program,
...@@ -133,6 +213,7 @@ def time_handshake(protocol, kem_alg, measurements) -> list[float]: ...@@ -133,6 +213,7 @@ def time_handshake(protocol, kem_alg, measurements) -> list[float]:
str(measurements), str(measurements),
] ]
result = run_subprocess(command) result = run_subprocess(command)
release_network_namespace(network_namespace)
return [float(i) for i in result.strip().split(",")] return [float(i) for i in result.strip().split(",")]
...@@ -149,36 +230,47 @@ def run_subprocess(command, working_dir=".", expected_returncode=0) -> str: ...@@ -149,36 +230,47 @@ def run_subprocess(command, working_dir=".", expected_returncode=0) -> str:
return result.stdout.decode("utf-8") return result.stdout.decode("utf-8")
# TODO think about what to do with this rtt calculation # TODO think about what to do with this rtt calculation, maybe just delete
# maybe put it below the setting of the network parameters and save to a different file # maybe put it below the setting of the network parameters and save to a different file
# To get actual (emulated) RTT # To get actual (emulated) RTT
def get_emulated_rtt(scenarios): def get_emulated_rtt(scenarios):
networkmgmt.change_qdisc( change_qdisc(
SRV_NS, SRV_NS,
SRV_VE, SRV_VE,
0, scenarios.iloc[0]["srv_rate"],
scenarios.iloc[0]["srv_delay"], scenarios.iloc[0]["srv_delay"],
0, 0,
0, 0,
0, 0,
0, 0,
scenarios.iloc[0]["srv_rate"], 0,
) )
networkmgmt.change_qdisc( change_qdisc(
CLI_NS, CLI_NS,
CLI_VE, CLI_VE,
0, scenarios.iloc[0]["cli_rate"],
scenarios.iloc[0]["cli_delay"], scenarios.iloc[0]["cli_delay"],
0, 0,
0, 0,
0, 0,
0, 0,
scenarios.iloc[0]["cli_rate"], 0,
) )
rtt_str = networkmgmt.get_rtt_ms() rtt_str = get_rtt_ms()
print( print(
f"Emulated average RTT: {rtt_str} ms", f"Emulated average RTT: {rtt_str} ms",
) )
def get_rtt_ms():
command = ["ip", "netns", "exec", "cli_ns", "ping", "10.0.0.1", "-c", "10"]
print(" > " + " ".join(command))
result = run_subprocess(command)
# last line is "rtt min/avg/max/mdev = 5.978/6.107/6.277/0.093 ms"
result_fmt = result.splitlines()[-1].split("/")
return result_fmt[4]
main() main()
import multiprocessing as mp
import os import os
import time
import pandas as pd import pandas as pd
import numpy as np import numpy as np
...@@ -6,8 +8,73 @@ import yaml ...@@ -6,8 +8,73 @@ import yaml
def main(): def main():
sort_kem_alg_via_categories_type() # sort_kem_alg_via_categories_type()
# get_kem_characteristics() tryout_pool_with_shared_array()
def init_worker(condition, shared_array):
global namespace_condition
global acquired_network_namespaces
namespace_condition = condition
acquired_network_namespaces = shared_array
def work(id, protocol, kem_alg, n_measurements):
def aquire_network_namespace():
with namespace_condition:
while True:
print(
f"{id}: Before acquiring", [i for i in acquired_network_namespaces]
)
for i in range(1, len(acquired_network_namespaces) + 1):
if not acquired_network_namespaces[i - 1]:
acquired_network_namespaces[i - 1] = True
print(f"{id}: Acquired network namespace {i}")
print(
f"{id}: After acquiring",
[i for i in acquired_network_namespaces],
)
return i
# make this process sleep until another wakes him up
namespace_condition.wait()
def release_network_namespace(i):
with namespace_condition:
print(f"{id}: Before releasing", [i for i in acquired_network_namespaces])
acquired_network_namespaces[i - 1] = False
print(f"{id}: Released network namespace {i}")
print(f"{id}: After releasing", [i for i in acquired_network_namespaces])
# wake another processes that are sleeping
namespace_condition.notify()
network_namespace = aquire_network_namespace()
print(f"{id}: measuring now", protocol, kem_alg)
time.sleep(5)
release_network_namespace(network_namespace)
return id, protocol, kem_alg, n_measurements
def tryout_pool_with_shared_array():
POOL_SIZE = 3
NETWORK_NAMESPACES = 2
condition = mp.Condition()
shared_array = mp.Array("b", [False] * NETWORK_NAMESPACES)
with mp.Pool(
processes=POOL_SIZE,
initializer=init_worker,
initargs=(
condition,
shared_array,
),
) as pool:
output = pool.starmap(
work, [(i, "protocol", "kem_alg", 5) for i in range(1, (POOL_SIZE * 2) + 1)]
)
print(output)
def sort_kem_alg_via_categories_type(): def sort_kem_alg_via_categories_type():
......
...@@ -498,105 +498,4 @@ def map_security_level_hybrid_together(sec_level: str): ...@@ -498,105 +498,4 @@ def map_security_level_hybrid_together(sec_level: str):
return None return None
"""secLevel1, secp256r1, x25519, mlkem512, bikel1, hqc128, frodo640aes, frodo640shake
secLevel1_hybrid, p256_mlkem512, x25519_mlkem512, p256_bikel1, x25519_bikel1, p256_hqc128, x25519_hqc128, p256_frodo640aes, x25519_frodo640aes, p256_frodo640shake, x25519_frodo640shake
secLevel3, secp384r1, x448, mlkem768, bikel3, hqc192, frodo976aes, frodo976shake
secLevel3_hybrid, p384_mlkem768, x448_mlkem768, p384_bikel3, x448_bikel3, p384_hqc192, x448_hqc192, p384_frodo976aes, x448_frodo976aes, p384_frodo976shake, x448_frodo976shake
secLevel5, secp521r1, mlkem1024, bikel5, hqc256, frodo1344aes, frodo1344shake
secLevel5_hybrid, p521_mlkem1024, p521_bikel5, p521_hqc256, p521_frodo1344aes, p521_frodo1344shake
miscLevel, x25519_mlkem768, p256_mlkem768, p384_mlkem1024"""
# algorithms_in_sorted_order = [
# "secp256r1",
# "x25519",
# "mlkem512",
# "bikel1",
# "hqc128",
# "frodo640aes",
# "frodo640shake",
# "p256_mlkem512",
# "x25519_mlkem512",
# "p256_bikel1",
# "x25519_bikel1",
# "p256_hqc128",
# "x25519_hqc128",
# "p256_frodo640aes",
# "x25519_frodo640aes",
# "p256_frodo640shake",
# "x25519_frodo640shake",
# "secp384r1",
# "x448",
# "mlkem768",
# "bikel3",
# "hqc192",
# "frodo976aes",
# "frodo976shake",
# "p384_mlkem768",
# "x448_mlkem768",
# "p384_bikel3",
# "x448_bikel3",
# "p384_hqc192",
# "x448_hqc192",
# "p384_frodo976aes",
# "x448_frodo976aes",
# "p384_frodo976shake",
# "x448_frodo976shake",
# "secp521r1",
# "mlkem1024",
# "bikel5",
# "hqc256",
# "frodo1344aes",
# "frodo1344shake",
# "p521_mlkem1024",
# "p521_bikel5",
# "p521_hqc256",
# "p521_frodo1344aes",
# "p521_frodo1344shake",
# "x25519_mlkem768",
# "p256_mlkem768",
# "p384_mlkem1024",
# ]
# def sort_kem_algorithms(l, r):
# return algorithms_in_sorted_order.index(l) - algorithms_in_sorted_order.index(r)
# NOTE thinking i could sort them in an efficient manner was a really bad idea
"""algorithms_in_sorted_order = ["secp256r1", "p256", "secp384r1", "p384", "secp521r1", "p521", "x25519", "x488", "mlkem512", "bikel1", "hqc128", "frodo640aes", "frodo640shake"]
# first the algorithms in sorted order like in secLevel1, but when hybrids are compared, fit them in between the algorithms_in_sorted_order, after their respective pqc part
def sort_kem_algorithms(l, r):
print(l, r)
if l == r:
return 0
l_split = l.split("_")
r_split = r.split("_")
print(l_split, r_split)
# if both are pqc algos, compare them
if len(l_split) == 1 and len(r_split) == 1:
return algorithms_in_sorted_order.index(l) - algorithms_in_sorted_order.index(r)
# if both are hybrids, first compare the pqc part
if len(l_split) == 2 and len(r_split) == 2:
if l_split[1] != r_split[1]:
return algorithms_in_sorted_order.index(l_split[1]) - algorithms_in_sorted_order.index(r_split[1])
return -1 if l_split[0] < r_split[0] else 1
# if only one is a hybrid, compare the pqc part first
# here left is a hybrid
if len(l_split) == 2:
# if both pqc algos are the same, left is bigger
if l_split[1] == r_split[0]:
return 1
return algorithms_in_sorted_order.index(l_split[1]) - algorithms_in_sorted_order.index(r_split[0])
# here right is a hybrid
if len(r_split) == 2:
# if both pqc algos are the same, left is smaller
if l_split[0] == r_split[1]:
return -1
return algorithms_in_sorted_order.index(l_split[0]) - algorithms_in_sorted_order.index(r_split[1])"""
main() main()
#!/bin/bash
set -ex
##########################
# Setup network namespaces
##########################
# NUMBER_OF_NETWORK_NAMESPACES is set in setup.sh
echo "Setting up ${NUMBER_OF_NETWORK_NAMESPACES} network namespaces"
# Server
SERVER_VETH=srv_ve
SERVER_VETH_LL_ADDR=00:00:00:00:00:01
# Client
CLIENT_VETH=cli_ve
CLIENT_VETH_LL_ADDR=00:00:00:00:00:02
for i in $(seq 1 ${NUMBER_OF_NETWORK_NAMESPACES}); do
SERVER_NS=srv_ns_${i}
CLIENT_NS=cli_ns_${i}
ip netns add ${SERVER_NS}
ip netns add ${CLIENT_NS}
# Add virtual link of types VETH
ip link add \
name ${SERVER_VETH} \
address ${SERVER_VETH_LL_ADDR} \
netns ${SERVER_NS} type veth \
peer name ${CLIENT_VETH} \
address ${CLIENT_VETH_LL_ADDR} \
netns ${CLIENT_NS}
ip netns exec ${SERVER_NS} \
ip link set dev ${SERVER_VETH} up
ip netns exec ${SERVER_NS} \
ip link set dev lo up
ip netns exec ${SERVER_NS} \
ip addr add 10.0.0.1/24 dev ${SERVER_VETH}
ip netns exec ${CLIENT_NS} \
ip link set dev ${CLIENT_VETH} up
ip netns exec ${CLIENT_NS} \
ip link set dev lo up
ip netns exec ${CLIENT_NS} \
ip addr add 10.0.0.2/24 dev ${CLIENT_VETH}
# Add neighbour objects for IP connection
ip netns exec ${SERVER_NS} \
ip neigh add 10.0.0.2 \
lladdr ${CLIENT_VETH_LL_ADDR} \
dev ${SERVER_VETH}
ip netns exec ${CLIENT_NS} \
ip neigh add 10.0.0.1 \
lladdr ${SERVER_VETH_LL_ADDR} \
dev ${CLIENT_VETH}
# Turn off optimizations that dent realism.
ip netns exec ${CLIENT_NS} \
ethtool -K ${CLIENT_VETH} gso off gro off tso off
ip netns exec ${SERVER_NS} \
ethtool -K ${SERVER_VETH} gso off gro off tso off
# Add netem as qdisc for traffic control
ip netns exec ${CLIENT_NS} \
tc qdisc add \
dev ${CLIENT_VETH} \
root netem
ip netns exec ${SERVER_NS} \
tc qdisc add \
dev ${SERVER_VETH} \
root netem
done
# $DATE is set by setup.sh
# Only set up tshark for the first network namespace
mkdir -p -m 777 captures && touch captures/capture_${DATE}.pcap && chmod a+w captures/capture_${DATE}.pcap
ip netns exec cli_ns_1 tshark -i ${CLIENT_VETH} -w captures/capture_${DATE}.pcap &
from multiprocessing import Pool
import os
import subprocess
# TODO maybe reintegrate this file back into the main experiment.py file
def run_subprocess(command, working_dir='.', expected_returncode=0):
result = subprocess.run(
command,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
cwd=working_dir
)
if(result.stderr):
print(result.stderr)
assert result.returncode == expected_returncode
return result.stdout.decode('utf-8')
# TODO maybe add slot configuration for WLAN emulation
def change_qdisc(ns, dev, pkt_loss, delay, jitter, duplicate, corrupt, reorder, rate):
command = [
'ip', 'netns', 'exec', ns,
'tc', 'qdisc', 'change',
'dev', dev, 'root', 'netem',
'limit', '1000'
]
if pkt_loss != 0:
command.append('loss')
command.append('{0}%'.format(pkt_loss))
if duplicate != 0:
command.append('duplicate')
command.append('{0}%'.format(duplicate))
if corrupt != 0:
command.append('corrupt')
command.append('{0}%'.format(corrupt))
if reorder != 0:
command.append('reorder')
command.append('{0}%'.format(reorder))
command.append('delay')
command.append(delay)
if jitter != 0:
command.append(jitter)
command.append('rate')
command.append('{0}mbit'.format(rate))
print(" > " + " ".join(command))
run_subprocess(command)
def get_rtt_ms():
command = [
'ip', 'netns', 'exec', 'cli_ns',
'ping', '10.0.0.1', '-c', '10'
]
print(" > " + " ".join(command))
result = run_subprocess(command)
# last line is "rtt min/avg/max/mdev = 5.978/6.107/6.277/0.093 ms"
result_fmt = result.splitlines()[-1].split("/")
return result_fmt[4]
#!/bin/bash #!/bin/bash
set -ex set -ex
NUMBER_OF_NETWORK_NAMESPACES=1
echo "Setting up ${NUMBER_OF_NETWORK_NAMESPACES} network namespaces"
if [ -n "$1" ]; then
NUMBER_OF_NETWORK_NAMESPACES=$1
fi
ROOT="$(dirname $(pwd))" ROOT="$(dirname $(pwd))"
OPENSSL_DIR=${ROOT}/tmp/.local/openssl OPENSSL_DIR=${ROOT}/tmp/.local/openssl
...@@ -12,7 +18,7 @@ NGINX_CONF_DIR=${ROOT}/tmp/.local/nginx/conf ...@@ -12,7 +18,7 @@ NGINX_CONF_DIR=${ROOT}/tmp/.local/nginx/conf
NGINX_LOGS_DIR=${ROOT}/tmp/.local/nginx/logs NGINX_LOGS_DIR=${ROOT}/tmp/.local/nginx/logs
########################## ##########################
# Build s_timer # Build s_timer and quic_s_timer
########################## ##########################
make s_timer quic_s_timer make s_timer quic_s_timer
...@@ -20,7 +26,8 @@ make s_timer quic_s_timer ...@@ -20,7 +26,8 @@ make s_timer quic_s_timer
# Setup network namespaces # Setup network namespaces
########################## ##########################
export DATE=$(date +%Y%m%d%H%M%S) export DATE=$(date +%Y%m%d%H%M%S)
sudo -E ${ROOT}/setup_ns.sh export NUMBER_OF_NETWORK_NAMESPACES
sudo -E $(pwd)/scripts/helper_scripts/setup_ns.sh
########################## ##########################
# Generate ECDSA P-256 cert # Generate ECDSA P-256 cert
...@@ -50,8 +57,11 @@ cat ${NGINX_CONF_DIR}/CA.crt >> ${OPENSSL_DIR}/ssl/certs/ca-certificates.crt ...@@ -50,8 +57,11 @@ cat ${NGINX_CONF_DIR}/CA.crt >> ${OPENSSL_DIR}/ssl/certs/ca-certificates.crt
########################## ##########################
cp nginx.conf ${NGINX_CONF_DIR}/nginx.conf cp nginx.conf ${NGINX_CONF_DIR}/nginx.conf
# echo "EXITING EARLY NOW TO TEST LOCALLY" # echo "EXITING EARLY NOW TO TEST LOCALLY"
# Then you would have to start nginx yourself, but can start it outside the emulated network.
# exit 0 # exit 0
sudo ip netns exec srv_ns ${NGINX_APP} for i in $(seq 1 ${NUMBER_OF_NETWORK_NAMESPACES}); do
sudo ip netns exec srv_ns_${i} ${NGINX_APP} -g "pid logs/nginx-${i}.pid;"
done
echo "Nginx started" echo "Nginx started"
# Start collecting keys # Start collecting keys
......
#!/bin/bash #!/bin/bash
set -x set -x
NUMBER_OF_NETWORK_NAMESPACES=1
if [ -n "$1" ]; then
NUMBER_OF_NETWORK_NAMESPACES=$1
fi
echo "Executing teardown for ${NUMBER_OF_NETWORK_NAMESPACES} network namespaces"
ROOT="$(dirname $(pwd))" ROOT="$(dirname $(pwd))"
NGINX_APP=${ROOT}/tmp/.local/nginx/sbin/nginx NGINX_APP=${ROOT}/tmp/.local/nginx/sbin/nginx
########################## ##########################
# Stop nginx # Stop nginx
########################## ##########################
sudo ip netns exec srv_ns ${NGINX_APP} -s stop for i in $(seq 1 ${NUMBER_OF_NETWORK_NAMESPACES}); do
sudo ip netns exec srv_ns_${i} ${NGINX_APP} -s stop -g "pid logs/nginx-${i}.pid;"
done
# Stop capturing packets and keys # Stop capturing packets and keys
sudo ip netns exec cli_ns ps -ef | grep tshark | grep -v grep | awk '{print $2}' | xargs sudo kill sudo ip netns exec cli_ns_1 ps -ef | grep tshark | grep -v grep | awk '{print $2}' | xargs sudo kill
pkill -f "tail -f -n0" pkill -f "tail -f -n0"
########################## ##########################
...@@ -24,5 +32,7 @@ sudo rm -rf scripts/__pycache__ ...@@ -24,5 +32,7 @@ sudo rm -rf scripts/__pycache__
########################## ##########################
# Remove network namespaces # Remove network namespaces
########################## ##########################
sudo ip netns del cli_ns for i in $(seq 1 ${NUMBER_OF_NETWORK_NAMESPACES}); do
sudo ip netns del srv_ns sudo ip netns del srv_ns_${i}
sudo ip netns del cli_ns_${i}
done
# Scenario namings and their meaning
- rate_cli_test is just a single row to test whether all clients are using the same network, or are using different ones
analyze_packets,srv_pkt_loss,srv_delay,srv_jitter,srv_duplicate,srv_corrupt,srv_reorder,srv_rate,cli_pkt_loss,cli_delay,cli_jitter,cli_duplicate,cli_corrupt,cli_reorder,cli_rate analyze_packets,srv_pkt_loss,srv_delay,srv_jitter,srv_duplicate,srv_corrupt,srv_reorder,srv_rate,cli_pkt_loss,cli_delay,cli_jitter,cli_duplicate,cli_corrupt,cli_reorder,cli_rate
,0,10ms,0,0,0,0,500,0,10ms,0,0,0,0,500 ,0,10,0,0,0,0,500,0,10,0,0,0,0,500
corrupt,srv_pkt_loss,srv_delay,srv_jitter,srv_duplicate,srv_corrupt,srv_reorder,srv_rate,cli_pkt_loss,cli_delay,cli_jitter,cli_duplicate,cli_corrupt,cli_reorder,cli_rate corrupt,srv_pkt_loss,srv_delay,srv_jitter,srv_duplicate,srv_corrupt,srv_reorder,srv_rate,cli_pkt_loss,cli_delay,cli_jitter,cli_duplicate,cli_corrupt,cli_reorder,cli_rate
,0,2.684ms,0,0,0,0,500,0,2.684ms,0,0,0,0,500 ,0,2.684,0,0,0,0,500,0,2.684,0,0,0,0,500
,0,2.684ms,0,0,0.25,0,500,0,2.684ms,0,0,0.25,0,500 ,0,2.684,0,0,0.25,0,500,0,2.684,0,0,0.25,0,500
,0,2.684ms,0,0,0.5,0,500,0,2.684ms,0,0,0.5,0,500 ,0,2.684,0,0,0.5,0,500,0,2.684,0,0,0.5,0,500
,0,2.684ms,0,0,1,0,500,0,2.684ms,0,0,1,0,500 ,0,2.684,0,0,1,0,500,0,2.684,0,0,1,0,500
,0,2.684ms,0,0,1.5,0,500,0,2.684ms,0,0,1.5,0,500 ,0,2.684,0,0,1.5,0,500,0,2.684,0,0,1.5,0,500
,0,2.684ms,0,0,2,0,500,0,2.684ms,0,0,2,0,500 ,0,2.684,0,0,2,0,500,0,2.684,0,0,2,0,500
,0,2.684ms,0,0,3,0,500,0,2.684ms,0,0,3,0,500 ,0,2.684,0,0,3,0,500,0,2.684,0,0,3,0,500
,0,2.684ms,0,0,4,0,500,0,2.684ms,0,0,4,0,500 ,0,2.684,0,0,4,0,500,0,2.684,0,0,4,0,500
,0,2.684ms,0,0,5,0,500,0,2.684ms,0,0,5,0,500 ,0,2.684,0,0,5,0,500,0,2.684,0,0,5,0,500
,0,2.684ms,0,0,6,0,500,0,2.684ms,0,0,6,0,500 ,0,2.684,0,0,6,0,500,0,2.684,0,0,6,0,500
,0,2.684ms,0,0,7,0,500,0,2.684ms,0,0,7,0,500 ,0,2.684,0,0,7,0,500,0,2.684,0,0,7,0,500
,0,2.684ms,0,0,8,0,500,0,2.684ms,0,0,8,0,500 ,0,2.684,0,0,8,0,500,0,2.684,0,0,8,0,500
,0,2.684ms,0,0,9,0,500,0,2.684ms,0,0,9,0,500 ,0,2.684,0,0,9,0,500,0,2.684,0,0,9,0,500
,0,2.684ms,0,0,10,0,500,0,2.684ms,0,0,10,0,500 ,0,2.684,0,0,10,0,500,0,2.684,0,0,10,0,500
,0,2.684ms,0,0,11,0,500,0,2.684ms,0,0,11,0,500 ,0,2.684,0,0,11,0,500,0,2.684,0,0,11,0,500
,0,2.684ms,0,0,12,0,500,0,2.684ms,0,0,12,0,500 ,0,2.684,0,0,12,0,500,0,2.684,0,0,12,0,500
,0,2.684ms,0,0,13,0,500,0,2.684ms,0,0,13,0,500 ,0,2.684,0,0,13,0,500,0,2.684,0,0,13,0,500
,0,2.684ms,0,0,14,0,500,0,2.684ms,0,0,14,0,500 ,0,2.684,0,0,14,0,500,0,2.684,0,0,14,0,500
,0,2.684ms,0,0,15,0,500,0,2.684ms,0,0,15,0,500 ,0,2.684,0,0,15,0,500,0,2.684,0,0,15,0,500
,0,2.684ms,0,0,16,0,500,0,2.684ms,0,0,16,0,500 ,0,2.684,0,0,16,0,500,0,2.684,0,0,16,0,500
,0,2.684ms,0,0,17,0,500,0,2.684ms,0,0,17,0,500 ,0,2.684,0,0,17,0,500,0,2.684,0,0,17,0,500
,0,2.684ms,0,0,18,0,500,0,2.684ms,0,0,18,0,500 ,0,2.684,0,0,18,0,500,0,2.684,0,0,18,0,500
,0,2.684ms,0,0,19,0,500,0,2.684ms,0,0,19,0,500 ,0,2.684,0,0,19,0,500,0,2.684,0,0,19,0,500
,0,2.684ms,0,0,20,0,500,0,2.684ms,0,0,20,0,500 ,0,2.684,0,0,20,0,500,0,2.684,0,0,20,0,500
delay,srv_pkt_loss,srv_delay,srv_jitter,srv_duplicate,srv_corrupt,srv_reorder,srv_rate,cli_pkt_loss,cli_delay,cli_jitter,cli_duplicate,cli_corrupt,cli_reorder,cli_rate delay,srv_pkt_loss,srv_delay,srv_jitter,srv_duplicate,srv_corrupt,srv_reorder,srv_rate,cli_pkt_loss,cli_delay,cli_jitter,cli_duplicate,cli_corrupt,cli_reorder,cli_rate
,0,1ms,0,0,0,0,500,0,1ms,0,0,0,0,500 ,0,1,0,0,0,0,500,0,1,0,0,0,0,500
,0,2.5ms,0,0,0,0,500,0,2.5ms,0,0,0,0,500 ,0,2.5,0,0,0,0,500,0,2.5,0,0,0,0,500
,0,5ms,0,0,0,0,500,0,5ms,0,0,0,0,500 ,0,5,0,0,0,0,500,0,5,0,0,0,0,500
,0,7.5ms,0,0,0,0,500,0,7.5ms,0,0,0,0,500 ,0,7.5,0,0,0,0,500,0,7.5,0,0,0,0,500
,0,10ms,0,0,0,0,500,0,10ms,0,0,0,0,500 ,0,10,0,0,0,0,500,0,10,0,0,0,0,500
,0,15ms,0,0,0,0,500,0,15ms,0,0,0,0,500 ,0,15,0,0,0,0,500,0,15,0,0,0,0,500
,0,20ms,0,0,0,0,500,0,20ms,0,0,0,0,500 ,0,20,0,0,0,0,500,0,20,0,0,0,0,500
,0,25ms,0,0,0,0,500,0,25ms,0,0,0,0,500 ,0,25,0,0,0,0,500,0,25,0,0,0,0,500
,0,30ms,0,0,0,0,500,0,30ms,0,0,0,0,500 ,0,30,0,0,0,0,500,0,30,0,0,0,0,500
,0,40ms,0,0,0,0,500,0,40ms,0,0,0,0,500 ,0,40,0,0,0,0,500,0,40,0,0,0,0,500
,0,50ms,0,0,0,0,500,0,50ms,0,0,0,0,500 ,0,50,0,0,0,0,500,0,50,0,0,0,0,500
,0,60ms,0,0,0,0,500,0,60ms,0,0,0,0,500 ,0,60,0,0,0,0,500,0,60,0,0,0,0,500
,0,80ms,0,0,0,0,500,0,80ms,0,0,0,0,500 ,0,80,0,0,0,0,500,0,80,0,0,0,0,500
,0,100ms,0,0,0,0,500,0,100ms,0,0,0,0,500 ,0,100,0,0,0,0,500,0,100,0,0,0,0,500
,0,120ms,0,0,0,0,500,0,120ms,0,0,0,0,500 ,0,120,0,0,0,0,500,0,120,0,0,0,0,500
,0,150ms,0,0,0,0,500,0,150ms,0,0,0,0,500 ,0,150,0,0,0,0,500,0,150,0,0,0,0,500
,0,190ms,0,0,0,0,500,0,190ms,0,0,0,0,500 ,0,190,0,0,0,0,500,0,190,0,0,0,0,500
delay,srv_pkt_loss,srv_delay,srv_jitter,srv_duplicate,srv_corrupt,srv_reorder,srv_rate,cli_pkt_loss,cli_delay,cli_jitter,cli_duplicate,cli_corrupt,cli_reorder,cli_rate delay,srv_pkt_loss,srv_delay,srv_jitter,srv_duplicate,srv_corrupt,srv_reorder,srv_rate,cli_pkt_loss,cli_delay,cli_jitter,cli_duplicate,cli_corrupt,cli_reorder,cli_rate
,0,2ms,0,0,0,0,500,0,2ms,0,0,0,0,500 ,0,2,0,0,0,0,500,0,2,0,0,0,0,500
,0,2ms,0,2,0,0,500,0,2ms,0,2,0,0,500 ,0,2,0,2,0,0,500,0,2,0,2,0,0,500
,0,2ms,0,4,0,0,500,0,2ms,0,4,0,0,500 ,0,2,0,4,0,0,500,0,2,0,4,0,0,500
,0,2ms,0,6,0,0,500,0,2ms,0,6,0,0,500 ,0,2,0,6,0,0,500,0,2,0,6,0,0,500
,0,2ms,0,8,0,0,500,0,2ms,0,8,0,0,500 ,0,2,0,8,0,0,500,0,2,0,8,0,0,500
,0,2ms,0,10,0,0,500,0,2ms,0,10,0,0,500 ,0,2,0,10,0,0,500,0,2,0,10,0,0,500
,0,2ms,0,12.5,0,0,500,0,2ms,0,12.5,0,0,500 ,0,2,0,12.5,0,0,500,0,2,0,12.5,0,0,500
,0,2ms,0,15,0,0,500,0,2ms,0,15,0,0,500 ,0,2,0,15,0,0,500,0,2,0,15,0,0,500
,0,2ms,0,17.5,0,0,500,0,2ms,0,17.5,0,0,500 ,0,2,0,17.5,0,0,500,0,2,0,17.5,0,0,500
,0,5ms,0,0,0,0,500,0,5ms,0,0,0,0,500 ,0,5,0,0,0,0,500,0,5,0,0,0,0,500
,0,5ms,0,2,0,0,500,0,5ms,0,2,0,0,500 ,0,5,0,2,0,0,500,0,5,0,2,0,0,500
,0,5ms,0,4,0,0,500,0,5ms,0,4,0,0,500 ,0,5,0,4,0,0,500,0,5,0,4,0,0,500
,0,5ms,0,6,0,0,500,0,5ms,0,6,0,0,500 ,0,5,0,6,0,0,500,0,5,0,6,0,0,500
,0,5ms,0,8,0,0,500,0,5ms,0,8,0,0,500 ,0,5,0,8,0,0,500,0,5,0,8,0,0,500
,0,5ms,0,10,0,0,500,0,5ms,0,10,0,0,500 ,0,5,0,10,0,0,500,0,5,0,10,0,0,500
,0,5ms,0,12.5,0,0,500,0,5ms,0,12.5,0,0,500 ,0,5,0,12.5,0,0,500,0,5,0,12.5,0,0,500
,0,5ms,0,15,0,0,500,0,5ms,0,15,0,0,500 ,0,5,0,15,0,0,500,0,5,0,15,0,0,500
,0,5ms,0,17.5,0,0,500,0,5ms,0,17.5,0,0,500 ,0,5,0,17.5,0,0,500,0,5,0,17.5,0,0,500
,0,15ms,0,0,0,0,500,0,15ms,0,0,0,0,500 ,0,15,0,0,0,0,500,0,15,0,0,0,0,500
,0,15ms,0,2,0,0,500,0,15ms,0,2,0,0,500 ,0,15,0,2,0,0,500,0,15,0,2,0,0,500
,0,15ms,0,4,0,0,500,0,15ms,0,4,0,0,500 ,0,15,0,4,0,0,500,0,15,0,4,0,0,500
,0,15ms,0,6,0,0,500,0,15ms,0,6,0,0,500 ,0,15,0,6,0,0,500,0,15,0,6,0,0,500
,0,15ms,0,8,0,0,500,0,15ms,0,8,0,0,500 ,0,15,0,8,0,0,500,0,15,0,8,0,0,500
,0,15ms,0,10,0,0,500,0,15ms,0,10,0,0,500 ,0,15,0,10,0,0,500,0,15,0,10,0,0,500
,0,15ms,0,12.5,0,0,500,0,15ms,0,12.5,0,0,500 ,0,15,0,12.5,0,0,500,0,15,0,12.5,0,0,500
,0,15ms,0,15,0,0,500,0,15ms,0,15,0,0,500 ,0,15,0,15,0,0,500,0,15,0,15,0,0,500
,0,15ms,0,17.5,0,0,500,0,15ms,0,17.5,0,0,500 ,0,15,0,17.5,0,0,500,0,15,0,17.5,0,0,500
,0,35ms,0,0,0,0,500,0,35ms,0,0,0,0,500 ,0,35,0,0,0,0,500,0,35,0,0,0,0,500
,0,35ms,0,2,0,0,500,0,35ms,0,2,0,0,500 ,0,35,0,2,0,0,500,0,35,0,2,0,0,500
,0,35ms,0,4,0,0,500,0,35ms,0,4,0,0,500 ,0,35,0,4,0,0,500,0,35,0,4,0,0,500
,0,35ms,0,6,0,0,500,0,35ms,0,6,0,0,500 ,0,35,0,6,0,0,500,0,35,0,6,0,0,500
,0,35ms,0,8,0,0,500,0,35ms,0,8,0,0,500 ,0,35,0,8,0,0,500,0,35,0,8,0,0,500
,0,35ms,0,10,0,0,500,0,35ms,0,10,0,0,500 ,0,35,0,10,0,0,500,0,35,0,10,0,0,500
,0,35ms,0,12.5,0,0,500,0,35ms,0,12.5,0,0,500 ,0,35,0,12.5,0,0,500,0,35,0,12.5,0,0,500
,0,35ms,0,15,0,0,500,0,35ms,0,15,0,0,500 ,0,35,0,15,0,0,500,0,35,0,15,0,0,500
,0,35ms,0,17.5,0,0,500,0,35ms,0,17.5,0,0,500 ,0,35,0,17.5,0,0,500,0,35,0,17.5,0,0,500
,0,70ms,0,0,0,0,500,0,70ms,0,0,0,0,500 ,0,70,0,0,0,0,500,0,70,0,0,0,0,500
,0,70ms,0,2,0,0,500,0,70ms,0,2,0,0,500 ,0,70,0,2,0,0,500,0,70,0,2,0,0,500
,0,70ms,0,4,0,0,500,0,70ms,0,4,0,0,500 ,0,70,0,4,0,0,500,0,70,0,4,0,0,500
,0,70ms,0,6,0,0,500,0,70ms,0,6,0,0,500 ,0,70,0,6,0,0,500,0,70,0,6,0,0,500
,0,70ms,0,8,0,0,500,0,70ms,0,8,0,0,500 ,0,70,0,8,0,0,500,0,70,0,8,0,0,500
,0,70ms,0,10,0,0,500,0,70ms,0,10,0,0,500 ,0,70,0,10,0,0,500,0,70,0,10,0,0,500
,0,70ms,0,12.5,0,0,500,0,70ms,0,12.5,0,0,500 ,0,70,0,12.5,0,0,500,0,70,0,12.5,0,0,500
,0,70ms,0,15,0,0,500,0,70ms,0,15,0,0,500 ,0,70,0,15,0,0,500,0,70,0,15,0,0,500
,0,70ms,0,17.5,0,0,500,0,70ms,0,17.5,0,0,500 ,0,70,0,17.5,0,0,500,0,70,0,17.5,0,0,500
,0,120ms,0,0,0,0,500,0,120ms,0,0,0,0,500 ,0,120,0,0,0,0,500,0,120,0,0,0,0,500
,0,120ms,0,2,0,0,500,0,120ms,0,2,0,0,500 ,0,120,0,2,0,0,500,0,120,0,2,0,0,500
,0,120ms,0,4,0,0,500,0,120ms,0,4,0,0,500 ,0,120,0,4,0,0,500,0,120,0,4,0,0,500
,0,120ms,0,6,0,0,500,0,120ms,0,6,0,0,500 ,0,120,0,6,0,0,500,0,120,0,6,0,0,500
,0,120ms,0,8,0,0,500,0,120ms,0,8,0,0,500 ,0,120,0,8,0,0,500,0,120,0,8,0,0,500
,0,120ms,0,10,0,0,500,0,120ms,0,10,0,0,500 ,0,120,0,10,0,0,500,0,120,0,10,0,0,500
,0,120ms,0,12.5,0,0,500,0,120ms,0,12.5,0,0,500 ,0,120,0,12.5,0,0,500,0,120,0,12.5,0,0,500
,0,120ms,0,15,0,0,500,0,120ms,0,15,0,0,500 ,0,120,0,15,0,0,500,0,120,0,15,0,0,500
,0,120ms,0,17.5,0,0,500,0,120ms,0,17.5,0,0,500 ,0,120,0,17.5,0,0,500,0,120,0,17.5,0,0,500
,0,190ms,0,0,0,0,500,0,190ms,0,0,0,0,500 ,0,190,0,0,0,0,500,0,190,0,0,0,0,500
,0,190ms,0,2,0,0,500,0,190ms,0,2,0,0,500 ,0,190,0,2,0,0,500,0,190,0,2,0,0,500
,0,190ms,0,4,0,0,500,0,190ms,0,4,0,0,500 ,0,190,0,4,0,0,500,0,190,0,4,0,0,500
,0,190ms,0,6,0,0,500,0,190ms,0,6,0,0,500 ,0,190,0,6,0,0,500,0,190,0,6,0,0,500
,0,190ms,0,8,0,0,500,0,190ms,0,8,0,0,500 ,0,190,0,8,0,0,500,0,190,0,8,0,0,500
,0,190ms,0,10,0,0,500,0,190ms,10,0,0,0,500 ,0,190,0,10,0,0,500,0,190,10,0,0,0,500
,0,190ms,0,12.5,0,0,500,0,190ms,0,12.5,0,0,500 ,0,190,0,12.5,0,0,500,0,190,0,12.5,0,0,500
,0,190ms,0,15,0,0,500,0,190ms,0,15,0,0,500 ,0,190,0,15,0,0,500,0,190,0,15,0,0,500
,0,190ms,0,17.5,0,0,500,0,190ms,0,17.5,0,0,500 ,0,190,0,17.5,0,0,500,0,190,0,17.5,0,0,500
delay_minRate,srv_pkt_loss,srv_delay,srv_jitter,srv_duplicate,srv_corrupt,srv_reorder,srv_rate,cli_pkt_loss,cli_delay,cli_jitter,cli_duplicate,cli_corrupt,cli_reorder,cli_rate delay_minRate,srv_pkt_loss,srv_delay,srv_jitter,srv_duplicate,srv_corrupt,srv_reorder,srv_rate,cli_pkt_loss,cli_delay,cli_jitter,cli_duplicate,cli_corrupt,cli_reorder,cli_rate
,0,2.5ms,0,0,0,0,2,0,2.5ms,0,0,0,0,2 ,0,2.5,0,0,0,0,2,0,2.5,0,0,0,0,2
,0,10ms,0,0,0,0,2,0,10ms,0,0,0,0,2 ,0,10,0,0,0,0,2,0,10,0,0,0,0,2
,0,30ms,0,0,0,0,2,0,30ms,0,0,0,0,2 ,0,30,0,0,0,0,2,0,30,0,0,0,0,2
,0,80ms,0,0,0,0,2,0,80ms,0,0,0,0,2 ,0,80,0,0,0,0,2,0,80,0,0,0,0,2
,0,120ms,0,0,0,0,2,0,120ms,0,0,0,0,2 ,0,120,0,0,0,0,2,0,120,0,0,0,0,2
,0,180ms,0,0,0,0,2,0,180ms,0,0,0,0,2 ,0,180,0,0,0,0,2,0,180,0,0,0,0,2
delay,srv_pkt_loss,srv_delay,srv_jitter,srv_duplicate,srv_corrupt,srv_reorder,srv_rate,cli_pkt_loss,cli_delay,cli_jitter,cli_duplicate,cli_corrupt,cli_reorder,cli_rate delay,srv_pkt_loss,srv_delay,srv_jitter,srv_duplicate,srv_corrupt,srv_reorder,srv_rate,cli_pkt_loss,cli_delay,cli_jitter,cli_duplicate,cli_corrupt,cli_reorder,cli_rate
,0,2ms,0,0,0,0,500,0,2ms,0,0,0,0,500 ,0,2,0,0,0,0,500,0,2,0,0,0,0,500
,2,2ms,0,0,0,0,500,2,2ms,0,0,0,0,500 ,2,2,0,0,0,0,500,2,2,0,0,0,0,500
,4,2ms,0,0,0,0,500,4,2ms,0,0,0,0,500 ,4,2,0,0,0,0,500,4,2,0,0,0,0,500
,6,2ms,0,0,0,0,500,6,2ms,0,0,0,0,500 ,6,2,0,0,0,0,500,6,2,0,0,0,0,500
,8,2ms,0,0,0,0,500,8,2ms,0,0,0,0,500 ,8,2,0,0,0,0,500,8,2,0,0,0,0,500
,10,2ms,0,0,0,0,500,10,2ms,0,0,0,0,500 ,10,2,0,0,0,0,500,10,2,0,0,0,0,500
,12.5,2ms,0,0,0,0,500,12.5,2ms,0,0,0,0,500 ,12.5,2,0,0,0,0,500,12.5,2,0,0,0,0,500
,15,2ms,0,0,0,0,500,15,2ms,0,0,0,0,500 ,15,2,0,0,0,0,500,15,2,0,0,0,0,500
,17.5,2ms,0,0,0,0,500,17.5,2ms,0,0,0,0,500 ,17.5,2,0,0,0,0,500,17.5,2,0,0,0,0,500
,0,5ms,0,0,0,0,500,0,5ms,0,0,0,0,500 ,0,5,0,0,0,0,500,0,5,0,0,0,0,500
,2,5ms,0,0,0,0,500,2,5ms,0,0,0,0,500 ,2,5,0,0,0,0,500,2,5,0,0,0,0,500
,4,5ms,0,0,0,0,500,4,5ms,0,0,0,0,500 ,4,5,0,0,0,0,500,4,5,0,0,0,0,500
,6,5ms,0,0,0,0,500,6,5ms,0,0,0,0,500 ,6,5,0,0,0,0,500,6,5,0,0,0,0,500
,8,5ms,0,0,0,0,500,8,5ms,0,0,0,0,500 ,8,5,0,0,0,0,500,8,5,0,0,0,0,500
,10,5ms,0,0,0,0,500,10,5ms,0,0,0,0,500 ,10,5,0,0,0,0,500,10,5,0,0,0,0,500
,12.5,5ms,0,0,0,0,500,12.5,5ms,0,0,0,0,500 ,12.5,5,0,0,0,0,500,12.5,5,0,0,0,0,500
,15,5ms,0,0,0,0,500,15,5ms,0,0,0,0,500 ,15,5,0,0,0,0,500,15,5,0,0,0,0,500
,17.5,5ms,0,0,0,0,500,17.5,5ms,0,0,0,0,500 ,17.5,5,0,0,0,0,500,17.5,5,0,0,0,0,500
,0,15ms,0,0,0,0,500,0,15ms,0,0,0,0,500 ,0,15,0,0,0,0,500,0,15,0,0,0,0,500
,2,15ms,0,0,0,0,500,2,15ms,0,0,0,0,500 ,2,15,0,0,0,0,500,2,15,0,0,0,0,500
,4,15ms,0,0,0,0,500,4,15ms,0,0,0,0,500 ,4,15,0,0,0,0,500,4,15,0,0,0,0,500
,6,15ms,0,0,0,0,500,6,15ms,0,0,0,0,500 ,6,15,0,0,0,0,500,6,15,0,0,0,0,500
,8,15ms,0,0,0,0,500,8,15ms,0,0,0,0,500 ,8,15,0,0,0,0,500,8,15,0,0,0,0,500
,10,15ms,0,0,0,0,500,10,15ms,0,0,0,0,500 ,10,15,0,0,0,0,500,10,15,0,0,0,0,500
,12.5,15ms,0,0,0,0,500,12.5,15ms,0,0,0,0,500 ,12.5,15,0,0,0,0,500,12.5,15,0,0,0,0,500
,15,15ms,0,0,0,0,500,15,15ms,0,0,0,0,500 ,15,15,0,0,0,0,500,15,15,0,0,0,0,500
,17.5,15ms,0,0,0,0,500,17.5,15ms,0,0,0,0,500 ,17.5,15,0,0,0,0,500,17.5,15,0,0,0,0,500
,0,35ms,0,0,0,0,500,0,35ms,0,0,0,0,500 ,0,35,0,0,0,0,500,0,35,0,0,0,0,500
,2,35ms,0,0,0,0,500,2,35ms,0,0,0,0,500 ,2,35,0,0,0,0,500,2,35,0,0,0,0,500
,4,35ms,0,0,0,0,500,4,35ms,0,0,0,0,500 ,4,35,0,0,0,0,500,4,35,0,0,0,0,500
,6,35ms,0,0,0,0,500,6,35ms,0,0,0,0,500 ,6,35,0,0,0,0,500,6,35,0,0,0,0,500
,8,35ms,0,0,0,0,500,8,35ms,0,0,0,0,500 ,8,35,0,0,0,0,500,8,35,0,0,0,0,500
,10,35ms,0,0,0,0,500,10,35ms,0,0,0,0,500 ,10,35,0,0,0,0,500,10,35,0,0,0,0,500
,12.5,35ms,0,0,0,0,500,12.5,35ms,0,0,0,0,500 ,12.5,35,0,0,0,0,500,12.5,35,0,0,0,0,500
,15,35ms,0,0,0,0,500,15,35ms,0,0,0,0,500 ,15,35,0,0,0,0,500,15,35,0,0,0,0,500
,17.5,35ms,0,0,0,0,500,17.5,35ms,0,0,0,0,500 ,17.5,35,0,0,0,0,500,17.5,35,0,0,0,0,500
,0,70ms,0,0,0,0,500,0,70ms,0,0,0,0,500 ,0,70,0,0,0,0,500,0,70,0,0,0,0,500
,2,70ms,0,0,0,0,500,2,70ms,0,0,0,0,500 ,2,70,0,0,0,0,500,2,70,0,0,0,0,500
,4,70ms,0,0,0,0,500,4,70ms,0,0,0,0,500 ,4,70,0,0,0,0,500,4,70,0,0,0,0,500
,6,70ms,0,0,0,0,500,6,70ms,0,0,0,0,500 ,6,70,0,0,0,0,500,6,70,0,0,0,0,500
,8,70ms,0,0,0,0,500,8,70ms,0,0,0,0,500 ,8,70,0,0,0,0,500,8,70,0,0,0,0,500
,10,70ms,0,0,0,0,500,10,70ms,0,0,0,0,500 ,10,70,0,0,0,0,500,10,70,0,0,0,0,500
,12.5,70ms,0,0,0,0,500,12.5,70ms,0,0,0,0,500 ,12.5,70,0,0,0,0,500,12.5,70,0,0,0,0,500
,15,70ms,0,0,0,0,500,15,70ms,0,0,0,0,500 ,15,70,0,0,0,0,500,15,70,0,0,0,0,500
,17.5,70ms,0,0,0,0,500,17.5,70ms,0,0,0,0,500 ,17.5,70,0,0,0,0,500,17.5,70,0,0,0,0,500
,0,120ms,0,0,0,0,500,0,120ms,0,0,0,0,500 ,0,120,0,0,0,0,500,0,120,0,0,0,0,500
,2,120ms,0,0,0,0,500,2,120ms,0,0,0,0,500 ,2,120,0,0,0,0,500,2,120,0,0,0,0,500
,4,120ms,0,0,0,0,500,4,120ms,0,0,0,0,500 ,4,120,0,0,0,0,500,4,120,0,0,0,0,500
,6,120ms,0,0,0,0,500,6,120ms,0,0,0,0,500 ,6,120,0,0,0,0,500,6,120,0,0,0,0,500
,8,120ms,0,0,0,0,500,8,120ms,0,0,0,0,500 ,8,120,0,0,0,0,500,8,120,0,0,0,0,500
,10,120ms,0,0,0,0,500,10,120ms,0,0,0,0,500 ,10,120,0,0,0,0,500,10,120,0,0,0,0,500
,12.5,120ms,0,0,0,0,500,12.5,120ms,0,0,0,0,500 ,12.5,120,0,0,0,0,500,12.5,120,0,0,0,0,500
,15,120ms,0,0,0,0,500,15,120ms,0,0,0,0,500 ,15,120,0,0,0,0,500,15,120,0,0,0,0,500
,17.5,120ms,0,0,0,0,500,17.5,120ms,0,0,0,0,500 ,17.5,120,0,0,0,0,500,17.5,120,0,0,0,0,500
,0,190ms,0,0,0,0,500,0,190ms,0,0,0,0,500 ,0,190,0,0,0,0,500,0,190,0,0,0,0,500
,2,190ms,0,0,0,0,500,2,190ms,0,0,0,0,500 ,2,190,0,0,0,0,500,2,190,0,0,0,0,500
,4,190ms,0,0,0,0,500,4,190ms,0,0,0,0,500 ,4,190,0,0,0,0,500,4,190,0,0,0,0,500
,6,190ms,0,0,0,0,500,6,190ms,0,0,0,0,500 ,6,190,0,0,0,0,500,6,190,0,0,0,0,500
,8,190ms,0,0,0,0,500,8,190ms,0,0,0,0,500 ,8,190,0,0,0,0,500,8,190,0,0,0,0,500
,10,190ms,0,0,0,0,500,10,190ms,0,0,0,0,500 ,10,190,0,0,0,0,500,10,190,0,0,0,0,500
,12.5,190ms,0,0,0,0,500,12.5,190ms,0,0,0,0,500 ,12.5,190,0,0,0,0,500,12.5,190,0,0,0,0,500
,15,190ms,0,0,0,0,500,15,190ms,0,0,0,0,500 ,15,190,0,0,0,0,500,15,190,0,0,0,0,500
,17.5,190ms,0,0,0,0,500,17.5,190ms,0,0,0,0,500 ,17.5,190,0,0,0,0,500,17.5,190,0,0,0,0,500
delay,srv_pkt_loss,srv_delay,srv_jitter,srv_duplicate,srv_corrupt,srv_reorder,srv_rate,cli_pkt_loss,cli_delay,cli_jitter,cli_duplicate,cli_corrupt,cli_reorder,cli_rate delay,srv_pkt_loss,srv_delay,srv_jitter,srv_duplicate,srv_corrupt,srv_reorder,srv_rate,cli_pkt_loss,cli_delay,cli_jitter,cli_duplicate,cli_corrupt,cli_reorder,cli_rate
,0,2ms,0,0,0,0,500,0,2ms,0,0,0,0,500 ,0,2,0,0,0,0,500,0,2,0,0,0,0,500
,0,2ms,0,0,0,2,500,0,2ms,0,0,0,2,500 ,0,2,0,0,0,2,500,0,2,0,0,0,2,500
,0,2ms,0,0,0,4,500,0,2ms,0,0,0,4,500 ,0,2,0,0,0,4,500,0,2,0,0,0,4,500
,0,2ms,0,0,0,6,500,0,2ms,0,0,0,6,500 ,0,2,0,0,0,6,500,0,2,0,0,0,6,500
,0,2ms,0,0,0,8,500,0,2ms,0,0,0,8,500 ,0,2,0,0,0,8,500,0,2,0,0,0,8,500
,0,2ms,0,0,0,10,500,0,2ms,0,0,0,10,500 ,0,2,0,0,0,10,500,0,2,0,0,0,10,500
,0,2ms,0,0,0,12.5,500,0,2ms,0,0,0,12.5,500 ,0,2,0,0,0,12.5,500,0,2,0,0,0,12.5,500
,0,2ms,0,0,0,15,500,0,2ms,0,0,0,15,500 ,0,2,0,0,0,15,500,0,2,0,0,0,15,500
,0,2ms,0,0,0,17.5,500,0,2ms,0,0,0,17.5,500 ,0,2,0,0,0,17.5,500,0,2,0,0,0,17.5,500
,0,5ms,0,0,0,0,500,0,5ms,0,0,0,0,500 ,0,5,0,0,0,0,500,0,5,0,0,0,0,500
,0,5ms,0,0,0,2,500,0,5ms,0,0,0,2,500 ,0,5,0,0,0,2,500,0,5,0,0,0,2,500
,0,5ms,0,0,0,4,500,0,5ms,0,0,0,4,500 ,0,5,0,0,0,4,500,0,5,0,0,0,4,500
,0,5ms,0,0,0,6,500,0,5ms,0,0,0,6,500 ,0,5,0,0,0,6,500,0,5,0,0,0,6,500
,0,5ms,0,0,0,8,500,0,5ms,0,0,0,8,500 ,0,5,0,0,0,8,500,0,5,0,0,0,8,500
,0,5ms,0,0,0,10,500,0,5ms,0,0,0,10,500 ,0,5,0,0,0,10,500,0,5,0,0,0,10,500
,0,5ms,0,0,0,12.5,500,10,5ms,0,0,0,12.5,500 ,0,5,0,0,0,12.5,500,10,5,0,0,0,12.5,500
,0,5ms,0,0,0,15,500,0,5ms,0,0,0,15,500 ,0,5,0,0,0,15,500,0,5,0,0,0,15,500
,0,5ms,0,0,0,17.5,500,0,5ms,0,0,0,17.5,500 ,0,5,0,0,0,17.5,500,0,5,0,0,0,17.5,500
,0,15ms,0,0,0,0,500,0,15ms,0,0,0,0,500 ,0,15,0,0,0,0,500,0,15,0,0,0,0,500
,0,15ms,0,0,0,2,500,0,15ms,0,0,0,2,500 ,0,15,0,0,0,2,500,0,15,0,0,0,2,500
,0,15ms,0,0,0,4,500,0,15ms,0,0,0,4,500 ,0,15,0,0,0,4,500,0,15,0,0,0,4,500
,0,15ms,0,0,0,6,500,0,15ms,0,0,0,6,500 ,0,15,0,0,0,6,500,0,15,0,0,0,6,500
,0,15ms,0,0,0,8,500,0,15ms,0,0,0,8,500 ,0,15,0,0,0,8,500,0,15,0,0,0,8,500
,0,15ms,0,0,0,10,500,0,15ms,0,0,0,10,0,0,500 ,0,15,0,0,0,10,500,0,15,0,0,0,10,0,0,500
,0,15ms,0,0,0,12.5,500,0,15ms,0,0,0,12.5,500 ,0,15,0,0,0,12.5,500,0,15,0,0,0,12.5,500
,0,15ms,0,0,0,15,500,0,15ms,0,0,0,15,500 ,0,15,0,0,0,15,500,0,15,0,0,0,15,500
,0,15ms,0,0,0,17.5,500,0,15ms,0,0,0,17.5,500 ,0,15,0,0,0,17.5,500,0,15,0,0,0,17.5,500
,0,35ms,0,0,0,0,500,0,35ms,0,0,500 ,0,35,0,0,0,0,500,0,35,0,0,500
,0,35ms,0,0,0,2,500,0,35ms,0,0,0,2,500 ,0,35,0,0,0,2,500,0,35,0,0,0,2,500
,0,35ms,0,0,0,4,500,0,35ms,0,0,0,4,500 ,0,35,0,0,0,4,500,0,35,0,0,0,4,500
,0,35ms,0,0,0,6,500,0,35ms,0,0,0,6,500 ,0,35,0,0,0,6,500,0,35,0,0,0,6,500
,0,35ms,0,0,0,8,500,0,35ms,0,0,0,8,500 ,0,35,0,0,0,8,500,0,35,0,0,0,8,500
,0,35ms,0,0,0,10,500,0,35ms,0,0,0,10,500 ,0,35,0,0,0,10,500,0,35,0,0,0,10,500
,0,35ms,0,0,0,12.5,500,0,35ms,0,0,0,12.5,500 ,0,35,0,0,0,12.5,500,0,35,0,0,0,12.5,500
,0,35ms,0,0,0,15,500,0,35ms,0,0,0,15,500 ,0,35,0,0,0,15,500,0,35,0,0,0,15,500
,0,35ms,0,0,0,17.5,500,0,35ms,0,0,0,17.5,500 ,0,35,0,0,0,17.5,500,0,35,0,0,0,17.5,500
,0,72ms,0,0,0,0,500,0,72ms,0,0,0,0,500 ,0,72,0,0,0,0,500,0,72,0,0,0,0,500
,0,72ms,0,0,0,2,500,0,72ms,0,0,0,2,500 ,0,72,0,0,0,2,500,0,72,0,0,0,2,500
,0,72ms,0,0,0,4,500,0,72ms,0,0,0,4,500 ,0,72,0,0,0,4,500,0,72,0,0,0,4,500
,0,72ms,0,0,0,6,500,0,72ms,0,0,0,6,500 ,0,72,0,0,0,6,500,0,72,0,0,0,6,500
,0,72ms,0,0,0,8,500,0,72ms,0,0,0,8,500 ,0,72,0,0,0,8,500,0,72,0,0,0,8,500
,0,72ms,0,0,0,10,500,0,72ms,0,0,0,10,500 ,0,72,0,0,0,10,500,0,72,0,0,0,10,500
,0,72ms,0,0,0,12.5,500,0,72ms,0,0,0,12.5,500 ,0,72,0,0,0,12.5,500,0,72,0,0,0,12.5,500
,0,72ms,0,0,0,15,500,0,72ms,0,0,0,15,500 ,0,72,0,0,0,15,500,0,72,0,0,0,15,500
,0,72ms,0,0,0,17.5,500,0,72ms,0,0,0,17.5,500 ,0,72,0,0,0,17.5,500,0,72,0,0,0,17.5,500
,0,122ms,0,0,0,0,500,0,122ms,0,0,0,0,500 ,0,122,0,0,0,0,500,0,122,0,0,0,0,500
,0,122ms,0,0,0,2,500,0,122ms,0,0,0,2,500 ,0,122,0,0,0,2,500,0,122,0,0,0,2,500
,0,122ms,0,0,0,4,500,0,122ms,0,0,0,4,500 ,0,122,0,0,0,4,500,0,122,0,0,0,4,500
,0,122ms,0,0,0,6,500,0,122ms,0,0,0,6,500 ,0,122,0,0,0,6,500,0,122,0,0,0,6,500
,0,122ms,0,0,0,8,500,0,122ms,0,0,0,8,500 ,0,122,0,0,0,8,500,0,122,0,0,0,8,500
,0,122ms,0,0,0,10,500,0,122ms,0,0,0,10,500 ,0,122,0,0,0,10,500,0,122,0,0,0,10,500
,0,122ms,0,0,0,12.5,500,0,122ms,0,0,0,12.5,500 ,0,122,0,0,0,12.5,500,0,122,0,0,0,12.5,500
,0,122ms,0,0,0,15,500,0,122ms,0,0,0,15,500 ,0,122,0,0,0,15,500,0,122,0,0,0,15,500
,0,122ms,0,0,0,17.5,500,0,122ms,0,0,0,17.5,500 ,0,122,0,0,0,17.5,500,0,122,0,0,0,17.5,500
,0,192ms,0,0,0,0,500,0,192ms,0,0,0,0,500 ,0,192,0,0,0,0,500,0,192,0,0,0,0,500
,0,192ms,0,0,0,2,500,0,192ms,0,0,0,2,500 ,0,192,0,0,0,2,500,0,192,0,0,0,2,500
,0,192ms,0,0,0,4,500,0,192ms,0,0,0,4,500 ,0,192,0,0,0,4,500,0,192,0,0,0,4,500
,0,192ms,0,0,0,6,500,0,192ms,0,0,0,6,500 ,0,192,0,0,0,6,500,0,192,0,0,0,6,500
,0,192ms,0,0,0,8,500,0,192ms,0,0,0,8,500 ,0,192,0,0,0,8,500,0,192,0,0,0,8,500
,0,192ms,0,0,0,10,500,0,192ms,0,0,0,10,0,500 ,0,192,0,0,0,10,500,0,192,0,0,0,10,0,500
,0,192ms,0,0,0,12.5,500,0,192ms,0,0,0,12.5,500 ,0,192,0,0,0,12.5,500,0,192,0,0,0,12.5,500
,0,192ms,0,0,0,15,500,0,192ms,0,0,0,15,500 ,0,192,0,0,0,15,500,0,192,0,0,0,15,500
,0,192ms,0,0,0,17.5,500,0,192ms,0,0,0,17.5,500 ,0,192,0,0,0,17.5,500,0,192,0,0,0,17.5,500
duplicate,srv_pkt_loss,srv_delay,srv_jitter,srv_duplicate,srv_corrupt,srv_reorder,srv_rate,cli_pkt_loss,cli_delay,cli_jitter,cli_duplicate,cli_corrupt,cli_reorder,cli_rate duplicate,srv_pkt_loss,srv_delay,srv_jitter,srv_duplicate,srv_corrupt,srv_reorder,srv_rate,cli_pkt_loss,cli_delay,cli_jitter,cli_duplicate,cli_corrupt,cli_reorder,cli_rate
,0,2.684ms,0,0,0,0,500,0,2.684ms,0,0,0,0,500 ,0,2.684,0,0,0,0,500,0,2.684,0,0,0,0,500
,0,2.684ms,0,0.25,0,0,500,0,2.684ms,0,0.25,0,0,500 ,0,2.684,0,0.25,0,0,500,0,2.684,0,0.25,0,0,500
,0,2.684ms,0,0.5,0,0,500,0,2.684ms,0,0.5,0,0,500 ,0,2.684,0,0.5,0,0,500,0,2.684,0,0.5,0,0,500
,0,2.684ms,0,1,0,0,500,0,2.684ms,0,1,0,0,500 ,0,2.684,0,1,0,0,500,0,2.684,0,1,0,0,500
,0,2.684ms,0,1.5,0,0,500,0,2.684ms,0,1.5,0,0,500 ,0,2.684,0,1.5,0,0,500,0,2.684,0,1.5,0,0,500
,0,2.684ms,0,2,0,0,500,0,2.684ms,0,2,0,0,500 ,0,2.684,0,2,0,0,500,0,2.684,0,2,0,0,500
,0,2.684ms,0,3,0,0,500,0,2.684ms,0,3,0,0,500 ,0,2.684,0,3,0,0,500,0,2.684,0,3,0,0,500
,0,2.684ms,0,4,0,0,500,0,2.684ms,0,4,0,0,500 ,0,2.684,0,4,0,0,500,0,2.684,0,4,0,0,500
,0,2.684ms,0,5,0,0,500,0,2.684ms,0,5,0,0,500 ,0,2.684,0,5,0,0,500,0,2.684,0,5,0,0,500
,0,2.684ms,0,6,0,0,500,0,2.684ms,0,6,0,0,500 ,0,2.684,0,6,0,0,500,0,2.684,0,6,0,0,500
,0,2.684ms,0,7,0,0,500,0,2.684ms,0,7,0,0,500 ,0,2.684,0,7,0,0,500,0,2.684,0,7,0,0,500
,0,2.684ms,0,8,0,0,500,0,2.684ms,0,8,0,0,500 ,0,2.684,0,8,0,0,500,0,2.684,0,8,0,0,500
,0,2.684ms,0,9,0,0,500,0,2.684ms,0,9,0,0,500 ,0,2.684,0,9,0,0,500,0,2.684,0,9,0,0,500
,0,2.684ms,0,10,0,0,500,0,2.684ms,0,10,0,0,500 ,0,2.684,0,10,0,0,500,0,2.684,0,10,0,0,500
,0,2.684ms,0,11,0,0,500,0,2.684ms,0,11,0,0,500 ,0,2.684,0,11,0,0,500,0,2.684,0,11,0,0,500
,0,2.684ms,0,12,0,0,500,0,2.684ms,0,12,0,0,500 ,0,2.684,0,12,0,0,500,0,2.684,0,12,0,0,500
,0,2.684ms,0,13,0,0,500,0,2.684ms,0,13,0,0,500 ,0,2.684,0,13,0,0,500,0,2.684,0,13,0,0,500
,0,2.684ms,0,14,0,0,500,0,2.684ms,0,14,0,0,500 ,0,2.684,0,14,0,0,500,0,2.684,0,14,0,0,500
,0,2.684ms,0,15,0,0,500,0,2.684ms,0,15,0,0,500 ,0,2.684,0,15,0,0,500,0,2.684,0,15,0,0,500
,0,2.684ms,0,16,0,0,500,0,2.684ms,0,16,0,0,500 ,0,2.684,0,16,0,0,500,0,2.684,0,16,0,0,500
,0,2.684ms,0,17,0,0,500,0,2.684ms,0,17,0,0,500 ,0,2.684,0,17,0,0,500,0,2.684,0,17,0,0,500
,0,2.684ms,0,18,0,0,500,0,2.684ms,0,18,0,0,500 ,0,2.684,0,18,0,0,500,0,2.684,0,18,0,0,500
,0,2.684ms,0,19,0,0,500,0,2.684ms,0,19,0,0,500 ,0,2.684,0,19,0,0,500,0,2.684,0,19,0,0,500
,0,2.684ms,0,20,0,0,500,0,2.684ms,0,20,0,0,500 ,0,2.684,0,20,0,0,500,0,2.684,0,20,0,0,500
jitter_delay20ms,srv_pkt_loss,srv_delay,srv_jitter,srv_duplicate,srv_corrupt,srv_reorder,srv_rate,cli_pkt_loss,cli_delay,cli_jitter,cli_duplicate,cli_corrupt,cli_reorder,cli_rate jitter_delay20,srv_pkt_loss,srv_delay,srv_jitter,srv_duplicate,srv_corrupt,srv_reorder,srv_rate,cli_pkt_loss,cli_delay,cli_jitter,cli_duplicate,cli_corrupt,cli_reorder,cli_rate
,0,20ms,0,0,0,0,500,0,20ms,0,0,0,0,500 ,0,20,0,0,0,0,500,0,20,0,0,0,0,500
,0,20ms,0.1ms,0,0,0,500,0,20ms,0.1ms,0,0,0,500 ,0,20,0.1,0,0,0,500,0,20,0.1,0,0,0,500
,0,20ms,0.25ms,0,0,0,500,0,20ms,0.25ms,0,0,0,500 ,0,20,0.25,0,0,0,500,0,20,0.25,0,0,0,500
,0,20ms,0.5ms,0,0,0,500,0,20ms,0.5ms,0,0,0,500 ,0,20,0.5,0,0,0,500,0,20,0.5,0,0,0,500
,0,20ms,0.75ms,0,0,0,500,0,20ms,0.75ms,0,0,0,500 ,0,20,0.75,0,0,0,500,0,20,0.75,0,0,0,500
,0,20ms,1ms,0,0,0,500,0,20ms,1ms,0,0,0,500 ,0,20,1,0,0,0,500,0,20,1,0,0,0,500
,0,20ms,1.5ms,0,0,0,500,0,20ms,1.5ms,0,0,0,500 ,0,20,1.5,0,0,0,500,0,20,1.5,0,0,0,500
,0,20ms,2ms,0,0,0,500,0,20ms,2ms,0,0,0,500 ,0,20,2,0,0,0,500,0,20,2,0,0,0,500
,0,20ms,2.5ms,0,0,0,500,0,20ms,2.5ms,0,0,0,500 ,0,20,2.5,0,0,0,500,0,20,2.5,0,0,0,500
,0,20ms,3ms,0,0,0,500,0,20ms,3ms,0,0,0,500 ,0,20,3,0,0,0,500,0,20,3,0,0,0,500
,0,20ms,5ms,0,0,0,500,0,20ms,5ms,0,0,0,500 ,0,20,5,0,0,0,500,0,20,5,0,0,0,500
,0,20ms,7ms,0,0,0,500,0,20ms,7ms,0,0,0,500 ,0,20,7,0,0,0,500,0,20,7,0,0,0,500
,0,20ms,9ms,0,0,0,500,0,20ms,9ms,0,0,0,500 ,0,20,9,0,0,0,500,0,20,9,0,0,0,500
,0,20ms,12ms,0,0,0,500,0,20ms,12ms,0,0,0,500 ,0,20,12,0,0,0,500,0,20,12,0,0,0,500
,0,20ms,15ms,0,0,0,500,0,20ms,15ms,0,0,0,500 ,0,20,15,0,0,0,500,0,20,15,0,0,0,500
,0,20ms,20ms,0,0,0,500,0,20ms,20ms,0,0,0,500 ,0,20,20,0,0,0,500,0,20,20,0,0,0,500
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment