Péter Szilágyi
612f01400f
p2p/discover: bond with seed nodes too (runs only if findnode failed)
2015-05-26 23:30:41 +02:00
Péter Szilágyi
3630432dfb
p2p/discovery: fix a cornercase loop if no seeds or bootnodes are known
2015-05-26 23:30:40 +02:00
Péter Szilágyi
f539ed1e66
p2p/discover: force refresh if the table is empty
2015-05-26 23:30:40 +02:00
Péter Szilágyi
5076170f34
p2p/discover: permit temporary bond failures for previously known nodes
2015-05-26 23:30:40 +02:00
Péter Szilágyi
6078aa08eb
p2p/discover: watch find failures, evacuate on too many, rebond if failed
2015-05-26 23:30:40 +02:00
Felix Lange
9f38ef5d97
p2p/discover: add ReadRandomNodes
2015-05-25 01:17:14 +02:00
Péter Szilágyi
cbd3ae6906
p2p/discover: fix #838 , evacuate self entries from the node db
2015-05-21 19:41:46 +03:00
Felix Lange
7fa2607bd1
p2p/discover: bump maxBondingPingPongs to 16
...
This should increase the speed a bit because all findnode
results (up to 16) can be verified at the same time.
2015-05-14 14:53:29 +02:00
Felix Lange
2adcc31bb4
p2p/discover: new distance metric based on sha3(id)
...
The previous metric was pubkey1^pubkey2, as specified in the Kademlia
paper. We missed that EC public keys are not uniformly distributed.
Using the hash of the public keys addresses that. It also makes it
a bit harder to generate node IDs that are close to a particular node.
2015-05-06 16:10:41 +02:00
Felix Lange
72ab6d3255
p2p/discover: track sha3(ID) in Node
2015-04-30 15:02:23 +02:00
Felix Lange
fc747ef4a6
p2p/discover: new endpoint format
...
This commit changes the discovery protocol to use the new "v4" endpoint
format, which allows for separate UDP and TCP ports and makes it
possible to discover the UDP address after NAT.
2015-04-30 14:57:33 +02:00
Péter Szilágyi
4992765032
p2p/discover: fix goroutine leak due to blocking on sync.Once
2015-04-28 10:28:04 +03:00
Péter Szilágyi
437cf4b3ac
p2p/discover: add node expirer and related tests
2015-04-27 17:38:28 +03:00
Péter Szilágyi
a136e2bb22
p2p/discover: parametrize nodedb version, add persistency tests
2015-04-27 15:28:17 +03:00
Péter Szilágyi
706da56f75
p2p/discover: wrap the pinger to update the node db too
2015-04-27 14:56:42 +03:00
Péter Szilágyi
8de8f61d36
p2p/discover: write the basic tests, catch RLP bug
2015-04-27 12:33:06 +03:00
Péter Szilágyi
0201c04b95
p2p/discovery: fix issues raised in the nodeDb PR
2015-04-27 10:19:16 +03:00
Péter Szilágyi
8646365b42
cmd/bootnode, eth, p2p, p2p/discover: use a fancier db design
2015-04-24 18:04:41 +03:00
Péter Szilágyi
6def110c37
cmd/bootnode, eth, p2p, p2p/discover: clean up the seeder and mesh into eth.
2015-04-24 11:33:55 +03:00
Péter Szilágyi
af923c965f
p2p/discovery: use the seed table for finding nodes, auto drop stale ones
2015-04-24 11:23:20 +03:00
Péter Szilágyi
5f735d6fce
cmd, eth, p2p, p2p/discover: init and clean up the seed cache
2015-04-24 11:23:20 +03:00
Felix Lange
936c8e19ff
p2p/discover: store nodes in leveldb
2015-04-24 11:23:20 +03:00
Felix Lange
b8aeb04f6f
p2p/discover: remove unused field Node.activeStamp
2015-04-13 17:44:14 +02:00
Felix Lange
a77c431e37
p2p/discover: fix off by one error causing buckets to contain duplicates
2015-04-01 17:00:12 +02:00
Felix Lange
de7af720d6
p2p/discover: implement node bonding
...
This a fix for an attack vector where the discovery protocol could be
used to amplify traffic in a DDOS attack. A malicious actor would send a
findnode request with the IP address and UDP port of the target as the
source address. The recipient of the findnode packet would then send a
neighbors packet (which is 16x the size of findnode) to the victim.
Our solution is to require a 'bond' with the sender of findnode. If no
bond exists, the findnode packet is not processed. A bond between nodes
α and β is created when α replies to a ping from β.
This (initial) version of the bonding implementation might still be
vulnerable against replay attacks during the expiration time window.
We will add stricter source address validation later.
2015-04-01 17:00:12 +02:00
zelig
e150832734
p2p: server>discover table Self=Node exported
2015-03-15 13:38:41 +07:00
Felix Lange
82f0bd9009
p2p/discover: code review fixes
2015-02-13 11:39:31 +01:00
Felix Lange
9915d3c3be
p2p/discover: deflake UDP tests
2015-02-09 11:02:32 +01:00
Felix Lange
028775a086
cmd/ethereum, cmd/mist: add flag for discovery bootstrap nodes
2015-02-07 00:52:49 +01:00
Felix Lange
8564eb9f7e
p2p/discover: add node URL functions, distinguish TCP/UDP ports
...
The discovery RPC protocol does not yet distinguish TCP and UDP ports.
But it can't hurt to do so in our internal model.
2015-02-07 00:12:23 +01:00
Felix Lange
739066ec56
p2p/discover: add some helper functions
2015-02-06 00:00:36 +01:00
Felix Lange
12224c7f59
p2p/discover: new package implementing the Node Discovery Protocol
2015-02-06 00:00:36 +01:00