Google have just published two of their protocols JEP 0166 and JEP 0167 correspond respectively to Jingle Signalling and Jingle Audio protocols. Jingle aims to provide an extension to XMMP protocol allowing to intiate Audio, Video and others p2p multimedia sessions.
talk_logo.gif

There exists no widely-adopted standard for initiating and managing peer-to-peer (p2p) multimedia interactions (such as voice and video exchanges) from within Jabber/XMPP clients. Although several large service providers and Jabber/XMPP clients have written and implemented their own proprietary XMPP extensions for p2p signalling (usually only for voice), those technologies are not open and do not always take into account requirements to interoperate with the Public Switched Telephone Network (PSTN) or emerging SIP-based Internet voice networks. By contrast, the only existing open protocol has been A Transport for Initiating and Negotiating Sessions (TINS) [1], which made it possible to initiate and manage p2p sessions, but which did not provide enough of the key signalling semantics to be easily implemented in Jabber/XMPP clients.


In addition to these two documents a library have been added to Google code called Google Talk Voice and P2P Interoperability Library (Libjingle). The Libjingle library aims to create high quality peer-to-peer sessions over a wide number of network configurations, including firewalls and Network Address Translation (NAT). NAT devices, increasingly popular in homes and offices, allow multiple machines to share a single Internet address. Consequently, it becomes more and more difficult for applications such as voice chat, which require peers to directly address each other, to make a peer-to-peer connection reliably.

Libjingle is a set of components provided by Google to interoperate with Google Talk’s peer-to-peer and voice calling capabilities. The package includes source code for Google’s implementation of Jingle and Jingle-Audio, two proposed extensions to the XMPP standard that are currently available in experimental draft form.

The Libjingle is an implementation of the two previous protocols JEP 0166 and JEP 0167 to negociate peer-to-peer connections under a wide variety of network topologies and then establishes and maintains those connections. Libjingle include many packages like p2p, session, base, xmpp, xmllite, third_party and examples. You can get it from Sourceforge, available under a Berkeley-style license.