Skip to content

Latest commit

 

History

History
75 lines (53 loc) · 2.76 KB

README.md

File metadata and controls

75 lines (53 loc) · 2.76 KB

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.
Loading

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 to emulate.
  • instance_name: Some panels in this dashboard need an instance name to be specified. (e.g. score_per_mesh histogram)

image

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 to All, you can select specific instances.

image