420 Commits

Author SHA1 Message Date
folex
5d20ec9ece fix tests in kbucket.rs 2020-03-28 15:57:17 +03:00
folex
ce86462a05 fix closest lgos 2020-03-27 20:18:42 +03:00
folex
816ccac1ff weighted: logs 2020-03-27 19:57:05 +03:00
folex
0a4cd14efa Closest iterators: lots of logs 2020-03-27 19:48:12 +03:00
folex
6ef8f2c299 print calculated weight 2020-03-27 18:39:25 +03:00
folex
d6d11c4748 libp2p core 0.16.0 2020-03-27 14:00:20 +03:00
folex
9db560ede6 libp2p-core 0.16.8 2020-03-27 12:46:10 +03:00
folex
204d574add depend on trust graph via git 2020-03-27 12:30:22 +03:00
folex
3d52a6b021 Sort weighted bucket iter() by weight 2020-03-26 19:06:44 +03:00
folex
3c03467a52 Merge branch 'weighted_bucket' into weighted_tests
# Conflicts:
#	protocols/kad/src/kbucket/weighted.rs
2020-03-26 12:26:18 +03:00
folex
f60d004675 Use Vec instead of ArrayVec 2020-03-26 12:24:03 +03:00
folex
135a181ec3 arbitrary weights 2020-03-26 11:45:42 +03:00
folex
dca9099507 First test for weighted bucket 2020-03-25 20:26:50 +03:00
folex
442847eb64 merge & fix kad/behaviour tests 2020-03-25 18:11:21 +03:00
folex
53b3c34de5 Merge branch 'master' into weighted_bucket
# Conflicts:
#	protocols/kad/src/behaviour.rs
#	protocols/kad/src/behaviour/test.rs
2020-03-25 17:52:38 +03:00
folex
5ff311d38d remove commented line 2020-03-25 17:46:48 +03:00
folex
c895ec386a extend full_bucket_discard_pending test 2020-03-25 17:33:20 +03:00
folex
e53e4b9059 fix bucket_update test 2020-03-25 17:28:59 +03:00
folex
cdcbbf7e89 Integrate TrustGraph into kademlia 2020-03-24 21:20:06 +03:00
folex
091e45374f weighted bucket: enable bucket_update 2020-03-24 21:00:54 +03:00
folex
5b901ab090 weighted bucket: fix full_bucket test 2020-03-24 20:26:33 +03:00
folex
1e9e42065a weighted bucket: implement update_pending 2020-03-24 19:27:06 +03:00
folex
0c724c815f weighted bucket: set weight to 0 in tests 2020-03-24 17:29:53 +03:00
folex
8f5cc730b1 weighted bucket: it compiles! 2020-03-24 17:24:22 +03:00
folex
7eb6d425a4 weighted bucket: cleanup WIP 2020-03-24 14:22:41 +03:00
folex
5b098a6e72 weighted bucket: implement update 2020-03-24 13:38:44 +03:00
folex
826fb99483 weighted bucket: implement apply_pending 2020-03-24 12:56:27 +03:00
folex
d5c0112fbb weighted bucket: implement insert() 2020-03-24 12:08:39 +03:00
Robert Klotzner
5a6111070e
Fix typo in doc (#1503) 2020-03-23 12:51:20 +01:00
folex
760e6baac3 bucket: cleanup 2020-03-20 20:11:17 +03:00
folex
6ba164e6d9 bucket: revert pattern matching 2020-03-20 20:00:05 +03:00
folex
fe0a141e0e bucket: cleanup 2020-03-20 19:45:04 +03:00
folex
d8b42a5cb1 bucket: apply_pending works 2020-03-20 19:36:33 +03:00
folex
c096db5e59 bucket: apply_pending WIP 2020-03-20 18:46:47 +03:00
folex
0d66695d3b update works 2020-03-20 18:35:57 +03:00
folex
2aa6fbc93f insert works 2020-03-20 18:11:19 +03:00
Pierre Krieger
92ce5d6179
Allow customizing the Kademlia maximum packet size (#1502)
* Allow customizing the Kademlia maximum packet size

* Address concern
2020-03-19 21:23:05 +01:00
Pierre Krieger
439dc8246e
Allow customizing the delay before closing a Kademlia connection (#1477)
* Reduce the delay before closing a Kademlia connection

* Rework pull request

* Update protocols/kad/src/behaviour.rs

Co-Authored-By: Roman Borschel <romanb@users.noreply.github.com>

* Update protocols/kad/src/behaviour.rs

Co-Authored-By: Roman Borschel <romanb@users.noreply.github.com>

* Rework the pull request

Co-authored-by: Roman Borschel <romanb@users.noreply.github.com>
2020-03-19 17:01:34 +01:00
folex
51b441247f cleanup 2020-03-19 18:38:37 +03:00
folex
235d23dcaa Refactor duplicated code 2020-03-19 18:36:38 +03:00
folex
9b93e500a7 arrrgh 2020-03-19 16:40:04 +03:00
folex
1dc62e61f2 use trust-graph 2020-03-19 15:50:12 +03:00
folex
87b8e23553 cleanup 2020-03-19 15:12:48 +03:00
folex
84fc48f1ac Add public key to buckets 2020-03-19 14:52:59 +03:00
vms
e9240755f8 contact 2020-03-19 12:32:08 +03:00
folex
619ed94e64 Add public key to buckets WIP 2020-03-19 12:11:04 +03:00
folex
783ff2575e Add public key to buckets WIP 2020-03-18 18:16:36 +03:00
Pierre Krieger
97a02950bb
Reexport MemoryStoreConfig (#1499) 2020-03-18 14:56:53 +01:00
Max Inden
522020e0a4
protocols/kad: Do not attempt to store expired record in record store (#1496)
* protocols/kad: Do not attempt to store expired record in record store

`Kademlia::record_received` calculates the expiration time of a record
before inserting it into the record store. Instead of inserting the
record into the record store in any case, with this patch the record is
only inserted if it is not expired. If the record is expired a
`KademliaHandlerIn::Reset` for the given (sub) stream is triggered.

This would serve as a tiny defense mechanism against an attacker trying
to fill a node's record store with expired records before the record
store's clean up procedure removes the records.

* protocols/kad: Send regular ack when record discarded due to expiration

With this commit the remote receives a
[`KademliaHandlerIn::PutRecordRes`] even in the case where the record is
discarded due to being expired.  Given that the remote sent the local
node a [`KademliaHandlerEvent::PutRecord`] request, the remote perceives
the local node as one node among the k closest nodes to the target.
Returning a [`KademliaHandlerIn::Reset`] instead of an
[`KademliaHandlerIn::PutRecordRes`] to have the remote try another node
would only result in the remote node to contact an even more distant
node. In addition returning [`KademliaHandlerIn::PutRecordRes`] does not
reveal any internal information to a possibly malicious remote node.

* protocols/kad/src/behaviour: Use `now` and reword expiration comment

Co-authored-by: Roman Borschel <romanb@users.noreply.github.com>
2020-03-18 14:31:01 +01:00
Max Inden
29471467e3
protocols/kad: Fix right shift overflow panic in record_received (#1492)
* protocols/kad: Add test to reproduce right shift overflow panic

* protocols/kad: Fix right shift overflow panic in record_received

Within `Behaviour::record_received` the exponentially decreasing
expiration based on the distance to the target for a record is
calculated as following:

1. Calculate the amount of nodes between us and the record key beyond
the k replication constant as `n`.

2. Shift the configured record time-to-live `n` times to the right to
calculate an exponentially decreasing expiration.

The configured record time-to-live is a u64. If `n` is larger or equal
to 64 the right shift will lead to an overflow which panics in debug
mode.

This patch uses a checked right shift instead, defaulting to 0 (`now +
0`) for the expiration on overflow.

* protocols/kad: Put attribute below comment

* protocols/kad: Extract shifting logic and rework test

Extract right shift into isolated function and replace complex
regression test with small isolated one.

* protocols/kad/src/behaviour: Refactor exp_decr_expiration

Co-authored-by: Roman Borschel <romanb@users.noreply.github.com>
2020-03-18 10:15:33 +01:00