[Adium-devl] Voice/Video NAT traversal problem

joe at sirg3.com joe at sirg3.com
Sun Apr 8 06:56:33 UTC 2007


I'm no expert on this stuff, so if I'm wrong...

> Perhaps I need to understand the problem facing Adium correctly.  We
> need to be able to have an Adium client look up its own public IP and
> port number so that it can transmit it to whatever protocol requires
> that information.  Do I have that right?

Yes, if it's going to make a separate connection and assuming the other
client is connecting in to us.

> Essentially, my confusion boils down to this.  If many protocols
> support some aspect of Voice/Video, they must have a way to assist in
> setting up and tearing down these connections.

Some don't. Look at iChat's voice chat -- I don't think it works behind
firewalls or routers (last I checked, which admittedly was a while ago).

>                                        Wouldn't having a server
> in between clients allow us to bypass the NAT traversal problem
> altogether, since the public IP data can be just be discovered on both
> ends, transmitted to both sides via the central server, and then do
> some sort of requesting to open mapped ports in the NATs?

Well, a centralize server to get the public IPs would work... but you're
still not going to get through the NATs/firewalls. An option would be to
have a middle-man server be responsible for connecting the clients - both
would connect to it and transmit data that way. However, that would
require a ton of bandwidth and users to trust the middle-man.

Skype takes a rather novel (if not evil) approach to this - it uses a peer
to peer system.

http://www1.cs.columbia.edu/~library/TR-repository/reports/reports-2004/cucs-039-04.pdf
http://www.secdev.org/conf/skype_BHEU06.handout.pdf

-- Joe Ranieri




More information about the devel mailing list