linuxdcpp-team team mailing list archive
-
linuxdcpp-team team
-
Mailing list archive
-
Message #06927
[Bug 1185436] [NEW] feature: p2p connection between two passive clients
Public bug reported:
There is a possibility to implement a direct p2p connection between two
passive clients, by utilizing the same technique that Skype uses for
VoIP calls, named "UDP hole punching" and is explained in detail here:
http://en.wikipedia.org/wiki/UDP_hole_punching
There is a more complicated "TCP hole punching", but UDP version is much
much easier to implement. It would be interesting to implement some kind
of transmission control over udp to achieve this functionality, which
would really make p2p software like dc++ really cool and functional out-
of-the-box.
Short explanation how this could be implemented. Assume two passive clients A and B want to connect to each others to share files:
1. client A binds its udp socket to local_port_A and sends a message, through the hub, to client B about that port number
2. client B receives the message, sent in step 1, and binds its udp socket to local_port_B and sends the udp packet to client A directly to his ip address and port local_port_A
3. after client A receives the first udp packet on its local_port_A it will see the remote port (local_port_B) from which the client B has sent the udp packet and from now on they can communicate normally, without firewall issues
The only thing to really implement here would be the transmission
control which would make sure no packets are being lost and if any
packet is lost, to resend it again. That's all.
** Affects: dcplusplus
Importance: Undecided
Status: New
--
You received this bug notification because you are a member of
Dcplusplus-team, which is subscribed to DC++.
https://bugs.launchpad.net/bugs/1185436
Title:
feature: p2p connection between two passive clients
Status in DC++:
New
Bug description:
There is a possibility to implement a direct p2p connection between
two passive clients, by utilizing the same technique that Skype uses
for VoIP calls, named "UDP hole punching" and is explained in detail
here: http://en.wikipedia.org/wiki/UDP_hole_punching
There is a more complicated "TCP hole punching", but UDP version is
much much easier to implement. It would be interesting to implement
some kind of transmission control over udp to achieve this
functionality, which would really make p2p software like dc++ really
cool and functional out-of-the-box.
Short explanation how this could be implemented. Assume two passive clients A and B want to connect to each others to share files:
1. client A binds its udp socket to local_port_A and sends a message, through the hub, to client B about that port number
2. client B receives the message, sent in step 1, and binds its udp socket to local_port_B and sends the udp packet to client A directly to his ip address and port local_port_A
3. after client A receives the first udp packet on its local_port_A it will see the remote port (local_port_B) from which the client B has sent the udp packet and from now on they can communicate normally, without firewall issues
The only thing to really implement here would be the transmission
control which would make sure no packets are being lost and if any
packet is lost, to resend it again. That's all.
To manage notifications about this bug go to:
https://bugs.launchpad.net/dcplusplus/+bug/1185436/+subscriptions
Follow ups
References