Contributions welcome, click the edit link to add to this page.
TraVino
TraVino is my name for a cherished ambition that I have, and is a conflation of the words "traversal" and "Vino". Essentially the idea is to have a tool similar to Windows XP remote assistance tool, whereby a Novice user who's having a problem with his (Linux) computer can start up an application (TraVino), type in a friend's email address, and then sit back and wait until his friend the Expert answers the summons and logs on to fix the problem.
So we have, in reverse order:
Vino, a Gnome front-end to a VNC server which permits the remote administration side of things, and
Network (NAT) traversal, since either or both of the Novice and Expert may be behind NAT routers, and yet they still want to be able to initiate a session.
I believe that this is a very important tool to add to the Linux desktop. It will be extremely valuable both to Linux enthusiasts (which is where my motivation originally came from: I've installed Linux on various friends' machines and need to fix things if they break, otherwise they'll never speak to me again) as well as perhaps representing a new business opportunity in the form of paid remote support/sysadmin.
I initiated a brief discussion of this topic on the OxLUG mailing list.
Remote Assistance
Windows XP references:
http://www.onecomputerguy.com/networking/winxp_remote_assistance.htm (with screenshots)
http://www.2000trainers.com/article.aspx?articleID=104&page=1
Vino
Vino was developed by Mark McLoughlin, originally at Sun and now (still?) at Red Hat. He wrote the original VNC RFB protocol while at Sun.
Proposal to include Vino in Gnome 2.8, dated 12 July 2004
Session Initiation/NAT traversal
Suppose our two users know each other, perhaps they have each others' phone numbers and email addresses. Suppose the Novice is a sales rep, on the road and connecting from his hotel room, and the Expert is behind the company firewall on a private 192.168.xxx.xxx network. The Novice could type ifconfig and find out his IP address, communicate that to the Expert, and ask him to log in and fix things, but if he's also on a private network that can't happen. OK, that scenario doesn't exactly work because the Novice will typically connect to a VPN and will therefore be on the same network as the administrator. But the idea is: can we establish a peer-to-peer connection, preferably using TCP, between two systems behind firewalls? Is it possible to change the client/server relationship by having both computers initiate the connection?
How do P2P services manage it?
This is a somewhat challenging problem to solve well. Of course, Skype already solves the problem - both users connect to the Skype server and then proceed from there. Session Initiation Protocol (SIP) has been suggested as a solution, about which I am yet uncertain. Several other contributions on the problem:
http://linide.sourceforge.net/nat-traverse/ is a project which set up a UDP connection between users, both of whom might be behind firewalls.
An article explaining that NAT is not going to disappear once IPv6 is introduced.
IRC also solves the problem, I think. How do IRC users initiate a p2p session?
UDP, being a stateless protocol, might be able to do it; the same thing is not going to work for TCP, I guess. TCP uses the SYN, SYN/ACK, ACK handshake to start a session, and I doubt any decent firewalls are going to let firewalled machines send SYN/ACKs out, so a handshake using the UDP "flood" method of nat-traverse is not going to work.
UDP won't be good enough when the session contains encrypted data; if you lose packets, you're not going to be able to decrypt.