The goal of this project is to create an infrastructure and benchmarks to measure the impact of different communication paths on the content delivery within the SCION network using 2 ASes with several paths and hops between them. The project was build up on my prior work with SCION (SCION-TV). Both projects are inspired by the work on the shttp scion-app example and especially this project relies heavily on the scion-apps pakage pan.
Content Files are purpose-oriented deviations of cited sources to benchmark different content network traffic. Content files will not be uploaded to the repository and might only be temporarily available under the sourced links as I do not plan to regular update them and have to refrain from redistributing content of other creators on the web. The website text is partially generated with ChatGPT and not fact checked as I just needed a larger corpus of text to download.
You can find the results of my benchmarks and test in the benchmark folder
Benchmarks were run on a Client machine with the following specifications: OS - Ubuntu 22.04.5 LTS, RAM - 32GB, CPU - Ryzen 7700x [8Cores @ 4.5GHz], MainMemory - SSD, Network(Down/Up) - 120/16 Mbits
This section describes how to install all necessary parts to get the benchmark up and running. You need a SCION installation with a SCION AS and a SCION apps installation, since you need to run the SCION proxy server skip and access a remote SCION AS. In case you struggle with the go installation view go install instructions. Alternatively you can also find a compiled list of commands in commands.sh.
local machine:
-> Create an account and your own SCIONLab AS with the SCIONLab Organisation
-> Follow the Installation and Configuration Guidelines to setup scion on your machine
-> Follow the build instructions of the scion-apps repository
Then run the following lines and substitute <scion-address>
with the actual SCION address of your AS
git clone https://github.com/Nils-Treuheit/SCION-CDN
echo "<scion-address> www.scion-sample.org" >> /etc/hosts
remote machine:
-> Create an account and your own SCIONLab AS with the SCIONLab Organisation
-> Follow the Installation and Configuration Guidelines to setup scion on your machine
git clone https://github.com/Nils-Treuheit/SCION-CDN
Make sure the local and remote machine are located in different networks and more importantly also be assigned to different SCION attachment points!
Please also note that the selectors.go requires access to numerous functions found in the scion-apps pkg pan. The functions have not been changed only their names have been capitalized to expose them to be used in this external project code. If the scion-apps repository was not yet changed you might have to replicate those changes again on your local scion-apps repository on the remote machine. Also please edit the last line in the go.mod file accordingly:
replace github.com/netsec-ethz/scion-apps => <adapted/scion-apps/repo/path>
To run the benchmark execute the following commands please make sure you substitute the elements in the <>
brackets. You can find a compiled list of commands in commands.sh.
cd ~/scion-apps && ./bin/scion-skip
ssh -t <user>@<ipv4> "cd ~/SCION-CDN && go run scion_server.go selectors.go servers.go <mode>"
cd ~/SCION-CDN && python measurement_automation.py <reps> <mode> <debug>