Skip to content

Commit

Permalink
Website daily update for 2024-09-30T02-33-02
Browse files Browse the repository at this point in the history
  • Loading branch information
probelab-cmi committed Sep 30, 2024
1 parent 1053188 commit 4322976
Show file tree
Hide file tree
Showing 18 changed files with 142 additions and 0 deletions.
125 changes: 125 additions & 0 deletions content.en/avail/dht/mainnet/2024-39-report.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,125 @@
---
title: Week 2024-39
plotly: true
slug: 2024-39
weight: 1045620
---

# Avail Report Cal. Week 39 - 2024

## General Information

The following results show measurement data that were collected in calendar week 39 in 2024 from `2024-09-23` to `2024-09-30`.

- Number of crawls `335`
- Number of visits `2,667,719`
> Visiting a peer means dialing or connecting to it. Every time the crawler or monitoring process tries to dial or connect to a peer we consider this as _visiting_ it. Regardless of errors that may occur.
- Number of unique peer IDs visited `6,189`
- Number of unique peer IDs discovered in the DHT `6,189`
- Number of unique IP addresses found `3,322`

Timestamps are in UTC if not mentioned otherwise.

## Agents versions

This stacked plot shows the distribution of agent versions over time, it offers insights into the uptake of newer versions.

{{< plotly json="/plots/2024/09/23/avail-versions-distribution.json" height="600px" >}}

This chart presents the version distribution of avail nodes, with each bar representing the average number of online peers over the course of a week.

{{< plotly json="/plots/2024/09/23/avail-agents-versions.json" height="600px" >}}

## Churn Analysis

This visualizes the uptime of peers over a specific period of time. The plot may display trends in churn rate, distribution of uptime periods, or patterns in peer activity. It helps analyze the stability and reliability of the network by identifying fluctuations in peer participation and examining potential factors influencing churn.

{{< plotly json="/plots/2024/09/23/avail-plot-churn.json" height="600px" >}}

## Geolocation

Geographical data is sourced from the [MaxMind database](https://www.maxmind.com), which maps IP addresses to corresponding countries.

This bar plot illustrates the distribution of observed nodes across different countries.

{{< plotly json="/plots/2024/09/23/avail-geo-agent-All-bars.json" height="600px" >}}

This plot displays the weekly geographical distribution of nodes, categorized by country.

{{< plotly json="/plots/2024/09/23/avail-geo-agent-All-lines.json" height="600px" >}}

## Cloud Providers

Cloud providers data is sourced from [Udger](https://udger.com/resources/datacenter-list), which maps IP addresses to known hosting providers.

### Cloud Hosting Rate

This line chart displays the count of nodes within the Avail network that are hosted on known commercial cloud providers, compared to those that are not. It tracks the distribution over a specified period, offering insights into the infrastructure preferences for node hosting.

Regular analysis of this chart can reveal trends in the adoption of cloud services for nodes. Such information is crucial for understanding the network's resilience and the potential reliance on cloud infrastructure.

{{< plotly json="/plots/2024/09/23/avail-cloud-rate-agent-All-lines.json" height="600px" >}}

This bar chart presents the weekly distribution of Avail nodes among various cloud providers, including nodes not hosted within data centers (grouped under _Non-Datacenter_).

{{< plotly json="/plots/2024/09/23/avail-cloud-agent-All-bars.json" height="600px" >}}

The line chart illustrates the trends in the distribution of all Avail nodes across cloud providers over the given time period. Note that nodes hosted outside of data centers are not included in this representation.

{{< plotly json="/plots/2024/09/23/avail-cloud-agent-All-lines.json" height="600px" >}}

## Crawls

### Protocols

This plot illustrates the evolving count of nodes supporting each of the listed protocols over time. It exclusively presents data gathered from nodes accessible through a libp2p connection via our crawler. The identification of supported protocols relies on the [libp2p identify protocol](https://github.com/libp2p/specs/tree/master/identify), hence necessitating a libp2p connection for discovery.

{{< plotly json="/plots/2024/09/23/avail-crawl-protocols.json" height="1200px" >}}

### Errors

{{< plotly json="/plots/2024/09/23/avail-connection-errors-single.json" height="600px" >}}

{{< plotly json="/plots/2024/09/23/avail-crawl-errors-single.json" height="600px" >}}

## Keyspace Density Monitoring

{{< hint info >}}
💡 The latest keyspace density data is available [here](../../keydensity/).
{{< /hint >}}

In Kademlia, every object indexed by the DHT requires a binary identifier. In the libp2p DHT implementation, peers are identified by the digest of `sha256(peer_id)` and CIDs are identified by the digest of `sha256(cid)`. This Kademlia identifier determines the location of an object within the Kademlia XOR keyspace.

The following plots examine the peer distribution within the keyspace, aiding in the identification of potential [Sybil](https://en.wikipedia.org/wiki/Sybil_attack) and eclipse attacks.

### Keyspace population distribution

**Description**: The plot illustrates the number of peers whose Kademlia identifier matches each prefix for all prefixes of a given size, for a given network crawl. Since the density of keyspace regions follows a [Poisson](https://en.wikipedia.org/wiki/Poisson_distribution) distribution, it is expected to observe some regions that are significantly more populated than others.

**How to read the plot:** The selected `depth` indicates the prefix size. There are `2^i` distinct prefixes at depth `i`. The slider at the bottom of the plot enables visualization of the population evolution over time across multiple crawls.

**What to look out for:** The red dashed line represents the expected density per region, corresponding to the number of peers matching a prefix. A bar exceeding the expected density by more than twice suggests that a region of the keyspace might be under an eclipse attack.

{{< plotly json="/plots/2024/09/23/avail-regions-population.json" height="600px" >}}

### Keyspace density distribution

**Description:** As previously mentioned, the keyspace population follows a [Poisson](https://en.wikipedia.org/wiki/Poisson_distribution) distribution, which can make identifying outliers challenging. The plot below counts the number of regions for each population size and facilitates the identification and analysis of outliers. While it is normal for some regions to have populations above the average, the plot enables us to quantify these deviations.

**How to read the plot:** The red dashed line represents the expected number of regions for each population size. Note that the Poisson distribution is more evident at greater depths (longer prefix size), while analyzing data at lower depths provides limited insights. It is recommended to read the plot for depths between 6 and 8.

**What to look out for:** If a bar significantly exceeds its expected value on the right side of the plot, or if an isolated bar appears on the far right, it may indicate a potential eclipse attack, warranting further investigation.

{{< plotly json="/plots/2024/09/23/avail-density-distributions.json" height="600px" >}}

## Stale Node Records

### All Peers

This stacked plot depicts the count of node records stored within each node's routing table and made accessible through the DHT. These node records serve as a mechanism through which nodes discover new remote nodes in the network.

Ensuring the reachability of referenced nodes shared within the network holds paramount importance. The plot delineates the occurrences of reachable and non-reachable (stale) node records. Note that nodes running behind a NAT are counted as unreachable even though they may be online.

For instance, if a node's record is present in the routing tables of 100 other nodes and the node is reachable, the plot will reflect an increase of 100 in the _online_ category.

{{< plotly json="/plots/2024/09/23/avail-stale-records-stacked.json" height="600px" >}}

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions content.en/plots/2024/09/23/avail-agents-overall.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"data": [{"hovertemplate": "Agent: %{x} <br>Count: %{y:,}<br>Percentage: %{text}<br><extra></extra>", "marker": {"color": ["#4c72b0"]}, "text": ["100.0%"], "textposition": "outside", "x": ["avail node"], "y": [391], "type": "bar"}], "layout": {"template": {"data": {"scatter": [{"type": "scatter"}]}}, "xaxis": {"title": {"text": "Agent"}, "tickangle": -45}, "yaxis": {"title": {"text": "Count"}, "tickformat": ","}, "autosize": true, "annotations": [{"font": {"size": 18}, "showarrow": false, "text": "Agent Types", "x": 0.5, "xanchor": "center", "xref": "paper", "y": 1.15, "yanchor": "bottom", "yref": "paper"}, {"font": {"size": 14}, "showarrow": false, "text": "Total Count: 391", "x": 0.5, "xanchor": "center", "xref": "paper", "y": 1.1, "yanchor": "bottom", "yref": "paper"}, {"font": {"size": 10}, "showarrow": false, "text": "Data: week ending 29 Sep 2024. Source: Nebula", "x": 0.99, "xanchor": "right", "xref": "paper", "y": -0.14, "yanchor": "top", "yref": "paper"}]}}
1 change: 1 addition & 0 deletions content.en/plots/2024/09/23/avail-agents-versions.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"data": [{"customdata": ["others", "v1.7.2 0fd1b21757c", "v1.10.0 b514ad4ea43", "v1.11.0 38304bb5126", "v2.1.0 af545459dd0", "v2.1.5 804e23c6cf6", "v2.2.0 a6600ea38c9", "v2.2.0 a6600ea38c9 (validator)", "v2.2.0 fe7e86296d8", "v2.2.0 fe7e86296d8 (validator)"], "hovertemplate": "Version: %{customdata} <br>Count: %{x:,}<br>Percentage: %{text}<br><extra></extra>", "marker": {"color": ["#4c72b0", "#4c72b0", "#4c72b0", "#4c72b0", "#4c72b0", "#4c72b0", "#4c72b0", "#4c72b0", "#4c72b0", "#4c72b0"]}, "name": "avail node", "orientation": "h", "text": ["0.0%", "3.9%", "11.1%", "8.0%", "4.4%", "2.3%", "30.7%", "10.3%", "17.6%", "11.6%"], "textposition": "outside", "visible": true, "x": [0, 15, 43, 31, 17, 9, 119, 40, 68, 45], "y": ["others", "v1.7.2<br>0fd1b21757c", "v1.10.0<br>b514ad4ea43", "v1.11.0<br>38304bb5126", "v2.1.0<br>af545459dd0", "v2.1.5<br>804e23c6cf6", "v2.2.0<br>a6600ea38c9", "v2.2.0<br>a6600ea38c9 (validator)", "v2.2.0<br>fe7e86296d8", "v2.2.0<br>fe7e86296d8 (validator)"], "type": "bar"}], "layout": {"template": {"data": {"scatter": [{"type": "scatter"}]}}, "xaxis": {"title": {"text": "Count"}, "tickformat": ",", "range": [0, 130.9]}, "yaxis": {"title": {"text": "Version"}}, "autosize": true, "showlegend": false, "annotations": [{"font": {"size": 18}, "showarrow": false, "text": "avail node Agent Versions", "x": 0.5, "xanchor": "center", "xref": "paper", "y": 1.15, "yanchor": "bottom", "yref": "paper"}, {"font": {"size": 14}, "showarrow": false, "text": "Total Count: 387", "x": 0.5, "xanchor": "center", "xref": "paper", "y": 1.1, "yanchor": "bottom", "yref": "paper"}, {"font": {"size": 10}, "showarrow": false, "text": "Data: week ending 29 Sep 2024. Source: Nebula", "x": 0.99, "xanchor": "right", "xref": "paper", "y": -0.14, "yanchor": "top", "yref": "paper"}]}}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"data": [{"hovertemplate": "Cloud Provider: %{x}<br>Count: %{y:,}<br>Percentage: %{text}<br><extra></extra>", "text": ["31.0%", "28.1%", "15.7%", "10.5%", "5.2%", "1.8%", "0.8%", "0.7%", "0.7%", "0.6%", "0.5%", "0.5%", "4.1%"], "textposition": "outside", "x": ["Non-Datacenter", "https://www.digitalocean.c", "https://www.hetzner.com/", "https://contabo.de/", "http://www.ovh.com/", "https://www.plusserver.com", "http://www.hoststore.com/", "http://www.inline.de/", "http://www.voxel.net/", "https://www.scaleway.com/", "https://aws.amazon.com/", "https://www.first-colo.net", "others"], "y": [141, 128, 71, 47, 23, 8, 3, 3, 2, 2, 2, 2, 18], "type": "bar"}], "layout": {"template": {"data": {"scatter": [{"type": "scatter"}]}}, "xaxis": {"title": {"text": "Cloud Provider"}, "tickangle": -20}, "yaxis": {"title": {"text": "Count"}, "rangemode": "tozero"}, "annotations": [{"font": {"size": 18}, "showarrow": false, "text": "Cloud Distribution of All Nodes", "x": 0.5, "xanchor": "center", "xref": "paper", "y": 1.15, "yanchor": "bottom", "yref": "paper"}, {"font": {"size": 14}, "showarrow": false, "text": "Total: 456", "x": 0.5, "xanchor": "center", "xref": "paper", "y": 1.1, "yanchor": "bottom", "yref": "paper"}, {"font": {"size": 10}, "showarrow": false, "text": "Data: week ending 29 Sep 2024. Source: Nebula", "x": 0.99, "xanchor": "right", "xref": "paper", "y": -0.14, "yanchor": "top", "yref": "paper"}]}}

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions content.en/plots/2024/09/23/avail-cloud-agents-bars.json

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions content.en/plots/2024/09/23/avail-cloud-agents-lines.json

Large diffs are not rendered by default.

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions content.en/plots/2024/09/23/avail-cloud-rate-agents.json

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Loading

0 comments on commit 4322976

Please sign in to comment.