An implementation of SCION, a future Internet architecture.
- docker/: support files to run SCION inside of Docker containers.
- go/: parts of the implementation that are written in
Go.
- border_router: Border Router
- certificate_server: Certificate Server
- scion_ip_gateway: SCION IP Gateway
- lib: shared SCION Go libraries
- python/: the parts of the infrastructure implemented in Python.
- proto/: the protocol definitions for use with Cap’n Proto.
- supervisor/: the configuration for supervisord
- tools/: assorted support tools
- topology/: various topology definitions and configurations
Necessary steps in order to run SCION:
-
Make sure that you are using a clean and recently updated Ubuntu 16.04. This environment assumes you're running as a non-root user with sudo access.
-
Install Bazel version 1.2.0:
sudo apt-get install g++ unzip zip wget https://github.com/bazelbuild/bazel/releases/download/1.2.0/bazel-1.2.0-installer-linux-x86_64.sh bash ./bazel-1.2.0-installer-linux-x86_64.sh --user rm ./bazel-1.2.0-installer-linux-x86_64.sh
-
Check out scion into the appropriate directory inside your workspace:
cd "<workspace>" git clone https://github.com/scionproto/scion cd scion
-
Install required packages with dependencies:
./env/deps
-
Install
dockeranddocker-compose. Please follow the instructions for docker-ce and docker-compose. Add your user to the docker group:sudo usermod -a -G docker $LOGNAME. Log out and log back in so that your group membership is re-evaluated. -
Create the topology and configuration files (according to
topology/Default.topo):./scion.sh topologyThe resulting directory structure will be created:
./gen/ISD{X}/AS{Y}/ {elem}{X}-{Y}-{Z}/ as.yml path_policy.yml supervisord.conf topology.yml certs/ ISD{X}-AS{Y}-V0.crt ISD{X}-V0.trc keys/ as-sig.keyThe default topology looks like this.
-
Run the infrastructure:
./scion.sh run -
Stop the infrastructure:
./scion.sh stop
Notes about topology/Default.topo:
-
defaults.subnet(optional): override the default subnet of127.0.0.0/8. -
core(optional): specify if this is a core AS or not (defaults to 'false'). -
control_servers(optional): number of such servers in a specific AS (override the default value 1). -
links: keys areISD_ID-AS_ID(format also used for the keys of the JSON file itself) and values can either bePARENT,CHILD,PEER, orCORE.
In order to run the unit tests:
./scion.sh test