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

autorelay: implement candidates sorted by RTT #2804

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

wlynxg
Copy link
Contributor

@wlynxg wlynxg commented May 21, 2024

Implement #523.

// If the node speed test is enabled, the rtt will be sorted,
// otherwise the order will be randomly shuffled.
if rf.sortByRTT {
sort.Slice(candidates, func(i, j int) bool {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this should be fuzzy, otherwise it can create hot spots in the network.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this should be fuzzy, otherwise it can create hot spots in the network.

Sorry, I didn't quite get your point. Could you be a little more detailed?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fuzz the RTTs, if they are exact then well positioned nodrs in the network might become hot spots.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

it is true that those high quality nodes in the network are preferred, but the node has already shown that he can improve the relay service for us when he accepted to be able to be our candidate.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I agree with Vyzo. We don't want to introduce a change that could cause all well-behaved nodes to possibly DoS a well behaved relay.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We do not enable rtt speed measurement by default, which should alleviate this problem.

Regarding the DoS issue, I think we should protect the server side instead of the client side. The libp2p code itself is open source, and anyone can change the behavior of the libp2p relay client, so restricting it here is useless for hackers who want to perform DoS attacks on our public network nodes.

Copy link
Collaborator

@MarcoPolo MarcoPolo May 29, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There's a difference between a malicious user doing something bad with nodes they control and us shipping code that causes every node to behave badly.

And even in the case that it does not actively hurt the server node, it is generally a better practice to distribute the load on the network than it is to create hot spots.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants