zzz
0) Hi
eyedeekay
hi
zzz
hi
orignal
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
ok
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?
orignal
yes
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
good
orignal
time to implement for me
zzz
ok
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
orignal
no
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
nad?
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
?
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
orignal
good
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
zzz
ok
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
how?
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
no
orignal
I use common resend timer for all session
zzz
ok
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
orignal
fine
zzz
anything else on 3) ?
orignal
no
zzz
anything else for the meeting ?
orignal
no
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
zzz
?
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?
eyedeekay
yeah
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