# Measuring the IPFS network
The IPFS network is a complex system that relies on the coordinated participation of a swarm of independent peers. To ensure reliability and efficiency, the Protocol Benchmarking & Optimization Team (ProbeLab) (opens new window) regularly measures the performance and health of the network, and reports these measurements to the public. In addition to these key performance indicators (KPIs), ProbeLab has created a number of custom tools to calculate these measurements.
This page provides a brief overview of these KPIs and tools. For more in-depth information, see probelab.io (opens new window).
# Network size and stability
# DHT Client and Server node estimates
The following metrics are used to estimate the DHT network size and number of clients versus servers:
- Total number of peers in the Amino (Public IPFS DHT) network
- Number of unique DHT Server peers
- Number of DHT Clients peers
For more info and the latest data, see https://probelab.io/ipfskpi/#client-vs-server-node-estimate (opens new window).
# Unique software agents
The following metrics are used to estimate the total number of unique software agents:
- Unique software agents identified by bootstrap nodes (opens new window)
- Unique software agents seen in Amino (the public IPFS DHT)
For more info and the latest data, see https://probelab.io/ipfskpi/#unique-software-agents (opens new window). https://probelab.io/ipfskpi/#unique-software-agents
# Content routing
# DHT server availability
DHT server availability is measured by classifying nodes into one of four categories, as a function of the percentage of time the node was seen online:
- Online: online for 80% of the time or more.
- Mostly Online: online between 40%-80% of the time.
- Mostly Offline: online between 10%-40% of the time.
- Offline: online less than 10% of time.
For more info and the latest data, see https://probelab.io/ipfskpi/#dht-server-availability (opens new window).
# DHT lookup performance
DHT lookup performance is measured by calculating performance over time and from several geographic regions. The metrics used are: i) median, ii) P90, iii) P99.
For more info and the latest data, see https://probelab.io/ipfskpi/#dht-lookup-performance (opens new window).
# IPNI utilization
IPNI utilization is measured by calculating the number of requests made per day to the network indexers operated by cid.contact (opens new window). For more info and the latest data, see https://probelab.io/ipfskpi/#ipni-utilization (opens new window).
The ProbeLab team is developing tools to continuously monitor the performance of several critical parts of the IPFS network. The current set of tools, together with detailed description and links can be found at: https://probelab.io/tools/ (opens new window).
Nebula (opens new window) is a libp2p DHT crawler that is used to calculate DHT server availability. It periodically tries to connect to DHT Server peers within the IPFS DHT. Upon discovering a new peer, the crawler notes the beginning of an availability session, extending this session with each successful connection attempt. Conversely, a failed connection ends the session, with a subsequent successful attempt initiating a new one. During each measurement period, peers may experience multiple availability sessions. Learn more about Nebula at probelab.io/tools/nebula/ (opens new window).
Parsec (opens new window) is a tool for measuring DHT lookup performance, specifically focusing on the PUT and GET performance of the Amino DHT. It can also be adapted to assess other libp2p-kad-dht (opens new window) networks. The configuration is divided into a scheduler and a server. Learn more about Parsec at probelab.io/tools/parsec/ (opens new window).
Tiros (opens new window) evaluates the retrieval performance of websites hosted on IPFS. Specifically, it compares website metrics such as TTFB (Time to First Byte) or FCP (First Contentful Paint) with a Kubo node and a headless Chrome instance for a given website. The objective is to compare these metrics when loaded over IPFS versus HTTPS. To achieve this, Tiros directs Chrome to request a website through either the gateway of a local Kubo node or HTTPS. Learn more about Tiros at probelab.io/tools/tiros/ (opens new window).
# Learn more
You can learn more about the data and tools discussed here, as well as ProbeLab in general at probelab.io (opens new window).