← Back to team overview

linuxdcpp-team team mailing list archive

[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