Automatically create new buddy upon reception of a presence stanza of
[asterisk/asterisk.git] / doc / tex / qos.tex
1 \subsubsection{Introduction}
2
3 Asterisk support different QoS settings on application level on various protocol
4 on any of signaling and media. Type of Service (TOS) byte can be set on
5 outgoing IP packets for various protocols. The TOS byte is used by the network
6 to provide some level of Quality of Service (QoS) even if the network is
7 congested with other traffic.
8
9 Also asterisk running on Linux can set 802.1p CoS marks in VLAN packets for all
10 used VoIP protocols. It is useful when you are working in switched environment.
11 In fact asterisk only set priority for Linux socket. For mapping this priority
12 and VLAN CoS mark you need to use this command:
13
14 \begin{verbatim}
15 vconfig set_egress_map [vlan-device] [skb-priority] [vlan-qos]
16 \end{verbatim}
17
18 In table behind shown all voice channels and other modules of asterisk, that
19 support QoS settings for network traffic and type of traffic which can have
20 QoS settings.
21
22 \begin{verbatim}
23  Channel Drivers
24 +==============+===========+=====+=====+=====+
25 |              | Signaling |Audio|Video| Text|
26 +==============+===========+=====+=====+=====+
27 |chan_sip      |     +     |  +  |  +  |  +  |
28 |--------------+-----------+-----+-----+-----+
29 |chan_skinny   |     +     |  +  |  +  |     |
30 |--------------+-----------+-----+-----+-----+
31 |chan_mgcp     |     +     |  +  |     |     |
32 |--------------+-----------+-----+-----+-----+
33 |chan_unistim  |     +     |  +  |     |     |
34 |--------------+-----------+-----+-----+-----+
35 |chan_h323     |           |  +  |     |     |
36 |--------------+-----------+-----+-----+-----+
37 |chan_iax2     |            +                |
38 +==============+=============================+
39  Other
40 +==============+=============================+
41 | dundi.conf   |     + (tos setting)         |
42 |--------------+-----------------------------+
43 | iaxprov.conf |     + (tos setting)         |
44 +==============+=============================+
45 \end{verbatim}
46
47
48 \subsubsection{IP TOS values}
49
50 The allowable values for any of the tos* parameters are: 
51 CS0, CS1, CS2, CS3, CS4, CS5, CS6, CS7, AF11, AF12, AF13, AF21, AF22, AF23, 
52 AF31, AF32, AF33, AF41, AF42, AF43 and ef (expedited forwarding),
53
54 The tos* parameters also take numeric values.
55
56 Note, that on Linux system you can use ef value in case your asterisk is running
57 from a user other then root only when you have compiled asterisk with libcap.
58
59 The lowdelay, throughput, reliability, mincost, and none values are removed
60 in current releases.
61
62 \subsubsection{802.1p CoS values}
63
64 As far as 802.1p uses 3 bites from VLAN header, there are parameter can take
65 integer values from 0 to 7.
66
67 \subsubsection{Recommended values}
68 Recommended values shown above and also included in sample configuration files:
69 \begin{verbatim}
70 +============+=========+======+
71 |            |  tos    |  cos |
72 +============+=========+======+
73 |Signaling   |  cs3    |  3   |
74 |Audio       |  ef     |  5   |
75 |Video       |  af41   |  4   |
76 |Text        |  af41   |  3   |
77 |Other       |  ef     |      |
78 +============+=========+======+
79 \end{verbatim}
80
81 \subsubsection{IAX2}
82
83 In iax.conf, there is a "tos" parameter that sets the global default TOS
84 for IAX packets generated by chan\_iax2.  Since IAX connections combine
85 signalling, audio, and video into one UDP stream, it is not possible
86 to set the TOS separately for the different types of traffic.
87
88 In iaxprov.conf, there is a "tos" parameter that tells the IAXy what TOS
89 to set on packets it generates.  As with the parameter in iax.conf,
90 IAX packets generated by an IAXy cannot have different TOS settings
91 based upon the type of packet.  However different IAXy devices can
92 have different TOS settings.
93
94 \subsubsection{SIP}
95
96 In sip.conf, there are three parameters that control the TOS settings:
97 "tos\_sip", "tos\_audio", "tos\_video" and "tos\_text". tos\_sip controls
98 what TOS SIP call signaling packets are set to. tos\_audio, tos\_video
99 and tos\_text controls what TOS RTP audio, video or text accordingly
100 packets are set to.
101
102 There are four parameters to control 802.1p CoS: "cos\_sip", "cos\_audio",
103 "cos\_video" and "cos\_text". It behavior the same as written above.
104
105 \subsubsection{Other RTP channels}
106
107 chan\_mgcp, chan\_h323, chan\_skinny and chan\_unistim also support TOS and
108 CoS via setting tos and cos parameters in correspond to module config 
109 files. Naming style and behavior same as for chan\_sip.
110
111 \subsubsection{Reference}
112
113 IEEE 802.1Q Standard:
114 \url{http://standards.ieee.org/getieee802/download/802.1Q-1998.pdf}
115 Related protocols: IEEE 802.3, 802.2, 802.1D, 802.1Q
116
117 RFC 2474 - "Definition of the Differentiated Services Field
118 (DS field) in the IPv4 and IPv6 Headers", Nichols, K., et al,
119 December 1998.
120
121 IANA Assignments, DSCP registry
122 Differentiated Services Field Codepoints
123 \url{http://www.iana.org/assignments/dscp-registry}
124
125 To get the most out of setting the TOS on packets generated by
126 Asterisk, you will need to ensure that your network handles packets
127 with a TOS properly.  For Cisco devices, see the previously mentioned
128 "Enterprise QoS Solution Reference Network Design Guide".  For Linux
129 systems see the "Linux Advanced Routing \& Traffic Control HOWTO" at 
130 \url{http://www.lartc.org/}.
131
132 For more information on Quality of
133 Service for VoIP networks see the "Enterprise QoS Solution Reference
134 Network Design Guide" version 3.3 from Cisco at:
135 \url{http://www.cisco.com/application/pdf/en/us/guest/netsol/ns432/c649/ccmigration\_09186a008049b062.pdf}