mirror of
				https://github.com/asterisk/asterisk.git
				synced 2025-10-31 18:55:19 +00:00 
			
		
		
		
	git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@147 65c4cc65-6c06-0410-ace0-fbb531ad65f3
		
			
				
	
	
		
			56 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			56 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
		
			Executable File
		
	
	
	
	
| Inter-Asterisk eXchange Protocol
 | |
| ================================
 | |
| 
 | |
| Usage:
 | |
| ======
 | |
| The format for the dialing string on Asterisk is:
 | |
| IAX/[user@]peer[:exten[@context]]
 | |
| 
 | |
| (Note, []'s denote optional fields).  The peer is either an IP address
 | |
| or a peer as specified in the /etc/asterisk/iax.conf file.  Exten is
 | |
| an optional requested extension (otherwise "s" will be used), and 
 | |
| "context" is an optional context to request.  The user is an optional
 | |
| username specified in the peer's iax.conf.  If the user is not specified,
 | |
| the peer will select one.
 | |
| 
 | |
| Protocol and rationale:
 | |
| =======================
 | |
| IAX is a simple, low overhead and low bandwidth VoIP protocol designed to 
 | |
| allow multiple Asterisk PBX's to communicate with one another without
 | |
| the overhead of more complex protocols like H.323.  Payload is sent with
 | |
| a header overhead of only 4 octets.  Control functions (and one payload packet
 | |
| per minute or so) is sent with a more complex header of 12 octets.
 | |
| 
 | |
| IAX is slightly stateful.
 | |
| 
 | |
| IAX contains two kinds of packets:  The full header packet type, which 
 | |
| contains much information about the frame, in addition to its contents,
 | |
| and the mini header type, which is used only for non-reliable voice
 | |
| packet delivery.
 | |
| 
 | |
| All packets are immediately transmitted.  Packets are received, but not
 | |
| delivered to the actual channels until a given time quantum has passed, in
 | |
| order to try to eliminate jitter.
 | |
| 
 | |
| All full header packets must be ackd (except, obviously for the ACK packets
 | |
| themselves and not so obviously for hangup packets).  The "timestamp" field of
 | |
| ack packets is not the normal offset, but rather a quote of the timestamp as
 | |
| included with the original packet that you're acking, and likewise the
 | |
| seqno field is the seqno of the packet you're acking, not your own seqno,
 | |
| and you do not increment your own sequence number.  ACKing is based on the
 | |
| sequence number.
 | |
| 
 | |
| See iax.h for a description of the frame formats. 
 | |
| 
 | |
| IAX internal frames use the AST_FRAME_IAX type.  The subclass of these
 | |
| frames is the IAX control number, as seen in iax.h.  The first frame sent
 | |
| must be an AST_FRAME_IAX with the control AST_IAX_CONTROL_NEW.  
 | |
| 
 | |
| The AST_IAX_CONTROL_NEW establishes a new connection.  
 | |
| 
 | |
| The first frame sent MUST be an AST_CONTROL_NEW to start a connection.
 | |
| 
 | |
| IAX connnections may require authentication using either simple plaintext
 | |
| passwords or an md5 challenge/response pair.
 | |
| 
 |