libnice

Libnice is an implementation of the IETF's Interactive Connectivity Establishment (ICE) standard (RFC 5245) and the Session Traversal Utilities for NAT (STUN) standard (RFC 5389). It provides a GLib-based library, libnice and a Glib-free library, libstun as well as GStreamer elements. ICE is useful for applications that want to establish peer-to-peer UDP data streams. It automates the process of traversing NATs and provides security against some attacks. It also allows applications to create reliable streams using a TCP over UDP layer. Existing standards that use ICE include Session Initiation Protocol (SIP) and XMPP Jingle.

Nice: GLib ICE library

Copyright

© 2006-2011 Collabora Ltd.
© 2006-2011 Nokia Corporation

License

See the file COPYING.

Requirements

glib >= 2.10
pkg-config
gupnp-igd >= 0.1.2 (optional)
gstreamer-0.10 >= 0.10.0 (optional)

Build instructions

To build on Linux and Mac, you only need to type the usual commands :
./configure && make && sudo make install
Please refer to the INSTALL file for more details.
If you are building from git, you must first run the ./autogen.sh script
to generate the configure file for you.

To build on Windows, please refer to the README.win32 file for build instructions
using Microsoft Visual Studio.

Structure

agent/ - ICE agent
docs/ - Design and API documentation
gst/ - Gstreamer elements
nice/ - libnice library
random/ - random number generation
socket/ - Socket abstraction layer
stun/ - STUN implementation
tests/ - Unit tests

Relevant standards

These standards are relevant to nice’s current implementation.

ICE draft 15
http://tools.ietf.org/html/rfc5245
STUN
http://tools.ietf.org/html/rfc3489
http://tools.ietf.org/html/rfc5389
TURN
http://tools.ietf.org/html/rfc5766
RTP
http://tools.ietf.org/html/rfc3550
XMPP Jingle ICE transport
http://www.xmpp.org/extensions/xep-0176.html

In future, nice may additionally support the following standards.

NAT-PMP
http://files.dns-sd.org/draft-cheshire-nat-pmp.txt