Skip to content
forked from netsec-ethz/rains

RAINS (Another Internet Naming Service)

License

Notifications You must be signed in to change notification settings

winterdeaf/rains

 
 

Repository files navigation

RAINS, Another Internet Naming Service

This repository contains a reference implementation of a RAINS server, supporting authority, intermediary, and query service, as well as associated tools for managing the server. It has the following executables:

  • rainsd: A configurable RAINS server
  • rdig: A command-line tool for querying RAINS servers
  • zonepub: A command-line tool for a naming authority to publish information about its zone(s) to its authoritative RAINS servers
  • keyManager: A command-line tool for a naming authority to manage its key pairs

In addition to this there is a resolver in libresolve which either forwards a query to a RAINS server to resolve it or performs a recursive lookup itself on the callers behalf before sending the received answer back to the caller.

Understanding RAINS

The RAINS implementation is based on the RAINS protocol specified in the Internet draft. The different components necessary to run a RAINS infrastructure are described here. The design of this RAINS server is explained here and the cache folder contains design decisions for all caches. The zonefile format, designed to be conveniently readable by a human, is defined in backus normal form here. Each command line tool has a help page which explains all commands and flags that are supported.

Installing and using RAINS

On your machine

  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
  3. Download the repo e.g. go get github.com/netsec-ethz/rains
  4. Download and install SCION according to the README
  5. Create the necessary binaries by calling make
  6. Use the binaries created in the cmd folder

In SCION lab

TODO

Issues and Test coverage

The RAINS server and tools are under active development. An up to date list of issues and bugs can be found here.

The server and all tools are tested using unit and integration tests. A description of the integration test can be found in this readme To inspect the test coverage of all unit tests together with the integration test, perform the following steps:

  1. go test -coverprofile=coverage.out -coverpkg=./internal/pkg/... ./...
  2. go tool cover -html=coverage.out -o coverage.html
  3. firefox coverage.html

About

RAINS (Another Internet Naming Service)

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Go 94.4%
  • Yacc 5.2%
  • Makefile 0.4%