IRCaBot 2.1.0
GPLv3 © acetone, 2021-2022
#ls2
/2022/03/18
zzz a few hundred lines of peer test state machine before breakfast...
zzz and the reward is donuts
zzz zlatinb, you up? :)
zlatinb yes hello
zzz need some help with SSU delayed acks
zzz some background:
zzz currently we delay an ack by min(rtt/2, 150) ms
zzz we changed that from max(...) last fall
zzz the max(rtt/2, something) where something varied 100, 150, 200 - dates back to jrandom
zzz in streaming, the delayed ack is min(rtt/8, 120)
zzz my theory is that min(rtt/2, something) is unstable, i.e. the RTT will constantly increase - for any reasonable "real RTT"
zzz and I suspect that rtt/8 will be stable
zzz I see some evidence that the more the traffic, the higher the RTT
zzz but I'm having trouble with the math to prove my theory
zzz eot
zlatinb hmm why would /2 be unstable but /8 be stable? It should be just as unstable except 4 times less
zzz measured RTT = "true RTT" + (delay added by the other guy, which is min(rtt measured by the other guy, 150))
zlatinb right, it becomes a differential equation I think
zzz I don't know the answer to your question, that's where I'm stuck
zlatinb the first step I suggest is to plot rtt over time in a testnet with a big eepget over 0-hop ssu tunnel
zlatinb if it indeed grows then we have a problem
zzz in the console you can sort by RTT and then eyeball the rx/tx or uptime numbers
zlatinb well the min(150) does cap the growth so it's not a runaway situation
zzz can't remember if there's related RFC guidance. will look
zlatinb if there were we would have applied it
zlatinb we've read through the RFCs a bazillion times by now lol
zlatinb the max->min change definitely had a huge impact on observed RTTs in the console
zlatinb intuitively I think you're right - having rtt in the term does result in rtt growth
zzz right, it's not insanely unstable... my max RTT is 2154 ms right now
zlatinb the min(150) should temper the growth significantly
zzz I have a median RTT of about 160 ms
zzz yeah, maybe it's runaway but only up to a point
zlatinb that is to be answered by a proper plot, which I may do over the weekend
zlatinb then we can start thinking of mitigation if it's sufficiently bad
zzz it's a one-liner change to adjust the denominator, it's at PeerState.java line 2300
zlatinb /2 -> /8 will only slow down the growth
zlatinb just like adjusting the min(C) constant will only cap it at a different level
zlatinb OR maybe it doesn't cap it at a level but at a growth rate
zlatinb I have to go afk for a while now, but will try to set up the testnet with the necessary logging to produce a plot over time.
zlatinb With constant delay in the testnet rtt should be constant, if it isn't then we have growth
zzz ok, thanks, hurting my brain a little, that's why I called for help :) good night