@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
ok
zzz
anybody ever asked you guys to support PCP/NATPMP ?
orignal
hear it first time
orignal
stun server for symmtric nat?