P2P Updates (#316)

This commit is contained in:
richΛrd
2025-10-27 09:58:29 -04:00
committed by GitHub
parent d65256b4d4
commit a3fdfb6fcf
4 changed files with 75 additions and 33 deletions

View File

@@ -21,40 +21,42 @@ This deliverable continues the work started in 2025q2
### Routing table and RPC Protocol
* fully qualified name: `vac:p2p:ift:2025q2-nimlibp2p-kad-dht:routing-and-rpc`
* owner:
* status: 50%
* owner: gabe/rramos
* status: 75%
* start-date: 2025-04-08
* end-date:
#### Description
Implement Kademlias XOR-based routing table with bucket management. Define RPC messages (`PING`, `SET_VALUE`, `GET_VALUE`, `SET_PROVIDERS`, `GET_PROVIDERS`, `FIND_NODE`) for node communication.
Implement Kademlias XOR-based routing table with bucket management. Define RPC messages (`PING`, `SET_VALUE`, `GET_VALUE`, `ADD_PROVIDERS`, `GET_PROVIDERS`, `FIND_NODE`) for node communication.
#### Deliverables
- [vacp2p/nim-libp2p#1454](https://github.com/vacp2p/nim-libp2p/pull/1454) feat(kad-dht): routing table
- [vacp2p/nim-libp2p#1453](https://github.com/vacp2p/nim-libp2p/pull/1453) feat(kad-dht): protobuffers
- [vacp2p/nim-libp2p#1455](https://github.com/vacp2p/nim-libp2p/pull/1455) feat(kad-dht): handler
- [vacp2p/nim-libp2p#1744](https://github.com/vacp2p/nim-libp2p/pull/1744) feat(kad): add ping
### Bootstrapping & Lookup Mechanism
* fully qualified name: `vac:p2p:ift:2025q4-nimlibp2p-kad-dht:bootstraping-and-lookup`
* owner:
* status: 35%
* owner: rramos
* status: 100%
* start-date: 2025-05-05
* end-date:
* end-date: 2025-08-18
#### Description
Enable nodes to join the network via bootstrap peers. Implement iterative lookup for efficient key
discovery and retrieval
#### Deliverables
- [vacp2p/nim-libp2p#1624](https://github.com/vacp2p/nim-libp2p/pull/1624) feat(kad-dht): findPeer
### Network Maintenance & Node Management
* fully qualified name: `vac:p2p:ift:2025q4-nimlibp2p-kad-dht:network-maintenance-node-management`
* owner:
* status: not started
* start-date:
* status: 50%
* start-date: 2025-10-08
* end-date:
#### Description
@@ -62,29 +64,33 @@ Handle bucket refresh, node eviction, and periodic pings to maintain an active r
Implement bucket splitting and adaptive refresh strategies.
#### Deliverables
- [vacp2p/nim-libp2p#1746](https://github.com/vacp2p/nim-libp2p/pull/1746) chore(kad): routing table eviction policy
### Data Storage & Replication
* fully qualified name: `vac:p2p:ift:2025q4-nimlibp2p-kad-dht:data-storage`
* owner:
* status: started
* owner: gabe
* status: 90%
* start-date: 2025-07-28
* end-date:
#### Description
Implement the logic for `SET_VALUE` and `SET_PROVIDERS`. Store key-value pairs with expiration and replication mechanisms.
Implement the logic for `SET_VALUE` and `ADD_PROVIDERS`. Store key-value pairs with expiration and replication mechanisms.
Ensure values persist despite churn, using periodic re-publication and redundancy strategies
#### Deliverables
- [vacp2p/nim-libp2p#1582](https://github.com/vacp2p/nim-libp2p/pull/1582) feat(kad): Initial unstable putval api
- [vacp2p/nim-libp2p#1749](https://github.com/vacp2p/nim-libp2p/pull/1749) chore(kad): tidy up putVal
- [vacp2p/nim-libp2p#1773](https://github.com/vacp2p/nim-libp2p/pull/1773) feat(kad): addProvider
- [vacp2p/nim-libp2p#1789](https://github.com/vacp2p/nim-libp2p/pull/1789) feat(kad): add ProviderManager
### Data Retrieval
* fully qualified name: `vac:p2p:ift:2025q4-nimlibp2p-kad-dht:data-retrieval`
* owner:
* status: not started
* owner: gabe
* status: 60%
* start-date: 2025-07-28
* end-date:
@@ -92,13 +98,33 @@ Ensure values persist despite churn, using periodic re-publication and redundanc
Implement the logic for `GET_VALUE` and `GET_PROVIDERS`. Implement validation and quorum mechanisms for queries
#### Deliverables
- [vacp2p/nim-libp2p#1764](https://github.com/vacp2p/nim-libp2p/pull/1764) chore(kad): add alpha handling
- [vacp2p/nim-libp2p#1750](https://github.com/vacp2p/nim-libp2p/pull/1750) feat(kad): add getValue
- [vacp2p/nim-libp2p#1765](https://github.com/vacp2p/nim-libp2p/pull/1765) chore(kad): getVal loop improvements
### Discovery
* fully qualified name: `vac:p2p:ift:2025q4-nimlibp2p-kad-dht:discovery`
* owner:
* status: 15%
* start-date: 2025-07-20
* owner: gabe
* status: 0%
* start-date:
* end-date:
#### Description
Extend nim-libp2p discovery mechanism by providing a discovery interface that will use Kademlia DHT to advertise nodes and find peers
Extend nim-libp2p discovery mechanism by providing a discovery interface that will use Kademlia DHT to advertise nodes and find peers
#### Deliverables
### Interop
* fully qualified name: `vac:p2p:ift:2025q4-nimlibp2p-kad-dht:interop`
* owner: gabe
* status: 0%
* start-date:
* end-date:
#### Description
Ensure interop is achieved between nim-libp2p's kad-dht implementation and other libp2p implementations
#### Deliverables

View File

@@ -42,19 +42,17 @@ Q4 as specs update was not completed
### Stream Reuse
* fully qualified name: `vac:p2p:ift:2025q4-nimlibp2p-mix:stream-reuse`
* owner:
* status: not started
* start-date:
* end-date:
* owner: rramos
* status: completed
* start-date: 2025-10-13
* end-date: 2025-10-22
#### Description
Implement long-lived stream reuse between mix nodes, by establishing a persistent stream between mix peers.
Maintain a queue of outgoing Sphinx packets per peer, and dispatch them over the persistent stream. [vacp2p/mix#88](https://github.com/vacp2p/mix/issues/88)
#### Deliverables
- Persistent streams established between peers
- Packet queue mechanism implemented
- Test units
- [vacp2p/nim-libp2p#1753](https://github.com/vacp2p/nim-libp2p/pull/1753) feat(mix): reuse streams
### Rate limit publishing

View File

@@ -23,8 +23,8 @@ In Q3 we discovered critical deficiencies in nim-quic, including runtime instabi
### Quic Stabilization
* fully qualified name: `vac:p2p:ift:2025q4-nimlibp2p-quic:stabilization`
* owner: rramos
* status: not started
* owner: vlado/rramos
* status: started
* start-date: 2025/10/01
* end-date:
@@ -38,12 +38,17 @@ Resolve runtime crashes, race conditions and excessive memory use in nim-quic. T
### Replace OpenSSL by AWS-LC / BoringSSL
* fully qualified name: `vac:p2p:ift:2025q4-nimlibp2p-quic:openssl-replacement`
* owner:
* status: not started
* owner: rramos
* status: completed
* start-date: 2025/10/01
* end-date:
* end-date: 2025/10/15
#### Description
Replace the openssl dependency in nim-quic and related libraries with BoringSSL or AWS-LC. The goal is to reduce the need of runtime dependencies by statically linking any of these libraries
#### Deliverables
- [vacp2p/nim-ngtcp2#22](https://github.com/vacp2p/nim-ngtcp2/pull/22) feat: compile boringssl using assembly files (except windows)
- [vacp2p/nim-ngtcp2#21](https://github.com/vacp2p/nim-ngtcp2/pull/21) feat: replace picotls by BoringSSL
- [vacp2p/nim-quic#140](https://github.com/vacp2p/nim-quic/pull/140) feat: use BoringSSL
- [vacp2p/nim-libp2p#1782](https://github.com/vacp2p/nim-libp2p/pull/1782) chore: remove libp2p_quic_support compile flag, and openssl dependency
- [vacp2p/nim-libp2p#1761](https://github.com/vacp2p/nim-libp2p/pull/1761) feat: use BoringSSL for certificate ops

View File

@@ -17,6 +17,19 @@ Major future work items on nim-libp2p (also beyond this reporting period are cap
[[p2p/preview|Roadmap Preview]]
### 2025q4
#### `ift:`
* [[p2p/ift/2025q4-nimlibp2p-quic|2025q4-nimlibp2p-quic]]
* [[p2p/ift/2025q4-nimlibp2p-kademlia|2025q4-nimlibp2p-kademlia]]
* [[p2p/ift/2025q4-nimlibp2p-c-bindings|2025q4-nimlibp2p-c-bindings]]
* [[p2p/ift/2025q4-nimlibp2p-ipv6|2025q4-nimlibp2p-ipv6]]
* [[p2p/ift/2025q4-nimlibp2p-maintenance|2025q4-nimlibp2p-maintenance]]
* [[p2p/ift/2025q4-nimlibp2p-mix|2025q4-nimlibp2p-mix]]
* [[p2p/ift/2025q4-nimlibp2p-webtransport|2025q4-nimlibp2p-webtransport]]
### 2025q3
#### `ift:`