v0.9.0 "Bürgenstock"
What's Changed
Peering links
Peering links in the topology are supported, in both the control plane (control
) and the data plane (router
).
Configuring a peering link requires setting the interface ID in the remote AS, see remote_interface_id
in the configuration manual.
Router Performance Improvements and Slow-Path Packet Handling
An internal restructuring of the router
decouples receiving, processing and forwarding packets. Directly, this restructuring brings modest performance improvements, and enables a special, lower priority processing of any exceptional cases (SCMP traceroute requests, and SCMP error messages).
This will be the basis for more performance tuning in the future.
Receive and send buffer sizes, batch sizes as well as the number of packet processing goroutines can now be tuned. See router
in the router configuration manual.
DRKey and SPAO
Dynamically-Recreatable Key (DRKey) is a system to establish shared symmetric keys between any two hosts in SCION, based on a key-derivation hierarchy that requires explicit key exchange only on the level of ASes. These keys are intended to be used primarily for packet authentication, in the form of the SCION Packet Authentication Option (SPAO) in the end-to-end packet extension header.
The control
service now includes an implementation of the DRKey infrastructure. This system is still somewhat experimental and is disabled by default. See drkey
in the control service configuration manual.
The AS-level key exchanges in DRKey rely on TLS for authentication, based on the SCION control-plane-PKI AS certificates.
As a side-effect of this, all other RPC invocations between control services now use the CP-PKI AS certificates, too. Previously, this had not been required, as all other RPCs control messages that were directly authenticated.
The router
includes an experimental and somewhat incomplete implementation of SPAO-based authentication of SCMP messages. This, too, is disabled by default.
Command line tools
scion ping
set payload size appropriately if--max-mtu
is set (#4250) and and add new option--packet-size
that allows setting the final packet size (#4251).- Add machine readable output (json/yaml) for
scion ping
scion traceroute
andscion showpaths
with the newformat
option (#4287). - Use the same emoji encoding mapping as smallstep in
scion-pki certificate fingerprint --format emoji
(#4252). - Add
scion-pki key fingerprint
command to calculate SubjectKeyID (#4253).
Go packages:
- pkg/snet: support URI style UDPAddr encoding (#4254).
- pkg/addr: replace
addr.HostAddr
hierarchy with tagged unionaddr.Host
.
Additionally, add a new addr.Addr type representing a full SCION address (ISD, AS and host address), including parsing functionality. This definition is identical to thesnet.SCIONAddress
type, which is now only kept as a type alias for compatibility (#4346).
sqlite Implementation and Platform Compatibility
By default, the SCION components now use a pure Go implementation of sqlite (modernc.org/sqlite) and build without CGo. This allows to build the SCION components as statically linked binaries, removing any dependence on a minimum libc or libresolv version.
Gobra CI
All pull-requests now run through formal program verification using Gobra. Only a small fraction of the source code carries the annotations that enable the verification, but already some bugs in edge cases could be discovered and fixed.
Full Changelog
Upgrading
router
router
now validates that the source IP address of transit packets match the IP address of the corresponding other router (#4157). This could be incompatible with certain asymmetric NAT setups.
Configuration
- toml key
trustengine.cache.expiration
now expects a formatted duration string, instead of an integer number of nanoseconds.
Go package API
- pkg/snet:
IntraASPathQuerier
has been removed (moved to internal library) as it was not working correctly and not widely used. - pkg/addr: replace
addr.HostAddr
hierarchy with tagged unionaddr.Host
(#4346).
The attached gopatch file can automatically patch some of the affected consumer code, but some manual changes are likely still necessary. - pkg/slayers:
SetNetworkLayerForChecksum
now only accepts a type-safe*slayers.SCION
. - pkg/slayers/path:
MaxTTL
is now atime.Duration
instead of anint
number of seconds.
Deprecations
- topology.json: the AS attributes
authoritative
,voting
, andissuing
are ineffective and should no longer be used (#4333). scion showpaths
: the--json
flag is deprecated in favor of the--format=json
option.
New Contributors
- @gavinleroy made their first contribution in #4229
- @kmavromati made their first contribution in #4237
- @jcp19 made their first contribution in #4187
- @bunert made their first contribution in #4250
- @fstreun made their first contribution in #4289
- @VickyMerzOwn made their first contribution in #4292
- @marcfrei made their first contribution in #4298
- @rohrerj made their first contribution in #4304
- @dependabot made their first contribution in #4316
- @MrR0b0t14 made their first contribution in #4341
- @steffenfritz made their first contribution in #4345
- @jBainMartincoit made their first contribution in #4349
- @HawkCorrigan made their first contribution in #4358
- @uniquefine made their first contribution in #4367
- @jiceatscion made their first contribution in #4373
- @edoardottt made their first contribution in #4419