IRCaBot 2.1.0
GPLv3 © acetone, 2021-2022
#ls2
/2023/04/24
eyedeekay Hi everyone, welcome to the LS2 meeting for today
eyedeekay hi orignal
orignal where is drozd?
eyedeekay I don't know, let's give him a moment
orignal so what we discuss today?
eyedeekay I want to revisit R, U, and H caps
orignal go ahead
eyedeekay Do you have any topics to add before I begin?
orignal not too much
orignal I have fixed few minor issue but nothing to release soon
eyedeekay Ack, I saw the 397 thing
eyedeekay 1. R/U/H
orignal what is 397?
eyedeekay Issue number on our gitlab for one of the things
eyedeekay First things first
orignal I also started publisheing encyrpted RouterInfo
orignal and can explain why
orignal probably 2.
eyedeekay Perfect thanks
orignal so let's start wtih R/U
eyedeekay 2 main points
eyedeekay We do have a definition of reachable that we should all be using.
orignal that's what was my question to grandpa
eyedeekay Reachable as published is when we have at least one transport reachable on at least one IP address, whether it is NTCP2 or SSU2, and whether it is IPv4 or IPv6
orignal he said that reachable means by ANY transport
eyedeekay One transport, one IP is enough to mark a router as reachable
orignal in i2pd however I define reachable by ipv4
orignal or if it's ipv6 only
orignal so if I see firewalled ipv4 and OK for ipv6 I never set R
eyedeekay That may be close enough, but the definition I arrived at by reading and asking, it's any transport, any IP when publishing
orignal yes but that definitly is not usable practically
orignal makes R flag useless
eyedeekay Why do you think that?
orignal you see XfR for example
orignal but ipv4 is firewalled there
orignal would you consider it as a FF?
orignal definitly not
orignal although caps look good
eyedeekay I would decline to use it as a floodfill if there were routers publishing a 4 address I knew I could reach
eyedeekay But in principle I don't see it as tenable to disuse IPv6 only routers. Maybe it's OK for now
orignal FF must be recahble by ipv4
orignal what's with ipv6-only routers?
orignal they are good but can't be FF, OBEP or IBGW
orignal but my question is
orignal what are you going to use R for?
orignal based on your difenintion
eyedeekay It's not what I am going to use R for, it's what we already use R for, turns out, checks for R are spread out all over the code including in places I don't fully understand
orignal so do you sauggest to publish R evern for ygg-only routers?
orignal technically they are R
eyedeekay It looks like it's used for optimizing the way we select routers from the NetDB mostly but I can't be totally sure in all cases
eyedeekay our usage of U is a little clearer, and H is abundantly clear, but R is much more obscure
orignal then in which case we publish U?
dr|z3d sorry, late to the party.
orignal we are dicussing R/U
dr|z3d hi orginal, hi eyedeekay
eyedeekay Yes, for now I think you should. Clients who lack yggdrasil connectivity should figure it out for themselves
orignal great, will change
eyedeekay U should only be published if you have no IP addresses to listen on
eyedeekay Hi dr| z3d
orignal now, when we publish U?
dr|z3d yeah, U. I use U to determine whether or not a floodfill is good or marzipan dildo, orignal
eyedeekay "U" is published with either no IPs **or** no transports
eyedeekay H is not published at all anymore, instead the equivalent of H is to publish NTCP2 and SSU2 with no IP addresses, so it's AFAICT identical to U
dr|z3d I'm also using U to determine whether or not to serve transit requests to older, slower routers.
dr|z3d skimming the backlog, it seems you assumed R/U to mean reachable/unreachable to the router reading the cap, orignal?
orignal no I don't use there caps at all
orignal that's why I'm asking
dr|z3d I think the importance of R/U is knowing whether the router in question is directly reachable by other routers, regardless of whether or not our router can reach it.
eyedeekay ^ that, and it seems to be used at times to optimize peer selection
eyedeekay That's everything I had for 1, unless we have more orignal do you want to proceed with 2?
orignal but how it can be used?
orignal then 2
orignal why we need to publush encrypted RI though a tunnel
dr|z3d if a router is publishing U, then we know it's firewalled/natted.
dr|z3d if it's publishing R, then it's reachable by _some_ other routers.
dr|z3d so we can treat R and U differently.
dr|z3d U might as well == degraded performance, and we can avoid those routers for client tunnels.
orignal then why do we need both R and U?
dr|z3d it's also possible to deny service to older U cap routers entirely. LU? not current. no dice. etc.
orignal U = not R
orignal I mean if no R it means U
orignal why do we need two codes?
dr|z3d R only becomes active when the router's bootstrapped.
dr|z3d so there may be a small window where the router is neither R nor U.
eyedeekay You know that's a worthwhile point. I wonder if we can assume U when not R, maybe we can.
eyedeekay That's going to take some homework on my part, maybe we don't. Can't give you a good answer today
eyedeekay But I will look into it
dr|z3d sure, valid. if R/U is binary, then we only need U. or R.
dr|z3d might be worth -m'ing the channel, eyedeekay, just in case there are bystanders who have something to add :)
eyedeekay Thanks dr|z3d
eyedeekay Anybody else on the channel?
eyedeekay Also feel free to message me for voice
obscuratus hi, or course.
dr|z3d usual zzz practice, np. just noticed xeiaso commenting in #saltr.
xeiaso This issues strikes me as bikeshedding.
dr|z3d it's not bikeshedding, it's clarification of something orignal's not certain is required. refinement.
xeiaso i2pd doesn't use the flags, R routers are still profiled.
orignal we only publuish R and U for Java
eyedeekay According to the spec, clients need to be able to handle missing caps regardless, which I gather is i2pd's primary method of determining these specific capabilities
orignal we calculate it based on transports
eyedeekay Regardless, Java I2P does make use of them and will make use of them in similar ways for the forseeable future
orignal I use a bitmask intenally
eyedeekay I would prefer that i2pd continue to publish them until we know better
orignal no problem
orignal as we agreed I publish R if there an IP addresses amoung transports
eyedeekay OK how about 2: Encrypted RI's
eyedeekay orignal go ahead
orignal so if we publish unecrypted RI through a tunnel OBEP can catch it and send rerple back
orignal according to the instruction
orignal I did it in i2pd unintentionally
orignal but an advesary can do it intenitonally
orignal e.g. you publish your RI and get confoirmation back
orignal but it never reaches that FF
orignal that's why we need to encrypt it
eyedeekay So it can prevent you from publishing an RI? That's no good. Thanks for spotting it
eyedeekay So how do you encrypt the RI?
xeiaso What about lookups? Can't the OBEP fake a reply for an unencrypted lookup?
orignal you are supposed to encrypt it already in Java
orignal gradpa did it long time ago but couldn't expalin a reason
orignal beside "better to encrypt data going through OBEP/IBGW"
orignal but now I see a real reson
orignal and implemented in i2pd
eyedeekay OK good
orignal xeiaso lookup of what?
xeiaso netdb lookup
dr|z3d orignal: is it interoperable with java?
orignal lookups for LS are always encrypted
orignal dr|z3d encryption?
dr|z3d yeah, RI encryption.
dr|z3d I think we already do in most cases unless the router in question is slow perf.
orignal while RI lookups usually are being sent directly
orignal but yes good point
dr|z3d but details are a bit fuzzy right now.
orignal I will check
orignal RI encryption is the same as for LS
orignal just ECIES using flodfill's public key
orignal slow perf for what?
orignal for ECIES ecryption?
orignal it's just single x25519
orignal unlike ElGamal days
dr|z3d slow perf being arm, android etc, but as I mentioned, details are a bit fuzzy. we have an isSlow() flag.
orignal probably lookups through tunnels should be also encrypted as xeiaso mentioned
orignal xeiaso also while you are here
orignal you asked what whould happen if tunnel builc comes down though a tunnel
orignal basically nothing unless they know your RI already
orignal and can encryopt a record just for you
xeiaso right. but RIs are public and you can scrape the netdb for them
orignal but yes there is non-zero posiibility of such attack, so it should dropped
orignal see my point
orignal you see and LS and trying to indenfyn it's router
orignal but sending tunnel build message
orignal though one of IB
orignal but you need to know router already for doing it
orignal e.g. you can't find a router but you can't only confirm if that's the router you suspect where LS is
xeiaso with enough tries it's the same thing
orignal not really because you never have whole ntedb
orignal but better to drop it anyway
xeiaso why wouldn't an attacker have the whole netdb? stats.i2p used to collect RIs
eyedeekay I would challenge the idea that nobody ever has the whole NetDB, somebody with a little time and money can probably get a pretty good picture of a contemporary netDB, they might not have all of it all the time
eyedeekay But they can have a lot of it, maybe as near as makes no matter
orignal because netdb keeps changing all the time
orignal eyedeekay as I said I agree that there is a possibility
orignal and we should avoid it
xeiaso key rotations happen every how long? that's how long a RI would be useful for.
orignal nodays we can't exlude any scenario
eyedeekay Yeah better to be safe
orignal because attach re real
xeiaso and an attacker can try RIs as they come across them
orignal *attacks are real
orignal and we must be prepared for any possibility
dr|z3d "abundance of caution"
eyedeekay Agreed, better to drop before the possibility of an attack
xeiaso drop before the attack could succeed. the attack is real.
orignal also TunnelGateway
orignal DatabseStore is more complicated
orignal because it contains reply instructions
obscuratus Let me make sure I got this straight. RI and LS in an encrypted Garlic Message are OK, but regular unencrypted I2NP RI and LS should be dropped?
orignal depends on how they received
orignal if you receive it down a tunnel
orignal you should drop reply instruction
orignal you can't just drop DatabaseStore because it might be reponse to your lookup
xeiaso so uh canon i2p should drop weird inbound tunnel packets too
eyedeekay Yes it looks like it
eyedeekay We may need to study the impact it has first
eyedeekay But yes
eyedeekay Anything else for 2/2.5?
eyedeekay All right, good meeting everyone, thanks very much for coming. See you around IRC.
eyedeekay Just FYI, I will be offline Thursday night and most of Friday so I can go meet with my the install technician from my ISP
RN \o/
dr|z3d you can toggle +m now eyedeekay :)
dr|z3d out of an abundance of caution :)
xeiaso unless he's already afk... :)
dr|z3d *thumbs up* RN
RN :)
RN hey, got a ? for you
RN you said a while ago, IIRC that it was easy to switch plus from redirecting to https for the console?
RN I'm not finding in my notes or in the config pages
RN I tried removing the "-s 7667" part but that didn't work
RN removing from clients
RN now HE went afk.
eyedeekay I'm back, just took out the trash
dr|z3d the config is listed on /help/advancedsettings
RN thanks
dr|z3d routerconsole.redirectToHTTPS={true|false}
RN so if I leave the -s the https will still work, just not forced right?
dr|z3d correct.
dr|z3d I think when you're modding the listening ports, a router restart is required.
RN perfect
dr|z3d that config I don't think requires a restart, however.
RN that was what I feared... but if turning off the redirect affects jsonrpc too then I should be good