scion

module
v0.12.0 Latest Latest
Warning

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

Go to latest
Published: Oct 10, 2024 License: Apache-2.0

README

SCION

Slack chat Matrix chat Awesome ReadTheDocs Go Docs Nightly Build Go Report Card GitHub issues GitHub issues Release License

Welcome to the open-source implementation of SCION (Scalability, Control and Isolation On next-generation Networks), a future Internet architecture. SCION provides route control, failure isolation, and explicit trust information for end-to-end communication. To find out more about the project, please visit our documentation site.

Installation

Installation packages for Debian and derivatives are available for x86-64, arm64, x86-32 and arm. These packages can be found in the latest release. Packages for in-development versions can be found from the latest nightly build.

Alternatively, "naked" pre-built binaries are available for Linux x86-64 and can be downloaded from the latest release or the latest nightly build.

Build from sources

SCION can be built with go build. To build all binaries used in a SCION deployment (i.e. excluding the testing and development tools), run

CGO_ENABLED=0 go build -o bin ./router/... ./control/... ./dispatcher/... ./daemon/... ./scion/... ./scion-pki/... ./gateway/...

The default way to build SCION, however, uses Bazel. In particular, this allows to run all the tests, linters etc. Please visit our documentation site for instructions on how to set up Bazel and the full development environment.

Connecting to the SCION Network

Join SCIONLab if you're interested in playing with SCION in an operational global test deployment of SCION.

The awesome-scion list contains pointers to production deployments of SCION.

Contributing

Interested in contribution to the SCION project? Please visit our contribution guide for more information about how you can do so.

Join us on our slack workspace with this invite link: join scionproto.slack.com

License

License

Directories

Path Synopsis
cmd/sig_ping_acceptance
Sig_ping_acceptance runs checks for basic connectivity between AS through the SIG, using standard IP ping.
Sig_ping_acceptance runs checks for basic connectivity between AS through the SIG, using standard IP ping.
antlr
beacon/mock_beacon
Package mock_beacon is a generated GoMock package.
Package mock_beacon is a generated GoMock package.
beaconing
Package beaconing implements tasks and handlers related to beacon propagation and registration.
Package beaconing implements tasks and handlers related to beacon propagation and registration.
beaconing/mock_beaconing
Package mock_beaconing is a generated GoMock package.
Package mock_beaconing is a generated GoMock package.
config
Package config describes the configuration of the beacon server.
Package config describes the configuration of the beacon server.
drkey/grpc/mock_grpc
Package mock_grpc is a generated GoMock package.
Package mock_grpc is a generated GoMock package.
drkey/mock_drkey
Package mock_drkey is a generated GoMock package.
Package mock_drkey is a generated GoMock package.
ifstate
Package ifstate implements the interface state in memory structure as well as related tasks and handlers.
Package ifstate implements the interface state in memory structure as well as related tasks and handlers.
mgmtapi
Package mgmtapi provides primitives to interact with the openapi HTTP API.
Package mgmtapi provides primitives to interact with the openapi HTTP API.
mgmtapi/mock_mgmtapi
Package mock_mgmtapi is a generated GoMock package.
Package mock_mgmtapi is a generated GoMock package.
segreq
Package segreq contains everything that is needed to handle segment requests in the path server.
Package segreq contains everything that is needed to handle segment requests in the path server.
trust/mock_trust
Package mock_trust is a generated GoMock package.
Package mock_trust is a generated GoMock package.
config
Package config contains the configuration of the SCION Daemon.
Package config contains the configuration of the SCION Daemon.
fetcher
Package fetcher implements path segment fetching, verification and combination logic for SCIOND.
Package fetcher implements path segment fetching, verification and combination logic for SCIOND.
fetcher/mock_fetcher
Package mock_fetcher is a generated GoMock package.
Package mock_fetcher is a generated GoMock package.
mgmtapi
Package mgmtapi provides primitives to interact with the openapi HTTP API.
Package mgmtapi provides primitives to interact with the openapi HTTP API.
demo
config
Package config contains the configuration of the SCION dispatcher.
Package config contains the configuration of the SCION dispatcher.
mgmtapi
Package mgmtapi provides primitives to interact with the openapi HTTP API.
Package mgmtapi provides primitives to interact with the openapi HTTP API.
control/grpc/mock_grpc
Package mock_grpc is a generated GoMock package.
Package mock_grpc is a generated GoMock package.
control/mock_control
Package mock_control is a generated GoMock package.
Package mock_control is a generated GoMock package.
dataplane
Package dataplane defines implementations required to run a gateway dataplane.
Package dataplane defines implementations required to run a gateway dataplane.
mgmtapi
Package mgmtapi provides primitives to interact with the openapi HTTP API.
Package mgmtapi provides primitives to interact with the openapi HTTP API.
mock_gateway
Package mock_gateway is a generated GoMock package.
Package mock_gateway is a generated GoMock package.
pathhealth
Package pathhealth monitors paths to different ASes.
Package pathhealth monitors paths to different ASes.
pktcls
Package pktcls implements tools for classifying and acting on network packets.
Package pktcls implements tools for classifying and acting on network packets.
pktcls/mock_pktcls
Package mock_pktcls is a generated GoMock package.
Package mock_pktcls is a generated GoMock package.
routing
Package routing defines implementations around the routing decisions for the gateway.
Package routing defines implementations around the routing decisions for the gateway.
routing/mock_routing
Package mock_routing is a generated GoMock package.
Package mock_routing is a generated GoMock package.
xnet
Package xnet contains low level Linux networking calls (generally related to netlink and tunneling)
Package xnet contains low level Linux networking calls (generally related to netlink and tunneling)
pkg
addr
Package addr contains types for SCION addressing.
Package addr contains types for SCION addressing.
daemon
Package daemon provides APIs for querying SCION Daemons.
Package daemon provides APIs for querying SCION Daemons.
daemon/mock_daemon
Package mock_daemon is a generated GoMock package.
Package mock_daemon is a generated GoMock package.
experimental/epic
Package epic contains methods for the creation and verification of the EPIC packet timestamp and validation fields.
Package epic contains methods for the creation and verification of the EPIC packet timestamp and validation fields.
experimental/hiddenpath/grpc/mock_grpc
Package mock_grpc is a generated GoMock package.
Package mock_grpc is a generated GoMock package.
experimental/hiddenpath/mock_hiddenpath
Package mock_hiddenpath is a generated GoMock package.
Package mock_hiddenpath is a generated GoMock package.
log
log/mock_log
Package mock_log is a generated GoMock package.
Package mock_log is a generated GoMock package.
metrics
Package metrics contains interfaces for generic metrics primitives, to facilitate mocking metrics in unit tests.
Package metrics contains interfaces for generic metrics primitives, to facilitate mocking metrics in unit tests.
metrics/mock_metrics
Package mock_metrics is a generated GoMock package.
Package mock_metrics is a generated GoMock package.
metrics/v2
Package metrics contains interfaces for generic metrics primitives, to facilitate mocking metrics in unit tests.
Package metrics contains interfaces for generic metrics primitives, to facilitate mocking metrics in unit tests.
private/ctrl/path_mgmt/proto
Package proto used to contain mostly auto-generated code for parsing/packing SCION capnproto protocol structs.
Package proto used to contain mostly auto-generated code for parsing/packing SCION capnproto protocol structs.
private/mocks/io
Package io defines io types from the stdlib for mocking.
Package io defines io types from the stdlib for mocking.
private/mocks/io/mock_io
Package mock_io is a generated GoMock package.
Package mock_io is a generated GoMock package.
private/mocks/net
Package net defines net types from the stdlib for mocking.
Package net defines net types from the stdlib for mocking.
private/mocks/net/mock_net
Package mock_net is a generated GoMock package.
Package mock_net is a generated GoMock package.
private/prom
Package prom contains some utility functions for dealing with prometheus metrics.
Package prom contains some utility functions for dealing with prometheus metrics.
private/prom/promtest
Package promtest contains helpers to test metrics structs.
Package promtest contains helpers to test metrics structs.
private/serrors
Package serrors provides enhanced errors.
Package serrors provides enhanced errors.
private/xtest/graph
Code generated by graphupdater tool, DO NOT EDIT.
Code generated by graphupdater tool, DO NOT EDIT.
proto/control_plane/mock_control_plane
Package mock_control_plane is a generated GoMock package.
Package mock_control_plane is a generated GoMock package.
proto/discovery/mock_discovery
Package mock_discovery is a generated GoMock package.
Package mock_discovery is a generated GoMock package.
proto/hidden_segment/mock_hidden_segment
Package mock_hidden_segment is a generated GoMock package.
Package mock_hidden_segment is a generated GoMock package.
scrypto/cms/oid
Package oid contains OID definitions.
Package oid contains OID definitions.
scrypto/cms/protocol
Package protocol implements low level CMS types, parsing and generation.
Package protocol implements low level CMS types, parsing and generation.
segment/extensions/staticinfo
Package staticinfo contains the internal representation of the StaticInfoExtension path segment extension, and conversion from and to the corresponding protobuf representation.
Package staticinfo contains the internal representation of the StaticInfoExtension path segment extension, and conversion from and to the corresponding protobuf representation.
segment/mock_seg
Package mock_seg is a generated GoMock package.
Package mock_seg is a generated GoMock package.
slayers
Package slayers contains gopacket style layers for the SCION Header, HopByHop and EndToEnd Extension headers, SCMP, and SCION/UDP.
Package slayers contains gopacket style layers for the SCION Header, HopByHop and EndToEnd Extension headers, SCMP, and SCION/UDP.
slayers/path/epic
Package epic implements the Path interface for the EPIC path type.
Package epic implements the Path interface for the EPIC path type.
snet
Package snet implements interfaces net.Conn and net.PacketConn for SCION connections.
Package snet implements interfaces net.Conn and net.PacketConn for SCION connections.
snet/metrics
Package metrics defines default initializers for the metrics structs that are used in the snet package.
Package metrics defines default initializers for the metrics structs that are used in the snet package.
snet/mock_snet
Package mock_snet is a generated GoMock package.
Package mock_snet is a generated GoMock package.
snet/path
Package path implements snet.Path with full metadata This is used by libraries that provide paths for applications to use, such as the path combinator and the SCION Daemon API.
Package path implements snet.Path with full metadata This is used by libraries that provide paths for applications to use, such as the path combinator and the SCION Daemon API.
spao
Package spao implements the logic needed to provide support for the SCION Packet Authenticator Option defined on: https://docs.scion.org/en/latest/protocols/authenticator-option.html
Package spao implements the logic needed to provide support for the SCION Packet Authenticator Option defined on: https://docs.scion.org/en/latest/protocols/authenticator-option.html
private
app
app/appnet
Package infraenv contains convenience function common to SCION infra services.
Package infraenv contains convenience function common to SCION infra services.
app/appnet/mock_infraenv
Package mock_infraenv is a generated GoMock package.
Package mock_infraenv is a generated GoMock package.
app/env
Package env contains host-wide SCION settings.
Package env contains host-wide SCION settings.
app/feature
Package feature provides a simple mechanism for command line tools to take and parse feature flags.
Package feature provides a simple mechanism for command line tools to take and parse feature flags.
app/launcher
Package launcher includes the shared application execution boilerplate of all SCION servers.
Package launcher includes the shared application execution boilerplate of all SCION servers.
app/path/pathprobe
Package pathprobe contains methods to probe scion paths.
Package pathprobe contains methods to probe scion paths.
ca/api
Package api provides primitives to interact with the openapi HTTP API.
Package api provides primitives to interact with the openapi HTTP API.
ca/config
Package config contains building blocks for CA functionality configuration.
Package config contains building blocks for CA functionality configuration.
ca/renewal/grpc/mock_grpc
Package mock_grpc is a generated GoMock package.
Package mock_grpc is a generated GoMock package.
ca/renewal/mock_renewal
Package mock_renewal is a generated GoMock package.
Package mock_renewal is a generated GoMock package.
config
Package config provides an unified pattern for configuration structs.
Package config provides an unified pattern for configuration structs.
discovery/mock_discovery
Package mock_discovery is a generated GoMock package.
Package mock_discovery is a generated GoMock package.
env
Package env contains common command line and initialization code for SCION services.
Package env contains common command line and initialization code for SCION services.
file
Package file contains utility functions for interacting with files.
Package file contains utility functions for interacting with files.
mgmtapi/cppki/api
Package api provides primitives to interact with the openapi HTTP API.
Package api provides primitives to interact with the openapi HTTP API.
mgmtapi/health/api
Package api provides primitives to interact with the openapi HTTP API.
Package api provides primitives to interact with the openapi HTTP API.
mgmtapi/jwtauth
Package jwtauth includes helper functions for creating HTTP clients and servers that can perform JWT authorization via Bearer tokens.
Package jwtauth includes helper functions for creating HTTP clients and servers that can perform JWT authorization via Bearer tokens.
mgmtapi/segments/api
Package api provides primitives to interact with the openapi HTTP API.
Package api provides primitives to interact with the openapi HTTP API.
mgmtapi/segments/api/mock_api
Package mock_api is a generated GoMock package.
Package mock_api is a generated GoMock package.
path/combinator
Package combinator contains methods for constructing SCION forwarding paths.
Package combinator contains methods for constructing SCION forwarding paths.
path/pathpol
Package pathpol implements path policies, documentation in doc/PathPolicy.md Currently implemented: ACL, Sequence, Extends and Options.
Package pathpol implements path policies, documentation in doc/PathPolicy.md Currently implemented: ACL, Sequence, Extends and Options.
pathdb/mock_pathdb
Package mock_pathdb is a generated GoMock package.
Package mock_pathdb is a generated GoMock package.
revcache/mock_revcache
Package mock_revcache is a generated GoMock package.
Package mock_revcache is a generated GoMock package.
segment/segfetcher
Package segfetcher contains all the logic that is needed to fetch segments, verify and store segments in an efficient manner.
Package segfetcher contains all the logic that is needed to fetch segments, verify and store segments in an efficient manner.
segment/segfetcher/mock_segfetcher
Package mock_segfetcher is a generated GoMock package.
Package mock_segfetcher is a generated GoMock package.
segment/seghandler/mock_seghandler
Package mock_seghandler is a generated GoMock package.
Package mock_seghandler is a generated GoMock package.
segment/segverifier
Package segverifier implements primitives for verifying path segments.
Package segverifier implements primitives for verifying path segments.
segment/verifier/mock_verifier
Package mock_infra is a generated GoMock package.
Package mock_infra is a generated GoMock package.
storage
Package storage provides factories for various application storage backends.
Package storage provides factories for various application storage backends.
storage/beacon
Package beacon defines interfaces that extend the capabilities of a beacon storage compared to the beacon.DB interface.
Package beacon defines interfaces that extend the capabilities of a beacon storage compared to the beacon.DB interface.
storage/db
Package db contains common database abstractions for our infra.
Package db contains common database abstractions for our infra.
storage/mock_storage
Package mock_storage is a generated GoMock package.
Package mock_storage is a generated GoMock package.
storage/trust
Package trust defines interfaces that extend the capabilities of a trust storage compared to the trust.DB interface.
Package trust defines interfaces that extend the capabilities of a trust storage compared to the trust.DB interface.
svc
Package svc implements support for SVC Resolution.
Package svc implements support for SVC Resolution.
svc/internal/ctxconn
Package ctxconn provides a helper function to track context cancellation when working with connections.
Package ctxconn provides a helper function to track context cancellation when working with connections.
svc/internal/ctxconn/mock_ctxconn
Package mock_ctxconn is a generated GoMock package.
Package mock_ctxconn is a generated GoMock package.
svc/mock_svc
Package mock_svc is a generated GoMock package.
Package mock_svc is a generated GoMock package.
topology
Package topology wraps two versions of the topology.
Package topology wraps two versions of the topology.
topology/json
Package json encodes AS topology information via JSON.
Package json encodes AS topology information via JSON.
topology/mock_topology
Package mock_topology is a generated GoMock package.
Package mock_topology is a generated GoMock package.
trust/mock_trust
Package mock_trust is a generated GoMock package.
Package mock_trust is a generated GoMock package.
underlay/conn
Package conn implements underlay sockets.
Package conn implements underlay sockets.
worker
Package worker contains helpers for working with long-running goroutines that need to be destroyed.
Package worker contains helpers for working with long-running goroutines that need to be destroyed.
bfd
Package bfd implements Bidirectional Forwarding Detection as defined in RFC 5880.
Package bfd implements Bidirectional Forwarding Detection as defined in RFC 5880.
bfd/mock_bfd
Package mock_bfd is a generated GoMock package.
Package mock_bfd is a generated GoMock package.
config
Package config defines the router's configuration file.
Package config defines the router's configuration file.
control/internal/metrics
Package metrics defines and exports router metrics to be scraped by prometheus.
Package metrics defines and exports router metrics to be scraped by prometheus.
control/mock_api
Package mock_api is a generated GoMock package.
Package mock_api is a generated GoMock package.
mgmtapi
Package mgmtapi provides primitives to interact with the openapi HTTP API.
Package mgmtapi provides primitives to interact with the openapi HTTP API.
mock_router
Package mock_router is a generated GoMock package.
Package mock_router is a generated GoMock package.
scion
ping
Package ping implements pinging based on SCMP echo messages.
Package ping implements pinging based on SCMP echo messages.
traceroute
Package traceroute implements tracerouting based on SCMP traceroute messages.
Package traceroute implements tracerouting based on SCMP traceroute messages.
file
Package file contains helper functions to interact with files.
Package file contains helper functions to interact with files.
key
Package key defines cobra commands to manage private and public keys.
Package key defines cobra commands to manage private and public keys.
tools
braccept/cases
Package cases contains router acceptance cases that can be integrated into the braccept binary.
Package cases contains router acceptance cases that can be integrated into the braccept binary.
buildkite/cmd/buildkite_artifacts
A tool to download all artifacts from a specific build.
A tool to download all artifacts from a specific build.
integration
Package integration simplifies the creation of integration tests.
Package integration simplifies the creation of integration tests.
lint
Package lint contains helpers for linting and static analysis.
Package lint contains helpers for linting and static analysis.
mmbm
mmbm measures the performance of memory copy, as performed by the Go runtime.
mmbm measures the performance of memory copy, as performed by the Go runtime.
pathdb_dump
debug tool to dump the contents of a sqlite path DB.
debug tool to dump the contents of a sqlite path DB.

Jump to

Keyboard shortcuts

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