diff options
Diffstat (limited to 'pjnath/docs/doc_mainpage.h')
-rw-r--r-- | pjnath/docs/doc_mainpage.h | 148 |
1 files changed, 148 insertions, 0 deletions
diff --git a/pjnath/docs/doc_mainpage.h b/pjnath/docs/doc_mainpage.h new file mode 100644 index 00000000..36137694 --- /dev/null +++ b/pjnath/docs/doc_mainpage.h @@ -0,0 +1,148 @@ +/* $Id$ */ +/* + * Copyright (C) 2008-2009 Teluu Inc. (http://www.teluu.com) + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + + +/** + +@mainpage 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. + + +\section background 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. + +<strong>\ref nat_intro "Read more.."</strong> + + +\section intro 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: + + - <strong>STUNbis</strong> implementation,\n + 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 + <A HREF="http://www.ietf.org/rfc/rfc5389.txt">RFC 5389</A> + standard.\n\n + + - <strong>NAT type detection</strong>, \n + performs detection of the NAT type in front of the endpoint, according + to <A HREF="http://www.ietf.org/rfc/rfc3489.txt">RFC 3489</A>. + 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.\n\n + + - <strong>Traversal Using Relays around NAT (TURN)</strong> implementation.\n + 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 + <A HREF="http://www.ietf.org/internet-drafts/draft-ietf-behave-turn-13.txt"> + draft-ietf-behave-turn-13</A> draft.\n\n + + - <strong>Interactive Connectivity Establishmen (ICE)</strong> implementation.\n + ICE is a protocol for discovering communication path(s) between two + endpoints. The implementation in PJNATH complies to + <A HREF="http://www.ietf.org/internet-drafts/draft-ietf-mmusic-ice-19.txt"> + draft-ietf-mmusic-ice-19.txt</A> draft + +In the future, more protocols will be implemented (such as UPnP IGD, and +SOCKS5). + + +\section pjnath_organization_sec Library Organization + +The library provides the following main component groups: + + - \ref PJNATH_STUN\n\n + - \ref PJNATH_TURN\n\n + - \ref PJNATH_ICE\n\n + - \ref PJNATH_NAT_DETECT\n\n + +Apart from the \ref PJNATH_NAT_DETECT, each component group are further +divided into two functionalities: + + - <b>Transport objects</b>\n + The transport objects (such as STUN transport, TURN transport, and ICE + stream transport) are the implementation of the session object + <strong>with</strong> particular transport/sockets. They are provided + as ready to use objects for applications.\n\n + + - <b>Transport independent/session layer</b>\n + The session objects (such as STUN session, TURN session, and ICE session) + are the core object for maintaining the protocol session, and it is + independent of transport (i.e. it does not "own" a socket). This way + developers can reuse these session objects for any kind of transports, + such as UDP, TCP, or TLS, with or without using PJLIB socket API. + The session objects provide function and callback to send and receive + packets respectively. + +For more information about each component groups, please click the component +link above. + + +\section pjnath_start_sec Getting Started with PJNATH + +\subsection dependency 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 <A HREF="http://www.pjsip.org">PJSIP website</A> + + +\subsection pjnath_using_sec Using the libraries + +Please click on the appropriate component under \ref pjnath_organization_sec +section above, which will take you to the documentation on how to use the +component. + + +\subsection samples_sec Samples + +We attempt to provide simple samples to use each functionality of the PJNATH +library. + +Please see <b>\ref samples_page</b> page for the list of samples. + + +*/ + + + +/** +@defgroup samples_page PJNATH Samples and screenshots +@brief Sample applications and screenshots + */ + + |