Questions about node-locations, load balancing and priority hosting

In web2 hosting, geolocation plays a heavy role when picking hosting providers. The whole point of CDNs is to host data closer to end-users, to reduce ping and delivery times.

How does ICP solve this problem?

I know that canisters are hosted on several nodes. But let us pretend that a canister and all its replica’s are being split across nodes that are all located in the US+Europe, and now most of the users accessing that canister are coming from Japan:

  • Does ICP have some algorithm to move the canister replica’s to nodes that are closer to end users? Is this already implemented or planned for the future?

  • Alternatively: Do boundary nodes solve this in some way? I’ve read that boundary nodes help with load-balancing, so does this mean this has already been solved and is not even needed? Do boundary nodes cache data in a similar way as a CDN? (In that case, moving canisters might not really be needed). Is this already implemented or planned for the future?

  • What if 2 different apps are competing for the same node? Let us pretend there was a single node in South America, and now 2 different apps are experiencing heavy traffic from South America. How does ICP decide which app gets priority over using that node to serve users? Is this already implemented or planned for the future?

  • In that case: Are there any plans to allow devs to “pay extra” to give their apps priority to best nodes? In the same way bitcoin users can pay higher fees to have their transfer go through quicker, are there plans to allow ICP devs to pay extra to give their apps priority over Nodes closer to their end-users? For example: some nodes will be in high-density areas, while others will be in far off places. It will probably be cheaper to run nodes in far-away places (electricity/rent), but devs will still prefer to host their apps relatively close to their end-users. A system like that would incentivize node-providers to run nodes in high density areas, since they would also be getting paid more from apps that are dependent on low latency (DEFI, Communication, Streaming, Gaming). Is this planned?

I would really appreciate being pointed in the right direction on this.

Hi Erik

While we have many ideas on how to solve such problems, we are not addressing them at the moment.

Some more detailed information that may help you to understand the status quo:

  1. Right now, all our subnets are as geo-distributed as possible and user calls are forwarded to random replicas (for simplicity and Byzantine fault tolerance) by the boundary nodes. The creation of subnets where are nodes are in a certain area can be achieved with existing NNS proposal types.

  2. Canisters can have different compute allocations which are used for the prioritization of update calls on the same subnet (not geo-dependent though)

  3. The NP remuneration per region is fixed by the NNS. There are currently quite a few NNS features in development, so it will probably take some time before the current scheme is changed.

2 Likes

@yvonneanne thank you so much, that’s really helpful info!

The IC is already so much faster than other blockchains, so I completely understand these things are note a priority right now.

Do you think I should come back with these thoughts at a later time?

1 Like

@harrison is trying to solve this with psycadelic.

1 Like

The IC is already so much faster than other blockchains, so I completely understand these things are note a priority right now.

Do you think I should come back with these thoughts at a later time?

Please come back and ask again in a few months!
Except for the remuneration where we might be able to propose a different mechanism more quickly, I don’t expect the team will have resources to work on these topics in 2022, though.

2 Likes

Have you made any progress? Would you be willing to share some ideas?