IRCaBot 2.1.0
GPLv3 © acetone, 2021-2022
#saltr
/2024/01/11
dr|z3d usability feature in the pipes for + users in advanced mode.
dr|z3d you'll be able to toggle tunnel ids on /tunnels if you don't want to see those, and the toggle state will persist via localstorage.
dr|z3d zzz: ever thought about indicating per-tunnel latency on tunnels? i2pd does something like that.
dr|z3d unrelated, you don't need separate markdown.css files for susimail, just add the blockquote class to the existing susimail.css files.
dr|z3d also unrelated, on git.idk.i2p/i2p-hackers/i2p.i2p/-/merge_requests/173/diffs this at first glance looks wrong:
dr|z3d case MessageStatusMessage.STATUS_SEND_FAILURE_LOOPBACK:
dr|z3d return "local loopback denied, set i2cp.disableLoopback=true to test sending to yourself through tunnels";
dr|z3d shouldn't it be "set i2cp.disableLoopback=false ..." ?
zzz I don't think we measure per-tunnel latency
dr|z3d is it worth considering? maybe we can detect failing and or malicious tunnels that way and drop them?
zzz how do you propose to measure?
dr|z3d that's a good question. send a "pulse" packet every so often and see how long it takes to get to the endpoint?
dr|z3d how are you measuring latency, orignal?
zzz what endpoint?
zzz how would the data be used, other than console display, which on its own is pointless?
dr|z3d you'd set a ceiling, and drop tunnels if they exceed that. maybe the ceiling would be derived from the mean latency.
dr|z3d just looking at i2pd's code right now.
zzz by the time you have decent data your 10 minutes is up anyway
dr|z3d they have GetMeanLatency()
dr|z3d also:
dr|z3d /** @brief return true if this tunnel's latency fits in range [lowerbound, upperbound] */
dr|z3d bool LatencyFitsRange(uint64_t lowerbound, uint64_t upperbound) const;
dr|z3d bool LatencyIsKnown() const { return m_Latency > 0; }
dr|z3d bool IsSlow () const { return LatencyIsKnown() && (int)m_Latency > HIGH_LATENCY_PER_HOP*GetNumHops (); }
zzz assuming you can get decent data at all
dr|z3d if it took that long to get a decent read, i2pd wouldn't be doing it.
zzz i don't need code snippets i need a proposal on how to do it
dr|z3d I'm trying to grok what i2pd is doing, it looks like they already have the answer.
zzz and the measurement is at what layer?
dr|z3d i2np?
zzz tunnel tests?
zzz which ofc involve 2 tunnels
zzz so then you need to calculate the mean of all tunnel tests, divide by 2, compare to the mean of all that tunnel's tests, subtract out the mean of each of the paired tunnels you tested with...
zzz something something statistics
zzz or do you allocate 1/6 of the tunnel test time to each peer, then over time you have an avg per-peer latency, and you add up those for a synthetic estimate for the tunnel?
dr|z3d yeah, sounds about right, but orignal is more qualified to illuminate this discussion than me. like I said, i2pd have something that looks functional :)
dr|z3d at the moment they set a static max at 250ms.
dr|z3d which is probably fine on a slow router, but seems a bit high for something faster.
dr|z3d that sounds more accurate, no? it also sounds like we also get per-peer latencies which could help with peer selection?
zzz is that safe to bias selection on latency? or can a peer give you good service to attract your tunnels?
dr|z3d if a peer's giving you good service, great. let's assume that's the default. if a peer stops giving you good tunnels, then the latency should reflect that, no?
zzz depends if you're using latency just to kick slow peers out, or you're picking the least latency for your tunnels
dr|z3d we don't want to reject peers that give reasonable service, or prioritize those that give exceptional service per se, we just want to avoid those that give shitty service.
dr|z3d I'd say a combination of both, with maybe a toggle that determines whether we want lowest latency or not?
zzz whatever. it has to be designed bottom-up, not start with 'we should put this in the console'
dr|z3d I wanted to start a discussion, but sure, a solid proposal would help things along, but maybe i2pd's already done most of the work there for a working implementation.
zzz the two projects have very little in common on profiling
zzz either per-peer or per-tunnel
dr|z3d sure, that's not to say we can't appropriate some of their ideas where they make sense.
dr|z3d and tunnel profiling looks like a good one.
zzz we do measure pt-pt latency in SSU2, but we don't feed that into the profile, and it could be problematic for the reasons above