~ubuntu-branches/ubuntu/wily/sflphone/wily

« back to all changes in this revision

Viewing changes to daemon/libs/pjproject-2.2.1/pjnath/docs/doc_mainpage.h

  • Committer: Package Import Robot
  • Author(s): Francois Marier, Francois Marier, Mark Purcell
  • Date: 2014-10-18 15:08:50 UTC
  • mfrom: (1.1.12)
  • mto: This revision was merged to the branch mainline in revision 29.
  • Revision ID: package-import@ubuntu.com-20141018150850-2exfk34ckb15pcwi
Tags: 1.4.1-0.1
[ Francois Marier ]
* Non-maintainer upload
* New upstream release (closes: #759576, #741130)
  - debian/rules +PJPROJECT_VERSION := 2.2.1
  - add upstream patch to fix broken TLS support
  - add patch to fix pjproject regression

[ Mark Purcell ]
* Build-Depends:
  - sflphone-daemon + libavformat-dev, libavcodec-dev, libswscale-dev,
  libavdevice-dev, libavutil-dev
  - sflphone-gnome + libclutter-gtk-1.0-dev

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/* $Id: doc_mainpage.h 3553 2011-05-05 06:14:19Z nanang $ */
 
2
/* 
 
3
 * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
 
4
 *
 
5
 * This program is free software; you can redistribute it and/or modify
 
6
 * it under the terms of the GNU General Public License as published by
 
7
 * the Free Software Foundation; either version 2 of the License, or
 
8
 * (at your option) any later version.
 
9
 *
 
10
 * This program is distributed in the hope that it will be useful,
 
11
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 
12
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
13
 * GNU General Public License for more details.
 
14
 *
 
15
 * You should have received a copy of the GNU General Public License
 
16
 * along with this program; if not, write to the Free Software
 
17
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA 
 
18
 */
 
19
 
 
20
 
 
21
/**
 
22
 
 
23
@mainpage PJNATH - Open Source ICE, STUN, and TURN Library
 
24
 
 
25
PJNATH (PJSIP NAT Helper) is an open source library providing NAT traversal 
 
26
functionalities by using standard based protocols such as STUN, TURN, and ICE.
 
27
 
 
28
 
 
29
\section background Background
 
30
 
 
31
 
 
32
Network Address Translation (NAT) is commonly deployed everywhere primarily to
 
33
alleviate the exhaustion of IPv4 address space by allowing multiple hosts to 
 
34
share a public/Internet address. While NAT would work well for typical client 
 
35
server communications (such as web and email), since it's always the client 
 
36
that initiates the conversation and normally client doesn't need to maintain
 
37
the connection for a long time, installation of NAT would cause major problem
 
38
for peer-to-peer communication, such as (and especially) VoIP. 
 
39
 
 
40
<strong>\ref nat_intro "Read more.."</strong>
 
41
 
 
42
 
 
43
\section intro Introduction to PJNATH
 
44
 
 
45
PJSIP NAT Helper (PJNATH) is a library which contains the implementation of 
 
46
standard based NAT traversal solutions. PJNATH can be used as a stand-alone 
 
47
library for your software, or you may use PJSUA-LIB library, a very high level
 
48
 library integrating PJSIP, PJMEDIA, and PJNATH into simple to use APIs.
 
49
 
 
50
PJNATH has the following features:
 
51
 
 
52
 - <strong>STUNbis</strong> implementation,\n
 
53
   providing both ready to use 
 
54
   STUN-aware socket and framework to implement higher level STUN based 
 
55
   protocols such as TURN and ICE. The implementation complies to 
 
56
   <A HREF="http://www.ietf.org/rfc/rfc5389.txt">RFC 5389</A>
 
57
   standard.\n\n
 
58
 
 
59
 - <strong>NAT type detection</strong>, \n
 
60
   performs detection of the NAT type in front of the endpoint, according
 
61
   to <A HREF="http://www.ietf.org/rfc/rfc3489.txt">RFC 3489</A>. 
 
62
   While the practice to detect the NAT type to assist NAT 
 
63
   traversal has been deprecated in favor of ICE, the information may still
 
64
   be useful for troubleshooting purposes, hence the utility is provided.\n\n
 
65
 
 
66
 - <strong>Traversal Using Relays around NAT (TURN)</strong> implementation.\n
 
67
   TURN is a protocol for relaying communications by means of using relay, 
 
68
   and combined with ICE it provides efficient last effort alternative for 
 
69
   the communication path. The TURN implementation in PJNATH complies to 
 
70
   <A HREF="http://www.ietf.org/internet-drafts/draft-ietf-behave-turn-14.txt">
 
71
   draft-ietf-behave-turn-14</A> draft.\n\n
 
72
 
 
73
 - <strong>Interactive Connectivity Establishmen (ICE)</strong> implementation.\n
 
74
   ICE is a protocol for discovering communication path(s) between two 
 
75
   endpoints. The implementation in PJNATH complies to
 
76
   <A HREF="http://www.ietf.org/internet-drafts/draft-ietf-mmusic-ice-19.txt">
 
77
   draft-ietf-mmusic-ice-19.txt</A> draft
 
78
 
 
79
In the future, more protocols will be implemented (such as UPnP IGD, and 
 
80
SOCKS5).
 
81
 
 
82
 
 
83
\section pjnath_organization_sec Library Organization
 
84
 
 
85
The library provides the following main component groups:
 
86
 
 
87
 - \ref PJNATH_STUN\n\n
 
88
 - \ref PJNATH_TURN\n\n
 
89
 - \ref PJNATH_ICE\n\n
 
90
 - \ref PJNATH_NAT_DETECT\n\n
 
91
 
 
92
Apart from the \ref PJNATH_NAT_DETECT, each component group are further 
 
93
divided into two functionalities:
 
94
 
 
95
 - <b>Transport objects</b>\n
 
96
   The transport objects (such as STUN transport, TURN transport, and ICE
 
97
   stream transport) are the implementation of the session object
 
98
   <strong>with</strong> particular transport/sockets. They are provided
 
99
   as ready to use objects for applications.\n\n
 
100
 
 
101
 - <b>Transport independent/session layer</b>\n
 
102
   The session objects (such as STUN session, TURN session, and ICE session)
 
103
   are the core object for maintaining the protocol session, and it is
 
104
   independent of transport (i.e. it does not "own" a socket). This way
 
105
   developers can reuse these session objects for any kind of transports,
 
106
   such as UDP, TCP, or TLS, with or without using PJLIB socket API.
 
107
   The session objects provide function and callback to send and receive
 
108
   packets respectively.
 
109
 
 
110
For more information about each component groups, please click the component
 
111
link above.
 
112
 
 
113
 
 
114
\section pjnath_start_sec Getting Started with PJNATH
 
115
 
 
116
\subsection dependency Library Dependencies
 
117
 
 
118
The PJNATH library depends (and only depends) on PJLIB and PJLIB-UTIL
 
119
libraries. All these libraries should have been packaged together with
 
120
the main PJSIP distribution. You can download the PJSIP distribution
 
121
from <A HREF="http://www.pjsip.org">PJSIP website</A>
 
122
 
 
123
 
 
124
\subsection pjnath_using_sec Using the libraries
 
125
 
 
126
Please click on the appropriate component under \ref pjnath_organization_sec
 
127
section above, which will take you to the documentation on how to use the 
 
128
component.
 
129
 
 
130
 
 
131
\subsection samples_sec Samples
 
132
 
 
133
We attempt to provide simple samples to use each functionality of the PJNATH
 
134
library.
 
135
 
 
136
Please see <b>\ref samples_page</b> page for the list of samples.
 
137
 
 
138
 
 
139
*/
 
140
 
 
141
 
 
142
 
 
143
/**
 
144
@defgroup samples_page PJNATH Samples and screenshots
 
145
@brief Sample applications and screenshots
 
146
 */
 
147
 
 
148