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.
- beacon_server: Beacon Server
- certificate_server: Certificate Server
- path_server: Path Server
- lib/: shared SCION Python libraries
- topology: generator for generating a local topology, including all the necessary configuration, key, and certificate files
- 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
- 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.
-
Make sure that you have a Go workspace setup, and that
~/.local/bin
, and$GOPATH/bin
can be found in your$PATH
variable. 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/scionproto" cd "$GOPATH/src/github.com/scionproto" git clone --recursive [email protected]:scionproto/scion cd scion
If 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
This requires a go version >= 1.9.4 to be available on the system. If no sufficiently up-to-date version is available in the system repositories refer to golang.org/dl for installation instructions.
-
Install
docker
anddocker-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 topology
The 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.key
The 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
, (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