You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Considering js-libp2p as the transport layer for a peer-to-peer app running on a personal computer, and how users expect to configure p2p apps like bittorrent.
High - The main functionality of the application does not work, API breakage, repo format breakage, etc.
Medium - A non-essential functionality does not work, performance issues, etc.
Description:
Most peer-to-peer apps are run on personal computers instead of servers. Consider Bittorrent clients like qbittorrent, utorrent, vuze, etc.
These allow users to change the address, port, and upnp settings while the application is running.
Both autonat and upnp-nat detect a nodes public ip, but neither update the announce addresses in addressManager or candidates used by autonat.
This means an application using js-libp2p must detect these through other means or manage a restart of libp2p.
autonat detects them from peers and updates addressManager's observedAddrs, but it doesn't appear to update the candidates with the new IP address.
Maybe I'm missing something but I don't see a way to use this information to reconfigure the js-libp2p other than to:
start it with a known incomplete config
add a timer to let these async processes complete (60s timeout for upnp-nat)
interrogate the libp2p client using undeclared interfaces to get addressManager
stop the client and reconfigure listen addresses and restart.
The statically configured listen addresses are already templates 0.0.0.0 and port 0 are replaced with local interfaces. It would be great if libp2p could do this with announce addresses as well.
What I'd like is to configure libp2p with these options:
When autoNAT observes an externalIP, it calls addressManager.autoAnnounce(ip).
addressManager iterates transports to create addresses. These are then verified by autoNAT.
When uPnPNAT observes an externalIP/port it calls addressManager.autoAnnounce(ip, port)
addressManager iterates transports to create addresses. These are then verified by autoNAT.
If addressManager remembers it's announced IP's, it could also do a port change with addressManager.autoAnnounce(undefined, port)
This would be a large change and may or may not be wanted.
Steps to reproduce the error:
Look at how other peer-to-peer applications configure their networking
MichaelJCole
changed the title
autonat and upnp-nat both detect external IP address, but neither updates candidates. libp2p addresses are statically declared requiring a restart and restart management.
autonat and upnp-nat both detect external IP address, but neither updates announced addresses.
Mar 27, 2024
Version:
├── @libp2p/autonat@1.0.13
├── @libp2p/upnp-nat@1.0.14
├── libp2p@1.3.0
Platform:
linux
Subsystem:
addressManager, AutoNAT, and UPNP.
Severity:
Considering js-libp2p as the transport layer for a peer-to-peer app running on a personal computer, and how users expect to configure p2p apps like bittorrent.
High - The main functionality of the application does not work, API breakage, repo format breakage, etc.
Medium - A non-essential functionality does not work, performance issues, etc.
Description:
Most peer-to-peer apps are run on personal computers instead of servers. Consider Bittorrent clients like qbittorrent, utorrent, vuze, etc.
These allow users to change the address, port, and upnp settings while the application is running.
Both autonat and upnp-nat detect a nodes public ip, but neither update the announce addresses in addressManager or candidates used by autonat.
This means an application using js-libp2p must detect these through other means or manage a restart of libp2p.
autonat detects them from peers and updates addressManager's observedAddrs, but it doesn't appear to update the candidates with the new IP address.
upnp-nat gets client.externaIp() and updates observed addrs but my client's
libp2p.getMultiaddrs()
never update.Maybe I'm missing something but I don't see a way to use this information to reconfigure the js-libp2p other than to:
The statically configured listen addresses are already templates 0.0.0.0 and port 0 are replaced with local interfaces. It would be great if libp2p could do this with announce addresses as well.
What I'd like is to configure libp2p with these options:
When autoNAT observes an externalIP, it calls
addressManager.autoAnnounce(ip)
.addressManager iterates transports to create addresses. These are then verified by autoNAT.
When uPnPNAT observes an externalIP/port it calls
addressManager.autoAnnounce(ip, port)
addressManager iterates transports to create addresses. These are then verified by autoNAT.
If addressManager remembers it's announced IP's, it could also do a port change with
addressManager.autoAnnounce(undefined, port)
This would be a large change and may or may not be wanted.
Steps to reproduce the error:
Look at how other peer-to-peer applications configure their networking
https://vpn.ac/images/tutorials/socks5/qbittorrent1.png
https://www.bolehvpn.net/images/utorrent1.jpg
https://imgur.com/MQ4zkcA
The text was updated successfully, but these errors were encountered: