Doubling the blob count with Gossipsub v2.0

We re-ran simulations with much lower message sizes. The first 3 charts show the message arrival times with a size of 1kb. As it can be seen here D_announce=0 has significantly lower latency vs D_announce=8. It takes roughly a fourth of the time to reach the whole network compared to D_announce=8 . It does show in the absence of congestion, only pushing is strictly better.

If you look at the next 3 charts, we ran the simulation with progressively larger message sizes from 1kb to 128 kb with a single message broadcasted each time. For D_announce=0 , you can see that message arrival times cluster together until 64kb and 128kb, There is a non-trivial jump when sending out messages with 64 kb and finally a much bigger jump at 128kb indicating congestion. For D_announce=7 and D_announce=8 , at a message size of 128kb the latency is equivalent to that of D_announce=0 . Inferring from these results, at a size of 128kb the network is congested.

For gossipsub, we have long-lived streams with all the peers we are connected to. So there is no need to perform any handshake when sending IANNOUNCE/INEED messages.

Yeah, this is one way we could handle timeouts and progressively make it larger. However waiting for larger timeouts isn’t helpful when the first/smaller one already failed. It would be better to penalize for repeat failures in responding to INEED messages in time as the timeout bounds the worst case latency for a single node in receiving a particular message.

Yeah, we wanted to primarily keep the peer selection logic simple rather than do bandwidth estimation of peers, etc. So each message you just randomly choose D_announce peers to send the announcements to. On the episub simulations having different outcomes, the charts I linked above should explain why. In the absence of any network congestion, you would always have lower latency with an announcement degree of 0. However our main goal was to optimize for larger messages and when the network is congested which is the case now in Ethereum mainnet. There should still some benefit to have a low announcement degree for smaller messages if it is tolerable to have slightly higher latency with a smaller amount of duplicates. We can try with D_announce = 1 , 2 and see how the results are for smaller messages.

Yeah, this would be very helpful for the testing of current and future designs if we can agree on how we want peer selection to be abstracted. For now to keep it straightforward we just have the mesh, since involving non-mesh peers might interfere with IHAVE/IWANT.

The main reason we had it as a separate control message is to delineate the difference of purpose between the two. The former is for non-mesh peers who will send back any requested IWANTs periodically but not on the critical or fast path. For announcements, these need to be responded back to immediately and within the defined timeout. You could have it as IHAVE/IWANT messgaes but then gossip routers will need to modify how how their current IHAVE/IWANT pipelines to handle this new usecase.

1 Like