Commit Graph

276 Commits

Author SHA1 Message Date
folex
8ea09b93ef Hide QueryFinished log to trace 2020-10-23 14:06:42 +03:00
folex
82dd950771 Move bucket printing & iterlog to Level::Trace 2020-10-21 13:43:54 +03:00
folex
8b6a5db985 Merge branch 'rust_master' into fluence_master
# Conflicts:
#	protocols/kad/src/behaviour.rs
#	protocols/kad/src/query.rs
2020-07-30 16:36:51 +03:00
Demi Obenour
9178459cc8 Automatic fixes by cargo-fix (#1662) 2020-07-27 22:27:33 +02:00
folex
30c0a5f51b Merge branch 'rust_master' into fluence_master
# Conflicts:
#	protocols/secio/benches/bench.rs
2020-07-17 13:05:17 +03:00
folex
6ef292f319 libp2p_0_20 => master (#26) 2020-07-08 13:21:39 +03:00
folex
1c44d6a13d Add certificate_dissemination (#24) 2020-07-08 13:17:08 +03:00
folex
fdeda46898 Disable disjoint queries in tests, add certificate dissemination test 2020-07-07 20:07:36 +03:00
folex
c908e194ef Merge branch 'rust_master' into libp2p_0_20
# Conflicts:
#	.github/workflows/ci.yml
#	Cargo.toml
#	core/Cargo.toml
#	examples/distributed-key-value-store.rs
#	misc/multistream-select/Cargo.toml
#	muxers/mplex/Cargo.toml
#	protocols/deflate/Cargo.toml
#	protocols/gossipsub/Cargo.toml
#	protocols/identify/Cargo.toml
#	protocols/kad/src/behaviour.rs
#	protocols/kad/src/behaviour/test.rs
#	protocols/kad/src/kbucket.rs
#	protocols/kad/src/kbucket/bucket.rs
#	protocols/kad/src/lib.rs
#	protocols/kad/src/query.rs
#	protocols/kad/src/query/peers/closest.rs
#	protocols/mdns/Cargo.toml
#	protocols/ping/Cargo.toml
#	protocols/secio/Cargo.toml
#	transports/tcp/Cargo.toml
#	transports/uds/Cargo.toml
2020-07-01 17:30:41 +03:00
Roman Borschel
e9952ea9e3 Prepare releases. (#1640)
* Prepare releases.

* Re-export libp2p-request-response from libp2p crate.

* Clean up changelogs.

* Restore upper bounds.

* Version 0.21 for the root crate.

* Stricter lower bound in libp2p-websocket version in root crate.

* Update misc/peer-id-generator/Cargo.toml

Co-authored-by: Toralf Wittner <tw@dtex.org>

* Update release date.

* Update misc/peer-id-generator/Cargo.toml

Co-authored-by: Toralf Wittner <tw@dtex.org>

Co-authored-by: Toralf Wittner <tw@dtex.org>
2020-07-01 15:36:20 +02:00
Roman Borschel
d5b26359bb Remove the Discovered event. (#1632)
See the discussion in https://github.com/libp2p/rust-libp2p/pull/1628.
2020-06-30 16:54:56 +02:00
Max Inden
5afc27869d protocols/kad/src/lib: Expose KademliaBucketInserts (#1638) 2020-06-30 13:09:02 +02:00
Pierre Krieger
9049591d46 Use self.config.idle_timeout in Kademlia handler (#1635) 2020-06-30 07:50:45 +02:00
Roman Borschel
7270ed8721 [libp2p-kad] More control & insight for k-buckets. (#1628)
* More control & insight for k-buckets.

1) More control: It is now possible to disable automatic
insertions of peers into the routing table via a new
`KademliaBucketInserts` configuration option. The
default is `OnConnected`, but it can be set to `Manual`,
in which case `add_address` must be called explicitly.
In order to communicate all situations in which a user
of `Kademlia` may want to manually update the routing
table, two new events are introduced:

  * `KademliaEvent::RoutablePeer`: When a connection to
    a peer with a known listen address is established
    which may be added to the routing table. This is
    also emitted when automatic inserts are allowed but
    the corresponding k-bucket is full.
  * `KademliaEvent::PendingRoutablePeer`: When a connection
    to a peer with a known listen address is established
    which is pending insertion into the routing table
    (but may not make it). This is only emitted when
    `OnConnected` (i.e. automatic inserts) are used.

These complement the existing `UnroutablePeer` and
`RoutingUpdated` events. It is now also possible to
explicitly remove peers and addresses from the
routing table.

2) More insight: `Kademlia::kbuckets` now gives an
iterator over `KBucketRef`s and `Kademlia::bucket`
a particular `KBucketRef`. A `KBucketRef` in turn
allows iteration over its entries. In this way,
the full contents of the routing table can be
inspected, e.g. in order to decide which peer(s)
to remove.

* Update protocols/kad/src/behaviour.rs

* Update protocols/kad/src/behaviour.rs

Co-authored-by: Max Inden <mail@max-inden.de>

* Update CHANGELOG.

Co-authored-by: Max Inden <mail@max-inden.de>
2020-06-29 16:44:44 +02:00
Toralf Wittner
c9f121201c Release v0.20.1 (#1624)
- Update `libp2p-kad` CHANGELOG and increment version to 0.20.1.
- Update `libp2p` version to 0.20.1.
- Fix some linter warning in `libp2p-gossipsub` and increment
  version to 0.19.3 and update CHANGELOG.
2020-06-23 11:51:49 +02:00
Toralf Wittner
32cb0a56bd kad: Avoid from/into IteratorIndex. (#1623)
This caused problems with type inference.
2020-06-23 11:28:43 +02:00
Toralf Wittner
0eef487ef8 Prepare release. (#1620) 2020-06-22 11:41:28 +02:00
Max Inden
9dd2d662e9 protocols/kad: Implement S-Kademlia's lookup over disjoint paths v2 (#1473)
The extension paper S-Kademlia includes a proposal for lookups over
disjoint paths. Within vanilla Kademlia, queries keep track of the
closest nodes in a single bucket. Any adversary along the path can thus
influence all future paths, in case they can come up with the
next-closest (not overall closest) hops. S-Kademlia tries to solve the
attack above by querying over disjoint paths using multiple buckets.

To adjust the libp2p Kademlia implementation accordingly this change-set
introduces an additional peers iterator: `ClosestDisjointPeersIter`.
This new iterator wraps around a set of `ClosestPeersIter`
`ClosestDisjointPeersIter` enforces that each of the `ClosestPeersIter`
explore disjoint paths by having each peer instantly return that was
queried by a different iterator before.
2020-06-19 12:22:26 +02:00
Toralf Wittner
859aa59bd8 Avoid recursive dependencies due to tests. (#1609)
Remove `version` from workspace `dev-dependencies`.
2020-06-18 10:27:47 +02:00
folex
d7c1989340 better iterlog (#20) 2020-06-10 18:11:36 +03:00
folex
c36397b7de Report bucket size to prometheus (#19) 2020-06-09 15:17:16 +03:00
folex
b7ec948326 Add prometheus metrics (#18) 2020-06-05 21:15:18 +03:00
folex
3e2ed64faa Weighted routing (#17) 2020-06-05 20:04:53 +03:00
Pierre Krieger
a4eb67a40d Fix some libp2p-kad types not being reexported (#1595)
* Fix QueryRef/QueryMut not being reexported

* More reexports
2020-06-02 10:33:32 +02:00
folex
0bd3d9b6b6 Use master branch on fluencelabs/fluence #16 2020-05-20 13:06:15 +03:00
folex
0fea4a1986 fix wasm build: imports 2020-05-19 23:17:33 +03:00
folex
b4681cca12 fix wasm build 2020-05-19 23:10:33 +03:00
folex
d78805364d ssh => https 2020-05-19 21:45:41 +03:00
folex
27c30a9f2d arqada => fluence 2020-05-19 19:36:25 +03:00
folex
e6915be539 0.19 WIP 2020-05-19 19:23:44 +03:00
folex
8bc0c9db51 Merge branch 'rust_master' into fluence_master
# Conflicts:
#	examples/distributed-key-value-store.rs
#	examples/ipfs-kad.rs
#	protocols/kad/src/behaviour.rs
#	protocols/kad/src/behaviour/test.rs
#	protocols/kad/src/lib.rs
#	protocols/kad/src/query/peers/closest.rs
2020-05-19 19:11:50 +03:00
Pierre Krieger
34faf94538 Publish 0.19.0 (#1579) 2020-05-18 15:45:21 +02:00
Roman Borschel
3a96ebf57f More insight into Kademlia queries. (#1567)
* [libp2p-kad] Provide more insight and control into Kademlia queries.

More insight: The API allows iterating over the active queries and
inspecting their state and execution statistics.

More control: The API allows aborting queries prematurely
at any time.

To that end, API operations that initiate new queries return the query ID
and multi-phase queries such as `put_record` retain the query ID across all
phases, each phase being executed by a new (internal) query.

* Cleanup

* Cleanup

* Update examples and re-exports.

* Incorporate review feedback.

* Update CHANGELOG

* Update CHANGELOG

Co-authored-by: Max Inden <mail@max-inden.de>
2020-05-16 10:43:09 +02:00
folex
a378a1daec Make trust graph a public field (#14) 2020-05-14 17:45:07 +03:00
folex
f737645609 Print latency logs after ClosestIter has finished (#13) 2020-05-14 17:44:07 +03:00
folex
2eb4622a74 Show PeerId as pubkey-inlining if possible, add .as_public_key() #11 2020-05-14 17:40:50 +03:00
David Craven
0443fea157 Update to latest multihash. (#1566)
* Update to latest multihash.

* Update changelog.

Co-authored-by: Pierre Krieger <pierre.krieger1708@gmail.com>
2020-05-13 17:51:11 +02:00
Max Inden
06721128f1 protocols/kad: Remove unnecessary PeerId conversion for fixed iter (#1573)
`FixedPeersIter` requires the initial set of peers to be passed as
`PeerId`s and not as `Key<PeerId>`s. This commit removes the unnecessary
conversion.
2020-05-13 16:47:02 +02:00
Max Inden
70e797112f protocols/kad/query/closest: Make quickcheck deterministic (#1571)
Instead of creating unconstrained random number generators in quickcheck
tests to generate test data, have quickcheck provide a `Seed` to seed
those random number generators and thus make the test execution
deterministic / reproducible.
2020-05-12 21:31:20 +02:00
Max Inden
44c0c76981 protocols/kad/query/fixed: Decrease num_waiting on failure (#1572)
Make sure to decrease `num_waiting` when being notified of a peer
failure to allow an additional peer to be queried.

Given that `FixedPeersIter` is initialized with `replication_factor` by
`QueryPool` this bug will not surface today.
2020-05-12 12:23:40 +02:00
folex
403315dab4 ProtoRecords 2020-04-21 21:45:29 +03:00
folex
122bb921d7 Merge branch 'fluence_master' into memory_store_set 2020-04-21 21:40:48 +03:00
folex
9a865e3735 pub use proto::Record 2020-04-21 21:38:08 +03:00
folex
eb837aad33 make record_{to,from}_proto public 2020-04-21 21:27:35 +03:00
folex
838edad224 impl Hash 2020-04-21 19:54:44 +03:00
folex
51bdf2757d Fix kad behaviour test.rs 2020-04-21 19:54:30 +03:00
folex
807217653a fluence janus branch 2020-04-20 19:36:17 +03:00
folex
5e49b42b77 Merge Libp2p 0.18 & 0.18.1 2020-04-20 19:34:21 +03:00
folex
9863c11cd3 Merge branch 'master' into fluence_master
# Conflicts:
#	CHANGELOG.md
#	Cargo.toml
#	core/Cargo.toml
#	misc/core-derive/Cargo.toml
#	misc/peer-id-generator/Cargo.toml
#	muxers/mplex/Cargo.toml
#	muxers/yamux/Cargo.toml
#	protocols/deflate/Cargo.toml
#	protocols/floodsub/Cargo.toml
#	protocols/gossipsub/Cargo.toml
#	protocols/identify/Cargo.toml
#	protocols/kad/Cargo.toml
#	protocols/kad/src/behaviour.rs
#	protocols/kad/src/behaviour/test.rs
#	protocols/mdns/Cargo.toml
#	protocols/noise/Cargo.toml
#	protocols/ping/Cargo.toml
#	protocols/plaintext/Cargo.toml
#	protocols/pnet/Cargo.toml
#	protocols/secio/Cargo.toml
#	swarm/Cargo.toml
#	swarm/src/lib.rs
#	transports/dns/Cargo.toml
#	transports/tcp/Cargo.toml
#	transports/uds/Cargo.toml
#	transports/wasm-ext/Cargo.toml
#	transports/websocket/Cargo.toml
2020-04-20 19:29:58 +03:00
folex
8d8901302b Better routing table printing (#8) 2020-04-20 16:22:13 +03:00