Commit Graph

147 Commits

Author SHA1 Message Date
Alan Shaw c0712c6e92 feat: add direct connect ticks option
In [drand](https://github.com/drand/drand) we have a gossipsub relay to allow users to subscribe to getting random values over pubsub. We want to support pure gossip relays who relay from a relay. For this we need direct peering agreements and want to mitigate the possibility of "missing" randomness messages by ensuring the direct connect ticks period is less than the period between updates.

This PR simply adds a new functional option allowing us to set the direct connect ticks value without modifying the global variable.
2020-05-27 16:26:41 +03:00
vyzo 9a1171a0ef fix outbound constraint satisfaction in oversubscription pruning 2020-05-26 20:41:53 +03:00
Yusef Napora bac68a1ba3 add doc comment for GossipSubDout 2020-05-20 18:48:28 +03:00
Yusef Napora c041642546 add note about opp. graft threshold 2020-05-20 18:48:28 +03:00
Yusef Napora 22403baadd stop using term "gossip mesh" 2020-05-20 18:48:28 +03:00
Yusef Napora 3dab80fdd5 add doc comments to gossipsub constants 2020-05-20 18:48:28 +03:00
Yusef Napora 9c730661bc add delivery tags for "near-first" msg deliveries 2020-05-19 19:26:53 +03:00
Yusef Napora 28d17a4cab add tagTracer to apply connmgr tags 2020-05-19 19:26:53 +03:00
vyzo 31c9b219f4 use the proto we already have in AddPeer to determine whether the connection houses the stream 2020-05-18 23:20:38 +03:00
vyzo 4207beae0d only count an outbound connection if it has a pubsub stream 2020-05-18 23:20:38 +03:00
vyzo 09e6d9e1e3 cache scores throughout the heartbeat 2020-05-18 23:20:38 +03:00
vyzo 7890c5a458 maintain outboud peer quota 2020-05-18 23:20:38 +03:00
vyzo d74def1661 precompute outbound peers on AddPeer, add Dout 2020-05-18 23:20:38 +03:00
vyzo 7d320ac87a only allow GRAFT from outbound peers when we are at or over Dhi 2020-05-18 23:20:38 +03:00
vyzo 39fc35f7cb check if already in the mesh in handleGraft to support concurrent grafting 2020-05-18 23:20:38 +03:00
vyzo 375b9b51df gossip tracer implementation 2020-05-08 16:45:31 +03:00
vyzo 4394e52a6f gossip tracer preliminaries 2020-05-08 16:45:31 +03:00
vyzo d3ae6ab3a7 extended internal tracing for multiple objects, not just score 2020-05-08 16:45:31 +03:00
vyzo 5363d59203 better backoff handling
- Specify backoff in PRUNE message
- Obey peer backoff if specified
- Remove BackoffPenalty, handle lack of respect for backoff through P7
2020-05-07 01:45:04 +03:00
Yusef Napora 94015cee77 factor out doSendRPC and doDropRPC methods 2020-05-06 19:01:22 +03:00
Yusef Napora 21a4f8c0c8 only call fragmentRPC if we're over the size limit 2020-05-06 19:01:22 +03:00
Yusef Napora cb02a50cd8 split large IWANT / IHAVE messages, add unit test 2020-05-06 19:01:22 +03:00
Yusef Napora b1de03b608 try to send control messages in one RPC when fragmenting 2020-05-06 19:01:22 +03:00
Yusef Napora 27f009a9c7 fragment large RPCs in sendRPC 2020-05-06 19:01:22 +03:00
vyzo ce9a0b7edf use log.Warn instead of Warning 2020-05-05 21:10:14 +03:00
vyzo ea95ae8975 reify fanoutTTL in the GossipSubRouter struct 2020-04-23 18:38:26 +03:00
vyzo 5397bb5abc pull overlay parameters into the GossipSubRouter struct
pacify the race detector in travis
2020-04-23 13:40:50 +03:00
vyzo 11ef2a9cf2 fix the global variable mutation races 2020-04-22 21:08:13 +03:00
vyzo ca7b1f3dbf make initial delay for direct peer connections a variable 2020-04-22 21:08:13 +03:00
vyzo 32c3fb325d remove unnecessary length check 2020-04-22 21:08:13 +03:00
vyzo c00b476fb4 add test for gossipsub direct peers 2020-04-22 21:08:13 +03:00
vyzo 235c28ff49 truncate per peer message id lists 2020-04-20 19:53:12 +03:00
vyzo 8bc2c5c0f1 log counts in IHAVE flood protection measures 2020-04-20 19:53:12 +03:00
vyzo a645afd1b3 add backoff penalty for GRAFT floods 2020-04-20 19:53:12 +03:00
vyzo 9ab44c5069 make maximum number of IHAVE messages accepted per heartbeat configurable 2020-04-20 19:53:12 +03:00
vyzo 8150843cf3 improve handling of IHAVE floods 2020-04-20 19:53:12 +03:00
vyzo 34f2295c19 add protections from IHAVE floods 2020-04-20 19:53:12 +03:00
vyzo 1645516276 add protections from GRAFT floods 2020-04-20 19:53:12 +03:00
vyzo 9904d69cde configurable number of peers for opportunistic grafting 2020-04-18 11:09:06 +03:00
vyzo 6732f9848b fix typo
Co-Authored-By: Raúl Kripalani <raul@protocol.ai>
2020-04-18 11:09:06 +03:00
vyzo 8a53469c43 fix typo
Co-Authored-By: Raúl Kripalani <raul@protocol.ai>
2020-04-18 11:09:06 +03:00
vyzo 2fdf6cdaed opportunistic grafting 2020-04-18 11:09:06 +03:00
vyzo 8e969ba29e use a configurable variable for direct peer reconnect ticks 2020-04-18 11:09:06 +03:00
vyzo f97d151aec eagerly send gossip at the end heartbeat
instead of trying to piggyback with outgoing messages
2020-04-18 11:09:06 +03:00
Raúl Kripalani fc38f556a3 comments and nits. 2020-04-18 11:09:06 +03:00
vyzo 8809484a47 support direct peering agreements 2020-04-18 11:09:06 +03:00
vyzo ce3da3facd move self-publish check to pubsub 2020-04-18 11:09:06 +03:00
vyzo ea314605d3 don't forward messages with source ourselves but not published by ourselves
per stebalien's request.
2020-04-18 11:09:06 +03:00
vyzo 0cab7f5e59 increase connection manager weight for mesh peers 2020-04-18 11:09:06 +03:00
vyzo adad40c764 reraise GossipSubPrunePeers to 16
so that bootstrappers can give us a good enough chunk of peers to connect to.
2020-04-18 11:09:06 +03:00