Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Reserved nodes aren't added as explicit peers in gossipsub #1384

Closed
Voxelot opened this issue Sep 27, 2023 · 0 comments · Fixed by #1434
Closed

Reserved nodes aren't added as explicit peers in gossipsub #1384

Voxelot opened this issue Sep 27, 2023 · 0 comments · Fixed by #1434
Assignees

Comments

@Voxelot
Copy link
Member

Voxelot commented Sep 27, 2023

While reserved nodes are always connected to, but they are not marked as explicit peers in the gossipsub behavior. This means they may lose reputation and gossip broadcasts may not go through.

In practice, reserved nodes should always have a good reputation. But there may be some cases where we punish more severely than needed, (i.e. a gossiped tx gets delivered too late and is no longer valid according to txpool rules). All reserved peers should get a free pass on reputation while the reputation system gets improved.

Docs:

https://docs.rs/libp2p-gossipsub/0.43.0/libp2p_gossipsub/struct.Gossipsub.html#method.add_explicit_peer

https://docs.rs/libp2p-gossipsub/0.43.0/libp2p_gossipsub/struct.Gossipsub.html#method.publish
Screen Shot 2023-09-26 at 9 26 28 PM

Voxelot pushed a commit that referenced this issue Oct 16, 2023
…reasing (#1423)

Closes #1384

After debugging the issue with transaction broadcasting in the Beta 4
network, I can confirm that it is related to the gossipsub reputation.

At some point, no one sends transactions to the authority node. When I
manually restart one sentry node, this node starts to send transactions
to the authority node. It sends transactions via gossiping and
publishing:
- Publishing: I send a transaction to sentry 1, which sends it to
authority.
- Gossiping: I send the transaction to sentry 0, it sends the
transaction to sentry 1, and it sends the transaction to authority.

But at some point, gossiping doesn't work while publishing still
works(Sentry 0 gossips transaction to Sentry 1, and Sentry 1 doesn't
gossip it to authority).

After some time, the publishing doesn't work either.

The gossipsub has two thresholds, one for gossiping and one for
publishing. We use these values:

<img width="652" alt="image"
src="https://github.com/FuelLabs/fuel-core/assets/18346821/bcb1585c-239b-4cf9-9fae-c9376b958201">

So, the described behavior aligns with authority reputation decreasing.
I don't know the reason why it happens(maybe decay), but adding all
reserved peers to explicit peers should solve the problem.
@xgreenx xgreenx self-assigned this Oct 17, 2023
xgreenx added a commit that referenced this issue Oct 20, 2023
…reasing (#1423)

Closes #1384

After debugging the issue with transaction broadcasting in the Beta 4
network, I can confirm that it is related to the gossipsub reputation.

At some point, no one sends transactions to the authority node. When I
manually restart one sentry node, this node starts to send transactions
to the authority node. It sends transactions via gossiping and
publishing:
- Publishing: I send a transaction to sentry 1, which sends it to
authority.
- Gossiping: I send the transaction to sentry 0, it sends the
transaction to sentry 1, and it sends the transaction to authority.

But at some point, gossiping doesn't work while publishing still
works(Sentry 0 gossips transaction to Sentry 1, and Sentry 1 doesn't
gossip it to authority).

After some time, the publishing doesn't work either.

The gossipsub has two thresholds, one for gossiping and one for
publishing. We use these values:

<img width="652" alt="image"
src="https://github.com/FuelLabs/fuel-core/assets/18346821/bcb1585c-239b-4cf9-9fae-c9376b958201">

So, the described behavior aligns with authority reputation decreasing.
I don't know the reason why it happens(maybe decay), but adding all
reserved peers to explicit peers should solve the problem.
xgreenx added a commit that referenced this issue Oct 20, 2023
…reasing (#1423) (#1434)

Applying the bugfix #1423 to `master`.

Closes #1384

After debugging the issue with transaction broadcasting in the Beta 4
network, I can confirm that it is related to the gossipsub reputation.

At some point, no one sends transactions to the authority node. When I
manually restart one sentry node, this node starts to send transactions
to the authority node. It sends transactions via gossiping and
publishing:
- Publishing: I send a transaction to sentry 1, which sends it to
authority.
- Gossiping: I send the transaction to sentry 0, it sends the
transaction to sentry 1, and it sends the transaction to authority.

But at some point, gossiping doesn't work while publishing still
works(Sentry 0 gossips transaction to Sentry 1, and Sentry 1 doesn't
gossip it to authority).

After some time, the publishing doesn't work either.

The gossipsub has two thresholds, one for gossiping and one for
publishing. We use these values:

<img width="652" alt="image"

src="https://github.com/FuelLabs/fuel-core/assets/18346821/bcb1585c-239b-4cf9-9fae-c9376b958201">

So, the described behavior aligns with authority reputation decreasing.
I don't know the reason why it happens(maybe decay), but adding all
reserved peers to explicit peers should solve the problem.
crypto523 added a commit to crypto523/fuel-core that referenced this issue Oct 7, 2024
…reasing (#1423) (#1434)

Applying the bugfix #1423 to `master`.

Closes FuelLabs/fuel-core#1384

After debugging the issue with transaction broadcasting in the Beta 4
network, I can confirm that it is related to the gossipsub reputation.

At some point, no one sends transactions to the authority node. When I
manually restart one sentry node, this node starts to send transactions
to the authority node. It sends transactions via gossiping and
publishing:
- Publishing: I send a transaction to sentry 1, which sends it to
authority.
- Gossiping: I send the transaction to sentry 0, it sends the
transaction to sentry 1, and it sends the transaction to authority.

But at some point, gossiping doesn't work while publishing still
works(Sentry 0 gossips transaction to Sentry 1, and Sentry 1 doesn't
gossip it to authority).

After some time, the publishing doesn't work either.

The gossipsub has two thresholds, one for gossiping and one for
publishing. We use these values:

<img width="652" alt="image"

src="https://github.com/FuelLabs/fuel-core/assets/18346821/bcb1585c-239b-4cf9-9fae-c9376b958201">

So, the described behavior aligns with authority reputation decreasing.
I don't know the reason why it happens(maybe decay), but adding all
reserved peers to explicit peers should solve the problem.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
2 participants