Skip to content

Releases: lolepezy/rpki-prover

0.9.6

03 Sep 21:52
ec6d0d7
Compare
Choose a tag to compare

0.9.5

09 Aug 21:58
Compare
Choose a tag to compare
  • Filter out RTR PDUs that are not supported by the RTR version negotiated with a router. This fixes an issue when the router gets PDUs that it doesn't support.

0.9.4

30 Jun 14:45
babb203
Compare
Choose a tag to compare
  • Fix rare occasions of CRLs cleaned up from the cache before references to them are removed.
  • Added options --once and --vrp-output filename that together make rpki-prover run only one iteration of validation and exit. Resulting VRPs will be written to the $filename. It is safe to run such one-off instance simultaneously with an instance of rpki-prover running as a server over the same cache directory.

0.9.3

25 Jun 16:21
3d6018f
Compare
Choose a tag to compare
  • Fix an issue when occasionally a fetcher process would die with 'Problem deserialising binary log message: [rpki-prover: forkOS_entry: interrupted], error: "Base64-encoded bytestring requires padding for ... etc.' message.
  • Fix a bug when validator gets stuck with old manifests when running over an old cache.
  • Fixes for robustness-related issues found by fuzzy-testing (https://arxiv.org/abs/2312.01872)
  • Add --no-async-fetch option to switch off asynchronous fetching.
  • Add limit of 30 minutes for CPU time used my a fetcher, it will die with an appropriate error after using that much CPU time.
  • Add /api/manifests?aki=$aki API end-point for investigating manifests for CAs
  • Make it an error for RRDP URIs to have different host names (https://datatracker.ietf.org/doc/draft-ietf-sidrops-rrdp-same-origin/)
  • Log timestamps up to a millisecond

0.9.2

26 Mar 21:06
Compare
Choose a tag to compare

Add --no-rir-tals option preventing downloads of RIR TALs when using with --initialise.

0.9.1

19 Mar 16:54
Compare
Choose a tag to compare

Introduce --extra-tals-directory option for adding directories with TAL files. It can be repeated multiple times for multiple extra directories.

0.9.0

24 Feb 18:35
a3f6c33
Compare
Choose a tag to compare

This is a release with features aimed at reducing latency of delivering VRPs to the end-user (a router using RTR or an API user) while saving system resources. It also adds initial support for recently introduced RPKI objects and contains some bug fixes.

  • Add incremental validation algorithm. This algorithm does full validation only for newly downloaded objects that were not seen before and simplified validation (only validity time and revocation checks) for objects that are already cached. Current implementation reduces CPU usage for validation by 8-9 times, which allows to run validation much more frequently than before. This feature is enabled by default and can be switched off by the --no-incremental-validation CLI parameter.

  • Add adaptive timeouts for repository fetches, i.e. every next fetch timeout is based on how much time it actually took to fetch the repository last time(s). It allows to reduce the chance of a suddenly broken or slow repository blocking all other fetches. This feature is enabled by default and can be switched off by the --no-adaptive-timeouts CLI parameter.

  • Add adaptive fetch intervals for RRDP repositories based on how many deltas are fetched. Intervals can be adjusted between 1 and 10 minutes so that on average one delta is fetched every time, i.e. the validator doesn't do pointless requests but also downloads deltas approximately as often as they appear. Measurements show that most of RRDP repositories tend to publish new deltas less often than every 10 minutes, which allows to save about 30% of CPU used by fetching processes and issue about 40% less http(s) requests. This feature is a trade-off between latency and resource usage -- enabling it increases latency for rarely updated repositories. It is enabled by default and can be switched off by the --no-adaptive-fetch-intervals CLI parameter.

  • Improve logic for asynchronous fetches introduced in the previous release. Now for a repository to stay in the category of "synchronously fetched" the repository needs to fetch successfully, quickly and do not require RRDP -> rsync fall back. Still almost all RRDP repositories fall into this category but the time for absolute majority of validation gets down to about 10-15 seconds.

  • Support ASPA profile 16 (version without AFI field).

  • Support RRDP desynchronization detection.

  • Support signed prefix lists, i.e. parse, validate, store in cache. Added /api/spls API end-point.

  • Add /api/vrps.csvext API end-point analogous csvext VRP format in Routinator.

  • Add version parameter to most API end-points, so it's possible to get VRPs, ASPAs, GBRs, BGP certificates, etc. for previous validations and not only the last one.

  • Fix an issue when unsupported or unparseable objects would make a manifest pointing at them invalid, since unparseable objects would not end up in the cache. Now an object that can't be parsed (a new profile of an object, for instance) is stored in its original ASN.1 form to avoid invalidating manifests.

  • Fix long-standing performance bug when some CPU was consumed by the waiting validation process due to so-called idle garbage collection of the Haskell runtime.

  • Use configured timeouts when downloading TA certificates instead of default ones.

  • Switch to GHC 9.6 for both Docker images and static binaries, it reduces CPU and memory usage by 5-10% compared to previously used 8.10.

0.8.0

23 Aug 20:52
dc1d955
Compare
Choose a tag to compare

Validation:

  • Introduced asynchronous fetches of the repositories that are detected to be slow or time out. Such repositories are skipped by the top-down validation and fetched in a separate concurrent job to avoid blocking the top-down algorithm. That significantly reduces latency of the "repository -> router" path (time for revalidation drops from minutes with default timeouts to small tens of seconds) and prevents some types of slowloris attacks.
  • We allow extra fetchers to run after some period (1 minute by default) of waiting for a semaphore. It is a workaround for potentially very large number of hanging repositories so there is always some progress.

API:

  • Added /api/tals end-point for showing TALs

Optimisations:

  • Switched from GHC 8.10 to 9.6, as a result CPU usage reduced by 10-12% for validation and by 10-15% for repository fetching and object parsing. Also 5-10% reduction in memory usage.

0.7.1

12 Jun 15:52
Compare
Choose a tag to compare
  • Fix extracting publication points from TA certificate (Afrinic's RRDP -> rsync fall-back)
  • Support ETag headers for fetching notification.xml files from RRDP repositories

0.7.0

02 Jun 15:47
Compare
Choose a tag to compare

Features:

  • Improve /api/object view to have a stable and more informative JSON output.
  • Improve validation and output for GBRs and ASPA objects.

Optimisations:

  • Fixed a performance bug: drastically reduce the volume of IO writes on every validation run.
  • Reduce lock contention when validating with large number of CPUs.

Fixes and improvements:

  • Fix parsing of rsync URLs with explicit port number that led to a spurious validation warning about object locations
  • Fix attribution of RRDP parsing errors to multiple object locations
  • Check that AIA of certificates match location of their parent certificates
  • Fixes in LMDB statitistics calculation
  • Reduce default cache lifetime of unused objects from 72 to 24 hours
  • Compact the storage after erasing incompatible cache on the startup