mirror of https://github.com/asterisk/asterisk
				
				
				
			
			You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							145 lines
						
					
					
						
							5.4 KiB
						
					
					
				
			
		
		
	
	
							145 lines
						
					
					
						
							5.4 KiB
						
					
					
				| \subsubsection{Introduction}
 | |
| 
 | |
| Asterisk supports different QoS settings at the application level for various
 | |
| protocols on both signaling and media. The Type of Service (TOS) byte can be
 | |
| set on outgoing IP packets for various protocols. The TOS byte is used by the
 | |
| network to provide some level of Quality of Service (QoS) even if the network
 | |
| is congested with other traffic.
 | |
| 
 | |
| Asterisk running on Linux can also set 802.1p CoS marks in VLAN packets for the 
 | |
| VoIP protocols it uses. This is useful when working in a switched environment.
 | |
| In fact Asterisk only set priority for Linux socket. For mapping this priority
 | |
| and VLAN CoS mark you need to use this command:
 | |
| 
 | |
| \begin{verbatim}
 | |
| vconfig set_egress_map [vlan-device] [skb-priority] [vlan-qos]
 | |
| \end{verbatim}
 | |
| 
 | |
| The table below shows all VoIP channel drivers and other Asterisk modules that
 | |
| support QoS settings for network traffic. It also shows the type(s) of
 | |
| traffic for which each module can support setting QoS settings.
 | |
| 
 | |
| \begin{table}[h!]
 | |
| \begin{center}
 | |
| \begin{tabular}{ | l || c | c | c | c | }
 | |
|  \hline
 | |
|               & Signaling & Audio & Video & Text \\ \hline \hline
 | |
|  chan\_sip    &     +     &   +   &   +   &   +  \\ \hline
 | |
|  chan\_skinny &     +     &   +   &   +   &      \\ \hline
 | |
|  chan\_mgcp   &     +     &   +   &       &      \\ \hline
 | |
|  chan\_unistm &     +     &   +   &       &      \\ \hline
 | |
|  chan\_h323   &           &   +   &       &      \\ \hline
 | |
|  chan\_iax2   & \multicolumn{4}{|c|}{+}          \\
 | |
|  \hline
 | |
| \end{tabular}
 | |
| \end{center}
 | |
| \caption{Channel Driver QoS Settings}
 | |
| \end{table}
 | |
| 
 | |
| \begin{table}[h!]
 | |
| \begin{center}
 | |
| \begin{tabular}{ | l || c | c | c | c | }
 | |
|  \hline
 | |
|               & Signaling & Audio & Video & Text          \\ \hline \hline
 | |
|  dundi.conf   & \multicolumn{4}{ | c | }{+ (tos setting)} \\ \hline
 | |
|  iaxprov.conf & \multicolumn{4}{ | c | }{+ (tos setting)} \\ \hline
 | |
|  \hline
 | |
| \end{tabular}
 | |
| \end{center}
 | |
| \caption{Other ToS Settings}
 | |
| \end{table}
 | |
| 
 | |
| \subsubsection{IP TOS values}
 | |
| The allowable values for any of the tos* parameters are: 
 | |
| CS0, CS1, CS2, CS3, CS4, CS5, CS6, CS7, AF11, AF12, AF13, AF21, AF22, AF23, 
 | |
| AF31, AF32, AF33, AF41, AF42, AF43 and ef (expedited forwarding),
 | |
| 
 | |
| The tos* parameters also take numeric values.
 | |
| 
 | |
| Note that on a Linux system, Asterisk must be compiled with libcap in order to
 | |
| use the ef tos setting if Asterisk is not run as root.
 | |
| 
 | |
| The lowdelay, throughput, reliability, mincost, and none values have been removed
 | |
| in current releases.
 | |
| 
 | |
| \subsubsection{802.1p CoS values}
 | |
| 
 | |
| Because 802.1p uses 3 bits of the VLAN header, this parameter can take integer
 | |
| values from 0 to 7.
 | |
| 
 | |
| \subsubsection{Recommended values}
 | |
| The recommended values shown below are also included in sample configuration files:
 | |
| 
 | |
| \begin{table}[h!]
 | |
| \begin{center}
 | |
| \begin{tabular}{ | l || l | l | }
 | |
| \hline
 | |
|           & tos  & cos \\ \hline \hline
 | |
| Signaling & cs3  & 3   \\ \hline
 | |
| Audio     & ef   & 5   \\ \hline
 | |
| Video     & af41 & 4   \\ \hline
 | |
| Text      & af41 & 3   \\ \hline
 | |
| Other     & ef   &     \\
 | |
| \hline
 | |
| \end{tabular}
 | |
| \end{center}
 | |
| \caption{Recommended QoS Settings}
 | |
| \end{table}
 | |
| 
 | |
| \subsubsection{IAX2}
 | |
| 
 | |
| In iax.conf, there is a "tos" parameter that sets the global default TOS
 | |
| for IAX packets generated by chan\_iax2.  Since IAX connections combine
 | |
| signalling, audio, and video into one UDP stream, it is not possible
 | |
| to set the TOS separately for the different types of traffic.
 | |
| 
 | |
| In iaxprov.conf, there is a "tos" parameter that tells the IAXy what TOS
 | |
| to set on packets it generates.  As with the parameter in iax.conf,
 | |
| IAX packets generated by an IAXy cannot have different TOS settings
 | |
| based upon the type of packet.  However different IAXy devices can
 | |
| have different TOS settings.
 | |
| 
 | |
| \subsubsection{SIP}
 | |
| 
 | |
| In sip.conf, there are four parameters that control the TOS settings:
 | |
| "tos\_sip", "tos\_audio", "tos\_video" and "tos\_text". tos\_sip controls
 | |
| what TOS SIP call signaling packets are set to. tos\_audio, tos\_video
 | |
| and tos\_text control what TOS values are used for RTP audio, video, and text
 | |
| packets, respectively.
 | |
| 
 | |
| There are four parameters to control 802.1p CoS: "cos\_sip", "cos\_audio",
 | |
| "cos\_video" and "cos\_text". The behavior of these parameters is the
 | |
| same as for the SIP TOS settings described above.
 | |
| 
 | |
| \subsubsection{Other RTP channels}
 | |
| 
 | |
| chan\_mgcp, chan\_h323, chan\_skinny and chan\_unistim also support TOS and
 | |
| CoS via setting tos and cos parameters in their corresponding configuration
 | |
| files. Naming style and behavior are the same as for chan\_sip.
 | |
| 
 | |
| \subsubsection{Reference}
 | |
| 
 | |
| IEEE 802.1Q Standard:
 | |
| \url{http://standards.ieee.org/getieee802/download/802.1Q-1998.pdf}
 | |
| Related protocols: IEEE 802.3, 802.2, 802.1D, 802.1Q
 | |
| 
 | |
| RFC 2474 - "Definition of the Differentiated Services Field
 | |
| (DS field) in the IPv4 and IPv6 Headers", Nichols, K., et al,
 | |
| December 1998.
 | |
| 
 | |
| IANA Assignments, DSCP registry
 | |
| Differentiated Services Field Codepoints
 | |
| \url{http://www.iana.org/assignments/dscp-registry}
 | |
| 
 | |
| To get the most out of setting the TOS on packets generated by
 | |
| Asterisk, you will need to ensure that your network handles packets
 | |
| with a TOS properly.  For Cisco devices, see the previously mentioned
 | |
| "Enterprise QoS Solution Reference Network Design Guide".  For Linux
 | |
| systems see the "Linux Advanced Routing \& Traffic Control HOWTO" at 
 | |
| \url{http://www.lartc.org/}.
 | |
| 
 | |
| For more information on Quality of
 | |
| Service for VoIP networks see the "Enterprise QoS Solution Reference
 | |
| Network Design Guide" version 3.3 from Cisco at:
 | |
| \url{http://www.cisco.com/application/pdf/en/us/guest/netsol/ns432/c649/ccmigration\_09186a008049b062.pdf}
 |