Fix escaping and some of the formattting (closes issue #10285)
[asterisk/asterisk.git] / doc / tex / chaniax.tex
1 \subsection{Introduction}
2
3 This section is intended as an introduction to the Inter-Asterisk 
4 eXchange v2 (or simply IAX2) protocol.  It provides both a theoretical 
5 background and practical information on its use.
6
7 \subsection{Why IAX2?}
8
9 The first question most people are thinking at this point is "Why do you 
10 need another VoIP protocol?  Why didn't you just use SIP or H.323?"
11
12 Well, the answer is a fairly complicated one, but in a nutshell it's like
13 this...  Asterisk is intended as a very flexible and powerful
14 communications tool.  As such, the primary feature we need from a VoIP
15 protocol is the ability to meet our own goals with Asterisk, and one with
16 enough flexibility that we could use it as a kind of laboratory for
17 inventing and implementing new concepts in the field.  Neither H.323 or
18 SIP fit the roles we needed, so we developed our own protocol, which,
19 while not standards based, provides a number of advantages over both SIP
20 and H.323, some of which are:
21
22 \begin{itemize}
23         \item Interoperability with NAT/PAT/Masquerade firewalls
24         \begin{itemize}
25              \item IAX seamlessly interoperates through all sorts of NAT and PAT
26              and other firewalls, including the ability to place and 
27              receive calls, and transfer calls to other stations.
28         \end{itemize}
29         \item High performance, low overhead protocol
30         \begin{itemize}
31              \item When running on low-bandwidth connections, or when running 
32              large numbers of calls, optimized bandwidth utilization is 
33              imperative.  IAX uses only 4 bytes of overhead
34         \end{itemize}
35         \item Internationalization support
36         \begin{itemize}
37              \item IAX transmits language information, so that remote PBX 
38              content can be delivered in the native language of the
39              calling party.
40         \end{itemize}
41         \item Remote dialplan polling
42         \begin{itemize}
43              \item IAX allows a PBX or IP phone to poll the availability of a 
44              number from a remote server.  This allows PBX dialplans to 
45              be centralized.
46         \end{itemize}
47         \item Flexible authentication
48         \begin{itemize}
49              \item IAX supports cleartext, md5, and RSA authentication, 
50              providing flexible security models for outgoing calls and 
51              registration services.
52         \end{itemize}   
53         \item Multimedia protocol
54         \begin{itemize}
55              \item IAX supports the transmission of voice, video, images, text, 
56              HTML, DTMF, and URL's.  Voice menus can be presented in both
57              audibly and visually.
58         \end{itemize}
59         \item Call statistic gathering
60         \begin{itemize}
61              \item IAX gathers statistics about network performance (including 
62              latency and jitter, as well as providing end-to-end latency
63              measurement.
64         \end{itemize}
65         \item Call parameter communication
66         \begin{itemize}
67              \item Caller*ID, requested extension, requested context, etc are
68              all communicated through the call.
69         \end{itemize}
70         \item Single socket design
71         \begin{itemize}
72              \item IAX's single socket design allows up to 32768 calls to be 
73              multiplexed.
74         \end{itemize}
75 \end{itemize}
76
77 While we value the importance of standards based (i.e. SIP) call handling, 
78 hopefully this will provide a reasonable explanation of why we developed 
79 IAX rather than starting with SIP.
80
81 \subsection{Configuration}
82
83 For examples of a configuration, please see the iax.conf.sample in
84 your the /configs directory of you source code distribution.