Task 5

Prerequisites

Ensure you have the following installed on your system:

Deploying environment

NOTE: You must have libvirt daemon running

Goto Terraform directory

cd terraform

Create and edit dotenv file

cp .env.template .env

Add client and server records to /etc/hosts

# ...
10.6.6.10 client
10.6.6.20 server

Init Terraform

terraform init

Start the environment

terraform apply

NOTE: Wait for several minutes until all required things will be provided to the vms

CheatSheet

Commands for client

# For HTTP/1.1 (TCP)
curl server:80/<size>MB.file -o <size>MB.file

# For HTTP/2 (TCP)
curl --http2-prior-knowledge server:81/<size>MB.file -o <size>MB.file

# For HTTP/3 (UDP)
./curl --http3-only --insecure https://server:443/<size>MB.file -o <size>MB.file

# For TFTP (UDP)
tftp server -c get /var/www/<size>MB.file

Run benchmarks

./scripts/run_benchmarks output_dir

This script does the following things

Change CC (on vms, 4 combinations for tcp protocols)

sysctl net.ipv4.tcp_congestion_control=bbr|reno -w

Starts tcpdump on hypervisor with filters according to protocol

tcpdump -i "$interface" -w "$pcap_file" "$filter"

Runs download command according to protocol

Refer to this

Stops tcpdump

Using capinfos (wireshark builtin cmd utility) it gets first packet time in epoch and then shifts all packets using editcap (wireshark builtin cmd utility) to the beginning of epoch time.

Merges pcap files

mergecap -w merged.pcap dump1 dump2 ...
./scripts/change_profile

And follow the instructions

This script just executes this command on server vm

tc qdisc replace dev $interface root netem delay ${delay}ms loss ${loss}%

OR:

tc qdisc del dev $interface root
S
Description
No description provided
Readme 585 MiB
Languages
Shell 43%
HCL 30.9%
Smarty 20.4%
XSLT 5.7%