This chart shows the average download latency in seconds of the IPFS Kubo node from several different regions. The first dropdown menu allows filtering by the different regions and the second by the content routing methods.
A Download is defined as requesting a random CID that we have learned about with our Bitswap sniffer tool from the network using the different content routing systems DHT and IPNI (and also Bitswap which is technically not a content routing system). The Download measurements show the latencies until we have received the first byte. This decouples the Download measurement numbers from the file size of the random CID.
We are showing average latencies here as opposed to percentiles because they are additive and only this allows us to correctly visualize the different steps as stacked bars. The tooltip shows more information like the total P50 and P90 percentile latencies, plus the number of samples used to calculate the aggregations.
In our measurement setup we effectively run the command ipfs cat $CID until we have downloaded at most 10MiB of data. This limit was chosen to not generate unnecessary network load.
ipfs cat $CID
The download performance is broken down to each stage of the process:
Time to broadcast: The time it took until the DHT and IPNI content routing subsystems were activated to resolve the CID's providers. Kubo implements a "Provider Search Delay" of 1s in which it asks its immediately connected peers via Bitswap if they happen to have the content for the CID. Kubo waits up to 1s for a positive response before it broadcasts the request to the DHT or IPNI. This "Time to broadcast" bar should almost always be around 1s.
Provider found delay: The time it took until the provider was found via the DHT or IPNI relative to the time when the broadcast operation started.
Provider connection delay: The time it took until our Kubo node has established a connection to the provider relative to the time when the provider was found.
TTFB delay: The time it took until the first byte of the file was received from the provider relative to the time when the provider connection was established.
The samples used to produce the graph is shown on the right y-axis.
The resource provisioning of our Kubo node under test is as follows:
Fetching a file, using Kubo, through Amino, Bitswap and IPNI