dr|z3d
CRIT […eTimer2 4/4] …til.SimpleTimer2: SimpleTimer2: Timed task net.i2p.router.transport.udp.PeerState2$ACKTimer@5686a7c4 exited unexpectedly, please report
dr|z3d
java.lang.ArrayIndexOutOfBoundsException: Index 11 out of bounds for length 8
dr|z3d
at net.i2p.router.transport.udp.SSU2Bitfield.set(SSU2Bitfield.java:103)
dr|z3d
at net.i2p.router.transport.udp.PacketBuilder2.buildPacket(PacketBuilder2.java:301)
dr|z3d
at net.i2p.router.transport.udp.PacketBuilder2.buildPacket(PacketBuilder2.java:143)
dr|z3d
at net.i2p.router.transport.udp.PacketBuilder2.buildACK(PacketBuilder2.java:346)
dr|z3d
at net.i2p.router.transport.udp.PeerState2$ACKTimer.timeReached(PeerState2.java:782)
dr|z3d
at net.i2p.util.SimpleTimer2$TimedEvent.run2(SimpleTimer2.java:501)
dr|z3d
at net.i2p.util.SimpleTimer2$TimedEvent.run(SimpleTimer2.java:440)
dr|z3d
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
dr|z3d
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
dr|z3d
at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304)
dr|z3d
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
dr|z3d
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
dr|z3d
at java.base/java.lang.Thread.run(Thread.java:833)
orignal
07:41:26@853/debug - SSU2: Block type 12 of size 5
orignal
07:41:26@853/debug - SSU2: Ack
orignal
07:41:26@853/debug - SSU2: Block type 4 of size 1313
orignal
07:41:26@853/debug - SSU2: First fragment
orignal
07:41:26@853/debug - SSU2: Block type 5 of size 60
orignal
07:41:26@853/debug - SSU2: Follow-on fragment
orignal
zzz, why is it?
orignal
so, I receive packet of 1313 + 5 bytes
orignal
and last fragment of 60
orignal
why was it split by two?
orignal
I beleive there is plenty of room
orignal
for send it as signle block
orignal
never mind, because max payload size=1340
orignal
wiht MTU 1420
zzz
thanks dr|z3d thats a new one
dr|z3d
that's on an up-to-date router, zzz.
zzz
ok
dr|z3d
the error occurred 1/2 dozen times in the space of a couple of minutes, then stopped.
orignal
erorr from me
zzz
what?
orignal
it was a question
orignal
if this error came from me
zzz
no, almost certainly not. looks like a synchronization or race issue
zzz
dr|z3d, what's your PeerState2 log level? wondering if you have any nearby logging
dr|z3d
all turned off, zzz
zzz
ok. stumped atm
dr|z3d
I'll enable PeerState2 debug logging to see if we can shed some light. I was keeping an eye on participating throttler, so didn't want to choke up the logs. That issue appears to have passed.
zzz
it's gonna be tough. the best I can do maybe to add more logging to the code if it happens again
dr|z3d
critical level is good, doesn't get lost in the flow then.
dr|z3d
orignal: no idea, didn't have the requisite logging enabled.
zzz
its a headscratcher because I'm not off by 1, I'm off by 4
dr|z3d
oh, and what zzz said.
zzz
dr|z3d, java version?
orignal
i2p+?
dr|z3d
OpenJDK Runtime Environment 18-ea+36-Ubuntu-1
zzz
x86_64?
dr|z3d
yup, 64bit.
dr|z3d
coreisbr Ivy Bridge [Jcpuid version: 3]
dr|z3d
obviously I2P+, orignal :)
eyedeekay
I am not going to make the meeting today
eyedeekay
Best I can tell I've got 6-8 hours left, but I don't know when/how much I took
eyedeekay
Very good quality though
dr|z3d
what you taken, eyedeekay? acid? :)
eyedeekay
Yeah not sure when but I think somewhere between 5-8 of the size doses I used to take in college
zzz
lol how was hope?
eyedeekay
High end of as much as I've ever taken
eyedeekay
Fun, as you might imagine
zzz
you home safe or still on the loose in NYC?
eyedeekay
Spent a lot of time meeting people, volunteered a bit, and at about 1 last night, realized I was high as kite
orignal
what happened?
dr|z3d
sounds like someone enhanced eyedeekay's beer.
eyedeekay
Not sure. I helped clean up and picked up a ton of tiny pieces of cardstock
eyedeekay
Might have done it to myself
zzz
where are you?
orignal
seems in Harlem ))
eyedeekay
I'm in my hotel restaurant getting breakfast
zzz
should we send zlatinb_ over to check on you?
eyedeekay
Nah I'm fine this is not my first rodeo
zzz
got Sav there with you?
eyedeekay
Yeah we're both here
zzz
she got it together or is it a double shitshow?
dr|z3d
positive vibes, zzz. it's not a shitshow, it's a dance in the clouds :)
eyedeekay
She says she's all right too
zzz
ok, if you need anything holler and I'll get zlatinb_ up on signal. have fun
eyedeekay
Yeah I'm well into the groove of it now, just got to be careful in this heat
zzz
found the bug dr|z3d, thanks again
zzz
wasn't the issue, but you might want to update your JRE since you're on a EA
dr|z3d
oh, good that you found the bug. great. re JRE, I'm waiting for the repo to update. this is Ubuntu Kinetic, so I'm a little surprised it isn't already updated.
dr|z3d
oh, or maybe this is the one box I didn't update to kinetic. let's get that in motion.
zzz
debian has 18.0.2, yeah, kinetic has 18.0.1
zzz
36ea is jammy
dr|z3d
I usually give the latest dev release a couple of months to bed in and then update. usually fine.
zzz
sure, jammy just went unsupported a few days ago
zzz
which is why I started looking at the ruby2.7 issue
dr|z3d
jammy unsupported? how so? that's current.
dr|z3d
or you mean wrt ruby?
zzz
oh sorry I meant impish
zzz
21.10
dr|z3d
yeah, right. jammy is LTS afaik.
zzz
gotta move that box to jammy at some point. not a crisis but on the list
dr|z3d
as for ruby, a snap is probably your best bet, then you get to keep it updated without too much effort.
dr|z3d
"snap refresh" or whatever the command is.
zzz
well there's lots of ways to do it, but first have to see if it works
dr|z3d
> Fetched 784 MB in 6s (62.9 MB/s)
dr|z3d
entire upgrade took around 7 minutes. not bad.
zzz
I did it on one box the other day, took 5 hours
dr|z3d
ouch
dr|z3d
interesting error #31:
dr|z3d
…ntcp.EventPumper: Error in the event pumper
dr|z3d
java.lang.NullPointerException
dr|z3d
at net.i2p.router.transport.ntcp.NTCPConnection.sendTermination(NTCPConnection.java:917)
dr|z3d
at net.i2p.router.transport.ntcp.NTCPConnection.sendTerminationAndClose(NTCPConnection.java:884)
dr|z3d
at net.i2p.router.transport.ntcp.EventPumper.run(EventPumper.java:335)
dr|z3d
at java.lang.Thread.run(Thread.java:748)
dr|z3d
at net.i2p.util.I2PThread.run(I2PThread.java:103)
dr|z3d
if (port <= 0 || ip == null)
dr|z3d
throw new IOException("Invalid NTCP address: " + naddr);
dr|z3d
kinetic's still on EA builds. slack fsckers. Private Build 18.0.1-ea (OpenJDK Runtime Environment 18.0.1-ea+10-Ubuntu-1)
dr|z3d
that event pumper npe looks like it killed a good chunk of the router's traffic.
zzz
dunno, at first glance it doesn't look possible
dr|z3d
not seen it before, this much I know.
orignal
is it NTCP or NTCP2?
zzz
NTCP code is long gone
obscuratus
I've run across routers with Port = 0, and no NTCP address. I think QPUV would occasionally show up that way. Let me see if I can find one.
obscuratus
Oh, is this a NTCP v1 error?
obscuratus
If I go to "All Routers with Full Stats", it's easy to do a search for "Port: 0". But it's always the SSU transport with Port=0. But there are several examples where the NTCP transport is published with no IP address.
orignal
what's wrong with transports with port=0?
orignal
It only means it's not reachable
obscuratus
I'm just saying that be a possible explaination for the error dr|z3d is seeing.
obscuratus
An unreachable transport without IP address or port published, making an inbound connection.
zzz
port=0 is not legal
obscuratus
zzz: Fair enough, but I see several examples in the wild.
zzz
I assumed they were buggy i2pd forks, but if stock i2pd is publishing them that's a bug
zzz
java may even ban them, not sure
orignal
no I don't publish port = 0 at least since we started publishing caps 4 and 6
orignal
the problem is
obscuratus
So, when you're firewalled, are you supposed to publish a normal NTCP address, and let the SSU transport be the indicator to the rest of the world that you are firewalled?
orignal
before we didn't have these caps
orignal
and had to pubslish enpoint regardless if reachable or not
orignal
NTCP or NTCP2?
obscuratus
orignal: That question for me?
orignal
yes
obscuratus
NTCP2
orignal
if firewalled it's published with caps 4 or 6 and s only
orignal
if not no caps but valid enpoint and i
orignal
SSU is more complicated
obscuratus
So, in that case (when you are firewalled), you publish NCTP2 without IP address or port. So port=null instead of port=0?
orignal
no port at all
orignal
only caps, s and v
orignal
for NTCP2
obscuratus
orignal: When I see a router with "Port: 0", it's always on the SSU transport. You're saying that i2pd shouldn't do that?
orignal
newer version
orignal
that publish caps with 4 or 6
obscuratus
I'm looking at a router right now (LUB8) that is showing version 0.9.54, that is apparently firewalled. It's IPv4 SSU transport (with caps B4) is showing Port: 17059. It's IPv6 SSU transport (with caps B6) is showing Port: 0
obscuratus
orignal: So not a vanilla i2pd router?
orignal
shouldn't be
orignal
let me check
orignal
it it shown 0 it's bug
zzz
speaking of 0
zzz
0) Hi
zzz
hi
orignal
hi
zzz
what's on the list for today?\
orignal
SSU2 status
zzz
idk and zab are on the road
zzz
status is 1)
zzz
I'll add 2) response to SSU2 termination (mentioned last week)
orignal
where is everybody?
zzz
NYC for HOPE
orignal
nice
zzz
idk said it was good, zab told me it wasn't
zzz
anyway
orignal
NYC or HOPE?
zzz
HOPE
orignal
NYC is never good in my opinion ))
zzz
not in this heat. but zab lived there for years, I don't think he has anything against it
zzz
anyway
zzz
1) SSU2 status
zzz
my turn I guess
orignal
so I have implemented introducers
orignal
yes
zzz
chasing minor bugs still, they're getting more rare
zzz
I thought the remaining troublemaker was p~8- but ai see a couple more
zzz
pretty low frequency though
orignal
I guess after proper MTU
zzz
I'm about to start taking a look at my data phase resending, I think I have some problems
orignal
I need to looks at it too
zzz
maybe MTU or maybe can't handle session confirmed fragmentation at all
orignal
because I need to update Ack block that I don't do
zzz
4 weeks to the release, so I really want to chase the last problems down
zzz
that's it for me, go ahead
orignal
so
orignal
1. I have implemnetd introducers
orignal
do you see any problem with i2pd router publishung SSU2 introducers yet?
zzz
I haven't looked. Does it work on your side?
orignal
will start testing soon
orignal
I cann't fall to "Firewalled" state yet
orignal
unfortunately peer test works too good for SSU2 ))
zzz
lol please do your testing before you ask me to do it :)
orignal
but will try to simulate it
orignal
I don't ask you
orignal
I ask you if you see any problems
orignal
I saw some problems from others and fixed them
zzz
what router hashes are publising introducers, and I'll look
orignal
any of them
orignal
I remeber one started with b5
orignal
sometimes R4SAS's
zzz
ok if you see any let me know
orignal
I'm going to publish mine explicitly
orignal
MNcW
zzz
I have a list of about 40 SSU2 i2pd, don't see any b5
zzz
ok
orignal
I will let you know
orignal
iNmq might publish now
zzz
thanks. any other SSU2 status?
orignal
yes
orignal
I started replacing SSU by SSU2
orignal
did it on 2RRY
orignal
works well so far
zzz
how are you doing on MTU changes/fixes?
orignal
right now every ipv6 address will contain MTU for both SSU and SSU2
zzz
ok. 1500 is default for SSU2, so you don't have to put it in there if 1500
orignal
didn't have time to implement a code for ipv4 mtu detection
orignal
but can I?
zzz
sure, it's fine
zzz
just a few wasted bytes, no big deal
orignal
I think so too
orignal
working on fragmented messages
orignal
to not fill max payload if possible
orignal
but deduct some random bytes
orignal
also implemented reduced number of Ack tanges if need to fit into one message
zzz
nice
orignal
hope to porduce less fragmenetd messages
orignal
but this morning issue
orignal
I'm a little confused
orignal
about 1313 and 60 frgegments
zzz
huh?
orignal
the main problem it was I2NP messages with RouterInfo
orignal
<orignal> 07:41:26@853/debug - SSU2: Block type 12 of size 5
orignal
<orignal> 07:41:26@853/debug - SSU2: Ack
orignal
<orignal> 07:41:26@853/debug - SSU2: Block type 4 of size 1313
orignal
<orignal> 07:41:26@853/debug - SSU2: First fragment
orignal
<orignal> 07:41:26@853/debug - SSU2: Block type 5 of size 60
orignal
<orignal> 07:41:26@853/debug - SSU2: Follow-on fragment
orignal
I mean this one
orignal
the message size was 1373
zzz
I missed that, I was disconnected for a couple hours this morning
orignal
I'm pretty sure it could fit it it was compressed
orignal
I rememebr you said you never send RouterInfo block
orignal
but I2NP messages intead
zzz
right
orignal
maybe time to change it?
zzz
for now
orignal
seconds fragment of 60 bytes for RI
orignal
compression would help
zzz
well, a database store message of a RI is compressed, right? so not too much difference?
orignal
what compression level do you use there?
orignal
as I remeber medium not high
orignal
60 bytes matter
zzz
yeah I think it was 3
orignal
yes, but 9 would produce 60 bytes less easily
zzz
yes, 3
orignal
I'm not sure I evern compress RI in database store
orignal
just no compression
zzz
9 is about 4% smaller and 50% slower than 3 in my tests, but I can't remember what data I tested it on
orignal
anyway, please think about such option
orignal
if might reduce number of packets
zzz
sure
zzz
I have a proposal to reduce compressed RIs by hundreds of bytes, but I don't think we've talked about it
orignal
4% is around 60 for 1300 bytes ))
orignal
about padding?
zzz
yes
orignal
we did talk
zzz
oh yeah, we did, I forgot
orignal
it was zlatin's idea
orignal
well it might work ofc
orignal
a next step
zzz
yeah, we worked on it together
zzz
I have a router out there with it enabled
zzz
anything else on 1) SSU2 status?
orignal
and how much the improvement?
orignal
sec
orignal
I think that's all from my side
zzz
it's like 300 bytes
zzz
ok
zzz
2) SSU2 termination response
orignal
so around 25%?
zzz
we said we'd think about it
orignal
yes, I promised to make this list but didn't have time
zzz
it's a fixed ~300 bytes savings
zzz
no not the termination codes list
orignal
asumme RI size like 1500
zzz
the response to termination: an ack, another termination, or nothing
orignal
oh yes
orignal
tremination protocol
zzz
so we have a code 1: Termination received. I think that's my preference, it's a little easier than an ack for me
orignal
I prefer it too
zzz
because with an ack, I have to remember what ack number I'm looking for
orignal
we send it back to every termination, but 1
orignal
let's do it
zzz
just to review:
zzz
QUIC says wait around for a while after closing. Whatever what you get, send another close
zzz
the problem is "for a while". If you get a 'termination received' you can stop waiting
orignal
I do it already
orignal
if I'm in closing state I send termination again
orignal
as we discussed
zzz
I haven't done any of it yet
zzz
but I think we're in agreement. I'll update the spec and try to code it, lets see how it works
orignal
closing state might be up to 30 seconds
orignal
yes
zzz
one problem is now you have to decrypt the packets you get after closing, right? so you can see if it's a 'termination received' ?
orignal
I decrypt as data packets
zzz
ok. I promise I'll update the spec this week, no promises about coding it though
orignal
but not sure if I actully do it. will check
zzz
anything else on 2) ?
zzz
anything else for the meeting?
orignal
no
orignal
one more thing
orignal
release
zzz
yeah
orignal
what are you going to enable there for SSU2?
zzz
let's put that on the agenda for next week. I have some thoughts but nothing concrete yet. ok?
orignal
fine
zzz
until I know how solid things are, it's hard to make a recommendation
zzz
ok great
orignal
because if I start replacing SSU by SSU2 for everytbody I want to make sure no network split
orignal
e.g. Java router will not be able to reach i2pd
zzz
seems too early for that
orignal
no
orignal
because i2pd's SSU is real shit
orignal
SSU2 is better even now
zzz
ok, let's see how it goes this week
zzz
thanks, happy coding/testing
orignal
obscuratus thank you for pointing to this bug
orignal
will add check for valid host/port
obscuratus
orignal: No problem.
orignal
will commit