An implementation of SCION, a future Internet architecture.
- docker/: support files to run SCION inside of Docker containers.
- endhost/: the parts of the code used on end hosts, e.g.
sciond. - go/: parts of the implementation that are written in Go.
- infrastructure/: the parts of the infrastructure implemented in Python.
- lib/: the most relevant SCION libraries.
- proto/: the protocol definitions for use with Cap’n Proto.
- sphinx-doc/: the tools to generate the API documentation for the Python code.
- sub/: the git submodules used by SCION
- supervisor/: the configuration for supervisord.
- test/: the unit tests for the Python code.
- tools/: assorted support tools.
- topology/: the scripts to generate the SCION configuration and topology files, as well as the certificates and ROT files
Necessary steps in order to run SCION:
-
Make sure that you are using a clean and recently updated Ubuntu 16.04.
-
Make sure that you have a Go workspace setup, and that
~/.local/bin, and$GOPATH/bincan be found in your$PATHvariable. For example:echo 'export GOPATH="$HOME/go"' >> ~/.profile echo 'export PATH="$HOME/.local/bin:$GOPATH/bin:$PATH"' >> ~/.profile source ~/.profile mkdir -p "$GOPATH" -
Check out scion into the appropriate directory inside your go workspace (or put a symlink into the go workspace to point to your existing scion checkout):
mkdir -p "$GOPATH/src/github.com/netsec-ethz" cd "$GOPATH/src/github.com/netsec-ethz" git clone --recursive [email protected]:netsec-ethz/scion cd scionIf you don't have a github account, or haven't setup ssh access to it, this command will make git use https instead:
git config --global url.https://github.com/.insteadOf [email protected]: -
Install required packages with dependencies:
./env/deps -
Configure the host Zookeeper instance. At a minimum, add
maxClientCnxns=0to/etc/zookeeper/conf/zoo.cfg, but replacing it withdocker/zoo.cfgis recommended. This has the standard parameters set, as well as using a ram disk for the data log, which greatly improves ZK performance (at the cost of reliability, so it should only be done in a testing environment). -
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'). -
beacon_servers,certificate_servers,path_servers,dns_servers(all 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