dss

package module
v0.0.1 Latest Latest
Warning

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

Go to latest
Published: May 21, 2020 License: Apache-2.0 Imports: 0 Imported by: 0

README

USS to USS Communication and Synchronization Build Status GoDoc

This repository contains a simple and open service used by separate UAS Service Suppliers (USSs), often in different organizations, to communicate information about UAS operations and coordinate with each other. This service is a Discovery and Synchronization Service (DSS) as described in the ASTM remote ID standard. This flexible and distributed system is used to connect multiple USSs operating in the same general area to share information while protecting operator and consumer privacy. The system is focused on facilitating communication amongst actively operating USSs without details about UAS operations stored or processed in the DSS.

Concepts

Conceptual background on the DSS and services it supports may be found here.

Simplified architecture

Overview

Simplified architecture diagram

A "DSS Region" consists of one or more DSS instances sharing the same DSS Airspace Representation (DAR) by forming a single CockroachDB cluster. In the simplified diagram above, two DSS instances share the same DAR via CRDB certificates and configuration which means the two HTTPS frontends may be used interchangeably. USS 1 chooses to use only instance 1 while USS 2 uses both instances for improved resilience to failures.

HTTPS frontend

Serves as an HTTPS gateway to the business logic, translating between HTTPS request and gRPC to allow users to communicate to the DSS via simple HTTPS calls. This code is currently generated via grpc-gateway, and does not do much other than translation. See the API specification here.

gRPC backend

Component responsible for all the business logic as well as authentication. This backend talks directly to CockroachDB.

CockroachDB (CRDB)

Individual CockroachDB nodes hosting sharded data of the DAR. More information about CockroachDB here.

Directories of Interest:

  • build/ has all of the configuration required to build and deploy a DSS instance. The README in that directory contains more information.
  • pkg/ contains all of the source code for the DSS. See the README in that directory for more information.
  • cmds/ contains entry points and docker files for the actual binaries (the http-gateway and grpc-backend)
  • test/ contains some tests; see the README for more information about testing.

Notes

  • The current implementation relies on CockroachDB for data storage and synchronization between DSS participants. See implementation details for more information.

Documentation

Overview

Package dss provides an implementation of a Discovery and Synchronization Service (DSS) as described in the ASTM remote ID standard. It is a flexible and distributed system used to connect multiple UAS Service Suppliers (USSs) operating in the same general area to share information while protecting operator and consumer privacy. The system is focused on facilitating communication amongst actively operating USSs with no details about UAS operations stored or processed in the DSS.

Directories

Path Synopsis
build
test-certs
Package main generates a X.509 certificate & public key pair.
Package main generates a X.509 certificate & public key pair.
cmds
pkg
api/v1/auxpb
Package auxpb is a reverse proxy.
Package auxpb is a reverse proxy.
api/v1/ridpb
Package ridpb is a reverse proxy.
Package ridpb is a reverse proxy.
api/v1/scdpb
Package scdpb is a reverse proxy.
Package scdpb is a reverse proxy.
auth
Package auth bundles up functions and types used for authenticating and authorizing incoming requests.
Package auth bundles up functions and types used for authenticating and authorizing incoming requests.
build
Package build bundles up types and functions describing build characteristics.
Package build bundles up types and functions describing build characteristics.
errors
Package errors provides types and functions supporting consistent error handling.
Package errors provides types and functions supporting consistent error handling.
geo
Package geo provides types and functions for geospatial reasoning and indexing purposes.
Package geo provides types and functions for geospatial reasoning and indexing purposes.
logging
Package logging provides common logging infrastructure.
Package logging provides common logging infrastructure.
models
Package models provides common types modelled after entities in the ASTM standard.
Package models provides common types modelled after entities in the ASTM standard.
rid/cockroach
Package cockroach provides an implementation of a dss.Store on top of a cockroach DB instance.
Package cockroach provides an implementation of a dss.Store on top of a cockroach DB instance.
scd
scd/errors
Package errors provides types and functions supporting consistent error handling for errors specific to strategic conflict detection.
Package errors provides types and functions supporting consistent error handling for errors specific to strategic conflict detection.
scd/store/cockroach
Package cockroach provides an implementation of a scd.Store on top of a cockroach DB instance.
Package cockroach provides an implementation of a scd.Store on top of a cockroach DB instance.
sql
validations
Package validations provides types and functions for validating incoming requests.
Package validations provides types and functions for validating incoming requests.

Jump to

Keyboard shortcuts

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