scion-apps

module
v0.4.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 6, 2021 License: Apache-2.0

README

scion-apps

This repo contains demo applications using the SCION protocol.

The applications are written in Go, with some supporting code in Python. A SCION Internet connection (for instance via SCIONLab) is required to run these applications.

More information on SCION, and tutorials on how to set up SCION and SCIONLab.

Installation:

Download and install our Debian packages:

sudo apt-get install apt-transport-https
echo "deb [trusted=yes] https://packages.netsec.inf.ethz.ch/debian all main" | sudo tee /etc/apt/sources.list.d/scionlab.list
sudo apt-get update
sudo apt install scion-apps-*
Build:
  1. Install go 1.16

    See e.g. https://github.com/golang/go/wiki/Ubuntu

  2. Install dependencies

    Building the SSH tool requires libpam0g-dev:

    sudo apt-get install -y libpam0g-dev
    
  3. Clone this repository

    git clone https://github.com/netsec-ethz/scion-apps.git
    

    Note: because this is using go modules, there is no need to put this under $GOPATH

  4. Install golangci-lint, which is used to run format checks and various linter steps

    make setup_lint
    
  5. Run make to build all projects (and run linters). Run make -j to use multiple jobs to build.

  6. Run make test to run the linters and unit tests.

  7. Run make install to build all projects and install into $GOPATH/bin.

Running:

All of these applications require a running SCION endhost stack, i.e. a running SCION dispatcher and SCION daemon. Please refer to the SCIONLab tutorials to get started.

Environment

The dispatcher and sciond sockets are assumed to be at default locations, but this can be overridden using environment variables:

	SCION_DISPATCHER_SOCKET: /run/shm/dispatcher/default.sock
	SCION_DAEMON_ADDRESS: 127.0.0.1:30255

This is convenient for the normal use case of running the endhost stack for a single SCION AS. When running multiple local ASes, e.g. during development, the address of the sciond corresponding to the desired AS needs to be specified in the SCION_DAEMON_ADDRESS environment variable. In this case, the different sciond addresses can be found in their corresponding sd.toml configuration files in the gen/ASx directory, or summarized in the file gen/sciond_addresses.json.

Hostnames

Hostnames are resolved by scanning /etc/hosts, /etc/scion/hosts and by a RAINS lookup.

Hosts can be added to /etc/hosts, or /etc/scion/hosts by adding lines like this:

# The following lines are SCION hosts
17-ffaa:1:10,[10.0.8.100] server1
18-ffaa:0:11,[10.0.8.120] server2

The RAINS resolver address can be configured in /etc/scion/rains.cfg. This configuration file needs to contain the SCION address of the RAINS resolver, in the form <ISD>-<AS>,[<IP>].

_examples

The directory _examples contains a minimal "hello, world" application using SCION that sends one packet from a client to a server, as well as a simple "hello DRKey" application, showing how to use DRKey. The directory also contains small example programs that show how HTTP can be used over SCION/QUIC for servers, proxies, and clients.

More documentation is available in the helloworld README, in the hellodrkey README and in the shttp README.

bat

bat is a cURL-like tool for testing, debugging, and generally interacting with HTTP servers over SCION/QUIC. Documentation of the code is available in the bat README.

Installation and usage information is available on the SCION Tutorials web page for bat.

bwtester

The bandwidth testing application bwtester enables a variety of bandwidth tests on the SCION network. Documentation of the code and protocol are described in the bwtester README.

Installation and usage information is available on the SCION Tutorials web page for bwtester.

burster

A tool that helps identifying problems with border routers dropping packets. It can also be used to add load to border routers. README.

cbrtester

A tool intended to detect conditions on border routers, where packets are delayed more than the ordinary. README.

camerapp

Camerapp contains image fetcher and server applications, using the SCION network. Documentation of the code is available in the camerapp README.

Installation and usage information is available on the SCION Tutorials web page for camerapp.

netcat

netcat contains a SCION port of the netcat application. See the netcat README for more information.

pkg

Pkg contains underlaying library code for scion-apps.

  • appnet: simplified and functionally extended wrapper interfaces for the SCION core libraries
  • appquic: a simple interface to use QUIC over SCION
  • shttp: glue library to use net/http libraries for HTTP over SCION
  • shttp3: glue library to use quic-go/http3 for HTTP/3 over SCION
  • integration: a simple framework to support intergration testing for the demo applications in this repository

sensorapp

Sensorapp contains fetcher and server applications for sensor readings, using the SCION network.

Installation and usage information is available on the SCION Tutorials web page for sensorapp.

skip

skip is a very simple local HTTP proxy server for very basic SCION browser support. See the skip README for more information.

ssh

Directory ssh contains a SSH client and server running over SCION network.

More documentation is available in the ssh README.

web-gateway

web-gateway is a SCION web server that proxies web content from the TCP/IP web to the SCION web.

webapp

Webapp is a Go application that will serve up a static web portal to make it easy to experiment with SCIONLab test apps on a virtual machine.

Installation and usage information is available on the SCION Tutorials web page for webapp and in the webapp README.

Directories

Path Synopsis
_examples
shttp/fileserver
example-shttp-fileserver is a simple HTTP fileserver that serves all files and subdirectories under the current working directory.
example-shttp-fileserver is a simple HTTP fileserver that serves all files and subdirectories under the current working directory.
bat
This file has been modified to make it compatible with SCION
This file has been modified to make it compatible with SCION
bwtester
bwtestclient
bwtestserver application For more documentation on the application see: https://github.com/netsec-ethz/scion-apps/blob/master/README.md https://github.com/netsec-ethz/scion-apps/blob/master/bwtester/README.md
bwtestserver application For more documentation on the application see: https://github.com/netsec-ethz/scion-apps/blob/master/README.md https://github.com/netsec-ethz/scion-apps/blob/master/bwtester/README.md
bwtestserver
bwtestserver application For more documentation on the application see: https://github.com/netsec-ethz/scion-apps/blob/master/README.md https://github.com/netsec-ethz/scion-apps/blob/master/bwtester/README.md
bwtestserver application For more documentation on the application see: https://github.com/netsec-ethz/scion-apps/blob/master/README.md https://github.com/netsec-ethz/scion-apps/blob/master/bwtester/README.md
camerapp
imagefetcher
imagefetcher application For more documentation on the application see: https://github.com/netsec-ethz/scion-apps/blob/master/README.md https://github.com/netsec-ethz/scion-apps/blob/master/camerapp/README.md
imagefetcher application For more documentation on the application see: https://github.com/netsec-ethz/scion-apps/blob/master/README.md https://github.com/netsec-ethz/scion-apps/blob/master/camerapp/README.md
imageserver
imageserver application.
imageserver application.
pkg
appnet
Package appnet provides a simplified and functionally extended wrapper interface to the scionproto/scion package snet.
Package appnet provides a simplified and functionally extended wrapper interface to the scionproto/scion package snet.
appnet/appquic
Package appquic provides a simple interface to use QUIC over SCION.
Package appquic provides a simple interface to use QUIC over SCION.
integration/sintegration
Package sintegration simplifies the creation of integration tests.
Package sintegration simplifies the creation of integration tests.
shttp
package shttp provides glue to use net/http libraries for HTTP over SCION.
package shttp provides glue to use net/http libraries for HTTP over SCION.
shttp3
package shttp3 provides glue to use quic-go/http3 libraries for HTTP/3 over SCION.
package shttp3 provides glue to use quic-go/http3 libraries for HTTP/3 over SCION.
sensorapp
sensorfetcher
sensorfetcher application For documentation on how to setup and run the application see: https://github.com/netsec-ethz/scion-apps/blob/master/README.md
sensorfetcher application For documentation on how to setup and run the application see: https://github.com/netsec-ethz/scion-apps/blob/master/README.md
sensorserver
sensorserver application For documentation on how to setup and run the application see: https://github.com/netsec-ethz/scion-apps/blob/master/README.md
sensorserver application For documentation on how to setup and run the application see: https://github.com/netsec-ethz/scion-apps/blob/master/README.md
ssh
client/ssh/knownhosts
Package knownhosts implements a parser for the OpenSSH known_hosts host key database.
Package knownhosts implements a parser for the OpenSSH known_hosts host key database.
NOTE: Webapp relies on SCION's configuration for some of its functionality.
NOTE: Webapp relies on SCION's configuration for some of its functionality.
lib

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL