SCION Internet Architecture
Go Python C Shell Lua Makefile Other
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
.circleci Update go-sqlite to master (#1784) Aug 17, 2018
bin Don't mix generated and non-generated files in bin/ (#1332) Nov 21, 2017
c Provide context to sudo password prompts. (#1787) Aug 21, 2018
doc Add PS design doc (#1767) Aug 17, 2018
docker Various build/ci fixes (#1775) Aug 15, 2018
env Implement verification in SCIOND (#1731) Aug 16, 2018
go Introduce ExpTimeType for ExpTime on HopFields (#1786) Aug 21, 2018
integration Various build/ci fixes (#1775) Aug 15, 2018
logs Pin all go dependencies to specific commit IDs. (#922) Oct 26, 2016
proto Remove sciond.SvcBR from SCIOND API (#1652) Jul 16, 2018
python Introduce ExpTimeType for ExpTime on HopFields (#1786) Aug 21, 2018
sphinx-doc Rework of the revocation authentication (#1513) May 7, 2018
supervisor Remove supervisor-quick dependency. (#925) Oct 28, 2016
tools Introduce ExpTimeType for ExpTime on HopFields (#1786) Aug 21, 2018
topology Run dockerized topology on the CI (#1755) Aug 13, 2018
vagrant Add vagrant configs for SCION-IP Gateway test environment. (#969) Feb 15, 2017
.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 Dockerize applications and use docker-compose (#1614) Jun 26, 2018
LICENSE Adding Apache2 LICENSE file (#894) Sep 15, 2016
Makefile LWIP removal (#1629) Jul 2, 2018
README.md Update README (#1506) Apr 15, 2018
TESTING.md New repo layout (#1118) Jun 8, 2017
docker.sh Dockerize applications and use docker-compose (#1614) Jun 26, 2018
scion.sh Provide context to sudo password prompts. (#1787) Aug 21, 2018

README.md

SCION

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.

  2. 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"
    
  3. 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 git@github.com: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 git@github.com:

  4. Install required packages with dependencies:

    ./env/deps
    
  5. Configure the host Zookeeper instance. At a minimum, add maxClientCnxns=0 to /etc/zookeeper/conf/zoo.cfg, but replacing it with docker/zoo.cfg is 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).

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

  7. Run the infrastructure:

    ./scion.sh run

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