Skip to content
SCION Internet Architecture
Go Python Shell Lua Cap'n Proto Makefile
Branch: master
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
.buildkite Upgrade to Go 1.13 (#3362) Nov 18, 2019
acceptance Delete OverlayAddr (#3381) Nov 18, 2019
bin Don't mix generated and non-generated files in bin/ (#1332) Nov 21, 2017
docker Remove python images from perapp Makefile (#3343) Nov 9, 2019
env Remove c/ (#3144) Sep 16, 2019
go BS, DISP: Use net.UDPAddr instead of addr.AppAddr (#3375) Nov 18, 2019
integration CI: Increase e2e timeout for core-core (#2731) Jun 3, 2019
logs Pin all go dependencies to specific commit IDs. (#922) Oct 26, 2016
proto HP: add hidden path segment extension (#3053) Aug 27, 2019
python topo-gen: Create BR dispatcher per BR (#3321) Nov 5, 2019
supervisor Remove supervisor-quick dependency. (#925) Oct 28, 2016
tools Update docker-ce and docker-compose (#3391) Nov 18, 2019
topology Make specifying zookeeper in topo files optional (#3278) Oct 25, 2019
vagrant lint: Check all markdown files in the repo (#2836) Jul 10, 2019
.bazelignore Bazel build system for Golang components (#2439) Mar 4, 2019
.bazelrc Bazel: Use --stamp command line flag (#3380) Nov 14, 2019
.coveragerc Only print coverage report to console on success. Aug 26, 2015
.editorconfig Add a .editorconfig file (#1293) Oct 27, 2017
.gitattributes Do not package certificate keys Aug 21, 2015
.gitignore Use bazel disk cache (#3336) Nov 8, 2019
BUILD.bazel serrorscheck: Use newer revision (#3215) Oct 3, 2019
LICENSE Adding Apache2 LICENSE file (#894) Sep 15, 2016
Makefile Remove tags make target (#3249) Oct 14, 2019 Fix wrong git checkout path in README (#3266) Oct 23, 2019 lint: Check all markdown files in the repo (#2836) Jul 10, 2019
WORKSPACE Upgrade to Go 1.13 (#3362) Nov 18, 2019 added metrics to integration test artifacts (#2861) Jul 18, 2019
ineffassign.json analysis: Add nilness and ineffassign checks (#2765) Jun 19, 2019
nogo.json update gazelle and rules_go (#3325) Nov 13, 2019
scion.bzl Link git version into scion binaries (#2543) Mar 28, 2019 add topo_clean command (#3303) Nov 4, 2019


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
    bash ./ --user
    rm ./
  3. Install bzlcompat version v0.6:

    wget -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/"
    cd "$GOPATH/src/"
    git clone
    cd scion
  6. Install required packages with dependencies:

  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):

    ./ topology

    The resulting directory structure will be created:


    The default topology looks like this.

  9. Run the infrastructure:

    ./ run

  10. Stop the infrastructure:

    ./ stop

Notes about topology/Default.topo:

  • defaults.subnet (optional): override the default subnet of

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


In order to run the unit tests:

./ test

You can’t perform that action at this time.