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

Reduce Bandwidth Utilization by Reducing Fanout #993

Closed
rkeene opened this issue Jul 25, 2018 · 6 comments
Closed

Reduce Bandwidth Utilization by Reducing Fanout #993

rkeene opened this issue Jul 25, 2018 · 6 comments
Assignees
Milestone

Comments

@rkeene
Copy link
Contributor

rkeene commented Jul 25, 2018

Investigate whether the real-time network can be optimized by reducing fanout from a node when distributing messages. Currently it may be sqrt(nodeCount) or 40+, it's not clear. Validate that it's something reasonable and reduce it if it's not.

@rkeene rkeene added this to the V15.0 milestone Jul 25, 2018
@rkeene
Copy link
Contributor Author

rkeene commented Aug 9, 2018

Lee looked into this at a cursory level and indicated it may not be needed, let's confirm and close if no change is needed.

@PlasmaPower
Copy link
Contributor

PlasmaPower commented Aug 9, 2018

I think we should first see if other bandwidth reductions result in less packet loss. I don't have exact statistics, but I think packet loss on the network is relatively high right now, which would make reducing fanout too dangerous.

@clemahieu
Copy link
Contributor

One way to capture this statistic could be to count the number of duplicate publish messages for a block compared to the fanout. If there’s no packet loss on average they’d be the same.

@rkeene rkeene modified the milestones: V15.0, V16.0 Aug 9, 2018
@rkeene rkeene modified the milestones: V16.0, V18.0 Aug 28, 2018
@zhyatt zhyatt added this to Unscheduled in V18 Dec 27, 2018
@zhyatt zhyatt assigned cryptocode and wezrule and unassigned PlasmaPower and cryptocode Jan 3, 2019
@wezrule wezrule moved this from Unscheduled to CP 3 (2018-01-23) in V18 Jan 10, 2019
@zhyatt zhyatt moved this from CP 3 (2018-01-23) to Nice to have in V18 Jan 22, 2019
@zhyatt zhyatt removed this from Nice to have in V18 Feb 6, 2019
@zhyatt zhyatt modified the milestones: V18.0, V19.0 Feb 6, 2019
@zhyatt
Copy link
Collaborator

zhyatt commented Feb 12, 2019

Dependent on #1548

@wezrule wezrule added this to CP2 in V19 Feb 19, 2019
@zhyatt zhyatt moved this from CP2 (2019-03-27) to Nice to have in V19 Mar 26, 2019
@zhyatt zhyatt removed this from Nice to have in V19 Jun 6, 2019
@Srayman
Copy link
Contributor

Srayman commented Jul 13, 2019

I’m curious what the plans are for this. I’ve been experimenting with capturing vote traffic from the websocket to see the delay across different reps and noticed that for most reps I get 4-6+ messages per rep for each block hash from the websocket.

If there are 300,000 blocks sent and 20 reps voting that’s 6M votes. Then if the node receives rebroadcasts from 3 other reps for the same vote that turns into 24M. If it’s on the higher side of 5 rebroadcasts it’s 48M etc. That’s a lot of extra data to process.

My assumption is each of the duplicates is from rebroadcasting votes, but curious to know if they could be from other actions like blocks being rebroadcast and causing another round of votes or something else etc.

I think the amount of extra traffic could be a significant impact on processing blocks and votes. With the change to TCP it seems like packet loss should be significantly less and therefore rebroadcasting/fanout could be reduced some.

I don’t know the best structure to make it more efficient but one thought could be to setup a form of mesh, ring, star hybrid network to optimize how traffic is distributed. I need to spend more time looking at the code to understand how the current process works for block and vote propagation, so if there any flow charts or workflows that exists that would be helpful.

Are there plans in the works or areas of data capture that would be helpful to evaluate this further?

@qwahzi
Copy link
Collaborator

qwahzi commented Jan 10, 2023

Should this issue be closed, due to age, it being partially addressed in V21, and because there are a few more recent efforts in the same vein?:

Adjusting block rebroadcasting on arrival: #3419

Continuous backlog population: #3999

Adjusting vote broadcast intervals: #4010

Hinted elections redesign: #3944

Elections-Up branch: https://github.com/pwojcikdev/nano-node/tree/elections-up

image

CC: @dsiganos

@qwahzi qwahzi closed this as completed May 25, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

8 participants