org
Modulo:Asterisk Autores:CristhianNunez(cristhian@codigolibre.org) CarlosCastro(ccastro@codigolibre.org) JophielEspaillat(jespaillat@codigolibre.org) Versin:1.0
ConceptosdeTelefoniayVoIP VoIP
Ventajas
Laprincipalventajadeestetipodeserviciosesqueevitaloscargosaltosdetelefona (principalmentedelargadistancia)quesonusualesdelascompaasdelaRedPblicaTelefnica Conmutada(PSTN).Algunosahorrosenelcostosondebidosautilizarunamismaredparallevarvozy datos,especialmentecuandolosusuariostienensinutilizartodalacapacidaddeunaredyaexistente enlacualpuedenusarparaVoIPsinuncostoadicional.LasllamadasdeVoIPaVoIPentrecualquier proveedorsongeneralmentegratis,encontrasteconlasllamadasdeVoIPaPSTNquegeneralmente cuestanalusuariodeVoIP.
Funcionalidad
VoIPpuedefacilitartareasqueseranmsdifcilesderealizarusandolasredestelefnicascomunes:
Movilidad
LosusuariosdeVoIPpuedenviajaracualquierlugarenelmundoyseguirhaciendoyrecibiendo llamadasdelasiguienteforma:
Lossubscriptoresdelosserviciosdelaslneastelefnicaspuedenhaceryrecibirllamadas localesfueradesulocalidad.Porejemplo,siunusuariotieneunnmerotelefnicoenla ciudaddeNuevaYorkyestviajandoporEuropayalguienllamaasunmerotelefnico,estase recibirenEuropa.AdemssiunallamadaeshechadeEuropaaNuevaYork,estasercobrada comollamadalocal,porsupuestoelusuariodeviajeporEuropadebetenerunaconexina Internetdisponible. LosusuariosdeMensajeraInstantneabasadaenserviciosdeVoIPpuedentambinviajara cualquierlugardelmundoyhaceryrecibirllamadastelefnicas. LostelfonosVoIPpuedenintegrarseconotrosserviciosdisponiblesenInternet,incluyendo videoconferencias,intercambiodedatosymensajesconotrosserviciosenparaleloconla conversacin,audioconferencias,administracindelibrosdedireccioneseintercambiode informacinconotros(amigos,compaeros,etc).
ElEstndarVoIP(H.323)
Definidoen1996porlaUIT(UninInternacionaldeTelecomunicaciones)proporcionaalosdiversos fabricantesunaseriedenormasconelfindequepuedanevolucionarenconjunto.
Caractersticasprincipales Porsuestructuraelestndarproporcionalassiguientesventajas:
Arquitecturadered ElpropioEstndardefinetreselementosfundamentalesensuestructura:
Porordendeantigedad(demsantiguoamsnuevo): H.323ProtocolodefinidoporlaITUT SIPProtocolodefinidoporlaIETF Megaco(TambinconocidocomoH.248)yMGCPProtocolosdecontrol SkinnyClientControlProtocolProtocolopropiedaddeCisco MiNetProtocolopropiedaddeMitel CorNetIPProtocolopropiedaddeSiemens IAXProtocolooriginalparalacomunicacinentrePBXsAsterisk(obsoleto) SkypeProtocolopropietariopeertopeerutilizadoenlaaplicacinSkype IAX2ProtocoloparalacomunicacinentrePBXsAsteriskenreemplazodeIAX JingleProtocoloabiertoutilizadoentecnologaJabber MGCPProtocolopropietariodeCisco
Calidaddelservicio Lacalidaddeesteservicioseestlograndobajolossiguientescriterios: Lasupresindesilencios,otorgamseficienciaalahoraderealizarunatransmisindevoz,yaque seaprovechamejorelanchodebandaaltransmitirmenosinformacin. CompresindecabecerasaplicandolosestndaresRTP/RTCP. Priorizacindelospaquetesquerequieranmenorlatencia.Lastendenciasactualesson: CQ(CustomQueuing):Asignaunporcentajedelanchodebandadisponible. PQ(PriorityQueuing):Estableceprioridadenlascolas. WFQ(WeightFairQueuing):Seasignalaprioridadaltrficodemenoscarga. DiffServ:Evitatablasdeencaminadosintermediosyestablecedecisionesderutasporpaquete. LaimplantacindeIPv6queproporcionamayorespaciodedireccionamientoylaposibilidadde tunneling.
PrincipalesprotocolosdeVoIP
H.323 ElprotocoloH.323secreoriginalmenteparaproveerdeunmecanismoparaeltransportede aplicacionesmultimediaenLANs(Redesderealocal)perohaevolucionadorpidamentepara dirigirlascrecientesnecesidadesdelasredesdeVoIP. UnpuntofuertedeH.323eralarelativaytempranadisponibilidaddeungrupodeestndares,no solodefiniendoelmodelobsicodellamada,sinoqueademsdefinaserviciossuplementarios, necesariosparadirigirlasexpectativasdecomunicacionescomerciales.H.323fueelprimer estndardeVoIPenadoptarelestndardeIETFdeRTP(ProtocolodeTransporteentiempoReal)
Protocolos H.323tienereferenciashaciaalgunosotrosprotocolosdeITUTcomo:
H.225.0Protocoloutilizadoparadescribirlasealdellamada,elmedio(audioy video),elempaquetamientodelastramas,lasincronizacindetramasdemedioylos formatosdelosmensajesdecontrol. H.245Protocolodecontrolparacomunicacionesmultimedia.Describelosmensajesy procedimientosutilizadosparaabrirycerrarcanaleslgicosparaaudio,videoydatos, capacidaddeintercambio,controleindicaciones. H.450DescribelosServiciosSuplementarios. H.235DescribelaseguridaddeH.323. H.239Describeelusodeladobletramaenvideoconferencia,normalmenteunopara videoentiemporealylaotroparapresentacin. H.281DescribeelcontroldecmaralejanaparamovimientosPTZ(PanTiltZoom)
Diseo ElprotocoloSIPfuediseadoporelIETFconelconceptode"cajadeherramientas",esdecir, elprotocoloSIPsevaledelasfuncionesaportadasporotrosprotocolos,lasquedaporhechas ynovuelveadesarrollarlas.DebidoaesteconceptoSIPfuncionaencolaboracinconotros muchosprotocolos.ElprotocoloSIPseconcentraenelestablecimiento,modificaciny terminacindelassesiones,secomplementa,entreotros,conelSDP,quedescribeelcontenido multimediadelasesin,porejemploqudireccionesIP,puertosycdecsseusarndurantela comunicacin.TambinsecomplementaconelRTP(RealtimeTransportProtocol).RTPesel verdaderoportadorparaelcontenidodevozyvideoqueintercambianlosparticipantesenuna sesinestablecidaporSIP. Otroconceptoimportanteensudiseoeseldeextensibilidad.Estosignificaquelasfunciones bsicasdelprotocolo,definidasenlaRFC3261,puedenserextendidasmedianteotrasRFC (RequestsforComments)dotandoalprotocolodefuncionesmspotentes. Lasfuncionesbsicasdelprotocoloincluyen:
Determinarlaubicacindelosusuarios,proveyendonomadicidad. Establecer,modificaryterminarsesionesmultipartitasentreusuarios.
ElprotocoloSIPadoptaelmodeloclienteservidoryestransaccional.Elclienterealiza peticiones(requests)queelservidoratiendeygeneraunaomsrespuestas(dependiendodela naturaleza,Mtodo,delapeticin).Porejemploparainiciarunasesinelclienterealizauna peticinconelmtodoINVITEendondeindicaconquusuario(orecurso)quiereestablecerla sesin.Elservidorrespondeyasearechazandooaceptandoesapeticinenunaseriede respuestas.Lasrespuestasllevanuncdigodeestadoquebrindaninformacinacercadesilas peticionesfueronresueltasconxitoosiseprodujounerror.Lapeticininicialytodassus respuestasconstituyenunatransaccin. Losservidores,pordefecto,utilizanelpuerto5060enTCP(TransmissionControlProtocol)y UDP(UserDatagramProtocol)pararecibirlaspeticionesdelosclientesSIP. ComounadelasprincipalesaplicacionesdelprotocoloSIPeslatelefona,unobjetivodeSIP fueaportarunconjuntodelasfuncionesdeprocesamientodellamadasycapacidadespresentesen laredpblicaconmutadadetelefona.As,implementfuncionestpicasdedichared,comoson: llamaraunnmero,provocarqueuntelfonosuenealserllamado,escucharlasealdetonoo deocupado.LaimplementacinyterminologaenSIPsondiferentes. SIPtambinimplementamuchasdelasmsavanzadascaractersticasdelprocesamientodellamadas deSS7,aunquelosdosprotocolossonmuydiferentes.SS7esaltamentecentralizado, caracterizadoporunacomplejaarquitecturacentralderedyunosterminalestontos(los tradicionalestelfonosdeauricular).SIPesunprotocolopeertopeer(tambinllamadop2p). Comotalrequiereunncleoderedsencillo(yaltamenteescalable)coninteligenciadistribuida enlosextremosdelared,incluidaenlosterminales(yaseamediantehardwareosoftware). MuchascaractersticasdeSIPsonimplementadasenlosterminalesenoposicinalas
AgentesdeUsuario Losusuarios,quepuedensersereshumanosoaplicacionesdesoftware,utilizanparaestablecer sesionesloqueelprotocoloSIPdenomina"Agentesdeusuario".Estosnosonmsquelospuntos extremosdelprotocolo,esdecirsonlosqueemitenyconsumenlosmensajesdelprotocoloSIP. Unvideotelfono,untelfono,unclientedesoftware(softphone)ycualquierotrodispositivo similaresparaelprotocoloSIPunagentedeusuario.ElprotocoloSIPnoseocupadela interfazdeestosdispositivosconelusuariofinal,sloseinteresaenlosmensajesqueestos generanycmosecomportanalrecibirdeterminadosmensajes. Losagentesdeusuariosecomportancomoclientes(UAC:UserAgentClients)ycomoservidores (UAS:UserAgentServers).SonUACcuandorealizanunapeticinysonUAScuandolareciben.Por estolosagentesdeusuariodebenimplementarunUACyunUAS. Ademsdelosagentesdeusuarioexistenotrasentidadesqueintervienenenelprotocolo,estos sonlosServidoresdeRegistrooRegistrar,losProxyylosRedirectores.Acontinuacinse describesufinalidad.
ServidoresdeRegistrooRegistrar ElprotocoloSIPpermiteestablecerlaubicacinfsicadeunusuariodeterminado,estoesen qupuntodelaredestconectado.Paraellosevaledelmecanismoderegistro.Estemecanismo funcionacomosigue: Cadausuariotieneunadireccinlgicaqueesinvariablerespectodelaubicacinfsicadel usuario.UnadireccinlgicadelprotocoloSIPesdelaformausuario@dominioesdecirtienela mismaformaqueunadireccindecorreoelectrnico.Ladireccinfsica(denominada"direccin decontacto")esdependientedellugarendondeelusuarioestconectado(desudireccinIP). Cuandounusuarioinicializasuterminal(porejemploconectandosutelfonooabriendosu softwaredetelefonaSIP)elagentedeusuarioSIPqueresideendichoterminalenvauna peticinconelmtodoREGISTERaunServidordeRegistro(Registrareningls),informandoa qudireccinfsicadebeasociarseladireccinlgicadelusuario.Elservidorderegistro realizaentoncesdichaasociacin(denominadabinding).Estaasociacintieneunperodode vigenciaysinoesrenovada,caduca.Tambinpuedeterminarsemedianteundesregistro.Laforma enquedichaasociacinesalmacenadaenlarednoesdeterminadaporelprotocoloSIP,peroes vitalqueloselementosdelaredSIPaccedanadichainformacin.
Casostpicosdeservidores Unconjuntodeusuariosquepertenecenaunacompaaoproveedordeserviciosde comunicaciones,conformanundominio.Estedominio,queseindicaenunadireccinSIPdespus delcarcter"@"esnormalmenteatendidoporunservidor(omsdeuno).Esteservidorrecibe laspeticioneshaciasususuarios.Esteservidorserelencargadodedeterminarladireccin fsicadelusuariollamado.Unservidorquerecibelaspeticionesdestinadasaundominio especficoesdenominadoservidorentrante(InboundServer). Eshabitualtambin,queexistaunservidorquerecibalaspeticionesoriginadasporlos usuariosdeundominiohaciaotrosdominios.EsterecibeelnombredeServidorSaliente (OutboundServer). Unagentedeusuarionormalmenteencaminatodossuspedidoshaciaunservidordesupropio dominio.Esestequiendetermina(porsuspropiosmediosovalindosedeotrosservidores)las ubicacionesdelosusuariosquesonllamadosporelagentedeusuarioencuestin.
Formatodelosmensajes LosmensajesqueseintercambianenelprotocoloSIPpuedenserpeticionesorespuestas. Laspeticionestienenunalneadepeticin,unaseriedeencabezadosyuncuerpo. Lasrespuestastienenunalneaderespuesta,unaseriedeencabezadosyuncuerpo. Enlalneadepeticinseindicaelpropsitodelapeticinyeldestinatariodelapeticin. Laspeticionestienendistintasfunciones.Elpropsitodeunapeticinestdeterminadoporlo quesedenominaelMtodo(Method)dedichapeticin,quenoesmsqueunidentificadordel propsitodelapeticin.Enla[RFC3261]sedefinenlosmtodosbsicosdelprotocolo.Existen otrosmtodosdefinidosenextensionesalprotocoloSIP. Enlalneaderespuestaseindicaelcdigodeestadodelarespuestaqueesunnmeroindica elresultadodelprocesamientodelapeticin. Losencabezadosdepeticionesyrespuestasseutilizanparadiversasfuncionesdelprotocolo relacionadasconelencaminamientodelosmensajes,autenticacindelosusuarios,entreotras. Laextensibilidaddelprotocolopermitecrearnuevosencabezadosparalosmensajesagregandode estamanerafuncionalidad. Elcuerpodelosmensajesesopcionalyseutilizaentreotrascosasparatransportarlas descripcionesdelassesionesquesequierenestablecer,utilizandolasintaxisdelprotocolo SDP.
IAX2 IAX(InterAsteriskeXchangeprotocol)esunodelosprotocolosutilizadoporAsterisk,un servidorPBX(centraltelefnica)decdigoabiertopatrocinadoporDigium.Esutilizadopara manejarconexionesVoIPentreservidoresAsterisk,yentreservidoresyclientesquetambin utilizanprotocoloIAX. ElprotocoloIAXahoraserefieregeneralmentealIAX2,lasegundaversindelprotocoloIAX.El protocolooriginalhaquedadoobsoletoenfavordeIAX2. ElprincipalobjetivodeIAXhasidominimizarelanchodebandautilizadoenlatransmisinde vozyvdeoatravsdelaredIP,conparticularatencinalcontrolyalasllamadasdevozy proveyendounsoportenativoparasertransparenteaNAT.LaestructurabsicadeIAXse fundamentaenlamultiplexacindelasealizacinydelflujodedatossobreunsimplepuerto UDPentredossistemas. IAXesunprotocolobinarioyestdiseadoyorganizadodemaneraquereducelacargaenflujos dedatosdevoz.Elanchodebandaparaalgunasaplicacionessesacrificaenfavordelanchode bandaparaVoIP.
IAX2esrobusto,llenodenovedadesymuysimpleencomparacinconotrosprotocolos. Permitemanejarunagrancantidaddecdecsyungrannmerodestreams,loque significaquepuedeserutilizadoparatransportarvirtualmentecualquiertipodedato. Estacapacidadlohacemuytilpararealizarvideoconferenciasorealizar presentacionesremotas. IAX2utilizaunnicopuertoUDP,generalmenteel4569,paracomunicacionesentrepuntos finales(terminalesVoIP)parasealizacinydatos.Eltrficodevozestransmitido inband,loquehaceaIAX2unprotocolocasitransparentealoscortafuegosyrealmente eficazparatrabajardentroderedesinternas.EnestosediferenciadeSIP,queutiliza unacadenaRTPoutofbandparaentregarlainformacin. IAX2soportaTrunking(red),dondeunsimpleenlacepermiteenviardatosysealizacin pormltiplescanales.CuandoserealizaTrunking,losdatosdemltiplesllamadasson manejadosenunnicoconjuntodepaquetes,loquesignificaqueundatagramaIPpuede entregarinformacinparamsllamadassincrearlatenciaadicional.Estoesunagran ventajaparalosusuariosdeVoIP,dondelascabecerasIPsonungranporcentajedel anchodebandautilizado.
Masadelantehablaremosmasafondodeaplicaciones.
Extrayendoloscdigosfuentes [root@blackangelsrc]#tarxzvfasterisk1.4.19.tar.gz [root@blackangelsrc]#tarxzvflibpri1.4.3.tar.gz [root@blackangelsrc]#tarxzvfzaptel1.4.9.2.tar.gz CompilandoZaptel [root@blackangelsrc]#cdzaptel1.4.9.2 [root@blackangelsrc]#./configure [root@blackangelsrc]#makemenuselect [root@blackangelsrc]#make [root@blackangelsrc]#makeinstall [root@blackangelsrc]#makeconfig CompilandoLibpri [root@blackangelsrc]#cdlibpri1.4.3 [root@blackangelsrc]#make [root@blackangelsrc]#makeinstall CompilandoAsterisk [root@blackangelsrc]#cdasterisk1.4.19 [root@blackangelsrc]#./configure [root@blackangelsrc]#makemenuselect [root@blackangelsrc]#make [root@blackangelsrc]#makeinstall [root@blackangelsrc]#makesamples [root@blackangelsrc]#makeprogdocs [root@blackangelsrc]#makeconfig
MasadelanteexplicaremoscomoconfigurarlatarjetaFXO.
Conestosminimosdatosyapodemosiralarchivoextensions.confycrearnuestrodialplan. [root@familyasterisk]#vim/etc/asterisk/extensions.conf [extensiones] exten=>100,1,Answer();Contestalallamada exten=>100,2,Playback(helloworld);Suenaelarchivohelloworld exten=>100,3,Hangup() ;Cuelgalallamada Indicaquecuandocualquieradelosusuariosregistrados(101o102)marquelaextension100se iniciaraunasecuenciadeaplicacionesdondelaprimeraesAnswer,luegoescucharaunagrabacion (helloworld)yfinalmentecolgara. Masaplicaciones Background:LaaplicacionBackgroundreproduceunamelodiaomensajemientrasseesperaelmarcadode cualquiertecla.Adiferenciadeplaybackestapermiteelmarcadodeteclasmientrasqueplaybackno. [extensiones] exten=>100,1,Answer();contestalallamada exten=>100,n,Background(enterextofperson);esperadigitosypasaalaextensionenelmismo contexto exten=>100,n,Hangup()
Dinamica:Utilizaciondeagents.conf Adiferenciadelaestatica,aquidebemosescribirnoelnumerodelusuarioperosielnumerodel agentequeestaregistradoenelarchivoagents.conf.Porejemplo,member=>Agent/1001,member=> Agent/1002,member=>Agent/1003,indicaquelosagentes1001,1002y1003perteneceranaesacola.Si sedecideutilizarestemetodoentonceslasaplicacionesAgentloginyAgentCallbacklogin. Ventajas:Laventajaprincipalesqueelusuariopodrialoguearsedesdecualquierterminalo extensionconsolodigitarsuusuarioyclaveenlaaplicacionAsterisklogin. OpcionesdeQueues.conf: strategy:Determinacomoencualordenlasllamadasentraranalosagentes.Lasopcionesson: ringall:Lallamadaentraentodoslosagentesycualquierapodraresponder roundrobin:Lallamadaentraencadaagentedisponible leastrecent:Lallamadaentraalagenteconmastiemposincontestar fewestcalls:Lallamadaentraalagenteconmenostiemposincontestar random:Seleccionaalagentedemaneraaleatoriasinningunparametro rrmemory:roundrobinconmemoria.Inicialaserieenaquelultimoquecontesto periodicannounce:Realizamensajesperiodicos(Ejemplo:sullamadaesimportanteparanosotros...) periodicannouncefrequency:Establececonquefrecuenciaanuncialosmensajes joinempty:Estaopcioncontrolasilasllamadasentrantespuedenentraraunacolasinmiembros.Las opcionesdisponiblesson: yes:Llamadasentrantespuedeningresaraunacolasinmiembrosoestosnodisponibles. No:Llamadasentrantesnopuedeningresaraunacolasinmiembros strict:Llamadasentrantesnopuedeningresaraunacolasinmiembrosoestosnodisponibles. Music:Establecelamusicaparalaespera timeout:Cuantotiemposelepermitealtelefonodeunagentesonarantesdeconsiderarsetimeout retry:Eltiempoaesperarantesdeintentarconlosagentesnuevamente maxlen:Numeromaximodellamadasentrantespermitidasenunacola.0esilimitado Ahorallevaremosestoalapractica: CreandoColasEstaticas Paralacreaciondecolasestaticasseeditanlosarchivosqueues.confyextensions.conf. Queues.conf Seagregarauncontextoconelnombre[micola]conlossiguientesparametros [micola] context=extensiones periodicannounce=fcldagentsbusy periodicannouncefrequency=60 joinempty=strict music=default strategy=rrmemory timeout=15 retry=2 maxlen=0 member=>SIP/101;Especificamosestaticamentecualesseranlasextensionesregistradasenestacola. member=>SIP/102 member=>SIP/103