mirror of
https://github.com/sigp/gossipsub-testground.git
synced 2026-01-08 05:03:58 -05:00
* episub-sim
* network generation
* mainnet network generation
* no pretty print
* add small network for testing
* upgrade versions, make the thing compile
* checkpoint
* this is ridiculous
* make gen_topology reachable by testground
* add 16 instsances for testing
* add running command
* remove params
* pass new participants param
* update upstream reg
* update upstream reg
* put msg generation back in
* put publishing back in
* adding metrics
* record metrics on intervals
* add gossip max limit
* stop fghting testground. For now
* update README
* Revert "stop fghting testground. For now"
This reverts commit a976c5371b.
* use composition files to get the docker build context a layer up
* fix params and logs
* remove unused files
* cache workspace deps
* cache workspace deps _the right_ way
* updates
* some docs
* Update CI and remove root workspace
* Add duplicates, fix clippy, improve dash
* Reduce message sizes, some debugging
* Update dash and logs
* Add scripts folder
* Fix executor lockup
* fmt and clippy
* Add some docs
* Dot to mermaid
Co-authored-by: Diva M <divma@protonmail.com>
2.8 KiB
2.8 KiB
Censoring Simulation
This simulation creates a number of malicious nodes which do not propagate received messages. This simulation is aimed to help fine-tune gossipsub scoring parameters to mitigate censoring attacks on gossipsub networks.
Running the simulation
testground run composition -f censoring/compositions/composition.toml --wait
How the Simulation Works
Note: Attackers connect to a single publisher (victim). Publisher1 is the victim in this test plan.
sequenceDiagram
participant Publishers
participant Lurkers
participant Attackers
%% Discovery
Note over Publishers,Lurkers: Setup discovery<br />Connect to some of the honest nodes (publishers + lukers)<br />randomly selected
Note over Attackers: Setup discovery<br />Connect to a single publisher
Publishers->>Lurkers: Connect
Lurkers->>Publishers: Connect
Attackers->>Publishers: Connect to a single publisher (victim)
%% Subscribe topics
Note over Publishers,Lurkers: Subscribe topic(s)
Publishers->>Lurkers: Subscribe/GRAFT
Lurkers->>Publishers: Subscribe/GRAFT
Publishers->>Attackers: Subscribe/GRAFT
Note over Attackers: Subscribe to the topic in the message from the publisher, <br/>and send back Subscribe/GRAFT.
Attackers->>Publishers: Subscribe/GRAFT
%% Publish messages
Note over Publishers: Periodically publish messages on all topics subscribing.
loop Publish messages
Publishers->>Lurkers: Message
Publishers->>Attackers: Message
Note over Attackers: **Don't propagate messages**
end
%% Record metrics
Note over Publishers,Lurkers: Record metrics.
Dashboards
Please see the root README for how to run Grafana.
Gossipsub Metrics
The metrics of gossipsub are recorded once the simulation has been completed. All of the metrics on libp2p-gossipsub are available in this dashboard.
Variables for this dashboard:
run_id: The run_id for the test run you want to see.topic: The gossipsub topic, currently it's fixed toemulate.instance_name: Some panels in this dashboard need an instance name to be specified. (e.g. score_per_mesh histogram)
Peer Scores
The peer scores are recorded periodically (every second) while the simulation is running.
Variables for this dashboard:
run_id: The run_id for the test run you want to see.instance_name: It's default toAll, you can select specific instances.