Skip to content
SCION Internet Architecture
Go Python Shell Lua Cap'n Proto Makefile Other
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.buildkite
acceptance
bin
doc
docker
env
go
integration
logs
proto
python
supervisor
tools
topology
vagrant
.bazelignore
.bazelrc
.coveragerc
.editorconfig
.gitattributes
.gitignore
BUILD.bazel
LICENSE
Makefile
README.md
TESTING.md
WORKSPACE
docker.sh
go_deps.bzl
ineffassign.json
nogo.json
scion.bzl
scion.sh
tool_deps.bzl

README.md

SCION

Documentation Build Status Go Report Card GitHub issues Release license

An implementation of SCION, a future Internet architecture.

Necessary steps in order to run SCION:

  1. 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.

  2. Install Bazel version 0.26.1:

    sudo apt-get install pkg-config zip g++ zlib1g-dev unzip python3
    wget https://github.com/bazelbuild/bazel/releases/download/0.26.1/bazel-0.26.1-installer-linux-x86_64.sh
    bash ./bazel-0.26.1-installer-linux-x86_64.sh --user
    rm ./bazel-0.26.1-installer-linux-x86_64.sh
  3. Install bzlcompat version v0.6:

    wget https://github.com/kormat/bzlcompat/releases/download/v0.6/bzlcompat-v0.6-linux-x86_64 -O ~/bin/bzlcompat
    chmod 755 ~/bin/bzlcompat
  4. 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"
  5. 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 https://github.com/scionproto/scion
    cd scion
  6. Install required packages with dependencies:

    ./env/deps
  7. Install docker and docker-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.

  8. 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.

  9. Run the infrastructure:

    ./scion.sh run

  10. Stop the infrastructure:

    ./scion.sh stop

Notes about topology/Default.topo:

  • defaults.subnet (optional): override the default subnet of 127.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 are ISD_ID-AS_ID (format also used for the keys of the JSON file itself) and values can either be PARENT, CHILD, PEER, or CORE.

Tests

In order to run the unit tests:

./scion.sh test

You can’t perform that action at this time.