Skip to content

mlegner/scion

 
 

Repository files navigation

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

Releases

No releases published

Packages

No packages published

Languages

  • Go 68.3%
  • Python 28.5%
  • Shell 2.2%
  • Lua 0.5%
  • Cap'n Proto 0.3%
  • Makefile 0.1%
  • Other 0.1%