TLDR
Upgrading the Internet Computer Protocol involves NNS governance proposals grouped by topics. Over time, these upgrade-related topics have evolved in a way that is now somewhat confusing. Understanding proposal topics is crucial for neuron holders who delegate voting decisions. DFINITY is proposing to make it easier for neuron holders to understand what upgrade proposals and topics mean to make more informed voting decisions.
If the community approves this plan (and adopts the corresponding NNS Governance and NNS dapp releases), neuron holders will need to review their following and may need to adjust it to reflect their precise intentions. More information about what needs reviewing will follow; no action from NNS users is required until then.
Background
The Internet Computer Protocol runs on a distributed network of nodes grouped into subnets. Each node runs a stack of operating systems, including HostOS (runs on bare metal) and GuestOS (runs inside HostOS; contains, e.g., the ICP replica process). HostOS and GuestOS are distributed via separate disk images. The umbrella term IC OS refers to the whole stack; for the sake of this discussion, think of IC OS as the combination of HostOS and GuestOS.
There is a process for upgrading IC OS versions via NNS governance proposals. The upgrade process involves two phases, where the first phase is the election of a new IC OS version and the second phase is the deployment of a previously elected IC OS version on all nodes of a subnet or on some number of nodes (including nodes comprising subnets and unassigned nodes).
A special case is for API boundary nodes, special nodes that route API requests to a replica of the right subnet. API boundary nodes run a different process than the replica, but their executable is distributed via the same disk image as GuestOS. Therefore, electing a new GuestOS version also results in a new version of boundary node software being elected.
Motivation
Electing and deploying new IC OS versions currently happens through multiple proposal types within different topics with obscure names. For example, a new GuestOS version is elected under the topic Replica Version Management and deployed to a subnet under the topic Subnet Replica Version Management. New HostOS versions, however, are elected and deployed under one topic: Node Admin. The reasons for this inconsistency are mostly historical, e.g., upgrading HostOS via NNS proposals is a relatively new feature, while for GuestOS this has been the way since genesis.
Scope
The plan affects only proposals in the context of upgrading IC OS: renaming proposal topics and proposal types; adding new proposal types under existing topics; making some proposal types obsolete.
The two-phase IC OS upgrade process will not be changed.
Two topics for all IC OS upgrade proposals
Since upgrading GuestOS and HostOS are conceptually similar processes, neuron holders might want to make one single decision on whom to follow regarding the election of new versions of these operating systems. Therefore, there should be just one proposal topic for GuestOS and HostOS version elections. We propose to call this topic “IC OS Version Election.”
Once a new IC OS version is elected, it can be deployed to some nodes. The deployment process makes use of software that has already been approved by the community; the main decision at this phase is about the order in which software is deployed onto the nodes. Such decisions are made by experts who monitor the health status of nodes after each deployment to ensure that it is safe to proceed. For example, to ensure optimal reliability of the Internet Computer, the GuestOS versions must be deployed to all nodes of one subnet via one proposal, while HostOS versions have to be deployed to one node per subnet at a time. Having just one proposal topic to follow for all proposals related to IC OS deployment would aid this process. We propose to call this topic “IC OS Version Deployment.”
Summary of the planned changes
Action | Status Quo | Proposed New State | ||
---|---|---|---|---|
Topic | Type | Topic | Type | |
Change the set of elected GuestOS versions | Replica Version Management | Update Elected Replica Versions | IC OS Version Election | Revise Elected GuestOS Versions |
Change the set of elected HostOS versions | Node Admin | Update Elected HostOS Versions | IC OS Version Election | Revise Elected HostOS Versions |
Deploy GuestOS version to subnet | Subnet Replica Version Management | Update Subnet Replica Version | IC OS Version Deployment | Deploy GuestOS To All Subnet Nodes |
Deploy GuestOS version to unassigned nodes | Node Admin | Update Unassigned Nodes Config | IC OS Version Deployment | Deploy GuestOS To All Unassigned Nodes |
Deploy GuestOS version to API boundary nodes |
API Boundary Node Management | Update API Boundary Nodes Version | IC OS Version Deployment | Deploy GuestOS To Some API Boundary Nodes |
Deploy HostOS version to node | Node Admin | Update Nodes HostOS Version | IC OS Version Deployment | Deploy HostOS To Some Nodes |
Implementation
To achieve the above, we propose the following order of changes:
-
Rename proposal topics:
1.1. Replica Version Management → IC OS Version Election
1.2. Subnet Replica Version Management → IC OS Version Deployment -
Rename proposal types:
2.1. Update Elected Replica Versions → Revise Elected GuestOS Versions
2.2. Update Subnet Replica Version → Deploy GuestOS To All Subnet Nodes -
Add new proposal types that did not exist before:
3.1. Deploy GuestOS To All Unassigned Nodes
with topic IC OS Version Deployment
with the action derived from Update Unassigned Nodes Config.
3.2. Deploy GuestOS To Some API Boundary Nodes
with topic IC OS Version Deployment
with the same action as Update API Boundary Nodes Version.
3.3. Revise Elected HostOS Versions
with topic IC OS Version Election
with the same action as Update Elected HostOS Versions
3.4. Deploy HostOS To Some Nodes
with topic IC OS Version Deployment
with the same action as Update Nodes HostOS Version -
Make some old proposal types obsolete (return an error if these are submitted):
4.1. Update Unassigned Nodes Config
4.2. Update API Boundary Nodes Version
4.3. Update Elected HostOS Versions
4.4. Update Nodes HostOS Version
Next steps
DFINITY will propose the relevant upgrades for the NNS dapp, the NNS Governance, and IC Registry in the next few weeks. This will implement the changes summarized above.
If the upgrades are adopted by the community, we will post a reminder to review your neuron following in the NNS dapp (an action prompt will also be displayed there).