Hey everyone,
Thanks @dfisher for asking for updates. You picked the right moment as I have just been putting together a post with an update on the progress, the latest design choices, and an outlook of what is ahead.
Context:
As part of the long term R&D plan for the boundary nodes, which has been adopted by the NNS through motion proposal #35671, we are working on a new boundary node architecture to address decentralization. The new architecture splits todayâs boundary nodes into API boundary nodes, which will be fully managed by the NNS like the Replica Nodes, and into HTTP Gateways, which will be operated by different entities.
We decided to first work on the API boundary nodes, while keeping todayâs boundary nodes fully operational. Then, we will propose to the NNS to roll out the API boundary nodes. Once they stand the test, we will start rolling out the HTTP gateways and retiring todayâs boundary nodes. As part of the roll out of the HTTP gateways, we will also provide a reference implementation that enables anyone in the community to run their own HTTP gateway with minimal effort.
Progress:
The team is currently fully focused on the API boundary nodes. The work is split into two main topics: (1) replacing nginx with a custom router, which we call ic-boundary, and (2) preparing the registry and the orchestrator to support the API boundary nodes.
ic-boundary
As part of the boundary node redesign, we decided to do away with nginx as it is just not made for our use-case. Up until now, we have simply added custom modules to enable our use-cases, which is far from ideal as we are still quite limited in what is supported and testing is complex.
Therefore, we decided to write our custom router, which handles all the API endpoints of the Internet Computer: status, query, call, and read_state. ic-boundary forwards all incoming requests to the right subnet and replica, and applies rate-limits where necessary. In the future, we intend to extend ic-boundary to also perform caching.
The team is close to finishing the first iteration of ic-boundary and we plan to extensively test it within the existing boundary nodes before proposing to deploy under the NNS.
Preparing NNS-management
In order to bring the API boundary nodes under the management of the NNS, we are working on creating the necessary records and tooling in the registry. We are close to being done with that.
To simplify operations, we suggest integrating ic-boundary directly into the existing replica nodes. Like that, a node can be either a Replica Node or an API boundary node. The orchestrator is checking in the registry whether it is assigned to a subnet or turned into an API boundary node, and starts then either the ic-replica or the ic-boundary binary. Following this approach, we can reuse a lot of the existing infrastructure and efforts.
Outlook:
We are planning to run production tests of ic-boundary in the coming month and afterwards start the work of integrating the API boundary nodes into the Internet Computer core. This will be a longer process as it involves many teams and the Node Providers.
We will keep you posted on the progress and are looking forward to your feedback!