9ea49d91185e8e37efabb72a68accbf52ab31916
Network protocols research
Prerequisites
Ensure you have the following installed on your system:
- libvirt (latest version recommended)
- Terraform (latest version recommended)
- Wireshark (latest version recommended)
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 ...
Change link profile
./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
Description
Languages
Shell
43%
HCL
30.9%
Smarty
20.4%
XSLT
5.7%