From e316d7ddc710535cb0ff0c0aac7135a403aa0490 Mon Sep 17 00:00:00 2001
From: Yiannis Psaras <52073247+yiannisbot@users.noreply.github.com>
Date: Thu, 21 Sep 2023 22:06:27 +0300
Subject: [PATCH 01/17] DHT Refactoring work
---
src/_blog/2023-09-amino-refactoring.md | 111 +++++++++++++++++++++++++
1 file changed, 111 insertions(+)
create mode 100644 src/_blog/2023-09-amino-refactoring.md
diff --git a/src/_blog/2023-09-amino-refactoring.md b/src/_blog/2023-09-amino-refactoring.md
new file mode 100644
index 00000000..c61854b5
--- /dev/null
+++ b/src/_blog/2023-09-amino-refactoring.md
@@ -0,0 +1,111 @@
+---
+title: Amino (the Public IPFS DHT) is getting a facelift and a lightning fast Reprovide strategy
+description: 'The ProbeLab team is working on a major refactoring of the Public IPFS DHT (henceforth called Amino) and a new feature which will accellerate the provide operation by several orders of magnitude. Read through to find out the details and how to get involved.'
+author: ProbeLab
+date: 2023-09-21
+permalink: '/2023-09-amino-refactoring/'
+header_image: '/2023-09-amino-refactoring.png'
+tags:
+ - 'Amino'
+ - 'IPFS DHT'
+ - 'Reprovide Sweep'
+---
+
+Two major items are being announced in this blogpost, both of which equally exciting and both of which relate to “the Public IPFS DHT” (the [public Kademlia-based DHT](https://docs.ipfs.tech/concepts/dht/#dual-dht) that [Kubo (and other implementations) default to bootstrapping into](https://docs.ipfs.tech/how-to/modify-bootstrap-list/) with the libp2p protocol `/ipfs/kad/[1.0.0`.](https://www.google.com/url?q=http://1.0.0.&sa=D&source=docs&ust=1694209168222392&usg=AOvVaw1AMnhRKOb9e_kzS8r00lyx)), which is henceforth going to be called **“Amino”**. The first relates to a major refactoring of the Amino codebase and the second is an optimization of the publish operation of the protocol, so that providing content to Amino is made much faster and resource-efficient.
+
+## Why Amino?
+
+The “Public IPFS DHT” will henceforth going to be called **“Amino”**. This follows along with the trend from 2022 in the IPFS ecosystem to use more precise language to create space for alternative options (i.e., other DHTs). Just as there isn’t one IPFS implementation, there isn’t one content routing system or DHT. “Amino” was chosen from Amino acids - the building block for larger, stronger structures, which is what we believe will happen with this network. There can be several IPFS DHT networks, and they can choose to borrow functionality from the “Amino” network. More context on the naming can be found [here](https://github.com/ipfs/ipfs/discussions/473).
+
+## Refactoring of `go-libp2p-kad-dht` codebase
+
+It has long been realized that the current go implementation of libp2p’s Distributed Hash Table (DHT), which is used by IPFS implementations like Kubo and other projects/platforms, is in need of a major revision. The problems that have been identified by core maintainers and community contributors alike can be summarised in the following:
+
+1. Several years of adding extra features to the codebase and iterations of core functionality have made the DHT faster and more efficient, but have also added substantially to its complexity. It has now become more **difficult to understand and make changes to the code**, which indirectly is pushing developers away from contributing to it.
+2. **Flaky tests due to concurrency issues**. Unit tests, which evaluate if the implementation is working as expected, are difficult to implement, due to extensive parallelization of several parts of the code.
+3. Lack of unit tests in turn make it **hard to carry out performance evaluation tests**. This has recently resulted in performance evaluation results that are hard to understand or act upon - Bitswap’s `Provider Search` delay is a good example here [[link](https://github.com/ipfs/kubo/pull/9530)].
+4. The current implementation is carrying a **non-negligible amount of technical debt** that was acquired over the years. For instance, Kademlia should only handle Kademlia identifiers (256-bits bitstrings) internally, but it is currently using strings [[source](https://github.com/libp2p/go-libp2p-kad-dht/blob/b63ad6096833d36b365f1361edab871f6cdc283c/query.go#L83)].
+
+The [PL EngRes IPFS Stewards team](https://www.notion.so/IPFS-f3c309cecfd844e788d8b9e13472a97b?pvs=21) has been working on a **major refactoring of `go-libp2p-kad-dht`**. In this context, a new library, `go-libdht` defines the basic building blocks for implementing DHTs, and will be used by the refactored `go-libp2p-kad-dht`. The goal of the refactoring project is to address the above challenges. In particular,
+
+- make the code base easy to modify and improve by making it single-threaded.
+- allow for sequential, deterministic code execution, making debugging easier, testing reliable and simulation/reproducibility possible and,
+- get rid of unnecessary code and complexity.
+
+### Expected Changes & Timeline
+
+The refactored codebase is being worked on in the [v2-develop branch of go-libp2p-kad-dht](https://github.com/libp2p/go-libp2p-kad-dht/tree/v2-develop). The current progress, next tasks and open issues can be found at this project board: [https://github.com/orgs/plprobelab/projects/1](https://github.com/orgs/plprobelab/projects/1). The refactored code is expected to be completed, tested and ready for integration into Kubo for further testing during the first half of October.
+
+Where possible we aim to remain compatible with version 1. There are no breaking protocol changes planned and we expect to be able to adhere to the standard Routing interface used by Kubo. The libp2p Kademlia implementation has been battle tested through many years of use and we want to take advantage of the learnings from that real-world usage while improving the ergonomics and clarity of the code. However, we will be taking this opportunity to look closely at the current code interfaces and to propose improved or new ones.
+
+Most of the changes being made are internal to the operation of the DHT. We’re creating a new state machine oriented execution model that is very different to the existing implementation. This allows us to bound work and resources more cleanly and prioritize work performed more appropriately. Performance will also be different and for the initial release our goal is for this to be similar to the current codebase. However we expect the new execution model will give us more scope for optimization in the future. Having better control over the scheduling of work will also allow the new implementation to continue to perform well under resource pressure and high load.
+
+## Making Reprovides to Amino lightning fast
+
+Content providers with a large number of CIDs to provide to the DHT have traditionally been facing difficulties. The current PUT operation in `go-libp2p-kad-dht` lacks resource efficiency. For every CID being reprovided, the provider performs a lookup and initiates a connection with the top 20 nearest peers *sequentially*. In practice, this means that if a peer needs to be contacted twice for two CIDs, the providing peer needs to open two connections to the same peer at different points in time within the same reprovide task.
+
+In turn, this results in significant bandwidth requirements and deters large content providers from advertising their content on Amino (the IPFS DHT) due to cost constraints. The sequential manner in which reprovides take place can result in content providers failing to refresh all content within the 48h provider record expiration interval [[link to source](https://github.com/libp2p/go-libp2p-kad-dht/blob/b63ad6096833d36b365f1361edab871f6cdc283c/providers/providers_manager.go#L38)][[link to spec](https://github.com/libp2p/specs/tree/master/kad-dht#content-provider-advertisement-and-discovery)], rendering the content inaccessible.
+
+Our approach is to optimize the provide process, making it much less resource intensive. This will pave the way for a significantly larger throughput in the number of "provides".
+
+### High level design of `ReprovideSweep`
+
+The base premise of `ReprovideSweep` is that **all keys located in the *same keyspace region* are reprovided *all at once,** instead of sequentially,* which is currently the case. This is in contrast to the status quo of re-providing in the current IPFS DHT, where the provider record of each CID is sent out separately, though a new connection.
+
+Given that some large Content Providers are publishing way more CIDs than there are DHT Servers, by the [pigeonhole principle](https://en.wikipedia.org/wiki/Pigeonhole_principle) there must be DHT Servers that are allocated more than one Provider Record, by a particular Content Provider. The primary rationale is to send/re-provide all Provider Records allocated to the same DHT Server *******at once, instead of having to revisit the same server later on, re-establish a connection and store the provider record*******.
+
+However, because sending multiple Provider Records requires a new RPC, causing a breaking change it isn’t trivial to send all Provider Records exactly *at once.* That said, the most expensive part in a (Re)Provide operation is the DHT walk to discover the right DHT Servers to store the Provider Records on, as well as opening new connections to these peers. Once these peers are known, and a connection is already open, the Content Provider can simply reuse the same connection to send multiple individual `Provide` requests.
+
+The `go-libp2p-kad-dht` DHT implementation must keep track of the CIDs that must be republished, every `Interval` (let’s assume that all Provider Records are republished at the same frequency). The Kademlia identifiers of the CIDs to republish, must be arranged in a [binary trie](https://github.com/guillaumemichel/py-binary-trie) to allow for faster access. As each Provider Record is replicated on 20 different DHT Servers, 20 DHT Servers in a close locality are expected to store the same Provider Records (this is not 100% accurate, but suffices for our high-level description here - we’ll publish all the details in a subsequent post, when the solution is in production).
+
+In a nutshell, the Content Provider will continuously lookup keys across the entire keyspace, hence “sweeping” the keyspace. For each key that is to be published, the Content Provider will find the 20 closest peers, and lookup in its “CIDs Republish Binary Trie” all Provider Records that would belong to those specific 20 remote peers. Doing this match-making exercise, content providers will be able to reprovide all provider records that correspond to a particular peer at once. Based on this logic, Content Providers are only limited by network throughput.
+
+You can watch a recording from [IPFS Thing 2023](https://2023.ipfs-thing.io/) explaining the concept in more detail [here](https://youtu.be/bXaL64fp55c?si=1LuukjErCG_bz02N).
+
+### `ReprovideSweep` Performance
+
+`ReprovideSweep` is not implemented yet, hence, we can only approximate its performance analytically. In the tables below we see that `ReprovideSweep` is improving performance significantly on all fronts and important metrics, assuming that the number of CIDs (`#CIDs`) that a provider wishes to publish is much larger than the number of DHT Server nodes in the network (`#DHT_SERVERs`), i.e. `#CIDs >> #DHT_SERVERs`:
+
+- The number of DHT Lookups is reduced from being equal to the number of CIDs to be published, down to 1/20th of the number of DHT Server nodes in the network.
+- The number of connections that need to be opened is also reduced and is equal to the number of DHT Server nodes (if the number of CIDs to be provided is much larger than the number of server nodes in the network).
+- As we see in the second table, assuming a network size of ~25k DHT Server nodes, the overall improvement in terms of ‘number of connections open’ and ‘number of DHT Lookups’ is significant reaching an improvement of ~800x for 1M CIDs.
+
+| | Current Reprovide | Reprovide Sweep |
+| --- | --- | --- |
+| Number of DHT lookups | #CIDs | ~1/20 * #DHT_SERVERs |
+| Number of connections to open | 20 * #CIDs | #DHT_SERVERs |
+
+| #CIDs published | Improvement
+(#connections, #DHT Lookups) |
+| --- | --- |
+| $\leq$ 1K | - |
+| 25K | 20x |
+| 100K | 80x |
+| 500K | 400x |
+| 1M | 800x |
+| 10M | 8’000x |
+
+### Expected Changes & Timeline
+
+We are very excited about this change, as it will enable large content providers to start using the most resilient and decentralized component of the IPFS network.
+
+**This change is a client side optmization, and doesn’t involve any protocol alteration.** As such, it allows users to immediately benefit from the feature. The interface between `go-libp2p-kad-dht` and `[boxo](https://github.com/ipfs/boxo)`, which Kubo uses, must be updated, enabling the DHT client to take on the responsibility of managing the reprovide operation.
+
+The PL EngRes IPFS Stewards team is currently working to define the spec for `ReprovideSweep`, which we hope to have ready in the beginning of October and we anticipate rolling out this enhancement during Q4’23. We will update the community with a new blogpost or discussion forum post closer to the time. Until then, you can follow developments on this front through this GH issue: [https://github.com/libp2p/go-libp2p-kad-dht/issues/824](https://github.com/libp2p/go-libp2p-kad-dht/issues/824).
+
+## What’s next
+
+We believe the above lays the groundwork for more exciting DHT innovation ahead. We have some ideas that we’d love to be talking about and working with the community. We’re still figuring out the best place to this conversation, but subscribe [here](https://discuss.ipfs.tech/t/dht-discussion-and-contribution-opportunities-in-2023q4/16937) if you’re interested in learning about upcoming DHT discussion areas (e.g., at [LabWeek](https://labweek.plnetwork.io/)/[DevConnect](https://devconnect.org/), DHT working group).
+
+## How to get involved
+
+As always, help is more than welcome to accelerate development and make the design more robust through feedback. Here are ways you can get involved:
+
+- Github repository:
+ - DHT Refactoring: [https://github.com/plprobelab/go-kademlia/](https://github.com/plprobelab/go-kademlia/)
+ - Reprovide Sweep: [https://github.com/libp2p/go-libp2p-kad-dht/issues/824](https://github.com/libp2p/go-libp2p-kad-dht/issues/824)
+- Slack channel:
+ - `#probe-lab` in FIL Slack or IPFS Discord (bridged channel), or
+ - `#kubo-boxo-dev` in FIL Slack
+- IPFS Discussion forum:
+ - DHT Refactoring and future planning: [https://discuss.ipfs.tech/t/dht-discussion-and-contribution-opportunities-in-2023q4/16937](https://discuss.ipfs.tech/t/dht-discussion-and-contribution-opportunities-in-2023q4/16937)
From 593379f76ceb9fd0e3cf75be8db2d8fef2a097ff Mon Sep 17 00:00:00 2001
From: Yiannis Psaras <52073247+yiannisbot@users.noreply.github.com>
Date: Thu, 21 Sep 2023 22:08:43 +0300
Subject: [PATCH 02/17] header image
---
src/assets/2023-09-amino-refactoring.png | Bin 0 -> 780154 bytes
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 src/assets/2023-09-amino-refactoring.png
diff --git a/src/assets/2023-09-amino-refactoring.png b/src/assets/2023-09-amino-refactoring.png
new file mode 100644
index 0000000000000000000000000000000000000000..101debcdfe0587d534e00fa015994b38da97b492
GIT binary patch
literal 780154
zcmZ^L2RxPi`#&e@AW>%7EqkRD!ijpw4w-R8MVZ+voC-xonaMak8QD?xIuVMDl)bY@
z_MZRGeHK0c@9*{Uyq?oJ_kG=;YkscleO;gXxrUkoHRTCP5)u;X>xx%3Nk|TUB_TN!
z4nGLK**y5FAN-HhK~q7FB&(5i0{r9ZUA^n~R8>j%z-KrKssDWvGUyWU-wE&^3CRI8
zDairwe^Tf>G>q`;!LR58gwKb
tW(3;*Cbabbg){93{`H>n*6WAYhhcTqpMG!
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
G
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­I0YHy334=Rz#D%3a>H9IKFLx?eIT;R
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