Result Summary

<aside> 💡

The table below provides a quick validation summary of the main experiment results before going through the detailed setup and scenarios.

</aside>

Feature/Experiment Status Summary
Delivery delay regression ✅ Validated No obvious regression observed with QUIC or YAMUX.
Priority queue behavior ✅ Validated Medium/Low queues drop on overflow; High queue overflow disconnects peers.
Control traffic reliability ✅ Validated High-priority control traffic remains active while Low queue is under pressure.
Slow peer penalty ✅ Validated Penalty is applied on drops and decays after traffic stops.
Parameter sensitivity ✅ Validated decay = 0.2 looks safer for bursts; decay = 0.9 looks more aggressive.
Score impact with weight -0.05 ✅ Validated Recoverable bursts cause only temporary score disturbance.
Uplink-limited sender behavior ⚠️ Issue found Sender-side uplink bottlenecks can falsely penalize healthy remote peers.

Context

This page presents the experiment scenarios and results for testing the new priority queue features introduced.

The tested PR is:

https://github.com/vacp2p/nim-libp2p/pull/2429

The main feature to evaluate is the new outbound PubSub priority queue system. With this change, outbound PubSub traffic is split into three priority queues:

Queue Traffic type Expected behavior
High priority Control messages and subscriptions If the queue overflows, the peer is disconnected
Medium priority Local publishes If the queue overflows, messages are dropped
Low priority Relayed messages and IWANT-response traffic If the queue overflows, messages are dropped

A slowPeerPenalty mechanism is also added for peers that repeatedly overflow Medium or Low queues. This penalty can eventually lead to pruning, depending on the value of slowPeerPenaltyWeight, because this parameter controls how much the penalty affects the global peer score.

The related parameters are important for interpreting the results:

Parameter Role
slowPeerPenaltyWeight Controls how strongly the slow peer penalty affects the global peer score
slowPeerPenaltyThreshold Defines the threshold after which the penalty starts affecting the score
slowPeerPenaltyDecay Controls how quickly the penalty is reduced over time

In other words, the penalty does not affect the global score before it passes slowPeerPenaltyThreshold. Once it passes the threshold, the impact on the score depends on slowPeerPenaltyWeight. Then, over time, slowPeerPenaltyDecay controls how fast the accumulated penalty is removed.

With that in mind, and based on the validation request, the main objectives of these experiments are to:

<aside> 💡

For the purpose of these tests, a new test node and a new publisher were added.

The code and Dockerfiles are available here: https://github.com/vacp2p/dst-libp2p-test-node/tree/Mamoutou/gossip_queues