IRCaBot 2.1.0
GPLv3 © acetone, 2021-2022
#ls2
/2022/08/29
zzz 0) Hi
zzz what's on the list for today?
eyedeekay release, go-i2p
orignal release status
zzz those are two separate things eyedeekay ?
eyedeekay Yes 2 separate topics
zzz ok 1) is release; 2) is go-i2p
zzz I;ll add 3) ack immediate flag
zzz anything else?
eyedeekay Nothing else on my list
zzz 1) release status
zzz about 35% of net has updated
zzz by my count, about 0.35% each of i2pd and java have SSU2 enabled, for about 0.7% of the net total
orignal I don't see any major issues so far
zzz yeah
orignal and SSU2 works pretty well
zzz I fixed a bug where I was exceeding the MTU by up to 3 bytes. Should have caught it before the release but I overlooked the log message
zzz but I don't think it happens very often in practice, so not great but probably not much effect
orignal I tested on SSU2 only router
orignal tried to download big files
zzz how did it go?
orignal go what?
zzz did downloading big files work?
zzz nice
orignal downloads as fast as on a regulaer router
orignal e.g. SSU2 is not a bottle neck
zzz I'll keep my eye out for more bugs, but so far so good
orignal also I tried oppoiste
orignal with a server tunnel on it
orignal I doubt it can be faster than NTCP2 however
orignal just because you have to encrypt packet by packet
zzz any other info to add in 1) release status ?
orignal and I need to implement path chal;lenge
orignal as I said no problems
zzz oh yeah, I checked mine in, I've seen it work at least a couple times
orignal time to implement for me
orignal to keep session with new IP/port
zzz yup. not a lot of port-hoppers but boy some of them really like to change port a lot
orignal people see Symmetric NAT error often
zzz any other info to add in 1) release status ?
orignal I think it's modern trend for mobile networks
zzz 2) go-i2p
orignal so, I plan to replce SSU by SSU2 for the next release
orignal dfinitly
zzz sounds good
zzz 2) go-i2p
eyedeekay1 Oh I've still got Windows and Language Stats if you're interested
eyedeekay1 I've still got Windows and Language Stats if you're interested
zzz we can do language stuff offline
zzz or out-of-meeting anyway
zzz 2) go-i2p
eyedeekay1 go-i2p took an unexpected turn back into application world this week, not complaining because a lot of it really needed to happen
eyedeekay1 go-i2p already has an i2ptunnel(that it can't use yet) called "sam-forwarder" which also sort of forms the basis of a bunch of other applications
eyedeekay1 it's the thing that publicly lists the webIRC client in BRB if you choose to share it, it's the thing that forwards the torrent tracker to I2P in samtracker, eephttpd which is... a long story... but anything you would use i2ptunnel for sam-forwarder can be used for too and I use it a lot.
eyedeekay1 And as I said, this forms the basis of something of an ecosystem of applications, one which I've been badly in the weeds on.
eyedeekay1 So an update to sam-forwarder(which resulted in performance and reliability improvements) became the starting point for digging myself out of those weeds
eyedeekay1 sam-forwarder got 2 releases this week, which also entails updating the family tree of software that uses itDuring this process, I'm taking the opportunity to make lists of the software related to sam-forwarder and actually explain how each piece relates a little better, and identify which ones I want to maintain and which ones I want to retire(in a public status update)
eyedeekay1 It's also an opportunity to clean up the absolute mess that is my web site and lessen the extent to which my existing projects weigh me down, and when go-i2p is ready, sam-forwarder and the rest of the Go ecosystem will already be there for it to use
eyedeekay1 I didn't get back into transports until yesterday morning unfortunately, where in order to test I'm just manually constructing routerInfos and routerIdentities instead of trying to read them from a stream or a file or something
eyedeekay1 I have noise-only listeners and connections being established in this way on the same machine
eyedeekay1 So I'm going to write the godoc and check that in today or tomorrow
eyedeekay1 Then I'm on track to try and add the pre-processing and post-processing steps for NTCP2 obfuscation, which I think I can do right on top of
eyedeekay1 the noise transport instead of doing it all in a different struct, which would be very nice if I'm right
eyedeekay1 EOT go-i2p
zzz so you have handshake working in noise (without i2p mods) ?
eyedeekay1 Yeah noise-only, completely unmodified
eyedeekay1 Pretty unimpressive but it's a start
zzz great
zzz anything else on 2) go-i2p ?
eyedeekay1 Nothing else
zzz 3) ack immediate flag for ssu2
zzz so I've been teasing this for a couple of months
zzz that we need something like this, like we have in streaming
zzz to ask for an "immediate" ack
zzz in quotes because our implementation is a delay, but very short, a few ms
zzz so I finally coded and tested it
zzz compared to without
zzz and on testnet with a 20ms RTT, I get a 34% speedup
orignal do you have some flag like in streaming or what?
zzz with a 50ms RTT, only 5% speedup, within the margin of error
zzz in streaming it's delayrequested=0
zzz basically you set it when your send window is almost full
orignal so what will be in SSU2
orignal because I always ack immediate now
zzz I picked a bit in the flags part of the header
orignal ofc not after every single packet
zzz header[13] & 0x01
zzz we have 24 unused bits of flags
orignal I know
orignal but please tell me
zzz seems like a waste to make it a block, that would be 3 bytes
zzz flags bit is "free"
orignal why do you even need to send ack with delay?
zzz delayed ack is much more efficient, only ack once for a burst of packets
orignal I do it without delay
orignal e.g. one ack for burst of packets
orignal it makes sense for streaming
orignal but for tranports I doubt
zzz my code doesn't know about "bursts", it just waits a little while before sending an ack
orignal because it's basically fucking TCP_QUICKACK
orignal I guess I can ignore this flag for now
orignal for receiving
orignal and set it for sending
orignal in last packet
orignal right?
zzz sure, acks are much "cheaper" in SSU2 than in streaming
orignal did I tell about TCP_QUICKACK?
zzz but you still don't want to send 64 acks after receiving 64 packets
zzz sure
orignal as I said I send only one
zzz in streaming we send it for every packet after the send window is >= 2/3 full
zzz so that's the way I did it for now in ssu2 for the test
orignal while TCP_QUICKACK causes major problems
zzz yeah I think you talked about quickack before
orignal my point is, we should start away from it
orignal to avoid future problens
orignal anyway I will start setting this flag for last packet I send in one batch
orignal also another thing
zzz ssu2 is just like streaming, in that the receiver doesn't "know" what the sender's send window is. so the immediate ack flag helps fix this
orignal what if you have thousands of SSU2 sessions
orignal you will have to set this timer for each of thme
orignal how many file descriptiors would you need?
zzz sure, but only a small % have a delayed ack at any one time
zzz timers don't use file descriptors in java
orignal please explain
orignal you receive a single packet
orignal you set timer
orignal and when it expires you send ack
zzz right
orignal and you do it for every receiving
orignal for me it's huge overhead
zzz my median idle time (since last received packet) is 37 seconds
zzz my median timer delay is 12 ms
orignal we can't rlay on it
orignal we should assume contrnious stream of data
zzz don't you already have a per-session retransmission timer?
orignal I would say 10 packets per millisecond
orignal I use common resend timer for all session
orignal I check if it's time for each session and do it
orignal it's like every 200 ms of so
zzz anyway, my recommendation is that we add support for an ack-immediate flag. how to implement efficiently is up to you. I've found it provides a substantial speedup
orignal and I can reduce up to 10 ms if necessary
orignal as I said I will do for sending to let you know if I'm done with sending
zzz ok great. I'll add it to the spec and let you know when it's updated, thanks
zzz anything else on 3) ?
zzz anything else for the meeting ?
zzz that's it then, thanks everybody
zzz eyedeekay, what do you have for language stats?
zzz and what are "Windows" stats?
eyedeekay I don't have windows stats, just a report on when/what/why of the release
eyedeekay But it's pretty much all in the blog
zzz blog? why a blog?
eyedeekay I did a release blog for the easy-install bundle like always
eyedeekay News too
zzz where?
zzz I'm lost
eyedeekay Onhttps://geti2p.net/en/blog/post/2022/08/28/easy_install_bundle_1.9.0
eyedeekay And in the news su3 for the Windows easy-install update
zzz I was looking for user counts by language, extracted from eche's news server, to send to the loc. lab... is that what we're talking about?
eyedeekay I had 3 notes sections in my notes about release this week, Android, Windows, and Language Stats
eyedeekay Right now I'm talking about Windows, language stats was a separate section
zzz I don't see any stats in that blog post
zzz and I don't know why we would put stats in a blog post
eyedeekay I didn't put the language stats in the blog post, the blog post is just about Windows
zzz so I'm even more lost
zzz do you have language stats?
eyedeekay Yes I started collating them this morning when we reached 70k requests since the last update
zzz it's in a separate section of the blog?
eyedeekay No just my notes, I usually come to the meeting with 50 or so lines of typewritten notes on what I've done this week
zzz ok. becoming less lost :)
eyedeekay Just to make sure I don't miss anything
zzz so where might you have the stats?
eyedeekay Well I can share them here or make a private repo and gitlab and give you access
eyedeekay Or just make it public, depending on how we want to handle it
zzz what is it just a CSV or something
eyedeekay Right now it's logs that I've grepped for supported languages in, separated into text files by language, and counted with nl
zzz why don't you just email it to me and we'll go from there
eyedeekay No CSV yet, I started it this morning when request count hit 70k, which is about the average network size reported on stats
zzz it's both languages and countries, right?
zzz we may need to merge the countries back to just languages
zzz and I want to add a column for translation %
zzz somehow
zzz so we can make some sort of score of most-needed translations
eyedeekay I'm going to analyze totals and proportions
zzz like for spanish, we don't need 52 rows one for each country, i don't think
eyedeekay I'll make it digestable
zzz ok, but there may be some languages where country is important too. not sure how to handle. spend some time on it if you want, or just send me what you have if you don't
eyedeekay I'm going to try and make it a useful overview of the languages and spend an hour or two on it, I'll email that to you tonight
zzz super, thanks
zzz spec updated with immediate-ack flag info, please review