summaryrefslogtreecommitdiff
path: root/pjnath/docs/doc_mainpage.h
diff options
context:
space:
mode:
Diffstat (limited to 'pjnath/docs/doc_mainpage.h')
-rw-r--r--pjnath/docs/doc_mainpage.h148
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
+ */
+
+