Network Working Group M. Spencer Internet-Draft Digium, Inc. Expires: October 28, 2005 B. Capouch Saint Joseph's College K. Shumard April 26, 2005 IAX: Inter-Asterisk eXchange draft-mspencer-iax-01 Status of this Memo This document is an Internet-Draft and is NOT offered in accordance with Section 10 of RFC 2026, and the author does not provide the IETF with any rights other than to publish as an Internet-Draft. Internet-Drafts are working documents of the Internet Engineering Task Force (IETF), its areas, and its working groups. Note that other groups may also distribute working documents as Internet-Drafts. Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress." The list of current Internet-Drafts can be accessed at http://www.ietf.org/ietf/1id-abstracts.txt. The list of Internet-Draft Shadow Directories can be accessed at http://www.ietf.org/shadow.html. This Internet-Draft will expire on October 28, 2005. Abstract This document describes the Inter-Asterisk eXchange protocol, an application-layer control and media protocol for creating, modifying, and terminating streaming media sessions over Internet Protocol (IP) networks. IAX is targeted primarily at the control of Voice Over Internet Protocol (VOIP) calls, but can be used with streaming video or any other type of streaming media. IAX is an "all in one" protocol for handling streaming media in Internet Protocol (IP) networks. Specification of both control and media services in the same protocol decreases bandwidth usage and allows native support for Network Address Translation (NAT) Spencer, et al. Expires October 28, 2005 [Page 1] Internet-Draft IAX: Inter-Asterisk eXchange April 2005 transparency. These design decisions make IAX ideal for handling Internet telephony. Table of Contents 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 4 2. IAX Terminology . . . . . . . . . . . . . . . . . . . . . . . 5 3. Overview of IAX functionality . . . . . . . . . . . . . . . . 6 4. Frame formats . . . . . . . . . . . . . . . . . . . . . . . . 7 4.1 Full Frames . . . . . . . . . . . . . . . . . . . . . . . 7 4.2 Mini frames . . . . . . . . . . . . . . . . . . . . . . . 9 4.3 Meta frames . . . . . . . . . . . . . . . . . . . . . . . 10 4.3.1 Meta Video Frames . . . . . . . . . . . . . . . . . . 10 4.3.2 Meta Trunk Frames . . . . . . . . . . . . . . . . . . 11 5. Features . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 5.1 Transferring . . . . . . . . . . . . . . . . . . . . . . . 15 5.2 Trunking . . . . . . . . . . . . . . . . . . . . . . . . . 16 5.3 Authentication . . . . . . . . . . . . . . . . . . . . . . 16 5.4 Registration . . . . . . . . . . . . . . . . . . . . . . . 17 5.5 Provisioning . . . . . . . . . . . . . . . . . . . . . . . 17 6. Frame types . . . . . . . . . . . . . . . . . . . . . . . . . 18 6.1 DTMF Frame . . . . . . . . . . . . . . . . . . . . . . . . 18 6.2 Voice Frame . . . . . . . . . . . . . . . . . . . . . . . 18 6.3 Video Frame . . . . . . . . . . . . . . . . . . . . . . . 18 6.4 Control Frame . . . . . . . . . . . . . . . . . . . . . . 18 6.5 Null Frame . . . . . . . . . . . . . . . . . . . . . . . . 18 6.6 IAX Frame . . . . . . . . . . . . . . . . . . . . . . . . 18 6.7 Text Frame . . . . . . . . . . . . . . . . . . . . . . . . 19 6.8 Image Frame . . . . . . . . . . . . . . . . . . . . . . . 19 6.9 HTML Frame . . . . . . . . . . . . . . . . . . . . . . . . 19 6.10 Comfort Noise Frame . . . . . . . . . . . . . . . . . . . 19 7. Control Frames . . . . . . . . . . . . . . . . . . . . . . . . 21 8. IAX Frames . . . . . . . . . . . . . . . . . . . . . . . . . . 22 8.1 NEW . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 8.2 PING . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 8.3 PONG . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 8.4 ACK . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 8.5 HANGUP . . . . . . . . . . . . . . . . . . . . . . . . . . 25 8.6 REJECT . . . . . . . . . . . . . . . . . . . . . . . . . . 25 8.7 ACCEPT . . . . . . . . . . . . . . . . . . . . . . . . . . 25 8.8 AUTHREQ . . . . . . . . . . . . . . . . . . . . . . . . . 26 8.9 AUTHREP . . . . . . . . . . . . . . . . . . . . . . . . . 26 8.10 INVAL . . . . . . . . . . . . . . . . . . . . . . . . . . 26 8.11 LAGRQ . . . . . . . . . . . . . . . . . . . . . . . . . . 26 8.12 LAGRP . . . . . . . . . . . . . . . . . . . . . . . . . . 26 8.13 REGREQ . . . . . . . . . . . . . . . . . . . . . . . . . . 26 8.14 REGAUTH . . . . . . . . . . . . . . . . . . . . . . . . . 27 8.15 REGACK . . . . . . . . . . . . . . . . . . . . . . . . . . 27 Spencer, et al. Expires October 28, 2005 [Page 2] Internet-Draft IAX: Inter-Asterisk eXchange April 2005 8.16 REGREJ . . . . . . . . . . . . . . . . . . . . . . . . . . 27 8.17 REGREL . . . . . . . . . . . . . . . . . . . . . . . . . . 27 8.18 VNAK . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 8.19 DPREQ . . . . . . . . . . . . . . . . . . . . . . . . . . 28 8.20 DPREP . . . . . . . . . . . . . . . . . . . . . . . . . . 28 8.21 DIAL . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 8.22 TXREQ . . . . . . . . . . . . . . . . . . . . . . . . . . 29 8.23 TXCNT . . . . . . . . . . . . . . . . . . . . . . . . . . 29 8.24 TXACC . . . . . . . . . . . . . . . . . . . . . . . . . . 29 8.25 TXREADY . . . . . . . . . . . . . . . . . . . . . . . . . 29 8.26 TXREL . . . . . . . . . . . . . . . . . . . . . . . . . . 29 8.27 TXREJ . . . . . . . . . . . . . . . . . . . . . . . . . . 30 8.28 QUELCH . . . . . . . . . . . . . . . . . . . . . . . . . . 30 8.29 UNQUELCH . . . . . . . . . . . . . . . . . . . . . . . . . 30 8.30 POKE . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 8.31 Reserved . . . . . . . . . . . . . . . . . . . . . . . . . 30 8.32 MWI . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 8.33 UNSUPPORT . . . . . . . . . . . . . . . . . . . . . . . . 31 8.34 TRANSFER . . . . . . . . . . . . . . . . . . . . . . . . . 31 8.35 PROVISION . . . . . . . . . . . . . . . . . . . . . . . . 31 8.36 FWDOWNL . . . . . . . . . . . . . . . . . . . . . . . . . 31 8.37 FWDATA . . . . . . . . . . . . . . . . . . . . . . . . . . 31 9. HTML Command Subclasses . . . . . . . . . . . . . . . . . . . 32 10. Information Elements . . . . . . . . . . . . . . . . . . . . 33 11. Media Formats . . . . . . . . . . . . . . . . . . . . . . . 67 12. Call type examples . . . . . . . . . . . . . . . . . . . . . 68 12.1 Ping/Pong . . . . . . . . . . . . . . . . . . . . . . . . 68 12.2 Lagrq/Lagrp . . . . . . . . . . . . . . . . . . . . . . . 68 12.3 Registration . . . . . . . . . . . . . . . . . . . . . . . 69 12.4 Provisioning . . . . . . . . . . . . . . . . . . . . . . . 69 12.5 Firmware Download . . . . . . . . . . . . . . . . . . . . 70 12.6 IAX Media Call . . . . . . . . . . . . . . . . . . . . . . 71 12.7 IAX Media Call via an IAX Device . . . . . . . . . . . . . 72 13. References . . . . . . . . . . . . . . . . . . . . . . . . . 73 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . 73 Spencer, et al. Expires October 28, 2005 [Page 3] Internet-Draft IAX: Inter-Asterisk eXchange April 2005 1. Introduction There are numerous published protocols that specify control or signaling of streaming media sessions. In general, these protocols are genericized to offer full support for many distinct types of media transmission. This adds some overhead to the protocol headers, but allows wide general use of these protocols. Typically these protocols do not specify the media transmission protocol to be used to carry the actual stream. This allows for greater flexibility, but again leads to larger headers and more overhead. Further, streaming media solutions which use different control/signaling and media transmission protocols frequently suffer from Network Address Translation (NAT) traversal problems. IAX is general enough that it can handle an arbitrary type of media stream. However, the protocol is highly optimized for VOIP calls, where low overhead and low bandwidth consumption are priorities. This makes IAX much more efficient for VOIP than /* the */ more complex protocols /* of SIP/MGCP plus RTP/RTCP */ which specify many more details than are strictly necessary to describe or transport a voice call. Further, because IAX is designed to be lightweight and VOIP-friendly, it consumes comparatively less bandwidth. Because IAX uses the same UDP port (4569) for both its signaling and media messages, NAT traversal is much simpler for IAX than for other similar protocols. Spencer, et al. Expires October 28, 2005 [Page 4] Internet-Draft IAX: Inter-Asterisk eXchange April 2005 2. IAX Terminology The keywords "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOUL