All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
-
Metadata: BW/Latency/Geo/Notes!
-
API do drop current path or even use most diverse one. -> To be called if application detects interruption (but no SCMP errors arrive?) -> Do not drop, but move to end of list (or attach time for retry (in 10secs or so). They may become valid/valuable again. Especially if the problem is actually the remote server and not the path itself.
Post-0.5.0
- Update:
TODO
-
Selectors: PingLatency, ReversePath, ...
-
Authenticate SCMP / EPIC !?!?!?
-
We could also do revers-lookup inside service.lookup() -> e.g. works for "129.132.175.104" -> is a SCION enabled IP; this gives us the ISD/AS.
-
topofiles + TRC server will be deprecated at some point. -> migrate to new API (where possible).
-
FABRID is currently in SCIONlab. WHen ported to scionproto, JPAN should show policies in "showpaths" etc, see https://github.com/netsec-ethz/scion/blob/b45a8ff2a753e95b647801577bca019c9c4a124a/private/app/path/path.go#L415 https://github.com/netsec-ethz/scion/blob/b45a8ff2a753e95b647801577bca019c9c4a124a/private/app/path/path.go#L327
-
implement "scion address" command
-
TODO implement PathPolicy https://docs.scion.org/en/latest/dev/design/PathPolicy.html
-
Change MockControlService to return parsed Segments i.o. hardcoded segments.
-
Consider refactoring: separate Datagram classes for STUN/SCMP/UDP handling
-
TEST all(default) with AUTO??? BR????
- Requires improved MockChannel that can handle STUN requests (even if returning no packet) e.g. configureBlocking()
-
Config-ify PROPERTIES etc
-
Cache paths --> We already do some caching with ScionDatagramChannel::resolvedDetinations
-
Fix @Disabled tests
-
Create handling for SCMP errors 5 + 6 (interface down, connectivity down). Subclasses? fix/113 has packet captures for two of these errors in SCMPTest.java Adhere to https://docs.scion.org/en/latest/protocols/scmp.html#processing-rules
-
remove ScionAddress?
-
ScionDatagramChannel
- GatheringByteChannel, ScatteringByteChannel
- Selector support
- Inherit DatagramChannel
-
Authenticate SCMP with DR-key
-
Bootstrap with DHCP - Check Book page 327, chapter 13.2
-
Consider using https://github.com/ascopes/protobuf-maven-plugin (more up to date)
-
Multi-release-jar?
** BREAKING CHANGES **
- Minor: Some methods have
throw IOException
removed from their declaration. For example:Path.getFirstHopAddress()
,DatagramChannel.setPathPolicy()
- Medium:
PathPolicy.filter(...)
now returnsList<Path>
instead ofPath
.
- Added Path construction tests for tiny4. #146
- Added experimental support for STUN / NAT traversal. This also reduces network calls by starting SHIM w/o service. #142
- Added LICENCE file to packaged jar. #152
- Added keep-alive protocol for NAT. #151
- Added implementation of STUN responder (currently not needed) #154
- Path policies
PplPolicy
andPplPolicyGroup
created from Path Policy Language #158 - Path policies JSON import export #170
- Cleaned up test topologies. #145
- Changed checkstyle rules. #153
- BREAKING CHANGE
PathPolicy.filter(..)
to return aList
of paths. #159 - Policy filters should not need to throw Exceptions when the path list is empty. #160
- PplPolicy refactoring #169
- renamed
PplPolicy
toPplSubPolicy
- renamed
PplPolicyGroup
toPplPolicy
- renamed
"group"
to"destinations"
- added requirements: minMtu, minValidity, minBandwidth
- added ordering: hops_asc, hops_desc, meta_latency_asc, meta_bandwidth_desc
- renamed
- SHIM should not crash when receiving unparseable packet (e.g. dstPort = -1). Also, SHIM should parse SCMP error packets correctly. Cleaned up test topologies. #148
- Fixed disabled SHIM tests and general test cleanup.
#149 - Fixed parsing of /etc/hosts #150
- Fixed warning when dnsjava parses /etc/hosts with SCION adresses #155
- Cleanup:
TestUtil
class for string output and sleep() #156 - Stop contacting daemon of every received packet #157
- Fixed troubleshooting documentation for slf4j #161, #162
- Fixed Android problems with grpc-netty-shaded jar. #165
- Stabilized some NAT unit tests that kept failing on MacOS #166
- Fixed missing expiration time for Segments from control server #171
0.4.1 - 2024-11-22
- No path constructed for single UP segment in case there is only a single core AS. #144
0.4.0 - 2024-11-19
BREAKING CHANGE
- The SHIM now occupies port 30041. This means any application trying to use that port will fail.
- Solution #1: Just use any other port instead, the SHIM will forward traffic to it.
- Solution #2: Disable the SHIM with
org.scion.shim = false
orSCION_SHIM = false
.
- Add a SHIM, required for #130 (topo file port range support). #131
- ManagedThread unit test helper. #136
- Support for
dispatched_ports
in topo files. DeprecatedconfigureRemoteDispatcher()
. #130 - Bootstrapping: use reverse domain lookup to find NAPTR records. #138
- Buildified PingPong test helper. #132
- Server to use BR addresses instead of received addresses. #133
- MockNetwork should use topofiles. #134
- MockNetwork should really use topofiles. #135
- Do not start SHIM if dispatcher port range is ALL #139
- Cleanup and fixed SHIM tests and other tests #140
- Cleanup in
AbstractDatagramChannel
#137buildHeader()
- undeprecate
SCION_TRAFFIC_CLASS
- Cleanup
Selector.open()
usages - Caching for
getExternalIP()
ShowpathsDemo
output- Spurious failures of SCMP exception handling tests
- Removed deprecated code, e.g.
ScmpChannel
and publicScionAddress
#141
0.3.1 - 2024-10-11
- Better troubleshooting for connection problems. #127
- Auto-add port to discovery server setting + better error message. #128
- Do not immediately fail if discovery server is missing in topo file. #126
0.3.0 - 2024-10-09
- Support for bootstrapper TRC metadata. #110
- Added
copy(...)
method for paths. #111 - Added Scenario builder for unit tests. #112
- Path construction fixes: #104
- Support shortcut and on-path detection during path construction
- Path lists are ordered by hop count
- Path lists contain no duplicates
- Fixed MTU calculations for link level MTU
- Fixed some issues with IPv6 ASes
- New option
EXPERIMENTAL_SCION_RESOLVER_MINIMIZE_REQUESTS
- "Integration" test for scionproto "default". #114
- Improved path duplication filtering. #117
- Added environment variable / property for DNS search domain. #118
- New SCMP API: #119
- separate ScmpSender/ScmpResponder
- non-blocking ScmpSenderAsync
- deprecated old ScmpChannel
- Clean up TODO and deprecation info. #100
- Separate topo file parser #103
- BREAKING CHANGE: Changed argument and return type of
setScmpErrorListener()
inScionDatagramChannel
andScmpChannel
toScmp.ErrorMessage
. #124 - 0.3.0 preparation. #122
- Updated dependencies to latest versions
- Remove use of 0.0.0.0 and "::". #103
- Remove use of getHostName() in ScionAddress. #106
- SocketConcurrency test takes too long. #108
- Fixed useless error message when providing incorrect daemon address. Also: made port optional (default = 30255) #114
- Fixed SCMP packet loss on SCMP receive #120
- Fixed problem, with parsing IPv6 addresses in topo files 123
0.2.0 - 2024-06-24
- SCMP echo responder #78
- Maven Java executor #80
- Dev environment setup hints doc #82
- Added SCION_GETTING_STARTED.md #59
- Some API changes: #67
- Rename
DatagramChannel
toScionDatagramChannel
- Rename
DatagramSocket
toScionDatagramSopcketl
and move it to main package - Rename
ScionSocketOptions
starting withSN_
toSCION_
- Rename
- SCMP API changes. #71
- BREAKING CHANGE:
DatagramChannel.receive()
returns a subclass ofInetSocketAddress
#86 - Internal cleanup. #88
- Deprecated
getPaths(InetSocketAddress)
because it wasn't clear that it did a SCION lookup. #89 - BREAKING CHANGE:
ScionDatagramChannel.send(buffer, path)
returnsint
. #92 - BREAKING CHANGE: Path metadata has been moved to
PathMetadata
. #93 - BREAKING CHANGE:
receive()
returnsScionSocketAddress
;ResponseAddress
andResponsePath
are removed from from public API. #94 - BREAKING CHANGE: removed
RequestPath
andScionAddress
from public API. #95 - Better error message for SCMP echo in local AS #96
- Fixed locking and resizing of buffers. #68
- Fixed unhelpful error & log message when with topo file has wrong permissions. #74
- Topology file parser support for new "local" attribute. #72
- Fixed path lookup error when destination isn't reachable. #70
- Fixed internal raw path parsing and IP parsing. #77
- Improved bootstrap logging #83
- Fixed SCMP meta data reporting wrong remote port. #79
0.1.1 - 2024-05-10
- Fixed spurious CI failures, esp. Windows. #61
- Fix SCM references in pom file + clean up. #60
- DNS lookup caused by
InetAddress.getByName()
. #63 - DNS lookup caused by
InetAddress.getHostName()
. #64 - JPAN renaming cleanup. #65
- Clean up PingPong framework + spurious CI failures. #62
- Missing tests for "decimal:decimal" style ISD/AS codes. #66
0.1.0 - 2024-04-29
- Code coverage. #11
- Global JUnit callback for initial setup. THis allows setting global properties before centrally before running any tests. #38
- Support for
/etc/scion/hosts
and for OS search domains (e.g./etc/resolv.conf
). #40 - CI builds for Windows and MacOS. #41
- Added support communicating with a dispatcher-endhost in the local AS, see
DatagramChannel.configureRemoteDispatcher
. #46 - Support for comments, multiple spaces and tabs in
/etc/scion/hosts
. #47 - Added helper methods for
ScmpChannel
andScionUtil.toStringPath()
. #48, - Demo cleanup an new
ScmpShowpathsDemo
. #49 - Channel demo cleanup. #52
- Address/ISD/AS caching. #54
DatagramSocket
#31setOverrideSourceAddress()
#58
- BREAKING CHANGE: Changed maven artifactId to "client" #9
- BREAKING CHANGE: SCMP refactoring, renamed several SCMP related classes. #14, #15, #17, #19, #20
- BREAKING CHANGE:
ScionService
instances created viaScion.newXYZ
will not be considered byScion.defaultService()
. Also,DatagramChannel.getService()
does not create a service if none exists. #18 - Doc cleanup #22
- BREAKING CHANGE:
getCurrentPath()
renamed togetConnectionPath()
#30 - Cleaned up
MultiMap
utility class #34 - Cleaned up
DatagramChannel
: Fixed connect()/disconnect(), improved concurrency, fixed buffer resizing wrt MTU, general clean up. #35 - BREAKING CHANGE: Renamed project to
jpan
. #43, #45 - BREAKING CHANGE:
Path
now returnsInetAddress
instead ofbyte[]
#44 - BREAKING CHANGE: Changed
Path
API: destination->remote and source->local #55
- Fixed: SCMP problem when pinging local AS. #16,
- Fixed SCMP timeout and error handling (IOExceptions + SCMP errors). #13
- CI (only) failures on JDK 8. #10
- Sporadic CI (only) failures. #12
- Small fixes for 0.1.0 release. #32
- Fix NPE after 2nd send() in unconnected channel + cleanup. #33
- Fixed traffic class not set. #36
- Fixed handling of channel options. #37
- Merged SCION_DAEMON_HOST and SCION_DAEMON_PORT into a single SCION_DAEMON property. #39
- Some cleanup on to hosts file parser. #42
- Added proper error when ports 30255 or 31000 are in use when running tests #50
- Fix
Unsupported platform: protoc-3.11.4-osx-aarch_64.exe.
#53 - Fixed spurious CI failure and SimpleCache packet name. #55
- Removed all code related to DatagramSockets #21
0.1.0-ALPHA - 2024-02-01
- Nothing
- Nothing
- Nothing