An investigation into the provision of extended video capabilities in ilanga

Similar documents
An Investigation into the Provision of Video Capabilities in ilanga

Overview of the Session Initiation Protocol

SoLink-Lite IP-PBX. Administrator Guide. (Version 1.0)

VoIP. ALLPPT.com _ Free PowerPoint Templates, Diagrams and Charts

Asterisk Business Edition Version C Digium Partner Certification

Asterisk Business Edition Version C Digium Partner Certification

TSIN02 - Internetworking

EP502/EP504 IP PBX 1.1 Overview

Integrating VoIP Phones and IP PBX s with VidyoGateway

Virtual PBX Product Guide MODEL: SP-250 SP-500 SP-1000 SP-1500 SP-3000

Overview of SIP. Information About SIP. SIP Capabilities. This chapter provides an overview of the Session Initiation Protocol (SIP).

DMP 128 Plus C V DMP 128 Plus C V AT

A study of Design and Implementation of IVR System using Asterisk Samir Borkar 1 Sofia Pillai 2 1 GHRCE Nagpur

An Overview of the Cisco Unified IP Phone

Innovation Networking App Note

UCM6102/6104/6108/6116 Configuration

Application Notes for Packet One SIP Trunk System Version 3.1 Interoperability with Avaya Software Communication System Release Issue 1.

It's only software. Mark Spencer

Mediatrix FXO Unit with Asterisk

DMP 128 Plus C V DMP 128 Plus C V AT. Avaya Aura Configuration Guide REVISION: DATE: MARCH 7 TH 2018

atl IP Telephone SIP Compatibility

Troubleshooting Voice Over IP with WireShark

ZyXEL V120 Support Notes. ZyXEL V120. (V120 IP Attendant 1 Runtime License) Support Notes

4 Port IP-PBX + SIP Gateway System

ABSTRACT. that it avoids the tolls charged by ordinary telephone service

Rev

Retired. HP VCX Desktop Communicator Outlook Edition Software

An Overview of the Cisco Unified IP Phone

FREUND SIP SW - V SIP-server setup

Introduction. H.323 Basics CHAPTER

DMP 128 Plus C V DMP 128 Plus C V AT. Avaya Aura Configuration Guide REVISION: 1.1 DATE: SEPTEMBER 1 ST 2017

Developing a Videomail Service for ilanga, an Asterisk Based IP PBX

VIRTUAL VIRTUAL IP PBX VP-1500

VoIP Basics. 2005, NETSETRA Corporation Ltd. All rights reserved.

Chapter 11: Understanding the H.323 Standard

EarthLink Business SIP Trunking. Asterisk 1.8 IP PBX Customer Configuration Guide

Abstract. Avaya Solution & Interoperability Test Lab

An Overview of the Cisco Unified IP Phone

Asterisk Business Edition Version B Digium Partner Certification

SIP driver configuration in ALERT

NEC: SIP Trunking Configuration Guide V.1

Application Notes for Configuring the ADTRAN NetVanta UC Server with Avaya IP Office 6.1 Issue 1.0

Application Notes for Configuring Tidal Communications tnet Business VoIP with Avaya IP Office using SIP Registration - Issue 1.0

Nuvia End-User Portal Quick Reference Guide

SPA400 Internet Telephony Gateway with 4 FXO Ports

DMP 128 Plus C V DMP 128 Plus C V AT. ShoreTel Configuration Guide REVISION: DATE: DECEMBER 6 TH 2018

Tel: (0) Fax: +44 (0)

Multimedia for Host Media Processing Demo

IP Possibilities Conference & Expo. Minneapolis, MN April 11, 2007

H.323. Definition. Overview. Topics

Plug-in 3457 User Guide

DMP 128 Plus C V DMP 128 Plus C V AT. Cisco CUCM Configuration Guide REVISION: DATE: MARCH 7 TH, 2018

DMP 128 Plus C V DMP 128 Plus C V AT. Avaya IP Office Configuration Guide REVISION: 1.2 DATE: JANUARY 9 TH 2018

Advanced Configuration for the Cisco Unified Videoconferencing 3515 MCU

Application Notes for Presence OpenGate with Avaya IP Office 9.0 Issue 1.0

Application Notes for Biamp Tesira SVC-2 with Avaya IP Office Server Edition 10.0 Issue 1.0

AT&T IP Flexible Reach And IP Toll Free Cisco Call Manager Configuration Guide. Issue /5/2007

DMP 128 Plus C V DMP 128 Plus C V AT. Cisco CUCM Configuration Guide REVISION: 1.1 DATE: SEPTEMBER 1 ST 2017

Basic FXO Mediatrix Unit Configuration with Asterisk

Application Notes for configuring Fijowave Business DECT with Avaya IP Office IP500 V2 R10.1 using a WAN connection Issue 1.0

Seminar report IP Telephony

UTT-GoIP800. Datasheet

Application Notes for Configuring Cablevision Optimum Voice SIP Trunking with Avaya IP Office - Issue 1.1

Analog Telephone Adapter Setup for Q-SYS Softphone

Manual PBX IP Version: 1.0

Enterprise Voice and Online Services with Microsoft Lync Server 2013

Abstract. Avaya Solution & Interoperability Test Lab

Application Notes for Phonect SIP Trunk Service and Avaya IP Office 7.0 Issue 1.0

Application Notes for Configuring CenturyLink SIP Trunking with Avaya IP Office Issue 1.0

Application Notes for OneAccess-Telstra Business SIP with Avaya IP Office Release 11 SIP Trunking - Issue 1.0

Application Notes for Configuring Windstream SIP Trunking with Avaya IP Office - Issue 1.0

2FXS Analog Telephone Adapter

Application Notes for Configuring SIP Trunking between CenturyLink SIP Trunk (Legacy Qwest) Service and Avaya IP Office R8.0 (16) Issue 1.

Cisco Unified Survivable Remote Site Telephony Version 7.1

Z24: Signalling Protocols

Cisco Exam Questions & Answers

Multimedia Applications. Classification of Applications. Transport and Network Layer

AVANTUS TRAINING PTE PTE LTD LTD

Avaya PBX SIP TRUNKING Setup & User Guide

Configuration guide for Switchvox and PAETEC

Ekiga Manual Damien Sandras Christopher zanee Warner Matthias Redlich. This documentation is for version 2.00 of Ekiga.

REACTION PAPER 01 TEL 500

FREUND SIP SW - V Intercom Setup

SAPEX. The All in One Embedded IP PBX Server

Application Notes for Avaya IP Office Release 8.0 with AT&T Business in a Box (BIB) over IP Flexible Reach Service Issue 1.0

Mitel SIP CoE Technical Configuration

IPNext 187 Hybrid IP-PBX System High-performance Hybrid IP-PBX Solution

Cisco Survivable Remote Site Telephony Version 4.2

Application Notes for Configuring SIP Trunking between TelePacific SmartVoice SIP Connect and an Avaya IP Office Telephony Solution 1.

Abstract. Avaya Solution & Interoperability Test Lab

Level 1 Technical. Microsoft Lync Basics. Contents

X-Communicator: Implementing an advanced adaptive SIP-based User Agent for Multimedia Communication

Expandable SIP Phone System. Expandable SIP Phone System

ATCOM IPPBX IP01 Product Guide Version: VoIPon Tel: +44 (0) Fax: +44 (0)

Sipdex M200s IPPBX. Embedded. Support Any IP Phone. Softphone and SIP Client App

Configuration Guide for Integration of Spectralink PIVOT with UNIVERGE 3C

ShoreTel & Windstream for SIP Trunking (Native)

DMP 128 Plus C V DMP 128 Plus C V AT. RingCentral Configuration Guide REVISION: 1.0 DATE: JUNE 26 TH 2018


CDCS: a New Case-Based Method for Transparent NAT Traversals of the SIP Protocol

Transcription:

An investigation into the provision of extended video capabilities in ilanga Fred Otten, Alfredo Terzoli and Peter Clayton Department of Computer Science Rhodes University, Grahamstown, South Africa g05o5894@campus.ru.ac.za, a.terzoli@ru.ac.za, p.clayton@ru.ac.za Abstract ilanga is a complete, cost effective, computer based voice PBX. It is capable of connecting different endpoints using different protocols and delivering high quality voice with value-added services. It is not, however, capable of video transport. The channel based architecture of Asterisk, the core of ilanga, should, in principle, allow the transport of video with relative ease. This paper introduces ilanga and Asterisk, investigates the channel architecture and shows how video capabilities are made available in ilanga. It also details the configuration of SIP video within Asterisk. 1 Introduction Next generation networks are having a profound impact on the telecommunications industry. These next generation networks need to be capable of high quality voice and video transmission with relevant value-added services. Voice over IP and Video over IP are vital components of next generation networks. There is a commercial and a practical drive from the industry, which makes these topics very applicable for research. Next generation public branch exchanges (PBX) are emerging with facilities for voice and video analogous with the concept of next generation networks. These PBXs are bundled with services such as conferencing, call forwarding and call parking for users of voice and video. ilanga is a full featured PBX developed at Rhodes University. It currently only provides high quality voice over multiple protocols, with services such as voicemail, call forwarding and call parking. In order for ilanga to be a true next generation PBX, it needs to also provide facilities for video. This investigation assumes ilanga is in place and aims to find out whether voice functionality can be easily extended to video. The channel-based architecture of Asterisk, which is the main component of ilanga, offers the potential for this extension. Channels may use the services provided in Asterisk such as conferencing, call transfer and call parking. If a new channel is created, it also inherits the services available in Asterisk. This has been shown to be effective for voice channels, however the extent of this inheritance for video and the support for video in Asterisk remains unanswered. This is the focus of this paper. This paper begins by providing background on the ilanga PBX, and expanding on the architecture. It then takes a look at the channel architecture of Asterisk, particularly discussing the provision of video using channels. It then takes a look at the SIP and H.323 channels in Asterisk, and provides information on setting up a SIP video phone in Asterisk. The paper ends of by taking a look at the provision of video conferencing and discussing the next steps to be taken in this investigation. 2 ilanga and Asterisk ilanga was developed using 3 Open Source components: Asterisk, SIP Express Router (SER) and OpenH323 Gatekeeper (OpenGK). Asterisk is the core component of ilanga, and in itself is a very powerful telecommunications package. To quote the Asterisk Handbook, Asterisk is quite possibly the most powerful, flexible and extensible piece of integrated telecommunications software available. [10] SER and OpenGK (also known as GNUGK) have been added to complement Asterisk by providing further functionality essential for a high quality voice PBX system. The architecture of ilanga and the relationships be- 1

Figure 1: ilanga system architecture tween its components are illustrated in figure 1. We now take a closer look at the components and how they fit together. is an important component of an H.323 network [9]. Some of its responsibilities include: management, authentication and alias address management. These are essential for H.323 users, and therefore OpenGK was added to ilanga. In ilanga, H.323 users are managed by OpenGK and communicate with Asterisk via the Asterisk H.323 gateway. Asterisk is configured to act as an H.323 gateway to achieve peer-topeer communication between OpenGK and Asterisk. This architecture means that H.323 users can enjoy all the benefits of having a gatekeeper such as management and alias address functionality and still have access to the functionality and services provided by Asterisk such as conferencing, call forwarding and call parking. They will also be able to speak seamlessly and transparently to different protocols. More information about OpenGK and its integration into ilanga may be found in [6]. 1. Asterisk [1] is the core-switching software and handles transactions at a call signalling level providing support for the integration of multiple protocols. It also deals with the media layer, providing codec translation. This means that Asterisk is able to provide seamless communication between different endpoints. More information about the role of Asterisk in ilanga may be found in [6]. 2. SER [2] is an open, high performance SIP proxy, location and redirect server. Asterisk has a built-in SIP proxy, however it is limited in functionality and only acts as a minimal SIP location server. It was thus decided to incorporate a more advanced SIP proxy into the ilanga PBX. SIP users authenticate with SER and communicate with Asterisk via the Asterisk SIP proxy. The Asterisk dialplan is configured to forward all SIP requests to SER thus achieving peerto-peer communication between SER and Asterisk. This architecture means that SIP users can enjoy all the functional benefits of SER such as instant messaging, presence and forking (ringing on multiple active clients all using the same address) and still have access to the functionality and services provided by Asterisk such as conferencing, call forwarding and call parking. They will also be able to speak seamlessly and transparently to different protocols such as H.323. To the SIP user, ilanga seems as a single conglomerate. More information about SER and its integration into ilanga may be found in [6]. 3. OpenGK [3] is an open source, full featured H.323 gatekeeper. Asterisk does not provide H.323 management or alias address functionality (these are functionalities provided by a gatekeeper), it just behaves as an H.323 terminal or gateway. A gatekeeper Figure 2: ilanga implementation [6] The final component required by a good voice PBX is a breakout into the PSTN 1 to provide the ability to call outside of the network. This is provided by installing an Integrated services digital network (ISDN) interface. The final implementation of ilanga is illustrated in figure 2. The combination of these 3 components, the ISDN interface and the features provided by Asterisk make ilanga a complete voice telecommunications package. It provides forking, voice mail, call forwarding, call transfer and call parking. It also has an interactive voice response system (IVR) (basically menu systems eg. Press 1 for ), and it is not too difficult to design your own services such as a weather reader. ilanga is a powerful, cost effective voice PBX, however the lack of support for video is a problem. In theory 1 PSTN stands for public switched telephone network. 2

the channel based architecture of Asterisk should be extensible and able to support video. It is for this reason that the Asterisk channel structure is the particular focus of this investigation. Figure 4: Illustration of the channel concept 3 The Asterisk Architecture and Channels Asterisk has a simple architecture that is rather different from most telephony products. It is designed to act as a middle-ware, providing seamless communication between a wide range of different telephony technologies. Figure 3: Asterisk Architecture [10] Figure 3 illustrates the architecture of Asterisk. More information can be found in [10, 6]. The channel based architecture is largely where the power of Asterisk lies. Each end of the call is abstracted into a channel and they are bridged by Asterisk to provide communication between them. For each of the channels, the relevant channel drivers handle the appropriate signalling, and pass codec translations to the Asterisk Core before transferring the media between the endpoints. This results in seamless conversation between the two ends. This means that the handling of the media largely depends on the implementation of the codecs within the Asterisk core. Figure 4 illustrates the channel concept in action. In this example we have two endpoints using different voice codecs and different signalling protocols. Person A is utilising a SIP phone with the audio encoded using the GSM codec, while person B is using an H.323 phone and the G.711u codec for audio encoding. The channel based architecture of Asterisk creates the possibility of seamless communication between these endpoints. Person A will be using the SIP channel driver, while person B will be using the H.323 channel driver. These channel drivers are compiled as a system object file, and used by Asterisk, which is written in C. When the call is initialised, Asterisk creates two channel structures using the appropriate channel drivers. It also determines which codecs are going to be used and finds the least common denominator between the two, using a function in Asterisk, so that maximum performance may be achieved in the translation process. Both of these channels are created using an instance of a universal structure called ast_channel. These structures are bridged using a pointer located in the ast_channel struct, thus remaining separate, but linked through their pointers which reference each other. This allows communication to then take place between these two endpoints. There are many facilities available to the channels in Asterisk. These include services such as conferencing, call forwarding, call parking, music on hold, and a large range of applications, written using Asterisk Gateway Interface (AGI) Scripts and the C API. This provides a lot of flexibility, and allows easy service creation within Asterisk. We have found that video is available in certain channels if they are configured correctly. This means that we are a step closer to video in ilanga. 4 SIP Video SIP 2 is a signalling protocol which has been becoming more prominent recently. It is a text-based protocol modeled on the common protocols HTTP 3 and SMTP 4. More 2 SIP stands for Session Initiation Protocol and is a signalling protocol for setting up real time sessions 3 HTTP stands for Hypertext Transfer Protocol and is the protocol used for web browsing 4 SMTP stands for Simple Mail Transfer Protocol and is used for email transfer 3

information about SIP may be found in [8]. Asterisk comes with a SIP channel driver written in C and compiled as a system object. We have found that it does support video if configured correctly. The channel driver creates a structure called sip_pvt, which contains two pointers, rtp and vrtp, for media streams. The channel driver uses the SDP 5 information from the SIP packet to determine whether the media is video or audio. Based on this information, it then utilises the vrtp stream for video based media or the rtp stream for voice based media. In this section we will outline how to configure the SIP channel to be capable of video, and demonstrate the results. Figure 6: Setup of windows messenger 5.0 Figure 5: Test setup for SIP video Figure 5 shows the setup of the testing environment used for testing SIP video. We are using two Logitech webcams, each connected to a Pentium 4 3.0 GHz machine running Windows XP. For a video client, we have chosen to use Windows Messenger 5.0. While there are many SIP soft-phones available, there are very few soft-videophones available. Messenger seems to be the best client available, and is available freely from the web. Newer versions of Messenger have dropped the support for setting up SIP directly, so thus Messenger 5.0 is used. We setup Messenger to use the Asterisk box as the SIP server. This machine is also a Pentium 4 3.0 GHz machine running the current stable version of Asterisk, Asterisk 1.0.8, on Gentoo Linux. To make video possible in Asterisk we need to edit the main SIP configuration file of Asterisk (sip.conf). Below is an extract of what the configuration file should contain to enable video in the SIP channels. [general] videosupport=yes allow=h261 allow=h263 This configuration allows the usage of the codecs H.261 and H.263, and enables video support. H.261 and H.263 5 SDP stands for Session Description Protocol and is a protocol for describing media, protocols and codec formats to be used in a session are the prominent video codecs used for video telephony in commercial video phones and most video conferencing systems. Asterisk does support these codecs, so it is important that our channels are setup with the ability to make use of these codecs. The next step is to add a registration account for the endpoint to use when signing in. This is also done in the sip.conf file. Below is another extract from this file to set up an account for registration with the Asterisk SIP proxy. [4000] type=friend context=default username=4000 secret=1234 host=dynamic callerid= SIP Video Phone This is identical to the configuration used for setting up a SIP voice client in Asterisk. In this example, we have created an account 4000 on our SIP proxy with a password of 1234 and a caller id of SIP Video Phone. These settings just need to be inserted into the video phone along with the IP address of our Asterisk box. Video calls will then be possible through Asterisk. More information about setting up sip.conf may be found in [4]. In order for us to be able to dial the video phone from another video phone, we need to insert an extension into the Asterisk dialplan. This is located in another configuration file called extensions.conf. Below is an extract from this configuration file which makes dialing our video phone from another phone a possibility. 4

[default] exten => 4000,1,Dial(SIP/4000) We have now registered the video phone as a number 4000. By dialing this number from another phone we will be able to communicate with our video phone. To read more about the dialplan see [4]. Figure 6 illustrates the setup of Windows Messenger as a video phone. First you open the option dialog box, and navigate to the Account tab. Next, you tick the box for a SIP Communications Service, and enter the SIP URL as your Sign-in name. The SIP URL is of the form username-in-asterisk@ip-address-of-server. Finally, you click on the Advanced button and select Configure settings. You then input the server IP address and choose UDP 6 as the protocol for connection. This configuration results in a video phone using Windows Messenger. The results of a call between two Windows Messenger endpoints may be seen in figure 7 over the page. 5 H.323 in Asterisk H.323 is one of the original protocols used for Voice over IP. It is a complex protocol containing many sub-protocols and many standards. It is used in many legacy video IP phones, such as the Polycomm video phones, and other ISDN based video conferencing units. These units are expensive and therefore it is important that we provide an interface for these units to communicate with ilanga. This is done with video support for H.323 in Asterisk. For more information on the H.323 protocol refer to [9]. A default installation of Asterisk does not include a channel driver compiled for H.323. We have sourced 3 different H.323 channels. 1. The OH323 channel driver was the first H.323 channel available for Asterisk. It has since undergone a lot of improvements and developed into a really good H.323 channel driver. It is now capable of a much higher load and is still an active project. OH323 is not included with Asterisk because of licencing issues. 2. The H323 channel driver written by Jeremy McNamara to provide better usage of the RTP stack than the older versions of OH323. It claims to support a higher load than the older OH323 channel drivers [4]. This H.323 channel is included with Asterisk. 3. Objective systems have developed an H.323 channel driver, OOH323, in C++. It is rather new and unexplored, but looks like in time it will be very promising. It is currently included in the asterisk-addons 6 UDP stands for User Datagram Protocol and is a connectionless unacknowledged transport protocol package for the development version (unstable) of Asterisk. For each of these drivers, one has to collect the correct versions of OpenH323 and Pwlib, which are H.323 libraries, and then compile the channels with the correct configuration. The OOH323 channel is not considered suitable for ilanga, as it is currently only available for the unstable version of Asterisk. The H323 channel driver may have provided improvements to the RTP stack, however newer releases of OH323 have surpassed this, and there is little support available for this driver. ilanga has been successfully using the older OH323 channel, we have decided to upgrade it to the newer version of OH323 because it seems to be the best option available. Netmeeting, which is provided in the default installation on Windows XP, is used as a client for the H.323 endpoints. 6 Video Conferencing Asterisk already provides facilities for voice conferencing using an application called MeetMe. This application is primarily designed to set up a conference room for voice clients, however it provides a video option for video clients. This means that we can set up conference rooms to provide video conferencing facilities once the video channels are setup. It must be noted that in order to use the MeetMe application, a Zaptel card is required. Below is an extract obtained for Asterisk regarding the MeetMe application. [Synopsis]: MeetMe conference bridge [Description]: MeetMe([confno][,[options][,pin]]): Enters the user into a specified MeetMe conference. Please note: A ZAPTEL INTERFACE MUST BE INSTALLED FOR CONFERENCING TO WORK! The option string may contain zero or more of the following characters: v -- video mode In order to join a conference room, we need to define an extension to be dialed by the parties participating in the conference. Below is an extract from extensions.conf. exten => 6000,1,MeetMe(6000,v,1234) 5

Figure 7: SIP video in operation This creates a video conference room. When 6000 is dialed, Asterisk executes the MeetMe application and the dialee can join the conference using the pin 1234. By specifying other options to the MeetMe application it is possible to create a conference room which does not require a pin. More detail on the MeetMe application, and the dialplan may be found in [4]. 7 The next step A web front end has been developed for ilanga this is detailed in [5]. This web front end provides facilities for making calls, checking prepaid balances and setting telephone preferences. It also contains a telephone directory and a database of previous calls. Many video and voice end points, for example Netmeeting and Windows Messenger, are not able to send DTMF tones 7 (tones sent when pressing keys on the phone) while in a call. This means that features such as call transfer and call parking are not available to these users. This front end will be extended to include call parking and call transfer facilities. Figure 8 illustrates the current user interface with the directory tab selected. The changes we intend to make are as follows: 1. There is a green button on the bottom which illustrates the status of the call. This changes to red if the caller is busy. If this is the case then you will be able to click on this red button, and park the current call. 7 DTMF stands for Dual Tone Multi-Frequency, DTMF tones are the tones sent when pressing keys on a phone Figure 8: ilanga user interface You will also be able to drag it to another person in the directory to transfer the call. 2. Currently when you click on a person in the directory it brings up a selection to chose which phone you would like to call them on, we intend to change this so that when you are in a call it will bring up a window asking if the user would like to transfer the current call to that person This functionality will not only be useful to people using video phones, but also those using softphones which don t support the sending of DTMF tones while in a call. 6

8 Conclusion The problem of getting video operational in Asterisk, and hence in ilanga, is essentially an engineering problem. We have to work with the existing channels, adapting and configuring them appropriately to provide video capabilities. The existing features in Asterisk are inherited, and we are able to do conferencing, call transfer and call parking and use other services with video channels. It also becomes a trivial extensions to provide facilities such as video on hold and videomail. We have shown that video is possible in Asterisk, using the channel based architecture, and demonstrated the inheritance of features from Asterisk. Through this, we have provided extended video capabilities in ilanga. References [1] Asterisk, www.asterisk.org [2] SIP Express Router, www.iptel.org/ser [3] OpenH323 Gatekeeper, www.gnugk.org [4] Various Parties. VoIP info. Internet forum located at: http://www.voip-info.org. 2005 [5] J. Hitchcock, J. Penton, A. Terzoli, The design of a graphical frontend for and Asterisk-based software PBX, South African Telecommunications Networks and Appliances Conference, September 2004, Spiers [6] J. Penton, A. Terzoli. ilanga: A Next Generation VoIP-based, TDM-enabled PBX, South African Telecommunications Networks and Appliances Conference (SATNAC), September 2004, Spiers [7] B. Schwarz. Asterisk Open-Source PBX. Linux Journal Vol. 2004, Issue 118, pg. 6. Specialized Systems Consultants, Inc. Seattle, WA, USA February 2004 [8] M. Handley, H. Schulzrinne, E. Schooler and J. Rossenberg. SIP: Session Initiation Protocol. IETF Request for Comments 2543. March 1999 [9] H. Liu and P. Mouchtaris. Voice over IP signalling: H.323 and beyond. IEEE Communications Magazine. 2000 [10] M. Spencer, M. Allison, C. Rhodes, et al. Asterisk Handbook (Version 2). Digium. March 2003 7