WARNING: The online documentation has moved to https://docs.pjsip.org.

Visit the new documentation at https://docs.pjsip.org:

BLOG | DOCUMENTATION | GITHUB

Home --> Documentations --> PJNATH Reference

PJNATH - Open Source ICE, STUN, and TURN Library

PJNATH (PJSIP NAT Helper) is an open source library providing NAT traversal functionalities by using standard based protocols such as STUN, TURN, and ICE.

Background

Network Address Translation (NAT) is commonly deployed everywhere primarily to alleviate the exhaustion of IPv4 address space by allowing multiple hosts to share a public/Internet address. While NAT would work well for typical client server communications (such as web and email), since it's always the client that initiates the conversation and normally client doesn't need to maintain the connection for a long time, installation of NAT would cause major problem for peer-to-peer communication, such as (and especially) VoIP.

Read more..

Introduction to PJNATH

PJSIP NAT Helper (PJNATH) is a library which contains the implementation of standard based NAT traversal solutions. PJNATH can be used as a stand-alone library for your software, or you may use PJSUA-LIB library, a very high level library integrating PJSIP, PJMEDIA, and PJNATH into simple to use APIs.

PJNATH has the following features:

  • STUNbis implementation,
    providing both ready to use STUN-aware socket and framework to implement higher level STUN based protocols such as TURN and ICE. The implementation complies to RFC 5389 standard.

  • NAT type detection,
    performs detection of the NAT type in front of the endpoint, according to RFC 3489. While the practice to detect the NAT type to assist NAT traversal has been deprecated in favor of ICE, the information may still be useful for troubleshooting purposes, hence the utility is provided.

  • Traversal Using Relays around NAT (TURN) implementation.
    TURN is a protocol for relaying communications by means of using relay, and combined with ICE it provides efficient last effort alternative for the communication path. The TURN implementation in PJNATH complies to draft-ietf-behave-turn-14 draft.

  • Interactive Connectivity Establishmen (ICE) implementation.
    ICE is a protocol for discovering communication path(s) between two endpoints. The implementation in PJNATH complies to draft-ietf-mmusic-ice-19.txt draft
  • Universal Plug and Play (UPnP) control point implementation.
    Universal Plug and Play (UPnP) Internet Gateway Device (IGD) Protocol allows any local UPnP control point to retrieve the external IP address of the device, and add or remove port mappings. By adding a port mapping, a UPnP controller behind the IGD can enable traversal of the IGD from an external address to an internal client.

Library Organization

The library provides the following main component groups:

For more information about each component groups, please click the component link above.

Getting Started with PJNATH

Library Dependencies

The PJNATH library depends (and only depends) on PJLIB and PJLIB-UTIL libraries. All these libraries should have been packaged together with the main PJSIP distribution. You can download the PJSIP distribution from PJSIP website

Using the libraries

Please click on the appropriate component under Library Organization section above, which will take you to the documentation on how to use the component.

Samples

We attempt to provide simple samples to use each functionality of the PJNATH library.

Please see PJNATH Samples and screenshots page for the list of samples.

 


PJNATH - Open Source NAT traversal helper library supporting STUN, TURN, and ICE
Copyright (C) 2006-2009 Teluu Inc.