VOIP Asterisk PDF
VOIP Asterisk PDF
VOIP Asterisk PDF
2 Principles of VoIP
VoIP works like that. First the A/DC (Analog to Digital Converter) to convert analog voice to digital signals. Now the bits have to be compressed in a good format for transmission. Then we have to insert our voice packets in data packets using a real-time protocol (RTP over UDP over IP). For signaling between customers terminal unit we need a signaling protocol ITU-T H.323 or SIP(Session Initiate Protocol). At Rx site we have to disassemble packets, extract data, then convert them to analog voice signals and send them to sound card (or phone). All that must be done in a real time fashion cause we cannot waiting for too long a vocal answer. On voice transport via packet oriented network could be respect requirements of QoS (Quality of Service) See below article 3.
Formats PCM (mu-law, A-law) ADPCM LD-CELP CS-ACELP MP-MLQ LPC-10 GSM
Processing of sampled signal Note Speed [kbit/s] 64 kbit/s (8 kHz * Uncompressed data 8bit) Transmit of difference between 32 samples linear prediction 16 linear prediction 8 True speech 6,3 compression linear prediction 2,5 VSELP based 9,6 14,4
7 6 5 4 3 2 1
RM-OSI layer model Name of Layer Application Presentation Session Transport Network Link Physical
Protocol VoIP data, H.323, SIP or MGCP RTP UDP IP Frame (Eth. ATM..) Medium
Firstly, VoIP doesn't use TCP because it is too heavy for real time applications, so instead a UDP (datagram) is used. Secondly, UDP has no control over the order in which packets arrive at the destination or how long it takes them to get there (datagram concept). Both of these are very important to overall voice quality (how well you can understand what the other person is saying) and conversation quality (how easy it is to carry out a conversation). RTP solves the problem enabling the receiver to put the packets back into the correct order and not wait too long for packets that have either lost their way or are taking too long to arrive (we don't need every single voice packet, but we need a continuous flow of many of them and ordered).
0 1 2 V=2 P 3 X 4 5 6 CC 7 8 M 9 1 0 1 2 3 PT 4 5 6 7 8 9 2 0 1 2 3 4 5 6 7 sequence number 8 9 3 0 1
Time stamp Synchronization source (SSRC) identifier Contributing source (CSRC) identifiers ......
Where: V indicates the version of RTP used P indicates the padding, a byte not used at bottom packet to reach the parity packet dimension X is the presence of the header extension CC field is the number of CSRC identifiers following the fixed header. CSRC field are used, for example, in conference case. M is a marker bit PT payload type For a complete description of RTP protocol and all its applications see relative RFCs 1889 and 1890 2.3.2 RSVP (Resource ReSerVation Protocol) There are also other protocols used in VoIP, like RSVP, that can manage Quality of Service (QoS). RSVP is a signaling protocol that requests a certain amount of bandwidth and latency in every network hop that supports it. For detailed info about RSVP see the RFC 2205.
2.3.3 ITU-T H.323 signaling protocol H.323 protocol is not a separate protocol. H.323 covers plenty of protocol for transmit voice or video over IP on different transport networks like ATM, ISDN, PSTN. See below tab. 4
H.321
H.322
H.323
H.324
1990
ISDN-BRA
1995
ISDN-PRA ATM LAN
1995
Guaranteed Bandwidth Packet switched networks
1996
NonGuaranteed bandwidth packet switched networks Ethernet H.261 H.263 G.711 G.723 G.722 G.728 G.728 H.225.0 H.323 H.245 I.400 TCP/IP T.120
1996
PSTN or POTS analog phone system
Video Audio
H.261 H.263 G.711 G.722 G.728 H.221 H.231 H.243 H.230 H.242 I.400 T.120
H.221 H.242 H.243 H.231 H.243 AAL I.400 TCP/IP T.120 T.120 Tab. 4 -Over view of H.32x protocol
H.223
Concerning VoIP, H.323 can carry audio codec G.711, G.722, G.723, G.728 and G.729 while for video it supports H.261 and H.263. H.323 protocol is used, for example, by Microsoft Netmeeting to make VoIP calls. The schema of H.32x network is on the figure 2.
The H.323 encapsulated 4 primary components: terminal - Clients that initialize VoIP connection. Although terminals could talk together without anyone else, we need some additional elements for a scalable vision. gateway - points of reference for conversion TCP/IP PSTN. Serves like as translator of different protocols. MCU (Multipoint Control Units)- to provide conference (3 or more terminals) gatekeeper - that essentially operate: o address translation service, to use names instead IP addresses o admission control, to allow or deny some hosts or some users o bandwidth management
2.3.4 SIP (Session Initiate Protocol) signaling protocol Session Initiate Protocol specified by IETF (The Internet Engineering Task Force) in the recommendation RFC 2443, provides the necessary protocol mechanisms so that end systems and proxy servers can provide services:
o call forwarding o callee and calling ``number'' delivery, where numbers can be any (preferably unique) naming scheme; o personal mobility, i.e., the ability to reach a called party under a single, locationindependent address even when the user changes terminals; o terminal-type negotiation and selection: a caller can be given a choice how to reach the party, e.g., via Internet telephony, mobile phone, an answering service, etc.; o terminal capability negotiation; o caller and callee authentication; o blind and supervised call transfer; o invitations to multicast conferences. Extensions of SIP to allow third-party signaling (e.g., for click-to-dial services, fully meshed conferences and connections to multipoint control units (MCUs), as well as mixed modes and the transition between those) are available. SIP addresses users by an email-like address and re-uses some of the infrastructure of electronic mail delivery such as DNS MX records or using SMTP EXPN for address expansion. SIP addresses (URLs) can also be embedded in web pages. SIP is addressingneutral, with addresses expressed as URLs of various types such as SIP, H.323 or telephone (E.164). SIP can also be used for signaling Internet real-time fax delivery. This requires no major changes. Fax might be carried via RTP, TCP (e.g., the protocols discussed in the Internet fax WG) or other mechanisms. SIP is independent of the packet layer and only requires an unreliable datagram service, as it provides its own reliability mechanism. While SIP typically is used over UDP or TCP, it could, without technical changes, be run over IPX, or carrier pigeons, frame relay, ATM AAL5 or X.25, in rough order of desireability.
4 Simple solution of VoIP without especially HW for testing transmit of voice over IP based network
The ground of this solutions is server with an ISDN modem card and Open source Asterisk software. Asterisk provides all of the features you would expect from a PBX (Private Branch Exchange) and more. Asterisk does voice over IP in protocols (SIP and H.323), and can interoperate with almost all standards-based telephony equipment using relatively inexpensive hardware. Clients use a software with a protocol H.323 like a MSNetmeeting or SIP protocol based clients like a Xlite, SjPhone. Clients are connected to Ethernet switch over 802.11x Wireless Access point or direct on switch with Ethernet card 10/100Base-Tx.
Hence we have to measure below stated parameters for test quality of IP networks for realtime depend services like as VoIP. QoS parameters are defined in recommendation ITU-T I.350 and ITU-T Y.1541. The parameters are: Loss rate Throughput Delay Distribution of delay Distribution of delay variation
First we will test parameters QoS. Second we will test himself voice transmission over IP network with different voice codec. For test of voice we use Mean Opinion Score (MOS) test.
5.2.2 CRUDE (Collector for RUDE) CRUDE is the receiver and logging utility for flows that are generated with the RUDE tool. In the default operation mode CRUDE prints the information to standard output, so you'll have to redirect it to file if you like to process it later on.
5.2.3 QoS-plot Qosplot is a tool that takes as input a set of text log files created by CRUDE [9] and produces as output the data and command files for gnuplot [11], to plot diagrams depicting the QoS characteristics. 5.2.4 GNU-Plot Gnuplot is a command-line driven interactive function plotting utility for UNIX, DOS, VMS, and many other platforms. It was originally intended as graphical program which would allow to visualize mathematical functions and data.
5.3.1 The fidelity of Measuring The fidelity of measuring depend on synchronization of time between sides of measuring [12]. The CRUDE/RUDE can use synchronization of time from: Autonmous celsium clock on all sides (very expensive) GPS receiver (available) LAN (simpler but less fidelity)
We will use the simplest and cheap solution of LAN synchronization via The Network Time Protocol.
On the figure 5 you can see the order of lab network for test QoS parameters needy for time depend services.
5.4.1 Simulation of VoIP flows With simulation utilities like CRUDE/RUDE we can not hollow exactly simulate VoIP flows (with signalization etc.) but we can good approximate a real traffic. In Tab. 5 you can see the most applied codec for VoIP, bitrates and number of Samples per period.
Codec
G.711 G.723.1 G.723.1 G.726 G.728 G.729
Speed [kbit/s]
64 5,3 6,3 32 16 8
Alg.(modulation)
samples/Time
8bits/125 s 20Bytes/30ms 24Bytes/30ms 2-5bits/125 s 16bits/625 s 10Bytes/10ms
0,125 PCM 37,5 MP-MLQ 37,5 ACELP 0,125 ADPCM 0,625 LD-CELP 15 CS-ACELP Tab. 5 - Summary of codecs in VoIP
For Test i choose most apply G.723.1 codec with rate 6,3 kbit/s. This flow we can approximate with RUDE/CRUDE utilities.
5.4.2 Set-up RUDE/CRUDE for test RUDE have a configuration file for example config.cfg. In this file we can specify parameters of flow. See below Tab. 6
## FLOW 1: (flow ID = 10 with address of flow 3002) G.723.1 6,3 kbit/s ## ## Starts 1 second after the START time with following parameters: ## 33 packets/second with 24 bytes/packet = 792bytes/sec = 6,34 kbit/s ## from IP address 192.168.0.52 on port 10001 ## Ends on 180s after start 1000 0010 ON 3002 192.168.0.51:10001 CONSTANT 24 33 180000 0030 OFF Tab. 6 -Example configuration of flows in RUDE config file for G.723.1 6,3 kbit/s
The time of test we set to 3 min, while in telecommunication was measured average time of calls to 2 - 3 min. If we measured error rate of packets. We would set longer time of test. For example 1h or more. In the tab. 3 you can see the result of test for flow G.723.1 6,3 kbit/s. The higher speed of flow (round 14 kbit/s) is caused payloads of IP/UPD packets (40Bytes).
Behind the test we measured a loss of 3 packets and delay just about 180ms. This relative big delay is caused using of WiFi equipment. The WiFi use an air-interface which could be disturbanced with many of noises hence data must be very good protected with scrambling, Reed Saalamon, CRC, etc. This operations need a lot of time. The total delay is a sum of all delay. It mean sum of algorithm delay, transport delay
Filename, stream Packets sent Packets received Packets lost Loss rate (IPLR) [-] Max. throughput [b/s] Min. throughput [b/s] Average throughput [b/s] Max. delay [ms] Min. delay [ms] Average delay (IPTD) [ms] Max. delay variation [ms] Min. delay variation [ms] Average delay variation (AvIPDV) [ms] IP Packet Error Ratio, IPER Approximation of flow G.723.1 5911 5908 3 0,17.10-3 18304,00 0,00 13660,98 183058,28 183057,61 183057,65 0,54 -0,03 0,00 Un-measured
On the second side we receive data via CRUDE and then plot it via qosplot and gnuplot. See follow diagrams:
Through recommendation ITU-T Y.1541 are defined availability of service [7]. We can compare the measured ed values in tab. 3 and diagrams 7 9 with the recommendation ITU-T Y.1541. (See below tab. 8). After compare we can say that our test network meets in all parameters in all classes via Recommendation of QoS ITU-T Y.1541. Note: in the further study would be interesting to try power test with more differ flows together. And test pull on the delay and lost of packets.
Recommendation ITU-T Y.1541 IP QoS Classes and Objectives QoS Classes and Objectives
Network Performance Parameter IP packet transfer delay (IPTD) IP packet transfer delay variation (IPDV) IP packet loss ratio (IPLR) IP packet error ratio (IPER) Nature of Objective Upper bound on the mean IPTD Upper bound on the 1-10-3 quantile of IPTD minus the minimum IPTD Upper bound on the packet loss probability Upper bound Class 0 Class 1 Class 2 Class 3 Class 4 Class 5
100ms
400ms
100ms
400ms
1s
Unspec.
50ms
50ms
Unspec.
1.10-3
1.10-3
1.10-3
1.10-3
1.10-3
Unspec.
1.10-4
Unspec
Fig. 9 -Full Asterisk PBX exchange with VoIP, ISDN and POTS clients
interoperate with almost all standards-based telephony equipment using relatively inexpensive hardware. Asterisk provides Voicemail services with Directory, Call Conferencing, Interactive Voice Response, Call Queuing. It has support for three-way calling, caller ID services, ADSI, SIP and H.323 (as both client and gateway). Check the Features section for a more complete list. Asterisk needs no additional hardware for Voice over IP. For interconnection with digital and analog telephony equipment, Asterisk supports a number of hardware devices, most notably all of the hardware manufactured by Asterisk's sponsors, Digium. Digium has single and quad span T1 and E1 interfaces for interconnection to PRI lines and channel banks as well as a single port FXO card and a one to four-port modular FXS and FXO card. Also supported are the Internet Line Jack and Internet Phone Jack products from Quicknet. Asterisk supports a wide range of TDM protocols for the handling and transmission of voice over traditional telephony interfaces. Asterisk supports US and European standard signaling types used in standard business phone systems, allowing it to bridge between next generation voice-data integrated networks and existing infrastructure. Asterisk not only supports traditional phone equipment, it enhances them with additional capabilities. Using the Inter-Asterisk eXchange (IAX) Voice over IP protocol, Asterisk merges voice and data traffic seamlessly across disparate networks. While using Packet Voice, it is possible to send data such as URL information and images in-line with voice traffic, allowing advanced integration of information.
6.1.1 Hardware used for building of Asterisk We can use common PC machine, but power of PC is depend on number of calls. For small area with a few users who have generated a small traffic we can use older inefficient hardware. For example power of machines depending on number of callers we can see below in tab. 9 Machine
Pentium II, 300MHz, 128 MB
For building an exchange I had in hand PII machine with 256 MB RAM, 40 GB HDD with Linux Redhat 9. After Asterisk installation I tested capability of this PBX exchange which have been running on this machine. (installation of PBX is described in next subchapter). The exchanges are assessed to number of concurrent calls in time. In Tab. 10 is described number of new calls during one second, number of concurrent calls, retranslate calls, successful calls, failed calls, unaccepted calls and average response on this machine.
Power test PII 400, 256 MB RAM with average time of calls tcs=10 s, time of test ttst=120 ms, G.729 codec
New calls during 1 sec. Concurent calls Total Calls created Retranslate calls Successfull calls Failed calls Timeout calls Unaccepted calls Average response [ms] CPU [%]
1 2 3 5 6 7
11 21 31 52 62 210
0 0 0 0 0 2306
0 0 0 0 0 2444
0 0 0 0 0 64
0 0 0 0 0 38
10 11 11 15 25 200
1 2 3 32 82 99
Note: For measuring loading of PBX I found interesting GNU utilities SIPp. SIPp is a performance testing tool for the SIP protocol. It includes a few basic Sip Stone user agent scenarios UAC (User Agent Client) and UAS (User Agent Server) and establishes and releases multiple calls with the INVITE and BYE methods. It can also read XML scenario files describing any performance testing configuration. It features the dynamic display of statistics about running tests (call rate, round trip delay, and message statistics), periodic CSV statistics dumps, TCP and UDP over multiple sockets or multiplexed with retransmission management, regular expressions and variables in scenario files, and dynamically adjustable call rates. For testing I used 10 s long period of calls and number of incoming calls was from 1 to 7 new calls during 1 s. For our PBX is maximum 6 new incoming calls during 1s. This traffic generate 62 concurent calls and PBX work without failed and retranslate calls yet. Elevation number of new call makes overload of PBX see tab. 11. The principle of test is on the figure 11. From PC are sending above defined SIP datagram to PBX on number 600. This number is reserved for demo test of PBX. (for our test we can use voice mailbox number 1000 too). The command for SIP flows is next: $./sipp [IP] sn UAC s600 r[n] d10 Where IP is IP of target machine, UAC defined User Agent Client, s is a call number, r defined number n of calls during 1 s, d is duration of call in seconds.
6.1.2 Installation and configuration The source code is available from ftp.dignum.com as a tarball. After download and unpack the tarball we can run make to build it and then make install. After installation we have to optional configure the PBX. Configuration files are stored in standard directory for configurations /etc/asterisk/. The detail description of configuration PBX is in next sub-chapter. When we have successful configured the PBX then we can run it in console mode with some debugging applied. If it does not start, check the hardware requirements. $ asterisk vvvvc. 6.1.2.1 Configuration files All of Asterisk is configured in text files, the Asterisk config files that are placed in the /etc/asterisk directory on a standard install. In the standard distribution, there are sample files with a lot of comments, explaining various configuration options. Configuration files we can portion to: Master configuration file Chanel configuration files Dialplan configuration files Asterisk configuration files /etc/asterisk
Master configuration file
Asterisk.conf
Configure agent channels Configure H323 channels Configure IAX channels Configure ISDN modems Configure MGCP channels Configure phone channels (Linux Telephony devices) Configure SIP channels Configure Skinny channels (Cisco SCCP) Configure vpb channels (Voicetronix cards) Configure Zap channels (Digium cards) The Dialplan Call Parking configuration. Note: This file has been renamed to features.conf as of Asterisk Used by res_data to arrange external configuration (e.g. thru ODBC) EnumLookup configuration Playtones tone definitions MeetMe conference configuration MusicOnHold configuration Queue configuration VoiceMail Configuration of Asterisk module loading Configuration of RTP ports for media Tab. 11 - Important configuration files
Most important files are extensions.conf, modem.conf, and channel configuration files like sip.conf if we use soft sip phones. Extensions.conf The Dialplan is configured in the extensions.conf file. It is Asterisk's most important configuration file. It controls how all incoming and outgoing calls are routed and handled. The extensions.conf file is portion to parts: General configure a few general settings in the section headed [general]. Globals section, you may define global variables (or constants) and their initial values. Contexts and Extensions After the [general] and [globals] categories, the remainder of the extensions.conf file is taken up by the definition of the Dialplan. The dialplan consists of a collection of contexts. Each context consists of a collection of extensions.
[general] static=yes writeprotect=no [globals] PHONE1=SIP/1234 PHONE2=SIP/2234 TRUNK=Modem/g1 TRUNKMSD=0 ;definition of global variables ;Soft SIP phone with nr.1234 ;Out ; MSD digits to strip (usually 1 or 0) ;extension for SIP-Xlite client
exten => _1X.,1,Dial(${TRUNK}/@<myMSN1>:B${EXTEN:},90,mTg) ;trunk connection to ISDN network via ISDN modem to nr. 1x..x
Modem.conf Configuration of modem and ISDN connections. For ISDN cards in Linux there are two drivers, either ISDN4Linux or CAPI4Linux. Which one to use depends on your ISDN card. Digium ISDN PRI cards use the ZAPATA drivers and are configure in the zapata.conf configuration file.
; Configuration for isdn4linux [interfaces] ; ; By default, incoming calls should come in on the "remote" context ; context=remote ; ; Modem Drivers to load ; driver=i4l ;isdn4linux - an alternative to i4l is to use chan_capi ; ;Default language ; language=en ; ; We can optionally override the auto detection. This is necessary ; particularly if asterisk does not know about our kind of modem. ; type=autodetect ; ; We can strip a given number of digits on outgoing dialing, so, for example you can have it dial "8871042" when given "98871042". ; ;stripmsd=1 ; ; Type of dialing ; dialtype=tone ;dialtype=pulse ; ; Mode selection. "Immediate" means that as soon as you dial, you're ;connected and the line is considered up. "Ring" means we wait until the ;ring cadence occurs at least once. "Answer" means we wait until the ;other end picks up. ; ;mode=answer mode=ring ;mode=immediate ; ; List all devices we can use. ; ISDN example (using i4l) ;msn=39907835 ;msn number ;device => /dev/ttyI0 ;device => /dev/ttyI1
Sip.conf In Sip.conf file we can specify each SIP client. Each SIP client and server is identified by a block of text that looks like: [xxx] type=yyy parameter1=value parameter2=value
Where xxx is the username associated with the SIP client, or is an arbitrary name used by other configuration files to refer to this SIP device. Typically if a SIP phone has an extension number of 123, then its corresponding entry in this file will begin with [123]. Note that you still have to enable an extension 123 in your dial plan to reach this phone. The other way that incoming SIP requests are matched to [xxx] sections in this file, is to examine the IP address that the request is coming from, and look for a peer [xxx] section that has a matching Host=[value]. If Host = [dynamic], then no match is possible until the SIP client has registered.
[grandstream1] type=friend ; either "friend" (peer+user), "peer" or "user" context=from-sip username=grandstream1 ; usually matches the <A&NBSP;CLASS='WIKI'&NBSP;&NBSP;H REF='SECTION'>section title fromuser=grandstream1 ; overrides the callerid, e.g. required by FWD callerid=John Doe <1234> ;host=192.168.0.23 ; we have a static but private IP address host= dynamic nat=yes ; there is not NAT between phone and Asterisk canreinvite=yes ; allow RTP voice traffic to bypass Asterisk dtmfmode=info ; either RFC2833 or INFO for the BudgeTone mailbox=1234@default ; mailbox 1234 in voicemail context "default" disallow=all ; need to disallow=all before we can use allow= allow=ulaw ; Note: In user sections the order of codecs ; listed with allow= does NOT matter! ;allow=alaw ;allow=g723.1 ; Asterisk only supports g723.1 pass-thru! ;allow=g729 ; Pass-thru only unless g729 license obtained [xlite1] ;Turn off silence suppression in X-Lite ("Transmit Silence"=YES)! ;Note that Xlite sends NAT keep-alive packets, so qualify=yes is not needed type=friend username=xlite1 callerid="Jane Smith" <5678> host=dynamic nat=yes ; X-Lite is behind a NAT router canreinvite=no ; Typically set to NO if behind NAT disallow=all allow=gsm ; GSM consumes far less bandwidth than ulaw allow=ulaw allow=alaw
6.2.1 iFon soft-phone iFon supports both audio and video with Asterisk as well as Free World Dialup. It also interoperates with all major SIP phones, including Windows Messenger (4.7 and 5.0).
6.2.2 xLite soft-phone A SIP soft-phone with many PBX-like features. Open standards-based design allows for maximum network interoperation and integration. VoIP networks are expanding at a blistering pace, xLite is ready.
The X-Lite soft-phones provide standard PBX functionality. You can Touch-tones [DTMF], Multiple Proxies, Line Hold, Inbound Call 'Ignore', Inbound Call 'Go to Voicemail', Call Forwarding URI/URL, Voicemail URL, Dial/ Redial/Hangup, Dynamic CODEC Selection, Caller ID [SIP ID], Call Timer, Silence Threshold, Backspace/Clear/Delete, Mute, Microphone & Speakers Levels, Microphone & Speakers Meters, Push-to-Talk [PocketPC], Last Caller-ID, Recent Calls Dialed, Recent Calls Received, Sound Device Selection, Direct IP to IP Calling, New Familiar-looking Menu, Phonebook [Import/Export CSV], Speed Dial.
6.2.3 Sjphone soft-phone SJphone is a soft-phone which allows you to speak over Internet using any desktops, notebooks, PDAs, stand-alone IP phones, and even any traditional landline or mobile phones. It supports both SIP and H.323 industry open standards and is fully interoperable with most major Internet Telephony Service Providers (ITSP) and software and hardware manufacturers.
Fig. 13 - SJphone
6.2.4 Kphone softp-hone KPhone is a SIP (Session Initiation Protocol) user agent for Linux, with which you can initiate VoIP (Voice over IP) connections over the Internet. It supports Presence and Instant Messaging, and to some extent also video calls between two hosts.
6.2.5 LIPZ4 Zultys Softp-hone The LIPZ4 is a soft phone that runs on the Linux operating system. By using SIP for the call control, the LIPZ4 is compatible with other soft phones, IP phones, and IP phone systems or networks. When used with a speaker or headset and a microphone on your PC, the LIPZ4 is a cost efficient and convenient way to provide telephone communication. Use it within the enterprise to turn Linux desktops into telephones. Use it over the Internet to save money on long distance calls. The LIPZ4 can communicate point to point with another SIP endpoint or with a SIP application server or gateway. The LIPZ4 provides standard PBX functionality. You can transfer a call, put a call hold, forward all calls, or recall a number from the call log. When used within the enterprise with a SIP based system, the LIPZ4 provides you with a fully functional phone. When used to communicate point to point with other soft phones (mesh configuration) you can obtain basic PBX functionality with a community of users.
Phone
iFone SJphone X-Lite KPhone LIPZ4
Protocol
SIP/H.323 SIP/H.323 SIP SIP SIP
Codec
OS
PBX functions
No No Yes No Yes
G.729A,G.723.1, Lin, Mac, Win GSM/AMR, G.722 G.711au, GSM Lin, Mac, Win G.711au, GSM, Lin, (only under iLBC, SPX, Wine), Win Not published rec. Lin. codec Not published rec. Lin. Codec Tab. 15 -Summary of software phones
Note: Note that there is an alternative method to use ISDN hardware within Asterisk that employs the CAPI channel driver (chan_capi); however this channel driver is not part of the standard Asterisk code distribution. Most analog modems provide half-duplex only, and Asterisk doesn't provide a simple path to integrate those into the system.
6.5 Example of configuration Asterisk PBX in small network with SIP klients and ISDN connection to ISDN network
In build of PBX i used a network equipment available in Lab of Signal processing on faculty of electrical engineering (FER) in Zagreb. The solution come out from figure 3 in the chapter 4. The core of PBX is a Linux machine (for detail see sub-chapter 6.1.1) with name tonka.zesoi.fer.hr connected to LAN via 100 Mbit Ethernet adapter. Connection into ISDN network is possible through ISDN card.
6.5.1 Configuration of ISDN modem for outgoing calls to ISDN network In connection to ISDN network I had in hand a cheep PCI passive ISDN card with a Winbond 6692 chipset. For parameters of this card see below. ISDN Winbond 6692 chipset
ISDN interface ISDN signalizing B channel protocol S/T (ITU-T I.430) DSS1 (EuroISDN) Multi-link PPP/128 kbit/s PPP async to sync HDLC transparent CAPI 2.0 compatible Yes Computer interface PCI 2.0 Tab. 18 -Specification of ISDN modem
6.5.1.1 Installation of ISDN modem For ISDN cards are two drivers in Linux, either ISDN4Linux or CAPI4Linux. I selected the first driver ISDN4linux because CAPI is not included in the Asterisk distribution. ISDN4linux drivers should be supported like module or direct in Linux kernel (from ver. 2.2 and more). First we have to make sure if Linux has the isdn4linux module installed, i.e with modprobe. For ISDN card with Winbond 6692 chipset:
$ modprobe hisax type=13
If module was not install we can recompile kernel with ISDN HiSax driver for passive ISDN cards and Windbond 6692 based card. See bellow.
6.5.1.2 Testing the card and the physical connection For testing of physical connection we can use Minicom or another program with similar functionality. After start of Minicom isdn0 (nowadays you have to use Minicom -s isdn0) we have to setting port (ctrl-AO), /dev/ttyI0 as the device. For modem we can set init string AT&E6130578, which define MSN, Speed to 38400 or whatever; it doesn't really matter, as the speed will be 64kb/s anyway. Last save these settings and chose exit (not exit Minicom ). Minicom will now initialize the "modem", and then connected it to the ISDN modem emulator. We can try to write AT commands. If we put AT we should get a response OK. The ATI1 command return device Information ("ISDN for Linux...") or AT&V show current register settings. With ATD<number> we can test to call specified number. If we don't see RING, then maybe we have to enter the number with areacode. If in the screen was we entered ATD you see BUSY appear, then a number of things may be wrong; unfortunately most failures are simply indicated with BUSY (only when there is no physical connection working do you see a different message, namely NO CARRIER). If BUSY appears after 1-3 seconds, then the message may be right, and the remote number is in fact busy. However, if it takes longer, then probably something else is the cause of the problem. Look in the system log messages for hints.
6.5.1.3 Configuration ISDN connection in PBX (modem.conf) For ISDN (BRI) we have the device: /dev/ttyI0 so we will have to add it as well modem.conf. Most likely you will define a group like "g1" to include all ISDN channels. In extensions.conf we probably want to define g1 as trunk: TRUNK=Modem/g1.
; isdn4linux ; Configuration file ; [interfaces] ; ; By default, incoming calls should come in on the "remote" context ; context=remote ; ; Modem Drivers to load ; ;driver=aopen ; modem by AOpen driver=i4l ;isdn4linux - an alternative to i4l is to use chan_capi ; ; Default language language=en ; ; We can optionally override the auto detection. This is necessary ; particularly if asterisk does not know about our kind of modem. ; type=autodetect ; ; Type of dialing ; dialtype=tone ;dialtype=pulse ; ; Mode selection. "Immediate" means that as soon as you dial, you're connected
; and the line is considered up. "Ring" means we wait until the ring cadence ; occurs at least once. "Answer" means we wait until the other end picks up. ; ;mode=answer mode=ring ;mode=immediate ; ; List all devices we can use. ;dtmfmode=asterisk ; Detect using Asterisk dtmfmode=asterisk/both ; Detect using Asterisk, generate w/ both ; two other devices, which are in group '1' and are used when an ; outgoing dial used: exten => s,1,Dial,Modem/g1:1234|60|r ; (we do not need more outgoing devices, since ISDN2 has only 2 channels.) ; Lines can be in more than one group (1-31); comma separated list. ; group=1 ; group=1,2,3,9-12 msn=6130578,6130579,6130580 outgoingmsn=6130578 device => /dev/ttyI0
6.5.2 Config of SIP clients accounts Now we have to define accounts for Sip phone clients in sip config file in our PBX. We know that configuration file for sip clients name sip.conf. In this file we fill the bind address and SIP proxy port too.
[general] context=default port=5060 bindaddr=161.53.64.15 ; ; ; ; ; Default context for incoming calls defaults to "asterisk" Set this to your host name or domain name UDP Port to bind to (SIP standard port is 5060) IP address to bind to (0.0.0.0 binds to all) Tab. 20 - General field in sip.conf
Every SIP client have self account with specification of name, callerid, host and codec. The host can be with dynamic or with static IP address, We allow 3 codec: iLBC, GSM and G.711a.
[xlite1] ;static client type=friend username=xlite1 secret=xlite1 callerid="2101 xlite1" <2101> host=161.53.64.236 ;nat=yes ; xLite is behind a NAT router canreinvite=no ; Typically set to NO if behind NAT defaultip=161.53.64.236 disallow=all allow=gsm ; GSM consumes far less bandwidth than ulaw ;allow=ulaw allow=alaw allow=iLBC [xlite2] ; xlite2-10 dynamic clients type=friend username=xlite2
secret=xlite2 callerid="2102 xlite2" <2102> host=dynamic nat=yes canreinvite=no disallow=all allow=gsm ; GSM consumes far less bandwidth than ulaw ;allow=ulaw allow=alaw allow=iLBC Tab. 21 -Configuration of SIP clients in sip.conf in PBX
6.5.3 Dial plan configuration For configuration of dial plan we use file extension.conf. Via this file we have to llocate to each SIP clients and any other clients number. For SIP xlite clients we use local number from 2101 to 2101. The dial plan is in next table.
[globals] TRUNK=>Modem/g1 TRUNKMSD=0
[default] exten => 2101,1,dial(SIP/xlite1,90,mTg) ; xlite SIP phone_1, with nr. 2101 exten => xlite1,1,goto(2101,1) ; 90s ringing with music in background exten => 2102,1,dial(SIP/xlite2,90,mTg) exten => xlite2,1,goto(2102,1) ;xlite SIP phone_2 with nr. 2102
.......
Tab. 22 -Dial plan configuration for Sip clients in extension conf
For connection to ISDN network we have defined global variable TRUNK like TRUNK=>Modem/g1. With special chars X, N or Z we can create mask of international number who can users call. X substitute number from interval: [0 9], N - substitute number from interval: [1 9], Z - substitute number from interval: [2 9].
[trunks] exten => _961XXXXX,1,Dial(${TRUNK}/${EXTEN:1}}+msn6130578) ;call to anlg ;loc. PBX 612xxxx exten =>_961XXXXX,2,Congestion exten => _900385X.,1,Dial(${TRUNK}/${EXTEN:1}+msn6130578) ;Croatia calls exten =>_9612XXXX,2,Congestion
exten => _9112,1,Dial(${TRUNK}/${EXTEN:1}+msn6130578) ;emergency calls exten =>_9112,2,Congestion Tab. 23 -Masks for outgoing calls
6.5.4 Configuration of SIP client From compare of soft VoIP clients we can see that the best solution is take the Xlite. First is a Freeware. Second have a lot PBX functions and supported codec for communication via lowband (iLBC, GSM) and broadband (G.711a,u-law) connection. See chapter 6.2.2. For successful set of connection with our PBX we have to set IP of SIP proxy and port of SIP proxy, because we going to use SIP protocol for calls. PBX with proxy 161.53.64.15 have listened on port 5060. Client machine listen in this example on IP 161.53.64.236.
Configuration of xlite is available under menu button. See on the figure 19. In rolled menu we have to fill a user name and password of SIP client. In PBX we have to allocated accounts xlite1 to xlite10 with number of dialplan from 2101 to 2110 and passwords xlite1 to xlite10.
Appendix A
D-Link AirPlus DWL-900 AP+
The D-Link AirPlus DWL-900 AP+ is an enhanced 802.11b+ Wireless Network Access Point featuring advanced silicon chip design from Texas Instruments, utilizing their patented Digital Signal Processingtechnology. The DWL-900AP+ can be configured to perform in any one of five modes as a wireless access point, as a point-to-point bridge with another access point, as a point-to-multi-point wireless bridge, as a wireless client, or as a wireless repeater. It also includes an embedded DHCP server that once enabled will automatically assign IP addresses to wireless clients. This unique feature along with the repeater capability makes the DWL-900AP+ an ideal solution for quickly creating and extending a wireless local area network in offices or other workplaces or even at trade shows or other special events. The DWL-900AP+ features 256-bit WEP encryption for a higher level of security for your data and wirelesscommunications. The DWL-900AP+ is fully compatible with the IEEE 802.11b standard, making it interoperable with all existing 802.11b compliant devices. But unlike standard 802.11b access points, its data transfer rate can be up to 20% faster. When your wireless network is comprised of other D-Link AirPlus IEEE 802.11b+ products such as the DWL-520+ Wireless PCI Adapter, DWL-650+ Wireless Cardbus Adapter, and the DI-614+ Wireless Router transfer rates can be as high as 22Mbps!
Reference:
[1] Voice over IP: Seminar [cit. 24.8.2004]. Available <URL: http://artax.karlin.mff.cuni.cz/~brain/voip.html> [2] Svet Siti: Internet jurnal [cit. 24.8.2004]. Available <URL: http://www.svetsiti.cz> [3] The TCP/IP Guide: Transmission Control Protocol (TCP) and User Datagram Protocol (UDP) [cit. 25.8.2004]. Available <URL: http://www.tcpipguide.com> [4] Open H.323 project: H.323 Standards [cit. 25.8.2004]. Available <URL: http://www.openh323.org/standards.html> [5] International Telecommunication Union: Normalization Institute. Available <URL: http://www.itut.int> [6] IETF-The Internet Engineering Task Force: A Transport Protocol for Real-Time. Available <URL: http://www.ietf.org/rfc/rfc1889.txt> [7] Asterisk The open source Linux PBX: Open software for Private Branch Exchange [cit. 24.8.2004]. Available <URL: http://www.asterisk.org> [8] TLPD-The Linux Documentation Project: VoIP Howto [cit. 25.8.2004]. Available <URL: http://www.tldp.org/HOWTO/VoIP-HOWTO-4.html#ss4.7> [9] Juha L., Sampo S., Rui P.; RUDE & CRUDE: Real-time UDP Data Emitter and Collector, Available <URL: http://www.atm.tut.fi/rude/>
[10] QoS-plot a Cesnet project: Tool for computing QoS characteristics, Available <URL: http://www.ces.net/project/qosip/> [11] GNU-Plot: Toll for ploting, Available <URL: http://www.gnuplot.info> [12] Ubik S.; Pesn a jednoduch men kvalitativnch parametr st, Available <URL: http://www.ces.net> [13] Soumar M.; Signalizan protokol pro penos hlasu pes datov st SIP, Available < http://www.elektrorevue.cz/clanky/03003/.iso-8859-1> [14] Komosn S.; Kvalita slueb IP, Available http://www.elektrorevue.cz/clanky/04006/.iso8859-1 > [15] ITU-T Standart activites; ITU-T- Y.1541, Available < http://www.its.bldrdoc.gov/tpr/2001/itu/itu.html>
[16] Voice over IP: Seminar [cit. 24.8.2004]. Available <URL: http://artax.karlin.mff.cuni.cz/~brain/voip.html> [17] Projekt QoS v IP, Available <URL: http://www.cesnet.cz/english/project/qosip> [18] Netperf A.: Network Performance Benchmark,Available <URL: http://www.netperf.org> [19] Asterisk: The open source PBX, Available <URL: http://www.asterisk.org>