-
Notifications
You must be signed in to change notification settings - Fork 1.1k
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
base: master
Are you sure you want to change the base?
Conversation
// 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 { |
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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?
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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.
Implement #523.