Changeset 1110 for pjproject/trunk/pjnath/include/pjnath/types.h
- Timestamp:
- Mar 27, 2007 11:29:27 PM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
pjproject/trunk/pjnath/include/pjnath/types.h
r1101 r1110 29 29 30 30 /** 31 * @defgroup PJNATH NAT Helper Library31 * @defgroup PJNATH NAT Traversal Helper Library 32 32 * @{ 33 33 */ … … 52 52 53 53 /** 54 * @mainpage NAT Helper Library 55 * 56 * \n 57 * \n 58 * \n 59 * This is the documentation of PJNATH, an auxiliary library providing 60 * NAT helper functionalities such as STUN and ICE. 61 * 62 * Please go to the <A HREF="modules.htm"><B>Modules</B></A> page for list 63 * of modules. 64 * 54 * @mainpage PJNATH - Open Source STUN, TURN, and ICE Library 55 * 56 * \n 57 * This is the documentation of PJNATH, an Open Source library providing 58 * NAT traversal helper functionalities by using standard based protocols 59 * such as: 60 * - <b>STUN</b> (Session Traversal Utilities), 61 * - <b>TURN</b> (Obtaining Relay Addresses from STUN) 62 * - <b>ICE</b> (Interactive Connectivity Establishment). 63 * 64 * The following sections will give a short overview about the protocols 65 * supported by this library, and how they are implemented in PJNATH. 66 * 67 * \n 68 69 * \section PJNATH_STUN STUN Protocol Library 70 * 71 * Session Traversal Utilities (STUN, or previously known as Simple 72 * Traversal of User Datagram Protocol (UDP) Through Network Address 73 * Translators (NAT)s), was previously released as IETF standard 74 * <A HREF="http://www.ietf.org/rfc/rfc3489.txt">RFC 3489</A>, but since 75 * then it has been revised into the following: 76 * - <A HREF="http://www.ietf.org/internet-drafts/draft-ietf-behave-rfc3489bis-06.txt"> 77 * <B>draft-ietf-behave-rfc3489bis-06</b></A> for the main STUN 78 * specification, 79 * - <A HREF="http://www.ietf.org/internet-drafts/draft-ietf-behave-turn-03.txt"> 80 * <B>draft-ietf-behave-turn-03</B></A> for TURN usage of STUN, 81 * - and several other drafts explaining other STUN usages. 82 * 83 * The PJNATH library provides facilities to support both the core 84 * <B>STUN-bis</B> specification and the <B>TURN</B> usage of STUN, 85 * as well as other STUN usages. Please see #pj_stun_attr_type for 86 * list of STUN attributes supported by this library. 87 * 88 * 89 * The following are some design principles that have been utilized 90 * when implementing the STUN library in PJNATH: 91 * 92 * - layered architecture, with \ref PJNATH_STUN_MSG as the lowest 93 * layer and \ref PJNATH_STUN_SESSION as the highest abstraction 94 * layer, to accommodate various usage scenario of the library. 95 * 96 * - no transport -- the STUN library is pretty much transport 97 * independent and all sending and receiving functionalities will 98 * have to be implemented by application or higher level 99 * abstraction (such as ICE). This helps facilitating an even 100 * more usage scenarios of the library. 101 * 102 * - common functionalities for both STUN client and server 103 * development. All STUN components can be used to develop both 104 * STUN client and STUN server application, and in fact, in ICE, 105 * both STUN client and server functionality exist in a single 106 * ICE session. 107 * 108 * \n 109 * 110 * \subsection PJNATH_STUN_ARCH STUN Library Organization 111 * 112 113 \verbatim 114 115 +-----------------------------------------------------------------+ 116 | | 117 | A P P L I C A T I O N | 118 | | 119 +-----------------------------------------------------------------+ 120 ^ ^ 121 | | 122 v v 123 +--------+ +-----------------------------------+ +----------+ 124 | | | | | | 125 | Appl- |<-->| S T U N S E S S I O N |<-->| S T U N | 126 | ication| | | | Authen- | 127 | Trans- | +-----------------------------------+ | tication | 128 | port | | | | | 129 | |<-->| S T U N T R A N S A C T I O N | +----------+ 130 | | | | 131 | | +-----------------------------------+ 132 | | | | 133 | | | STUN MESSAGE REPRESENTATION | 134 +--------+ | AND PARSING | 135 +-----------------------------------+ 136 137 \endverbatim 138 139 * The STUN library is organized as follows: 140 * 141 * - the lowest layer of the library is \ref PJNATH_STUN_MSG. This layer 142 * provides STUN message representation, validation, parsing, and 143 * debugging (dump to log) of STUN messages. 144 * 145 * - for client, the next higher layer is \ref PJNATH_STUN_TRANSACTION, 146 * which manages retransmissions of STUN request. 147 * 148 * - \ref PJNATH_STUN_AUTH provides mechanism to verify STUN 149 * credential in incoming STUN messages. 150 * 151 * - for both client and server, the next higher abstraction is 152 * \ref PJNATH_STUN_SESSION, which provides management of incoming 153 * and outgoing messages and association of STUN credential to 154 * a STUN session. 155 * 156 * As mentioned previously, all STUN library components are independent 157 * of any transports. Application gives incoming packet 158 * to the STUN components for processing. and it must supply the STUN 159 * components with callback to send outgoing messages. 160 * 161 * \n 162 * 163 * \section PJNATH_ICE ICE Implementation 164 * 165 * Interactive Connectivity Establishment (ICE) is a standard based 166 * methodology for traversing Network Address Translator (NAT), and 167 * is described in 168 * <A HREF="http://www.ietf.org/internet-drafts/draft-ietf-mmusic-ice-14.txt"> 169 * <B>draft-ietf-mmusic-ice-14.txt</B></A> draft. The PJNATH ICE 170 * implementation is aimed to provide a usable and generic ICE transports 171 * for different types of application, including but not limited to 172 * the usage of ICE in SIP/SDP offer/answer. 173 * 174 * \subsection PJNATH_ICE_ARCH ICE Library Organization 175 * 176 * The ICE library is organized as follows: 177 * 178 * - the lowest layer is \ref PJNATH_ICE_SESSION, which provides 179 * ICE management and negotiation in a transport-independent way. 180 * This layer contains the state machines to perform ICE 181 * negotiation, and provides the most flexibility to control all 182 * aspects of ICE session. This layer normally is only usable for 183 * ICE implementors. 184 * 185 * - higher in the hierarchy is \ref PJNATH_ICE_STREAM_TRANSPORT, 186 * which binds ICE with UDP sockets, and provides STUN binding 187 * and relay/TURN allocation for the sockets. This component can 188 * be directly used by application, although normally application 189 * should use the next higher abstraction below since it provides 190 * SDP translations and better integration with other PJ libraries 191 * such as PJSIP and PJMEDIA. 192 * 193 * - the highest abstraction is ICE media transport, which maintains 194 * ICE stream transport and provides SDP translations to be used 195 * for SIP offer/answer exchanges. 196 */ 197 198 /** 199 * @defgroup PJNATH_STUN STUN Library 200 * @brief Open source STUN library 201 * 202 * This module contains implementation of STUN library in PJNATH - 203 * the open source NAT helper containing STUN and ICE. 65 204 */ 66 205
Note: See TracChangeset
for help on using the changeset viewer.