You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This is a high-level issue, a large epic with multiple branches.
Requirements of this design
Complete connectivity is to ensure that all Polykey nodes regardless of their network environment can connect to each other if there is a sufficient link (potential multistep) between them.
The ability for 2 nodes in symmetric NAT to discover and connect to each other.
The ability for all nodes to act as relays - and thus decentralized relaying without rely on the seed nodes.
The ability to ensure network segregation, firstly through mainnet and testnet separation, and subsequently private networks in PKE.
The ability to simulate the network - create a "chaosnet" where one can deploy autonomous Polykey agents to perform random tasks in a loop, in order to test network stability empirically.
The ability to do decentralized signalling efficiently, through each hop, that is user acceptance testing and simulation testing must be done according to Decentralised NAT Signalling #365 that was closed.
Initial algorithm for decentralized signalling is in Decentralised NAT Signalling #365, however performance of the algorithm doesn't have empirical tests yet - and I feel that it will require further improvement
Specification
Network Identity and Membership
This is needed to separate mainnet, testnet and private networks, possibly allowing PK to connect to multiple networks simultaneously but forming segregation on every command. It's probably easier to just make PK connect to only a single network.
We also need to figure out the exact role and relationship between the certificate identity chain, and the sigchain claim chain.
Decentralized Signalling and Relaying Algorithm Design
The initial design is in #365. However it has not been applied to relaying yet, nor has it been empirically tested.
Relaying ultimately has to be done through network encapsulation. We have to make use of our RPC to pass through binary blocks from one node to another. This will need to make use of our RAW mode in our RPC for efficiency reasons. We may need to test the performance of this though, because QUIC does actually have a datagram mode, I'm not sure if this is relevant here.
It will be important to create autonomous looped Polykey agents to be able to simulate a dirty and chaotic network to see how robust our mechanisms are.
NodeGraph Garbage Collection
The NodeGraph since #537 is capable of multi-host addressing. However GC of the NodeGraph has been neglected, and I believe fast manipulation of this node graph will need to be dealt with.
Discovery Performance and Efficiency
MDNS and related algorithms suffer from some in-efficiencies.
This is a high-level issue, a large epic with multiple branches.
Requirements of this design
Additional context
Specification
Network Identity and Membership
This is needed to separate mainnet, testnet and private networks, possibly allowing PK to connect to multiple networks simultaneously but forming segregation on every command. It's probably easier to just make PK connect to only a single network.
We also need to figure out the exact role and relationship between the certificate identity chain, and the sigchain claim chain.
Decentralized Signalling and Relaying Algorithm Design
The initial design is in #365. However it has not been applied to relaying yet, nor has it been empirically tested.
Relaying ultimately has to be done through network encapsulation. We have to make use of our RPC to pass through binary blocks from one node to another. This will need to make use of our RAW mode in our RPC for efficiency reasons. We may need to test the performance of this though, because QUIC does actually have a datagram mode, I'm not sure if this is relevant here.
And DOS prevention in #556.
Network Simulation/Visualisation
Involves the usage of Orchestrator and Pulumi.
Chaosnet
It will be important to create autonomous looped Polykey agents to be able to simulate a dirty and chaotic network to see how robust our mechanisms are.
NodeGraph Garbage Collection
The NodeGraph since #537 is capable of multi-host addressing. However GC of the NodeGraph has been neglected, and I believe fast manipulation of this node graph will need to be dealt with.
Discovery Performance and Efficiency
MDNS and related algorithms suffer from some in-efficiencies.
QUIC Performance
MatrixAI/js-quic#54
IPv4 and IPv6 Conformance
#669
Sub-Issues & Sub-PRs created