IRCaBot 2.1.0
GPLv3 © acetone, 2021-2022
#i2p-dev
/2026/05/07
@eyedeekay
&zzz
+FreefallHeavens
+R4SAS
+RN
+T3s|4
+acetone
+cims
+dr|z3d
+eche|off
+fa
+mareki2p
+nilbog
+orignal
+postman
+psychopuck
+qend-irc2p
+rednode
+snex
+wodencafe
Arch
Danny
Irc2PGuest28384
Irc2PGuest66257
Irc2PGuest75631
Irc2PGuest81267
Onn4l7h
Onn4|7h
Over
Sisyphus_
Sleepy
StormyCloud
T3s|4_
U1F642
Watson
Zapek
aargh4
ahiru
anontor
calamares
dr4wd3
duanin2
i2potus
ice_juice
justaperson
luvme3
mahlay
makoto
marek22k
n2_
not_bob_afk
onon_
pinotto
poriori
profetikla
r00tobo
rapidash
sahil
test7363673
uop23ip
w8rabbit
x74a6
zelgomer
fa Hi all.
fa How can I get my "fa_" account on i2pforum.i2p activated?
dr|z3d wait for eche|off to approve you. make take some time.
fa dr|z3d: thumbup
zzz eyedeekay, you're supporting NAT-PMP in goi2p?
eyedeekay Yes I was/am, any reason why I shouldn't? 99% of the work is in the upstream library
eyedeekay I just glue it all together into the hole-puncher abstraction
eyedeekay Which admittedly had a rocky start getting dialed-in
eyedeekay Like with STUN I decided not to because I didn't want to be reaching out to public STUN servers, figured that was not good, but I couldn't figure anything like that for NAT-PMP
zzz eyedeekay, I was working on it last year, but I got stuck on one thing, wonder how you dealt with it
zzz with NAT-PMP and UPnP fighting over the port
zzz does one have priority over the other, or just fire them both off asynchronously and who ever gets there first wins? or?
eyedeekay Yeah I ran into that too, part of the rocky start I had, I did it a while ago so I'll have to check the specific priority order but yes it's priority-based, if one times out or fails you try the other, it's not asynchronous or anything like that so it's time-consuming which I just did for simplicity sake because I assumed it would be an infrequent operation
eyedeekay IIRC I go UPnP then NAT-PMP
zzz we keep rechecking forever since net conditions change though
zzz also we give UPnP 10 seconds which is a lot
zzz so it's not just a startup thing for us, it's always going
zzz so once you have one working, you don't use the other one until the first one fails?
eyedeekay Yeah that was basically the tradeoff, first one that works wins
zzz I'm worried bc our UPnP state machine is already pretty hairy and this might send it over the edge
zzz seems like you'd want to try NAT-PMP first since it's more secure. That's the whole argument for NAT-PMP in the first place?
eyedeekay Probably true, TBH, I think I did UPnP higher in priority order because I found the UPnP library first, totally just availability heuristic
zzz you have separate enable configs for the two of them?
eyedeekay No actually I don't yet, the primitives are present but not wired into the main config or the cli yet
zzz so they're both always enabled?
eyedeekay Yup, figures out which one or neither entirely from failures and timeouts
eyedeekay Or successes obviously
eyedeekay Both can be disabled at the same time though
zzz how are you getting the IP of the NATPMP device?
eyedeekay I'm using the default gateway, which I get out of the routing table per-platform(so like /proc/net/route on linux, and `route print` on windows), then fall back to *.*.*.1 on the same prefix as the host
zzz ok. I'm parsing /proc/net/route also, but didn't have a windows solution
eyedeekay Yeah I'm picking apart the output of route print on Windows, finding the line with the default gateway in it and picking the element from the line that is the IP of the default gateway
zzz still not sure if it's worth all the trouble
zzz my theory is that these days there's zero devices that support PCP/NATPMP but not UPnP.
zzz the only ones are 15 year old AirPorts
eyedeekay I think that's valid. Coverage didn't really enter into my calculus, I did it because it was there, I could mostly eschew the actual work with an upstream library, and because I felt the time was opportune design-wise
zzz if that's right, then the PCP feature is only for the UPnP haters
zzz and then there's no need to support both at once
zzz the thing about these libs is they aren't free, there's enourmous complexity in connecting the NAT state machine to the router reachability state machine, and dealing with network changes
eyedeekay Yeah I see that. For go-i2p it's pretty cheap because we're trading the ability to deal with network changes efficiently for simplicity right now and banking on being able to improve it in the future
eyedeekay Java I2P has an incumbent system which already does the job
zzz for reference it took me about 3 years to get IPv6 UPnP working well
eyedeekay I have very little idea of "well" right now for this system in particular in go-i2p. It's more like "exists enough to test"
zzz still not sure what to do. I don't remember anybody ever asking for PCP/NATPMP.
eyedeekay Don't overestimate my implementation on this in particular. It's solid and it works, but there's no optimization, little integration with timers, and dubious testing.
zzz not looking for code
zzz I've grabbed the impl from bigly and hvae it hooked in
zzz think we should do it or dont bother?
eyedeekay I think don't bother. Like you said there are probably very few devices that don't support UPnP that do support NAT-PMP. It was fine for go-i2p because I was deciding how I was going to handle hole-punching from the ground-up, nobody's using go-i2p for much yet except as a library, risk is low and manageable. For Java, it's like you said, there's an incumbent system that's pretty hairy inside that works
eyedeekay right now. If there is 0% practical improvement, why break it?
zzz one other argument from the bottomlineit folks, that it's available on mobile/CGNAT
zzz they're claiming 5-15% (additional) coverage over UPnP-only?
zzz I think the whole-up both-at-once is too ambitious. Maybe let ppl config one or the other but not both, for the UPnP haters and the CGNATs
eyedeekay I don't know from coverage, but configuring one or the other, and potentially choosing the default based on whether it's a mobile device, sounds like a reasonable way to keep things from getting to complex
eyedeekay *too complex
eyedeekay Keyboard wearing out
zzz maybe orignal would know if it would help the RU crowd
orignal what's your question?
zzz do RU mobile/CGNAT networks have PCP/NATPMP support (but not UPnP) ?
zzz we don't currently have NATPMP/PCP support, wondering if we should do it
orignal idk, I don't live there
zzz ok, sometimes you know stuff, worth a try, thanks
orignal however I can say that mobile networks are alwasys symmetric NAT
zzz anybody ever asked you guys to support PCP/NATPMP ?
orignal hear it first time
orignal stun server for symmtric nat?