You are on page 1of 357

VoIP Cookbook:

Building your own Telecommunication Infrastructure

By
Onno W. Purbo
Anton Raharja

Edited By
Nurlina Noertam

Funded By
Internet Society Innovation Fund (ISIF)

One Destination Center


December 2011

TableofContents
ABOUTTHEAUTHORS.........................................................................................................................1
PREFACE...................................................................................................................................................2
CHAPTER1:VoIPOverview....................................................................................................................3
HowVoIPWorksforDummies.............................................................................................................3
WheretoStart?......................................................................................................................................4
WhatIsInternetTelephony?..................................................................................................................5
CHAPTER2:Becomingauser.................................................................................................................7
PCtoPCInternetTelephoneCall.........................................................................................................7
Usingsoftphone...................................................................................................................................11
InstallingXLite..............................................................................................................................11
XliteConfiguration........................................................................................................................15
InstallEkiga....................................................................................................................................19
ConfiguringEkiga...........................................................................................................................19
ConfiguringAccountinEkiga........................................................................................................27
TestyourSIPSoftphone......................................................................................................................30
CHAPTER3:VoIPHardwareforexperiencedUsers..............................................................................35
LinksysPAP2AnalogTelephoneAdapter........................................................................................36
LinksysIPPhoneSPA941..................................................................................................................41
WiFiIPPhone......................................................................................................................................46
LinksysWirelessGIPPhone.........................................................................................................47
HewlettPackardIpaq6395.............................................................................................................56
ActivatingIpaq6395'sWirelessCapability...............................................................................56
RunningSJPhone.......................................................................................................................58
SJPhoneFeatures.......................................................................................................................64
UsingSJPhonetoplacecallthroughIpaq6395........................................................................65
Nokia...............................................................................................................................................68
NokiaWirelessConfiguration..................................................................................................69
SIPServerandAccountConfigurationinNokiaE61................................................................73
InternetTelephoneConfigurationinNokia...............................................................................76
RegisteringtoVoIPSoftswitch..................................................................................................77
CallingusingInternetTelephoneinNokiaE61.........................................................................80
VoIPinADSLModem........................................................................................................................82
ADSLModemConfiguration........................................................................................................83
VoIPConfigurationinLinksysWAG54GP2..................................................................................86
CHAPTER4:InterconnectivityandTelephoneNumberAllocation.......................................................93
GettingFreeWashingtonStateTelephoneNumber.............................................................................94
FreeInternetCountry:CountryCode+882........................................................................................97
IntroducingyourcountrycodetoInternationalVoIPnetwork..........................................................104
VoIPRakyat'sENUM

...........................................................................................................................................................106
ConnectingtoPSTNandCellularUsingVoIPDiscount...................................................................116
VoIPCheap........................................................................................................................................118
CHAPTER5:AsteriskSoftswitch.........................................................................................................120
MinimalResourceforAsterisk.........................................................................................................121
AsteriskInstallation...........................................................................................................................121
CompileAsterisk...............................................................................................................................122
ConfiguringAsterisk.........................................................................................................................124
ENUM.CONFConfiguration............................................................................................................124
SIP.CONFConfiguration..................................................................................................................125
EXTENSIONS.CONFConfiguration...............................................................................................126
CHAPTER6:AsteriskforIncomingandOutgoingcalls.....................................................................129
DefiningSIPChannelinsip.conf.....................................................................................................129
AsteriskasSIPClient........................................................................................................................129
GenericSIPconfiguration................................................................................................................131
DAHDIUsageForVoIPCards..........................................................................................................141
DAHDIArchitecture.....................................................................................................................142
Kernel.......................................................................................................................................142
Tools.........................................................................................................................................142
DAHDISampleinstallation..........................................................................................................143
DAHDIextensions.conf.....................................................................................................................146
CHAPTER7:BrikerSoftswitch.............................................................................................................148
Briker'sInstallationProcess...............................................................................................................148
Briker'sConsole.................................................................................................................................154
Briker'sWebConfiguration...............................................................................................................156
ZaptelConfiguration.........................................................................................................................159
SIPTrunk...........................................................................................................................................160
IAX2Trunk.......................................................................................................................................163
H323Trunk........................................................................................................................................165
ZAPTrunk.........................................................................................................................................167
OutboundRoutes...............................................................................................................................168
InboundRoutes..................................................................................................................................170
InteractiveVoiceResponse................................................................................................................171
SetupRecordings...............................................................................................................................171
RingGroups.......................................................................................................................................172
PinSets...............................................................................................................................................174
CHAPTER8:OpenSIPSHighPerformanceSoftswitch........................................................................175
CompileOpenSIPS............................................................................................................................175
PrepareUserDatabaseServer............................................................................................................176
Useopensipsctl..................................................................................................................................178
SomeRoutingTechniqueinOpenSIPS.............................................................................................178
HowtoroutetoPSTNandCellular..............................................................................................179
HowtorouteusingAreaCodeforinterconnectedSIPServers....................................................180

HowtorouteENUMQueryinOpenSIPS....................................................................................181
TestENUMQueryinOpenSIP.....................................................................................................181
ENUMRoutingTableinOpenSIPSconfiguration.......................................................................182
CHAPTER9:ENUM.............................................................................................................................184
ExampleofENUMService...............................................................................................................184
DelegationConceptinENUM...........................................................................................................184
ENUMImplementation.....................................................................................................................186
BINDInstallation..........................................................................................................................186
SetupBINDforENUMServer.....................................................................................................186
TestDNSforENUMQuery..........................................................................................................188
ENUMDelegationinBIND..............................................................................................................189
CHAPTER10:ConferenceServeronAsterisk.....................................................................................191
ConfiguringConferenceRoomMeetMe...........................................................................................191
ConfiguringDialplanforConference...............................................................................................192
ActivatingConferencewhileOperating...........................................................................................193
CHAPTER11:TrunkPeeringinAsterisk..............................................................................................195
CHAPTER12:NATandFirewall..........................................................................................................196
CHAPTER13:VoicemailinAsterisk....................................................................................................198
CHAPTER14:MoreonAsterisk'sDialplan..........................................................................................201
PatternExtension..............................................................................................................................201
Attachingcontext..............................................................................................................................201
TheExtensionPattern.......................................................................................................................202
Extension......................................................................................................................................203
PredefinedExtensionNames.......................................................................................................203
DefiningExtension......................................................................................................................204
AninterestingExtensionExamples..............................................................................................206
VariableandEquation.......................................................................................................................208
Reloading...........................................................................................................................................208
ForwardingtoanotherAsterisk.........................................................................................................208
CHAPTER15:VoIPIPPBXHardware.................................................................................................210
LinksysSPA9000...............................................................................................................................210
LinksysSPA9000Configuration..................................................................................................211
ConfiguringVoIPonLinksysSPA9000......................................................................................214
CHAPTER16:AnalogTelephoneAdapterforconnectiontoPSTN....................................................219
LinksysSPA3000AnalogTelephoneAdapter.................................................................................220
ConfigureLinksysSPA3000.........................................................................................................221
LinksysSPA3000ATAStatus......................................................................................................225
LevelOneVOI2100AnalogTelephoneAdapter...............................................................................227
LinksysSPA400withfourFXOs......................................................................................................246
UsingtheSPA400withAsterisk..................................................................................................246
ConfigureAsterisktotalktoLinksysSPA400.............................................................................248
ConnectPSTNusingLinksysSPA9000andLinksysSPA400.....................................................251
ConfigureLinksysSPA9000totalktoLinksysSPA400..............................................................260

CHAPTER17:OpenBTS.......................................................................................................................261
OpenGSMInfrastructure..................................................................................................................261
History...............................................................................................................................................261
FieldTest............................................................................................................................................261
Niue...................................................................................................................................................262
GNURadio.........................................................................................................................................262
LibraryInstallation.......................................................................................................................263
WxWidgetInstallation..................................................................................................................263
SWIGInstallation.........................................................................................................................264
QWTInstallation..........................................................................................................................264
GNURadioInstallation.................................................................................................................265
USRPHandling............................................................................................................................265
USRPVerification........................................................................................................................266
OpenBTSInstallation........................................................................................................................269
AGlimpseonOpenBTSConfiguration............................................................................................270
smqueueConfiguration.....................................................................................................................272
AsteriskConfigurationtoworkwithOpenBTS................................................................................273
AutomaticSIMRegistration.........................................................................................................274
OpenBTSOperation..........................................................................................................................275
CHAPTER18:PeeringAmongProviders..............................................................................................276
FreeSIPProxyServers......................................................................................................................278
BecomingaPeerinSIPNetwork
...........................................................................................................................................................278
CHAPTER19:InternetTelephonyBandwidth.....................................................................................280
CodingDecoding(CODEC).............................................................................................................280
MeanOpinionScore(MOS)..............................................................................................................281
MOSandRFactorvaluesforG.711,G.723,andG.729....................................................................283
CalculatingTheRequiredBandwidth...............................................................................................284
CalculationforCallCenter................................................................................................................287
VoIPCapacityPlanning....................................................................................................................289
CHAPTER20:VoIPEvaluation............................................................................................................293
EvaluateVoIPPerformanceusingVQManager................................................................................293
VQManagerInstallation..............................................................................................................293
SomeoftheImportantScriptsofVQManager.............................................................................294
ActivateVQManagerWebService...............................................................................................295
ChangingtheMonitoredInterface................................................................................................303
InsertingnewInterface................................................................................................................303
MonitorVoIPPerformance...........................................................................................................304
EvaluateVoIPPerformanceusingSIPp.............................................................................................313
InstallationofSIPp........................................................................................................................313
InstallationofSIPpWebfrontend..................................................................................................313
TransactionOrientedTestusingSIPp...........................................................................................314
AccesstotheSIPpWebfrontend...................................................................................................317

CHAPTER21:VoIPTroubleshooting...................................................................................................328
CODECandVocoder........................................................................................................................328
PreparingAVoIPReadyNetwork.....................................................................................................329
Minimalrequirement/configuration................................................................................................329
Testpriortooperationofthesystem.................................................................................................329
SomeUsefulReferencesForVoIPTroubleshooting........................................................................330
References..............................................................................................................................................331
VoIPHardware...................................................................................................................................331
VoIPSoftswitch.................................................................................................................................331
VoIPClientSoftware.........................................................................................................................331
TestingSoftware................................................................................................................................331
APPENDIXA:Exampleof/etc/sip.conf...............................................................................................333
APPENDIXB:SIPpCOMMANDS......................................................................................................343
APPENDIXC:File/usr/local/etc/opensips/cfgtestuas.cfg................................................................350

ABOUT THE AUTHORS


OnnoWPurboisatechiewhowrotemanypracticalICTbooks.Hehasbeenapopularspeakerat
manyseminarsandconventions.HewithdrewfromhispositionasanIndonesiancivilservantand
retiredasalecturerattheBandungInstituteofTechnology,becominganICTactivist.Hehaswritten
thousandsofarticlesandpapersandauthoredmorethanfortybooksonICTandthereforereceived
severalawards,includingaSabaticalAwardfromtheInternationalDevelopmentResearchCenter
(IDRC),aCanadianCrowncorporationaimedathelpingdevelopingcountriesusescienceand
technologytofindpractical,longtermsolutions.Hisprofileisat
http://opensource.telkomspeedy.com/wiki/index.php/Onno_W._Purbo

AntonRaharjaisthefounderofthelargestcommunitybasedSIPSoftswitchVoIPRakyatin
Indonesia.HeisalsotheleaddeveloperofBriker,anopensourceSIPsoftswitchappliance.Besides
Briker,Antonactivesindevelopingseveralopensourceapplications,suchas,PlaySMS(SMS
Gateway),PlayVoIP(theVoIPRakyatEngine),PlayBilling(InternetCafeBillingSystem),WiFiRakyat
etc.HehasservedinmanytalkandseminarsonVoIPandOpenSourcesoftware.Heiscurrentlythe
TechnicalDirectorofPT.JelajahMediaInformatika,WANDKI,JakartaandtheCEOofPT.Infotech
MediaNusantara,Jakarta.In2008,hereceivedaFOSSAwardfromtheIndonesianMinistryof
InformationandCommunication.Hisprofileisathttp://www.antonraharja.web.id/curriculumvitae/

VoIPCookbook:1

PREFACE
Thisbookisaimedtoprovideapracticalknowledgetosetupacommunitybasedtelephonenetwork
basedovertheInternetInfrastructureA.K.A.InternetTelephoneorVoiceoverInternetProtocol(VoIP).
Manyrealworldexampleonequipmentandapplicationsoftwaresetupandinstallationsareprovided.
Wewouldliketothankmanyfriendsathttp://www.asterisk.org,http://www.opensips.org,
http://www.voiprakyat.or.id,
http://www.e164.org

aswellasmanyforumandmailinglistswithout
whomitwouldbeimpossibleforustogainalotofknowledgeandideas.
Iwouldliketothankmanyofourcomradesthatmanagedtokeeptheirspirithighinmakinga
significantchangeinIndonesiantelecommunicationarea.SomeofthemareSumaryo,DonnyBU,
BasukiSuhardiman,HariyantoPribadi,M.Ichsan,HeruNugroho,MichaelSunggiardi,andJudi
Prasetyo;aswellasmanyfriendsonthemailinglists.
OnnoW.PurbowouldliketothanktheInternationalDevelopmentResearchCenter(IDRC)
http://www.idrc.catosupporthisearlierworkonVoIP.EspeciallytoICT4Dgroup,specially,Richard
Fuchs,RenaldLafond,GrahamTodd,JoshSkinner,SteveSong,NancySmyth,HeloiseEmdon,
MireilleLerouxandFrankTulus.
WewouldliketothankInformationSocietyInnovationFundISIFhttp://www.isif.asia,especially
SylviaCadenaandherteamforsupportingusindocumentingourknowledgeoncommunitybased
InternetTelephony.
Wehopethisbookwillenablemorecommunitybasedtelecommunicationandtelephoneprovidersover
theregionalInternet.Furthermore,wehopeitwillenablealowcostaccesstotelecommunicationinthe
region.
Jakarta,February2011
TheAuthors

VoIPCookbook:2

CHAPTER 1: VoIP Overview


Inmanycountries,specially,thedevelopingcountries,peopleseeksforlowcostcommunication
solutions.Today,Internetisbecomingmoreaccessibleformanypeopleandcorporatesinthese
countries.HavingaccesstoInternet,onemayeasilydeployTelephonenetworkovertheInternet
infrastructure.ItisknownasVoiceoverInternetProtocol(VoIP)alsoknownasInternetTelephony.
ThecuurentVoIPtechnologyisquiteadvanced.Itiscurrentlysimilarifnotmoreadvanceandmay
replacetheexistingtelephonetechnologyevenrecognizingthe+<countrycode><areacode><phone
number>format.Interestingly,mostofthetechnologyisopensourceandreadilyavailableonthe
Internet.Furthermore,ourexperienceshowsthatthecurrentSoftswitchperformanceonaXeonServer
machineisfairlysimilartomediumsizeTelcoswitch.Thus,itwouldbebeneficialforthosewhowish
toimplementtelecommunicationinfrastructuretoseeksolutioninVoIPtechnology.
Thisbookisaimedtoprovideapracticalknowledgetosetupacommunitybasedtelephonenetwork
basedovertheInternetInfrastructureA.K.A.InternetTelephoneorVoiceoverInternetProtocol(VoIP).
Manyrealworldexampleonequipmentandapplicationsoftwaresetupandinstallationsareprovided.
Itishopedtoenablemorecommunitybasedtelecommunicationandtelephoneprovidersoverthe
regionalInternet.Intheend,itwillenablealowcostaccesstotelecommunicationintheregion.

How VoIP Works for Dummies.


AoverlysimplifiedfigureonhowVoIPnetworkworkisshowninFigure1.1.TheheartofVoIP
networkisthesoftswitch.Itstoresallinformationonthesubscribers.Inasimpleview,aVoIP
softswitchbasicallyhasatablemappingthephonenumberofthesubscriberandthecomputerorIP
addressofthesubscriber.
Everytime,asubscriberwantstomakeacalltoanothersubscriber.Theclientequipmentwillaskthe
softswitchthedestinationaddressoftheothersubscriber.ThedestinationaddresscanbeanIPaddress.
Thus,thesoftswitchbasicallystoreinitstable,thephonenumberofthesubscriberandtheirIP
address.
VoIPwillbemorefun,aswecanuseIPPhoneinsteadofacomputerassubscriberequipment.IP
Phonelookssimilartonormalphone.However,itismuchsmallerthanacomputer.Thus,theclient
equipmentmayberun24hourswithoutconsumingtoomuchelectricity.

VoIPCookbook:3

Figure1.1HowVoIPWorks.
Formoreadvanceduser,wemayinsertananAnalogTelephoneAdapter(ATA)intothenetwork.An
ATAisanothertypeofclientequipment.ItmayactasgatewaybetweenVoIPnetworkandlegacy
phonenetwork.Thus,anyoneonVoIPnetworkmaycalltotheoldphonenetwork.

Where to Start?
Thebookisdesignedtomeettheneedfor
ThosewhowishtotryandtobecomeaVoIPuseronly.
ThosewhowishtoexploreonhowtosetupmoreadvanceVoIPuserappliances.
ThosewhowishtofindVoIPcorporatesolutions.
Thosewhowishtoexploreonsettingupahomebrewsoftswitch.
AdvancedtechiesthatwantstoknowindepthhowtooperateaTelcooverInternet.
ForVoIPnewbieusers,equipedwithPC,soundcardandaccesstotheInternet,mightwanttoread
Becomingauser(CHAPTER2)andlittlebitofInterconnectivityandTelephoneNumber
Allocation(CHAPTER4).
VoIPCookbook:4

ForthosewhowishtoexploreVoIPappliancesmightinterestedinVoIPHardwareforexperienced
Users(CHAPTER3).Chapter3coversalotofhardwares,including,IPPhone,WifiPhone,Analog
TelephoneAdapter,ADSLModem.
ThosewhoaremoreinterestedincorporatesolutionsmightbeinterestedinVoIPIPPBXHardware
(CHAPTER15)andAnalogTelephoneAdapterforconnectiontoPSTN(CHAPTER16).Any
materialsonVoIPHardwareforexperiencedUsers(CHAPTER3)wouldalsohelp.
ForthosewhowishtosetupahomebrewVoIPsoftswitch,itisbeneficialtoreadBrikerSoftswitch
(CHAPTER7)andwithlittleefforttoreadAsteriskSoftswitch(CHAPTER5)andOpenSIPS
HighPerformanceSoftswitch(CHAPTER8).ForadvancehomebreweratopiconENUM
(CHAPTER9)mightbeofinteresttosetthesystemtorecognize+<countrycode><areacode>
<subscribernumber>numberingformatasusedinTelconetwork.
Therestofthetopics,suchas,VoIPBandwidth,conferenceserver,detailedondialplan,trunking,
peering,evaluationofVoIPperformance,VoIPtroubleshootingareaimedformoreadvancedusersthat
reallywantstofinetunetheInfrastructure.

What Is Internet Telephony?


Inasimpledefinition,VoiceoverInternetProtocol(VoIP)orinternettelephonyisatelephonenetwork
overtheinternet(TCP/IP)network.Thus,youcoulduseVoIPanywhereaslongasyouareconnectedto
theinternet.
Therearetwomaininternettelephonytechnology,i.e.,H.323andSessionInitiationProtocol(SIP)that
arefrequentlyused.TheformerisanolderstandarddevelopedbytheInternationalTelecommunication
Union(ITU),theleadingUnitedNationsagencyforinformationandcommunicationtechnologyissues.
Thelatter,SIP,isamoreadvancedtechnologydevelopedbytheInternetEngineeringTaskForce
(IETF),alargeinternationalcommunityconcernedwiththeinternetarchitectureanditsdevelopment.
Inshort,itissufficientforyoutoknowthattheseprotocolsarethemainengineofVoIP
communication.ThisbookwillconcentrateonSIPtechnologyasitiscurrentlythemainenginebehind
manyadvancedVoIPdeploymentontheInternet.
HowgoodthequalityofVoIPcommunicationdependsonthetypeofCodecemployedinagiven
communication.ShortforCodingDecoding,Codecisaprocessofturninganalogsignaltodigital
signalviceversa,allowingaudioandvideotobesentoverthecomputernetwork.Insuchprocess,
codecminimizetheuseofbandwidthfortransferringthesignaldatawhileensuringthatthevoice
receivedremainsclear.Avarietyofcodecshavebeendeveloped.
VoIPCookbook:5

DespitethatVoIPcommunicationcanbeprovidedforfree,youstillneedtomeetsomebasic
requirements.Theyincludetherequiredequipmentsandsoftware.Attheveryleast,youneedanIP
basednetworkusingTCP/IPandacomputerwithsoundcards,headsets,microphonespeakerandhave
thecomputerbeconnectedtoanetworkortheInternet.Softphone,thesoftwarerequiredforVoIP
communication,isprovidedforfree.
Ifyouhavemoremoneytospend,youcanbuyVoIPreadyequipmentsthatcanbeoperatedwithno
needforconfigurationorveryminimalconfiguration.Inaddition,youcanavoidthehassleofturning
onyourcomputereachtimeyouwanttocommunicatethroughVoIP.Attheminimum,youcanbuyan
IPPhone,aphonethatcanbepluggedintoLANnetwork.SomeoftheseIPPhoneshaveWiFi
capability,allowingyoutousethephonewhenconnectedtoahotspotnetwork.Therearemanydevices
enablingVoIPcommunication,someofwhichmayormaynotneedconfigurations.
Ifyou'rebuildingamuchmorecomplicatednetwork,youcanimplementIPPBXorInternetTelephony
GatewayalsoknownasAnalogTelephonyAdapeter(ATA),amediumbetweeninternettelephony
networkandconventionalphonenetwork.

VoIPCookbook:6

CHAPTER 2: Becoming a user


NowthatyouknowwhatVoIPis,youmaywanttolearnhowtocommunicateusingVoIPtechnology.
Forpracticalreason,inthisearlystageoflearning,wewilluseaSIPprovidercalledVoIPRakyat
http://www.voiprakyat.or.id.,inordertohelpyougraduallyunderstandhowtouseVoIP.Theserviceis
notfavorableforusersoutsideIndonesia,asVoIPRakyat'sserverisphysicallylocatedinIndonesia,
therebymakingtheVoIPaudioqualitygoodforthosewholiveinIndonesiabutnotsoforusersoutside
Indonesia.However,theknowledgegainfromVoIPRakyatexperiencesmaybeusedforanyavailable
SIPprovidersinyourcountry.

PC to PC Internet Telephone Call


ThispartwillexplainthesimplestVoIPcalltechniqueusingacomputertocallanothercomputeror
VoIPnetwork.Allyouneedisacomputerwithasoundcard,headset,microphoneandinternet
connectivity.Howmuchtheseequipmentswillcostdependonthespecificationyouuse.Butsince
VoIPforpersonalusedoesnotrequiresophisticatedequipment,theseequipmentswillnotcostmuch.
Oftheserequirements,bandwidthisperhapsthemostimportant,asitdetermineshowgoodthevoice
qualityofyourVoIPcommunication.
ForthisPCtoPCcommunication,youneedtoregisterwithaSIPprovider.Theoneweprovidedasan
exampleinthisbookishttp://www.voiprakyat.or.id.Thenyouwilllearnhowtoinstallasoftphonein
yourcomputerthesoftwarerequiredforVoIPcommunicationhowtoconfigurethesoftphoneto
registeryourselfusingtheSIPaccountyouhavecreatedandhowtousethesoftphone.

VoIPCookbook:7

Figure 2.1 a free SIP provider called VoIP Rakyat

VoIPCookbook:8

Figure 2.2 Registration Process in VoIP Rakyat

ClickRegister(Free)inordertoobtainafreeVoIPRakyatnumber.WithRegister(Free)clicked,there
aresomeinformationyouhavetofillin.Theseincludeyouremailaddress,name,address,cityand
country.NickNamefieldisprovidedforJabber(chatting)account.Attheendofregistrationprocess,
weneedtoentertheprovidedSecurityCode.

VoIPCookbook:9

Figure2.7:
Choosewhether
youwantto
createadesktop
icon,quicklaunch
iconandlaunch
theapplication
whenWindows
starts

Figure 2.3 Successful Registation Process

Afterallinformationisfilledincorrectly,VoIPRakyatprovidesuswithaVoIPnumber,thepassword,
NicknamerequiredtoallowustomakeacallandchattingthroughVoIPRakyatnetwork.Pleasenote
thattheservernameisvoiprakyat.or.id.
Withtheaccountprovided,allwehavetodoistotransformourcomputerintotelephonehandsetso
thattocanbeusedtocallovertheinternettelephonynetwork.

VoIPCookbook:10

Using softphone
Selecttherightsoftphoneforyourcomputer.MostofthesesoftphonescanbedownloadedfromVoIP
Rakyathttp://voiprakyat.or.id/download/,oryoucanfindeachofthemfromitswebsite.

Cubix
Idefisk
SJPhone
Xlite
Ekiga

http://www.virbiage.com/cubix.php
http://www.asteriskguru.com/idefisk/free/
http://www.sjlabs.com/sjp.html
http://www.xten.com/index.php?menu=download
http://ekiga.org

Youneedonlyoneofsoftphones,dependingonwhicheverworksorsuitableforyou;

InstallingXLite

Figure2.4:
XLite
Welcoming
Installation
Window

Oncexliteinstallerprogramisrun,wewillbedirectedtoaWelcomingDialogProperties.Clickon
Nexttoproceedtothenextstepoftheinstallationprocess.

VoIPCookbook:11

Figure2.5:
CounterpathEnd
UserLicense
Agreement

Whatappearsnextisthelicensingagreementbetweenxlitecreatorandyoubeingtheuser.This
ensuresthatxlitewillnotbeliableforthepoorVoIPvoicequalityproducedbyxlite.Justlikeearlier,
clickontheIaccepttheagreementbuttonandclickNext.

Figure2.6:
Determinethe
locationwherethe
softwarewillbe
installed

NextXlitewillaskwheretheprogramwillbeinstalled.Thedefaultfolderis
C:\ProgramFiles\CounterPath\XLite,asshowninFigure2.6.Youcanchangethefolderifyouwant.
VoIPCookbook:12

Whicheverfolderyouchoose,clickNexttocontinuetheinstallationprocess.

Forquickerandeasierwayofusingxlite,youcanaddxliteasadesktopiconorevensetittoactivate
whenWindowsstarts(SeeFigure2.7).ClickNexttoproceed.

Figure2.8:
Thedialog
Windows
indicating
that
installationis
inprogress

Xlitethenextractsallfilesrequiredfortheprogram(SeeFigure2.8).

VoIPCookbook:13

Figure2.9:The
Windows
showingthatthe
installation
processis
completed

Oncetheinstallationprocessiscompleted,youcandirectlyrunXLitebycheckingtheLaunchXLite
boxandclickingFinishbutton.

VoIPCookbook:14

XliteConfiguration
AlthoughXLitecouldrunthemomentyoucompletedtheinstallationprocess,itdoesnotmeanyou
canuseitimmediately.Youstillhavetoconfigurethesoftphone.Itsconfigurationmenucanbeopened
byrightclickingonXlite.XLite3.0hastwolinesthatcanbeoperatedsimultaneously.Thisimplies
wecanestablishtwoconcurrentcalls,eachtodifferentdestination.
Figure2.18
XLiteappears
justlikean
ordinaryphone

Figure2.14:
EntertheSIP
accountyouhave
createdinXLite
Configuration
DialogWindow

VoIPCookbook:15

InXLite3.0configuration,youcanentertheSIPaccount(s)givenbyyourprovider.However,thefree
softwareversionofXLite3.0seemstolimitthenumberofSIPaccountsonlyoneaccount.The
previousversion,XLite2.0,allows10SIPaccountstobestoredandused.ClickAddtoenterthe
informationoftheSIPaccountyouhavejustcreatedinVoIPRakyatorofanyotherSIPaccounts.

Figure2.15:With
theAddbutton
clicked,youcan
seetheProperties
oftheSIPaccount.
Whatappearsfirst
istheAccounttab.

Intheaccounttab,youhavetofillinyourusername,authorizationusername,whichisthephone
numbergivenbytheprovider,thepasswordobtainedfromVoIPRakyatoranyotherSIPproviders;the
proxyaddress,whichisvoiprakyat.or.id,theaddressofVoIPRakyat.Otherinformationyoualsohave
tofillaredomain,whichisvoiprakyat.or.id,andDisplayname,anynameyouwanttoenter.This
functionsasaCallerIDinatelecomnetwork.

VoIPCookbook:16

Figure2.16:
TheVoicemailtabis
usedtosethowyou
wouldlikeSJPhone
managesyour
voicemail

IntheVoicemailtab,wecandeterminetowherewehavetodialinordertolistentoourVoicemail.For
VoIPRakyat,thenumberis904.Enterthisnumberinto"Numbertodialforcheckingvoicemail".If
youuseothrprovider,usethenumberprovidedbytheproviderinstead.

VoIPCookbook:17

Figure2.16:
Settheparameters
undertheTopology
tabtodetermine
howSJPhoneworks
withNAT/Firewall

IntheTopologytab,youcanactivateXlite'sabilitytopenetrateFirewall/NAT,toidentifythepublicIP
addressthatisusedandsoon.Youcanalsousethedefaultsettingsthatwillautomaticallyknowthe
publicIPaddressthatweuse.However,NATmaystillbeproblematic,asnotallconfigurationcanbe
traversedbysignalingprotocolandmediausedaSIPprovider.
ForPresenceandAdvancedtabs,usethedefaultvalues.Someparametersyoucanchangearethetime
intervalsusedtoperiodicallyregisterouraccounttotheSIPserver.ThisensuresthattheSIPaccount
remainsregistered.Afterall
configurationsarecompleted,
clickOktoactivatethe
configurations.
Figure2.17:
Withthebox
underEnabled
columnticked,
youcannowuse
yourSIPaccount
VoIPCookbook:18

Onceeverythingisproperlyconfigured,theSIPaccountyouhavejustconfiguredwillbecome
available.TicktheboxunderthecolumnEnabledtoactivatetheaccount.ThenclickClosetoclose
theSIPaccountmenu.
Withtheconfigurationcompleted,youcannowstartusingXLite.Iftheregistrationprocessis
successful,youwillgetamessagestatingLoginonthesoftphonescreenorotherwisethemessage
statesRegistrationErrorandyouhavetocheckwhetheryouhaveproperlyconfiguredthesoftphone.
Toplaceacall,clickonthenumbersalreadyavailableorclickthenumbersonthekeypad.

InstallEkiga
Ekiga(formelyknownasGnomeMeeting)isanopensourceSoftPhone,VideoConferencingand
InstantMessengerapplicationovertheInternet.ItsupportsHDsoundqualityandvideouptoDVDsize
andquality.Ekigaisinteroperablewithmanyotherstandardcompliantsoftwares,hardwaresand
serviceprovidersasitusesboththemajortelephonystandards(SIPandH.323).
ToInstallEkigainUbuntu,
sudoaptgetinstallekiga

ConfiguringEkiga
Principally,Weneedtodo
Ekiga>Edit>Accounts>AddaSIPAccount
Theneededinformartionwouldbe
Name
Registrar
User
AuthenticationUser
Password

:VoIPnumber
:SIPServer
:VoIPnumber
:VoIPnumber
:passwordVoIP

IntheearlystartofEkiga,weneedtosetseveralparameters.Wemaycanceltheearlyconfiguration
VoIPCookbook:19

processanddoitlaterthroughConfigurationAssistantmenufrom
Ekiga>Edit>ConfigurationAssistant
ThedetailedprocessofConfigurationAssistanceisasfollows,

Figure2.18WelcomeBanner
AwelcomebannerisshownfromtheConfigurationAssistantmenu.PressForwardbuttonomove
VoIPCookbook:20

forwardtheconfigurationprocess.

Figure2.19EnterFullName.
Thefirststep,weneedtoenterourfullnameintoEkiga.ThenpressForwardbutton.

VoIPCookbook:21

Figure2.10VoIPAccount
Thenextmenu,wecansubmitourAccountatEkiga.net.Ekiga.netmayofferanaccounttomake
calloutcallfromVoIP.Ifwedon'thaveanyaccountatEkiga.net,wemaypressForwardtocontinue.

VoIPCookbook:22

Figure2.11TypeofNetwork.
Next,weneedtosetthetypeofnetwork.ThiswillaffecttheCODECusedtocompresstheaudio.Fora
goodperformanceinLANenvironment,pleaseselectLAN.PressForwardtocontinue.

VoIPCookbook:23

Figure2.12TypeofSoundCard
Next,weneedtosetthetypeofsoundcardtobeusedinVoIP.Ekigaisfairlysmarttodetectthe
availablesoundcard.WehardlyneedtochooseorchangetheEkiga'sselectedsoundcard.Next,we
needtopressForwardbutton.

VoIPCookbook:24

Figure2.13TypeofVideoCard
Next,wecanselectthetypeofvideodeviceifoneisconnected.Ekigaissmartenoughtodetectany
videodeviceonthesystem.Tocontinue,pressForward.

VoIPCookbook:25

Figure2.14Finish.
Finally,theconfigurationprocessofEkigaiscompleted.Itwillshowthesummaryoftheparameterin
Ekiga.PressApplytobeginusesEkiga.

VoIPCookbook:26

ConfiguringAccountinEkiga
ConfiguringanAccountinEkigamaybedonethroughmenu
Ekiga>Edit>Accounts
or

Ekiga>CtrlE

ThedetailedofVoIPAccountconfigurationinEkigaisasfollows,

Figure2.15StartAccountConfiguration.
AftertheAccountmenuisactivated,wewillseetheabovefigure.

Figure2.16AddSIPAccount.
ClickonAccounts>AddaSIPAccount

VoIPCookbook:27

Figure2.17AddSIPAccountinformation.
IntheaboveExample,weentertheparametertouseSIPaccountinVoIPRakyat.Enterthedata,
namely,
Name
Registrar
User
AuthenticationUser
Password

NabilSuhaemi
voiprakyat.or.id
123456
123456
<yourpasswordinvoiprakyat.or.od>

VoIPCookbook:28

Figure2.18AddSIPAccountinformation.
Intheabovefigure,wesettheparameterforlocalVoIPsoftswitchatIPaddress192.168.0.3.

Figure2.19EnableSIPAccount.
MakesuretheaccountisactivatedbyclickinontheAcolumn.Tousetheaccount,weneedtomake
suretheaccountisregisteredtothesoftswitch.

VoIPCookbook:29

Figure2.20EkigaReadytouse.
ShownintheabovefigureisEkigaafteritsuccessfullyregisteredtothesoftswitch.Atthebottomof
thesoftswitchwecanreallyseethatitRegisteredsip:....Atthispoint,wecanmakeacallby
puttingthedestinationnumberinafterthesip:field.

Test your SIP Softphone


Nowthatyouhaveadjustedbothsoftphones(orjustoneofthem),thenextimportantthingyouhaveto
doistotestwhetheritcouldrunproperly.Notethatthequalityofthevoiceproducedbythesoftphone
duringthetestmayhavebeenjustfine,butwhenyoursoftphoneisconnectedtoaVoIPprovider,the
voicequalitycouldbepoor,dependingonmanyotherthingssuchasbandwidthavailabilityandthe
typeofcodecrunbythesoftphone.Forthistestpurpose,VoIPprovidersusuallyprovidethetelephone
numbertowhichyoucandial.
Ifyourcomputerisconnectedtoaninternetbehindafirewall,thefirewallmightblockyour
connectivity.InordertomakeyourVoIPconnectivityworkingbehindthefirewall,youhavetoopen
Port50606060toenableSessionInitiationProtocol(SIP)andPort800020000forvoicedatadelivery
usingRealTimeProtocol(RTP).Butifyou'renotsurewhattodo,youcansimplyaskyournetwork
VoIPCookbook:30

administratortodowhatistoldhere.

Figure 2.21: Just like other VoIP Providers, VoIP Rakyat provides its users with some numbers with
which the users can use for testing their VoIP quality

GotoVoIPRakyat'sServiceNumberpage,http://voiprakyat.or.id/services/.Thispageprovidesyou
withsomenumbersthatcanbeusedtotestyourVoIPconnectionandtheirfunctions.Someofthem
are:
901whichindicatesthetimeJakarta'stimeandnearbycountries.
902noise
903echotest

VoIPCookbook:31

Figure 2.22: Through VoIP Rakyat's Phonebook, you can see who's online

Intestingthisconnectivity,whatuserswilloftendoistocallanyonefoundonlinein
http://www.voiprakyat.or.id/?inc=online_phones.Sodon'tbesurprisedifsomeonedialsyournumber.
Dependingonwheretheusersare,thecallcomesfromavarietyofcountries,includingtheU.S.
ThereareofcourseotherVoIPphonenumberswhichyoucanusetotestyourVoIPconnection.These
areprovidedinalonglistavailableinhttp://www.voipinfo.org/wiki/view/Phone+Numbers.Ifyouwant
tocallusingSIPaddressformat(sip@domain.com),thefollowingisatableofsomenumbersyoumay
use:

VoIPCookbook:32

Function

SIP Provider

SIP

Enum

Autoattendant BC Wireless
1000@mutual.bcwireless. 1 604 484 5289 x8600
(http://www.bcwireless.net/moin.cgi/N net
through E164.org
etworkServices/VoiceServices/PublicC
onferenceRoom).

Echo Test

Enum2go (http://enum2go.com/)

878107472000010@sip2g
o.com

N3 Network Lab.
(http://www.n3network.ch/)

Echo test sip:


echo@n3network.ch
sip:
905100@n3network.ch
(no G.729)

Mouselike.org
(http://www.mouselike.org/)

(UK) 904@mouselike.org

VoipTalk
(http://www.voiptalk.org/)

UK 904@voiptalk.org

Reread Called
ID
Welcome
Line

+441483604781

95861111@mutual.bcwire
less.net
FWD

55555@fwd.pulver.com

Ewing IT

611300766674@sip.like2f
one.com

Xmission
(http://xmission.com/transmission)

xmission@pbx.xmission.c
om (tidak ada G.729)

UCLA (http://internet2.edu/sip.edu)

13108254321@ucla.edu
(tidak ada G.729)

TELL

18005558355@proxy01.si
pphone.com

U. Philippines

0116329818500@proxy01
.sipphone.com

Personal Telco
274185@fwd.pulver.com
(http://wiki.personaltelco.net/moin.cgi/

VoIPCookbook:33

SipPhoneDirectory)
Patton Electronics
(http://www.patton.com/support)

support@patton.com
(tidak ada G.729)

Party Line

17475552663@proxy01.si
pphone.com
(VoIP
conference setiap sabtu
jam 20:00 GMT)

Ingate
(http://www.ingate.com/trysip.php)

music@trysip.ingate.com

MIT (http://sipphone.com/numbers)

16172531000@proxy01.si
pphone.com

VoIPCookbook:34

CHAPTER 3: VoIP Hardware for experienced Users


Onceyouareexperiencedinusingsoftphone,youmaystartwonderingwhetherthereisaneasierway
tocommunicatethroughVoIP,asusingsoftphoneviaacomputerisnotpracticalyouneedtoturnon
yourcomputereachtimeyouwanttocommunicatethroughVoIPorkeepyourcomputerrunningfora
longdurationjusttoreceiveincomingcall.Thismaynotbeprudentatall,sincethepurposeofusing
VoIPistominimizeyourcost.Besideswastingelectricalenergy,thecomputerinwhichthesoftphone
isrunningcouldcrash.
SoinsteadofusingacomputertocommunicatethroughVoIP,youcoulduseVoIPhardware,
equipmentsthatenableyoutocommunicatethroughVoIPefficientlyandaseasyasyouuseyour
conventionalphone.
CalledInternetTelephoneappliance,thesehardwaretypicallyhavethefollowingcharacteristics:

itisphysicallysimple,withitsdimensionslightlybiggerthanthesizeofacigarettebox.
Thereareportsforconnectingtothenetworkorcomputer,suchasLAN/UTP,USBorwireless
at2.4GHzfrequency.
ThereisoneportormoreforconnectingtotelephoneswithRJ11port.
Itcanbeconfiguredthroughtheweb.

However,VoIPhardwareisnotfree,asyoustillhavetospendsomemoneyforbuyingtheequipment.
ForaboutUS$100,youcangetasetofdecentVoIPhardwareproducedfromChinaorTaiwan.But
despitethiscost,VoIPhardwarearehighlyrecommended,asyoumayfindthebenefitsthehardware
bringoutweighthecostyouhavetocover,intermsofeaseofuseandenergyefficiency.
ThisChapterwillexplainseveralhardwareavailableinthemarketandhowtoconfigurethem:IP
Phone,InternetTelephoneGatewayorbetterknownasAnalogTelephoneAdapter(ATA),andWireless
IPPhone.TheywayyouconfigureVoIPhardwareisnotmuchdifferentfromwhatyoudowith
softphone.BasicallyallyouhavetoconfigurearetheIPsettings(IPaddress,subnetmask,and
gateway)andregistrationtoSIPserverorproxyserver(Usernameortelephonenumber,passwordand
hostnameserver).Often,IPsettingsisconfiguredautomaticallyusingDHCPserveroperatingina
network,soyoudon'thavetosettheIPaddress,subnetmaskandgateway.

VoIPCookbook:35

Linksys PAP-2 Analog Telephone Adapter


Figure3.1:
WithATA,you
canuseyour
PSTNphonefor
VoIP
communication

ThesimplesttypeofVoIPhardwareistheAnalogTelephoneAdapter(ATA),whichcaneasilybe
connectedtoaconventionaltelephone.TheATAusedasanexampleinthisbookistheLinksysPAP2,
whichhastwoRJ11ports(FXSports)thatcanbeconnectedtotwoconventionalphones.Eachofthese
portscanberegisteredtoaSIPProxyserverindividually.Asaresult,wecouldhavetwoSIPaccounts,
eachconnectedtoaconventionalphone.
WhatwehavetounderstandisthatanATAhastwotypeofRJ11connections,namely,

FXOtobeconnectedtoPSTN/Telcoline/PABXextension.
FXStobeconnectedtoTelephoneline/FAX.

AfterallUTP,LAN,powerandtelephonecablesarepluggedin,youhavetofirstofallfindouttheIP
addressoftheLinksysPAP2sowewillbeabletoconfigureusingtheweb,bycarryingoutthe
followingsteps:

Press*repeatedlyonthephonekeypaduntilyouhearsomeonetalkingthroughyourphone.
Press110#tolistentotheIPaddressfortheLinksysPAP2configuration.

ThenextstepistoconfigureyourPCsothatyoucanconfigureLinksysPAP2throughtheweb.Allyou
havetodoismatchthefamilyIPaddresstoPAP2's,bydoingthefollowing:GotoStart,OpenControl
Panel,Networkconnections,localAreaConnection,InternetProtocol(TCP/IP)andProperties.Then
gotoWebLinksysPAP2fromyourPCthroughthisaddresshttp://ipaddresspap2/.
VoIPCookbook:36

Figure3.2:TheinitialmenuthatwillappearisthestatusofLinksysPAP2
ClickAdminLogin,whichisonthetoprighttobegintheconfigurationasanadministrator.

VoIPCookbook:37

Figure3.3:YoucandeterminewhetheryouwanttousedynamicorstaticIPaddress
TovieworchangetheIPaddressconfiguration,clickSystem.CheckwhethertheIPaddress,Gateway
andDNSputinplacearecorrect.Alternatively,setDHCPtoyessoLinksysPAP2willusetheIP
addressthatisobtainedautomatically.

VoIPCookbook:38

Figure3.4:Eachline(line1and2)hasitsownsettingsintheadministrationpanel
InLinksysPAP2wecansetuptwoSIPaccountsregisteredwiththeSIPProxy,witheachaccount
connectedtoaphone.Theaccountsettingscanbedoneinmenu"Line1"and"Line2".

VoIPCookbook:39

Figure3.4:Line2taboftheadministrationpanel
Fewimportantstepstodoinactivatinganaccountinbothmenus:

SetLineEnabletoyes.
Fillinyouraccountusingthefollowingparameters:
Proxy
UserID
Password
UseAuthID

voiprakyat.or.id
telephonenumbergivenbyVoipRakyat
thepasswordgivenbyvoiprakyat
no

IfyousetAuthIDtoyes,thenfillinAuthIDwiththetelephonenumbergivenbyVoIPRakyat.Dothe
sameprocessforyourotherSIPaccount,theoneregisteredwithPAP2Line2.Actuallytherearemany
VoIPCookbook:40

otherparametersthatcanbeconfigured,butforanormaloperation,itisnotnecessarytoconfigure
them.Soitissufficientforustousethedefaultconfigurationvalues.

Linksys IP Phone SPA 941


UsingIPPhonemightbemoreattractivetomostuswhowanttouseVoIP,ascomparedtousing
Softphone,IPPhoneismuchsimplertouse.Itisphysicallysimilartoaconventionalphone,butunlike
conventionalphone,IPPhoneisdesignedtouseforVoIP,sothereisnoRJ11portliketheone
availableinconventionalphones.

Figure3.5:AnIPPhoneFigure3.6:IPPhonetypicallyhastwoRJ45ports
WhatIPPhonehasinsteadistheRJ45portforitsLANconnection(ethernetsocket).Asyoucanseeat
thebackofIPPhone(showninfigure3.6),bothportsareofRJ45,onetobeconnectedtoaLAN
whileanothertothecomputer.Thisallowsustousethephonewhileusingthecomputerforthe
internet.Howeverkeepinmindthatyourbandwidthmaynotbesufficientforboth.Soonlyusebothat
thesametimewhenyouthinkyouhaveenoughbandwidthtoensurethequalityofyourVoIP
communicationremainsgood.AnIPPhonecanusuallybeconfiguredthroughtheweb.
ThereareabundanttypesofIPPhoneinthemarket.Youcanfindthematthefollowinglink:
http://www.voipinfo.org/wiki/view/VOIP+Phones.
ThesortofIPPhoneweuseasanexampleisSPA941.ToobtainitsIPaddress,wehavetodothe
following:

ClickMenu(illustratedaspapericonbelowthemailbutton)
Clickthecursorsoitwillprovideadropdownmenu
Findnetwork
VoIPCookbook:41

ThereyouwillfindtheIPaddressofSPA941.
NextyouhavetoconfigureyourPCsothatyouwillbeabletoconfigureLinksysSPA941throughthe
web.GotoPC,matchtheIPaddresstothatofSPA941bychoosingStart,ControlPanel,Network
connections,LocalAreaconnection,InternetProtocol(TCP/IP)andProperties.

Figure3.7:ThefirstappearanceyouwillseeisthestatusofLinksysSPA941.
GotoLinksysSPA941webthroughhttp://ipadressspa941.

VoIPCookbook:42

Figure3.8:Choosewhichinternetconnectiontypeyouwanttohave
Inthesystemmenu,wecanconfigureourIPaddress,netmask,gatewayandDNSofSPA941.Ifyou
wishtohavetheIPAddressbedetectedautomaticallyusingtheinformationobtainedfromDHCP
server,youcanjustsetDHCPtoyes.

VoIPCookbook:43

Figure3.9:ByclickingonExt2tab,youcansetsomeimportantparametersofExt2line.
BylogginginasAdmin,wewillseethatSPA941hastwoexternallines:Ext1andExt2.Eachofthem
canbeconfiguredsoastoberegisteredtodifferentSIPproxy.

VoIPCookbook:44

Figure3.10:ByclickingonExt1tab,youcansetsomeimportantparametersofExt1line
TherearetwostepsneededtoactivateanaccountatmenuExt1orExt2:

SetLineEnabletoyes.
Fillinthethefollowingparameterswiththeinformationpertainingtoyouraccount:
Proxy
UserID
Password
UseAuthID

voiprakyat.or.id
thetelephonenumbergivenbyVoIPRakyat
thepasswordgivenbyVoIPRakyat
no

IfUseAuthIDissettoyes,thenfilltheinAuthIDwiththetelephonenumbergivenbyVoIP
Rakyat.DothesamefortheotherSIPaccountyouwanttoregistertoExt2ofLinksysSPA941.

VoIPCookbook:45

Figure3.11:Thephonetabofadministrationpanel
InLinksysSPA941,wearegiventhefacilitytoopenaspecificExtbyusingtheLineKeybuttononthe
rightside.FourLineKeybuttonsareavailable.OnemayprogramthesefourbuttonstwoforeachExt
Line.Todotheprogramming,youhavetobeanadmin,bycarryingoutthefollowingsteps:choosean
extension(either1or2)foreachLineKeyandshownumberandfillinitwiththenumberorUserID
givenbytheSIPProvider.

WiFi IPPhone
WiFiPhonescanbeusedforinternettelephonyconnectedtoIPPBXviaWiFiorHotSpot.Inother
words,thephonecanbeusedasanextensionofaPABXoraphonewhichisconnectedtoahotspot.
SomeoftheseWiFiPhonemayhavedualfunctionsGSMmodeandVoIPitallowsthepossibility
ofreceivingaGSMcallorVoIPcallthroughWiFimodeasanextensiontoanIPPBX.
VoIPCookbook:46

OperatingWiFiPhoneisnotdifficult.AllyouhavetodoareconfigureyourSIPaccountbyentering
thenameoftheserver,telephonenumberandpassword;searchinganyavailableWiFiaccesspoint;and
connecttoaWiFiAccessPointandgetanIPaddress.
NowthatyouunderstandwhatWiFiPhoneisandhowtooperatethem,wewillprovidesomeexample
onhowtoconfigureandoperateWiFiPhones.

LinksysWirelessGIPPhone
LinksyslaunchedaWirelessGIPPhoneadedicatedWiFiPhone.ItisnotaPDAnorordinary
cellphone(Seefigure3.12).IfyouhavetheWiFiPhoneproperlyconfigured,connectedtotheWireless
AccessPointandregisteredtoaVoIPSoftswitch,thenwhatshouldappearonthescreenofthephoneis
thenameoftheaccesspointandthetelephonenumberofthephone.Underthiscircumstance,theWiFi
Phoneisreadytobeusedforcalling.

Figure 3.12:
Wireless-G IP
Phone

Figure 3.13:
WiFi Phone can
be used for
VoIP call when
it is properly
configured

InLinksysWiFiPhonemainmenu,thereareatleasttwo(2)thingsyouhavetoconfiguresothatyour
phonewillfunctionwell.Firstly,thewirelesssettings,bywhichwecanscananyaccesspointwireless
frequencyandconnectourphonetotheaccesspointsowecanbeconnectedtotheinternet.Secondtly,
thePhoneSettings,allowsustoconfiguretheSIPserverthatweusetocall.Forthelatter,youneedto
fillintheinformationpertainingtophonenumbers,passwordsandtheserversused.Sinceweareusing
VoIPRakyatasanexample,theinformationshouldbethoseofVoIPRakyat.

VoIPCookbook:47


Figure3.14:
Throughthephone
menu,youcan
makedirect
configurationin
ordertomakeyour
phoneVoIPenabled

ConfiguringtheWiFiPhoneusingmenushowninthefigure3.14iseasy,butsincethereisnosoftware
thatcouldhelpuscapturethescreensforconfiguringthephone,weusethewebconfigurationinstead
forthepurposeofhelpingyouunderstandhowtoconfiguretheWiFiPhone.Thesameresultshould
otherwisebesimilartothatofdirectphoneconfiguration.IncontrasttoWiFiPhonethatiscombined
withPDAorGSM,LinksysWiFiPhonecanbeconfiguredusingtheweb,inadditiontofeature
allowingyoutodirectlymakeconfigurationusingthemenuavailableinthephonescreen.

Figure3.15:Enter
theusernameand
passwordtologin
theadministration
panelsothatyoucan
configurethephone

VoIPCookbook:48

Thewebwillappearaswhatisshownasfigure3.15.Itisthedisplaypromptingyoutoenteryouruser
nameandthepasswordrequiredtoauthenticateyouraccount.Thedefaultfortheusernameand
passwordisadminandadminrespectively.

Figure3.16:ThroughtheNetworkTaboftheadministrationpanel,
youcansethowyouwillobtainyourIPaddress
Onceyouhaveenteredtheusernameandpassword,youwillbebroughttotheadministrationpanel
wherebyyoucanconfiguretheIPaddress.Normally,inahotspotthatprovidesanyuserconnectingto
itwithfreeIPaddress,wejustneedtosettheconfigurationtoAutomaticConfigurationDHCP.In
thecasewheretheIPaddressisnotprovidedautomaticallybythehotspot,youhavetomanuallyenter
theinformationpertainingtotheIPaddress,subnetmask,gateway,primaryandsecondaryDNS.The
MACaddressoftheWiFiPhoneappearsbydefault.Onceyouhavefinishedenteringtheseinformation,
clickSaveSettingstosavethemintothememory.

VoIPCookbook:49

Figure3.17:ByclickingonthePhonebookmenu,
youcanAddnewphonenumbersordeleteexistingones
InthePhonebookmenu,wecanaddnewnumbersordeletetheonesalreadylistedthere.Wecanalso
includemultiplenumbersforeachperson.

VoIPCookbook:50

Figure3.18:SIPSettings
IntheSIPSettingstab,wecanconfiguretheIPaddressoftheSIPProxy,SIPPort(usually5060),the
IPaddressoftheSIPRegistrar(usuallythesameasthatofSIPProxy),RegistrarPort(alsousually
5060),andSIPaccountnumberconsistingoftelephonenumberandthepasswordrelated.AsforVoIP
RakyatSIPinformation,fillintheSIPProxyandSIPRegistrarwithvoiprakyat.or.id.

VoIPCookbook:51

Figure3.19:TheNATSettings
IntheNATSettingsmenu,youcanconfiguretheProxyaddressandProxyPort.TheProxyaddressfor
VoIPRakyatisvoiprakyat.or.id.AndtheProxyPortnormallyusedis5060.

VoIPCookbook:52

Figure3.20:TheSIPSDPSettingstab
InSIPSDPSettingstab,wecanconfigureseveralthingsrelatedtothetypeofCodec,packettime,
DTMFRelay,UDPPortandRTPPort.Theseparametersaregoodbydefault,sojustleavethemasis.

VoIPCookbook:53

Figure3.21:Byclickingonthewirelesstaboftheadministrationpanel,
youcanfindouttowhichhotspotthephoneisconnected
IntheWirelesssectionwecanseetowhichAccessPointtheWiFiPhoneisconnected.

VoIPCookbook:54

Figure3.22:ByclickingontheAdministrationtaboftheadministrationpanel,
youcanchangeyourpassword
Inadministrationsection,wecansettheadministrator'susernameandrelatedpasswordfortheWiFi
Phone.Thedefaultconfigurationforusernameandpasswordarebothadmin.

VoIPCookbook:55

HewlettPackardIpaq6395
PersonalDigitalAssistance(PDA)whichusesPocketPC(PPC)operatingsystem,suchasIpaq6395or
otherkindofIpaqhavingWiFicapability,canbeusedforVoIPcommunication.Oneofthesoftware
thatcanbeusedforthisPDAisSJPhonePPC,whichcanbedownloadedfrom
http://www.sjlabs.com/sjp.html.Alsoavailableinthissitearethemanualsnecessaryforoperatingthe
softphone.SJPhoneinstallationcanbedoneinthefollowingsteps:connectIpaqtoPCthroughthe
providedUSBcableandrunthesoftwareonPC,andSJPhonePPCwillbeautomaticallyinstalledin
Ipaq.

Figure3.23:Hewlett
PackardIpaq6395

ActivatingIpaq6395'sWirelessCapability

VoIPCookbook:56

InordertoaccessinternettelephonyusingPDAIpaq,weneedtoactivatethewirelessconnectivity
featureavailableinIpaq.ThroughIpaqWirelessmenu,presstheWiFibuttonsothewireless
connectivitybecomesactive.
Figure3.24:
ThroughiPAQ
WirelessSettings,
youcanenablethe
phone'sWiFi
feature

Ifallgoeswell,thecoloroftheWiFibuttonwillturngreen,asignwhichindicatesthatthedeviceis
properlyconnectedtothewirelessnetwork.

Figure3.25:
ThegreenWiFi
iconindicatesthat
you'reconnected
toawireless
network

Figure3.26:
Byclickingthe
Settingsiconnextto
theWiFiicon,you
canseetowhich
networkyourphone
isconnected

IfyouwanttomakefurtherconfigurationonhowyouusetheWiFiaccess,clicktheSettingsIcon,
whichwillbringyoutoamenushowingvariousaccesspointsmonitoredbyIpaq6395.Choosethe
accesspointtowhichyouwanttobeconnected.

VoIPCookbook:57

RunningSJPhone

Figure3.27:
Inordertorun
SJPhone,tapthe
icon

SJPhoneSoftwarecanbefoundasaprogramofPocketPC.Torunit,simplypressthebutton.Notethat
thetechniqueforoperatingSJPhonethroughPocketPCisnotsodifferentfromthatwhichrunsinon
PC.

Figure3.28:
Enteryour
accountnumber
andtherequired
passwordin
ordertoinitialize
theprofile

Figure3.29:The
appearanceof
SJPhonedialing
console

IftheSIPaccounthasbeenproperlyconfiguredinSJPhone,whatwillbeaskedfirstwhenyouactivate
SJPhoneistheaccountnumberandpasswordrequiredtoaccesssuchSIPaccount.SJPhonewill
appearlikewhatisshowninFigure3.29,withitsdialingkeypadandallthebuttonsneededfordialing
upandhangingup.
VoIPCookbook:58

Figure3.30:
Throughtheuser
informationtabof
SJPhonemenu,we
canenterourname,
emailandlocation.
Wecaneveninclude
commentsandour
image

Tapthemenubutton.Inmenu,wecanentertheinformationpertainingtotheuser,whichincludes
name,emailaddress,locationandevenanypicturewewanttouseasourimage.

Figure3.31:
Settingsofincoming
andoutgoingcalls,
andNATMapping
refresh

Tapthecalloptiontab.Throughthistab,youcanconfiguresomethingslike:

whetherwewanttoautomaticallyreceiveallincomingcalls.Thismenuisinfactveryusefulfor
thesortofIpaqwithsmallscreenthatmakesusdifficulttoreceiveVoIPcallsmanually.
Whetherwewanttobeleftundisturbed,ignoringallincomingcalls.
TheIPaddressusedforoutgoingcalls.
LimitingtheCallerIDinuse.

VoIPCookbook:59

Ingeneral,theseparametersdonotneedtobechanged,possiblyexceptfortheAutomaticallyAccept
IncomingCallstocompensateforthesmallPDAscreen.
Figure3.32:
Undertheprofilestab,
youcaneithermake
newprofile;edit,use,
initialize,renameor
deleteexistingprofile

Intheprofiledialog,wecanmakedetailconfigurationforeachaccount.Basically,aprofiledefinesan
account.,whichcanbeeitheraSIPaccountorH.323account.Thelatterisatechnologyonceusedby
manyVoIPproviders.TheformerisatechnologyusedinVoIPRakyat.Thereareseveraloptions
availableintheprofilemenu:
Newtocreatenewprofile
Edittoeditexistingprofile
Deletetodeleteexistingprofile
Usetouseexistingprofile
Initializetoinitializeaprofile
Renametochangethenameofexistingprofile
Figure3.33:
Enterthenameof
theprofile,thetype
ofinterfaceituses,
andthenameofthe
profilefile

VoIPCookbook:60

Wheneditingaprofileforthefirsttime,wewillbebroughttothegeneraltaboftheprofile.Herewe
candefinethenameoftheprofile,thetypeandnameoftheprofilefile.ForVoIPRakyat,theinterface
typeweuseisSIPProxy.

Figure3.34
Throughthe
initializationtab,
configurewhat
needstobe
inquired,savedor
required

Ininitializationtab,wecansettheuserdatainitializationprocess,includingphonenumber/account,
passwordandCallerID,whetheruserswillbeinquired,thedatapertainingtotheseparametersneedto
besavedorrequired.Itisrecommendedthatyouusethedefaultsetting,leavingthethesettingsasis.

Figure3.35:
Inordertoenable
SIPProxy,enterthe
requiredinformation
intheSIPProxytab

VoIPCookbook:61

Ofallmenusrequiredforconfiguringaprofile,SIPProxyisperhapsthemostimportant.The
informationenteredtherewilldeterminewhethertheSIPsoftphonecanactuallybeusedornot.The
informationyouhavetoenterareasthefollowing:

ProxyDomainisyourSIPProxyserver.ForVoIPRakyat,theproxydomainisvoiprakyat.or.id.
TheProxyDomainPortisusually5060.
UserDomainforVoIPRakyatisvoiprakyat.or.id.
ClickRegisterwithproxy
Figure3.36:
Additionalsettings
availableinthe
Advancedtab

InAdvancedtab,wecanconfiguremoresophisticatedfeaturessuchasvoicemailnumber,removing
fancycharactersfromphonenumbers,acceptredirectionrepliesetc.However,tooperateSJPhoneina
standardmode,wedon'thavetochangetheseparameters.

Figure3.37:
SettingsofDTMF
tab

VoIPCookbook:62

InDialToneMultiFrequency(DTMF),wecanchooseseveralthingsrelatedtoDTMF:

DTMFissentasvoiceortextdatausingRFC2833.
Thedurationofthetone.Thedefaultvalueusedis270ms.
TypeofRealTimeProtocolusedinRFC2833is101.
ThedefaultDTMFsignalvolumeis10dBm0
Thepausedurationduringwhichthesignalissentininbandmode.Thedefaultvalueis100
ms.
Figure3.38:
STUNSettings

TheSTUNtaballowsustodeterminewhichserverwillbeusedtohelpSIPfindtheIPaddressweuse.
ThedefaultSTUNserverusedisstun.softjoys.com,withport3478.SoifyouwanttoapplySTUNto
VoIPRakyat,youcanuseUDPPort3478and3479.
Figure3.39:
Theappearanceof
theconsoleshowing
successfulSIP
registration

VoIPCookbook:63

Ifitissuccessfullyregistered,thenthedisplayofthescreenwillsaySIP:registeredasnumber@server
SIP,withthehostnamealsoshownonthescreen.Underthiscircumstance,SJPhoneisreadytobe
used.WecanplaceacallthewayweusearegularcellphonewithaPDA.
SJPhoneFeatures

Figure3.40:
Tapthephonebook
iconinorderto
savecontact
numbersandcall
them

ThereareseveralfeaturesprovidedbySJPhonetohelpusersinusingthephone,oneofthemisthe
phonebookicon(looklikeanopenbook),whichislocatedatclosetothebottomofthescreen.Through
thisoption,wecanenterthenamesandnumberofourfriends.
Figure3.41:
Thephonebookis
stillempty,with
theAddiconthe
onlyavailable
optioninthe
phonebooktab

VoIPCookbook:64

Toaddacontact,simplytapAdd,whichisavailableinPhonebooktab.

Figure3.42:
Enterthe
information
pertainingtoa
contact

Withtherespondentdialogpropertiesopen,weneedtoenterthename,nickname(optional),emailand
phonenumber.Youcanalsocommentontheuser,perhapsjustincaseyouwillforgetwhothisperson
is.
UsingSJPhonetoplacecallthroughIpaq6395

Figure3.43:
Dialsomenumbersin
ordertoplaceacall

VoIPCookbook:65

Figure3.44:
Acallis
successfully
connected

ToplaceacallusingSJPhoneinIpaq6395isnotdifficult.Allwehavetodoistoenterthedestination
phonenumberandpressthedialkeylocatedonthetopright.Ifthecallisconnected,amessagesaying
so,thedurationtimeoftheconversationandthecodecinusewillappearonthescreen.

Figure3.45:
Bytappingonthe
outgoingcallicon,
youcanseethe
listofthenumbers
youhavecalled
andtheduration
ofthe
conversation

OutgoingCallStatisticcanbeviewedbytappingonthephoneiconwithatriangulararrowpointing
downward.
VoIPCookbook:66

Figure3.46:
Bytappingonthe
incomingcallicon,
youcanseethelist
ofthenumbers
dialingyour
numberandthe
durationofthe
conversation

Incomingcallstatisticscanbeaccessedonthetabavailableatthebottomofthescreen,withthetab
appearingasaphonewithatriangulararrowpointingtowardthephone.

Figure3.47:
Bytappingonthe
missedcallicon,you
canseethelistof
missedcalls

MissedCallstatisticscanbeviewedonthemenuavailableatthebottomofthescreen,withtheicon
appearingasaphonewithastopsignbelowit.
VoIPCookbook:67

Nokia
Aspartofcellularmajorindustry,Nokiaseemstohaverecognizedthatinternettelephonywillbe
instrumentalinthefuture.AssuchNokiamakesitpossibleforSymbianoperatingsystemtooperatein
Nokiahandphone,providingcustomerswithacellularthatcanbereadilyusedforinternettelephony.In
theexample,wewilluseseveralNokiahandphone,suchas,NokiaE61,NokiaE71andNokiaN80.The
formerismoreofPDAtypecellularphonewhilethelatterissmallintermsofdimension.NokiaE61,
NokiaE71andNokiaN80areWiFiPhone.
TheWiFiphoneconfigurationforallNokiaissomewhatsimilar,withminordifferencesintermsof
menuappearance.Sogenerally,thosewhoareusedtoSymbianshouldnotencountersignificant
challengesinturningtothesephones.

Figure3.48:NokiaN80

VoIPCookbook:68

Figure3.49:NokiaE61

NokiaWirelessConfiguration

Figure3.50:
Nokia'sconsole

Nokia'sconsoledisplaylookslikewhatisshowninFigure3.51.Therearethingstobeconfiguredso
thatNokiacanbeconnectedtobothWiFiandVoIP:

EnableWiFiandcreateaprofileofanaccesspointthatcanbeaccessed.
CreateSIPaccount.
CreateaProfilefrominternettelephonyfacility.

VoIPCookbook:69

Clicktheglobeicontoopenthemenu.
Figure3.51:Byclicking
themenuicon,wecan
selectavarietyofoptions .

Withthemenuopen,selecttools.Throughthisoption,wecanconfigureWiFi,SIP,internetphoneand
othersettings.
Figure3.52:
Therearemanyoptions
availableinToolsmenu.

WiththeToolsiconselected,selectSettingsinordertoaccessconnectionmenuallowingusto
configureWiFi,InternetTelephoneandSIPsettings.

VoIPCookbook:70

Figure3.53:
UndermenuSettings,
configuretheConnection

InSettings,thereareseveraloptionswecanchoose:Phone,Call,Connection,DateandTimeand
Security.ToconfigureWiFiAccessPoint,SIPSettings,andinternettelephony,weneedtoconfigure
usingtheConnectionsubmenu.
Figure3.54:
Optionsavailableunder
Connection

IntheConnectionmenuthereareafewmoreoptions.Weneedtoconfigureonlythreeofthem:Access
Points,SIPSettingsandInternetTelephonySettings.SelectAccesspoints.

Figure3.57:
Thereisnoaccesspoint
yetshownonthescreen

VoIPCookbook:71

WiththeAccesspointmenuopen,wecanaddAccessPoint,byselectingtheOptionsmenulocatedat
thebottomleftfthedisplay.
Figure3.58:
Youcaneithermake
newaccesspointoredit
ordeleteexistingaccess
points.

ThereareseveraloptionsavailableintheAccessPointsmenu:Edit,NewAccessPoint,Help,Delete
andExit.ToaddanewAccessPoint,selectNewAccessPoint,whichwillbringtwomoreoptions:Use
defaultsettingsandUseexistingsettings.Assumingthatthisisthefirsttimeyou'reusingthephone,
selectUsedefaultsettings.
Figure3.59:
Creatinganaccesspoint
profile

ForcreatinganAccessPointprofile,weneedtosettheConnectionname,typeofconnection(Data
bearer),andthenameofWLANnetwork.Fordatabearer,chooseWirelessLAN.

VoIPCookbook:72

Figure3.60:
Youcaneitherenterthe
networkinformationyou
alreadyknoworsearch
foranynetworksreached
byyourcellular

Ifyouknowthenameofthenetwork,enteritmanually,byselectingEntermanually.Otherwise,letthe
phonefindanyavailablenetwork,byselectingSearchfornetwork.
SIPServerandAccountConfigurationinNokiaE61
Figure3.61:
Youcandothe
configurationofSIPserver
andaccountbyselecting
Options

ThroughSIPSettings,wecanconfigureSIPaccountsthatwillbeusedforcalling.Thesettingsisdone
throughOptionsmenuinSIPSetting.

VoIPCookbook:73

Figure3.62:
SettingsDemovoip
Profile.

TherearesomeparametersofSIPSettingsthatneedtobeconfiguredcorrectly:
CreateanameforProfilename.
ChooseIETFforServiceProfile.
FillDefaultAccessPointwithinformationofAccessPointprofileweusetoconnecttothe
internetnetworkthroughWiFi.
MakesurethatyoufillPublicusernameparameterwiththeproperformatofSIPnumberyou
use.Forexample,23123@voiprakyat.or.idor2002@192.168.0.2.Theprefixsipwillbeadded
automaticallyincasethatyouforgettoincludeit.

Figure3.63:
SIPProfileinSIPSettings
inNokiaE61

Nextweneedtosetthefollowingparameters:
SetUsecompressionparametertoNo.
SetRegistrationparemetertoWhenneededsothatNokiawillpromptuswhetherwewantto
connecttoaSIPsoftswitcheachtimewewilluseSIPPhone.
SetUseSecurityparametertoNo.

VoIPCookbook:74

Figure3.64:
Proxyserversettings

ThroughtheProxyServerAddressmenu,weneedtoconfigurethefollowing:
ProxyServerAddress.
Realmforsomereason,itisbesttofillthisparameterwithatelephonenumbersimilartoour
username.InAsteriskIPPBX,thedefaultrealmisasterisk.
UsernametelephonenumberorSIPusername.
Passwordleavethisblank.
SetallowlooseroutingtoYes.
FillinTransportTypewithUDP.
FillinPortwith5060.
Figure3.65:
Regist.serversettings

InRegistrarServer,weneedtoconfigurethefollowingparameters:
FillinRegistrarServerAddresswithhostnameorIPaddressofourSIPserver.ForVoIP
Rakyat,entervoiprakyat.or.id.
FillinRealmwiththetelephonenumberorusername.
FillinUsernamewithSIPtelephonenumber.
Leavepasswordblank
VoIPCookbook:75

InternetTelephoneConfigurationinNokia
Figure3.66:
InternetTelephony
settings

InInternetTelephonySettings,wecancreateaprofileofInternettelephonyfacilitythatwillbeused
usingNokia.Tosettheprofile,selectOptionsoftheInternetTelephonySettings.

Figure3.67:
Makesuretheprofile
chosenistobeusedasa
defaultprofile

InInternetTelephonyProfileSettings,weneedtoincludeonlytheprofilenameandSIPprofilethat
willbeusedforInternettelephony.Becarefulwhenyou'redoingso.Makesurethattheprofileselected
istobeusedasadefaultprofile,otherwiseourcallwillberejectedwhenweattempttodialusingour
cellulartotheVoIPnumber.AllthisordealisunnecessaryifwehavejustoneSIPaccount.

VoIPCookbook:76

Figure3.68:
Selectingaprofile

TheSIPProfileselectionwillbecarriedoutmanuallybyselectingavarietyofSIPProfileswehave
createdthroughSIPSettings.
RegisteringtoVoIPSoftswitch

Figure3.69:
ConnectivitySettings

ForestablishingconnectiontoVoIP,selectInternettel.(shownasaglobeiconwithyellowphone).This
isassumingthatyouhaveproperlyconfiguredInternetTelephonysettings.UnlikeNokiaE61,Nokia
N80connectstoVoIPthroughoptionavailableinafolderlabeledInternet.Gointothefolderand
chooseInternetTelephone.

VoIPCookbook:77

Figure3.70:Internet
telephonysettings

InInternettelephony(shownasInternettel.),wewillbeprovidedwithtwoparameters:
PreferredProfile,thenameofInternetTelephonyProfileweuse.
RegistrationStatus,theregistrationstatusofSIPaccountwesetinSIPSettings.
Figure3.71:
Internettelephonysettings

IfwechooseWhenneededintheRegistrationparameterinSIPSettings,thestatusofinitial
conditionofinternettelephonysetting,whenInternettelephonyisactive,isNotregistered.
Figure3.72:
EnableWLANconnection
inofflinemodesoNokia
E61canbeconnectedtoa
WiFinetwork

VoIPCookbook:78

IfweattempttochangethestatusfromNotRegisteredtoRegistered,whatNokiawillfirstlytryto
establishconnectiontotheAccessPointwhichwehaveconfiguredinSIPSettings.WhenNokiaasks
whetheryouwanttocreateWLANconnectioninofflinemode,selectYes.Thisselectionwillconnect
NokiaE61toaWiFinetwork.
Offlinemodecansomewhatbeproblematic,becauseifweareinofflinemode,itmeansthatalthough
weareregisteredwiththeSIPserver,peoplearestillunabletocontactus.Tomakesurethatwecanbe
contactedviaGSM,weneedtoactivateNokiasoitbecomesonlinemode.Onlinemodewillbe
possibleonlyifweareusingSIMcardinthephoneandareconnectedtoacellularnetwork.Inonline
mode,otheruserswillbeabletocontactusthroughbothVoIPorGSM.

Figure3.73:
Aregistrationattemptin
progress

OnceconnectedtoaWiFinetwork,wehavetowaitforawhiletoletNokiaregisteritselfwiththe
Softswitch.
Figure3.74:
Theregistrationis
completed

Ifregistrationwiththeinternettelephoneiscompleted,thereshouldbeanotificationsayingso,as
showninfigure3.73.SuchnotificationindicatesNokiacannowbeusedforinternettelephony.
VoIPCookbook:79

CallingusingInternetTelephoneinNokiaE61
Figure3.75:
InitialdisplayofNokia
E61

PlacingacallusinginternettelephoneinNokiaissimilartohowwecallusingotherphone:Wejust
needtotypethephonenumbertowhichwewantdial.
Figure3.76:
Oncethenumberis
dialed,weneedtochoose
thetypeofcall.

ThenNokiawillaskwhetherthecallisofVoicecall(GSM),videocallorinternetcall.SelectInternet
Calltoplaceacallusinginternettelephony.IfwechooseVoicecall,thenthemodeofcommunication
usedtoconnectourcallisofGSM.

VoIPCookbook:80

Figure3.77:
Thephoneiconwitha
smallglobenexttoit
indicatesthatthecallis
established

Whenthecallisestablished,wewillgetanotificationonthescreenthatourtelephonenumberis
connectedtothedestinationnumber.
Figure3.78:
Youcaneithermutethe
sound,activatehandset,
endactivecall,holdthe
]call,makethecallopen
activestandbyandplace
newcall

Todisconnectacall,simplyselectEndactivecall.

VoIPCookbook:81

VoIP in ADSL Modem


EvenwhenVoIPiswidelyusednowadays,thereareonlyfewADSLmodemswithbuiltinVoIP
equipment.OneofthemisLinksysWAG54GP2,asmallmodemthathastwoVoIPequipments.
Configurationcanbedoneentirelyusingtheweb,makingitveryconvenientforbothusersandsystem
administrators.
Figure3.79:
anADSLmodem

VoIPCookbook:82

ADSLModemConfiguration

Figure3.80:TheBasicSetupsubtabundertheSetupTabofthemodemadministrationpanel
Afterenteringtheadministratorpasswordandusername(defaultisadminforboth),wewillbedirected
tothesetuppageofWAG54GP2LinksysADSLModem.Throughthispageyoucanconfigureseveral
thingssuchas:

ConfiguringtheconnectiontotheInternet,typeofmodulationused,encapsulation,
multiplexingtechniquesused,VCIandVPIvalueoftheADSLconnection.
ConfiguringPPP,usernameandpassword
DNSProxyServer

VoIPCookbook:83


Figure3.81:Thestatustabofthemodemadministrationpanel
Thesetuppagealsoprovidesinformationongateway,connectivityconnectivityconditioninPVC
status,andinternetconnectivityconditionincludingtheIPaddress,Subnetmask,Defaultgateway,DNS
andfacilityusedtoconnectordisconnectaconnectivity.

VoIPCookbook:84

Figure3.82:TheWirelesstaboftheadministrationpanel
InadditionwecanalsoconfigureavarietyoffacilitiesavailableinLinksysWAG54GP2ADSLRouter
throughtheweb:

Wireless
Security
AccessRestrictions
Application&Gaming
Administrator

Eachofthesehassubmenu,whichwewillnotexplainanyfurther,aswewillfocusmoreontheVoIP
featureofthemodem.

VoIPCookbook:85

VoIPConfigurationinLinksysWAG54GP2

Figure3.83:TheSystemtabofthemodemadministrationpanel
ThemenuforconfiguringVoIPonWAG54GP2canbefoundinitsVoicemenu.Ingeneral,howto
configurethedeviceisnotdifferentfromtheconfigurationotherLinksysequipments,withthe
followingsteps:

Usermodeisprimarilyusedtoviewanyexistingconfiguration.
Adminmodeismainlyusedtochangetheconfiguration.

InordertosettheSIPaccount,weneedtochangethebasicviewtoadvancedviewintheAdminmode.
VoIPCookbook:86

TheinformationrequiredtosettheSIPaccountareasfollows:

Username/telephonenumber.
Password.
SIPServeraddress.

Figure3.84:TheInfotabofthemodemadministrationpanel
ItisrecommendedthatyoulookintotheInfosubmenuavailableinVoicemenu.Whatyouhavetolook
inparticularistheLinestatus,specificallytheregistrationstateparameter.Onceeverythingisproperly
configured,ensurethatwhatisstatedintheRegistrationStateisRegistered.

VoIPCookbook:87

Figure3.85:TheSystemtabofthemodemadministrationpanel
SystemconfigurationuseswebfromVoIPLinksysWAG54GP2throughaspecificport,with1880as
itsdefaultvalue.Thisportcanbeenabledordisabledthroughsystemmenu.Don'tforgettoclickSave
Settingstostoretheconfigurationsettings.

VoIPCookbook:88

Figure3.86:TheInfosubtabofVoicetabofthemodemadministrationpanel
InAdvancedView,wewillobtainmoreinformation.WhatweneedtoaccessisLine1andLine2
menusoastoconfigureSIPaccountinSIPsoftswitchused.Otherparametersinothermenubeside
Line1andLine2neednottobechanged.

VoIPCookbook:89

Figure3.87:TheSystemsubtaboftheVoicetabofthemodemadministrationpanel
Insystemmenu,ifnecessary,wecanincludePrimaryandSecondaryDNSparameters.

VoIPCookbook:90

Figure3.88:TheSIPsubtabofVoicetabofthemodemadministrationpanel
ThroughtheSIPmenuwecanconfiguretheports,payload,CODEC,etc.Basically,theseparameters
neednottobechanged.Wecanstilluseitsstandardparameterstoachievegoodresults.

VoIPCookbook:91

Figure3.89:Line1subtaboftheVoicetabofthemodemadministrationpanel
InLinemenuparameter,wecansetSIPaccountthatisusedtoregisterwithVoIPsoftswitch.The
parameterswehavetosetareasfollows:

LineEnablesettoYessothelinebecomesactive.
Proxyfillinwithname/hostname/IPaddressofthesoftswitchtobeused.
DisplayNamefillinwithVoIPphonenumber.
UserIDfillwithVoIPphonenumber.
PasswordfillwithVoIPpassword.

UseAuthparameterusuallyissettoNo.IfitissettoYes,weneedtofillintheAudthIDparameter
withtheVoIPtelephonenumber.ThesamesettingsalsoappliestoLine2.
VoIPCookbook:92

CHAPTER 4: Interconnectivity and Telephone Number Allocation


QuestionsmostlyaskedbyVoIPusersiswhetherVoIPcanbeusedtodialandreceivecallsfroma
PSTNorcellularnumber,sinceoneofourpurposesinusinginternettelephonyisthatwewanttohave
thistwowayinterconnectivity,particularlytobeabletoreceivecallsfromPSTNorcellular.
Unfortunately,thismightnotbeaseasyaswethink,ascallsoriginatingfromPSTNorcellularcan
reachoftenonlytelephonenumberslegitimatelyrecognizedbythePSTNorcellular.Thesenumbers
areallocatedbyE.164,theofficialnumberingsystemacknowledgedbytheInternational
TelecommunicationUnion.
However,thegoodnewsisthattherearesomeleewaysmakingitpossibleforustocallPSTNor
cellularnumbersusingVoIP.OneofwhichisbysubscribingtoaVoIPproviderthatprovidesuswith
PSTNnumbers.Ontheotherhand,wecanalsoregisterourPSTNnumbertointernationalVoIP
networksoourVoIPaccountcanberecognizedasalegitimatePSTNnumber.Thissectionwillhelp
youunderstandindetailthetechniqueforobtainingthenumber.Wecouldgetafreephonenumber
fromWashingtonState,US,(http://www.ipkall.com)whichenablecellular/PSTNuserstocalluson
VoIPnetwork.
NotethattoreceiveacallfromPSTNprovider,itissufficienttouseacomputer,softphoneandinternet
connectivity,preferablykeptonlinefor24hours,asifweareusingordinaryphone.Obviously,aswe
haveexplainedearlier,itispreferabletouseVoIPhardwaresuchasIPPhone.

VoIPCookbook:93

Getting Free Washington State Telephone Number

Figure 4.1: You can get a free phone number from IPKall

AwebsitethatprovidesWashingtonStatetelephonenumberforfreeisIPKallhttp://www.ipkall.com,
withthenumberhaving+1prefix,theconventionalcountrycodeforUnitedStatesofAmerica.Itis
VoIPCookbook:94

interestingtonotethatthisnumber,althoughavailableasavirtualnumber,canactuallybecalledfrom
otherPSTNnumberindifferentcountries,witheachcountry'sinternationalratesappliedtothecall.To
beabletoenablethenumber,youneedtohaveaSIPaccountfromaSIPproviderorusetheoneyou
havecreatedinVoIPRakyat.

Figure4.2:Youcanlogonusinganexistingaccount,orcreateanewaccountonthespot
VoIPCookbook:95

OncewehaveaSIPaccount,thenextstepwehavetodoissignuptowww.ipkall.cominordertoget
WashingtonState'stelephonenumber.Inthesignuppane,chooseanyofthefollowingtheareacode:
206,253,360,and425.Whichevernumberyouchoose,enteradditionalinformationontheSIPphone
numbergivenbyaSIPProvider(inourcase,it'sthenumbergivenbyVoIPRakyat),SIPProxy
(voiprakyat.or.id),ouremailaddressforconfirmingtheaccountwearecreating,andthepasswordfor
makingchangesinIPKallaccount.TypeintheCaptchagraphicalwords.Afterallparametersarefilled
correctly,clickSubmittoproceed.
Normally,wehavetowaitforaboutanhourtoreceivetheconfirmationsentthroughemail.Toactivate
yourIPKallaccount,clicktheURLobtainedfromtheemail.Withtheaccountconfirmed,younow
havetheStateofWashingtonphonenumberwithwhichyoucanreceivecallsfromotherPSTNacross
theworldthroughyourSIPaccount.

VoIPCookbook:96

Free Internet Country: Country Code +882


OneoftheservicesimportanttoVoIPisENUM,whichcarriesoutmappingfromIPaddressto
telephonenumberusingDomainNameSystem(DNS).Thephonenumbersystemfortelephoneweare
familiarwith,theonewithspecificcountrycode,isknownasE.164format.Themappingprocessis
usuallyperformedbyaDNSmachineintheInternet,throughNAPTRspecialentry.Therearetwo(2)
mainTopLevelDomainsusedasreferenceinENUMprocess:e164.arpaande164.org.Theformeris
thetopleveldomainnormallyusedbyformaltelecommunicationinstitutioncontrolledbythe
InternationalTelecommunicationUnion.Inyourcountry,e164.arpaispossiblyunderthecontrolofthe
country'sministryoftelecommunication.

Figure 4.3: e164.org main window

VoIPCookbook:97

The latter, e164.org, is the informal level domain provided by communities, the sort that are concerned with how
people can minimize telecommunication cost. This is the domain we will use for our VoIP communication. We
can register in http://www.e164.org to get an account that can be used to obtain a phone number and register the
number.

Figure 4.4: To use e164.org, simply follow the instructions shown in


http://www.e164.org/wiki/AsteriskExamples

Forsmoothinterconnectionprocessbetweenasterisksoftswitchande164.org,weneedtoconfigure
/etc/asterisk/enum.confsotheAsterisksoftswitchwillbeabletorecognizethenumberslistedin
e164.orgdomain,byactivatingthefollowingparameters:
search=>enum.voiprakyat.or.id
VoIPCookbook:98

search=>e164.org
search=>e164.arpa
Oncetheseparametersareactivated,thesoftswitchwillautomaticallyseekthePSTNnumbers
availableine164.organde164.arpa.SinceweareusingVoIPRakyatasanexampleinthisbook,we
willreferyoutoenum.voiprakyat.or.id,anENUMdevelopedinIndonesia.Youmaylaterchangethe
parameterstoanyENUMproviderthatissuitabletoyourneedsorevendevelopyourownENUM
server,asrunningonerequiresonlyaDNSserver.
Entriesthatneedstobeincorporatedinto/etc/asterisk/enum.confare:
search=>enum.voiprakyat.or.id

VoIPCookbook:99

Figure 4.5: Before you can be connected to e164.org, you have to sign up first

Throughtheregistrationpageofe164.orghttps://www.e164.org/signup.php,entertherequired
informationinordertoobtainatelephonenumberorregisteratelephonenumber.Theinformationyou
havetoenterareusername,password,youremailaddress,yourtimezoneandVerifyingcode.Then
clickAddmetocompletetheregistration.Iftheregistrationissuccessful,youwillbeabletouse
yournewlycreatedaccounttogetatelephonenumberassignedbye164.orgorregisteryours.

Figure 4.6: The web appearance after you are logged in

Toobtainatelephonenumberorregisteryournumber,youneedtologontoe164.org.Onceyou're
loggedin,therearesomeoptionsyoucanchoosefrom.
VoIPCookbook:100

Figure 4.7: PSTN Phone Numbers can be added via https://www.e164.org/pstnadd.php

Accesstohttps://www.e164.org/freenumadd.phpwillbringyoutoadefaultwindowwherebyyoucan
addavirtualphonenumbertoe164.org.Youwillbeassignedaninternettelephonenumberwith
countrycode+822frome164.org.
Butifyou'reinterestedinaddingarealPSTNnumber,accesstohttps://www.e164.org/pstnadd.phpwill
addPSTNnumberinsteadandregisterthenumberyouuseinyourcountry.Whenregistering,youneed
tohavethePSTNnumberactivease164willdialthenumbertoauthenticatethatitisreal.Onceyou
receivedtheactivationcode,gobacktoe164.orgwebsitetoactivatethenumberyouhavejust
VoIPCookbook:101

registered.
ToregisteraPSTNnumber,youneedtoenterinformationsuchascountry,areacode,telephone
number,andSIPaccountthatwillbecalledwhensomeoneplacesacallthroughVoIPnetworkusing
thePSTNnumber.SotheVoIPnetworkwillnotreachyourrealPSTNnumber,butyourSIPaccount
usingthisPSTNnumber.YourSIPphonewillring,butnotyourPSTNphone.
Onceallinformationareenteredcorrectly,clickAddmetoregisterourPSTNnumbersoitcanbe
calledthroughinternettelephonynetwork.

Figure 4.8: You can obtain +822 number assigned by e164.org via https://www.e164.org/freenumadd.php

Thesecondoptionismucheasiertodo:simplyrequestaVoIPnumberwithcountrycode+882via
https://www.e164.org/freenumadd.php.ThisnumbercannotbereachedbyPSTNnumbersbutwillbe
VoIPCookbook:102

reachedonlythroughVoIPnetwork.Toobtaina+822number,enteryourSIP,IAX2orH.323number
intotheblanks.SincetheaccountyoucreatedinVoIPRakyatisofSIP,chooseSIPinthedropdown
menu.Onceallinformationareenteredproperly,clickAddnumberinordertoobtainthecountrycode
+882.

Figure 4.9: Request a block of number via https://www.e164.org/hostadd.php

Themostinterestingpartofe164.orgisitsabilitytoobtainablockofnumbersvia
https://www.e164.org/hostadd.phpwithareacode+82299,insteadofhavingthesenumbersincluded
onebyone.Todothis,clickServerAdd.ViaaddaServerEntry,choosethetypeofprotocolusedby
theserverandenterthenameoftheserver.TheservershouldhaveaPublicIPaddress,nottheone
VoIPCookbook:103

usedinternally.Onceallinformationareenteredproperly,clickAddServer.ThiswillmakeyourSIP
serverberecognizedbye164.org,with+882beingthecountrycodeassignedtotheserver.Thisalso
impliesthatyouwillhaveabunchofnumbersthatyoucanfurtherallocatetotheuserswhoare
registeredwithyourserver.

Introducing your country code to International VoIP network

Figure 4.10: Add a telephone number via https://www.e164.org/pstnadd.php

IfyouwanttointroduceaPSTNorcellularnumberwithaspecificcountrycodetothisVoIPnetwork,
youcandosothroughmenuavailableathttp://www.e164.org/pstnadd.php.Whatyouhavetoenteris
thecountryofthePSTNorcellularnumber,areacode,localtelephonenumber,andtheSIPaccount
VoIPCookbook:104

registeredwithaSIPproviderwherethePSTNnumbersarethoseofSIP.
Whenregisteringthephonenumber,youneedtohavethephonereadytoreceivecalls,aswithin15
minutesafteryouregisteredit,e164.orgwilldialyournumbertoprovideyouwithaPersonal
IdentificationNumber(PIN)requiredtoactivatetheaccount.Writethemdownsomewheresoyoudon't
havetomemorizethem.GobacktotheWebandactivateyouraccountusingthepinthathasjustbeen
giventoyou.Oncethisiscompleted,yourPSTN(orcellular)numbercanberecognizedintheVoIP
network,withallthenumbersregisteredwiththenetworkcapableofdialingyourSIPaccountusing
yourPSTNnumbers.

VoIPCookbook:105

VoIP Rakyat's ENUM


Besidese164.org,thereishttp://enum.voiprakyat.or.id,amappingsystemdevelopedbyVoIPRakyat.

Figure4.11:Indonesia'sEnumdirectorydevelopedbyVoIPRakyat

VoIPCookbook:106

Figure4.12:ThesignuppageofVoIPRakyatENUM
ThroughVoIPRakyat(VR)ENUMregistrationpage,youcanregisteryourselfasamember.The
informationyouneedtofillinisusername,emailaddress,andpassword.

VoIPCookbook:107

Figure 4.13: ENUM VoIP Rakyat sign-up page

Scrollthepagedown.Fillinalltheinformationrequired:Name,Birthday,Address,City,
State/Province,countryandmobilephonenumber.Forsecurityreason,VRwillverifythatyouarea
realperson,andnotaspammingmachine.Usetheprovidedsecuritycodetofillintheblanks.
Onceallinformationareenteredcorrectly,clickSubmittoproceed.

VoIPCookbook:108

Figure 4.14: The notification informing that your registration is successful

Oncetheregistrationiscompleted,ENUMVoIPRakyatwillsendusanemailcontainingtheusername
andpasswordwesetwhenregisteringtoENUMVoIPRakyat.

VoIPCookbook:109

Figure 4.15: In order to access ENUM VoIP Rakyat, you need to enter your username and password

Nowthatyourusernamehasbeenregistered,logonusingitandthepasswordprovided.Clickloginto
proceed.

VoIPCookbook:110

Figure 4.16: ENUM VoIP Rakyat main Window after you logged in

InENUMVoIPRakyat,ontheleftofthepage,therearesomeusefuloptionsyoucanchoosefrom:
PreferencesandPhoneNumber.First,clickPreferences.

VoIPCookbook:111

Figure 4.17: By clicking on Preferences, you can edit your login and personal information

WiththePreferencesoptionclicked,youcanchecktheinformationyouenteredearlierwhenyoudid
theregistration,andmakenecessarychanges.

VoIPCookbook:112

Figure 4.18: By clicking on Phone number, you can add your phone number

ClickPhonenumber.ClickAddphonenumber.

VoIPCookbook:113

Figure 4.19: By clicking on Add Phone number, you will be able to register your phone

Theinformationyouneedtoenteriscountrycode,areacodeandlocalnumber.Oncetheseinformation
areincluded,clickAddsothatthenumberwillbeaddedtoVoIPRakyatENUMdomain.

VoIPCookbook:114

Figure 4.20: Before a number is added, ENUM VoIP Rakyat will


confirm whether you really want to add the number

Justlikee164.org,ENUMVoIPRakyatisalsodesignedtovalidatethenumberbeingregistered.Itwill
callyournumberandtellyouthecoderequiredtoauthenticatethenumber.Forthistohappen,itis
importantthatthenumberyouprovidedearlier,whenyoudidyourregistration,isneitherofFax
machinenorofPABX.OtherwiseyouwillnotbeableobtainthecodegivenbyVoIPRakyat.

VoIPCookbook:115

Connecting to PSTN and Cellular Using VoIP Discount


Analternativetoregisteringyournumbertoenumservicessuchase164.orgorvoiprakyatistousea
servicecalledVoIPDiscount(http://www.voipdiscount.com).

Figure 4.21: With VoIP Discount, you can make free or inexpensive calls over the Internet

Bybuyingacertainamountofcredit,wecanobtainatelephonenumberthatcanbereachedbyPSTN
telephoneusingthenumbersofothercountriessuchasCzechRepublic,French,German,Holland,
SwissandEngland.Withthiscredit,youwillbeabletomakerelativelyinexpensivecallstoPSTNor
cellular.Theratesvary,dependingonwhereyouareandthecountriesfromwhichthenumberyou're
attemptingtocalloriginates.Fortherates,gotohttp://www.voipdiscount.com/en/rates.html

VoIPCookbook:116

TouseVoIPDiscount,youneedto:

makesurethatyourcomputermeetstherequirementsforusingthem
obtainVoIPDiscountsoftwareinhttp://www.voipdiscount.com/getfrommirror.php?
file=voipdiscount&lang=en
InstallthesoftwareinyourPC
enterusernameandpasswordifyouuseVoIPDiscountforthefirsttime.

Onceallthesestepsarecompleted,youwillbeabletodialanynumberthewayyoudialusingyour
PSTNnumber,withcountrycode,areacodeandtelephonenumber.
IfyouuseSIPIPPhoneorATA,youneedtodothefollowingconfiguration:

SIPport:5060
Registrar:sip.voipdiscount.com
Proxyserver:sip.voipdiscount.com
Outboundproxyserver:leaveempty
Accountname:yourVoipDiscountusername
Password:yourVoipDiscountpassword
Displayname/number:yourVoipDiscountusernameorvoipnumber
Stunserver(option):stun.voipdiscount.com

VoIPCookbook:117

VoIP Cheap
SimilartoVoIPDiscount,VoIPCheap(http://www.voipcheap.com/en/index.html)alsoprovidesfreeor
relativelyinexpensivecallsovertheinternet.ThestepstouseitissomewhatsimilartoVoIPDiscount,
exceptthatyouneedtodownloadthesoftwarefromhttp://www.voipcheap.com/getfrommirror.php?
file=voipcheapCOM&lang=en.ForVoIPCheapcallingrate,goto
http://www.voipcheap.com/en/rates.html

Figure 4.22: With VoIP Cheap, you can make free or inexpensive calls over the Internet

IfyouuseSIPIPPhoneorATA,youneedtodothefollowingconfiguration:

SIPport:5060
VoIPCookbook:118

Registrar:sip.VoipCheap.com
Proxyserver:sip.VoipCheap.com
Outboundproxyserver:leaveempty
Accountname:yourVoipCheapusername
Password:yourVoipCheappassword
Displayname/number:yourVoipCheapusernameorvoipnumber
Stunserver(option):stun.VoipCheap.com
Inadditiontoprovidingfreeorinexpensivecallservice,VoIPCheap,unlikeVoIPDiscount,also
providesinexpensiveSMSservice,whichisavailableathttp://www.voipcheap.com/en/sms.html

VoIPCookbook:119

CHAPTER 5: Asterisk Softswitch


OneofthebestIPPBXOpenSourceSIPProxysoftwareavailableintheinternetisAsterisk,whichhas
somanyfeaturesthatallowsustoestablishourownVoIPinfrastructure.Someofthesefeaturesare
highlyusefulfortelecommunicationoperators,makingAsterisksuitableformanyapplicationsranging
fromsmalltomediumscaleIPPBXtoIPPBXhavinghundredsoftelephoneextensions.Howeverwe
willnotlistthesefeaturesrightnow,asyouwillfindwhatthesefeaturesareasyoureadalongtherest
oftheCHAPTER,inthesyntaxcodeweexplainlater.
However,forhighperformancesoftswitch,itseemsOpenSIPSseemstobebetterinhandlinghigh
trafficrequest.
SuchAsteriskscalabilityispossiblebecauseofAsteriskfunctioncalledTrunking,whichintegrates
variousVoIPequipments,protocols,cellular,PSTNandevenSIPprovidertoasamenetwork.The
numberoftrunks,theoretically,dependsontheamountofavailablebandwidthandthespeedofthe
processingmachinethatrunsAsterisk.
SowhatdoweneedsothatwecanuseAsterisk?Theanswertothisquestiondependsonhowmany
telephoneextensionsyouwanttohaveinyoursystemand,importantly,howmanyconcurrentcalls
Asteriskcanfacilitate.Ideally,theSpecifically,youhavetounderstandthefollowingparameters:

Thenumberofoutboundconnectionsandtheirtype(Analog,ISDM,T1,VoIP).
Thenumberofinternalandexternalconcurrentcalls(theratiobetweencalls).
Thetypeofphonethatwillbeused(Analog,SIP,H.323,MGCP).
Thetypeofcodecthatwillbeused.
Whethertranscodingprocesswillbenecessary.
Howreliablethesystemis.
HowmanyAsteriskmachinethatwillbeplaced.
Theconditionofyourcomputernetworkintermsofprocessingspeed,QualityofService
(QoS),VLAN,andPoweroverEthernet.

Ingeneral,afasterprocessorandthebiggertheRAM,themoreconcurrentcallstheservercan
facilitate.SinceAsteriskseemstotheoreticallyrequirearound30MHzofCPUresourcesforevery
activechannel,a266MHzCPU,forexample,shouldideallybeabletofacilitateabout8concurrent
calls,withtheassumptionthattheCodecbeingusedisG.711.Ofcourse,inordertobecomean
operator,youneedtohaveamuchmoresophisticatedserverwithfasterCPUandhigherRAM.Butin
ordertounderstandwhatyoureallyneed,youcanlookintoavarietyofexamplesofhardware
VoIPCookbook:120

configurationsandtheirmaximalcapability,whichareavailableathttp://www.voipinfo.org.Through
thissite,youwillalsofindthescriptsrequiredtosimulateacallandputsomeloadonthesystem.
Basedontheseconsiderations,youwillknowhowmuchmoneyyoureallyneedtospend.Spend
sometimebrowsingtheinternettomakesomecomparisononinternettelephonyequipmentsandhow
muchtheycost.However,manufacturers,normally,donotshowthepriceoftheitemstheysellintheir
site.Thesepricetagsareusuallyshowninsitessellinginternettelephonyequipments,someofthem
are:
Digiumcardshttp://www.digiumcards.com/
VoIPonsolutionshttp://www.voipon.co.uk/
TheVoIPConnectionhttp://www.thevoipconnection.com/
Thepricesmayvary,rangingfromUS$15toUS$50perFXOorFXS.Meanwhile,IPPhoneeachcost
betweenUS$50toUS$150.Youwillofcoursegetforlesswhenyoupurchasetheminlargequantities.
ThecheapestyoucangetaretheequipmentsproducedinTaiwanorChina.SomeofthemareLevelOne
andNexus.

Minimal Resource for Asterisk


Beforeyoudecidetoinvestinsophisticatedequipments,itisbeneficialtolearnonhowtoinstalland
useAsterisk,usingasimplePCwithLinuxoperatingsystemasaserverwithInternetandLAN
connection.ThissectionwillfocusonminimalinstallationofAsterisk.Onceinstalled,Asteriskwill
turnyourPCintoasimplesoftswitch.
ThistypeofinstallationallowsyoutorunAsteriskassimpleaspossible,attheexpenseofyoubeing
ableonlytorunthefollowingfunctions:

Userauthenticationwithaphonenumberandpassword.
Dialplantomanagewhatneedstobedoneforacalldialedtoaspecificnumber
ENUM,soAsteriskwillrecognizenumberswithspecificcountrycode.Forexample,in
Indonesia,thecountrycodeinexamplewouldbe+62XXXintheAsteriskconfiguration.

Asterisk Installation
Assuming,theUbunturepositoryat/etc/apt/sources.listhasbeencorrectlyset.Onecaneasilyinstall
Asteriskusingcommand
#aptgetinstallasterisk

VoIPCookbook:121

Foramorecompletecommand,youmayusethefollowingcommand.
#aptgetinstallasteriskasteriskdevasteriskconfigasterisksoundsmain\
asterisksoundsextradahdigastmanasteriskmysqldahdifirmwarenonfree\
asteriskmp3
Ubuntuwillstartdownloadandinstallasteriskassoonasthecommandinvoked.

Compile Asterisk
Forthosewhowishtocompileasterisksoftswitchfromsourcecode,wecandoitthroughthe
followings,
Preparethefollowingapplications
#aptgetinstallkernelpackagelibncurses5devfakerootwget\
bzip2g++libssldevlibxml2devdoxygen
WecandownloadmostofthesourcecodefromAsterisksite,suchas,

http://www.asterisk.org

http://downloads.asterisk.org/pub/telephony/libpri/releases/libpri1.4.11.4.tar.gz
http://downloads.asterisk.org/pub/telephony/libss7/releases/libss71.0.2.tar.gz
http://downloads.digium.com/pub/asterisk/releases/

http://downloads.asterisk.org/pub/telephony/dahdilinuxcomplete/releases/dahdilinuxcomplete2.4.0+2.4.0.tar.gz

Whilempg123applicationcanbedownloadedfrom

http://www.mpg123.de/download.shtml
http://sourceforge.net/project/showfiles.php?group_id=135704
http://sourceforge.net/projects/mpg123/files/

Copyalllastestsourcecodeto/usr/local/src/
cpasterisk1.8.0.tar.gz/usr/local/src/
cplibpri1.4.11.4.tar.gz/usr/local/src
cpdahdilinuxcomplete2.4.0+2.4.0.tar.gz/usr/local/src/
cplibss71.0.2.tar.gz/usr/local/src/
VoIPCookbook:122

cpmpg1231.12.5.tar.bz2/usr/local/src/
Openthesourcecode
cd/usr/local/src
tarzxvfasterisk1.8.0.tar.gz
tarzxvflibpri1.4.11.4.tar.gz
tarzxvfasterisksounds1.2.1.tar.gz
tarjxvfmpg1231.12.5.tar.bz2
tarzxvfdahdilinuxcomplete2.4.0+2.4.0.tar.gz
tarzxvflibss71.0.2.tar.gz
CompileMPG123
cd/usr/local/src/mpg1231.12.5/
./configure
make
makeinstall
CompileLibpri
cd/usr/local/src/libpri1.4.11.4/
makeall
makeinstall
CompileDAHDI.MakesurewehaveanInternetconnectionasweneedtodownloadthefirmware
duringdahdiinstallationprocess.
cd/usr/local/src/dahdilinuxcomplete2.4.0+2.4.0/
make
makeinstall
makeconfig
CompileLibSS7.Dothisafterdahdi;beforecompilingasterisk.
cd/usr/local/src/libss71.0.2/
make
makeinstall

VoIPCookbook:123

Compileasterisk.MakesurewehaveInternetconnectionasweneedtodownloadtheoperationvoice
duringasteriskinstallationprocess.

cd/usr/local/src/asterisk1.8.0
./configure
makemenuselect
makeall
make
makeinstall
makesamples
Pleasenotethatmakemenuselectisoptional,wecandothecompalitionprocesswithoutmake
menuselect.Ifyouliketoinstallthedocumentation,pleasedo
aptgetinstalldoxygen
makeprogdocs

Configuring Asterisk
AstheAsteriskinstalled,weneedtoconfigureitsoAsteriskfunctionsthewayyouwantittobe.All
filesthatyouneedtoconfigurearestoredinthefolder:
/etc/asterisk
Theminimalconfigurationfilesneedtoeditedare:
sip.confforuserauthenticationwithaphonenumberandpassword.
extensions.conftosetthedialplan.
enum.confforENUM,forexample,forcountrycode+62.
Asidefromthesefiles,therearemoreconfigurationfilesforthosewhoareseriouslyinterestedtostudy
theasterisk.Fornow,itissufficientforyoutolearnconfiguringthosethreefiles.

ENUM.CONF Configuration
ThereisnotmuchtobechangedinENUM.CONF.However,youneedtomakesurethattherearethe
followingentries:
VoIPCookbook:124

search=>e164.arpa
search=>e164.org
search=>e164.id
search=>enum.voiprakyat.or.id
Thisway,wecanensurethattheinformationcontainedinENUMe164.arpa,e164.organde164.idwill
berecognizedbyAsterisk.

SIP.CONF Configuration
Theuserdatabaseisstoredin/etc/asterisk/sip.conf.Anexampleforanaccountwithphonenumber
2099,password123456,dynamicIPaddressusingDHCPisasfollows:
[2099]
context=default
type=friend
username=2099
secret=123456
host=dynamic
dtmfmode=rfc2833
mailbox=2099@default
ToensurethatthedialtoneishandledproperlyinAsterisk1.6,wemayaddthefollowingentry:
rfc2833compensate=yes
Entertheaboveentryforeachuser.Atthispoint,eachusermayregisterhisorherselftotheAsterisk.
TheregisteredusersmaycalleachotheronthesameAsteriskserver.
ToconnectourAsteriskservertoVoIPRakyatoranyotherSIPproxyavailableintheinternet,weneed
toregisterourAsterisktotheSIPproxyserver.Thecommandsusedis:
register=>2345:password@sip_proxy/1234
whichmeansuser1234inourasteriskserverthatweoperateistheuser2345insip_proxyloggedinto
theserverusingthepasswordpassword.Forexample,user2000hasanaccount20345in
voiprakyat.or.idserverwithpasswordsecret,thentheformatusedis:
VoIPCookbook:125

register=>20345:secret@voiprakyat.or,id/2000
Thisway,callsmadetoVoIPRakyat,specificallytoaccount20345,willbeforwardedtonumber2000
inourSIPserver.

EXTENSIONS.CONF Configuration
Thedialplanorroutingtableofasoftswitchisnormallystoredin/etc/asterisk/extensions.conf.In
extensions.confwecanconfigurewhatAsteriskneedstodoasitreceivesacallonacertainextension.
Thesimplestexampleofdialplanis:
exten=>_20XX,1,Dial(SIP/${EXTEN},20,rt)
exten=>_20XX,2,HangUp
whichmeansthatifthereissomeonewhocallsextension20XX,thenthefirststepcarriedoutbythe
syntaxistohaveDIALoftheextensionuseSIPtechnology,waitfor20secondsandifthereisno
response,carryouttimeout(rt).Thesecondstepistohangup.Ofcourseyouneedtodoasmall
configurationofthecommandsoitwillfityourcircumstanceinhowyouuseyourSIPserver.
Somecommandsconsidereddangerousbutoftensoughtbyuser/adminareasfollows:
exten=>_0711.,1,Dial(SIP/${EXTEN:4}@2031,20.rt)
whichmeansthatthereissomeonewhocalls0711.Thedot.impliesthatanynumberafter0711is
ignored.DIALusesSIPtechnologytoconnectto2031.Alsonotecarefullythecode{EXTEN:4}hasto
bereadomitthefirst4digitsofthedialednumber.Forexample:07115551234becomes5551234.
IfweusePABXbetweenATAandPSTN,thecommandusedisasthefollowing:
exten=>_021X.,1,Dial(SIP/9${EXTEN:3}@2031,20.rt)
Thesyntaxaboveimpliesthatthereissomeonewhocalls021X.Noticethatthedot.placedafterX
impliesthatanynumberplacedafterXisignored.DIALusesSIPtechnologytoconnectto2031.Also
notecarefullythecode9{EXTEN:3}hastobereadomitthefirst3digitsofthedialednumberand
addtheprefix9infrontofthenumber.Forexample:0215551234becomes95551234
Thismeansthatifthenumber2031originatesfromanAnalogTelephoneAdapter(ATA)suchasthe
SPA3000locatedintheJakartaandisconnectedtoaPABXinJakarta,anyoneinsuchaVoIPnetwork
VoIPCookbook:126

willbeabletocallJakartawithouthavingtopaylongdistanceorinternationalcall.Whattheyneedto
payisjustthelocalrateforcallingtheintendednumberinJakartacity.
ThesamewaycanbedevelopedforcallingmobilephoneinIndonesiabyconnectingtheATAweuse
toPSTNoranyFixedWirelessTerminal(FWT)device.Thecommandusedisasfollows
exten=>_08X.,1,Dial(SIP/${EXTEN}@2031,20.rt)
Ofcourse,anofficethatisconnectedtoapublicVoIPnetworkwillnotopenitsaccesssothatonly
certainuserscancallanymobilenumberorTelkom,andthusweusuallydonotuse021X.code,nor
08X.ButwewillentereachofthenumbersallowedtobecalledthroughVoIP.Forexample:
exten=>_0811567854,1,Dial(SIP/${EXTEN}@2031,20.rt)
exten=>_0216575675,1,Dial(SIP/${EXTEN}@2031,20.rt)
exten=>_0216755675,1,Dial(SIP/${EXTEN}@2031,20.rt)
Thismeansthatonlynumber0811567854,0216575675and0216755675canbecontactedviaVoIP
numbers.Otherthanthesenumberscannotbecontacted.
ToadoptthephonenumberformatsimilartoTelco,e.g.,+62XXXorothernumberswemayinclude
ENUMLOOKUPcommand,forexample,
exten=>_00.,1,Set(enumresult=${ENUMLOOKUP(+${EXTEN:2},,,,e164.id)})
exten=>_00.,n,Dial(SIP/${enumresult})
exten=>_+.,1,Set(enumresult=${ENUMLOOKUP(${EXTEN},,,,e164.id)})
exten=>_+.,n,Dial(SIP/${enumresult})
Inanenvironmentwheretherearemanyasterisk/SIPservers,sometimesweneedtocreateanarea
codetobeabletocalltoeachotheramongtheseservers.Forexamples,
AreaCode SIPServerIPAddress
021 203.159.31.99
022 203.159.31.123
023 203.159.31.48

Thedialplanwouldbe
VoIPCookbook:127

exten=>_021.,1,Dial(SIP/${EXTEN:3}@203.159.31.99,30,rt)
exten=>_022.,1,Dial(SIP/${EXTEN:3}@203.159.31.123,30,rt)
exten=>_023.,1,Dial(SIP/${EXTEN:3}@203.159.31.48,30,rt)
Notice${EXTEN:3}thatwillremovethethree(3)digitsAreaCodeaswepasstheextensions
numbertothedestinationSIPServer.

VoIPCookbook:128

CHAPTER 6: Asterisk for Incoming and Outgoing calls


Defining SIP Channel in sip.conf
EverySIPclientandserverisidentifiedwithatextblocksuchasthefollowing:
[xxx]
type=yyy
parameter1=value
parameter2=value
WherexxxisthenameassociatedwiththeSIPclient,oranyarbitrarynameusedbyother
configurationfiletorefertoaSIPdevice.Typically,aSIPphonewithextensionnumber123willhave
anentrythatbeginswith[123].Pleasenotethatyoustillhavetoactivateextension123in
extensions.conffilesothatpeoplecancalltoextension123.TheparameterTypemustcontain"user",
"peer"or"friend".
Asteriskwillmatchtheincomingcallwiththenameofthedeviceandtype=useroftheSIPprotocol
conversationincolumnFrom:username(withoutacknowledgingtheSIPdomain).Anotherwayalso
usedistomatchtheSIPrequestand[xxx]insip.conffile,throughboththeIPaddressoftherequester
andthepeerinformationofpartof[xxx]insip.conffile.Ifhost=dynamic,it'snotpossibletoperform
matchinguntiltheSIPclientisregistered.

Asterisk as SIP Client

AsteriskcanregisteritselftoanotherSIPserverandbecomesaclient.Forthis,thecommandusedin
sip.confunder[general]forregistrationtotheSIPserveris:
register=>user[:secret[:authuser]]@host[:port][/extension]
Ifyouhaveproblemswithyourcomputernetwork,suchasanunstableconnectivity,frequent
connectivitybreakdowns,andlosingestablishedregistrationtoyourSIPserver,youcanaddparameter
registerattemptsandregistertimeoutbeforethegenericdefinitionofregister.Setting
registerattempts=0willforceAsterisktokeepregisteringuntilsuccessful(defaultvalueis10attempts).
Thevalueofregistertimeoutdeterminesthelengthoftimeinsecondsbetweenattemptsforregistering
(thedefaultvalueis20seconds).
VoIPCookbook:129

Example:
register=>2345:password@mysipprovider.com/1234
Theabovecommandwillregister2345tomysipprovider.comandwillbeidentifiedasextension1234
inAsteriskwhichweoperate.Intheexampleabovetheparametersusedare:
usertheuseridfortheSIPserver(example:2345)
authuseruserauthorization(optional)totheSIPserver
secrettheuserpassword
hostservername(example:mysipprovider.com)
porttheSIPportinServer.Thedefaultis5060.
extensionthelocalextensionnumberinAsterisk(example:1234).
TheextensionnumberisusedtocontactlocalextensionoftheAsteriskSIPserverwhichwesignedup.
Ifthereisnoextension,Asteriskwillautomaticallyenterextension"s".
ToseeifAsteriskhassuccessfullyregistereditselfwiththeSIPServer,wecanuseAsteriskInterface
CommandLine,whichcanbeaccessedthroughtheasteriskcommandrintheshell.
#asteriskr
Registrationstatuscanbeviewedthroughthecommand:
sipshowregistry
ItseemsthatthiscommandwillbeomittedinAsteriskversion1.4,andwillbechangedinto
sipregistrylist
Toseethephone/extensionlistedinAsteriskwhichweoperate,wecanusethefollowingcommand
sipshowpeers
InAsterisk1.6,thecommandseemstobereplacedby
sippeerslist

VoIPCookbook:130

TomakeacalltoaSIPserveroutsideofAsterisk,weneedtodefinesip.conflikethefollowing
example:
[mysipproviderout]
type=peer
secret=password
username=2345
host=sipserver.mysipprovider.com
fromuser=2345
fromdomain=fwd.pulver.com
nat=yes
context=frommysipprovider
;isfurtherdefinedinextensions.conf
Inextensions.conf,weneedtoaddacommandlike:
exten=>_9.,1,Dial(SIP/${EXTEN:1}@mysipproviderout,30,r)
Pleasenotethatthevariable${EXTEN:1}herewilltakeallthecharacters/lettersfromtheincoming
extensionexceptforthefirstcharacter,whichinthiscase,isthenumber9.
Meanwhile,SIPextensionconfigurationextensions.confforreceivingcallscomingfromtheSIP
servercanalsobedevelopedusingthefollowingcommand:
[frommysipprovider]
exten=>1234.1,Answer
;1234istheextensioncontact.Thedefaultextensioncontactis"s"
exten=>1234.2,Dial(SIP/111,25,Ttr)
;IncomingcallsareredirectedtoaSIPtelephonenumber111
exten=>1234.3,Hangup

Generic SIP configuration


In[general]sectioninsip.conf,therearesomevariablesthatwecansetup,someofwhichare
allow=<codec>
;aCodecthatisallowedbasedonpreferences.Priortousingthis,usedisallow=all.

VoIPCookbook:131

disallow=all
;disallowallcodecstobeused.
allowexternalinvites=yes|no
;EnableorDisableINVITE&REFERtononlocaldomain.Thedefaultisyes.
allowguest=yes|no
;Allowsorrejectscallsfromguest(thedefaultisyes).
allguest=yes|no
;Allowsordeniesthecallfromguests.Thedefaultisyes.
Autocreatepeer=yes|no
;Ifitissettoyes,everyonecaneasilyloginasapeerwithoutapassword,
itisusuallybeneficialfor operatingwithSER.Thedefaultisno.
autodomain=yes|no
;Enable/disabletheabilityofAsterisktoaddlocalhostnamesand
localIPaddresstodomainlist.The defaultisno.
bindaddr=IP_Address
;IPAddressboundasaplaceforlisteningtoconnection.Thedefaultis0.0.0.0(anyinterface).
bindport=Number
;TheUDPportinbindforlisteningtoincomingconnections.Thedefaultis5060.
callerid=<string>
;CallerIDinformationthatwillbeusedifthereisnootherinformation.Thedefaultisasterisk.
canreinvite=update|yes|no
;Thedefaultisyes.
checkmwi=Number
;Theintervalinsecondstocheckthemailbox.Thedefaultis10seconds.
compactheaders=yes|no
;whetherAsteriskwillsendaSIPheaderincompactorcompleteform.Thedefaultisno.
context=<contextname>
VoIPCookbook:132

;Thisisthedefaultcontextthatwillbeusedfortelephonesthatdonothavecontext.
Thecontentofthecontextcanbesetinextensions.conf.
defaultexpirey=Number
;Thedefaultlengthoftime(inseconds)ofanincomingoroutgoingregistration.
Thedefault120seconds.
dtmfmode=inband|info|rfc2833(globalsetting)
;Thedefaultisrfc2833.
domain=domains
;listofdomainsseparatedbycomma,alistforwhichAsteriskisresponsible.
dumphistory=yes|no
;EnablessupportfordumpingSIPtransactionsinLOG_DEBUG.Thedefaultisno.
externip=IP_Addressorhostnames
;TheaddresswewillplaceintheSIPmessagesifwearebehindNAT.
Ifthehostnameisused,thentheIPaddressassociatedwiththehostnamewillbereadonce
atthetimeofreadingsip.conf.IfwewanttousethehostnameofthedynamicIP,
useexternhostparameters.
externhost=hostname.tld
externrefresh=Number
;determineshowoften(inseconds)DNScheckingiscarriedoutfor'externhost'.
Thedefaultis10seconds.
ignoreregexpire=yes|no
;setswhetherContactinformationfromapeerisstillusedeventheinformationhasexpired.
Thedefaultisno.
language=<string>
;ThedefaultlanguageusedbyPlayback()/Background().
localnet=NetAddress/Netmask
;Localnetworkandmask.
fromdomain=<domain>
VoIPCookbook:133

;SetdefaultFrom:domaininSIPmessageatthetimeitoperatesasaSIPua(client)
insecure=very|yes|no|invite|port
;Sethowtohandleconnectionswithpeers.Thedefaultisno(authenticateallconnections).
maxexpirey=Number
:Lengthoftime(inseconds)ofincomingregistration.Thedefaultis3600seconds.
musicclass=oneofclassesthatisusedinmusiconhold.conf
musdiconhold=similartomusicclass
nat=yes|no|never|route
;Thedefaultisno,whichmeansthatrfc3581techniqueisused.
notifymimetype=mediatype/subtype
;AllowstooverridemimetypeinMWINOTIFYusedinvoicemailonlinemessage.
Thedafaultis application/simplemessagesummary.
notifyringing=yes|no
;Callnotificationisincludedinringingstage.Thedefaultisyes.
outboundproxy=IP_address/DNSSRVname(excluding_sip._udpprefix)
;SRVname,hostname,orIPaddressoftheoutboundSIPProxy.
outboundproxyport=Number
;UDPportnumberforOutboundSIPProxy.
pedantic=yes|no
;enableaslowprocesstocheckCallID,SIPheaderwithmanylines,
andtheURIencodedheaders.The defaultisno.
port=<portno>
;ThedefaultportforSIPpeer.ThisportisnottheportofAsteriskforlisteningto
incomingcalls(seebindport).
progressinband=never|no|yes
;whetherweshouldgenerateinbandringing.Thedefaultisnever.

VoIPCookbook:134

promiscredir=yes|no
;Allowssupportfor302Redirects;(Note:itwillredirectalltolocalextensionavailable
incontact,nottoextensiononthefinaldestination).
Thedefaultisno.
qualify=yes|no|milliseconds
;Checkwhethertheclientcanbecontacted.Ifsettoyes,thenthecheckingwillbecarried
outevery2000milliseconds(2seconds).
Thedefaultisno.
realm=myrealm
;Changeauthenticationrealmfortheasterisk(default)towhatwewant.
recordhistory=yes|no.
;EnableloggingofSIPtransactions.
Thedefaultisno.
regcontext=context
;DefaultcontextusedtorespondtotheSIPREGISTERofSIPRegistrar.
register=><username>:<password>:[authid]@<sipclient/peeridinsip.conf>/<contact>
;RegistertoSIPprovider
registerattempts=Number
;thenumberofSIPREGISTERmessagesenttotheSIPRegistrarbeforegivingup.
Thedefaultis0(nolimit).
registertimeout=Number
;ThenumberofsecondsallocatedtowaitforrespondsfromtheSIPRegistrarbeforetheSIP
REGISTER'stimeisup.
Thedefaultis20seconds.
relaxdtmf=yes|no
;Thedefaultisno.
rtautoclear=yes|no|number
;AutoExpirefriendsmadewhileoperating.Ifitissettoyes,
autoexpirewilltakeplacein120seconds.
Thedefaultisyes.
VoIPCookbook:135

rtcachefriends=yes|no
;Cacherealtimefriendsbyaddingthemtotheinternallistlikefriends.
Thisisaddedtotheconfigfile.
Defaultisno.
rtpholdtimeout=Number
;Lengthoftimeinsecondsduringwhichthereisnoactivitybeforedisconnecting
acallonhold.
Default
is0(nolimit).
rtpkeepalive=Number
;NumberofsecondsoftheintervalforRTPkeepalivepacketifthereisnopassingtraffic.
Defaultis0 (noRTPkeepalive).
rtptimeout=Number
;NumberofsecondsforwaitingforRTPtrafficbeforewehungup.
Defaultis0(noRTPtimeout).
rtupdate=yes|no
;SendregistryupdatestothedatabasewhenusingRealtimesupport.Thedefaultisyes.
sendrpid=yes|no
;whethertheSIPheaderRemotePartyIDSIPshouldbesent.
Thedefaultisno.
sipdebug=yes|no.
ThedefaultsettingthatdetermineswhethertheSIPdebugisenabledwhenloadingsip.conf.
Thedefault isno.
srvlookup=yes|no
;EnableDNSSRVcheckswhencalledupon.Thedefaultisno.
tos=<value>
;SetQoSofIPparametersforoutgoingmediastreams
(numericvaluesareacceptable,suchastos=
184)
trustrpid=yes|no
;whethertheSIPheaderRemotePartyIDSIPcanbetrusted.Thedefaultisno.
VoIPCookbook:136

useclientcode=yes|no:
usereqphone=yes|no
;Indicateswhetherweneedtoadd";user=phone"toURI.Thedefaultisno.
useragent=<string>
;ChangestheSIPheader"UserAgent".Thedefaultisasterisk.
videosupport=yes|no
;EnablessupportforSIPvideo.Thedefaultisno.
vmexten=<string>
;Dialplanextensiontocallmailbox.Thedefaultisasterisk.ConfiguringSIPpeerandclient
Thefollowingvariablescanbeusedineverypeerdefinition
accountcode=<string>
;theuserswhocanbeassociatedtoaccountcode.Itisrecommended
thatyoureadtheconceptonAsteriskbilling.
allow=<codec>
;theCODECwhichisallowedbasedonorderpreferences.
Usefirstdisallow=ALLbeforeallowing CODEC.
disallow=all
;DisallowalltheCODECstoagivenpeeroruserdefinition.
allowguest=yes|no
;Alloworrejectcallsfromunknownperson.
Thedefaultisyes.OSPcanalsobesetifAsteriskiscompiledtosupportOSP.
auth=<authname>
;ThecontentoftheDigestusername=onaSIPheader.
callerid=<string>
;ThecallerIDinuseifnoinformationisavailable.Thedefaultisasterisk.
calllimit=number
VoIPCookbook:137

;Thenumberofsimultaneoustelephoneconnectionsthatcanbemadetoaspecificuse/peer.
callgroup=num1,num2num3
;Definesacallgroupthatcancallthistool.
callingpres=number|descriptive_text
;SetappearanceofCallerIDofaconnection/call.
Descriptivetextvaluesthatcanbefilledinareallowed_not_screened,
allowed_passed_screen,allowed_failed_screen,allowed,prohib_not_screened,
prohib_passed_screen,prohib_failed_screen,prohib,andunavailable.
ThedefaultisAllowed_not_screened.
canreinvite=update|yes|no
;whethertheclientisabletosupportSIPreinvites.Thedefaultisyes.
context=<context_name>
;Iftype=user,contextisforthecallgoingtotheSIPuserdefinition.
Iftype=peer,contextinthe dialplanisforoutboundcallofaSIPpeerdefinition.
Iftype=friend,contextisusedforallinboundandoutboundconnectionsto
theSIPentitydefinition.
defaultip=ip.add.res.s
;ThedefaultIPaddressfortheclienthost=ifnotspecifiedasDYNAMIC.
Thisisusediftheclienthad neverbeenregisteredtousedifferentIPaddress.
Onlyvalidifthetype=peer.
dtmfmode=inband|info|rfc2833
;HowtheclienthandlesDTMFsignal.Defaultisrfc2833.
fromuser=<from_ID>
;Determinestheusertobeputin"from"otherthanthecallerid(overridecallerid)
whenconductingcalls_to_peer(toanotherSIPproxy).Validonlyfortype=peer.
fromdomain=<domain>
;SetdefaultFrom:domaininSIPmessagewhenconductingcalls_to_peer.
Validonlyinthe[general] ortype=peersection.
fullcontact=<sip:uri_contact>
;SIPURIcontactforrealtimepeer.Validonlyforrealtimepeers.
VoIPCookbook:138

host=dynamic|hostname|IPAddr
;ClientIPaddressorhostname.Ifyouwantthephonetoregisteritself,
usedynamickeywordsinstead
ofhostIP.
incominglimitandoutgoinglimit=Number
;Limitationofthenumberofsimultaneousactivecallsthatcanbeperformedby
aSIPclient.Validonly
fortype=peer.
insecure=very|yes|no|invite|port
;Determineshowtodealwithpeerconnection.
Thedefaultisno(authenticationforallconnections).
ipaddr=ip.addr.from.peer
;Validonlyforrealtimepeer.
language=languagecodeasdefinedinindications.conf
;Definingalanguageforgreetings
mailbox=mailbox
;ExtensionforVoicemail.Validonlyfortype=peer.
md5secret=MD5Hashof"<user>:asterisk:<secret>"
;Canbeusedasasubstitutetosecret.
Musicclass=determinesoneofclasseswritteninmusiconhold.conf
name=<name>
;Thenameoftherealtimepeer.Validonlyforrealtimepeeronly.
nat=yes|no
;ThisvariabledeterminestheactionpatternofAsteriskforclientsbehindtheNAT.
Butitstilldoesnot solvetheproblemifAsteriskisbehindNAT.
Thedefaultisno,whichmeansusingtheRFC3581
technique.
outboundproxy=IP_addressorDNSSRVname
;SRVname,hostname,orIPaddressoftheoutboundSIPProxy.
Validonlyinthe[general]andtype=
peersection.

VoIPCookbook:139

progressinband=never|no|yes
;Dowegenerateringininband.Thedefaultisnever.
promiscredir=yes|no
;Allowssupportfor302Redirects.Thedefaultisno.
qualify=yes|no|milliseconds
;Checkwhethertheclientcanbereached.
Ifyes,acheckwillbedoneevery2000milliseconds(2
Validonlyinthe[general]andtype=peersection.

seconds).

regseconds=seconds
;TimeinsecondsbetweenSIPREGISTERS.Validonlyforrealtimepeeronly.
rtpkeepalive=seconds
;Thetime,inseconds,ofsendingRTPkeepalivepacketifthereis
noRTPtrafficontheconnection. Default0(noRTPkeepalive).
Validonlyforthe[general]andtype=peersection.
rtptimeout=seconds
;DisconnectaconnectionifwithinxsecondsthereisnoRTPactivityand
wearenotinonholdposition.
Validonlyinthe[general]andtype=peersection.
rtpholdtimeout=seconds
;DisconnectaconnectionifwithinxsecondsthereisnoRTPactivityand
weareinonholdposition.
Validonlyforthesection[general]andtype=peer.
secret=password
;IfAsteriskfunctionsasaSIPServer,thenSIPclientmustloginusing"password".
IfAsteriskfunctionsasaSIPclienttoaremoteSIPserver,
itrequiresSIPINVITEauthentication,thenthecontentsofsecret isused
forSIPINVITEauthenticationthatissentbyAsterisktotheremoteserver.
sendrpid=yes|no
;whetherRemotePartyIDSIPheadershouldbesent.Defaultisno.
setvar=variable=value
VoIPCookbook:140

;Variablechannelwhichshouldbesetforallconnectionstothispeer/user.
subscribecontext=<context_name>
;SetaspecificcontextforSIPSUBSCRIBErequests
trustrpid=yes|no
;whetherRemotePartyIDSIPheadercanbetrusted.Thedefaultisno.
type=user|peer|friend
;connectiontotheclient,outboundproviderorafullclient?
usereqphone=yes|no
;Showingwhethertoadd";user=phone"totheURI.Defaultno.
Validonlyforthe[general]and
type=peersection.
username=<username[@realm]>
;IffunctioningasaSIPclienttoaremoteSIPserverthatrequires
SIPINVITEauthentication,thenthisparameterisusedforSIPINVITEauthentication,
whichissentbyAsterisktoaremoteSIPserver;forpeerswhowillregistertoAsterisk,
theusernameisusedinINVITEuntiltheyareregistered.
vmexten=<string>
;Dialplanextensiontoreachmailbox.Defaultasterisk.
Onlyvalidinthe[general]ortype=peersection.

DAHDI Usage For VoIP Cards


InNewerAsterisksoftware,DAHDIshortfor"DigiumAsteriskHardwareDeviceInterface"isusedto
dealwithVoIPhardwares.DAHDIisthenewnamefor'Zaptel'asofMay19th2008.Thepostat
http://blogs.digium.com/2008/05/19/zaptelprojectbeingrenamedtodahdi/detailsthereasonforthe
change.Asterisk1.4releaseslaterthan1.4.21,andallreleasesofAsterisk1.6,willautomaticallyuse
DAHDIinpreferencetoZaptel,evenifZaptelisstillinstalledonthesystem.Morereferenceonthis
canbefoundathttp://www.voipinfo.org/wiki/view/DAHDI
Digiumresourcesregardingzapteltodahdimigrationcanbefoundat
http://www.asterisk.org/node/48481.Basically/etc/zaptel.confBecomes/etc/dahdi/system.confand
/etc/asterisk/zapata.confBecomes/etc/asterisk/chan_dahdi.conf.
VoIPCookbook:141

Therearethree(3)mainconfigurationfiles,namely,
/etc/dahdi/system.conf
/etc/asterisk/chan_dahdi.conf
/etc/asterisk/dahdichannels.conf
In/etc/dahdi/system.conf,unlikezaptel.conf,youhavetoexplicitlysettheechocancellerforeach
channel.
Thereareanumberofotherconfigurationfilesunder/etc/dahdi
/etc/dahdi/init.conf
Replaces/etc/default/zaptel(onDebians)and/etc/sysconfig/zaptel(onmostothersystems)
thisisashellscriptsnippetthatissourcedbythedahdiinit.dscript.Allvaluesthereare
optional(noneedtoexplicitlydefineTELEPHONY=no).ThevariableMODULES,however,is
nolongerreadfromit.ITisreadfrom:
/etc/dahdi/modules
Alistofmodulestoload.ReplacesthevariableMODULESfromtheaboveconfigurationfile.
/etc/dahdi/genconf_parameters
Finetuningparametersfordahdi_genconf(replaceszapconfandalsodeprecates
genzaptelconf).

DAHDIArchitecture
Thepackageiscomposedoftwosubpackages:
Kernel
Includekernelmodulesandminilahelperfiles(firmwares)
Tools
TheuserspacetoolstocontrolDAHDIspans/channels:
dahdi_cfg
TheDAHDIConfigurator,whichparsessystem.conf
dahdi_genconf
VoIPCookbook:142

Generates/etc/dahdi/system.conf,soit'sbetterthatyoudon'thandeditsystem.conf.Uses
/etc/dahdi/genconf_parameterstodefineit'sactions.
dahdi_hardware
DisplayslistingofDAHDIhardwaredetected
dahdi_monitor
Monitorssignallevelonanalogchannelallowsyoutorecordaudiofromit
Usage:dahdi_monitor<channelnum>vmopllimitfFILEsFILErFILE1tFILE2F
FILESFILERFILE1TFILE2
example:dahdi_monitor1vv
note:extremlyusefull,butotherwisenotmentioned,thattherawformatoutputis8Khz16bit
signed.Usesoxtoconverttoawav.soxr8000swrx.rawrx.wav
dahdi_scan
GeneratesalistofthingsDAHDIchannels,withsomedetails
dahdi_test
MeasuresaccuracyoftheFXO/FXSboardsoftwaredigitalsignalprocessing
dahdi_tool
Anicetooltoseewhatyourboardsaredoing.

DAHDISampleinstallation
Aftercompilingandinstallingofdahdiandasterisk,youhavetoperformsomefurtherstepstouseyour
hardware.ThisexamplewillshowyouafewstepshowtogetasteriskandtwoDigiumcardsenabled:

Detectyourhardware.Thiswillgenerate/etc/dahdi/system.confand/etc/asterisk/dahdi
channels.conf.
#lspcin
YoushouldseesomethinglikethisforTDM410
00:09.00200:d161:8005(rev11)

VoIPCookbook:143

Edit/etc/dahdi/system.confandmakesurethereis
loadzone=us
defaultzone=us

Checkthechanneltype
/etc/init.d/dahdirestart
dahdi_scan
Wewillseesomethinglike
active=yes
alarms=OK
description=WildcardTDM410PBoard1
name=WCTDM/0
manufacturer=Digium
devicetype=WildcardTDM410P
location=PCIBus03Slot03
basechan=1
totchans=4
irq=23
type=analog
port=1,FXO
port=2,FXO
port=3,FXS
port=4,FXS

Edit/etc/dahdi/system.conftoreflectthefindingsfromdahdi_scan
fxoks=3,4
fxsks=1,2
echocanceller=mg2,14

Runmodprobeasrootanddodahdi_cfg
#modprobewctdm24xxp
#dahdi_cfgvv

VoIPCookbook:144

Checkifitiscorrectlyloaded
#dmesg
wewillseesomethinglike
[961.484269]wctdm24xxp0000:00:09.0:PCIINTA>GSI17(level,low)>IRQ17
[961.940405]Port1:InstalledAUTOFXO(FCCmode)
[962.576453]Port2:InstalledAUTOFXO(FCCmode)
[964.209579]Port3:InstalledAUTOFXS/DPO
[965.838703]Port4:InstalledAUTOFXS/DPO
[965.842700]VPM100:NotPresent
[965.846981]FoundaWildcardTDM:WildcardTDM410P(4modules)

Thisisnotnecessary,butifyoulikeyoucandogenerateetc/dahdi/system.confand
/etc/asterisk/dahdichannels.conf.
#dahdi_genconf

Restartdahditounloadandreloadallmodulesanddrivers
#/etc/init.d/dahdirestart

Pointfile/etc/asterisk/chan_dahdi.confto/etc/asterisk/dahdichannels.conf
#openchan_dahdi.confandincludeitunderthesection[channels]
#
#NOTE:Youcaneditandconfigure/etc/asterisk/dahdichannels.confatanytime
#tosetupyourspecificoptionsthere.
...
[channels]
#include/etc/asterisk/dahdichannels.conf
...

In/etc/asterisk/dahdichannels.confwewillseesomethinglike
signalling=fxs_ks
callerid=asreceived
group=0
context=frompstn
VoIPCookbook:145

channel=>1
callerid=
group=
context=default
signalling=fxo_ks
callerid="Channel3"<4003>
mailbox=4003
group=5
context=frominternal
channel=>3
callerid=
mailbox=
group=
context=default

Restartasterisk
#/etc/init.d/asteriskrestart

Verifyyourcurrentsystemstatus.Youshouldgetsomeoutputlikethis:
asteriskr
asterisk*CLI>dahdishowstatus
DescriptionAlarmsIRQbpviolCRC4FraCodiOptionsLBO
DAHDI_DUMMY/1(source:HRtimer)1UNCONFI000CASUnkYEL0db(CSU)/0133feet(DSX1)
WildcardTDM410PBoard1OK800CASUnkYEL0db(CSU)/0133feet(DSX1)

Verifyyourconfiguredchannels
asterisk*CLI>dahdishowchannels
ChanExtensionContextLanguageMOHInterpretBlockedState
pseudodefaultdefaultInService
1frompstndefaultInService
2frompstndefaultInService
3frominternaldefaultInService
4frominternaldefaultInService

DAHDI extensions.conf
AnexampleofDAHDIdialplanisasfollows.
[frominternal]
VoIPCookbook:146

exten=>1000,1,Dial(DAHDI/1,20,rt)
exten=>1000,2,Voicemail(1000,u)
exten=>1000,102,Voicemail(1000,b)
exten=>2000,1,Dial(DAHDI/2,20,rt)
exten=>2000,2,Voicemail(2000,u)
exten=>2000,102,Voicemail(2000,b)
exten=>8500,1,VoiceMailMain
exten=>8501,1,MusicOnHold
exten=>1001,1,Dial(DAHDI/3,20,rt)
exten=>1001,2,Voicemail(1000,u)
exten=>1001,102,Voicemail(1000,b)
exten=>1002,1,Dial(DAHDI/4,20,rt)
exten=>1002,2,Voicemail(2000,u)
exten=>1002,102,Voicemail(2000,b)
exten=>_9.,1,Dial(DAHDI/g0/www${EXTEN:1})
exten=>_9.,2,Congestion
exten=>_91.,1,Dial(DAHDI/1/www${EXTEN:2})
exten=>_91.,2,Congestion
exten=>_92.,1,Dial(DAHDI/2/www${EXTEN:2})
exten=>_92.,2,Congestion
[frompstn]
exten=>s,1,Answer
exten=>s,2,Dial(DAHDI/g1,20,rt)
exten=>s,3,Voicemail(1000,u)
exten=>s,103,Voicemail(1000,b)
Wehavetomakesureacoupleofthings:
[frominternal]and[frompstn]shouldbereflectedin/etc/asterisk/dahdichannels.conf
[frominternal]and[frompstn]mustexistsin/etc/asterisk/extensions.conf.
Ifunsure,replace[frominternal]and[frompstn]withdefault.
MakesureDAHDI/1,DAHDI/2,DAHDI/3,DAHDI/4,DAHDI/g1etcarecorrectasreflectedin
/etc/asterisk/dahdichannes.conf

VoIPCookbook:147

CHAPTER 7: Briker Softswitch


Brikerisasoftswitchbuiltonanumberofsoftware,includingFreePBX2.4,Asterisk1.4,
Asterisk2Billing1.3andWebmin,allofwhichbundledintoalinuxsoftwarethatrunsonUbuntu
Platform.Brikermaybefreelydownloadedfromhttp://www.briker.org.
ThefirstthingyouneedtodobeforeinstallingtheBrikeristosetyourBIOSconfigurationsoyouwill
bootyourcomputerusingtheCDROM.TheninserttheBrikerIPPBXCDintotheCDROM.Begin
installationbytypinginstallandpressenter.Thenthebrikerautomaticallyerasesthecontentofthe
hardiskandusesallthespacesavailableinthehardisk.

Briker's Installation Process

Figure7.1:Intheinstallermenu,therearemanyoptions:install,
check,rescue,memtest,andhd
Oncetheinstallationprocessiscompleted,thesystemwillcreateadefaultpasswordforconsolelogin
andweblogin,aswellasconfigurethedefaultIPaddress.

VoIPCookbook:148

Defaultconsolelogin(SSHport22):
Username
:support
Password
:Briker
Defaultweblogin(HTTPport80):
Username
:administrator
Password
:Briker
defaultIPaddress:
IPaddress
:192.168.2.2
Subnetmask :255.255.255.0

Figure 7.2: Briker checks whether there's a CD-ROM


Briker automatically checks the hardware components installed and finding the installer CD-ROM.

VoIPCookbook:149

Figure7.3:Brikeralsocheckswhetherallthehardware
requiredfornetworkingareinplace
Thenthebrikerautomaticallychecksthenetworkhardware,andautomaticallyconfiguretheIPaddress.

VoIPCookbook:150

Figure7.4:Formattingpartitions
ThentheBrikerautomaticallyerasesthecontentofthehardiskandusesallthespacesavailableinthe
hardiskforit.

VoIPCookbook:151

Figure7.5:Installingrequiredsoftware
TheBrikerautomaticallyinstallsthebasesystemandothersoftwarerequired.

VoIPCookbook:152

Figure7.6:InstallingGRUBbootloader
Finally,thebrikerwillinstallGRUBbootloader.Andoncethewholeinstallationprocessiscompleted,
theCDROMwillautomaticallyejectthebrikerCDandthecomputerwillrestart.

VoIPCookbook:153

Briker's Console

Figure 7.7: With the installation completed, you will be able to begin the configuration process

Afterinstallingthesoftware,wecanbeginconfiguringthroughtheconsole,bychangingtheIP
address,dateetc.Allcommandsfortheloginconsolecanbecarriedoutonlyafteryouauthenticate
yourselfasarootuser.Thecommandsforconfigurationthroughtheconsolewillnotworkunlessyou
enterthefollowingentries:
$sudosu
Thepasswordyouhavetoenteristheonesimilartothatofusersupport(defaultpassword).For
securityreason,youshouldchangethedefaultpasswordbydoingthefollowing:
#passwd
ThedefaultIPaddressoftheBrikeris192.168.2.2.ChangethisaddresssothatBrikerwillbeableto
adjustanynetworktopologyandobtainIPaddressallocation,byfirstofalleditingfile
/etc/network/interfaces:
#vi/etc/network/interfaces

VoIPCookbook:154

Figure 7.8: The default IP address of Briker


The above figure shows that the IP address is 192.168.2.2. Make necessary changes and save the configuration
by pressing F2 and exit the editing platform by pressing F10.
Then restart the networking services to activate the configuration, by executing the following syntax:
# /etc/init.d/networking restart

Next we have to make sure that the date and time of the Briker are set properly.Check them by typing the
following syntax:
# date
If they are not set properly, then adjust them. For example, if we want to set the time to 08.00 and date to July 1,
2008, then the syntax would be:
# date -s "2008-07-01 08:00:00"
Setting the date and time properly is particularly important if you are using Briker for commercial use.

VoIPCookbook:155

Briker's Web Configuration

Figure7.9:InordertoconfigureBriker,youneedtologon
Withtheconsoleproperlyconfigured,youcannowconfigureBrikeradministration.BrowsetoBriker's
IPaddressthroughthewebbrowser,aloginwindowwillappearasshowninFigure5.9.Usethedefault
username,administratoranddefaultpasswordBriker,thenclickonLogin.

Figure7.10:Preferencessettings

VoIPCookbook:156

Tochangetheadministratorpassword,clickonMyAccountandchoosePreferences.Amenuasshown
inFigure5.10willappear.Enterthenewpasswordinthepasswordboxandenterthesamepasswordin
theRetypePasswordbox,thenclickonSavetoactivatetheconfiguration.

Figure7.11:Addinguser
InBriker,wecanhavemorethanoneadministrator.ChooseAdministrationandthenManageUser.
ThenfillinUsername,Email,FullName,PasswordandUserLevel,andclickAdd.
TodoIPPBXconfiguration,chooseIPPBXAdministrationfromthemainmenu,asshowninFigure
7.9.

VoIPCookbook:157

Figure7.12:menutoconfigureIPPBXfeaturesisavailableinBriker,someofwhichare
extensions,trunksandroutesconfiguration.
IPPBXstatusindicatesSystemStatisticsshowingthepercentageofLoadAverage,CPU,Memoryand
Swapbeingused,theusageofharddiskspaceandthespeedofReceiveandTransmitEthernet.Also
availabeinthisdisplayisIPPBXStatisticsshowingTotalActiveCalls,InternalCalls,ExternalCalls,
TotalActiveChannels,andUptimeBriker.Thesedataarerealtime,updatedperiodicallyand
automatically,aprocessthatconsumesaconsiderableamountofCPUresources.Soitisrecommended
thatyoudonotkeepaccessingthismainpage.
Whenyouarefamiliarwiththemaindisplay,itistimeforyoutoaddExtension,userwhowilluse
Brikerservices.ClickExtensiononIPPBXAdministrationmenu.Throughthisoption,youwillbe
abletoaddnewaccount,omitorreplaceanyexistingone.
ClickAddExtensions.Thenchoosethesortofprotocolsusedbytheaccount:SIP,IAX2,ZAP,or
Custom(protocolotherthanthefirstthree).Withanyoftheseprotocolselected,clicksubmit(shownin
Figure7.13).

Figure7.13:Extensiondiffersbythetypeofdeviceusedbyanaccount
ThenDialogpropertiesasshowninFigure7.14willappear,
promptingyoutoenteralltheinformationrequiredfor
addingextension.
Figure7.14:DialogPropertiesof
AddingSIPExtension

VoIPCookbook:158

Fillinuserextensionwithextensionnumber,e.g.1001.Thisisusuallyjustnumeric.Thenfillinthe
displayname,thenamethatwillbeusedasCallerIDwhendialing.Fillinsecretwiththepassword
usedbyuserforauthenticationprocessinregistrationextensionatUserAgentlayer.ClickSubmit.

Zaptel Configuration
Zaptelisacollectionoftoolsanddriversdetectinghardwareintheformofanaloganddigitaltelephony
cardinstalledonPCIorminiPCIslot.ThetelephonycardisusedtoconnectthebrikertoPlainOld
TelephonySystem(POTS)networkortoanalogtelephone.
Forexample,connectingthebrikertoanalogPBXrequiresanalogtelephonycard.Sodoesthebriker
whenitisconnectedtoPublicSwitchTelephoneNetwork(PSTN),connectedthroughatelephonecable
providedbytelecommunicationoperator.Theanalogordigitalcardtobeused,however,dependson
thetypeoftechnologybeingusedbytheoperator.

VoIPCookbook:159

ToconfigureZaptel,firstofall,loginthroughtheconsole.Asthisinstallationrequiresrootprivileges,
loginasarootbyexecutingthefollowingcommands:
$sudosu
Thenrungenzaptelconfcommand
#genzaptelconf
Tocheckwhetherzaptelhassuccessfullydetectedwhatitislookingfor,docheckingbyexecutingthe
followingcommand:
#ztcfgvvv
Thenrestartzaptel,byexecutingthefollowingcommand:
#/etc/init.d/zaptelrestart

SIP Trunk

VoIPCookbook:160

Figure7.15:AddingaTrunk
InIPPBXAdministrationmenu,chooseTrunksmenu,chooseAddSIPTrunk.

Figure7.16:ThegeneralsettingsofAddSIPTrunk

Figure7.17:ThegeneralsettingsofAddSIPTrunk
FillintheOutgoingSettings,asshowninFigure7.17,byusingdataaccountfromdifferentserver.Add
particularoptionswhenevernecessary,suchasfailtoconnectorunabletoreceiveandmakeacall
throughtrunk.Otherparticularoptionsare:
context=fromtrunk
qualify=yes
VoIPCookbook:161

insecure=port,invite
authuser=<similartousercontactormeetingitstrunkneeds>
fromuser=<similartousercontactormeetingitstrunkneeds>
fromdomain=<similartohostormeetingitstrunkneeds>

Figure5.18:ThegeneralsettingsofAddSIPTrunk
ForRegisterString,obtainthedatafromOutgoingSettings,withtheformatusername:secret@<Trunk
Name>.SavetheconfigurationbyclickingSubmitChanges.

VoIPCookbook:162

IAX2 Trunk
GotoTrunkmenu,asifyouliketoconfiguretheAIX2Trunk.ChooseAddIAX2.

Figure7.19:ThegeneralsettingsofAddIAX2Trunk

Figure7.20:ThegeneralsettingsofAddIAX2Trunk

VoIPCookbook:163

Figure7.21:ThegeneralsettingsofAddIAX2Trunk
ForIAX2Trunk,makethesameconfigurationasshowninFigure7.19,7.20,and7.21.

VoIPCookbook:164

H323 Trunk
GototheTrunksmenuinIPPBXAdministrationmenu.

Figure7.22:Thereisnooption
specificallyforH.323.Soyou
havetochooseCustomTrunk

VoIPCookbook:165

ThenchooseAddCustomTrunk.

Figure7.23:Thegeneralsettings
ofAddCustomTrunk

ForcustomizedTrunk,fillintheCustomDialStringbyusingtheformatH323/<h323gateway
address>/$OUTNUM$.AsshowninFigure5.23,thegatewayaddressofH323is119.18.159.20.Then
clickSubmitChanges.
Openaterminalconsole,theneditthe/etc/asterisk/h323.conffile:
#mcedit/etc/asterisk/h323.conf
Editthefollowingoptionsavailableinthe/etc/asterisk/h323.conffile:
Port=1720
bindaddr=<IPBrikeraddress>
Thenrestartasterisk,byexecutingthefollowingcommand:
#/etc/init.d/amportalrestart

VoIPCookbook:166

ZAP Trunk
ThistypeofTrunkisconnectedtoPSTNline,throughanalogcard(TDMxxx)ordigitalcard(TExxx).
Afterdoingthezaptelconfiguration,dotheconfigurationinIPPBX,byfirstofallloggingintoIPPBX
Administration.

Figure7.24:
AddingZAP
Trunk

ChooseTrunksmenuandchooseAddZapTrunk.Amenufortrunkconfigurationshouldappearas
showninFigure7.25.

Figure7.25:GeneralsettingsofAdd
ZapTrunk

FillZapIdentifier(trunkname)with
g0,whichmeansgroup0.The
descriptionofthegroup'sname(for
example,group0)canbefoundat
/etc/asterisk/zapatachannels.conffile.

VoIPCookbook:167

Outbound Routes
Outboundroutesareusedtomanagewherethecallshouldgoto,theonegoingoutthroughthetrunk.It
istheseOutboundroutesthatdefinealltheoutgoingcalls.Forexample,forconnectingtoPSTN,Briker
usesprefix9,whichisfollowedbythedestinationnumber.Thefollowingisanexampleofits
configuration.

Figure7.26:
Setting
Outbound
Routes

VoIPCookbook:168

InIPPBXAdministration,chooseOutboundRoutes.ChooseAddRoute.
Figure7.27:
SettingOutboundRoutes

FillintheconfigurationusingthesettingsshowninFigure7.27.Oftheparametersinthesettings,route
name,dialpattern(theinitialcodetoconnecttootherserver),andTrunkSequence(Trunkbeingused.
LookatTrunkssection)aremostimportant.Onceyouhavecompletedthesettings,clickSubmit
Changes.

VoIPCookbook:169

Inbound Routes
InboundRoutesfunctionstomanagethedestinationofthecallcomingfromthetrunk.Whenacall
comesfromthetrunk,thesystemwillcheckwhetherthecallisincompliantwiththeInboundRoutes
configuration.Ifitis,thenthecallwillbeforwardedtoitsdestinationaccordingtotheconfiguration.
InIPPBXAdministrationmenu,chooseInboundRoutes.ThenchooseAddIncomingRoute.

Figure7.28:SettingInboundRoutes
Fordefaultconfiguration,youcanleaveAddIncomingRouteblank.InSetDestination,youcandirect
anyincomingcallstoacertaindestination.IntheexampleshowninFigure7.29,allincomingcallsare
directedtotheIVR.
Figure7.29:
Inthisexample,allcallsare
directedtoIVR

ThenclickSubmit

VoIPCookbook:170

Interactive Voice Response


InteractiveVoiceResponse,commonlyabbreviatedasIVR,isafeatureformanagingautomatic
responsewheneverthereisacallcomingin.ThefollowingarethestepsnecessarytodoIVT
configurationinthebriker.

Setup Recordings
MakearecordforIVRthatyouwilluse(youcanusetheMS.Recorderapplication).Forexample,you
canrecordWelcometoPTJelajahMediaInformation,press1foroperator,andsettheencodeto16
bit,8,000Hz,andsaveitusingthe.wavextension(i.e.Welcomejmi.wav).Uploadthe.wavfileyou
havejustcreatedtothemenu:IPPBXAdministration>SystemRecordings,uploadandnamethefile,
forexample,welcomejmi,andsaveit.
IVRSetup
InIPPBXAdministrationmenu,chooseIVR.ThenchooseAddIVR.

Figure7.30:IVRSettings
VoIPCookbook:171

Filltheparameterswiththefollowingdata:
ChangeName:WelcomeJMI
Timeout:10
EnableDirectory:no/unchecked
DirectoryContext:default/empty
EnableDirectDial:yes/check
Announcement:WelcomeJMI(recording)
OptionsavailableintheFigure7.30implythatauserwhocalltheIVRcouldpress1andbeforwarded
toOptionJMIEnglish,providedthattheIVROptionJMIEnglishisactivated.Oncethedataand
optionsareconfigured,clickSaveandchooseApplyconfigurationchanges.

Ring Groups
RingGroupisoneofmanyfeaturesusedtomanagegroupcall.Forexample,inacompanywith5
telephoneoperators/agents,thefiveoperatorscanbeincludedasagroup,whichisnamed,forexample,
'operatorhelp.'Wheneverthereisanincomingcall,thecallwillbedirectedtotheRingGroup'operator
help.'Whenthefirstoperatorisbusy,thecallwillbeforwardedtothesecondoperatorandsoon.The
followingistheRingGroupconfigurationinthebriker.
ChooseRingGroupsinIPPBXAdministrationmenu.ThenchooseAddRingGroups

VoIPCookbook:172

Figure7.31:RingGroupssettings
Usethefollowingconfiguration

Figure7.32:Inthisexample,thecallerwillbe
directedtoIVRWelcomeJMIiftheagroup
operatordoesnotrespond
VoIPCookbook:173

UsethesettingsshowninFigure7.31.Thesettingsimpliesthatifagroupoperatordoesnotrespond,
thenthecallerwillbedirectedtoIVR'WelcomeJMI.'

Pin Sets
PinSetsfunctionsassystemauthentication,afeatureactivatedwhenauserdoeshisorhercallthrough
thetrunkandenteredthepasswordrequired.
ChoosePinSetsinIPPBXAdministrationmenu,thenchooseAddPasswordSet.

Figure7.33:SettingAddPINSet
ThefollowingmenuareconfigurationmenuforPINSets.
PINSetDescription:descriptionofthenameofPIN
RecordInCDR:choosethisifyouwanttohavethePINenteredinto
CallDetailRecordwheneverthePINisused
PINList:passwordtobeused

VoIPCookbook:174

CHAPTER 8: OpenSIPS High Performance Softswitch


Inthischapter,wewilldiscussonOpenSIPS.OpenSIPS(OpenSIPServer)isamatureOpenSource
implementationofaSIPserver.OpenSIPSismorethanaSIPproxy/routerasitincludesapplication
levelfunctionalities.OpenSIPS,asaSIPserver,isthecorecomponentofanySIPbasedVoIPsolution.
Withaveryflexibleandcustomizableroutingengine,OpenSIPS'unifiesvoice,video,IMandpresence
servicesinahighlyefficientway,thankstoitsscalable(modular)design.
WhatOpenSIPShastooffer,comesinareliableandhighperformanceflavourOpenSIPSisoneof
thefastestSIPservers,withathroughputthatconfirmsitasasolutionuptoenterpriseorcarriergrade
class.ItperformsmuchbetterthanthatofAsterisk.However,itlacksoffeaturethatrichinAsterisk.
Thus,inreality,itwouldbebeneficialtousebothAsteriskandOpenSIPS.

Compile OpenSIPS
Preparethesupportingsoftware.InUbuntu9.10andUbuntu10.04,itcanbepreparedbyusingthe
followingcommand.
#aptgetinstallflexbisongccmakelibperl5.10libperldevlibxmlrpcc3libxmlrpcc3dev\
unixodbcunixodbcdevlibradiusclientng2libradiusclientngdevlibxml2openssllibsctp1\
libsctpdevlibexpat1libexpat1devlibldap2.42libldap2devlibsnmp15libsnmpdev\
libconfuse0libconfusedevlibmysqlclient16libmysqlclientdevmysqlclient5.1mysqlserver\
zlib1gzlib1gdevlibmysql++3libmysql++devlibpcre3libpcre3dbglibpcre3dev
InUbuntu10.10,itcanbedoneasfollows
#aptgetinstallflexbisongccmakelibperl5.10libperldevlibxmlrpcc3libxmlrpcc3dev\
unixodbcunixodbcdevlibradiusclientng2libradiusclientngdevlibxml2openssllibsctp1\
libsctpdevlibexpat1libexpat1devlibldap2.42libldap2devlibsnmp15libsnmpdev\
libconfuse0libconfusedevlibmysqlclientdevmysqlclient5.1mysqlserverzlib1gzlib1gdev\
libmysql++3libmysql++devlibpcre3libpcre3dbglibpcre3dev
GetsourcecodeofOpenSIPS,suchas,opensipsXXXtls_src.tar.gz,from
http://opensips.org/pub/opensips/
http://www.opensips.org/index.php?n=Resources.Downloads#osippub
http://www.opensips.org/index.php?n=Resources.Downloads#osipsf
VoIPCookbook:175

IfwewouldliketouseopensipswithTLS,weneedtodothefollowings.
$sudosu
#cpopensips1.6.42tls_src.tar.gz/usr/local/src/
#cd/usr/local/src/
#tarzxvfopensips1.6.42tls_src.tar.gz
#cdopensips1.6.42tls
Compileandinstallthefollowingmodules,i.e.,"acc","mysql","textops","sl","db_mysql"and"enum"
usingthefollowingcommand,
#cdopensips1.6.42tls
#makeall&&makeinclude_modules="accmysqltextopsslenumdb_mysql"modules
#makeinstall
Itseems,weneedtocopysomescriptsto/usr/local/src/opensips/opensipsctl
#cpRf/usr/local/src/opensips1.6.42tls/scripts/*/usr/local/lib/opensips/opensipsctl
That'sit.OpenSIPSiscompiledandinstallandreadytouse.OpenSIPSconfigurationfileislocatedat
/usr/local/etc/opensips
Checkforanyproblemintheconfigurationfilecanbedoneusingthefollowingcommand,
#opensipscf/usr/local/etc/opensips/opensips.cfg
ToRunopensips,putin/etc/rc.local
opensipsf/usr/local/etc/opensips/opensips.cfg
Pleasenoteweremovecswitch

Prepare User Database Server


OpenSIPSusesdatabaseserver,suchas,MySQLforhandlinguserregistration.InstallMySQLServer
VoIPCookbook:176

andmakesureitworksusingthefollowingcommand,
#aptgetinstallmysqlserverlibmysqlclientdevmysqlclient5.0
#/etc/init.d/mysqlrestart
Tosetupthedatabaseserver,weneedtoedit/usr/local/etc/opensips/opensipsctlrcor
/etc/opensips/opensipsctlrc,suchas,
or

#vi/usr/local/etc/opensips/opensipsctlrc
vi/etc/opensips/opensipsctlrc

Makesure,
DBENGINE=MYSQL
DBHOST=localhost
DBNAME=opensips
DBRWUSER=opensips
DBRWPW="opensipsrw"
DBROUSER=opensipsro
DBROPW=opensipsro
DBROOTUSER="root"
Copyscriptsto/usr/local/lib/opensips/opensipsctl
#cpRf/usr/local/src/opensips1.6.42tls/scripts/*/usr/local/lib/opensips/opensipsctl/
Initializedtheuserdatabaseusingopensipsdbctlcommandasfollow,
#cd/usr/local/lib/opensips/opensipsctl
#opensipsdbctlcreate
Followthefollowingcommad
MySQLpasswordforroot:<enterMySQLrootpassword>
INFO:testservercharset
INFO:creatingdatabaseopensips...
INFO:CoreOpenSIPStablessuccesfullycreated.

VoIPCookbook:177

Installpresencerelatedtables?(y/n):<y>
INFO:creatingpresencetablesintoopensips...
INFO:Presencetablessuccesfullycreated.
Installtablesforimccplsiptracedomainpolicycarrierrouteuserblacklist?(y/n):<y>
INFO:creatingextratablesintoopensips...
INFO:Extratablessuccesfullycreated.

Use opensipsctl
OpensipsctlisausefulltoolprovidedbyOpenSIPS,thatcanbeusedfor,

Addingusers.
Checkwho'sonline.
Monitoringopensipsactivities.

Toadduser,forexample,wecanuse
#opensipsctladdnumber@hostpassword
#opensipsctladd2000@192.168.0.3123456
Toseewho'sonline,forexample,
#opensipsctlulshownumber@host
#opensipsctlulshow2000@192.168.0.3
Afteropensipsisrunning,tomonitorOpenSIPSSoftswitchactivities
#opensipsctlmonitor

Some Routing Technique in OpenSIPS

Inthefollowingsections,wewilldiscusshowtoroutetrafficto

VoIPCookbook:178

PSTNandCellullarnetwork
AreaCodeforseveralinterconnectedSIPServers
ENUMnetwork

HowtoroutetoPSTNandCellular
Basically,weneedanAnalogTelephoneAdapter(ATA)tointerconnectaVoIPnetworktoPSTNor
Cellularnetwork.Inthisexample,weassume

ATAislocatedatIPaddress192.168.0.200
ATAisusingport5061
AreacodeforPSTNis021
AreacodeforCellullaris08

Weneedtoaddtotheopensipsconfigurationfile
/usr/local/etc/opensips/opensips.cfg
Forexample,tobeabletousetheATA(at192.168.0.200:5061)tocallPSTNfromallhost/domain

#attempthandofftoPSTN
if(uri=~"^sip:021[09]*@*"){
rewritehostport("192.168.0.200:5061");##192.168.0.200:5061istheATA
route(1);
};

TorestrictthecalltoPSTNonlyfrommydomain.com

#attempthandofftoPSTN
if(uri=~"^sip:021[09]*@mydomain.com"){##callerregisteredtomydomain.com
rewritehostport("192.168.0.200:5061");##192.168.0.200:5061isATA
route(1);
};

TobeabletousetheATAtocallCellullarfromallhost/domain
#attempthandofftocellullar
if(uri=~"^sip:08[09]*@*"){
VoIPCookbook:179

rewritehostport("192.168.0.200:5061");##192.168.0.200:5061isATA
route(1);
};
TorestrictthecalltoCellularonlyfrommydomain.com
#attempthandofftocellullar
if(uri=~"^sip:08[09]*@mydomain.com"){##callerregisteredtomydomain.com
rewritehostport("192.168.0.200:5061");##192.168.0.200:5061isATA
route(1);
};

HowtorouteusingAreaCodeforinterconnectedSIPServers
ForexamplewehaveseveralSIPServersinournetwork,suchas,
AreaCode

SIPServerIPAddress

021 203.159.31.99
022 203.159.31.123
023 203.159.31.48
ThedialplanforOpenSIPSwouldbesomethinglike,

if(uri=~"^sip:021[09]*@*"){
strip(3);
rewritehostport("203.159.31.99:5060");
route(1);
};
if(uri=~"^sip:022[09]*@*"){
strip(3);
rewritehostport("203.159.31.123:5060");
route(1);
};
if(uri=~"^sip:023[09]*@*"){
strip(3);
VoIPCookbook:180

rewritehostport("203.159.31.48:5060");
route(1);
};

HowtorouteENUMQueryinOpenSIPS
StepstorouteENUMqueryinOpenSIPSisasfollows,

PrepareENUMmodulinOpenSIPSconfiguration
CreateroutingtableforENUM

ENUMqueryinOpenSIPSisbasicallytransformtheURIaddressfromENUMtoURISIP.Call
processisnormallydoneusingtheURISIP.
TopreparetheENUMmoduleinOpenSIPSconfiguration,weneedtoedit
/usr/local/etc/opensips/opensips.cfgor/etc/opensips/opensips.cfg
#vi/usr/local/etc/opensips/opensips.cfg
Enterthefollowingcommand
loadmodule"enum.so"
modparam("enum","domain_suffix","e164.arpa.")
modparam("enum","i_enum_suffix","e164.arpa.")
Wecanchangee164.arpatootherENUMtopleveldomain,suchas,e164.idore164.th.

TestENUMQueryinOpenSIP
Assuming:

AnAsteriskServerRunningat192.168.0.2
Echotestreadyatnumber600
ENUMServerisreadytoresolveENUMQueryfore164.id.
DatainENUMServerreadytomap+62555666666600to600@192.168.0.2

VoIPCookbook:181

Testtestroutingtablewouldbe
rewriteuri("sip:62555666666600@192.168.0.2");
prefix("+");
enum_query("e164.id.");
route(1);

route[1]{
#senditoutnow;usestatefulforwardingasitworksreliably
#evenforUDP2TCP
if(!t_relay()){
sl_reply_error();
};
exit;
}

ENUMRoutingTableinOpenSIPSconfiguration
Theshortversion
if(uri=~"^sip:00[19][09]*@*"){
strip(2);
prefix("+");
};
if(uri=~"sip:\+[09]+@*")
enum_query("e164.id.");
TheaboveexamplewillallowallclientfromallservertoaccessourENUMqueryrouting.Amore
completeversionofENUMquerymaybeasfollows,
#Somewhereintheroute[x]section:
#ifyouwanttomakeENUMworkwithnumbersstartingwith"00",
#usethefollowingtoconvert"00"itintoa"+"
if(uri=~"^sip:00[19][09]*@example\.net"){
VoIPCookbook:182

#stripleading"00"
#(changeexample.nettoyourdomainnameorskipthestuffafterthe"@")
strip(2);
#(adjust,ifyourinternationalprefixissomethingelsethan"00")
prefix("+");
};
#checkifrequesturistartswithaninternationalphone
#number(+X.),ifyes,trytoENUMresolveine164.arpa.
#ifnoresult,tryinnrenum.net
if(uri=~"sip:\+[09]+@example\.net"){
#(changeexample.nettoyourdomainnameorskipthestuffafterthe"@")
if(!enum_query("e164.arpa.")){
enum_query("nrenum.net.");
};
};
Anotheralternativethatmaybeextendedisasfollows,
#isthisanENUMdestination(leading+?)
if(method=="INVITE"&&uri=~"sip:\+[09]+atiptel\.org"){
if(!enum_query("voice"))#ifparameterempty,itdefaultsto"e2u+sip"
enum_query("");#E2U+sip
}
Yetanotheralternativethatcanbetried/expandedisasfollows,
if(is_from_user_enum()){
enum_query("");
}

VoIPCookbook:183

CHAPTER 9: ENUM
ENUMisbasicallyamappingmechanismtomapTelconumber,suchas,+628113334567or
+62555334567,toanumberrecognizeinVoIPnetworksuchas,20333@voiprakyat.or.idor
5007987@fwd.pulver.com.Thus,inprinciple,ENUMismerelyatable.
ENUMisnotlimitedtomappingonly.ENUMrecognizeprioritizing.Forexample,aphonenumber
+6255534567mayhaveseveralclientwithpriority,suchas,
+6255534567
+6255534567
+6255534567
+6255534567
+6255534567

priority1
priority2
priority3
priority4
priority5

245678@voiprakyat.or.id
6543686@fwd.pulver.com
+62215678976(nomorkantor)
+62856789654(nomorhandphone)
mail:oknum@salemba.co.id

TheactualwritingofENUMontheInternet,forexampleusingthetopleveldomaine164.id,isas
follows,
+6255512345678
+6281812345678

8.7.6.5.4.3.2.1.5.5.5.2.6.e164.id
8.7.6.5.4.3.2.1.8.1.8.2.6.e164.id

PleasenotethattheENUMnumberisreversedasopposetotheknownnormalphonenumber.

Example of ENUM Service


OneofthebestexampleofENUMServiceisthee164.org,wecanregisterandhasagood
authenticationmechanismbycallingourphonenumberbeforeitmapstotheirdatabase.
e164.orgnottheonlyENUMServer.FriendsatVoIPRakyatinIndonesiacreatestheirownENUM
serverlocatedathttp://www.enum.voiprakyat.or.id.

Delegation Concept in ENUM


WehopeaswearereadyeachcountrywillhavetheirveryownENUMServerandreceiveadelegation
frome164.arpa.ForIndonesia,itwouldbe2.6.e164.arpaforhandlingcountrycode(+62).

VoIPCookbook:184

TounderstandhowENUMworks,oneneedstounderstandhowaDomainNameSystem(DNS)works
asENUMusesDNSServer.Thus,ENUMworksfairlysimilartoDNSbuttomapandtodelegatea
phonenumber.PleasenotethatENUMisdifferentfromaSIPServer.
ImagineatnationallevelthereisanallocationofareacodeforSIPnetworkon+62555.Itcanbe
mappedtoENUMunderthedomain,forexample,5.5.5.2.6.e164.id.ItmayhaveseveralENUMName
Server(NS)suchas,
ENUMServerDomain5.5.5.2.6.e164.id
+62555
ENUMNS 202.123.123.124
+62555
ENUMNS 235.123.123.234
Pleasenotethatatnationallevel,theENUMServermaynothaveacompleteinformationonthe
subscribers.
Forexample,acommunityoracorporateoratelecomunicationoperator,assigned4444areacodefor
itsnetwork,suchthat,itmayuse
+6255544440000+6255544449999
basically,itmayallocatephonenumberfor10.000subscribers.Thus,thecommunitymayruntheir
ownENUMserverunderthesubdomain4.4.4.4.5.5.5.2.6.e164.id,forexample
ENUMServerDomain4.4.4.4.5.5.5.2.6.e164.id
+62555444 ENUMNS
212.234.234.234
+62555444 ENUMNS
212.234.234.235
Inthedelegationprocess,theNSinformationofENUM4.4.4.4.5.5.5.2.6.e164.idmustbewrittenin
ENUM5.5.5.2.6.e164.idthattells
4.4.4.4.5.5.5.2.6.e164.id
4.4.4.4.5.5.5.2.6.e164.id

INNS 212.234.234.234
INNS 212.234.234.235

ENUMconceptisnotconfinedtooperator,anycorporateorcommunitywithsmallernumberof
extensions,e.g.,100extentionsmayuse,forexample,ENUMallocationfor,
+6255566666600+6255566666699
Thus,thisparticularcorporatemusthasitsownENUMserverorcollocatetootherENUMserverto
VoIPCookbook:185

handle6.6.6.6.6.6.5.5.5.2.6.e164.id,suchas
NUMServerDomain6.6.6.6.6.6.5.5.5.2.6.e164.id
62555666666 ENUMNS
212.234.234.4
62555666666 ENUMNS
212.234.234.5
DelegationprocessforNSof6.6.6.6.6.6.5.5.5.2.6.e164.idmustbeenteredintothemainENUMServer
for5.5.5.2.6.e164.idttotell
6.6.6.6.6.6.5.5.5.2.6.e164.id INNS 212.234.234.4
6.6.6.6.6.6.5.5.5.2.6.e164.id INNS 212.234.234.5
TheENUMdelegationconceptisclearlyshownthatisnotlimitedtooperator.Anyentitiesmayhave
theirveryownphonenumber.Thus,amorecomprehensiveauthenticationprocessmaybeneededto
makesurethephonenumberisproperlydelegated.

ENUM Implementation
ENUMServerisprincipallyaDNSServer.Thus,ifonehasaDNSServer,onemayreadilyrunan
ENUMServer.ToInstallanENUMSever,oneneedto,

InstallaDNSServer.InLinux,wenormallyuseBINDforDNSserver.
AddourENUMallocationin/etc/named.conf.local.
IncludeourENUMdataintothedatabasefilementionedin/etc/named.conf.local.

BINDInstallation
InstallBINDasfollows,
aptgetinstalldnsutilsbind9

SetupBINDforENUMServer
Forexample,weareassignedfor+625XXXX.Weneedtoedit,

VoIPCookbook:186

/etc/bind/named.conf.local
Entryfordomain5.2.6.e164.id
zone"5.2.6.e164.id"IN{
typemaster;
file"/etc/bind/5.2.6.e164.id.db";
};
Allsubscribernumbersmustbelistedin/etc/bind/5.2.6.e164.id.db.AnexampleoftheDNSfileof
/etc/bind/5.2.6.e164.id.dbisasfollows,
$TTL86400
@
INSOAns.warnet.co.idadmin.warnet.co.id.(
42;serial(d.adams)
3H;refresh
15M;retry
1W;expiry
1D);minimum
INNS ns.warnet.co.id.
0.0.0.2 NAPTR10100"u""E2U+sip""!^.*$!sip:2000@192.168.0.3!".
1.0.0.2 NAPTR10100"u""E2U+sip""!^.*$!sip:2001@192.168.0.3!".
2.0.0.2 NAPTR10100"u""E2U+sip""!^.*$!sip:2002@192.168.0.3!".
3.0.0.2 NAPTR10100"u""E2U+sip""!^.*$!sip:2003@192.168.0.3!".
4.0.0.2 NAPTR10100"u""E2U+sip""!^.*$!sip:2004@192.168.0.3!".
5.0.0.2 NAPTR10100"u""E2U+sip""!^.*$!sip:2005@192.168.0.3!".
0.2.0.2 NAPTR10100"u""E2U+sip""!^.*$!sip:2020@192.168.0.3!".
1.2.0.2 NAPTR10100"u""E2U+sip""!^.*$!sip:2021@192.168.0.3!".
2.2.0.2 NAPTR10100"u""E2U+sip""!^.*$!sip:2022@192.168.0.3!".
0.3.0.2 NAPTR10100"u""E2U+sip""!^.*$!sip:2030@192.168.0.3!".
1.3.0.2 NAPTR10100"u""E2U+sip""!^.*$!sip:2031@192.168.0.3!".
2.3.0.2 NAPTR10100"u""E2U+sip""!^.*$!sip:2032@192.168.0.3!".
3.3.0.2 NAPTR10100"u""E2U+sip""!^.*$!sip:2033@192.168.0.3!".
0.5.0.2 NAPTR10100"u""E2U+sip""!^.*$!sip:2050@192.168.0.3!".
1.5.0.2 NAPTR10100"u""E2U+sip""!^.*$!sip:2051@192.168.0.3!".
Forexample,itmeansthemappingnumbersisasfollows,
VoIPCookbook:187

+6252000
+6252001
+6252002

0.0.0.2.5.2.6.e164.id 2000@192.168.0.3
1.0.0.2.5.2.6.e164.id 2001@192.168.0.3
2.0.0.2.5.2.6.e164.id 2002@192.168.0.3

Aftertheeditingprocess,pleaserestartheDNSServerusingthecommand
#/etc/init.d/bind9restart

TestDNSforENUMQuery
WecanusethedigcommandonthelocalhostoftheDNSservertoquerytheENUMentries,for
example,
$digNAPTR0.0.0.2.5.2.6.e164.id@127.0.0.1
Theoutputwouldbeapproximately
;<<>>DiG9.6.1P1<<>>NAPTR0.0.0.2.5.2.6.e164.id@127.0.0.1
;;globaloptions:+cmd
;;Gotanswer:
;;>>HEADER<<opcode:QUERY,status:NOERROR,id:10744
;;flags:qraardra;QUERY:1,ANSWER:1,AUTHORITY:1,ADDITIONAL:1
;;QUESTIONSECTION:
;0.0.0.2.5.2.6.e164.id.

IN

NAPTR

;;ANSWERSECTION:
0.0.0.2.5.2.6.e164.id. 86400 IN
sip:2000@192.168.0.3!".

NAPTR

10100"u""E2U+sip""!^.*$!

;;AUTHORITYSECTION:
5.2.6.e164.id.
86400 IN

NS

ns.warnet.co.id.

;;ADDITIONALSECTION:
ns.warnet.co.id.
86335 IN

76.163.126.2

;;Querytime:0msec
VoIPCookbook:188

;;SERVER:127.0.0.1#53(127.0.0.1)
;;WHEN:TueNov2408:12:112009
;;MSGSIZErcvd:137

ENUM Delegation in BIND


Inacountry,forexample,Bhutan(+975)mayhaveENUMtopleveldomain
2.5.7.9.e164.bt
forexample,runningatamachine203.159.31.41.
Forexample,wewanttoallocatephonenumbersdifferentorganization,suchas,
Organization

Number

ENUM

ServerIP

MinistryofEduction

+9752123XXX

3.2.1.2.5.7.9.e164.bt 203.159.31.100

UniversityA

+9753544XXX

4.4.5.3.5.7.9.e164.bt 202.154.1.10

HighSchoolB

+9753342XXX

2.4.3.3.5.7.9.e164.bt 222.119.6.45

VillageC

+9755768XXX

8.6.7.5.5.7.9.e164.bt 231.167.31.20

DzongD

+9757243XXX

3.4.2.7.5.7.9.e164.bt 204.19.1.5

AttheENUMCountryLevelDNS,inthisexample203.159.31.41,thedelegationprocessisdoneby
configuringfile/etc/bind/named.conf.localsuchthat
zone"3.2.1.2.5.7.9.e164.bt"{
typeslave;
masters{
203.159.31.100;
};
file"/var/lib/bind/3.2.1.2.5.7.9.e164.bt.hosts";
};

VoIPCookbook:189

zone"4.4.5.3.5.7.9.e164.bt"{
typeslave;
masters{
202.154.1.10;
};
file"/var/lib/bind/4.4.5.3.5.7.9.e164.bt.hosts";
};
zone"2.4.3.3.5.7.9.e164.bt"{
typeslave;
masters{
222.119.6.45;
};
file"/var/lib/bind/2.4.3.3.5.7.9.e164.bt.hosts";
};
zone"8.6.7.5.5.7.9.e164.bt"{
typeslave;
masters{
231.167.31.20;
};
file"/var/lib/bind/8.6.7.5.5.7.9.e164.bt.hosts";
};
zone"3.4.2.7.5.7.9.e164.bt"{
typeslave;
masters{
204.19.1.5;
};
file"/var/lib/bind/3.4.2.7.5.7.9.e164.bt.hosts";
};
Whereon203.159.31.100,202.154.1.10,222.119.6.45,231.167.31.20and204.19.1.5,wemustrunmaster
DNSserverforeachrespectiveENUM.

VoIPCookbook:190

CHAPTER 10: Conference Server on Asterisk


EstablishingconferencecallsinPABXiscomplicated,aswehavetoconfigurethemproperly.Unlike
AsteriskConferencefeature,commercialconferencingfacilitiesareeasytousebuttheycanbe
exorbitant.SoitisfortunateforustohaveAsteriskassomethingtohelpusestablishnotonly
inexpensivewaystoconferencingbutalsoeasier.Basically,therearetwostepsnecessaryfor
configuringconferencinginAsterisk:

Makeconference"room"
Add"room"todialplan.

Configuring Conference Room MeetMe


Asterisk'sconferenceroomissetupin/etc/asterisk/meetme.conf.Allconferenceroomsshouldbelisted
underheader[rooms].Thesyntaxusedtoconfigureconferenceroomis:
conf=>conference_number[,pin][,adminpin]
Thefollowingisanexampleofaconferenceroomsetupwiththenumber2500andPIN1234:
[rooms]
conf=>2500,1234
Ifwesetupmorethanoneroom,itisrecommendedthatyoulabelthemsoastorememberwhich
numberforwhichconference.
[rooms]
;marketingteam
conf=>2500,1234
;publisherteam
conf=>2501,5678
Sincebeinganadministratordoesnotprovideuswithauthorizationthatcouldusethefeatures
otherwiseavailablewhenweuseAsteriskforsomethingmuchmorecomplicated,itisnotnecessaryto
setthePIN.

VoIPCookbook:191

Thereareseveraloptionsthatcanbeused,suchas:
mcallercanlistenbutnotspeak.
tcallercanspeakbutcannothear.
pcallercangetoutoftheConferencebypressingthe#key.
Therearetwoadditionaloptionsthathavenotbeenimplemented:
sAsteriskprovidesmenutotheuserif*ispressed.
agivetheuseradministratorprivilegesonaconference.

Configuring Dialplan for Conference


Toconfigurethisdialplan,wehavetoeditfile/etc/asterisk/extensions.confandincludetheconference
roomwewishtohaveinit.Thiscanbedonebyusingadifferentcontextforeachroom,forexample:
[marketing_team_conference_room]
exten=>300,1,MeetMe,2500(1234)
[publisher_team_conference_room]
exten=>301,1,MeetMe,2501(5678)
Sothecallersneedonlytocallthephonenumber300or301,enterthePINwhenasked,andtheywill
gointoconference.MeetMewillringabelltoinformthosealreadyinconferencethatthereissomeone
enteringintotheconference.
Wecancertainlygatherallthe"room"conferenceswithinacontext.Oradda"room"toanexisting
context,withthefollowingcommand.
[localusers]
exten=>250,1,Dial(SIP/alrac,10,r)
exten=>250,2,VoiceMail(u250@localvmusers)
exten=>250,dial+101,VoiceMail(b250@localvmusers)
exten=>300,1,MeetMe,2500(1234)
Oraddacomprehensivecontext

VoIPCookbook:192

include=>marketing_team_conference_room
IftheestablishedconferencegivesthecallerstheopportunitytolistentospeechesfromtheBoss
withoutinterruptingthespeech,thenwehavetodothefollowing:
[marketing_team_conference_room]
exten=>300,1,MeetMe,2500|m|1234
Newcallerswhohavejoinedtheconferencecanfindouthowmanypeopleintheconferenceuse
MeetMeCountapplications,byexecutingthefollowingcommand:
[marketing_team_conference_room]
exten=>300,1,Playback(there_are)
exten=>300,2,MeetMeCount,2500
exten=>300,3,Playback(callers)
exten=>300,4,MeetMe,2500
Ofcourseyouneedtosavetwosoundfilesthatsomewhatreads"Thereare"and"Callerspresentinthe
conference".Aftereditingextensions.conf,donotforgettoreloadthenewconfiguration.Inorderto
preventanomaliesencounteredduringoperation,wecanrunasteriskconsoleandexecutethefollowing
command:
#asteriskr
asterisk1*CLI>extensionsreload

Activating Conference while Operating


OneofneedsthatmayariseisthesettingofaconferenceroomatanytimeduringoperatingVoIP.For
thispurpose,itisnotnecessaryforustochangethecontentofextensions.conffile.Howeverweneedto
setupaconferencethatitsgeneralcontextintheextensions.conffileandmeetme.conf:
;meetme.conf
[rooms]
;generalpurposeconferenceroom
conf=>3500,1234
;extensions.conf
;genericconferenceroom
VoIPCookbook:193

[gen_conference]
Ifweneedestablishanewconference,wecanimmediatelymakeitthroughCLI,withthefollowing
command:
localhost*CLI>addextension400,1,Dial,3500intogen_conference
Extension'400,1,Dial,3500'addedinto'gen_conference'context
Hereextension400willbeaddedwithpriority1togen_conference.Ofcourse,thisextensionwill
disappearifwerestarttheasterisk,orwecandeleteitthroughthefollowingcommand:
localhost*CLI>removeextension400@gen_conference
Wholeextension400@gen_conferenceremoved
Inmultilineextensions,wecanomitasinglelineorcommandbygivingapriority,forexample
localhost*CLI>removeextension400@gen_conference2
Extension400@gen_conferencewithpriority2removed

VoIPCookbook:194

CHAPTER 11: Trunk Peering in Asterisk


OneofthemainreasonswhyweuseVoIPistohavefreelongdistanceorinternationalcalls.Imagine
thatifyou'rehavingabranchofficeorworkingpartnerswhooftencommunicatewithyou.Youhaveto
establishaprivatenetworkbetweenofficebranchesorthoseworkingpartnerssoyoucanbypassthe
PSTN.ThereareanumberwaysyoucandothisthroughAsterisk.

DUNDi,DistributedUniversalNumberDiscoveryprotocol.
Centralizeddirectory,suchasVoIPRakyat

Onthisoccasion,youwillbeshownatrunkpeeringprocessusingVoIPRakyat.Thesamemechanism
canbeappliedtootherSIPproxyacrosstheworld.
Inaddition,wewillalsodiscusstherealproblemswefaceinconfiguringnetworkinvolving
NAT/ProxyServer,asmostnetworksareprotectedbyfirewallthatblocksVoIPsignal.
WepresumethatwealreadyhaveanaccountinVoIPRakyat.Inthissense,thegivennumberand
passwordare:
number
number

2012345passwordabcdef
2055555password123456

Nextwewilldoacomprehensiveconfigurationoffilesip.confandextensions.conf,including
providingthefacilitiesrequiredfortesting.
Ingeneral,thereareseveralimportantthingsinconfiguringtrunkinAsterisk

RegistrationtoSIPaccountinvoiprakyat(sip.conf)
Creatingusername&passwordforvariousextensions(sip.conf)
ConfiguringDialoutforavarietyofconfigurations(extensions.conf)
Configurationforinboundcall(extensions.conf[inboundsip])

Withthisconfiguration,wecannowplaceoutgoingcallsusingvariousavailablelines.Inaddition,we
canalsoreceivecallsdialedfromvoiprakyatandtheinternetthroughinboundsipmodule.Thedetailof
eachofavarietyofconfigurationsisavailableintheenclosedconfiguration.

VoIPCookbook:195

CHAPTER 12: NAT and Firewall


NetworkAddressTranslation(NAT)orbetterknownasproxyserverisoftentroublesomeforSIP
configuration.TheresultingproblemusuallyfoundiseitherpoorVoIPconnectivityornoconnectivity
atallastheconnectivityisblockedbyaFirewall/NAT.Whensomethinglikethisoccurs,youhaveto
dothefollowing:
1. ensurethatanantivirussoftwareorfirewallactiveinyourPCisnotblockingVoIP
2. ContactyournetworkadministratorandtellhimorhertoenableNATforyouorgiveyoua
PublicIP,andopenthefollowingports:
ForSIP:
UDPport3478and3479(STUN,NATtypediscovery)
UDPport5060and5066(SIP,signaling)
UDPport8000to20000(RTP,data,voice+video)
ForIAX2:
UDPport4569(IAX2,signalinganddata)
AsteriskmayactasaSIPclientorSIPserver.Tomakeitaclient,dothefollowingcommand:
register=>
inpartof[general]insip.conf.
WemayhaveAsteriskfunctionasaSIPserver,byconfiguringtheusername,password,andother
detailsoftheSIPclientthatwillberegisteredtoAsteriskinsip.conf.
TherearesomescenariosofSIPNATnetworkchannels:
1.
2.
3.
4.
5.
6.
7.
8.

AsteriskSIPclientbehindtheNAT,withtheclientconnectedtoaSIPproxyoutsidetheNAT
AsteriskSIPclientbehindtheNAT,withtheclientconnectedtoaSIPproxywithintheNAT
AsteriskSIPserverbehindtheNAT,withtheclientoutsidetheNATconnectedtoAsterisk
AsteriskSIPserverbehindtheNAT,withtheclientwithintheNATconnectedtoAsterisk
AsteriskSIPclientoutsidetheNAT,withtheclientconnectedtoSIPproxyoutsidetheNAT
AsteriskSIPclientoutsidetheNAT,withtheclientconnectedtoSIPproxywithintheNAT
AsteriskSIPserveroutsidetheNAT,withtheclientoutsidetheNATconnectedtoAsterisk
AsteriskSIPserveroutsidetheNAT,withtheNATclientconnectedtoAsterisk
VoIPCookbook:196

Ingeneral,thesetupcanworkwiththeexistingconfiguration,ofcourse,dependingonthe
configurationoftheclient,NAT,serverandmanyotherfactors,especiallythefirewallconfiguration.
Ofthosesetups,number3and6aredifficulttodobecauseSIPisapeertopeerprotocolandmost
NATsallowonlyclientsinsidetheirnetworktoconnecttoaserverlocatedoutsidebutnotviceversa.
1.
2.
3.
4.
5.
6.
7.
8.

RunningwithaproxyserverthatsupportsNAT
RunningwithnoNATinbetween
RunningbydoingportforwardingintheNAT/proxyserver
RunningwithnoNATinbetween
RunningwithnoNATinbetween
RunningbydoingportforwardingontheNAT/Proxyserver
RunningwithnoNATinbetween
Runningwithconfigurationnat=yesandqualify=xxxinsip.conf.SomeclientsusingXLikeuse
STUNandsendUDPkeepalivepackets.QualifywillsendakeepalivepacketsfromAsterisk
toanyclientintheNAT

However,theworstcaseoccurswhenAsteriskiswithinNATandtheclientiswithindifferentNAT.For
this,weneedtohaveamediatorthatcouldseebothwayssimultaneously.Tochannelvoicedataor
streaming,weneedamediaserver.AsteriskwhichisplacedoutsidetheNATwouldbeabletofunction
asamediaserver,andwecanalsoaddthefeaturetodoCodecconversion.

VoIPCookbook:197

CHAPTER 13: Voicemail in Asterisk


VoicemailisusedinAsterisktoleaveamessage,whenthereisnoonetoreceivetheincomingcall.
VoicemailconfigurationforAsteriskisavailableinvoicemail.conffileavailablein/etc/asterisk/.We
cancreateamailboxwithinthedefaultmailboxcontext,eitherusetheonealreadyavailableorcreate
anotherindifferentcontext.Itisimportanttounderstandthatthecontextinvoicemailmailboxisnot
relatedtothecontextinextensions.conf
Thecommandtocreateavoicemailmailboxisapproximatelyasfollows
mailbox_number=>password,name,email
mailbox_numberisthenumberusedinextension.confforVoiceMail()commandandforregisteringa
usertosip.conforiax.conf.Passwordisthepasswordusedtoregisterausertosip.conforiax.conf.
Nameisthenameassociatedwithamailbox,andemailistheemailusedtoinformifthereisan
incomingvoicemail.
Sampleofvoicemail.confcontentisasthefollowing:
[mb_tutorial]
777=>1212,ivan,ivan@voiprakyat.or.id
Herethemailboxcontextiscreatedusingthenamemb_tutorialcontext,mailboxnumber777with
password1212,whichisownedbyivanwhoseemailisivan@voiprakyat.or.id.Forauserwhocalls
Ivanatextension1234tobeabletoleaveamessageinIvan'smailbox,thefollowingcommandcanbe
used:
Voicemail(mailbox_number@context)
Inextensions.conffile,thecontentisasthefollowing:
exten=>1234.1,Dial(SIP/ivan,30)
exten=>1234.2,VoiceMail(777@mb_tutorial)
exten=>1234.3,PlayBack(vmgoodbye)
exten=>1234.4,HangUp()
Intheexampleabove,AsteriskwillattempttocallSIPuserivanforextension1234andwaitfor30
seconds.Ifnobodyanswersthephone,Asteriskwillcarryoutthenextpriority,thatis,Asteriskwill
VoIPCookbook:198

openmailbox777inmb_tutorialcontext.Oncethecallerhasleftamessage,Asteriskwillcarryout
playback(rewindthemessage)andhangupthecall.Playback(vmgoodbye)willexecutevmgoodbye
filethatshouldbeavailablein/var/lib/asterisk/sounds/.
TheVoicemailmessageisrecordedin
/var/spool/asterisk/voicemail/<context>/<mailbox>/INBOX/
ThereforethefullpathtoIvanis
/var/spool/asterisk/voicemail/mb_tutorial/777/INBOX/.
Tolistentothemessagestoredinthemailbox,wecanplaceacallbyusingVoiceMailMaincommand
inAsterisk.Thecommandisasfollows:
VoiceMailMain(mailbox@context)
InthedefaultconfigurationofAsterisk,ifthesampleconfigurationremainsaswhatis,VoiceMailMain
canbecontactedusingthenumber8500.
Theconfigurationsampleofextensions.confforaccessingVoiceMailMainis:
exten=>9999.1,VoiceMailMain(777@mb_tutorial)
Bydialing9999,wewillbeabletogointomailbox777,ofcourseafterweenteredthecorrect
passwordforthismailbox,whichis1212.
VariousoptionsareavailablewhenaccessingmailboxesusingVoiceMailMain:
0Mailboxoptions
1Recordunavailablemessage
2Recordbusymessage
3Recordourname
4Changeourpassword
*Backtomainmenu
1Listentooldmessages
2Changefolders
3Advancedoptions
1Sendreply
VoIPCookbook:199

2Callback
3Envelope
4Outgoingcall
5Leavemessage
*Backtomainmenu
4Playpreviousmessage
5Repeatmessage
6Playnextmessage
7Deletethismessage
8Forwardmessagetoanothermailbox
9Savemessageinafolder
*Help;duringmessageplayback:Rewind
#Exit;duringmessageplayback:FastForward
Whenwelistentoavoicemailmessagerecording,wecanusethefollowingbuttonstonavigate,ie,
*torewind(goingback)
#toFastForward(forward)
Note:the'#'and'*'buttonsworkonlywhenthemessageisintheprocessofplayback.

VoIPCookbook:200

CHAPTER 14: More on Asterisk's Dialplan


Oneofthemostdifficultpartsinconfiguringatelephoneexchangeistheconfigurationofdialplan.
Asteriskdialplanconfigurationisintheextensions.conffile,whichisusuallylocatedin
/etc/asterisk/extensions.conf.Dialcontrolswhatneedstobecarriedoutwhenthereisincomingor
outgoingcall.Inotherwords,dialplancontrolsthepatternofcallsinoursoftswitch.
Extensions.confisconfiguredbasedonanumberofmodulescontainingdefinitionsorstaticparameter
settings.Thesemodulesarealsoknownascontext,definedbythesystemadministrator.Incontext,
theretwoparts,generalandglobal.Theformer,availableinthethetoppartofextensions.conf,allows
ustosetanumberofmainconfigurationsforextensionsinAsterisk.Thelatterallowsustodefinea
numberofvariablesofglobalconstantsandinitializethevalues.Oncethesepartsofcontextareset,the
restofcontentofextensions.conffileistakenbytheDialplan.SoDialplanconsistsofcontexts,with
everycontextconsistingofextensions.
Inaddition,thereisalsoMacro,aspecialtypeofcontext,labeledbythenamedefinedbytheuserwho
typicallyusesmacroprefix.Macrocanbeexecutedrepeatedly,behavingsimilartothesubroutinein
programminglanguage.
Eachsectioninextensions.confbeginswithanamewritteninsquarebrackets,soastomake
extensions.conf'sstructuresimilarto.inifileinWindows.

Pattern Extension
Whenwedefineextensionsinacontext,notonlycanweuseordinarynumbers,namesorletters,but
wecanalsodefinetheextensionsthatmatchasetofnumbersdialedusingextensionpattern.

Attaching context
Acontextcontainingextensionscanbeincorporatedintoorassociatedwithothers.Forexample,
considerthefollowingcontext:
Context"default":
Extension
101
102

Note
MarkSpencer
WillMeadows
VoIPCookbook:201

Operator

Context"local":
Extension
Note
_9NXXXXXX
Localcalls
include=>"default"
Context"longdistance":
Extension
Note
_91NXXNXXXXXX Longdistancecalls
include=>"local"
Wehavedefinedthreeextensions:

Operator.Defaultcontextallowsustodial3telephoneextensions:Mark,Willandtheoperator
Localcontexthasonlyoneextensionthatallowsustodial7digitnumber.Inaddition,ifwe
incorporatethedefaultcontextintothelocalone,wecanalsodialMark,Willandtheoperator.
Thelongdistancecontexthasanextensionpatternallowingustoplacealongdistancecall.
Thiscontextalsoincludeslocalcontext,andthusalsoallowsustocallalocalnumberoreven
theextensionofMark,Wilandtheoperator.

Usingcontextintheextension,wecancarefullyregulatewhocanhaveaccesstoalargernetwork.Be
careful.Ifthereismorethanonepatternthatmatchthedialednumber,Asteriskmaynotusethe
numberswewant.

The Extension Pattern


WhenAsteriskacceptsincomingconnectionthroughachannel,Asteriskwillseethecontextdefined
forsuchachanneltoseewhatcommandsthatneedtobecarriedoutbyAsterisk.Contextwilldefinea
setofcommandsdependingontheextensioncalledbytheuser.Forexample,agivencontextmaygive
asetofcommandsifausercallsthenumber"123",andasetofothercommandsiftheuserdials"9".
Wecanalsocreateanothersetofcommandsiftheusercallsnumberbeginningwith"555.
Ifthereareincomingconnectionssuchasthatcomingfromphonelineoutsideitimpliesthatthe
userhasnotdialedanextension.Inthiscase,Asteriskwillactasauserdialingaparticularextension
called"s"(originatingfromthewordStart).Asteriskwilllookfortheextension"number"sinthe
definitionofcontextforthechannelandlookforinstructionsthatneedstobecarriedoutforthe"s"
extension.
VoIPCookbook:202

Forexample,wehaveachannel"Zap/1",whichisconnectedtoatelephoneinanoffice.Forexample,
intheZapchannelconfiguration(zapata.conf)wehavedefinedcontext=johnforZapchannel1.
Therefore,ifweuseahandsettodialanumber,Asteriskwilllookforcontextwiththename"john"in
extensions.conftoseewhathastobedone.Wecanstartacontextbywritingthenameinsquare
brackets
[john]

Foreachcontext,wecandefineoneormoreextensionsthatcanbeusedbyAsterisktocomparethe
numberstobedialed.Foreachextension,wecantellAsteriskwhatneedstobedonethoughasetof
commands.

Extension
Anextensioncanbeaseriesofnumbersorapattern.Extensioncanbeaseriesofnumber,like123,and
mayalsocontainsomestandardsymbols*and#,whichareavailableonthephonekeypad.So34#76is
avalidextensionnumber.SomekeypadsarelabeledA,B,C,andD.Becauseofthis,extensioncan
alsobedefinedbasedonletters.Sobasicallyanextensioncanbedefinedusingbothlettersand
numbers.KeepinnotethattherearemanyVoIPphonesthatcancallextensionnumbersconsistingof
textSembang,like"Office".ThereforeitisnotaproblemtodefinesuchanextensionnameinAsterisk.
Areextensionnamescasesensitive?Yesandno.ExtensioncasearesensitivebecausewhenAsterisk
attemptstomatchtheextensiondialedbyausertoextensionthatisdefinedincontext,theextension
nameshouldbepreciselymatched,includinguppercaselettersandsmall.Therefore,ifausercalls
extension"OFFICE"throughtheirVoIPphone,Asteriskwillnotimmediatelyrunthecommandswe
defineforextension"Office".Butinreality,extensionnamesarenotcasesensitiveinthesensethatwe
cannotdefinedifferentextensionsbasedonlyonuppercase/lowercaseletters.Itmeanswedonotdefine
thecommandforextension"Office"and"OFFICE"inacontext.

PredefinedExtensionNames
Asteriskdefinesanumberofextensionnamesforspecificneeds.Theseextensionsare:
i
s

:Invalid
:Start
VoIPCookbook:203

h
t
T
o

:Hangup
:Timeout
:AbsoluteTimeout
:Operator

andmanymore.

DefiningExtension

UnliketheextensionsintraditionalPABX,wheretheextensionisusuallyassociatedwithaphone,
interfaceormenuin,theextensioninAsteriskisdefinedasasetofcommandstorun.Thesecommands
areusuallyexecutedaccordingtotheirlevelofpriority.Somecommands,suchasDialorGotoIf,have
theabilitytofollowothercommandsdependingonacertaincircumstance.
Atthetimewhentheextensionisdialed,thecommandmarkedas1willbeexecuted,followedby
commandnumber2andsoon,untilthephoneishungup.
Inthesyntaxusedinextensions.conffile,astepinagivenextensioniswrittenusingthefollowing
format:
exten=extension,priority,Command(parameter)
Thesignequalto=canalsobewrittenusing=>,justliketheformoftenusedinmanyexamples.
Inconclusion,a"context"hasaname,suchas"john".Ineveryofthem,wecandefineoneormore
"extension".Inanextension,wecandefineasetofcommands.Howdowedefinetheseextensionsand
thecommandsrequiredtohandlethem?Todefineboth,weneedtoeditextensions.conffileusingatext
editor.Thereareseveraltoolsthatallowustoeditthemusinggraphic/web.
Thecomponentsthatbuildthestagesofextensioncommandorthecommandlineareasfollows:

Extensionisthelabelofanextension,whichcanbeastring(containingallowednumbers,
lettersandsymbols).Extensionisapatternthatmustbeevaluateddynamicallyirordertomatch
manypossiblephonenumbers.Everycommandlinethatbecomespartofaparticularextension
shouldhavethesamelabel.

Priorityusuallyisofintegernumber.Itisthesequenceofacommandthatmustberunwithina
givenextension.Thefirstcommandthatwillberunmustbeginwithpriority1.Ifthereisno
VoIPCookbook:204

suchthingaspriority1,thenAsteriskwillnotexecutetheextensioncommand.Afterrunning
priority1,Asteriskwillthenaddanotherprioritytothepriority2andsoon,ofcourse,provided
thatthereisnocommandthatdetermineswhichsubsequentprioritywhichmustberun.Ifthe
nextcommandturnsouttobeundefined,Asteriskwillstoptheprocessrunningthecommand,
notwithstandingtherearestillcommandswithhigherpriority.

Commandisthe"application"toberunbyAsterisk.

Parametersaretheparametersthatmustgiventoacommand.Notallcommandrequires
parameter,assomeofthemcanbeexecutedwithoutparameters.

Forexample:
exten=>123,1,Answer
exten=>123,2,Playback(ttweasels)
exten=>123,3,Voicemail(44)
exten=>123,4,Hangup
Withthesedefinitions,anextensionisnumbered"123".Whenacallisdialedtothisextension,Asterisk
willrespondtothecall,executingasoundfilewiththenamettweaselsandgivethecallerthechance
toentervoicemailintomailbox33,andwillbeendedupwithahangup.
Asteriskitselfdoesnotreallycareabouttheorderoflineplacementinextensions.conf.Sowithrandom
placementoflines,thecommandwewanttoexecutewillstillbecarriedoutaccordingtotheorderwe
want.
exten=>123,4,Hangup
exten=>123,1,Answer
exten=>123,3,Voicemail(44)
exten=>123,2,Playback(ttweasels)
AnotherwayindefiningthecommandistouseCallerIDtomatchthecaller.
exten=>123/100,1,Answer()
exten=>123/100,2,Playback(ttweasels)
exten=>123/100,3,Voicemail(123)
exten=>123/100,4,Hangup()
Withsuchcommand,compabilitywithextension123willbepossibleonlywhentheCallerIDofthe
VoIPCookbook:205

calleris100.Thiscanalsobedonethroughpatternmatchingprocess,suchasthefollowing:
exten=>1234/_256NXXXXXX,1,Answer()
andsoon
Thisway,thecompabilitywithextension1234willonlypossibleiftheCallerIDbeginswithjustthe
codeareanumber256.
Wecanevendothefollowing:
exten=>s,1,Answer
exten=>s/9184238080,2,Set(CALLERID(name)=EVILBASTARD)
exten=>s,2,Set(CALLERID(name)=GoodPerson)
exten=>s,3,Dial(SIP/goodperson)

Inthesecondpriority,itisshownthatwecanmarkanypersonwedislike,whileanypersonotherthan
theonewedislike,afterthirdpriority,willreturntothepathspecified.

AninterestingExtensionExamples
Asteriskisabletotransfercalls.Thiscanbedonebyaddingtheparametert(lowercaps)totheuser
context,suchasinthefollowingsyntax:
exten=>250,1,Dial(SIP/alrac,10,rt)
Thisway,thecalltransfercanbedonebypressing"#",followedbytheextensionnumber.Asteriskwill
say"transfer"whenyoupress"#"andsoundsadialtoneuntilweentertheextensionnumbertowhich
wewishtocall.
Asteriskhastwentyparkingspaces,number701720.Transferthecallthatyouwanttoparkat
extension#700andAsteriskwillautomaticallyparkitatanyemptylotandprovideyouwithextension
ofwhereitisparked.Toretrievethecall,youonlyhavetodialtheextensionnumber.temparextension
mendialenoughparking.
Thestepsnecessaryforparkingcallsareasthefollowing:

Addinclude=>parkedcallstothedefaultcontext,ortheonethatyouwishtohaveparkcall
facility.
VoIPCookbook:206

Youshouldhavethefile/etc/asterisk/features.confwhichwascreatedduringinstallation.Make
surethatyouhavethefollowingsyntax:
[general]
parkext=>700
parkpos=>701720
context=>parkedcalls
parkingtime=>180

YouneedtorestartyourAsteriskserverthroughtheconsole,asreloadingisnotsufficient.Youcan
attemptitintheinternalextension.Soifthereisanincomingcall,thecallcanbeparkedbypressing
#700,andAsteriskwillsaytheextensionnumberofwherethecallisparked.Thecallerwillheara
beautifulmusicplayedthroughMusicOnHold.Whentheparkingtimeisup,thenourextension
numberfirstdialedwillbedialedagainandwehavetheoptionwhethertoreceivethecallornotto
receiveandforwardthecalltovoicemail.
Theparameter"t"(lowercase)meansthatonlytherecipientofthecallcantransfercalls.Thismeanswe
canonlyparkacalljustonce.Butifweaddtheparameter"T"(capitalized),suchas:

exten=>250,1,Dial(SIP/alrac,10,rT)
thenwecantransferthecalls,whetherassomeonewhoreceivethecallsorasthecaller.Allthisalso
meansthatwecanunparkacall,parkthecallandtransferthecall.
Asteriskcanbeconfiguredforhuntingtelephonenumbers.Ahuntgroupisalistofphonenumbers
whichwillberangconsecutivelyuntilwepickupthephone.Theexampleshowstwophoneextensions
andamobilephonenumber.Thecallersimplycallextension100andAsteriskwilldotherestofthe
tasks.Eachphonewillringfor20seconds,andwhennobodypickitup,Asteriskwilldialthenext
phone.
[alracfollowme]
exten=>100,1,Dial(SIP/350,20,r)
exten=>100,2,Dial(SIP/351,20,r)
exten=>100,3,Dial(Zap/1/1231234567,20,r)
exten=>100,4,VoiceMail(u350)
exten=>100,dial+101,VoiceMail(b350)
Othervariationofthehuntingtechniqueaboveisthatallnumberscouldringatthesametime.Thisis
knownasgroupring.Youcanringallthephonesinadepartmentifyouwishthemtodoso.The
VoIPCookbook:207

sampleconfigurationis:
[customerservice]
exten=>666.1,Dial(SIP/605&SIP/604&SIP/606,40,tr)
exten=>666.2,Voicemail(s699)
Intheexample,extension604,605,and606willberangsimultaneouslywhensomeoneplaceacallto
extension666fromtheCustomerServiceDepartment.Ifthereisnoonetoanswerthecallwithin40
seconds,thecallwillbeforwardedtoVoicemail.

Variable and Equation


InAsteriskthereissupportavailableforusingvariablewiththename${VARIABLENAME}.Wecan
alsowriteanequationusingtheconstruction${EXPRESSION},wheretheexpression(equation)can
bearegularexpression,comparison,addition,subtractionandmanymore.

Reloading
Afterwemadesomechangestothedialplanandotherthings,wehavetoapplythesechangeswe
appliedtoasteriskbydoingthefollowingCLIasteriskcommand:
CLI>reload
Alargeconfigurationfilesizeormanysmallerfilesize?
Throughthecommand#include<filename>inextensions.conf,otherfilescanbeincluded.Thisway,
wecanconfigureextensions.conftobethemainfile,users.confthatcontainslocaluser,services.conf
thatcontainsvariousserviceslikeconferencing.Bydoingso,itiseasiertomaintainthedialplanwe
create.

Forwarding to another Asterisk


ToforwardcallstootherAsteriskserver,wecanusethefollowingsyntax:
[iaxprovider]
switch=>IAX2/user:[key]@server/context

VoIPCookbook:208

Theabovecommandwillcarryoutforwardingtootherserver.However,Userandkeyhavetobe
definediniax.conffileoftheservertowhichthecallswillbeforwarded.Thecontextforthisserveris
thesameasthatofextensions.confoftheserverthatdoestheforwarding.

VoIPCookbook:209

CHAPTER 15: VoIP IP PBX Hardware


Ifyourequireaphonesolutionforasmallofficewith616extensionlines,youwouldnormallyusea
PBX(PrivateBranchExchange)machinetoperformswitchingbetweentheseextensionlinesandto
manageoutboundconnectivity.Butastherearegreaterneedstoextendthenumberofextensions(say
hundreds),youwillfindswitchingusingthisconventionalPBXrathercomplicated,withcablessnaking
aroundyourpremise.InVoIP,thisisnolongeraproblem,asVoIPPBXisbasedonInternetProtocol,a
fromfactormakingIPPBXamuchmorecompactsolutionwithfewerportcablestoconnect.

Linksys SPA9000

Figure 15.1: IP PBX Hardware Physical Dimension is small

AnexampleofIPPBXbeingusedasanexampleisLinksysSPA9000,adeviceconsistingonlytwo
LAN(RJ45)portsandtwotelephone(RJ11)ports.SPA9000isactuallyarouterorproxyserver,with
portconnectivitytoWANandLAN.TheRJ45enablingconnectivitytoWANislabeledInternet,
whiletheRJ45connectiontoLANislabeledEthernet.ThedefaultIPaddressfortheLAN
VoIPCookbook:210

connectivityis192.168.1.1.Meanwhile,thetwoRJ11telephoneportsarepartofPBXportthatcanbe
connectedtotwoconventionalphones,includingfaxmachine.Despitethissimplicity,SPA9000isa
PBXthatiscapableofbeingconnectedtouptofourPSTNlinesortoalargeVoIPinfrastructure.
Internally,SPA9000couldaccommodate16extensionlines.Whencomparedtoasmallconventional
PBX,SPA9000hasonlyfourportscomparedtoasmallPBXthatuses20telephonecalbles.Soall
connectionswillbeestablishedthroughtheinternetinfrastructure.

LinksysSPA9000Configuration
ThewayLinksysSPA9000operatesissomewhatsimilartootherLinksysVoIPequipments.To
configureLinksysSPA9000,weneedtohave:
1. informationonIPaddressforbothWANandLANports.
2. SIPaccountofaproviderintheinternettoallowSPA9000toregisteritselftofourdifferentSIP
accounts.
3. NumberallocationforextensionlinesofthePBXtoSPA9000toprovideaddressupto16
telephonenumbersautomatically.
Numbersallocatedforeachextensionarespecific,distinguishinganIPPBXfromotherVoIP
appliances.Normally,atypicalVoIPequipmentdoesnotprovidetelephonenumberallocation.Soif
youwanttoconnectyourconventionalphonetoLinksysSPA9000throughtheinternetorWANport,
thefirstthingyouhavetodoisfindtheinternet/WANIPaddressofLinksysSPA9000solateryouwill
beabletoconfigureusingtheweb,bydoingthefollowingsteps:

Press*ontheconventionaltelephonekeypadrepeatedlyuntilyouhearamantalkingthrough
yourtelephone.
Press110#andlistencarefullytotheSPA9000'sIPaddressgivenbytheman.Writeitdown
soyoudonthavetomemorizeit.

AnothereasierwaytoobtaintheIPaddressistogointotheEthernet/LANport.TheIPaddressof
SPA9000ethernetLANshouldbe192.168.1.1bydefault,thatis,providedyouhavenotchangedthe
settings.
ThenextstepistoconfigureyourPCIPaddresssoitwillmatchthatofLinksysSPA9000soyouwill
beabletodotheconfigurationthroughtheweb.GotoPCandmatchthePC'sfamilyaddresstothatof
SPA9000.GotoStartmenu,controlpanel,networkconnections,localareaconnection,internet
protocol(TCP/IP),andproperties.

VoIPCookbook:211

NowyouwillbeabletologintoLinksysSPA9000'swebinterfacefromyourPCviahttp://ipaddress
spa9000/.
ThefirstmenuyouwillfindisthestatusoftheLinksysSPA9000.

Figure 15.2: Linksys SPA9000 Administration Panel

VoIPCookbook:212

Figure 15.3: The WAN Setup Tab of Linksys SPA9000

IntheWANsetup,wegettwooptions:

UsingastaticIP(requiringIPaddress,Netmask,gatewayetc.)
UsingautomaticIP(connectiontypeshouldbesettoDHCP).

Ingeneral,theIPaddressallocationmethodusedinaWANnormallyisdynamic.However,fora
softswitch,itisrecommendedthatyousettheIPaddressallocationtostaticinordertomakeiteasier
fornonLinksysSIPclienttoregisteritselftothesoftswitch.

VoIPCookbook:213

Figure 15.4: The LAN Setup Tab of Linksys SPA9000 Administration Panel

IntheLANSetuptab,wecanconfigurethefollowing:
whetherNAT/RouterinLinksysSPA9000shouldbeactivatedornot.
IPaddress.Put102.168.1.1
Netmask.Put255.255.255.0
DHCPServerforclientinLAN
WecanalsoconfiguretheIPaddresstobeallocatedtoaspecificMACaddress.

ConfiguringVoIPonLinksysSPA9000
Basically,thereareseveraltypesoftelephoneconnectioninavailableinLinksysSPA9000:

VoIPCookbook:214

TwoFXSorconnectionstothetelephone.Thisconnectionbasicallyneedsnottobeconfigured
andbydefault,itsnumberis100and101.
FourSIPconnectionstohighercentrallevel,toanySIPserver
Thereare14nonFXSextensionsinformallocationforIPPhone.Thenumberallocatedranges
from102to116.Still,configurationisnotneededand,anyIPPhoneattemptingtoconnectto
LinksysSPA9000candosowithablankpassword.

Figure 15.5: FXS 1 Tab under Voice Tab of Linksys SPA9000 Administration Panel

Onthevoicemenuandadminmenu,wecanseetheconfigurationforFX1andFX2,orLine14.On
theFXS1menu,weneedtosetLineEnabletoYes,sotheFX1willbeabletoreceivecallsdialedtoit.
MakesurethatthereisaphonelineorfaxmachineconnectedtoFXS1orotherwiseanyincomingcalls
willnotbereceived.ApplythesameconfigurationtoFXS2.Overall,theconfigurationallowsusto
connecttwoconventionalphones,includingfaxmachine,toLinksysSPA9000.
VoIPCookbook:215

Figure 15.6: Line 1 Tab of Administration Panel

OnthemenuofLine1toLine4,wecanconfiguretowhichSIPservereachoftheselineswillbe
registeredto.MakesureLineEnableissettoYes.

VoIPCookbook:216

Figure 15.7: Line 1 Tab of Administration Panel

OnLinksysSPA9000wecouldsetfourSIPaccountstoberegisteredtoanySIPProxy,eachaccount
connectedonlytoaline.Someimportantthingstodothisareasthefollowing:

setLineEnabletoyes
Filltheinformationpertainingtoyouraccountinthefollowingparameters:
Proxy
UserID
Password
UseAuthID

voiprakyat.or.id
thenumbergivenbyvoiprakyat
passwordofvoiprakyataccount
no

IfyousetUseAuthIDtoye,thenfillthatparameterwiththenumberofyourVoIPRakyataccount.
VoIPCookbook:217

DothesametoyourotherSIPaccount(s)fortherestofthelines(Line2,Line3andLine4).

VoIPCookbook:218

CHAPTER 16: Analog Telephone Adapter for connection to PSTN


ItisobviousthatmakingbothVoIPandPSTNtocoexistisdifficult,particularlywhenyouareseeking
tominimizeyourtelecommunicationspendingbychoosingeitheroneofthem.Sothissectionwillhelp
youunderstandhowtokeepyourPSTNlinebyusingatrunkingequipmenttobeconnectedtoPSTN.
Generally,theequipmentsavailableinthemarkethaveoneFXOortwo.Coincidentally,theLinksys
SPA400,theequipmentweuseasanexample,hasfourFXOsandisrelativelylessexpensive.The
interesthereisthatyouwanttohaveVoIPbeconnectedtoyourconventionalphone,eithertoaPABX
ordirectlytoyourPSTNnetwork.Thisusuallydoesnotrequireyoutoobtainalicense,unlessyou
intendtobecomeaproviderwithcommercialinterest.
Soforyourpurpose,youneedtohaveanAnalogTelephoneAdapter(ATA),whichcanbeconnectedto
thecableofyourPSTNcable.InVoIP,thisisoftencalledFXO(usuallylabeledasLine).Thephysical
conditionofthisinterfaceissimilartothatofRJ11(conventionaltelephonejack).Thedifferenceis
thatininRJ11FXOline,thereisnovoltage,somethingthatistherewhenyouhaveaRJ11Phone.
WithFXO,youcanyourVoIPbeconnectedtoPSTNandPABXextensions.AndATAphonecanbe
connectedtobotharegularphoneandPABXCO.
Inshort,therearetwotypeofRJ11connectionsinATA,namely,

FXOtobeconnectedtoPSTN/Telcoline/PABXextension.
FXStobeconnectedtoTelephoneline/FAX.

WhenconnectingATAtoPSTNline,makesurethatyoudonotconnectittothewrongplug.Ifyou
did,thePSTN'svoltage,whichusuallyisaround48V,wouldcollidewiththatoftheATAphone.This
willdamageyourATAequipment.Sopriortoconnectingthem,youhavetosetyourATAequipmentso
itrecognizeswhetherthevoltageinplaceis48Vor24V.

VoIPCookbook:219

Linksys SPA3000 Analog Telephone Adapter

Figure 16.1: ATA Linksys SPA3000 has two RJ-15 sockets on one of its sides

OneofthesmallestATAwetheauthorhaveeverseenisLinksysSPA3000.Fromthepictureabove,
youcanseetwotelephonejacks,eachlabeledPhoneandLine.Connectthephonesockettoyour
conventionalphonewhiletheLinesockettothePSTNcable.

Figure 16.2: ATA Linksys SPA3000 has a RJ-45 socket, power socket and
LED indicator on the other side

OnthebackofLinksysSPA9000,thereisRJ45plugthatcanbeconnectedtoLANcableforcomputer
andtheInternet.

VoIPCookbook:220

ConfigureLinksysSPA3000

Figure 16.3: Linksys SPA3000 Administration Panel

SPA3000logicalconfigurationisnotmuchdifferentfromotherVoIPequipment.Ingeneral,weneedto
configure:IPaddress,Netmask,Gateway,DNS,thetelephonenumber,passwordandSIPserver.The
initialappearanceofSPA3000issomewhatsimilartothatofotherLinksysproducts.Sothisisaplus
forthosewhoarealreadyfamiliarwithLinksysproduct.

VoIPCookbook:221

Figure 16.4: The System tab of Linksys SPA3000 Administration Panel

OntheSystemmenuyoucansettheIPaddress,Netmask,gateway,andDNSoftheLinksysSPA3000.
IfyouhaveaDHCPserver,youcanenableDHCPsoATAwillgetitsIPaddressautomaticallyfrom
theserver.

VoIPCookbook:222

Figure 16.5: Line 1 tab of Linksys SPA3000 Administration Panel

RegistrationtotheSIPserverforthetelephoneiscarriedoutthroughLine1menu.Weneedtoenter
someinformation:
LineEnableyes
ProxytheSIPServer.
DisplayNamethephonenumberintheSIPserver.
UserIDthephonenumberintheSIPserver.
AuthIDthephonenumberintheSIPserver.
PasswordthepasswordtoregistertotheSIPserver.
Onceyoucompletedallthese,theconfigurationforregistrationtoSIPserverfortelephoneconnected
tophone/FXSinterfaceiscompleted.

VoIPCookbook:223

Figure 16.6: PSTN Line tab of Linksys SPA3000 Administration Panel

ForconnectivitytoPSTN,theconfigurationforPSTNLineregistrationissimilartoLineconfiguration,
usingthefollowingconfiguration:
LineEnableyes
ProxyIPaddress/hostnameofSIPServer.
DisplayNamethephonenumberintheSIPserver.
UserIDaphonenumberintheSIPserver.
AuthIDaphonenumberintheSIPserver.
PasswordpasswordtoregistertotheSIPserver.
Oncethesearecompleted,soistheconfigurationforregisteringthePSTNLinetoSIPserverfor
telephonecableconnectedtoFXOinterface.

VoIPCookbook:224

LinksysSPA3000ATAStatus

Figure 16.7: PSTN Line tab of Linksys SPA3000 Administration Panel

AtthebeginningoftheSPA3000configurationmenuisthestatusandinformationmenu.Slightly
below,thereisastatusofSPA3000PSTNline.Despitethemanyparametersavailableinthisstatus,
youhavetobeconcernedwithjusttwoofthem:registrationstateandLineVoltage.Fortheformer,
makesurethattheparameterregistrationstatesaysregistered.ThisimpliesthatSPA3000isproperly
registeredtoaSIPproxy.Forthelatter,checkthevoltagelevelattheconnectiontoPSTN/PABX.PSTN
andanumberofPABXusuallyhavetheirvoltagelevelat48Vand24Vrespectively.Whilethe
voltagelevelofthePSTNisfine,PABX'svoltagelevelwillbeproblematicforSPA3000,asitsdefault
voltagethresholdisconfiguredonlytohaveSPA3000connectedtoPSTNorPABXwhentheirvoltage
levelisabove30V.WhenyoudomakeacallusingthelineconnectedtotheunrecognizedPABX(or
PSTN),SPA3000willgiveabusytone.TohaveSPA3000recognizeaPABXwhosevoltagelevelis
below30V,wehavetochangetheparameteravailableinthePSTNLinemenu,whichyoucould
accesswhenyou'reloggedinasadmin.
VoIPCookbook:225

Figure 16.8: PSTN Line tab of Linksys SPA3000 Administration Panel

IntheInternationalcontrolunderthebottom,thereisparameter"LineinUse"Voltageisitsdefault
valueis30.IfthePSTNLinevoltageof24VthePABXonlysetparameter"LineinUse"Voltageof
30VwillcausetheSPA3000thinkthattheSPA3000isnotconnectedtothePSTN/PABX.Thuswe
needtothechangethevaluetobesmallerthan24V,suchas23or20V.Thisway,SPA3000will
recognizethatitisconnectedtoaPSTN/PABXnetworkeventhoughthevoltagelineisonly24V.

VoIPCookbook:226

LevelOne VOI-2100 Analog Telephone Adapter

Figure 16.9: LevelOne VOI-2100

LevelOneVOI2100isanothertypeofATAwhichcanbeusedinSIPbasedVoIPnetwork.Similarto
SPA3000,VOI2100hastwoRJ11s,onefortheconnectiontothetelephone,whileanothertoconnect
toPSTNorPABXcable.IncontrasttoSPA3000,VOI2100hasanembeddedrouter,NATandDHCP
serverinsideit.TherearetwoUTPRJ45plugs,onecanbeconnectedtoWANwhileanothertoLAN.

VoIPCookbook:227

Figure 16.10: LevelOne VoIP Administration Panel

AtthebeginningoftheLevelOneVOI2100menuisthestatusoftheVOI2100,suchasMACAddress,
SystemUptime,etc..VariousconfigurationsofVOI2100isavailableontheleft.

VoIPCookbook:228

Figure 16.11: The WAN Status tab of LevelOne VoIP Administration Panel

OntheWANmenu,clicktheWANstatus.WecanseetheconditionofWANLevelOneVOI2100,
somestandardinformationfromtheWANconnection,suchasIPaddress,SubnetMask,gateway,and
DNSserver.AnumberoftagsthatispossiblytobeconfiguredtoimproveVoIPperformanceare
VLANTagandPriorityTag,bothofwhichcanbefoundalsoinWANstatus.

VoIPCookbook:229

Figure 16.12: The WAN Settings tab of LevelOne VoIP Administration Panel

InWANSettings.Wecanconfigureseveralparameters,suchas,
IPaddressoftheWANConnectionasstaticordynamic.
Trafficlimitation.

VoIPCookbook:230

Figure 16.13: The PPPoE tab of LevelOne VoIP Administration Panel

InWANmenu,clickPPPoE.Coincidentally,thereisafeaturetoauthenticateADSLthatusesPPPoE.
Thus,ifyoulikepleasefeelfreetoentertheusernameandpasswordofPPPoE.

VoIPCookbook:231

Figure 16.14: MAC Spooling tab of LevelOne VoIP Administration Panel

IntheWANmenu,clickMACspoofing.ThisallowsustochangetheMACaddressoftheEthernet
WANwewanttouse.ThisisoftennecessarytodowhentheADSLprovidertowhomwesubscribeour
servicesetsonlyacertainMACaddresscapableofconnectingtotheprovider.ThroughthisMAC
Spoofingmenu,wecanchangetheMACaddressoftheEthernetWANinordertousetheMAC
addressapprovedbytheprovider.

VoIPCookbook:232

Figure 16.15: LAN Settings tab of LevelOne VoIP Administration Panel

OnthemenuLAN,clickLANSettings.HerewecansettheIPaddressandSubnetMaskofthe
EthernetLANthatweuse.

VoIPCookbook:233

Figure 16.16: DHCP tab of LevelOne VoIP Administration Panel

OntheLANmenu,clickonDHCP.WecanactivateordeactivateDHCPserver.Wecanalsoconfigure
therangeofclientIPaddressesthatcanbeallocatedtothenetwork.Notethatinagivennetworkitis
possibletohaveanumberofDHCPservers.ItisimportanttoensureaDHCPserver'sIPaddresses
allocatedarenotcontradictorytothoseofdifferentDHCPservers.OtherinformationsuchasDomain
andDNSServercanalsobeconfiguredunderDHCPtab.

VoIPCookbook:234

Figure 16.17: Routing tab of LevelOne VoIP Administration Panel

OntheLANmenu,clickRouting.Wecanaddstaticroutingtoothernetworksifnecessary.The
informationneededforthisisjustIPaddressdestination,SubnetMask,andGatewayrouterthat
connectstothenetwork.

VoIPCookbook:235

Figure 16.18: Port Forwarding tab of LevelOne VoIP Administration Panel

OnLANmenu,clickPortForwarding.Thisfeatureallowustodoaforwardingfromaport.For
example,ifwehaveMail/SMTPServerbehindNAT,thenthroughthisportforwarding,alltraffic
headingtoport25(SMTPserver)fromoutside/WANcanbeforwardedbyNATtoserverbehindNAT.
Informationyouneedtoenterisportrangeandtheserver'sIPaddressbehindtheproxy.Forexample,if
wewanttoincludejustport25,theportrangeshouldbejust25to25.

VoIPCookbook:236

Figure 16.19: The SIP tab of LevelOne VoIP Administration Panel

ThemostimportantpartofVOI2100istheSIPconfiguration.OntheSIPmenu,clickSIPtab.This
tabsallowsyoutochangekeyparametersenablingVOI2100toenterSIPnetwork.Someoftheseare:

ServeraddressIPaddress/hostnameoftheSIPproxyserver
Porttheportnumber.Thevalueoftenusedis5060.
OutboundProxyIPIPaddress/hostnameofoutboundproxyisusuallysimilartothatofSIP
Proxyserver.
OutboundProxyPortwhichisusuallysimilartoSIPPort,thatis,5060.

VoIPCookbook:237

Figure 16.20: The SIP tab of LevelOne VoIP Administration Panel

AdditionalinformationpertainingtoSIPaccountinaSIPProxyserverneedstobeincludedalsoonSIP
menu,atheverybottomofthemenu.Theseinformationinclude:
PhonenumberusernameintheSIPProxyServer
Phonenumber,whichistheusernameofaSIPProxyServer
CallerID,thecallerIDwewanttouse
Password,theonetobeusedtoregistertoSIPProxyserver
TherearetwoSIPaccountsthatcanberegisteredwithSIPProxyServer:Line1canbeconnectedto
thetelephonelinewhileline2toPSTNlinewhichplugisavailableinLevelOneVOI2100.UnderSIP
menu,thereareothersubmenussuchasSIPExtension,OutofBand(OOB)Signaling,ToSetc.
However,youdon'thavetochangetheseparameters,asVOI2100canstilloperatewithouttheneedto
changetheseparameters.

VoIPCookbook:238

Figure 16.21: The CODECS tab of LevelOne VoIP Administration Panel

Nowclickoncodecs.Thisoptionallowsyoutodeterminewhichvoicecompressionmethodorcodec
thatcanbeactivated.Usually,itisbettertoactivateallofthemsoyouwillhaveflexibilityin
communicatingwithavarietyofsoftphonesorIPphones,justincaseacodecdoesnotworkproperly
andyouhavetoswitchtodifferentone.

VoIPCookbook:239

Figure 16.22: The Security tab of LevelOne VoIP Administration Panel

NowclickonSystem,thentosecurity.Underthistab,wecanchangethewebadministratorpassword
neededtoaccessLevelOneVOI2100webmenu.

VoIPCookbook:240

Figure 16.23: The AutoUpdate tab of LevelOne VoIP Administration Panel

NowclicktheAutoUpdatetab,nexttoSecurity.Thesubmenuunderthistaballowsyoutoupdate
firmwareofLevelOneVOI2100automaticallythroughtheInternet.

VoIPCookbook:241

Figure 16.24: The Localization tab of LevelOne VoIP Administration Panel

NowclickLocalization.Setthetimetosynchronizeourtimetotheserver'sintheinternetandalsoset
ourlocationtothetimezoneforourlocation.

VoIPCookbook:242

Figure 16.25: The Gain Control tab of LevelOne VoIP Administration Panel

NowclickGainControl.Thistaballowsustoadjustthevolumeofbothaudiooutputandaudioinput.
Thisismeasuredindecibels.Todecreasethevolume,weneedtoenternegativeaudiogainvalues,such
as2dBandsoon.Toincreasethevolume,putsomepositiveintegers.

VoIPCookbook:243

Figure 16.26: The Caller ID tab of LevelOne VoIP Administration Panel

NowclickCallerID.ChoosethesortofcallerIDyouwanttouse.

VoIPCookbook:244

Figure 16.27: Service Access tab of LevelOne VoIP Administration Panel

ClickServiceAccess,thelasttabunderSystemsubmenu.ServiceAccessallowsustodeterminewhich
interfacewillbeaccessiblethrooughLevelOneVOI2100administration.Thedefaultconfiguration
allowswebadministrationaccessthroughLANandWAN.

VoIPCookbook:245

Linksys SPA400 with four FXOs


IfyouneedmanyconnectionstoPSTN,oneofpossibleattractivealternativestobeusedisSPA400
whichhasfourFXOswhichcanbeconnecteddirectlytoPSTN.Inaddition,SPA400alsohasaUSB
storagetostorevoicemail.

Figure 16.28: Linksys SPA400 with Four FXOs

UsingtheSPA400withAsterisk
StepsthatneedtobecarriedouttolinkSPA400toAsteriskareasfollows:
ConfiguringtheSPA400IPaddress
ConfiguringSPA400IPaddress
ConfiguringAsteriskaccountinSPA400
Configuringsip.confinAsterisktohaveitregisteredtoSPA400
Conguringextensions.confinAsterisksoitdialoutusingSPA400
Makingalltheseconfigurationsisnotdifficultandcanbedonethroughtheweb.Thedefaultusername
isAdmin(Casesensitive)withoutapassword.
VoIPCookbook:246

Figure 16.29: The Setup tab of SPA400 VoIP Administration Panel

ToconfiguretheIPaddressofSPA400,clickSetupandunderthistab,clickBasicSetup.Donotuse
DynamicIPAddress,sinceAsteriskneedstoseekSPA400andregisteritselftoSPA400.Instead,
chooseFixedIPAddress.Ifnecessary,wecanalsosettheDNSandNTPserverweoftenuse.Obtain
theinformationonDNSserverfromyourinternetserviceprovider.ForNTPserver,typein
time.nist.govorpool.ntp.org.Afterallconfigurationiscompleted,clickSaveSettings.

VoIPCookbook:247

Figure 16.30: The Setup tab of SPA400 VoIP Administration Panel

Next,configuretheaccountsoeitherAsteriskorSPA9000willbeabletologintoSPA400.Thewayto
dothisistogointotheSetupmenuandclickSPA9000Interface.ChangetheuserIDtotheusername
weusetologin.Hereweuse9000asanexample.ThenchooseDiscoverAutomatically.Provided
thissettingworksproperly,youmaywanttochangethissettinginordertohaveamoresecure
connectivity,bysettingthevaluesofAsteriskservertomatchthoseofSPA400server.Onceeverything
iscompleted,clickSaveSettingstosavetheconfiguration.

ConfigureAsterisktotalktoLinksysSPA400
OnAsterisk/etc/asterisk/sip.conf,youneedtoconfiguretheaccountexactlysimilartoUserIDof
SPA400
Theentriesinsip.conftoenableAsteriskregistertoSPA400areasfollow:
[general]
register=>9000@192.168.0.6/9000
VoIPCookbook:248

Replace9000withthevalueyouenteredintheUserIDofSPA400,andreplace192.168.0.2withtheIP
addressoftheSPA400.
CreateaSIPentryforSPA400,withthefollowinginformation:
901user:UserIDofSPA400
902host:IPaddressofSPA400
903context:thecontextthatwillbeusedtohandleinboundcallsfromSPA400
SIPentrytoreceivecallsfromSPA400areasthefollowing:
[9000]
type=friend
user=9000
host=192.168.0.6
dtmfmode=rfc2833
canreinvite=no
context=fromtrunk
insecure=very
ToseewhetheryouareregisteredtoAsteriskornot,youcancarryoutthefollowingcommand:
localhost*CLI>sipshowregistry
HostUsernameRefreshState
192.168.0.6:50609000105Registered
InExtension.conffilewecanconfiguretheroutingfordialoutusingSPA400.Anexampleofageneric
configurationfordialoutroutebypressing9andenterSPA400FXOtrunkisasfollows:
[general]
Trunk=SIP/9000
TRUNKMSD=1
[trunkint]
;
;Internationallongdistancethroughtrunk
;
exten=>_9011.,1,Macro(dundie164,${EXTEN:4})
VoIPCookbook:249

exten=>_9011.,n,Dial(${TRUNK}/${EXTEN:${TRUNKMSD}})
[trunkld]
;
;Longdistancecontextaccessedthroughtrunk
;
exten=>_91NXXNXXXXXX,1,Macro(dundie164,${EXTEN:1})
exten=>_91NXXNXXXXXX,n,Dial(${TRUNK}/${EXTEN:${TRUNKMSD}})
[trunklocal]
;
;Localsevendigitdialingaccessedthroughtrunkinterface
;
exten=>_9NXXXXXX,1,Dial(${TRUNK}/${EXTEN:${TRUNKMSD}})
[trunktollfree]
;
;Longdistancecontextaccessedthroughtrunkinterface
;
exten=>_91800NXXXXXX,1,Dial(${TRUNK}/${EXTEN:${TRUNKMSD}})
exten=>_91888NXXXXXX,1,Dial(${TRUNK}/${EXTEN:${TRUNKMSD}})
exten=>_91877NXXXXXX,1,Dial(${TRUNK}/${EXTEN:${TRUNKMSD}})
exten=>_91866NXXXXXX,1,Dial(${TRUNK}/${EXTEN:${TRUNKMSD}})
NotethattheSPA400'saccountnumberinAsteriskis9000,thenumberweareusingasanexample.
Incomingcallroutingismorecomplex.Ifweassumetheincomingcallwillbeconnectedtoextension
200,thentheconfigurationisapproximatelyasfollows:
[fromtrunk]
include=>frompstn
...
[frompstn]
include=>frompstncustom
...
[frompstncustom]
exten=>9000,1,Goto(extlocal,200,1)
VoIPCookbook:250

ConnectPSTNusingLinksysSPA9000andLinksysSPA400
ConnectingPBXsoftswitchlikeLinksysSPA9000tothePSTNcanbecarriedoutinseveralways.One
ofthemistousetheLinksysSPA400asmediatortoPSTN.WhatyouhavetodoistomakeSPA400's
IPaddresstobefixed,enableUserIDtoregisteritselftoSPA400,enableSPA9000toregisteritselfto
SPA400,andenableSPA9000touseSPA400'strunkforPSTNcalls.SPA400configurationcanbe
donethroughtheweb,usingthegivendefaultusernamewithoutapassword.

Figure 16.31: The Setup tab of SPA400

ThroughtheSetupmenu,clickBasicSetup.HerewehaveconfigurefixedIPaddress,IPsubnetmask,
andgatewayIPaddress,informationonDomainNameServer(DNS)AddressandNTP.Forour
example,weuse202.134.2.5,202.46.3.178,andtime.nist.govforPrimaryDNS,SecondaryDNSand
NTPServer,respectively.

VoIPCookbook:251

Figure 16.32: The Setup tab of SPA400

ThroughtheSetupmenu,clickSPA9000Interface.Theconfigurationyouhavetodoisasthe
following:
CreateanaccountonSPA400suchthatSPA9000softswitchcanregister.

CreateanaccountinSPA400soasoftswitchlikeSPA9000canberegistered.
ConfigureSPA400soitwillknowtheIPaddressandportofthesoftswitch/SPA9000.Itis
recommendedthatyouchooseDiscoverAutomatically

VoIPCookbook:252

Figure 16.33: Voice Menu in SPA400

OntheSetupmenu,clickVoice.Herewecanconfigurethesortofcodecwewanttouseandother
settingparameterssuchasWaitforAnswertime.

VoIPCookbook:253

Figure 16.34: Menu Line Settings in Linksys SPA400

OntheSetupmenu,clickVoice.IntheLineSettingstab,youcanconfigurethetransmitgain,receive
gain,impedance,ringvoltage,onhookspeed,etc..Basically,wedonotneedtochangethesevaluesof
theseparameters,andsimplyusethedefaultvalues.

VoIPCookbook:254

Figure 16.35: Voicemail Menu in SPA400

ThroughtheSetupmenu,clicktheVoicemailServertab.Herewecansetsomeimportantparametersof
theVoicemailserver,suchas:

ServerPortdefault5090
SPA9000UserIDuserIDfortheSIPProxytoregistertoLinksysSPA400
SPA9000subscriberIDsubscriberIDfortheSIPProxytoobtainVoicemail
MailboxDepositNumberthenumberneededtoputvoicemail.Thedefaultvalueis900.
MailboxmanagenumberthenumberusedtomanageVoicemail.Thedefaultvalueis800.

VoIPCookbook:255

Figure 16.36: Voicemail User Menu in SPA400

OneofmanygreatthingsaboutSPA400isitscapabilitytostoreVoicemaildatainUSBstorage.
ThroughtheSetupmenuandVoicemailUsers,weconfiguretheuserandpasswordofourVoicemail.
Byclickingontheenableboxofanyuser,wecannowactivatethatuseraccount.

VoIPCookbook:256

Figure 16.37: The Administration tab of Linksys SPA400

GotoAdministration,thenclickManagement.Herewecanconfigureourusernameandpasswordfrom
GatewayAdministrator.ThedefaultusernameisAdmin,withoutapassword.

VoIPCookbook:257

Figure 16.38: The Status tab of Linksys SPA400

Throughthestatusmenu,youwillfindmoreinformationonSPA400operation,suchas,time,IP
address,subnet,gateway,DNS,USBdisketc.ThemostimportantparameteristheSIPRegistration
Status.ItindicatestheconditionoftheSIPProxyweuse:whetherSPA9000orAsteriskissuccessfully
registeredwithSPA400ornot.IftheSIPProxyissuccessfullyregisteredwithSPA400,youcanuse
SPA400asanAnalogTelephonyAdaptertocalltoTelkom.

VoIPCookbook:258

Figure 16.39: The Status tab of SPA400

Whileyouarestillinstatuspane,noticethatthereisalsothestatusforBatteryLevel.Thisshowsthe
voltageavailableatRJ11portofSPA400.IfitisconnectedtoyourPSTNprovider,thenthevoltage
normallyisabout45V.IfitisconnectedtoPABX,thevoltageexperiencedbytheRJ11portisaround
24V.Ifallportshavetheirvoltagelevel0V,thenSPA400,whenweattempttoplaceacall,willgeta
busysignal.

VoIPCookbook:259

ConfigureLinksysSPA9000totalktoLinksysSPA400

Figure 16.40: The Line 4 tab of SPA400

TohaveSPA9000capableofcommunicatingwithSPA400,youneedtoregistertheuserIDyouhave
setinSPA9000toSPA400.Gotoadminmenu,chooseAdvancedandchooseoneofthefourlines.
UndertheSubscriberInformation,youneedtosetthefollowingparameters:
DisplayNameaccordingtoSPA400.
DisplayNameaccordingtoSPA400
UserIDaccordingtoSPA400
Passwordjustleaveitblank
UserAuthIDshouldbeNo
ProxySPA400IPaddress
OutboundProxySPA400IPaddress

VoIPCookbook:260

CHAPTER 17: OpenBTS


OpenBTS(OpenBaseTransceiverStation)isa
softwarebasedGSMBTSthatallowsGSMmobile
phonetooperatewithoutusingcellullaroperator
infrastructure.OpenBTSisknowntobethefirstopen
sourceimplementationofindustrialstandardGSM
protocolstack.
TheheartofOpenBTSisanUniversalSoftware
RadioPeripheral(USRP).USRPmaybeobtained
fromEttushttp://www.ettus.com/products.TheestimatecostoftheUSRPhardwareneededfor
OpenBTSisaroundUS$15002500muchlowerthanthenormalcommercialGSMequipments.

Open GSM Infrastructure


OpenBTSreplacestraditionalGSMinfrastructure,especiallybehindtheBaseTransceiverStation
(BTS).Traditionally,trafficwillpassintoMobileSwitchingCenter(MSC).InOpenBTS,traffic
terminatedonthesameBoxandforwardthedatatoAsteriskIPPBXthroughSIPandVoiceoverIP
(VoIP).
ThereferenceAirInterface(Um)usessoftwaredefinedradio(SDR)onUniversalSoftwareRadio
Peripheral(USRP)USBboard.

History
TheprojectisstartedbyHarvindSamrahttp://www.linkedin.com/in/harvindsamraandDavidA.
Burgesshttp://ecommconf.com/2009/speakers/davidburgess/.Theaimoftheprojectistoreducethe
GSMcostinruralanddevelopingcountriestobeunderUS$1/month/subscriber.

Field Test
FieldtestisdoneinNevadaandNorthCalifornia,US.Temporaryradiolicenseforashortperiodis
obtainedthroughKestrelSignalProcessing(KSP)usedtobeaconsultingfrimofthedeveloperof
OpenBTS.
VoIPCookbook:261

Niue
In2010,anOpenBTSispermanentlyinstalledinNieuanditisforthefirsttimeacellularBTS
connectedtothelocaltelecommunicationoperator.Niueisasmallcountrywith1700inhabitantamd
notsomuchattractingmobileoperator.CoststructureofOpenBTSfitstoNiuewhichunabletoprocure
theconventionalGSMBaseStation.

GNURadio
Referencehttp://gnuradio.org/redmine/wiki/gnuradio/UbuntuInstall.Theneededdevelopmenttoolsare:

g++
subversion
make
autoconf,automake,libtool
sdcc
guile
ccache

Theneededlibraryforruntimeandcompilationprocessesare

pythondev
FFTW3.X(fftw3,fftw3dev)
cppunit(libcppunitandlibcppunitdev)
Boost1.35(orlater)
libusbandlibusbdev
wxWidgets(wxcommon)andwxPython(pythonwxgtk2.8)
pythonnumpy(viapythonnumpyext)(forSVNonorafter2007May28)
ALSA(alsabase,libasound2andlibasound2dev)
Qt(libqt3mtdevforversionsearlierthan8.04;version4worksfor8.04andlater)
SDL(libsdldev)
GSLGNUScientificLibrary(libgsl0dev>=1.10requiredforSVNtrunk,notinbinary
repositoriesfor7.10andearlier)

VoIPCookbook:262

LibraryInstallation
Update
sudoaptgetupdate
ForMaverick(Ubuntu10.10)wecanusethefollowingcommand
sudoaptgetyinstalllibfontconfig1devlibxrenderdevlibpulsedevswigg++automake\
libtoolpythondevlibfftw3devlibcppunitdevlibboostalldevlibusbdevfort77sdcc\
sdcclibrarieslibsdl1.2devpythonwxgtk2.8subversiongitcoreguile1.8dev\
libqt4devpythonnumpyccachepythonopengllibgsl0devpythoncheetahpythonlxml\
doxygenqt4devtoolslibqwt5qt4devlibqwtplot3dqt4devpyqt4devtools\
libpcre3libpcre3dbglibpcre3devlibpcrecpp0

WxWidgetInstallation
Althoughthisseemstobenotcritical.ThosewhowishtoinstallthelatestWxWidgetcanfollowthe
followingcommand.
Edit/etc/apt/sources.list

#wxWidgets/wxPythonrepositoryatapt.wxwidgets.org
debhttp://apt.wxwidgets.org/DISTwxmain
debsrchttp://apt.wxwidgets.org/DISTwxmain

Anexampleforgutsy

#wxWidgets/wxPythonrepositoryatapt.wxwidgets.org
debhttp://apt.wxwidgets.org/gutsywxmain
debsrchttp://apt.wxwidgets.org/gutsywxmain

Doupdate
sudoaptgetupdate
Install
VoIPCookbook:263

sudoaptgetinstallpythonwxgtk2.8pythonwxtoolswx2.8i18n
sudoaptgetinstallpythonwxgtk2.8pythonwxtoolswx2.8i18nlibwxgtk2.8devlibgtk2.0dev

SWIGInstallation
TomanuallyinstallSWIG,weneedtodownloadthesourcecodefrom
http://sourceforge.net/projects/swig/files/swig/
Thendothefollowings
cpswig2.0.1.tar.gz/usr/local/src/
cd/usr/local/src/
tarzxvfswig2.0.1.tar.gz
cd/usr/local/src/swig2.0.1/
./configure
make
makeinstall

QWTInstallation
TomanuallyinstallQWT,weneedtodownloadthesourcecodefrom
http://sourceforge.net/projects/qwt/files/
Thendothefollowings
cpqwt5.2.1.tar.bz2/usr/local/src/
cd/usr/local/src/
tarjxvfqwt5.2.1.tar.bz2
cd/usr/local/src/qwt5.2.1/
qmake
make
makeinstall
Forthosewhobravemayusethebetaversionsuchas
cpqwt6.0.0rc5.tar.bz2/usr/local/src/
cd/usr/local/src/
VoIPCookbook:264

tarjxvfqwt6.0.0rc5.tar.bz2
cd/usr/local/src/qwt6.0.0rc5
qmake
make
makeinstall

GNURadioInstallation
Downloadthesourcecodefrom
http://gnuradio.org/redmine/wiki/gnuradio/Download
compilethesourcecode
cpgnuradio3.3.0.tar.gz/usr/local/src/
cd/usr/local/src/
tarzxvfgnuradio3.3.0.tar.gz
cd/usr/local/src/gnuradio3.3.0/
./configure
make
makecheck
makeinstall

USRPHandling
Ubuntuusesudevtohandlehotplugdevices,andbydefaultgivenoaccesstononroottoUSRP.The
followingscriptwillgiveaccesstousertohandelUSRPviaUSBforeitherliveorhotplug.
sudoaddgroupusrp
sudousermodGusrpa<YOUR_USERNAME>
echo'ACTION=="add",BUS=="usb",SYSFS{idVendor}=="fffe",
SYSFS{idProduct}=="0002",GROUP:="usrp",MODE:="0660"'>tmpfile
sudochownroot.roottmpfile
sudomvtmpfile/etc/udev/rules.d/10usrp.rules
Atthispoint,UbuntuhasbeenconfiguredtoknowwhatitshoulddowhendetectingUSRPintheUSB.
"udev"mustbereloadrulestoloadournewrules.Thefollowingsmaydothetrickwithoutbootingthe
VoIPCookbook:265

computer.
or

sudoudevadmcontrolreloadrules
sudo/etc/init.d/udevstop
sudo/etc/init.d/udevstart

or

sudokillallHUPudevd

WemaycheckifUSRPhasbeenrecongizedbymonitoring/dev/bus/usbafterUSRPispluggedusing
thefollowingcommand
lslR/dev/bus/usb|grepusrp
weshouldseesomethinglike
crwrw1rootusrp189,12010120917:38002
EverytimeUSRPispluggeditwillberegisteredingroup'usrp'andmode'crwrw'.

USRPVerification
NextweneedtoverifywetherGNURadiocanworkproperlywithUSRP.Atthispointweneedto
connectUSRPtocomputer.
ChecktheUSBspeedtoUSRP
cd/usr/local/src/gnuradio3.3.0/gnuradioexamples/python/usrp
./usrp_benchmark_usb.py
Wewillseesomethinglike
Testing2MB/sec...usb_throughput=2M
ntotal=1000000
nright=999918
runlength=999918
delta=82
OK
VoIPCookbook:266

Testing4MB/sec...usb_throughput=4M
ntotal=2000000
nright=1999492
runlength=1999492
delta=508
OK
Testing8MB/sec...usb_throughput=8M
ntotal=4000000
nright=3998860
runlength=3998860
delta=1140
OK
Testing16MB/sec...usb_throughput=16M
ntotal=8000000
nright=7997680
runlength=7997680
delta=2320
OK
Testing32MB/sec...usb_throughput=32M
ntotal=16000000
nright=15995986
runlength=15995986
delta=4014
OK
MaxUSB/USRPthroughput=32MB/sec
C++interfacetoUSRP,provideestimatemaximumthroughputbetweenPCandUSRP
cd/usr/local/src/gnuradio3.3.0/usrp/host/apps
./test_usrp_standard_tx
./test_usrp_standard_rx
TypicalresultfromUSRP_standard_txtest
which:0
interp:16
rf_freq:1
amp:10000.000000
nsamples:3.2e+07
VoIPCookbook:267

SubdevicenameisFlex900TxMIMOB
Subdevicefreqrange:(7.5e+08,1.05e+09)
mux:0x000098
basebandrate:8e+06
target_freq:900000000.000000
ok:true
r.baseband_freq:904000000.000000
r.dxc_freq:4000000.000000
r.residual_freq:0.000000
r.inverted:0
tx_underrun
tx_underrun
tx_underrun
tx_underrun
tx_underrun
tx_underrun
tx_underrun
tx_underrun
tx_underrun
xfered3.2e+07bytesin1.01seconds.3.154e+07bytes/sec.cputime=0.16
9underruns
TypicalresultfromUSRPstandardRXtest
xfered1.34e+08bytesin4.19seconds.3.2e+07bytes/sec.cputime=0.8681
noverruns=0
Ifneeded,wecanupgradethewholesystem
sudoaptgetyupgrade
Thenrebootandupgradethedistro
sudoaptgetydistupgrade

VoIPCookbook:268

OpenBTS Installation
BeforewedoOpenBTSinstallation,weneedtocompileandinstallGNURadio.WithoutGNURadio
installed,OpenBTSmaynotbeinstalled.Weneedtoinstalladditionallibrary
aptgetinstalllibosip24libosip2devlibortp8libortpdev
Downloadthesourcecodefrom
http://www.openbts.org
http://sourceforge.net/projects/openbts/
Thendothefollowings
cpopenbts2.6.0Mamou.tar.gz/usr/local/src/
cd/usr/local/src/
tarzxvfopenbts2.6.0Mamou.tar.gz
cd/usr/local/src/openbts2.6.0Mamou/
./configure
make
makeall
makeinstall
OpenBTSiscompiledandinstalled.ToenableSMSfacilityinOpenBTS,weneedtocompilethe
smqueueseparately.Forstrangereason,weneedtoinstallg++4.3tocompilesmqueue
aptgetinstallg++4.3
EditMakefile.standalonefileofsmqueue
vi/usr/local/src/openbts2.6.0Mamou/smqueue/Makefile.standalone
Replacetheg++
g++osmqueue$(CPPFLAGS)$(INCLUDES)smqueue.cppsmnet.cppsmcommands.cpp
../HLR/HLR.cpp$(LIBS)
to
VoIPCookbook:269

g++4.3osmqueue$(CPPFLAGS)$(INCLUDES)smqueue.cppsmnet.cpp
smcommands.cpp../HLR/HLR.cpp$(LIBS)
Compilesmqueue
cd/usr/local/src/openbts2.6.0Mamou/smqueue/
makefMakefile.standalone
Ifweuseg++4.4wewillseethefollowingerror
smnet.cpp:423:error:invalidconversionfromconstchar*tochar*
make:***[smqueue]Error1
CompilationofsmqueueofOpenBTSisdone.

A Glimpse on OpenBTS Configuration


SomespecificationofOpenBTSconfiguration
AsteriskConfig
CommonLib
Control
GSM
SIP
SMS
TRXManager
Transceiver
apps
doc
tests
smqueue

AsteriskconfigurationfilesforusewithOpenBTS.
Commonuselibraries,mostlyC++wrappersforbasicfacilities.
ControllayerfunctionsfortheprotocolsofGSM04.08andSIP.
TheGSMstack.
ComponentsoftheSIPstatemachinesuedbythecontrollayer.
TheSMSstack.
TheinterfacebetweentheGSMstackandtheradio.
Thesoftwaretransceiverandspecificinstallationtests.
OpenBTSapplicationbinaries.
Projectdocumentation.
TestfixturesforsubsetsofOpenBTScomponents.
RFC3428storeandforwardserverforSMS

OpenBTSassumethefollowingUDPport
5060AsteriskSIPinterface
5061localSIPsoftphone
5062OpenBTSSIPinterface
VoIPCookbook:270

5063smqueueSIPinterface
5700rangeOpenBTStransceiverinterface
Theseportscansetviaconfigurationfileapps/OpenBTS.config.ForthosewhodoOpenBTSinstalltion
forthefirsttime,needtocopyOpenBTS.configfile
cd/usr/local/src/openbts2.6.0Mamou/apps
cpOpenBTS.config.exampleOpenBTS.config
Ifneeded,wecanedittheconfigurationfile
vi/usr/local/src/openbts2.6.0Mamou/apps/OpenBTS.config
Mostofthedefaultparametermaybeusedasitis.Sometimes,weneedtochangethenetwork
informationsuchas
#Networkandcellidentity.
#NetworkColorCode,07
#AlsosetGSM.NCCsPermittedlaterinthisfile.
GSM.NCC0
#BasesationColorCode,07
GSM.BCC2
#MobileCountryCode,3digits.
#MCCMUSTBE3DIGITS.Prefixwith0sifneeded.
#Testcodeis001.
GSM.MCC001
#MobileNetworkCode,2or3digits.
#Testcodeis01.
GSM.MNC01
#LocationAreaCode,065535
GSM.LAC1000
#CellID,065535
GSM.CI10

VoIPCookbook:271

smqueue Configuration
DisableIPv6byediting/etc/default/grubchange
GRUB_CMDLINE_LINUX_DEFAULT=quietsplash
into
GRUB_CMDLINE_LINUX_DEFAULT=ipv6.disable=1quietsplash
Aftersaveandexit,updategrubusing
sudoupdategrub
Editsmqueueconfiguration,copysmqueue.config.exampletosmqueue.config
cd/usr/local/src/openbts2.6.0Mamou/smqueue/
cpsmqueue.config.examplesmqueue.config
smqueueconfigfileisin./smqueue/smqueue.config.
vi/usr/local/src/openbts2.6.0Mamou/smqueue/smqueue.config
addtotheconfigfilethefollowingcommandtolimitalarmforSMSregistration
Log.Alarms.Max10
createsavedqueue.txtin./smqueuedirectory
touch/usr/local/src/openbts2.6.0Mamou/smqueue/savedqueue.txt
Runsmqueue
sudosu
cd/usr/local/src/openbts2.6.0Mamou/smqueue/
./smqueue&
Ifitrunscorrectly,wewillseesomethinglike
VoIPCookbook:272

1296968828.6030INFO3077809872smnet.cpp:319:listen_on_port:Listeningataddress'0.0.0.0:5063'.
1296968828.6045INFO3077809872smqueue.cpp:2222:main:MyownIPaddressisconfiguredas127.0.0.1
1296968828.6045INFO3077809872smqueue.cpp:2223:main:TheHLRregistryisat127.0.0.1:5060
1296968828.6046INFO3077809872smqueue.cpp:2110:read_queue_from_file:===Read0messagestotal,0badones.
1296968828.6047INFO3077809872smqueue.cpp:2230:main:Queuecontains0msgs.
1296968828.6048INFO3077809872smqueue.cpp:1852:main_loop:===Feb612:07:080queued;waiting.

Small Kludge in smqueue :(


WestillhavealotofproblemintheSMS.Tomakethings"easier"itmightbehelpfullintheregistration
processifwecouldeditthesubscribertableinsmqueue.cppsuchas
cd/usr/local/src/openbts2.6.0Mamou/smqueue
vismqueue.cpp
suchthat

/*====FIXMEKLUDGE====
*TableofIMSIsandphonenumbers,fortranslation.
*Thisisonlyfortestbenchuse.ReallifeusestheHomeLocation
*Register(../HLR),currentlyimplementedviaAsterisk.
*/
static
structimsi_phone{charimsi[4+15+1];charphone[1+15+1];}imsi_phone[]={
{"IMSI666410186585295","+17074700741"},/*Nokia8890*/
{"IMSI777100223456161","+17074700746"},/*PalmTreo*/
{"IMSI510110301694405","2101"},/*Bob*/
{"IMSI238209700014858","2102"},/*SB*/
{"IMSI310260254136340","2103"},/*Steve*/
{"IMSI520189606386106","2104"},
{{0},{0}}
};

Asterisk Configuration to work with OpenBTS


IntegrationOpenBTStoAsteriskisprincipallyverysimple.EverySIMcardmaybeconfiguredasSIP
userusingIMSIasusername.ProcesstoaddOpenBTSsubscriberthroughthefollowingtwosteps:
1. GetIMSIfromtheSIM.ThisisimplementedbysendingSMSasmobilephoneconnectto
VoIPCookbook:273

OpenBTS.
2. Editsip.confandextensions.conftosupportthenewSIPuser.
Thus,inprincipal,thereisnotmuchtoconfigureAsterisktobeabletotalktoOpenBTS.Weneedto
edit
/etc/asterisk/sip.conf
/etc/asterisk/extensions.conf
ExampleofAsteriskConfigurationcanbefoundin
/usr/local/src/openbts2.6.0Mamou/AsteriskConfig
Exampleof/etc/asterisk/sip.confisasfollows
[IMSI510110301694405]
callerid=2101
canreinvite=no
type=friend
callerid=2101
;context=sipexternal
allow=gsm
host=dynamic
[IMSI520010104743577]
callerid=21011
canreinvite=no
type=friend
allow=gsm
context=sipexternal
host=dynamic
Exampleof/etc/asterisk/extensions.confisasfollows
exten=>2101,1,Dial(SIP/IMSI510110301694405,60,rt)
exten=>2102,1,Dial(SIP/IMSI238209700014858,60,rt)
exten=>2103,1,Dial(SIP/IMSI310260254136340,60,rt)

VoIPCookbook:274

IMSI520154100006647isobtainedfromtheSMSreceivedbytheOpenBTSuser.

AutomaticSIMRegistration
Asmentionathttp://gnuradio.org/redmine/wiki/gnuradio/OpenBTSThe_use_of_autocreatepeer=yeswe
mayaddsomeparametersin/etc/asterisk/sip.conftoenableautomaticSIMregistration
[general]
allowoverlap=no;Disableoverlapdialingsupport.(Defaultisyes)
bindport=5060;UDPPorttobindto(SIPstandardportis5060)
bindaddr=0.0.0.0;IPaddresstobindto(0.0.0.0bindstoall)
srvlookup=yes;EnableDNSSRVlookupsonoutboundcalls
;lineuntukautomaticsimregistration
autocreatepeer=yes
canreinvite=no
calllimit=1
type=friend
allow=gsm
context=sipinternal
host=127.0.0.1;assumingOpenBtsandAsteriskrunonthesamemachine
Wecanexpandthecapabilityofasterisktorecognizenumbersusingcountrycodelike+62XXXusing
ENUM.

OpenBTS Operation
TooperateOpenBTSwecanfollowthefollowingsteps.
ChektheconnectionbetweenOpenBTSandUSRP.ThiscanbedoneusingUSRPpingasfollows
cd/usr/local/src/openbts2.6.0Mamou/Transceiver
./USRPping
AssumingAsteriskiscorrectlyconfigure,wecanrunitvia

VoIPCookbook:275

asterisk
or

/etc/init.d/asteriskrestart

Runsmqueue
sudosu
cd/usr/local/src/openbts2.6.0Mamou/smqueue/
./smqueue&
RunOpenBTS
cd/usr/local/src/openbts2.6.0Mamou/apps
./OpenBTS
WeneedtocopyOpenBTS.config.exampletoOpenBTS.configifwerunitforthefirsttimebeforerun
OpenBTS.
cd/usr/local/src/openbts2.6.0Mamou/apps
cpOpenBTS.config.exampleOpenBTS.config
./OpenBTS
Usingalldefaultvalues,withnomodification,wecanoperateOpenBTS.

VoIPCookbook:276

CHAPTER 18: Peering Among Providers


ThereareactuallyplentyoffreeserviceslikeVoIPRakyatacrosstheworld.Mostoftheseservicesare
interconnectedthroughabrokerfacilityrunbyaSIPBrokerhttp://www.sipbroker.com.SIPBroker
functionsasanSIPinternetexchangewhereallSIPaccountproviderssharetheirtraffic.SIPBroker
providesareacodeforeachofthem,allowingthemtobeconnectedtoeachother.Inshort,thosewho
haveaccountinVoIPRakyatcanalsocommunicatewithotherswhoownaccountindifferentservers.
AcompletelistofmorethanathousandofavarietyofSIPaccountprovidersworldwidecanbefound
intheSIPBroker'swhitepagesfromthefollowingURL:
http://sipbroker.com/sipbroker/action/providerWhitePages.
Noticethattherearesomeimportantinformationontheproviders,suchas,ProviderName,somewith
theirURL;SIPProxy,theSIPserverinuse;Areacode,orbetterknowninSIPBrokerterminologyas
SIPCode.AlsolistedinsuchalistisVoIPRakyat'sareacode,whichis*536.Thismeansthatother
SIPproviderswillingtoconnecttoVoIPRakyathavetoaddthe*536codeasaprefixpreceedingVoIP
Rakyat'sSIPaccountnumber.Forexample,ifaSIPproviderwishestocallsomeoneinVoIPRakyat
whoseSIPaccountnumberis20123,thenuserofsuchprovidershoulddial*53620123insteadof
20123.

VoIPCookbook:277

Figure 18.1: Through SIPbroker.com you can find a number of SIP providers with their respective proxy.
The site also indicates which provider is active and is not active

VoIPCookbook:278

Free SIP Proxy Servers


TherearealsootherfreeSIPProxyproviderswecanconnecttothroughSIPBroker.Someofwhich
are,suchas:
AreaCode
*201
*208
*211
*234
*247
*258
*269
*272
*320

SIPProxy
voip.brujula.net
sip.faktortel.com.au
sipgate.co.uk
sip.pennytel.com
sip.freshtel.net
voiptalk.org
sip03.astrasip.com.au
sip2.bbpglobal.com
sip.sipme.com.au

URLforregistration
http://voip.brujula.net/english/
http://www.faktortel.com.au/
http://www.sipgate.co.uk/user/index.php
http://www.pennytel.com/
http://www.freshtel.net/
http://www.voiptalk.org/products/index.php
http://www.astratel.com.au/
http://www.bbpglobal.com/global/
http://www.sipme.com.au/

Becoming a Peer in SIP Network


Ifyou'reoperatingyourownsoftswitchusingthepublicIPaddress,youcanregisterwithSIPBroker
forfreeinordertoobtaintheareacodeoftheSIPBrokersothatyoucanbecalledbyotherVoIP
network.Theprocedureyouhavetodoisasthefollowing:createanaccountinSIPBrokerat
http://www.sipbroker.com/sipbroker/action/memberRegister,andregisteryourSIPProxythroughSIP
Brokerathttp://www.sipbroker.com/sipbroker/action/providerWhitePages.EnteryourSIPProxyinthe
providedblanksandclicktheSavebutton.
TheprocessofcreatinganaccountatSIPBrokerisnotdifficult.Allyouhavetodoistoselectthe
menuformemberregistration.

VoIPCookbook:279

Figure 18.2: Through SIPbroker.com you can find a number of SIP providers with their respective proxy.
The site also indicates which provider is active and is not

Inthememberregistrationmenu,youonlyhavetoentertheinformationpertainingtotheSIPURL
(suchas20123@voiprakyat.or.id),thepassword,emailaddresstoregisteryourselftotheSIPBroker
throughhttp://www.sipbroker.com/sipbroker/action/memberRegister.

VoIPCookbook:280

CHAPTER 19: Internet Telephony Bandwidth


InVoIP,Voicequalityisimportant,asitwilldeterminehowclearthevoiceinagivenphone
conversation.Suchqualityisdependentonanumberofthings:thecompressiontechniquebeingused
(Codec),theamountofpacketlossoccurringinagivennetwork,andbandwidthavailability.Sothereis
anumberofthingsyouneedtotakeintoaccountwhenplanningyourVoIPnetwork.Withthese
information,youwillknowwhetherthebandwidthyouhaveissufficientforyourcommunication.

Coding Decoding (CODEC)


Ifyouwanttoknowhowavoiceproducedbyacodecsoundslike,youcanlistentoa8Kbpsmono
WAV,whichcanbedownloadedfromhttp://www.signalogic.com/index.pl?page=codec_samples.
Questionoftenaskedwhenusingthisserviceishowmuchbandwidthiscunsumed.Whenidle,the
systemdoesnotneedlargeamountofbandwidth,butwhenyoucommunicate,thebandwidthneeded
couldbeasbigas32kbpsupand32kbpsdownperchannel(1communicationsession),depending
whichcodecisbeingused.
Thereisanumberofcodecsused:
Codec

Bandwidthconsumption

GIPS

13.3Kbpsorhigher

GSM

13Kbps(fullrate),20msframesize

iLBC

15Kbps,20msframesize,13.3Kbps,30
msframesize

ITUG.711

64Kbps,samplebasedisalsoknownas
alaw/ulaw

ITUG.722

48/56/64Kbps

ITUG.723.1

5.3/6.3Kbps,30msframesize

ITUG.726

16/24/32/40Kbps

ITUG.728

16Kbps

ITUG.729

8Kbps,10msframesize

Speex

2.15to44.2Kbps

VoIPCookbook:281

LPC10

2.5Kbps

DoDCELF

4.8Kbps

Thenextquestionwouldbewhichcodecisthemostsuitableforaprovider?Theanswerdependsonthe
amountofbandwidthyouhave.Ifyouhaveamaximumbandwidthof32Kbpsbothupanddownfora
VoIPtraffic,itisrecommendedthatyouuseGSMoriLBCasyourcodec.Ontheotherhand,ifthe
amountofbandwidthishigher,say,higherthan128Kbps,youcanuseG711u(PCMU),whichwill
increasethevoicequalityinacommunicationsession,withclearervoiceandlowerdelay.Othercodec
thatcouldproduceoptimalresultistheG.729Codec.Unfortunately,itisaproprietarycodecwhichis
notfavourableforthosewhouseopensourceplatform.
ThemostcommonlyusedcodecsaretheG.729,GSM,andG.711.Ofthese,theG.711isfavorableasit
deliversgoodqualityinLANnetwork,GSMispreferredbyopensourceusersasGSMisnot
copyrighted,whilemanyVoIPdevicesuseG.729fortheircodec,theonewhichiscopyrighted.

Mean Opinion Score (MOS)


Tofindouthowgoodyourvoicequalityis,youcanmeasureitintermsofMeanOpinionScore(MOS)
andRFactor,bothofwhicharetheunitmeasurementderivedfromtheusersperceptiononthevoice
theyhear.MOScanbefoundathttp://www.voiptroubleshooter.com/diagnosis/emodel.html.Belowwe
haveprovidedyouwithexamplesofMOSmeasurementsbasedonanumberofCodecs.
User'sopinion
MaximumvaluesobtainedbyG.711
Highlysatisfactory
Satisfactory
Good
Unasatisfactory
Poor
Notrecommended

RFactor
93
90100
8090
7080
6070
5060
050

MOSScore
4.4
4.35.0
4.04.3
3.64.0
3.13.6
2.63.1
1.02.6

MOS Score and R Factor are measured


based on users' experience on a communication session

VoIPCookbook:282

Figure 19.1: VoIP Quality and Bandwidth Calculator.

Enteringothertypesofcodecandvaluespertainingtoourbandwidthforeverycodec,weobtainedthe
followingMOSandRFactorcalculation:
Codec

Frame

MOS

RFactor

Kbps

20ms
20ms

Packet
Loss
0%
0%

G.711
G.723
5kbps
G.723
6kbps
G.729

4.4
3.8

93
74

80.8
16.5

20ms

0%

4.0

78

17.5

20ms

0%

4.1

83

24.8

VoIPCookbook:283

MOS and R Factor values for G.711, G.723, and G.729


TheeffectcausedbypacketlossoccurringinagivennetworkwillmaketheMOSandRFactorvalue
decreasing,asshownontableabove.Thehigherthepacketloss,thelowerthevalueofMOSandR
Factor.
Codec

Frame

G.729
G.729
G.729
G.729

20ms
20ms
20ms
20ms

Packet
Loss
0%
5%
10%
20%

MOS

RFactor Kbps

4.1
3.3
2.7
1.9

83
64
52
37

24.8
24.8
24.8
24.8

Typically,theframesizeusedformeasurementis20ms,withthebandwidtharound25Kbps.The
longerthelengthofpayloadorvoiceframesize,thelessbandwidthisneededbecausetheoverhead
protocolissmaller.
Codec

Frame

G.729
G.729
G.729
G.729
G.729

2.5ms
5ms
10ms
20ms
30ms

Packet
Loss
0%
0%
0%
0%
0%

MOS

RFactor

Kbps

4.1
4.1
4.1
4.1
4.1

83
83
83
83
83

41.6
41.6
41.6
24.8
19.2

VoIPCookbook:284

Calculating The Required Bandwidth

Figure19.2:BandwidthCalculatoratAsteriskGuru.
ToestimatetheamountofbandwidthconsumedbyaCodec,useAsteriskGuru'stools,whichis
availableathttp://www.asteriskguru.org/tools/bandwidth_calculator.php.Thistoolenablesusto
calculatetheamountneededbyavarietyofCodecsinrespecttoacertainnumberofcallstakingplace
simultaneously.TheresultingcalculatedvalueswillbeshownasIncomingandOutgoingbandwidth.

VoIPCookbook:285

AnexampleofcalculatedrequiredbandwidthforGSMandG.729Codecisshowninthefollowing
table
Numberof
calls
1
2
3
4
5
6

GSM
Incoming
(Kbps)
28.63
57.25
85.88
114.50
143.13
171.75

Outgoing
(Kbps)
28.63
57.25
85.88
114.50
143.13
171.75

G.729
Incoming
(Kbps)
23.63
47.25
70.88
94.50
118.13
141.75

Outgoing(Kbps)
23.63
47.25
70.88
94.50
118.13
141.75

Sosupposeyourbandwidthcapacityis64KbpsandtheCodecyouuseisG.729.Thenthemaximum
numberofVoIPcallsyoucanhaveforoptimalvoicequalityistwo.Thisisofcourseassumingthatthe
Internetisnotbeingusedforothertraffic,suchas,email,browsing,chattingordownloading.
AmuchmoredetailedcalculationofaVoIPpacketcanbelookedat
http://www.packetizer.com/voip/diagnostics/bandcalc.html.Byusingthistool,wecanseethe
bandwidth,packetrate,delayandevenperformance.Theparametersusedtoderivethecalculationare
Payload(Codec),typeofprotocolandwhetherwewanttouseSilenceSuppression.IfyoutickSilence
Suppression,theaverageofbandwidthorpacketdeliveredwillbecomesmaller.
Fromallofthesecalculations,wecandeduceatleasttwothings:

Thesmallerthebandwidth,thelargertheMegaInstructionPerSecond(MIPS)requiredto
operateinaprocessor.Todaythismightnotbeaproblem,giventhathighspeedprocessorsare
nowlargelyavailableataffordableprice.
Thesmallerthebandwidth,thehigherthedelayprocess.Thisisrelatedtotheneedstoprocess
highvoicecompression.

VoIPCookbook:286

Figure19.3:MoreDetailedBandwidthCalculatoratPacketizer.
Therearemoreinterestingthingswecanconcludefromthesecalculation.Werecommendthatyou
spendmoretimeusingthetoolsothatyouwillunderstandavarietyofeffectsoccurringinVoIP
communicationsession.

VoIPCookbook:287

Calculation for Call Center


UnlikeanetworkservingsmallnumberofVoIPcalls,acallcenterisoftenusedtoaccommodateahigh
numberofcallsservedbyagivennetwork,thusrequiringamuchmoresophisticatedcalculationand
planningtools.ACallCentercantypicallybeabank,travelagent,ticketreservationorevenamobile
operator.Soifyouintendtoestablishacallcenter,pleasevisithttp://www.erlang.com/calculator/call/
tocalculatehowmuchbandwidthneeded.

Figure19.4:CallCenterCalculatoronErlang.com
Whatwehavetofillinasparameterarethelengthofcalls(seconds),resolvingtime(seconds),
percentageofcallsansweredwithinseconds,andpercentageofcallsthatwillbeblocked.Blockedcalls
willreceivebusytone,asignindicatingthatalllinesarebusy.Afterallparametersarefilledin,we
VoIPCookbook:288

needtoenterthenumberofcallscominginanhour.Basedonthevaluesweentered,wewillobtain
simulationresultshowinghowmanyagentsandlinesareneededtorespondtothecalls.
Thenextstepistoestimatehowmuchbandwidthisneededforaspecificnumberoflinesoranumber
ofminutes,inagivenpercentageofcallsthatwillbeblockedandreceivingbusytone.Thisisoften
measuredusingErlangTrafficModelintermsofErlangs,theunitrepresentingusageofavoice
channel.ErlangsTrafficModelmeasurementisveryimportanttohelpyoubeingatelecommunication
networkengineertounderstandthetrafficpatternandnetworktopologynecessarytodeterminethesize
oftrunkgroup.Inaddition,themeasurementcanalsobeusedtodeterminethenumberoflinesneeded
betweenatelephonenetworkorsystemandtelephonecenter,orbetweennetworklocations.
InpracticeErlangscanbeusedtogiveanoverallpictureoftrafficvolumeinanhour.Forexample,a
usergroupmakes30callsinanhour,andeverycallhasanaveragetalkingdurationof5minutes,then
theErlangsresultingfromthetrafficthattakesplaceis:
Trafficminutesinagivenhour

= Numberofcallxduration

Trafficminutesinagivenhour

= 30x5

Trafficminutesinagivenhour

= 150

Traffichoursinagiventime

= 150/60

Traffichoursinagiventime

= 2.5

Trafficsize

= 2.5Erlangs

ThesizeoftrafficisalsocalledBusyHourTraffic(BHT).TheBusyHourFactorparameterisa
percentageofdailyminutesofcallsmadeduringthemostbusyhourinagivenday.
InadditiontoErlangs,thereisalsoblocking.Blockingrepresentsunsuccessfulcallsbecauseof
insufficientnumberoflines.Inotherwords,thecallerwillreceiveabusytonefromthecenterasall
lines/trunksarebeingused.0.01blockingimpliesthat1%ofcallsmadewillbeblocked.Thisdecimal
numberisusuallyusedintraffictelecommunicationengineering.Inanumberofapplications,blocking
upto0.03(3%)isstilltolerable.Sothisnumbershouldideallybeassmallaspossible.
Itappearsthatthemorewetoleratethenumberofblockedcalls,themoreminutesperdaywewill
have.However,themorecallstakeplaceduringpeakhoursorwhenbusyhourfactorincreases,theless
numberofminutesperdaywewillhave.
NowthatyouknowwhatErlangTrafficModelmeasurementis,youcanplanyourconnectivity
capacityforyourcallcenter,usinganumberofmeasurementtoolsavailableat
VoIPCookbook:289

http://www.voipcalculator.com/calculator/.

VoIP Capacity Planning

Figure19.5:ErlangsandLinesCalculator.
ByusingErlangsandLinesCalculator,youcanobtainthenumberofBusyHourTraffic(BHT)ofa
numberoflines.Inourexample,wesimulate2,4and8voicepathsfacilitatedby64Kbpsconnectivity
withsomeBlockingvalues.Thecalculationresultcanbeseenatthefollowingtable:
VoicePath Blockin
g
2
0.01

BHT
(Erlangs)
0.15
VoIPCookbook:290

2
2
4
8

0.03
0.10
0.01
0.01

0.25
0.55
0.85
3.10

Figure19.6:ErlangsandBandwidthCalculator.
Thiscalculatorcanbeusedtoestimatetheamountofbandwidthrequiredtodeliverthetraffic,when
theBusyHourTrafficisknown.ByusingErlangsandbandwidthcalculator,wecanobtainthenumber
ofBusyHourTraffic(BHT)ofagivenCodec.Supposewerunthesimulationusingavarietyof
bandwidthvaluesandG.729Codec;wewillobtainthefollowingresult:
Bandwidth

Blocking

VoicePath

BHT
VoIPCookbook:291

(kbps)
64
64
64
128
256
512

0.01
0.03
0.10
0.01
0.01
0.01

2
2
2
5
10
21

(Erlangs)
0.15
0.25
0.55
1.35
4.45
12.80

Figure19.7:MinutesandLinesCalculator.
TheMinutesandLinesCalculatorallowsustoestimatehowmanyvoicechannelsareneededfora
givenminutesofcallsonthenetwork.Anetworkplannermustmakesurethatthenetworkhas
sufficientbandwidthtoaccommodatecommunicationsessionatpeakhours.AsshownintheFigure,
TheBusyHourFactorparameterisapercentageofdailyminutesofcallsmadeduringthemostbusy
VoIPCookbook:292

hourinagivenday.Thedefaultvalue17%isanacceptablepercentageforanofficeoperating8hours
perday.Thepercentageisnormallyhigherforanofficeoperatinginlessnumberofhours,oranoffice
thatoftenplacescallsinadifferenttimezone.
ThefollowingistheresultofcalculationforaADSLchannelcapableoffacilitatingonlytwochannels:
Voice
Channel
2
2
2
2
2
2

Blockin
g
0.01
0.03
0.10
0.03
0.03
0.03

BusyHour
Factor
17%
17%
17%
20%
30%
40%

Minutes/Day
52
88
194
45
30
22

Itappearsthatthemorewetoleratethenumberofblockedcalls,themoreminutesperdaywewill
have.However,themorecallstakeplaceduringpeakhours,orwhenbusyhourfactorincreases,the
lessnumberofminutesperdaywewillhave.

VoIPCookbook:293

CHAPTER 20: VoIP Evaluation


Inthischapter,wewilldiscusshowtoevaluateaVoIPsystem.Two(2)applicationsoftware,i.e.,

VQManagerSoftware
SIPp

Willbeused.

Evaluate VoIP Performance using VQManager


VQManagerInstallation
DownloadVQManagerfrom
http://www.manageengine.com/products/vqmanager/91408665/ManageEngine_VQManager.bin
Dothefollowingonshell
sudosu
cpManageEngine_VQManager.bin/usr/local/src/
cd/usr/local/src
chmoda+xManageEngine_VQManager.bin
./ManageEngine_VQManager.binconsole
Weneedtopress<ENTER>severaltimes.Normally,VQManagerwillbeinstalledin
/root/ManageEngine/VQManager
AllimportantscriptofVQManagerislocatedat
/root/ManageEngine/VQManager/bin/

VoIPCookbook:294

SomeoftheImportantScriptsofVQManager
TostartVQManager
sudosu
cd/root/ManageEngine/VQManager/bin/
/root/ManageEngine/VQManager/bin/run.sh
Tostartasbackgroundprocess,
sudosu
cd/root/ManageEngine/VQManager/bin/
/root/ManageEngine/VQManager/bin/run.sh&
TostopVQManager
sudosu
cd/root/ManageEngine/VQManager/bin/
/root/ManageEngine/VQManager/bin/shutdown.sh
ToreinitializedtheDatabaseincasewehaveacorruptdata,
sudosu
cd/root/ManageEngine/VQManager/bin/
/root/ManageEngine/VQManager/bin/reinitializeDB.sh

VoIPCookbook:295

ActivateVQManagerWebService
WhenwerunVQManagerWebServiceforthefirsttime,weneedtoactivatetheWebService.Firstly,
weneedtostartVQManagerasbackgroundprocess,suchas,
sudosu
cd/root/ManageEngine/VQManager/bin/
/root/ManageEngine/VQManager/bin/run.sh&
AccessviaWebtohttp://localhost:8647withdefaultusername&passwordadmin&admin.

Figure20.1LoginMenuinVQManager.

VoIPCookbook:296

Figure20.2.WelcomeMessageofVQManager.
AsweaccesstheVQManagerWebforthefirsttime,itwilltellusthatwecanchoosewhether,

UseVQManagerbuiltinsniffer.
ImporttheCallDetailedRecords(CDR)logfiles.
ImporttheCDRsentasSyslogmessafesbytheCallServers.

Clicknexttocontinue.

VoIPCookbook:297

Figure20.3OptiontomonitorVoIPnetwork.
Clickononeoftheoption.TheeasiestmaybeSniffer.
ClickNext;afterwechoosethemethod.

VoIPCookbook:298

Figure20.4ProtocolSettingsinVQManager.
Inthethefollowingmenu,wecanchoosetheprotocolstobemonitoredinthenetwork.Inthenormal
VoIPnetwork,wedon'thavetochangethevalues.
ClickNexttocontinue.

VoIPCookbook:299

Figure20.5SelecttheInterfacetobemonitored.
Thisistheimportantpart.Weneedtoselect,theinterfacetobesniffed.

VoIPCookbook:300

Figure20.6InterfaceSelected.

Intheabovefigure,wechooseinterfaceeth0tobesniffed.
ClickNexttocontinue.

VoIPCookbook:301

Figure20.7ConfigurationSummary.
Finally,VQManagerwillshowthesummaryofourVoIPMonitoringplatform.
ClickNexttocontinue.

VoIPCookbook:302

Figure20.8VQManagerWebConsole.
FinishconfigureVQManager.
TheabovefigureshowstheVQManagermonitoringdisplay.Itshowsalotofimportantinformation
regardingthemonitoredVoIPinfrastructure.

VoIPCookbook:303

ChangingtheMonitoredInterface
Insomecases,weneedtomonitordifferentinterface.Inthiscase,weneedtologintothewebat
http://localhost:8647
usernameadmin
passwordadmin
Clickonthefollowingsequence
Admin>Sniffer>ProtocolSettings>Next>"selectinterface">Next>Save
Ifweneedtochangethemonitoredinterface,weneedtoclickonthefollowingsequence.
Admin>Sniffer>Reconfigure>ProtocolSettings>Next>"interfacenya">Next>
Save

InsertingnewInterface
Insomecases,wehaveinsertedanewinterfaceintotheserverandneedtomonitorthisparticularnew
interface.Todoso,weneedtoresetthedatabase,
sudosu
/root/ManageEngine/VQManager/bin/reinitializeDB.sh
thenactivatetheinterfacethroughVQManagerWebagain

VoIPCookbook:304

MonitorVoIPPerformance

Figure20.9FrontendWebConsoleofVQManager.
TheWebfrontendofVQManager.Wecaneasilyseethecallvolume,includingthesuccesscall,the
failedcalls.Ontheright,wecanseethequalityofcallsingeneral,including,itsdelay,jitter,packet
loss,MOS,RFactor.

VoIPCookbook:305

Figure20.10WebFrontEnd
Attheend,oftheWebFrontend.Ontheleft,wecanseetrafficpassinginKbps.Ontheright,wecan
seetrafficpassinginpacketpersecond.Inaddition,wecanseethetypeoftrafficpassingthroughour
system.

VoIPCookbook:306

Figure20.11CallMenuVQManager.
InVQManagercallmenu,wecanseeinsummeryofcalls,including,theusageprofile.Inaddition,we
canseetheactivecallatthemoment.

VoIPCookbook:307

Figure20.12EndpointMenu.
IntheEndpointmenu,wecanseeamoredetailedinformationofparticularendpoint,suchas,its
activities,performanceandusage.Ontheleft,wecanseetheusageactivities.Ontheright,wecansee
moredetailedonthestatisticsandvoicequality.Belowit,wecanseemoredetailedontheincoming
andoutgoingcallQoS.

VoIPCookbook:308

Figure20.13EndpointDetailedCalls.
Atthebottomofendpointmenu,wecanseedetailedcallsperformedbytheparticularendpoint.

VoIPCookbook:309

Figure20.14ConcurrentCall.
InConcurrentCallReportmenu,wecaneasilyseehowmanyconcurrentcallishandledbythe
softswitch.Inaddition,wecanalsoseethepeakhoursofthetrafficanditstotalandaverageconcurrent
calls.

VoIPCookbook:310

Figure20.15GoodQualityCallsReport
ThroughReportMenu>GoodQualityCallsReport,wecaneasilyseethegoodqualitycallmade
throughoursoftswitch.

VoIPCookbook:311

Figure20.16UnsuccessfulCallsReport
ThroughReportMenu>UnsuccessfulCallsReport,wecantheunsuccessfullcalls.Wemayfurthjer
analyzethefailurereasons.

VoIPCookbook:312

Figure20.17SuccessfulCallsReport
ThroughReportMenu>SuccessfulCallsReport,wecanseethereportonthesuccessfulcallthrough
oursoftswitch.

VoIPCookbook:313

Evaluate VoIP Performance using SIPp


InstallationofSIPp
ToinstallSIPp,wecanuse
sudoaptgetinstallsiptester

InstallationofSIPpWebfrontend
DownloadSIPpWebfrontendfrom
http://sourceforge.net/projects/sipp/files/sipp/3.1/
Copy&Extract
mkdir/var/www/sipp
cpsipp_webfrontend_v1.2.tgz/var/www/sipp/
cd/var/www/sipp/
tarzxvfsipp_webfrontend_v1.2.tgz
mv/var/www/sipp/src/*/var/www/sipp/
Createdatabase
mysqlurootp
password:
CREATEDATABASESIPpDB;
USESIPpDB;
\./var/www/sipp/tables.sql
quit
Editconfig.ini.php
vi/var/www/sipp/config.ini.php
Suchthat
VoIPCookbook:314

[EXECUTABLES]
3.0="/usr/bin/sipp"
[CONFIG]
db_host="localhost"
db_user="root"
db_pwd="123456"
db_name="SIPpDB"
admin_pwd=""
Tomakeiteasierforaccessingtheweb,emptytheadmin_pwdfield.SIPpWebfrontendcanbe
accessedvia
http://localhost/sipp
using
usernameadmin
password<nopassword>

TransactionOrientedTestusingSIPp
Inthisexample,weassumetheIPaddressofthesoftswitchis192.168.0.3.
Firstly,weneedtosetuptheconfigurationfile/usr/local/etc/opensips/cfgtestuas.cfgattheserverside.
Thelistofcfgtestuas.cfgisintheAppendix.Testtheopensipsconfigurationfile,itcanbedonevia,
#opensipscf/usr/local/etc/opensips/cfgtestuas.cfg
Ifnoerror,wecanruntheserverusing
#opensipsf/usr/local/etc/opensips/cfgtestuas.cfg
RunSIPpattheclientside,using
$sippsnuac192.168.0.3

VoIPCookbook:315

Orusingamorecomplexcommandsuchas,
$sippsnuac192.168.0.3:5060m200000r10000d1l70
Exampleofstresstestingwith1000callpersecondand10000concurrentcallusing
$sippsnuac192.168.0.3r1000l10000d10000

Figure20.18SIPpStressTestwith1000callpersecondand10000concurrentcall

VoIPCookbook:316

Figure20.19SIPpStressTestpage2
ThecompletelistofSIPpswitchcommandislistedintheAppendix.Forsome,itseemsverydifficult
todoastresstestintextmode.WecanusetheSIPpWebfrontendforamoreuserfriendlygraphical
interface.

VoIPCookbook:317

AccesstotheSIPpWebfrontend
SIPpWebfrontendcanbeaccessedvia
http://localhost/sipp
usernameadmin
password<nopassword>

Figure20.20ManagedTestMenuinWebFrontend
ShownintheFigureistheWebfrontendmenuformanagingthetest.Forsimple&commontest,we
basicallyneedtoaccessthismenuonly.

VoIPCookbook:318

Figure20.21ManagedScenarioMenu
SeveralscenariohasbeenbuiltininSIPpcanbeseenintheManagedScenariomenu.Wecanalways
addmorescenarioifyoulike.

VoIPCookbook:319

Figure20.22SystemInformationMenu
IntheSystemInformationMenu,wecanseesomeinformationonthesystem,suchas,anyrunningtest,
freeharddiskspace,SIPpversionetc.

VoIPCookbook:320

Figure20.23CreateNewTestMenu
Tocreateanewtest,intheManagedTestMenu,selectCreateNewTest.Wecantypeinthenameof
testanditsdescription.Don'tforgertopressthe"Savetest"buttontosavethetest.

VoIPCookbook:321

Figure20.24CreateNewTest
Intheexample,weusetest1000cps10000ccforatesttocreate1000callpersecondand10.000
VoIPCookbook:322

concurrentcall.Titlecanbeanything,aslongasitisinformative.

Figure20.25CreateNewTest

VoIPCookbook:323

Wecanthencompletetheformbyputtingsomeinfointhedescription.

Figure20.26CreateNewTest

VoIPCookbook:324

Belowthe"Savetest"buttonwillappearmenutoconfigurethetestinamoredetail.Itisinterestingto
notethatwecansimultaneouslyconfiguretwo(2)devices,namely,PartyAandPartyB.

Figure20.27FirstSectionoftheAddCallinCreateNewTest
VoIPCookbook:325

Whenweclickaddcalltooneoftheparty,someoftheparameterstobeconfiguredare,scenario(as
uacoruas),remotehostipaddress,andmonitorcalltoseeactivitiesinrealtimeduringtest.
Figure20.28LastSectionoftheAddCallinCreateNewTest

VoIPCookbook:326

Attheendofconfigurationcallmenu,wecansetcallrateandextendedparameter.PressSavecall
buttonafterwecompletetheconfiguration.

Figure20.29Runtestmenu
Afterallparameterscompletelyset,wecanclickonRuntestbutton.Todotheactualrun,weneedto
doanotherclickon"Runtestnow".

VoIPCookbook:327

Figure20.30RuntheTest
Ifthemonitorcallactive,wecanseetheactualtestrunbySIPponthescreen.Press1,2,3keytosee
moreinformationontesttest.

VoIPCookbook:328

CHAPTER 21: VoIP Troubleshooting


Ingeneral,aVoIPcommunicationwillincludereceivetheanalogvoicefromtelephonehandset,
digitized,compression,packetized,sentitoverthenetwork,decode,andreconstructedintovoiceatthe
otherend.
PacketnetworkusedforthejobcanbebasedonIP,ATM,FrameRelay,thus,itislogicaltousethe
termVoiceoverincludingVoIP,VoATM,VoDSL,VoCable,VoPetc.Wecanuseallthetermfor
VoIP.
IPPhoneisusuallyusedintheprocessofdigitalization,compresion,andpacketizationinternally
withinthephoneandtheproducedpacketissentovertheEthernetLAN.
IPGatewayisaninterfaceforanalogtelephonesordigitaltelephonesorTDMtrunktoconvertitsaudio
signaltoVoIPPacket.AnIPPBXorEnterpriseGatewaymaybeusedbyanenterprisetoconnectIP
Phonetoconventionaltelephonenetwork.Atrunkgatewayusuallyusedbyacompanytoconnect
analogphonelinestoVoIP.

CODEC and Vocoder


ThetermCODEC(CoderDecoder)andVocodermaybeinterchangeableandnormallyrefertothe
subroutinefacilitiesinsideasoftphoneneededbytheIPPhoneorGatewayinthedigitalizationprocess.
ThereareseveralCODECthatmaybeused,suchas,

G.711aPCMstandard,codeaudiointo8bitsampleat8000samplepersecond,produces
64kbpsdigitalaudio.
G.729/G.729Athe8kbpsstandard.
CODECthataimsforlowerspeedwillnormallyexperiencedistortioninthecodedaudio.

ThepublishedMOSoflowspeedCODEwillnormallyhavearelativelygoodquality.Inreality,low
speedCODECwillexperienceadistortioninthecodedaudio.Inaddition,itwasspeculatedthatlow
speedCODECsuchasG.729Acreatesstressforcontinuoususageincallcenter.

VoIPCookbook:329

Preparing A VoIP Ready Network


VoIPisverysensitiveonanyprobleminIPnetwork.Thus,itwouldbebeneficialtoprepareaclean
networkpriortoVoIPoperation.Ingeneral,agoodnetworkcanbeeasilydeployedifweknowhowto
designagoodnetwork.Weneedtounderstandthatmanyprobleminthenetworkthatdonotaffect
applications,suchas,Web,emal,maycreateahugeproblemonVoIPapplications.

Minimal requirement / configuration

Use100MbpsLANswitchhubwithdedicatedsegment.
UseGigabitEthernettoswitch/routerthatconnectedtotheserver.
UseagoodIPPhone,itmaybebeneficialtouseaswitchthatcanprioritizedvoicetraffic.
TalktoyourISP,makesurewereceiveenoughbandwidth.ItwouldbebeneficialiftheISPcan
prioritizeRealTimeProtocol(RTP)traffic.
MakesuretheroutermayprioritizeRTPtraffic.
MakesurethefirewallisconfiguretopassVoIPtraffic.
Designamanagementandmonitoringinfrastructuretohelpquickproblemdetectionand
solving.
Dotestpriortosystemoperation.

Test prior to operation of the system


Priortotheoperationofthesystem,itwouldbebeneficialtosystematicallytestthesystem
performancetosupportVoIPoperation.Basically,thetestismerelysamplingthesystemperformance
toseeifitfitstothedesignrequirement.Itmayincreaseourconfidenceaswellastoseeanypossible
problems.
Ingeneral,thereareseveraltypeoftestingpriortotheoperationofthesystem,namely,

Testbetweensites.Toseeanypossibleproblemsduetocongestionintheaccessnetworkoron
thewideareanetwork.Itwouldbebetterifthetestcanbeperformedinthelongperiodoftime,
sayone(1)month.TestprocesscanbedonebyusingasimpletoolstosimulateRTPtrafficas
routershouldhandledifferentlyascomparedtoICMP.

Pilottrial.LimitedtestoftheplannedIPtelephonysystemtoseeiftherewouldbeanyproblem
infullfledgedeployment.
VoIPCookbook:330

Desktoptesting.OurLANmayexperiencingalotofproblems,weneedtodevelopa
mechanismtotesteachsegmenttoseehowseverethecollisionsandthepacketloss.UseVoIP
analyzertoseepacketlossandjitterduringinstallation.

Some Useful References For VoIP Troubleshooting

http://www.voiptroubleshooter.com/
http://www.voiptroubleshooter.com/tools/index.html
http://www.telchemy.com/
http://www.voiptroubleshooter.com/basics/mosr.html

VoIPCookbook:331

References

http://www.asterisk.org
http://www.voipinfo.org/
http://www.voiptroubleshooter.com/
http://www.voiprakyat.or.id
http://www.asteriskguru.com
http://www.e164.org
http://www.telchemy.com/
http://sipbroker.com/

VoIP Hardware

http://www.digiumcards.com/
http://www.voipon.co.uk/
http://www.thevoipconnection.com/
http://www.level1.com/
http://www.linksysbycisco.com/
https://www.digium.com/en/supportcenter/documentation/viewdocs/TDM2400P
https://www.digium.com/en/supportcenter/documentation/viewdocs/TDM400P
https://www.digium.com/en/supportcenter/documentation/viewdocs/TDM410

VoIP Softswitch

http://www.asterisk.org
http://www.briker.org
http://www.opensips.org
http://www.asterisk.org/asterisknow

VoIP Client Software

http://www.counterpath.com/xlitedownload.html
http://www.virbiage.com/cubix.php
http://www.asteriskguru.com/idefisk/free/
http://www.sjlabs.com/sjp.html
http://www.xten.com/index.php?menu=download
http://ekiga.org

Testing Software

http://sipp.sourceforge.net/
http://sourceforge.net/projects/sipp
VoIPCookbook:332

http://www.manageengine.com/products/vqmanager/

VoIPCookbook:333

APPENDIX A: Example of /etc/sip.conf


;
;SIPconfigurationforAsterisk
;
[general]
disallow=all
allow=ulaw
port=5060
;theSIPportwhichhastobebind(attach).
bindaddr=0.0.0.0
;AddressintheSIPbind
externip=xxx.xxx.xxx.xxx ;ifweknowthepublicIPaddressthatweuse
localnet=192.168.0.0
localmask=255.255.255.0
context=inboundsip
;Defaultcontextforincomingcalls
maxexpirey=180
defaultexpirey=160
tos=reliability
srvlookup=yes
;IMPORTANT!RegistrationtoSIPServer
register=>2012345:abcdef@voiprakyat.or.id/2012345
register=>2055555:123456@voiprakyat.or.id/2055555

;username2012345passwordabcdef
;username2055555passwd123456

;WeneedtoestablishaSIPaccountinourplaceinordertoreceivecallsfrom
;voiprakyatthroughourPABX
;
[fwd1]
type=friend
secret=secret
username=2055555
fromuser=2055555
fromdomain=voiprakyat.or.id
host=voiprakyat.or.id
dtmfmode=inband
nat=yes
canreinvite=no

VoIPCookbook:334

[fwd2]
type=friend
secret=secret
username=2012345
fromuser=2012345
fromdomain=voiprakyat.or.id
host=voiprakyat.or.id
dtmfmode=inband
nat=yes
canreinvite=no
;ThefollowingisaSIPaccountforIPphoneinhouse/office
;
[phone17]
disallow=all
allow=ulaw
type=friend
host=dynamic
defaultip=192.168.0.17
dtmfmode=inband
secret=voip17
mailbox=2206
context=home
callerid="BillMandra"<2206>
nat=no
[phone18]
disallow=all
allow=ulaw
type=friend
host=dynamic
defaultip=192.168.0.18
dtmfmode=inband
secret=voip18
mailbox=2204
context=home
callerid="Kitchen"<2204>
VoIPCookbook:335

nat=no
extensions.conf
;
;Staticextensionfileconfigurationusedbypbx_configmodule
;InthismoduleweconfigureallincomingcallsandoutgoingcallsinAsterisk
;
[general]
static=yes
writeprotect=no
[globals]
DIALOUTANALOG=Zap/1
MAINPHONE=Zap/2
JESSICA=Zap/3
CHRISTOPHER=Zap/4
PORCH=Zap/5
KITCHEN=SIP/phone18
BILL=SIP/phone17
;
;ForthisexamplethecardusedisZAPTEL
;WecanreplaceZap/1,Zap/2,Zap/3s/dZap/5
;withSIPaccountinAsteriskforIPPhoneorWiFiPhone
;forexampleSIP/2000toIPPhonewithextension2000etc.
FWDUSERID1=2012345
FWD1USERNAME=WilliamMandra
FWDUSERID2=2055555
FWD2USERNAME=BujubunengMandra
FWDPREFIX=*
HOMENUMBER=4208888
BILLCELLPHONE=0811888888
MOMCELLPHONE=0811999999
JESSCELLPHONE=0813222222
;
;MacroforAsteriskExtension
VoIPCookbook:336

;
[macrofastbusy]
exten=>s,1,Answer
exten=>s,2,Wait,1
exten=>s,3,Playback(ssnoservice)
exten=>s,4,Wait(30)
exten=>s,5,Hangup
[macrodialoutsip]
exten=>s,1,SetCallerID(${FWDUSERID2})
exten=>s,2,SetCIDName(${FWD2USERNAME})
exten=>s,3,Dial(SIP/${FWDPREFIX}${ARG1}@fwd1,70)
exten=>s,4,Macro(fastbusy)
exten=>s,5,Hangup
exten=>s,104,Macro(fastbusy)
exten=>s,105,Wait,3
exten=>s,106,Playtones(congestion)
exten=>s,107,Wait,30
exten=>s,108,Hangup
[macrobillcellfwdoutsip2]
exten=>s,1,SetCallerID(${ARG2})
exten=>s,2,Dial(SIP/${FWDPREFIX}${ARG1}@fwd2,20)
exten=>s,3,Goto(local,2206,4)
exten=>s,102,Goto(local,2206,4)
;
;Outbound
;
;
[operator]
exten=>0,1,Dial(${DIALOUTANALOG}/${EXTEN},70)
exten=>0,2,Macro(fastbusy)
exten=>0,102,Playback(ssnoservice)
exten=>0,103,Macro(fastbusy)
[e911]
exten=>911,1,Dial(${DIALOUTANALOG}/${EXTEN})
exten=>911,2,Macro(fastbusy)
VoIPCookbook:337

exten=>911,102,Playback(ssnoservice)
exten=>911,103,Macro(fastbusy)
[forcedanalog]
exten=>_9.,1,Dial(${DIALOUTANALOG}/${EXTEN:1},70)
exten=>_9.,2,Macro(fastbusy)
exten=>_9.,102,Macro(fastbusy)
[fwd1out]
exten=>_8.,1,SetCallerID(${FWDUSERID2})
exten=>_8.,2,SetCIDName(${FWD2USERNAME})
exten=>_8.,3,Dial(SIP/${EXTEN:1}@fwd1,70)
exten=>_8.,4,Macro(fastbusy)
exten=>_8.,5,Hangup
[fwd2outpvt]
exten=>_7.,1,SetCallerID(${FWDUSERID1})
exten=>_7.,2,SetCIDName(${FWD1USERNAME})
exten=>_7.,3,Dial(SIP/${EXTEN:1}@fwd2,70)
exten=>_7.,4,Macro(fastbusy)
exten=>_7.,5,Hangup
[information]
exten=>108,1,Dial(${DIALOUTANALOG}/${EXTEN},70)
exten=>108,2,Macro(fastbusy)
exten=>108,102,Playback(ssnoservice)
exten=>108,103,Macro(fastbusy)
;LocalPSTN
;
[pstnlocal]
exten=>_021.,1,Dial(${DIALOUTANALOG}/${EXTEN:3})
exten=>_021.,2,Macro(fastbusy)
exten=>_021.,102,Macro(dialoutsip,${EXTEN})
[tollfree]
exten=>_0800.,1,Dial(${DIALOUTANALOG}/${EXTEN})
exten=>_0800.,2,Macro(fastbusy)
exten=>_0800.,102,Macro(dialoutsip,${EXTEN})
VoIPCookbook:338

[longdistance]
exten=>_0XXXXXXXXXX,1,Macro(dialoutsip,${EXTEN})
exten=>_0XXXXXXXXXX,2,Macro(fastbusy)
exten=>_0XXXXXXXXXX,102,Dial(${DIALOUTANALOG}/${EXTEN})
exten=>_0XXXXXXXXXX,103,Macro(fastbusy)
[home]
include=>operator
include=>e911
include=>forcedanalog
include=>fwd1out
include=>fwd2outpvt
include=>information
include=>local
include=>pstnlocal
include=>tollfree
include=>longdistance
;
;Inbound
;analogline
[nighttimeanalog]
exten=>s,1,Wait(2)
exten=>s,2,Background(nighttime)
exten=>1,1,Goto(daytimeanalog,s,1)
exten=>2,1,Voicemail(u2201)
exten=>3,1,Voicemail(u2206)
exten=>4,1,Voicemail(u2202)
exten=>9,1,Playback(transfer)
exten=>9,2,Ringing(1)
exten=>9,3,Goto(local,2206,1)
[daytimeanalog]
exten=>s,1,Zapateller(answer|nocallerid)
exten=>s,2,PrivacyManager
exten=>s,3,Ringing(1)
exten=>s,4,Dial(${MAINPHONE}&${KITCHEN},15)
VoIPCookbook:339

exten=>s,5,Dial(${JESSICA},6)
exten=>s,6,Dial(${BILL},6)
exten=>s,7,Voicemail(u2201)
exten=>s,8,Hangup
[inboundanalog]
include=>daytimeanalog|9:0021:00|*|*
include=>nighttimeanalog|21:0009:00|*|*
;siplines
;
[nighttimefwd1]
exten=>s,1,Wait(2)
exten=>s,2,Background(nighttime)
exten=>1,1,Goto(daytimesip1,s,1)
exten=>2,1,Voicemail(u2201)
exten=>3,1,Voicemail(u2206)
exten=>4,1,Voicemail(u2202)
exten=>9,1,Playback(transfer)
exten=>9,2,Goto(local,2206,1)
[daytimefwd1]
exten=>s,1,Dial(${MAINPHONE}&${KITCHEN},15)
exten=>s,2,Dial(${JESSICA},6)
exten=>s,3,Dial(${BILL},6)
exten=>s,4,Voicemail(u2201)
exten=>s,5,Hangup
[inboundfwd1]
include=>daytimefwd1|9:0021:00|*|*
include=>nighttimefwd1|21:009:00|*|*
[inboundsip]
exten=>2055555,1,Goto(inboundfwd1,s,1)
exten=>2012345,1,Goto(local,2206,1)
;
;InternalExtension
VoIPCookbook:340

;
[local]
exten=>2201,1,Dial(${MAINPHONE},20,Tt)
exten=>2201,2,Voicemail(u2201)
exten=>2201,3,Hangup
exten=>2201,102,Voicemail(b2201)
exten=>2201,103,Hangup
exten=>2202,1,Dial(${JESSICA},20,Tt)
exten=>2202,2,Voicemail(u2202)
exten=>2202,3,Hangup
exten=>2202,102,Voicemail(b2202)
exten=>2202,103,Hangup
exten=>2203,1,Dial(${CHRISTOPHER},20,Tt)
exten=>2203,2,Playback(vmnobodyavail)
exten=>2203,3,Hangup
exten=>2204,1,Dial(${KITCHEN},20,Tt)
exten=>2204,2,Playback(vmnobodyavail)
exten=>2204,3,Hangup
exten=>2205,1,Dial(${PORCH},20,Tt)
exten=>2205,2,Playback(vmnobodyavail)
exten=>2205,3,Hangup
exten=>2206,1,Dial(${BILL},20,Tt)
exten=>2206,2,Playback(transfer)
exten=>2206,3,Macro(billcellfwdoutsip2,${BILLCELLPHONE},${CALLERIDNUM})
exten=>2206,4,Voicemail(u2206)
exten=>2206,5,Hangup
exten=>2206,102,Voicemail(b2206)
exten=>2206,103,Hangup
exten=>2500,1,Wait,2
exten=>2500,2,VoicemailMain
exten=>2500,3,Hangup
;
;Avarietyoffacilitiesthatcanbeusedfortesting
VoIPCookbook:341

;
exten=>2001,1,Answer
exten=>2001,2,Playback(demoechotest)
exten=>2001,3,Echo
exten=>2001,4,Playback(demoechodone)
exten=>2001,5,Hangup
exten=>2002,1,Answer
exten=>2002,2,WaitMusicOnHold(30)
exten=>2002,3,Hangup
exten=>2003,1,Answer
exten=>2003,2,Wait(1)
exten=>2003,3,SayUnixTime(||k)
exten=>2003,4,SayUnixTime(||M)
exten=>2003,5,Playback(vmand)
exten=>2003,6,SayUnixTime(||S)
exten=>2003,7,Wait(2)
exten=>2003,8,Hangup
exten=>2004,1,Answer
exten=>2004,2,Wait(1)
exten=>2004,3,Playback(vmextension)
exten=>2004,4,SayDigits(${CALLERIDNUM})
exten=>2004,5,Wait(2)
exten=>2004,6,Hangup
exten=>2005,1,Goto(nighttimeanalog,s,1)
;exten=>2005,2,Playback(ssnoservice)
;exten=>2005,3,Playback(vmnobodyavail)
;exten=>2005,4,Playback(agentincorrect)
;exten=>2005,5,Playback(agentuser)
;exten=>2005,6,Playback(pbxinvalid)
;exten=>2005,7,Playback(ttsomethingwrong)
;exten=>2005,8,Playback(vmextension)
;exten=>2005,9,Playback(vmisunavail)
;exten=>2005,10,Playback(vmisonphone)
;exten=>2005,11,Playback(vmsorry)
VoIPCookbook:342

exten=>2005,2,Hangup

VoIPCookbook:343

APPENDIX B: SIPp COMMANDS


Usage:
sippremote_host[:remote_port][options]
Availableoptions:
v
aa
auth_uri

:Displayversionandcopyrightinformation.
:Enableautomatic200OKanswerforINFO,UPDATEandNOTIFYmessages.
:ForcethevalueoftheURIforauthentication.
Bydefault,theURIiscomposedofremote_ip:remote_port.
base_cseq :Startvalueof[cseq]foreachcall.
bg
:LaunchSIPpinbackgroundmode.
bind_local :BindsockettolocalIPaddress,i.e.thelocalIPaddressisusedasthesourceIP
address.IfSIPprunsinservermodeitwillonlylistenonthelocalIPaddress
insteadofallIPaddresses.
buff_size :Setthesendandreceivebuffersize.
calldebug_file:Setthenameofthecalldebugfile.
calldebug_overwrite:Overwritethecalldebugfile(defaulttrue).
cid_str
:CallIDstring(default%u%p@%s).%u=call_number,
%s=ip_address,%p=process_number,%%=%(inanyorder).
ci
:SetthelocalcontrolIPaddress
cp
:Setthelocalcontrolportnumber.Defaultis8888.
d
:Controlsthelengthofcalls.Moreprecisely,thiscontrolsthedurationof'pause'
instructionsinthescenario,iftheydonothavea'milliseconds'section.
Defaultvalueis0anddefaultunitismilliseconds.
deadcall_wait:HowlongtheCallIDandfinalstatusofcallsshouldbekepttoimprovemessage
anderrorlogs(defaultunitisms).
default_behaviors:SetthedefaultbehaviorsthatSIPpwilluse.Possbilevaluesare:
all Usealldefaultbehaviors
none Usenodefaultbehaviors
bye Sendbyesforabortedcalls
abortunexp Abortcallsonunexpectedmessages
pingreply
Replytopingrequests
Ifabehaviorisprefacedwitha,thenitisturnedoff.Example:all,bye
error_file :Setthenameoftheerrorlogfile.
error_overwrite:Overwritetheerrorlogfile(defaulttrue).
VoIPCookbook:344

f
fd
i

:Setthestatisticsreportfrequencyonscreen.Defaultis1anddefaultunitisseconds.
:Setthestatisticsdumplogreportfrequency.Defaultis60anddefaultunitisseconds.
:SetthelocalIPaddressfor'Contact:','Via:',and'From:'headers.

DefaultisprimaryhostIPaddress.
inf
:InjectvaluesfromanexternalCSVfileduringcallsintothescenarios.

Firstlineofthisfilesaywhetherthedataistobereadinsequence(SEQUENTIAL),

random(RANDOM),oruser(USER)order.

Eachlinecorrespondstoonecallandhasoneormore';'delimiteddatafields.

Thosefieldscanbereferredas[field0],[field1],...inthexmlscenariofile.

SeveralCSVfilescanbeusedsimultaneously(syntax:inff1.csvinff2.csv...)
infindex
:filefield

Createanindexoffileusingfield.Forexampleinfusers.csvinfindexusers.csv0

createsanindexonthefirstkey.
ip_field
:SetwhichfieldfromtheinjectionfilecontainstheIPaddressfromwhichtheclient

willsenditsmessages.Ifthisoptionisomittedandthe'tui'optionispresent,

thenfield0isassumed.Usethisoptiontogetherwith'tui'
l
:Setthemaximumnumberofsimultaneouscalls.Oncethislimitisreached,

trafficisdecreaseduntilthenumberofopencallsgoesdown.

Default:(3*call_duration(s)*rate).
log_file
:Setthenameofthelogactionslogfile.
log_overwrite:Overwritethelogactionslogfile(defaulttrue).
lost
:Setthenumberofpacketstolosebydefault
(scenariospecificationsoverridethisvalue).
rtcheck
:Selecttheretransmisisondetectionmethod:full(default)orloose.
m
:Stopthetestandexitwhen'calls'callsareprocessed
mi
:SetthelocalmediaIPaddress(default:localprimaryhostIPaddress)
master
:3pccextendedmode:indicatesthemasternumber
max_recv_loops:Setthemaximumnumberofmessagesreceivedreadpercycle.

Increasethisvalueforhightrafficlevel.Thedefaultvalueis1000.
max_sched_loops:Setthemaximumnumberofcalslrunpereventloop.

Increasethisvalueforhightrafficlevel.Thedefaultvalueis1000.
max_reconnect:Setthethemaximumnumberofreconnection.
max_retrans :MaximumnumberofUDPretransmissionsbeforecallendsontimeout.

Defaultis5forINVITEtransactionsand7forothers.
max_invite_retrans:MaximumnumberofUDPretransmissionsforinvitetransactions

beforecallendsontimeout.
max_non_invite_retrans:MaximumnumberofUDPretransmissionsfornoninvitetransactions

beforecallendsontimeout.
VoIPCookbook:345

max_log_size:Whatisthelimitforerrorandmessagelogfilesizes.
max_socket :Setthemaxnumberofsocketstoopensimultaneously.Thisoptionissignificant

ifyouuseonesocketpercall.Oncethislimitisreached,
trafficisdistributedoverthesocketsalreadyopened.Defaultvalueis50000
mb
:SettheRTPechobuffersize(default:2048).
message_file:Setthenameofthemessagelogfile.
message_overwrite:Overwritethemessagelogfile(defaulttrue).
mp
:SetthelocalRTPechoportnumber.Defaultis6000.
nd
:NoDefault.DisablealldefaultbehaviorofSIPpwhicharethefollowing:
OnUDPretransmissiontimeout,abortthecallbysendingaBYEoraCANCEL
Onreceivetimeoutwithnoontimeoutattribute,abortthecallbysendingaBYE
oraCANCEL
OnunexpectedBYEsenda200OKandclosethecall
OnunexpectedCANCELsenda200OKandclosethecall
OnunexpectedPINGsenda200OKandcontinuethecall
Onanyotherunexpectedmessage,abortthecallbysendingaBYEora
CANCEL
nr
:DisableretransmissioninUDPmode.
nostdin
:Disablestdin.
p
:Setthelocalportnumber.Defaultisarandomfreeportchosenbythesystem.
pause_msg_ign:Ignorethemessagesreceivedduringapausedefinedinthescenario
periodic_rtd :Resetresponsetimepartitioncounterseachlogginginterval.
plugin
:Loadaplugin.
r
:Setthecallrate(incallsperseconds).Thisvaluecanbechangedduringtest
bypressing'+','_','*'or'/'.Defaultis10.
pressing'+'keytoincreasecallrateby1*rate_scale,
pressing''keytodecreasecallrateby1*rate_scale,
pressing'*'keytoincreasecallrateby10*rate_scale,
pressing'/'keytodecreasecallrateby10*rate_scale.
Iftherpoptionisused,thecallrateiscalculatedwiththeperiodinms
givenbytheuser.
rp
:Specifytherateperiodforthecallrate.Defaultis1secondanddefaultunit
ismilliseconds.Thisallowsyoutohavencallseverymmilliseconds
(byusingrnrpm).
Example:
r7rp2000==>7callsevery2seconds.
r10rp5s=>10callsevery5seconds.
rate_scale :Controltheunitsforthe'+','','*',and'/'keys.
rate_increase:Specifytherateincreaseeveryfdunits(defaultisseconds).
Thisallowsyoutoincreasetheloadforeachindependentloggingperiod.
VoIPCookbook:346

Example:rate_increase10fd10s==>increasecallsby10every10seconds.
rate_max :Ifrate_increaseisset,thenquitaftertheratereachesthisvalue.
Example:rate_increase10rate_max100==>increasecallsby10until100cpsishit.
no_rate_quit:Ifrate_increaseisset,donotquitaftertheratereachesrate_max.
recv_timeout:Globalreceivetimeout.Defaultunitismilliseconds.Iftheexpectedmessageisnot
received,thecalltimesoutandisaborted.
send_timeout:Globalsendtimeout.Defaultunitismilliseconds.Ifamessageisnotsent
(duetocongestion),thecalltimesoutandisaborted.
sleep
:Howlongtosleepforatstartup.Defaultunitisseconds.
reconnect_close:Shouldcallsbeclosedonreconnect?
reconnect_sleep:Howlong(inmilliseconds)tosleepbetweenthecloseandreconnect?
ringbuffer_files:Howmanyerror/messagefilesshouldbekeptafterrotation?
ringbuffer_size:Howlargeshoulderror/messagefilesbebeforetheygetrotated?
rsa
:Settheremotesendingaddresstohost:portforsendingthemessages.
rtp_echo
:EnableRTPecho.RTP/UDPpacketsreceivedonportdefined
bympareechoedtotheirsender.RTP/UDPpacketscomingon
thisport+2arealsoechoedtotheirsender(usedforsoundandvideoecho).
rtt_freq
:freqismandatory.Dumpresponsetimeseveryfreqcallsinthelogfiledefined
bytrace_rtt.Defaultvalueis200.
s
:SettheusernamepartoftheresquestURI.Defaultis'service'.
sd
:Dumpsadefaultscenario(embededinthesippexecutable)
sf
:Loadsanalternatexmlscenariofile.TolearnmoreaboutXMLscenariosyntax,
usethesdoptiontodumpembeddedscenarios.Theycontainallthenecessaryhelp.
shortmessage_file:Setthenameoftheshortmessagelogfile.
shortmessage_overwrite:Overwritetheshortmessagelogfile(defaulttrue).
oocsf
:Loadoutofcallscenario.
oocsn
:Loadoutofcallscenario.
skip_rlimit :Donotperformrlimittuningoffiledescriptorlimits.
Default:false.
slave
:3pccextendedmode:indicatestheslavenumber
slave_cfg :3pccextendedmode:indicatesthefilewherethemasterandslaveaddressesarestored
sn
:Useadefaultscenario(embeddedinthesippexecutable).
Ifthisoptionisomitted,theStandardSipStoneUACscenarioisloaded.
Availablevaluesinthisversion:
'uac':StandardSipStoneUAC(default).
'uas':SimpleUASresponder.
'regexp':StandardSipStoneUACwithregexpandvariables.
'branchc':Branchingandconditionalbranchinginscenariosclient.
'branchs':Branchingandconditionalbranchinginscenariosserver.
VoIPCookbook:347

Default3pccscenarios(see3pccoption):
'3pccCA':ControllerAside(mustbestartedafterallother3pccscenarios)
'3pccCB':ControllerBside.
'3pccA':Aside.
'3pccB':Bside.
stat_delimiter:Setthedelimiterforthestatisticsfile
stf
:Setthefilenametousetodumpstatistics
t
:Setthetransportmode:
u1:UDPwithonesocket(default),
un:UDPwithonesocketpercall,
ui:UDPwithonesocketperIPaddress.
TheIPaddressesmustbedefinedintheinjectionfile.
t1:TCPwithonesocket,
tn:TCPwithonesocketpercall,
l1:TLSwithonesocket,
ln:TLSwithonesocketpercall,
c1:u1+compression(onlyifcompressionpluginloaded),
cn:un+compression(onlyifcompressionpluginloaded).
Thispluginisnotprovidedwithsipp.
timeout
:Globaltimeout.Defaultunitisseconds.Ifthisoptionisset,SIPpquitsafter
nbunits(timeout20squitsafter20seconds).
timeout_error:SIPpfailsiftheglobaltimeoutisreachedisset(timeoutoptionrequired).
timer_resol:Setthetimerresolution.Defaultunitismilliseconds.Thisoptionhasanimpact
ontimersprecision.SmallvaluesallowmorepreciseschedulingbutimpactsCPU
usage.Ifthecompressionison,thevalueissetto50ms.Thedefaultvalueis10ms.
sendbuffer_warn:ProducewarningsinsteadoferrorsonSendBufferfailures.
trace_msg :DisplayssentandreceivedSIPmessagesin<scenariofilename>_<pid>_messages.log
trace_shortmsg:DisplayssentandreceivedSIPmessagesasCSV
in<scenariofilename>_<pid>_shortmessages.log
trace_screen:Dumpstatisticscreensinthe<scenario_name>_<pid>_cenaris.logfile
whenquittingSIPp.Usefultogetafinalstatusreportinbackgroundmode(bgoption).
trace_err
:Traceallunexpectedmessagesin<scenariofilename>_<pid>_errors.log.
trace_calldebug:Dumpsdebugginginformationaboutabortedcallsto
<scenario_name>_<pid>_calldebug.logfile.
trace_stat :Dumpsallstatisticsin<scenario_name>_<pid>.csvfile.
Usethe'hstat'optionforadetaileddescriptionofthestatisticsfilecontent.
trace_counts:DumpsindividualmessagecountsinaCSVfile.
trace_rtt
:Allowtracingofallresponsetimesin<scenariofilename>_<pid>_rtt.csv.
trace_logs :Allowtracingof<log>actionsin<scenariofilename>_<pid>_logs.log.
VoIPCookbook:348

users

:Insteadofstartingcallsatafixedrate,begin'users'callsatstartup,and
keepthenumberofcallsconstant.
watchdog_interval:Setgapbetweenwatchdogtimerfirings.Defaultis400.
watchdog_reset:Ifthewatchdogtimerhasnotfiredinmorethanthistimeperiod,
thenresetthemaxtriggerscounters.Defaultis10minutes.
watchdog_minor_threshold:Ifithasbeenlongerthanthisperiodbetweenwatchdog
executionscountaminortrip.Defaultis500.
watchdog_major_threshold:Ifithasbeenlongerthanthisperiodbetweenwatchdog
executionscountamajortrip.Defaultis3000.
watchdog_major_maxtriggers:Howmanytimesthemajorwatchdogtimercanbetripped
beforethetestisterminated.Defaultis10.
watchdog_minor_maxtriggers:Howmanytimestheminorwatchdogtimercanbetripped
beforethetestisterminated.Defaultis120.
ap
:Setthepasswordforauthenticationchallenges.Defaultis'password
tls_cert
:SetthenameforTLSCertificatefile.Defaultis'cacert.pem
tls_key:SetthenameforTLSPrivateKeyfile.Defaultis'cakey.pem'
tls_crl
:SetthenameforCertificateRevocationListfile.
Ifnotspecified,X509CRLisnotactivated.
3pcc
:Launchthetoolin3pccmode("ThirdPartycallcontrol").
Thepassedipaddressisdependingonthe3PCCrole.
Whenthefirsttwincommandis'sendCmd'thenthisis
theaddressoftheremotetwinsocket.SIPpwilltryto
connecttothisaddress:porttosendthetwincommand
(Thisinstancemustbestartedafterallother3PCCscenario).
Example:3PCCCAscenario.
Whenthefirsttwincommandis'recvCmd'thenthisis
theaddressofthelocaltwinsocket.SIPpwillopen
thisaddress:porttolistenfortwincommand.
Example:3PCCCBscenario.
tdmmap
:GenerateandhandleatableofTDMcircuits.
Acircuitmustbeavailableforthecalltobeplaced.
Format:tdmmap{03}{99}{58}{131}
key
:keywordvalue
Setthegenericparameternamed"keyword"to"value".
set
:variablevalue
Settheglobalvariableparameternamed"variable"to"value".
dynamicStart:variablevalue
Setthestartoffsetofdynamic_idvaraiable
dynamicMax:variablevalue.Setthemaximumofdynamic_idvariable
VoIPCookbook:349

dynamicStep:variablevalue.Settheincrementofdynamic_idvariable
Signalhandling:
SIPpcanbecontrolledusingposixsignals.Thefollowingsignalsarehandled:
USR1:Similartopress'q'keyboardkey.IttriggersasoftexitofSIPp.
NomorenewcallsareplacedandallongoingcallsarefinishedbeforeSIPpexits.
Example:killSIGUSR1732
USR2:Triggersadumpofallstatisticsscreensin<scenario_name>_<pid>_screens.logfile.
Especiallyusefulinbackgroundmodetoknowwhatthecurrentstatusis.
Example:killSIGUSR2732
Exitcode:
Uponexit(onfatalerrororwhenthenumberofaskedcalls(moption)isreached,
sippexitswithoneofthefollowingexitcode:
0:Allcallsweresuccessful
1:Atleastonecallfailed
97:exitoninternalcommand.Callsmayhavebeenprocessed
99:Normalexitwithoutcallsprocessed
1:Fatalerror
Example:
Runsippwithembeddedserver(uas)scenario:
./sippsnuas
Onthesamehost,runsippwithembeddedclient(uac)scenario
./sippsnuac127.0.0.1

VoIPCookbook:350

APPENDIX C: File /usr/local/etc/opensips/cfg-test-uas.cfg


#globalconfigurationparameters
debug=3#debuglevel(cmdline:dddddddddd)
fork=yes
log_stderror=no#(cmdline:E)
children=8
disable_tcp=yes
disable_dns_blacklist=yes
disable_dns_failover=yes
#Uncommenttheselinestoenterdebuggingmode
#fork=no
#log_stderror=yes
#listen=udp:192.168.2.102:5070
#listen=192.168.0.2:5060
#moduleloading
#setmodulepath
#mpath="/usr/local/lib/openser/modules/"
#mpath="/usr/lib/opensips/modules/"
mpath="/usr/local/lib/opensips/modules/"
loadmodule"sl.so"
#requestroutinglogic
#mainroutinglogic
route{
sl_send_reply("200","OK");
}

VoIPCookbook:351

You might also like