opendht

OpenDHT: a C++17 Distributed Hash Table implementation

GPL-3.0 License

Downloads
455
Stars
1K
Committers
52

Bot releases are hidden (Show)

opendht - 2.0.0rc2

Published by aberaud over 4 years ago

  • dht: fixed long-standing memory leak affecting permanent put operations
  • dht: the above fix also results in significant performance improvements for permanent put operations
  • securedht: putSigned and putEncrypted now fail immediately if no key is configured
  • tools: added perftest for simple single-process benchmarking
  • tools: added durl to test the http client stack
opendht -

Published by aberaud over 4 years ago

  • dht/net: now using exponential backoff and randomized timing for packet re-transmission.

    • previous implementation was transmitting max. 3 times at 1 second intervals (final timeout after 3 seconds).
    • new implementation retransmits max. 3 times after 1, 2 and 4 seconds, plus some random time for each request (final timeout after 7 to 9 seconds)
    • Some DHT operations might be sightly slower to complete, however the current design mitigates this effect, and for most workloads, this change should generally mean better network resilience for a minor operation completion delay increase and almost no increase in value transmission time
  • dht: significant performance improvements

  • dht: reduced memory usage

  • dht: added "stable, public" node configuration, for long-running nodes with a public IP address. In this mode:

    • listen refresh time is increased to 5 min from 30 seconds (which is usually required for potentially NATed nodes to maintain routes)
    • disabled automatic DHT connectivity change detection, which not relevant for this use-case

    This new mode can be enabled by setting the new configuration field dht::Config::public_stable to true,
    or with dhtnode with the new argument flag -P or --public-stable

  • proxy: performance improvements, various fixes

  • dhtnode: better display of durations and plaintext values

opendht - 2.0.0beta3

Published by aberaud almost 5 years ago

  • dht: allow to configure or disable rate limiting
  • dht: added value priority, used for push notification priority
  • dht: shutdown() now waits for pending get/put operations to complete before calling the user callback
  • tests: updated unit tests and dockerfiles
  • autotools: fix make dist and many make distcheck issues
  • peer discovery: revamped, now makes use of asio, performance improvements
  • proxy: many client/server bug fixes and performance improvements
  • cmake/autotools: allow to build without peer discovery
  • dht: minor performance improvements
opendht -

Published by aberaud almost 5 years ago

Since 2.0.0beta1:

  • dhtrunner: added cancelPut with value argument instead of id
  • dhtrunner: added permanent argument for putSigned and putEncrypted
  • c: improved wrapper
  • rust: improved wrapper
  • proxy/http: fix crash when cancelling a request before it's sent
  • proxy: updated restinio dependency
  • proxy client: various bug fixes and cleanups
  • crypto: improved AES encryption/decryption performance
opendht - 2.0.0beta1

Published by aberaud about 5 years ago

  • added C bindings
  • added Rust bindings
  • improved Python bindings
  • dht proxy: dependency change: now using Restinio instead of Restbed
  • dht proxy: added simple HTTP/HTTPS client library using ASIO, Restinio and http_parser
  • dht proxy: cleanup
opendht - 1.10.1

Published by aberaud about 5 years ago

  • dhtrunner: add method bootstrap("host:service")
  • cleanup
opendht - 1.10.0

Published by aberaud over 5 years ago

opendht - 1.10.0rc4

Published by aberaud over 5 years ago

  • API breaking change: thread pool: getShared returns shared_future instead of shared_ptr<future>
  • dhtrunner: threaded mode is now the default
  • dhtrunner: avoid starting peer discovery for unused address families
  • dhtrunner: fix data race when using push notifications
  • net/udp: when port to use is not provided, attempt to use the same port for IPv4 and IPv6
  • minor performance improvements
  • minor memory use reduction
opendht -

Published by aberaud over 5 years ago

  • Added support for pluggable network transport
    • To use custom transport, extend the class dht::net::DatagramSocket. The default implementation is dht::net::UdpSocket.
    • Give your instance to dht::DhtRunner::run as part of the context (field dht::DhtRunner::Context::sock).
  • Peer discovery: use organization-local multicast scope for Windows compatibility.
  • tools/dhtnode: allow to specify certificate and private key files to use for the node identity (with --certificate, --privkey and --privkey-password).
  • tools/dhtnode: allow to save the node identity generated with -i to file with --save-identity.
  • tools/dhtnode: improve manpage
opendht -

Published by aberaud over 5 years ago

  • dhtrunner: add new run() method with Context argument allowing to pass custom logger or peer discovery instance on node startup
  • peer discovery: fix various issues
opendht - 1.9.5rc1

Published by aberaud over 5 years ago

  • dhtrunner: add new run() method allowing to pass custom logger or peer discovery instance on node startup
  • peer discovery: fix various issues
opendht - 1.9.4

Published by aberaud over 5 years ago

  • peer discovery: added automatic serialization
  • tools/systemd: use service (simple) mode by default
  • dhtrunner: fix issue that could cause 100% CPU usage when running in forking daemon mode
  • dhtrunner: minor cleanups/performance improvements
  • thread pool: add Executor, unit tests
opendht -

Published by aberaud over 5 years ago

  • peer discovery: major API overhaul (Ming Rui Zhang)
    The same dht::PeerDiscovery class instance can now be used to advertise and discover multiple services using the same socket. Services now publish and listen msgpack messages containing service-specific data. A single instance now also handles multiple address families (IPv4, IPv6).
  • thread pool: promoted as public API
    Include <opendht/thread_pool.h>, use dht::ThreadPool::io() for blocking I/O operations (large pool) or dht::ThreadPool::computation() for computations (pool limited to number of CPU cores). Threads are only started when needed. In OpenDHT the pool is currently only used by the proxy server.
  • proxy client: improve performance
  • dhtnode: display get grouped results
  • dhtnode: improve duration format, show both IPv4/IPv6 bound ports
  • dhtnode: improve manpage
opendht - 1.9.2

Published by aberaud over 5 years ago

  • api: added dht::version() to retrieve OpenDHT version string
  • build: fix build with Visual Studio
  • build/autotools: add shared library version
  • proxy: catch exception in Http::close
  • various cleanups
opendht - 1.9.1

Published by aberaud over 5 years ago

  • autotools: fix build (@hanyf )
  • peer discovery: avoid using the proxy node id
  • various cleanup
opendht - 1.9.0

Published by aberaud over 5 years ago

  • Add automatic multicast local peer discovery (Ming Rui Zhang)
    DhtRunner: enable it using new configuration options:
    - config.peer_discovery enables listening for other nodes,
    - config.peer_publish enables publishing our own node information,
    dhtnode: enable it (both publish and discovery) using --peer-discovery or -D
  • crypto: added initial support for Certificate Signing Requests (CSR)
  • unit tests: fixed/improved DhtRunnerTester
opendht - 1.8.2

Published by aberaud over 5 years ago

  • dht: add configuration to persist/load state to/from a file
  • dht: avoid network request for 'get' if a 'listen' op is synched for the same key
  • dht: performance/memory usage improvements
  • proxy: handle value expiration/refresh
  • proxy: reliability improvements
  • proxy: performance improvements
  • dhtrunner: avoid failing if socket can't be bound for one of ipv4/ipv6
  • improved unit tests
opendht - 1.8.1

Published by aberaud almost 6 years ago

  • dht: fix issue that could cause listen callback to be called after returning false
  • dht: reduce connection time for disconnected bootstrap node
  • dht: improve performance when used disconnected
  • dht: other minor performance improvements
  • securedht: improve putSigned performance and network usage
  • routing table: fix minor memory leak
  • python: added new methods to SockAddr
  • added more unit tests
  • reduced log verbosity
opendht - 1.8.0

Published by aberaud almost 6 years ago

Since 1.7.4:

  • dhtrunner: added API to receive expiration for deserialized values
  • proxy client: fixed data race in value reception
  • proxy: support value expiration in REST protocol
  • dht: fixed issue that could cause nodes to to wrongfully expire (hanyf)
  • performance improvements
  • stability improvements
  • reduced network usage
opendht - 1.7.4

Published by aberaud about 6 years ago

  • Fix logic issues in proxy client