Introduccion a La VoIP y Asterisk

Embed Size (px)

Citation preview

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    1/286

    http://www.irontec.com

    Introduccin a la VoIP yAsterisk

    irontec

    Irontec VoIP

    http://www.irontec.com

    mailto:[email protected]:[email protected]
  • 7/30/2019 Introduccion a La VoIP y Asterisk

    2/286

    Curso: Introduccin a la VoIP y Asterisk

    2

    Antes de empezar

    Conocimientos previos recomendados: Manejo bsico de la consola de GNU/Linux. Inters Ganas de aprender C

    8

    H10

    N4

    O8

    Qu sabes de Asterisk? Lo has utilizado?

    Qu intenciones de uso tienes?

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    3/286

    Introduccin

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    4/286

    Curso: Introduccin a la VoIP y Asterisk

    4

    Conceptos bsicos sobre telefona tradicional

    Telefona Tradicional

    Telfono Inventado en 1876 por AntonioMeucci (atribuido a Alexander Graham Bellhasta el 2002).

    Idea principal: Hacer audible la palabra hablada a largas

    distancias

    Originalmente: Transmisin sobre un hilo dehierro, comunicacin punto a punto.

    Hoy en da: 1000 millones de telfonosrepartidos por todo el mundo.

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    5/286

    Curso: Introduccin a la VoIP y Asterisk

    5

    Conmutacin de circuitos

    La telefona tradicional se basaba enconmutacin de circuitos.

    Desde el comienzo hasta el final de unallamada se estableca un camino fsico. Consumo de recursos.

    Inicialmente -> redes totalmente malladas 0% escalable. Cambio a estructura en estrella.

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    6/286

    Curso: Introduccin a la VoIP y Asterisk

    6

    Conmutacin de circuitos (2)

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    7/286

    Curso: Introduccin a la VoIP y Asterisk

    7

    Conmutacin de circuitos (3)

    I ownyou...

    ?

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    8/286

    Curso: Introduccin a la VoIP y Asterisk

    8

    Conmutacin de circuitos (4)

    Al principio, telefona 100% analgica. Gestin del crecimiento

    Analgico: FDM Digital: TDM

    Posteriormente los switches se sustituyeronpor switches digitales. Digital vs. Analgico

    Digital es ms barato.

    Digital tiene mejor calidad. Analgico ms rpido (switching). Complejidad de los terminales digitales.

    Solucin: terminales analgicos y red troncaldigital.

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    9/286

    Curso: Introduccin a la VoIP y Asterisk

    9

    Sealizacin

    Necesidad de comunicacin entre distintossistemas.

    Ligado a la evolucin de centrales/terminalesde usuario

    Sealizacin analgica Inband

    Sealizacin digital Access signalling (del terminal a la central)

    Ex. DTMF

    Trunk signalling (entre centrales) CAS (sealizacin asociada al canal) CCS (sealizacin por canal comn)

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    10/286

    Curso: Introduccin a la VoIP y Asterisk

    10

    Sealizacin (2)

    Actualmente se usa SS7 (CCS) Sealizacin asociada al circuito

    Relativa a la llamada

    Sealizacin no asociada al circuito Consulta de tablas de encaminamiento

    Servicios suplementarios Desvos de llamada...

    Paradigma de SS7 La inteligencia reside en la red (terminales

    'tontos') El acceso a la red determina los servicios

    disponibles

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    11/286

    Curso: Introduccin a la VoIP y Asterisk

    11

    Conmutacin de paquetes

    En conmutacin de circuitos raramente seutilizaba todo el ancho de banda disponible.

    TDM ineficiente gestionando el uso de la red. El contenido del paquete determina la ruta.

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    12/286

    Curso: Introduccin a la VoIP y Asterisk

    12

    Conmutacin de paquetes VS. Conmutacin de circuitos

    C. de circuitos Ms rpida No se examina el contenido de los paquetes

    C. de paquetes Mejor gestin de recursos Precio

    C d i l i k

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    13/286

    Curso: Introduccin a la VoIP y Asterisk

    13

    El paradigma IP

    Su NICO propsito es proporcionarconectividad.

    La red es independiente de la tecnologasubyacente.

    Las aplicaciones pueden utilizar unainfraestructura comn IP.

    Ethernet | ATM | ...

    Conectividad IP

    Aplicaciones

    C I t d i l V IP A t i k

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    14/286

    Curso: Introduccin a la VoIP y Asterisk

    14

    El paradigma IP (2)

    Protocolos de extremo a extremo IP solo 'lleva' cosas La INTELIGENCIA esta en los extremos

    Internet es idiota :)

    Justo lo contrario que en la telefonatradicional...

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    15/286

    Qu es la VoIP?

    Curso: Introduccin a la VoIP y Asterisk

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    16/286

    Curso: Introduccin a la VoIP y Asterisk

    16

    Conceptos bsicos sobre VozIP

    Voz sobre IP: Qu es ?

    Utilizar redes de datos IP para realizarllamadas de Voz.

    En particular: Realizar llamadas porInternet (IP = Internet Protocol).

    Internet: La mayor red de datos delmundo.

    La tecnologa Voz sobre IP se encuentraahora mismo en su madurez, perocomenz por los aos 90.

    Tecnologa conocida como 'VoIP'.

    Curso: Introduccin a la VoIP y Asterisk

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    17/286

    Curso: Introduccin a la VoIP y Asterisk

    17

    Conceptos bsicos sobre VozIP

    Voz sobre IP: Caractersticas Principales

    Se utiliza una nica red. Si dos empresas estnunidas a travs de Internet, Porqu noaprovecharlo?

    Se administra una nica red. Finalmente se puede hablar de: Estndaresabiertos e internacionales. Interoperabilidad,Bajada de precios en proveedores y fabricantesde hardware VoIP.

    Calidad: Es posible conseguir la misma calidade incluso mayor gracias a nuevos codecs.

    Fiabilidad: En LAN, se puede lograr una granfiabilidad. En Internet tambin, pero existenquizs demasiados factores.

    Curso: Introduccin a la VoIP y Asterisk

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    18/286

    Curso: Introduccin a la VoIP y Asterisk

    18

    Razones del xito de VoIP

    Gran expansin actual de las redes de

    datos LAN, WAN... Internet: ADSL, ADSL2+, VDSL WIFI, WiMax...

    Posibilidad de desarrollar nuevosservicios rpidamente.

    Menor inversin inicial para losproveedores..

    Costes ms bajos para los clientes.

    Curso: Introduccin a la VoIP y Asterisk

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    19/286

    Curso: Introduccin a la VoIP y Asterisk

    19

    Problemas de la VoIP

    VoIP: Problemas

    NAT: El cncer de la VoIP. Distintos tipos, no esfcilmente manejable.

    QoS: Necesidad de ofrecer calidad de servicio, al

    ser la voz crtica en tiempo real. Latencia: Tiempo que tarda la voz en llegar al

    destino. Jitter: Variacin de la latencia. Ancho de banda: En Espaa conexiones

    asimtricas. El ancho de banda es muy caro.

    Curso: Introduccin a la VoIP y Asterisk

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    20/286

    Curso: Introduccin a la VoIP y Asterisk

    20

    Conceptos bsicos sobre VozIP

    Voz sobre IP: Elementos Implicados

    Telfonos IP: Fsicamente, son telfonosnormales, con apariencia tradicional.Incorporan un conector RJ45 paraconectarlo directamente a una red IP enEthernet. No pueden ser conectados alineas telefnicas tradicionales.

    SNOM 360 SIPURA 841

    Curso: Introduccin a la VoIP y Asterisk

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    21/286

    Cu so oducc a a o y s e s

    21

    Conceptos bsicos sobre VozIP

    Voz sobre IP: Elementos Implicados (II)

    Adaptadores anlogicos IP: Permitenaprovechar los telfonos analgicos

    actuales, transformando su seal analgicaen los protocolos de VozIP.

    LINKSYS PAP2

    Curso: Introduccin a la VoIP y Asterisk

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    22/286

    y

    22

    Conceptos bsicos sobre VozIP

    Voz sobre IP: Elementos Implicados (III)

    Softphones: Programas que permitenllamar desde el ordenador utilizandotecnologas VozIP.

    Curso: Introduccin a la VoIP y Asterisk

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    23/286

    y

    23

    Conceptos bsicos sobre VozIP

    Voz sobre IP: Elementos Implicados (IV)

    Centralitas IP: Centralitas de telefonaque permiten utilizar de forma combinadala tecnologa VozIP (mixtas) o

    exclusivamente IP (puras).

    Avaya IP Office

    Curso: Introduccin a la VoIP y Asterisk

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    24/286

    24

    Conceptos bsicos sobre VozIP

    Voz sobre IP: Visin General

    Curso: Introduccin a la VoIP y Asterisk

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    25/286

    25

    Proveedores de Servicios VozIP

    Funcin Principal

    El principal servicio de los diferentesproveedores de Voz sobre IP es el de hacerde pasarela hacia la red telefnica pblica

    (conocida como PSTN/POTS) a costes muyreducidos.

    Curso: Introduccin a la VoIP y Asterisk

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    26/286

    26

    Proveedores de Servicios VozIP

    Caractersticas Principales

    Soportan determinados protocolos estndar(SIP,H323 normalmente).

    Algunos tienen protocolos propietarios:

    Skype, ... Soportan determinados codecs (GSM, G.729

    normalmente). Casi siempre permiten realizar ms de una

    llamada a la vez. Las llamadas entre usuarios de un mismo

    proveedor son gratuitas, en algunos casosexisten 'prefijos' para saltar entre redes de

    proveedores conocidos.

    Curso: Introduccin a la VoIP y Asterisk

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    27/286

    27

    Proveedores de Servicios VozIP

    Caractersticas Avanzadas

    Enlace PSTN -> VoIP Numeracin geogrfica: 944, 91... Numeracin 902, 700 ...

    Curso: Introduccin a la VoIP y Asterisk

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    28/286

    28

    Proveedores de Servicios VozIP

    Algunos Proveedores

    Mercado parcialmente sin regular! Dependencia de Internet.

    Curso: Introduccin a la VoIP y Asterisk

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    29/286

    29

    Tecnologas Voz sobre IP

    Tecnologas Voz sobre IP

    Protocolo: Es el 'lenguaje' que se utilizapara negociar y establecer lascomunicaciones de voz sobre IP. Los ms

    importantes: SIP, H323 e IAX2.

    Codec: Es la forma de digitalizar la vozhumana para ser enviada por las redes de

    datos. Algunos ejemplos: G.711, G729,GSM, iLBC, Speex, G.723.

    Curso: Introduccin a la VoIP y Asterisk

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    30/286

    30

    Tecnologas Voz sobre IP

    Codecs

    Los codecs se utilizan para transforma laseal de voz analgica en una versindigital.

    Los softphones, hardphones o centralitas IPsoportan una serie de codecs cada uno.Cuando hablan entre si negocian un codeccomn.

    Aspectos a tener en cuenta por codec: Calidad de sonido Ancho de banda requerido Coste de computacin

    Curso: Introduccin a la VoIP y Asterisk

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    31/286

    31

    Tecnologas Voz sobre IP

    Comparativa de Codecs

    Fuentes: cisco.com (ID:7934),terracal.com (FAQ), asteriskguru.comBandwith calculator)

    CODEC Codec Bitrate Intervalo A.Banda(Ethernet)

    G.711 64 Kbps 10ms 87 Kbps

    G.729 8 kbps 10ms 31,2 Kbps

    Speex 4-44,2 Kbps 30 17,63 59,63 Kbps

    ILBC 13,3 Kbps 30 30,83 KbpsG.723.1 6,3 Kbps 37 21,9 Kbps

    GSM 13,2 Kbps 20 28,63Kbps

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    32/286

    El protocolo SIP

    Curso: Introduccin a la VoIP y Asterisk

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    33/286

    33

    Arquitectura de Conferencias Multimedia en Internet

    Curso: Introduccin a la VoIP y Asterisk

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    34/286

    34

    RTP y RTCP

    Protocolo de transporte en Tiempo Real. Requerimiento de aplicaciones con

    retardo ~ 0. Internet es un medio hostil

    Latencias Jitter

    Para solucionarlo: Timestamps Nmeros de secuencia

    Si tenemos varios streams de audio/vdeo, esnecesaria la sincronizacin RTCP

    Asocia los tiemstamps con un RealTime Clock

    Curso: Introduccin a la VoIP y Asterisk

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    35/286

    35

    SAP

    Session Announcement Protocol Sirve para 'anunciar' una sesin multimedia

    Hoy a las 8, pelcula de noseke... Como la revista de la TV

    No se encarga de describir la sesin,

    para eso tenemos SDP

    Curso: Introduccin a la VoIP y Asterisk

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    36/286

    36

    SDP

    Session Description Protocol Contiene toda la informacin que un usuario

    puede necesitar para unirse a una sesinmultimedia.

    Ofrece la siguiente informacin IP para conectarse a la sesin Codecs soportados Informacin descriptiva ...

    Curso: Introduccin a la VoIP y Asterisk

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    37/286

    37

    Recapitulando...

    Hasta ahora sabemos hacer 2 cosas Anunciar una sesin multimedia Describirla

    Pero... como indicamos a alguien que seuna? Hay que INVITARLE a inicial una sesin

    SIP: Session Initiation Protocol

    Curso: Introduccin a la VoIP y Asterisk

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    38/286

    38

    Origen

    Para cubrir la carencia de no poder iniciar

    una sesin multimedia con alguien, surgiSIP.

    Estndar de la IETF, recogido en el RFC3261(SIPv2)

    'Merge' entre SIPv1 (Session Invitation Protocol) SCIP (Simple Conference Invitation Protocol)

    Curso: Introduccin a la VoIP y Asterisk

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    39/286

    39

    Funcionalidades

    SIP proporciona un mecanismo para iniciar,

    modificar y finalizar una sesin.

    Independiente del tipo de sesin multimediay de su descripcin. Podemos invitar a alguien a una partida online de

    mus mediante SIP, utilizando MGDP (Mus GameDescription Protocol) para describir la sesin. XD

    Movilidad del usuario Necesidad de conocer su localizacin. SIP URIs: identificar a usuario SIP.

    sip:[email protected]

    Los usuarios registran su ubicacin en el servidor.

    Curso: Introduccin a la VoIP y Asterisk

    mailto:[email protected]:[email protected]
  • 7/30/2019 Introduccion a La VoIP y Asterisk

    40/286

    40

    Entidades SIP

    User-Agent: entidad con la que interacta el

    usuario. Telfono SIP Softphone

    Servidor Proxy: servidor que gestiona las

    invitaciones a las sesiones Sabe donde esta el usuario destino, as que le

    enruta el mensaje. Registrar: servidor que acepta peticiones de

    registro, y guarda la ubicacin del usuario. Location Server: no es una entidad SIP, pero

    es necesario para localizar al usuario. Normalmente los 3 anteriores son el mismo

    software.

    Curso: Introduccin a la VoIP y Asterisk

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    41/286

    41

    Porqu SIP es el camino a seguir

    Diferencia entre el establecimiento y la

    descripcin de la sesin Extensible

    Protocolo de extremo a extremo Un usuario ES DUEO DE SU SESIN Paradigma IP vs. Paradigma SS7

    Favorece la interoperabilidad El 'core' es relativamente sencillo: 6

    mtodos

    Funcionalidades adicionales mediante extensiones Es escalable

    La inteligencia esta en los extremos La red guarda muy pocos datos del estado

    Curso: Introduccin a la VoIP y Asterisk

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    42/286

    42

    Mtodos SIP INVITE

    Invita a un usuario a una sesin multimedia Modifica una sesin multimedia existente

    ACK Proporciona un 3-way-handshake en el INVITE, sirve para

    confirmar la recepcin de una respuesta final a un

    INVITE CANCEL

    Cancela una transaccin en curso BYE

    Se utilizan para abandonar una sesin REGISTER

    Sirven para informar al servidor de la ubicacin delusuario

    OPTIONS

    Nos permite consultar qu mtodos soporta un usuario.

    Curso: Introduccin a la VoIP y Asterisk

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    43/286

    43

    Transacciones Cliente-Servidor

    Un cliente GENERA peticiones.

    Un servidor RECIBE peticiones. El UA que genera peticiones se conoce como

    UAC: User Agent Client. El UA que responde a las peticiones se

    conoce como UAS: User Agent Server. Una peticin, junto con las respuestas que

    genera, es una TRANSACCIN.

    Curso: Introduccin a la VoIP y Asterisk

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    44/286

    44

    Respuestas SIP

    100 199: provisional e informativa

    200 299: afirmativa 300 399: redireccin 400 499: error del cliente 500 599: error del servidor 600 699: fallo global

    Las respuestas incluyen un mensajedescriptivo, pero lo importante es el cdigonumrico.

    Curso: Introduccin a la VoIP y Asterisk

    INVITEAli B b

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    45/286

    45

    INVITE

    INVITE

    180 Ringing

    Alice Bob

    200 OK

    Curso: Introduccin a la VoIP y Asterisk

    ACKAlice B b

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    46/286

    46

    ACK

    INVITE

    180 Ringing

    ACK

    200 OK

    Conversacin

    Alice Bob

    Curso: Introduccin a la VoIP y Asterisk

    ACK (2)

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    47/286

    47

    ACK (2)

    INVITE es el nico mtodo que utiliza 3 way

    handshake. El resto de mensajes esperan una respuesta

    veloz, pero en el caso del INVITE, esta puedetardar.

    El UAC manda al UAS un ACK, indicando queha recibido su respuesta.

    Aseguramos el correcto establecimiento dela sesin sobre un medio no fiable: UDP

    Curso: Introduccin a la VoIP y Asterisk

    CANCELAlice Bob

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    48/286

    48

    CANCEL

    INVITE

    180 Ringing

    ACK

    200 OK

    Alice Bob

    CANCEL

    487 Transaction Cancelled

    Curso: Introduccin a la VoIP y Asterisk

    BYEAlice Bob

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    49/286

    49

    BYE

    INVITE

    180 Ringing

    ACK

    200 OK

    Alice Bob

    BYE

    200 OK

    Conversacin

    Curso: Introduccin a la VoIP y Asterisk

    REGISTERAlice Servidor SIP

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    50/286

    50

    REGISTER

    REGISTER

    401 Unauthorized

    REGISTER

    200 OK

    Alice Servidor SIP

    Curso: Introduccin a la VoIP y Asterisk

    OPTIONSAlice Bob

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    51/286

    51

    OPTIONS

    OPTIONS

    Alice Bob

    200 OK

    Curso: Introduccin a la VoIP y Asterisk

    Cabeceras SIP

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    52/286

    52

    Cabeceras SIP From

    Identifica al que origina una peticin. Call-ID

    Representa una relacin entre 2 dispositivos SIP,relacionando un INVITE y todas las transaccionesasociadas.

    Contact Incluye una SIP URL, indicando donde se puede

    contactar con el usuario. To

    Identifica al receptor de una peticin. Va Contiene todos los proxys que han gestionado una

    peticin. Hace que las respuestas sigan el mismo camino

    que las peticiones Curso: Introduccin a la VoIP y Asterisk

    Conceptos importantes: Transaccin y DilogoNB

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    53/286

    53

    Conceptos importantes: Transaccin y Dilogo

    Transaccin Una peticin + respuesta, SI la respuesta esafirmativa (INVITE + 200 OK) Una peticin + respuesta negativa + ACK

    (INVITE + 404 Not Found + ACK) Identificado unvocamente por el 'branch' de la

    cabecera Va. Dilogo

    Concepto de 'llamada' Identificado unvocamente por el From tag, To tag

    y Call-ID.

    NB

    Curso: Introduccin a la VoIP y Asterisk

    Tipos de proxys SIP

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    54/286

    54

    Tipos de proxys SIP

    Stateful Proxy Su mbito es la transaccin. No entiende de dilogos, pero s de transacciones.

    Stateless Proxy No guardan ningn tipo de estado.

    IMPORTANTE: Asterisk NO es un proxy SIP!!

    Curso: Introduccin a la VoIP y Asterisk

    Routing de mensajes SIP

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    55/286

    55

    Routing de mensajes SIPAlice BobServidor SIP

    INVITE INVITE180 Ringing180 Ringing

    200 OK200 OK

    ACK

    Conversacin

    BYE

    200 OK

    Curso: Introduccin a la VoIP y Asterisk

    Routing de mensajes SIP (2)

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    56/286

    56

    ou g de e sajes S ( )

    Despus del 200 OK, Alice ya sabe donde esta

    Bob (Contact) Las transacciones siguientes (ACK y BYE-200

    OK) van directamente de extremo a extremo. Podemos alterar este comportamiento con las

    cabeceras Record-Route y Route Si queremos facturar, queremos estar al tanto de la

    sealizacin...

    Curso: Introduccin a la VoIP y Asterisk

    Routing de mensajes SIP (3)

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    57/286

    57

    g j ( )

    INVITE INVITE180 Ringing

    180 Ringing

    200 OK200 OK

    Conversacin

    ACK ACK

    BYEBYE

    200 OK200 OK

    Alice Servidor SIP Bob

    Curso: Introduccin a la VoIP y Asterisk

    Routing de mensajes SIP (4)

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    58/286

    58

    g j

    Cada proxy que quiere quedarse 'en medio'

    aade una cabecera Record-Route al inviteque pasa a travs de l. Las cabeceras se mantienen y se envan de

    vuelta en la respuesta.

    Las siguientes transacciones se generan conla cabecera Route (en orden inverso que lasReord-Route).

    En mensaje se enva al proxy que indica su

    primera cabecera Route y el proxy la elimina.

    Curso: Introduccin a la VoIP y Asterisk

    Extensiendo SIP

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    59/286

    59

    Con lo visto hasta ahora, solo podemos hacer

    y recibir llamadas :-O PEEEERO, SIP se dise para ser extensible,

    por lo que se le han aadido serviciosmediante extensiones al protocolo.

    Mensajera Notificaciones Asncronas de Eventos Transferencia de sesiones ...

    Curso: Introduccin a la VoIP y Asterisk

    Mensajera Instantnea

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    60/286

    60

    INVITE

    180 Ringing

    Alice Bob

    200 OKACK

    MESSAGE Como mola SIP!!

    200 OK

    Curso: Introduccin a la VoIP y Asterisk

    Notificaciones Asncronas de Eventos

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    61/286

    61

    INVITE484 Busy Here

    Alice Bob

    200 OK

    ACK

    SUBSCRIBE Estado de Bob

    200 OK

    NOTIFY Bob esta ocupado200 OK

    NOTIFY Bob esta disponible

    INVITE

    Curso: Introduccin a la VoIP y Asterisk

    Transferencia de sesiones

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    62/286

    62

    Curso: Introduccin a la VoIP y Asterisk

    Ejercicio

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    63/286

    63

    Capturar y analizar trazas SIP llamando entre 2

    terminales directamente, sin ningnproxy/b2bua entre ellos.

    Herramientas necesarias:

    Softphone Ngrep

    Uso de ngrep:ngrep -d any -W byline -T -P '' port 5060

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    64/286

    SIP y el NAT

    Curso: Introduccin a la VoIP y Asterisk

    NAT

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    65/286

    65

    Problema del NAT El 'supuesto' agotamiento de los rangos de

    direcciones IP utilizables en Internet ha obligado autilizar direcciones IP privadas dentro de las redesde empresas y usuarios domsticos.

    Un equipo IP para ser alcanzado en Internet debe

    utilizar una IP pblica para sus comunicaciones. Esnecesario por tanto 'enmascarar' la red interna enuna o varias IPs pblicas (Source NAT).

    El proceso de NAT no es nada sencillo: varios tiposde NAT, varios tipos de soluciones.

    Tesis Heinz Herlitz: http://www.uct.cl/biblioteca/tesis-on-line/heinz-

    herlitz/tesis.pdf

    Curso: Introduccin a la VoIP y Asterisk

    NAT y SIP

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    66/286

    66

    Esquema Base

    Red localIP's privadas:

    192.168.0.0/16172.16.0.0/12

    10.0.0.0/8

    InternetRouter NAT

    Proceso NAT:conversin

    IP privada IPpblica

    Problema en entrada:mapeo de puertos

    Problema en salida:encapsulacin IPy puerto de RTP

    a nivel de aplicacin

    Curso: Introduccin a la VoIP y Asterisk

    NAT y SIP

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    67/286

    67

    Tipos de NAT (I)

    NAT full cone: Todas las peticiones desde lamisma IP/puerto de la LAN son mapeadas a lamisma IP/puerto pblico. Cualquier mquina puedeenviar paquetes a la mquina interna por esa

    IP/puerto mediante redireccin de puertos.

    Router NAT

    Google

    Irontec

    2050 4702

    80

    4702

    3590

    2050

    Mquina interna

    Curso: Introduccin a la VoIP y Asterisk

    NAT y SIP

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    68/286

    68

    Tipos de NAT (II)

    NAT restringido: Lo mismo, pero una mquinaexterna con IP X puede enviar paquetes a lamquina interna slo si sta le ha enviadopaquetes previamente. No importa el puerto.

    Router NAT

    Google

    Irontec

    2050 4702

    80

    1025

    3590

    1025

    Mquina interna

    1025

    2231

    Curso: Introduccin a la VoIP y Asterisk

    NAT y SIP

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    69/286

    69

    Tipos de NAT (III)

    NAT puerto restringido: Lo mismo que NATrestringido, pero la mquina externa con IP X ypuerto P slo puede enviar paquetes a la mquinainterna si sta le ha enviado previamente paquetes

    al puerto P.

    Router NAT

    Google

    Irontec

    2050 4702

    80

    125

    3590Mquina interna

    125

    2231

    Curso: Introduccin a la VoIP y Asterisk

    NAT y SIP

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    70/286

    70

    Tipos de NAT (IV)

    NAT simtrico: Todas las peticiones desde la mismaIP/puerto de la LAN a una IP/puerto externos especficosson mapeadas a la misma IP/puerto pblico. Si lamquina interna enva un paquete a una IP/puertodistintos el mapeo cambia. Por lo tanto, slo la mquinaexterna que recibe un paquete puede devolverpaquetes a la mquina interna.

    Router NAT

    Google

    Irontec

    2050470

    2

    80

    Mquina interna 1252231

    2050 905580

    Curso: Introduccin a la VoIP y Asterisk

    NAT y SIP

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    71/286

    71

    Tipos de NAT (V)

    La clasificacin anterior est abandonadahoy en da. Muchas implementaciones NAToscilan entre varios de los tipos. Preservacin de puerto: Se mapea la mismaIP/puerto externo para la misma IP/puerto interno.

    Si dos mquinas internas tratan de conectar conla misma IP/puerto externo, el puerto exteriormapeado a la segunda mquina se elige

    aleatoriamente. Tambin se conoce como NATrestricted cone.

    Curso: Introduccin a la VoIP y Asterisk

    NAT y SIP

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    72/286

    72

    Cmo nos afecta el NAT?

    El paquete SIP que enviamos contiene Ipsprivadas:

    Cabecera 'Via'

    Cabecera 'Contact' Campo 'c' en el SDP

    Curso: Introduccin a la VoIP y Asterisk

    NAT y SIPINVITE sip:[email protected] SIP/2.0

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    73/286

    73

    INVITE sip:[email protected] SIP/2.0

    Via: SIP/2.0/UDP 192.168.1.33:5060;rport;branch=z9hG4bKjyofoqmp

    Max-Forwards: 70

    To:

    From: "Iaki" ;tag=nrrrx

    Call-ID: [email protected]

    CSeq: 800 INVITE

    Contact:

    Content-Type: application/sdpAllow:INVITE,ACK,BYE,CANCEL,OPTIONS,PRACK,REFER,NOTIFY,SUBSCRIBE,INFO,MESSAGE

    Supported: replaces,norefersub,100rel

    User-Agent: Twinkle/1.1

    Content-Length: 312

    v=0

    o=ibc 1090098764 894503441 IN IP4 192.168.1.33

    c=IN IP4 192.168.1.33

    t=0 0

    m=audio 8000 RTP/AVP 98 97 8 0 3 101

    Curso: Introduccin a la VoIP y Asterisk

    NAT y SIP

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    74/286

    74

    Soluciones para NAT

    Solucin por parte del cliente: Utilizacin de servidores STUN. SIP ALG

    Soluciones de en los equipos decomunicaciones IP: VPN Mapeo de puertos

    Soluciones en los servidores SIP: NAT helpers.

    Curso: Introduccin a la VoIP y Asterisk

    STUN: Simple Traversal of UDP through NATs

    T d F i i t

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    75/286

    75

    Teora de Funcionamiento Protocolo de red que permite a clientes detrs de

    NAT averiguar su IP pblica, tipo de NAT y puertoexterior.

    El cliente STUN solicita a un servidor STUN la IP ypuerto por los que ha salido a Internet. En funcin

    de varios test contra el servidor STUN el clienteaverigua el tipo de NAT en el que se encuentra. El servidor STUN dispone de dos IPS pblicas. No soluciona el problema del NAT simtrico.

    Por qu? En VoIP se utiliza para facilitar la recepcin de los

    datos de voz RTP (UDP). Servidores STUN pblicos:

    stun.fwd.net, stun.xten.com, ...

    Curso: Introduccin a la VoIP y Asterisk

    STUN: Simple Traversal of UDP through NATs

    Ejemplo

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    76/286

    76

    Ejemplo

    El control SIP ya sabe qu IP y puerto encapsular

    en la negociacin con el extremo para el canalRTP: IP: 80.55.212.49 Puerto: 14560

    Telfono IPdentro de

    NATRouter NAT

    Servidor STUN

    1. Cul es mi IP y puerto externo?ControlSIP

    puerto5060

    2. IP: 80.55.212.49 Puerto: 1234

    Control

    RTPpuerto16384

    3. Cul es mi IP?Responde a 80.55.212.49:1234

    4. IP: 80.55.212.49 Puerto: 14560

    Curso: Introduccin a la VoIP y Asterisk

    STUN: Simple Traversal of UDP through NATs

    Test cliente-servidor (I)

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    77/286

    77

    Test cliente-servidor (I)

    Test I: El cliente STUN solicita al servidor STUN (UDP

    port 3478) la IP y puerto exterior suyas (delcliente).

    Test II: El cliente STUN repite la peticin pero solicitando

    al servidor STUN que responda desde otra IP ypuerto.

    Test III: Igual que el Test II pero solicitando slo que

    responda desde otro puerto.

    Curso: Introduccin a la VoIP y Asterisk

    STUN: Simple Traversal of UDP through NATs

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    78/286

    78

    contina...

    Test I

    Respuesta

    ?

    Misma IP

    ?

    Test II

    Test II

    Respuesta?

    S

    S

    No

    BloqueoUDP

    No

    FirewallUDP

    simtrico

    Internetdirecto

    SNo

    Curso: Introduccin a la VoIP y Asterisk

    STUN: Simple Traversal of UDP through NATs

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    79/286

    79

    Test II

    Test I[2da IP STUN]

    Test III

    Respuesta?

    Misma IP?

    Respuesta?

    NATfull cone

    NATsimtrico

    NATrestringido

    NATpuerto

    restringido

    No

    S

    No

    S

    No S

    Curso: Introduccin a la VoIP y Asterisk

    SIP ALG

    SIP Application Level Gateway

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    80/286

    80

    SIP Application Level Gateway

    Implementado en routers de todas lasgamas Comtrend de Telefnica SpeedTouch de Orange

    El 99,99% de los ALG no funcionan Es necesario deshabilitarlo para poder

    utilizar VoIP

    http://www.voip-info.org/wiki/view/Routers+SIP

    http://www.voip-info.org/wiki/view/Routers+SIP+ALGhttp://www.voip-info.org/wiki/view/Routers+SIP+ALG
  • 7/30/2019 Introduccion a La VoIP y Asterisk

    81/286

    El protocolo IAX2

    Curso: Introduccin a la VoIP y Asterisk

    Tecnologas Voz sobre IP

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    82/286

    82

    Protocolo IAX2

    IAX2: Inter Asterisk eXchange Creado y estandarizado por la centralita

    Asterisk. Utiliza el puerto 4569 UDP. Caractersticas Principales:

    Media y sealizacin por el mismo flujo de

    datos. Trunking Cifrado

    Curso: Introduccin a la VoIP y Asterisk

    Tecnologas Voz sobre IP

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    83/286

    83

    Protocolo IAX2: Ventajas

    NAT: Al enviar tanto sealizacin comostreaming por el mismo flujo de datos

    (flujo UDP), se evitan los problemasderivados del NAT. No es necesario abrirrangos de puertos para RTP.

    Trunking: Es posible enviar varias

    conversaciones por el mismo flujo, lo cualsupone un importante ahorro de ancho debanda (overhead de la capas IP ytransporte UDP).

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    84/286

    Asterisk

    Curso: Introduccin a la VoIP y Asterisk

    Qu es Asterisk?

    Software

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    85/286

    85

    Cumple todas las funcionalidades de unacentralita tradicional y ms.

    Open Source. Asterisk is an OpenSource Multiprotocol

    PBX Distintos tipos de uso

    Para uso domstico. Uso empresarial Operadores de telefona IP. etc...

    Curso: Introduccin a la VoIP y Asterisk

    Historia

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    86/286

    86

    Inicialmente desarrollado por Mark Spencer(creador de GAIM). Tena una empresa (Linux Support Services

    Inc.) y necesitaba una centralita.

    Decidi hacerla l mismo. Se junt con Jim Nixon, originalmente

    soportaba las tarjetas de Zapata Telephony Liber el cdigo bajo licencia GPL.

    Curso: Introduccin a la VoIP y Asterisk

    Historia (2)

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    87/286

    87

    Viendo la evolucin de Asterisk, la empresacambi de nombre a Digium. Actualmente Mark no es el CEO, es el CTO. Adquisiciones y alianzas con diversas

    empresas para aumentar el ecosistema.

    Curso: Introduccin a la VoIP y Asterisk

    Versiones de Asterisk

    Principalmente hay 2 versiones

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    88/286

    88

    c pa e e ay e s o es

    La versin Open Source. Es posible obtener soporte directo de Digium Asterisk Business Edition: edicin

    comercial.

    Se basa en la Open Source, pero se eliminantodos aquellos elementos susceptibles de causarproblemas.

    Fuertemente probada. Al comprarla incluye soporte durante un ao. Licencias. Va a ser utilizada solo para productos OEM.

    Curso: Introduccin a la VoIP y Asterisk

    Modelo de desarrollo de Asterisk

    Actualmente conviven 3 grandes ramas de

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    89/286

    89

    gdesarrollo:

    Asterisk 1.2 Solo se solucionan bugs de seguridad

    Asterisk 1.4 Release 'congelada' Se solucionan todo tipo de bugs que no necesiten

    cambios en la arquitectura Nada de nuevas 'features'

    Asterisk 1.6

    Es donde tiene lugar todo el desarrolloactualmente

    Curso: Introduccin a la VoIP y Asterisk

    Modelo de desarrollo de Asterisk (2)

    Asterisk 1.6 admite todo tipo de nuevas

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    90/286

    90

    p'features'

    Por cada nuevo 'mayor release' se crea unnuevo branch

    1.6.0, 1.6.1, 1.6.2,

    Cada una de estas ramas solo admite uncambio importante Se van a mantener 3 'point releases' de cada

    branch, y 3 branches al mismo tiempo

    Cuando salga Asterisk 1.6.0.4 se deja demantener la 1.6.0.0 (solo bugs de seguridad) Cuando salga Asterisk 1.6.4.0 se dejarn de

    mantener Asterisk 1.6.0.X (solo bugs deseguridad)

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    91/286

    Distintos usos de Asterisk

    Curso: Introduccin a la VoIP y Asterisk

    Funcionalidades de Asterisk Caractersticas tpicas de centralita:

    T f i

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    92/286

    92

    Transferencias

    Msica en espera ...

    Multiprotocolo y OpenSource!! Extensiones, DIDs para usuarios. Buzones de voz, desvos de llamada, follow-me, ... Colas y agentes. Mens IVR. Protocolos: SIP, IAX2, H.323, MGCP, ... PSTN: T1/E1, ISDN BRI, FXO/FXS.

    Curso: Introduccin a la VoIP y Asterisk

    Asterisk como PBX normal

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    93/286

    93

    Curso: Introduccin a la VoIP y Asterisk

    Una PBX VoIP

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    94/286

    94

    Curso: Introduccin a la VoIP y Asterisk

    Complemento/ampliacin de una PBX tradicional

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    95/286

    95

    Curso: Introduccin a la VoIP y Asterisk

    Gateway VoIP - PSTN

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    96/286

    96

    Curso: Introduccin a la VoIP y Asterisk

    Asterisk fcil-version

    Distribuciones con Asterisk:

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    97/286

    97

    AsteriskNow: Basada en CentOS, incluye FreePBXo Asterisk-GUI. TrixBox (antes Asterisk@Home): Basado en

    CentOS, incluye FreePBX.

    GUIs para Asterisk: Asterisk-GUI: Desarrollada por Digium. Asterisk

    Appliance. FreePBX: Desarrollada por terceros.

    Curso: Introduccin a la VoIP y Asterisk

    Asterisk fcil-version (2)

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    98/286

    98

    Console roolz!!

    Curso: Introduccin a la VoIP y Asterisk

    Asterisk-GUI

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    99/286

    99

    Curso: Introduccin a la VoIP y Asterisk

    FreePBX

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    100/286

    100

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    101/286

    Asterisk: Terminologa bsica

    Curso: Introduccin a la VoIP y Asterisk

    Telefona

    PSTN: Public Switched Telephony Network.

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    102/286

    102

    FXS: Foreign eXchange Station. Lo que hay en nuestra pared. Alimenta dispositivos. Utiliza sealizacin FXO.

    FXO: Foreign eXchange Office. El conector de nuestro telfono donde entra lalnea.

    Recibe alimentacin. Utiliza sealizacin FXS.

    Curso: Introduccin a la VoIP y Asterisk

    Redes y protocolos

    LAN, WAN, ...

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    103/286

    103

    Protocolos: Capa de Transporte:

    TCP UDP

    Capa de Aplicacin: SIP: Session Initiation Protocol IAX2: Inter Asterisk eXchange

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    104/286

    Arquitectura de Asterisk

    Curso: Introduccin a la VoIP y Asterisk

    Arquitectura de Asterisk

    Asterisk es muy modular.

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    105/286

    105

    Nos permite ajustarlo a nuestrasnecesidades (escalabilidad). Asterisk en dispositivos empotrados.

    Curso: Introduccin a la VoIP y Asterisk

    Arquitectura de Asterisk (2)

    C l SIP C l IAX2 C l DAHDI

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    106/286

    106

    Canales

    Canal SIP Canal IAX2 Canal DAHDI

    PBX CoreCDR Aplicaciones y funciones

    Recursos Formatos Codecs

    CSV

    MySQL

    Dial

    Voicemail

    AGI

    config

    .gsm

    .wav

    G.729

    G.711

    Curso: Introduccin a la VoIP y Asterisk

    Formatos

    Asterisk soporta multitud de formatos: wav,mp3 gsm h 264 etc

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    107/286

    107

    mp3, gsm, h.264, etc ... Los necesitamos para reproducir ficheros,

    p.e. en un IVR, Playback, Voicemail, ...

    Curso: Introduccin a la VoIP y Asterisk

    Llamadas en Asterisk

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    108/286

    108

    Dispositivo queorigina la llamada:

    SIP, DAHDI,IAX2, ...

    Receptor de lallamada.Asterisk recoge la

    llamada y la pocesa sulgica de enrutado

    (dialplan). Despusse encamina aldestino.

    En una llamada hay 2 canales: el que origina la llamada y elque la recibe.

    Curso: Introduccin a la VoIP y Asterisk

    AstChannels: La mgia

    Si asterisk es multiprotocolo, como serealiza una llamada entre 2 dispositivos de

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    109/286

    109

    realiza una llamada entre 2 dispositivos dedistinta tecnologa?

    Hay 4 canales!! 2 dependientes de latecnologa utilizada y 2 AstChannels.

    Asterisk crea los AstChannels para poderllevar a cabo el bridging.Transferencias. Parking.

    Curso: Introduccin a la VoIP y Asterisk

    Bridging

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    110/286

    110

    Canal dependientede la tecnologa. SIP,

    DAHDI, IAX2,...Canales

    independientes de latecnologa. Asterisk losgenera y lleva a cabo

    el mecanismo debridging.

    Canal dependientede la tecnologa. SIP,

    DAHDI, IAX2,...

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    111/286

    Instalacin de Asterisk

    Curso: Introduccin a la VoIP y Asterisk

    Asterisk PBX: InstalacinRequisitos Tcnicos del sistema Requisitos: Dependen directamente de:

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    112/286

    112

    Llamadas concurrentes. Conferencias y Aplicaciones complejas

    simultneas. Transcodifcaciones necesarias (recodificacin).

    Principalmente, Asterisk requieremicroprocesador. Segn Digium: Equipo Dual Intel Xeon 1.8

    Ghz 1GB RAM soporta 60 llamadas

    concurrentes codificando con el codecG.729. Difcil determinar con exactitud, mejor

    apuntar alto para poder escalar.

    Curso: Introduccin a la VoIP y Asterisk

    Preparando la instalacin

    Requisitos Hardware

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    113/286

    113

    PCTarjetas de telefona Caf

    Requisitos Software Debian GNU/Linux http://www.voip-info.org San Google

    Curso: Introduccin a la VoIP y Asterisk

    Asterisk PBX: Instalacin

    Instalacin de dependencias Asterisk necesita para su correcta

    http://www.voip-info.org/http://www.voip-info.org/
  • 7/30/2019 Introduccion a La VoIP y Asterisk

    114/286

    114

    compilacin y funcionamiento los siguientespaquetes: Herramientas de compilacin: gcc, make Cabeceras de C: libncurses5-dev Libreras SSL: libssl-dev Headers de MySQL: libmysqlclient15-dev Libreras opcionales: libnewt-dev Cabeceras del Kernel: linux-headers-$(uname -r)

    Adems se recomiendan los siguientespaquetes:

    openssh-server, vim, ...

    Curso: Introduccin a la VoIP y Asterisk

    Asterisk PBX: Instalacin

    Instalacin de dependencias (II)

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    115/286

    115

    En una lnea:

    # apt-get install build-essential linux-headers-$(uname -r) libncurses5-dev libssl-

    dev libmysqlclient15-dev libnewt-dev

    Curso: Introduccin a la VoIP y Asterisk

    Asterisk PBX: Instalacin

    Descarga del cdigo fuente

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    116/286

    116

    Asterisk: Ncleo (core) del sistema. Asterisk-addons: Software adicional que por

    motivos de licencias no ha sido incluido en elpaquete principal.

    Libpri: Librera para gestionar sealizacin RDSI. DAHDI-linux: Drivers del Kernel para acceder a

    tarjetas de comunicaciones para lineasanalgicas o digitales.

    DAHDI-tools: Herramientas para interactuar

    con los drivers de las tarjetas decomunicaciones.

    Curso: Introduccin a la VoIP y Asterisk

    Asterisk PBX: Instalacin

    Descarga del cdigo fuente

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    117/286

    117

    Descargamos los ficheros necesarios:# wgethttp://downloads.asterisk.org/pub/telephony/asterisk/asterisk-1.6.0-current.tar.gz

    # wget

    http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-addons-1.6.0-current.tar.gz

    # wget http://downloads.asterisk.org/pub/telephony/dahdi-linux/dahdi-linux-current.tar.gz

    # wget http://downloads.asterisk.org/pub/telephony/dahdi-

    tools/dahdi-tools-current.tar.gz# wget http://downloads.asterisk.org/pub/telephony/libpri/libpri-1.4-current.tar.gz

    Curso: Introduccin a la VoIP y Asterisk

    Compilando Asterisk

    Descomprimimos todos los ficheros ycomenzamos a compilar:

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    118/286

    118

    # for file in *.tar.gz; do tar zxvf $file; done

    #cd libpri-1.4*

    #make#make install

    #cd dahdi-linux-*

    #make#make install

    #cd dahdi-tools-*

    #./configure

    #make menuselect#make

    #make install

    #make config

    Curso: Introduccin a la VoIP y Asterisk

    Compilando Asterisk

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    119/286

    119

    #cd asterisk-addons-1.6*

    #./configure

    #make menuselect

    #make

    #make install#make samples

    #cd asterisk-1.6*

    #./configure

    #make menuselect

    #make

    #make install#make samples

    #make config

    Curso: Introduccin a la VoIP y Asterisk

    Estructura de directorios

    /etc/asterisk: Contiene los ficheros deconfiguracin. Si al compilar ejecutamos make

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    120/286

    120

    samples, tendremos ejemplos en este directorio. /usr/lib/asterisk/modules: Contiene los mdulos

    de Asterisk que hemos compilado. /var/lib/asterisk: Contiene diferentes libreras de

    Asterisk. /var/lib/asterisk/agi-bin: Directorio para contener

    los AGI. /var/spool/asterisk: Directorio para archivos que

    genera Asterisk (voicemail, etc.)

    /var/log/asterisk: Aqu se guardan los log deAsterisk.

    Curso: Introduccin a la VoIP y Asterisk

    Ejecutando Asterisk

    Hay que ser root. Modificadores de arranque:

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    121/286

    121

    -c: Modo consola. Asterisk se inicia en primerplano.

    -v: Verbose. Cuantas ms uves se aadanms mensajes descriptivos veremos en la

    consola. -d: Debug. Cuantas ms des, ms mensajes

    de debug. -r: Remote console. Si hemos ejecutado

    Asterisk en segundo plano, nos permiteconectarnos al CLI.

    Curso: Introduccin a la VoIP y Asterisk

    Ejecutando Asterisk (2)

    Para lanzar Asterisk en segundo plano:

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    122/286

    122

    # asterisk Para lanzar Asterisk en primer plano:

    # asterisk -vvvvvvvvvvc Para conectarnos a la consola si

    Asterisk esta en segundo plano:# asterisk -vvvvvvvvvvr

    Curso: Introduccin a la VoIP y Asterisk

    El CLI

    El CLI (Command Line Interpreter) es laconsola de Asterisk.

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    123/286

    123

    Nos permite interactuar con Asterisk. Auto-completa los comandos pulsandoTAB.

    Mltiples comandos nos resultan tilespara ver lo que esta pasando*CLI>sip show channels*CLI>core show application Dial

    Curso: Introduccin a la VoIP y Asterisk

    Reload/Restart

    Ambos sirven para reiniciar Asterisk,pero...

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    124/286

    124

    Reload: No todos los mdulos se reconfiguran

    con reload. No corta las llamadas en curso.

    Restart: Se cortan las llamadas en curso.

    Reconfigura todos los mdulos.

    Curso: Introduccin a la VoIP y Asterisk

    Ficheros de Configuracin

    Todos los ficheros de configuracin deAsterisk tienen una estructura muy similar:

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    125/286

    125

    [general]param=valor

    ...

    [seccion]param=valor

    ...

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    126/286

    Configuracin de canalesSIP

    Curso: Introduccin a la VoIP y Asterisk

    Canales SIP

    Configuracin para canales SIP

    i l i fi h d j l

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    127/286

    127

    La instalacin crea ficheros de ejemplocon la sintaxis bastante comentada amodo de gua.

    sip.conf

    En este fichero se definen: Variables generales de SIP. Clientes SIP. Servidores SIP.

    Curso: Introduccin a la VoIP y Asterisk

    Canales SIP

    sip.conf: Seccin General

    E i l i l i [ l]

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    128/286

    128

    En primer lugar existe la seccin [general],donde se definen variables globales yaspectos por defecto para todos los canalesSIP.

    La sintaxis es la siguiente:

    [general]variable1=valor1

    variable2=valor2

    Curso: Introduccin a la VoIP y Asterisk

    Canales SIP

    sip.conf: Seccin General Las variables generales ms importantes

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    129/286

    129

    son: allow y disallow: indican los codecs permitidos /

    no permitidos. dtmfmode: permite especificar el mtodo por el

    cual se enviaran los tonos DTMF valores posibles:rfc2833, INFO, inband. externip: Direccin Pblica del servidor Asterisk. context: Contexto por defecto donde entraran las

    llamadas entrantes por SIP. bindaddr: Direccin IP en la que se escucha. bindport: Puerto en el que escuchar (5060 ).

    Curso: Introduccin a la VoIP y Asterisk

    Canales SIP

    sip.conf: Clientes y Servidores En sip.conf se definen tanto los clientes que se

    t A t i k l d

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    130/286

    130

    conectarn a Asterisk, como los proveedoresque se utilizaran para encaminar llamadas.Conceptualmente, se distinguen user: Envia llamadas a Asterisk

    peer: Recibe llamadas de Asterisk (proveedor). friend: Recibe y Enva llamadas (usuario).

    La syntaxis para definir un friend o un peer es:[nombre]

    type = friend / peer

    variable = valorviarable2 = valor

    Curso: Introduccin a la VoIP y Asterisk

    Canales SIP

    sip.conf: Clientes y Servidores Las variables ms importantes que deben ser

    configuradas inicialmente son:

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    131/286

    131

    configuradas inicialmente son: type: peer / friend context: Contexto donde entraran las llamadas

    generadas. nat: Indica si el usuario o peer se encuentran tras

    NAT. host: IP remota o dynamic. username: nombre de usuario. secret: contrasea de acceso. allow y disallow: Configuraciones de codecs

    especficas para cada friend/peer. qualify: Evala el estado del extremo SIP para

    conocer su accesibilidad y latencia.

    Curso: Introduccin a la VoIP y Asterisk

    Canales SIP

    sip.conf: Ejemplo: usuario Vamos a declarar de forma bsica dos

    clientes en el fichero sip conf

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    132/286

    132

    clientes en el fichero sip.conf:[jon]type = friendsecret = jondisallow=allallow = alawcontext = desde-usuarioshost=dynamic

    [leire]type = friendsecret = leire

    disallow = allallow = alawcontext = desde-usuarioshost=dynamic

    Curso: Introduccin a la VoIP y Asterisk

    Canales SIP

    sip.conf: Ejemplo: peer Vamos a configurar un proveedor en

    sip conf:

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    133/286

    133

    sip.conf:[sarenet]type=peerhost = 1.2.3.4disallow = all

    allow = g729allow = alawfromuser= 100fromdomain = 1.2.3.4secret=ghost

    Curso: Introduccin a la VoIP y Asterisk

    Canales SIP

    sip.conf: Verificacin de la configuracin

    Mediante el comando module reload en el

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    134/286

    134

    Mediante el comando module reloaden elCLI de Asterisk, le indicamos que recarguela configuracin. Aunque es posible recargarla configuracin SIP de forma

    independiente: sip reload Una vez recargada, podemos comprobar los

    usuarios y peers que tenermos definidoshaciendo: sip show peers

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    135/286

    Dialplan: El corazn deAsterisk

    Curso: Introduccin a la VoIP y Asterisk

    El Dialplan

    Como una tabla de enrutado. Cada nmero que marca una extensin va al dialplan,

    y ah decidimos que hacer

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    136/286

    136

    y ah decidimos que hacer. Se organiza por contextos, extensiones y prioridades.

    exten => extensin, prioridad, aplicacin

    Curso: Introduccin a la VoIP y Asterisk

    El Dialplan (2)

    La extensin puede ser cualquier cosa, nosolo valen nmeros:

    exten => saul 1 Dial(SIP/saghul)

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    137/286

    137

    exten => saul,1,Dial(SIP/saghul) Se utilizan patrones de marcado para las

    extensiones (no vamos a meter todos losnmeros del mundo!)

    _: Comienzo del patrn. X: Cualquier dgito del 0 al 9. Z: Cualquier dgito del 1 al 9. N: Cualquier dgito del 2 al 9.

    [12-4]: Cualquier dgito entre los corchetes,1,2,3,4. .(punto): Cualquier cosa.

    Curso: Introduccin a la VoIP y Asterisk

    El Dialplan (3)

    Ejemplos de patrones:

    Llamadas nacionales (empiezan por 8 o 9):[89]XXXXXXXX

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    138/286

    138

    Llamadas nacionales (empiezan por 8 o 9):_[89]XXXXXXXX Llamadas a mviles (empiezan por 6):

    _6XXXXXXXX Llamadas Internacionales:

    _00X. Llamadas a nmeros especiales SIN nmeros de pago

    (806, 803, 906, 903)_[89]0[0-2457-9]XXXXXX

    Curso: Introduccin a la VoIP y Asterisk

    El Dialplan (4)

    Las prioridades sirven para decidir el orden de lasacciones al entrar en el dialplan.

    Pueden utilizarse nmeros:exten => 1234,1,Answer()

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    139/286

    139

    e e 3 , , s e ()exten => 1234,2,Playback(demo-congrats)

    O la prioridad n, que va sumando 1 automticamente:exten => 1234,1,Answer()exten => 1234,n,Playback(demo-congrats)

    Si utilizamos nmeros es fcil saltar:exten => 123,1,Goto(1234,1) Si usamos la prioridad n podemos hacer marcas en el

    dialplan, para luego poder saltar a ellas:exten => 1234,n(mi-kosa),...

    Y podemos hacer:exten => 123,1,Goto(1234,mi-kosa)

    Curso: Introduccin a la VoIP y Asterisk

    El Dialplan (5)

    Las extensiones se agrupan en contextos. Cada dispositivo SIP, IAX o entrada de DAHDI se

    define para un contexto.

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    140/286

    140

    define para un contexto. Un dispositivo solo puede llamar a los nmeros

    que tiene definidos en el contexto en el que esta. En el ejemplo 1, solo podamos marcar los

    nmeros definidos en el contexto default. Un contexto puede incluir a otro:

    [micontexto]include => default

    Ahora aunque mi dispositivo este definido en el

    contexto micontexto tiene acceso a todo elcontexto default.

    Curso: Introduccin a la VoIP y Asterisk

    El Dialplan (6)

    Hay extensiones especiales, que no son paraque nadie marque:

    s: Extensin start. Cuando entramos en uncontexto SIN extensin Macros IVRs

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    141/286

    141

    s: Extensin start. Cuando entramos en uncontexto SIN extensin. Macros, IVRs,entrantes DAHDI.

    h: Extensin hangup. Se llega a estaextensin al finalizar la llamada.

    i: Extensin invlida. Opciones incorrectas enIVRs.

    T: Timeout absoluto en Dial. t: Timeout en IVRs fax: Deteccin de fax en canales DAHDI.

    Curso: Introduccin a la VoIP y Asterisk

    Aplicaciones

    Ya hemos visto algunas: Dial, Goto, ...

    Se ejecutan directamente desde eldialplan

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    142/286

    142

    Se ejecutan directamente desde eldialplan. Para una lista completa de las

    aplicaciones disponibles:

    *CLI>core show applications Las aplicaciones en generalhacen algo

    con un canal.

    Curso: Introduccin a la VoIP y Asterisk

    Variables Asterisk tiene distintos tipos de variables

    Globales: Afectan a todos los canales De canal: Solo afectan al canal actual Del entorno (entorno UNIX)

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    143/286

    143

    e e o o (e o o U ) Una lista completa de las variables:

    http://www.voip-info.org/wiki-Asterisk+variables Las variables se pueden recortar:

    ${variable:desplazamiento:longitud} por ejemplo: ${variable}=saghul -> ${variable:1} => aghul

    ${variable:0:2}=sa Se soportan expresiones bsicas, encerrndolas entre

    corchetes:

    exten => 1234,1,Set(kosa=$[6*5]) Variables globales:

    exten => 1234,1,Set(GLOBAL(kosa)=algo)

    Curso: Introduccin a la VoIP y Asterisk

    Variables (2)

    Variables de canal definidas automticamente

    Listado de variables ms importantes:

    http://www.voip-info.org/wiki-Asterisk+variableshttp://www.voip-info.org/wiki-Asterisk+variables
  • 7/30/2019 Introduccion a La VoIP y Asterisk

    144/286

    144

    p ${CALLERID}: Caller ID actual, nombre y nmero. ${CONTEXT}: Contexto actual. ${EXTEN}: Extensin actual.

    ${CHANNEL}: Canal actual. ${DIALSTATUS}: Estado de la llamada. ${DATETIME}: Hora actual.

    Una aplicacin til para ver el contenido es NoOp: NoOp ( ${VARIABLE} )

    Nos mostrar en el CLI el valor de la variable.

    Curso: Introduccin a la VoIP y Asterisk

    Funciones

    Se utilizan en el dialplan, pero dentro de lasaplicaciones, sirven para trabajar con datos: LEN: Devuelve la longitud de una cadena

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    145/286

    145

    gNoop(LEN(kosa)) //devuelve 4

    CALLERID: Fija o lee el valor del callerid:Set(numero=CALLERID(number))

    Para obtener una lista completa de funcionespodemos ejecutar:

    *CLI>core show functions En general NO actan sobre un canal y pueden ir en

    cualquier sitio en el que pueda ir una variable.

    Curso: Introduccin a la VoIP y Asterisk

    La aplicacin Dial

    La aplicacin Dial permite realizar una llamadaa un dispositivo. Su formato ms sencillo es:Dial(Tecnologa/dispositivo,tiemout,opciones)

    Donde opciones puede ser:

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    146/286

    146

    Donde opciones puede ser: t: Permitir que el usuario llamado transfiera

    la llamada. T: Permitir que el llamante transfiera la

    llamada. r: Generar un tono de ring artificial. w: Permite al usuario llamado grabar la

    llamada. W: Permite que el llamante grabe la llamada.

    Curso: Introduccin a la VoIP y Asterisk

    La aplicacin Dial (2)

    Tras un Dial correcto (se contesta la llamada),se termina la ejecucin de acciones en eldialplan y se pasa a la extensin h (si existe):

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    147/286

    147

    exten => 1234,1,Dial(SIP/saghul)exten => 1234,n,NoOp(Algo ha ido mal...)

    La variable DIALSTATUS contiene informacinacerca del ltimo Dial realizado. Puede tomarlos siguientes valores, entre otros: BUSY,

    NOANSWER, CHANUNAVAIL, ... Nos puede servir para hacer distintas cosas

    dependiendo del estado de la ltima llamada.

    Curso: Introduccin a la VoIP y Asterisk

    La aplicacin Dial (3)

    Ms informacin sobre Dial: core show application dial (en el CLI de

    Asterisk) http://www.voip-info.org/wiki-Asterisk+cmd+Dial

    http://www.voip-info.org/wiki-Asterisk+cmd+Dialhttp://www.voip-info.org/wiki-Asterisk+cmd+Dial
  • 7/30/2019 Introduccion a La VoIP y Asterisk

    148/286

    148

    http://www.voip info.org/wiki Asterisk+cmd+Dial http://www.voip-info.org/wiki/view/Asterisk+variable+DIALSTATU

    Curso: Introduccin a la VoIP y Asterisk

    La aplicacin Goto

    Permite realizar saltos dentro del dialplan. Se pueden realizar saltos en base a:

    Prioridad o etiqueta.Extensin y prioridad (o etiqueta)

    http://www.voip-info.org/wiki-Asterisk+cmd+Dialhttp://www.voip-info.org/wiki/view/Asterisk+variable+DIALSTATUShttp://www.voip-info.org/wiki/view/Asterisk+variable+DIALSTATUShttp://www.voip-info.org/wiki-Asterisk+cmd+Dial
  • 7/30/2019 Introduccion a La VoIP y Asterisk

    149/286

    149

    Extensin y prioridad (o etiqueta). Contexto, extensin y prioridad (o etiqueta).

    Por ejemplo:

    exten => 1234,1,Goto(servicios,1234,1)

    Curso: Introduccin a la VoIP y Asterisk

    Playback

    Esta aplicacin reproduce un fichero deaudio (o vdeo) al usuario.

    SintaxisPlayback(nombre-del-fichero)

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    150/286

    150

    Playback(nombre del fichero)

    Curso: Introduccin a la VoIP y Asterisk

    Echo

    Reproduce el sonido de entrada por el canalde salida.

    Muy til para comprobar si hay audiobidireccional a la hora de depurar

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    151/286

    151

    bidireccional, a la hora de depurarproblemas...

    Curso: Introduccin a la VoIP y Asterisk

    Ejercicio

    Receta: Crear un contexto internas donde se indica como

    llamar a las extensiones internas.C t t i i l i i d

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    152/286

    152

    Crear un contexto servicios con los servicios de ecoy demo.

    Crear el contexto telf-internos que incluya los 2contextos anteriores y hacer que los dispositivos SIPutilicen este contexto.

    Incluir el contexto internas en el contexto default,para que si permitieramos llamadas entrantes, solopudieran llamar a los telfonos, pero no usar losservicios.

    Curso: Introduccin a la VoIP y Asterisk

    Ejercicio (solucin)

    [default]include => internas

    [servicios]exten => 400,1,Answer()exten => 400,n,Playback(beep)

    00 h ()

    extensions.conf

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    153/286

    153

    exten => 400,n,Echo()exten => 401,1,Answer()exten => 401,n,Playback(demo-congrats)exten => 401,n,Hangup

    [internas]

    exten => 200,1,Dial(SIP/softphone,45,Tt)exten => 200,n,Goto(200-${DIALSTATUS},1)exten => 200-BUSY,1,Busy(5)exten => _200-.,1,Congestion(5)

    exten => 201,1,Dial(SIP/hardphone,45,Tt)exten => 201,n,Goto(201-${DIALSTATUS},1)exten => 201-BUSY,1,Busy(5)exten => _201-.,1,Congestion(5)

    [telf-internos]include => internasinclude => servicios

    Curso: Introduccin a la VoIP y Asterisk

    Ejercicio (solucin) (2)[general]context=default

    [softphone]type=friend

    sip.conf

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    154/286

    154

    ype e dsecret=1234context=telf-internoshost=dynamic

    disallow=allallow=alaw

    [hardphone]type=friend

    secret=1234context=telf-internoshost=dynamicdisallow=allallow=alaw

    A li i d l Di l l

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    155/286

    Aplicaciones del Dialplan

    Curso: Introduccin a la VoIP y Asterisk

    Asterisk PBX: Aplicaciones en el dialplan

    Aplicaciones Generales

    Las aplicaciones generales msimportantes son:

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    156/286

    156

    p Wait (n)

    Espera n segundos, ignorando los dgitosmarcados durante.

    WaitExten (n) Espera n segundos, pero gestionando los dgitos

    marcados.

    MusicOnHold(clase, n)

    Reproduce msica en espera durante nsegundos.

    NoOp (mensaje) Imprime el mensaje en el CLI

    Curso: Introduccin a la VoIP y Asterisk

    Asterisk PBX: Aplicaciones en el dialplan

    Gestin de llamadas

    Los comandos de gestin de llamadas ms importantes: Answer()

    Acepta la llamada entrante por el canal

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    157/286

    157

    Acepta la llamada entrante por el canal. Busy()

    Enva la seal de ocupado al origen.

    Congestion() Enva la seal de congestin al origen.

    Hangup() Cuelga la llamada.

    Ringing() Enva la seal de tono de llamada.

    Curso: Introduccin a la VoIP y Asterisk

    Asterisk PBX: Aplicaciones en el dialplan

    Control de flujo

    Algunos comandos de control de flujo ytemporizacin:

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    158/286

    158

    temporizacin: Goto (contexto, extension, prioridad)

    Salta al contexto, extensin y prioridad del

    argumento. GotoIf ( expresin ? prioridad1 : prioridad2 )

    Salta a la prioridad1 si la expresin esverdadera.

    Salta a la prioridad2 si la expresin es falsa.

    GotoIfTime(|||?[[context|]exten|]priority)

    Curso: Introduccin a la VoIP y Asterisk

    Asterisk PBX: Aplicaciones en el dialplan

    Reproduccin de sonidos

    Algunas aplicaciones para la reproduccin: PlayBack (fichero )

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    159/286

    159

    y ( ) Reproduce el fichero, continua la ejecucin cuando

    finaliza.

    Background (fichero) Reproduce el fichero, pero continua la ejecucin

    inmediatamente.

    SayDigits (dgitos) Reproduce los dgitos

    PlayTones (tonos) Reproduce los tonos indicados

    Curso: Introduccin a la VoIP y Asterisk

    Asterisk PBX: ExpresionesSyntaxis de las Expresiones

    Es posible utilizar expresiones en las llamadas a

    aplicaciones (principalmente: GotoIf) Syntaxis:

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    160/286

    160

    y$[expr1 operador expr2]

    Operadores Lgicos: |(or) , &(AND) Operadores de Comparacin: =, !=, , = Operadores Aritmticos: +, -, *, /, % [...] , Ejemplos:

    exten => 1,1,Set(total=$[1 + 1])

    exten => 1,2,GotoIf($[${CALLERID(num)}=123456]?10:20)

    Buzones de voz

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    161/286

    Buzones de voz

    Curso: Introduccin a la VoIP y Asterisk

    Voicemail

    Asterisk dispone de un completo sistema debuzones de voz gestionable mediante 2

    aplicaciones: VoicemailMain: Men interactivo desde el

    d h l j b

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    162/286

    162

    que podemos escuchar los mensajes, grabarnuestos mensajes personalizados, cambiar lacontrasea,

    Voicemail: Aplicacin para dejar un mensajeen el buzn de un usuario.

    Se configuran en el fichero voicemail.conf

    Curso: Introduccin a la VoIP y Asterisk

    Voicemail

    Estructura del fichero voicemail.conf

    [general]Opciones generales

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    163/286

    163

    Opciones generales

    [zonemessages]

    Definicin de formatos de hora por zona

    [contexto de buzones]Buzones

    Curso: Introduccin a la VoIP y Asterisk

    Voicemail

    voicemail.conf parmetros importantes

    Language: Idioma del sistema de buzones. Format: formato en el que se guardarn los

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    164/286

    164

    Format: formato en el que se guardarn losmensajes de voz.

    Attach: Indica si se enviar el fichero de audio

    como un adjunto en el email de notificacin.

    Definicin de un buzn: Nmero => clave, nombre, email 1234 => 1234, Sal Ibarra, [email protected]

    Macros

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    165/286

    Macros

    Curso: Introduccin a la VoIP y Asterisk

    Macros

    Son contextos con un comportamiento distinto. Admiten parmetros. Empiezan siempre con la extensin s. Son como subprogramas, se utilizan para no repetir cdigo

    en el dialplan.

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    166/286

    166

    Ejemplo de macro que muestra en el CLI el parmetro quese le pasa:

    [macro-prueba]

    exten => s,1,Answer()exten => s,n,Playback(demo-congrats)exten => s,n,Noop(${ARG1})exten => s,n,Hangup

    Para llamar a la macro:

    exten => 1234,1,Macro(prueba,${variable})

    Curso: Introduccin a la VoIP y Asterisk

    Macros

    Todos los argumentos son accesibles mediante ARG1, ARG2,ARG3,

    Variables especiales

    MACRO_EXTEN: Extensin desde la que se llam a lamacro. EXTEN contendra 's'! MACRO CONTEXT: Contexto desde el que se llam a

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    167/286

    167

    MACRO_CONTEXT: Contexto desde el que se llam ala macro. CONTEXT contendra el nombre de lamacro!

    MACRO_PRIORITY: Prioridad desde la que se llam ala macro. PRIORITY contendra la prioridad dentro dela macro!

    Las macros finalizan al quedarse sin ms prioridades paraejecutar

    Vuelven al contexto desde el que fueron llamadas MacroExit provoca una salida inmediata

    Curso: Introduccin a la VoIP y Asterisk

    Ejercicio

    Disear una macro para llamar a losusuarios tal que si esta ocupado le

    mandaremos al buzn dando unmensaje de ocupado y si no responde

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    168/286

    168

    le mandaremos al buzn dando unmensaje de no disponible.

    Si hay algn error (ni BUSY niNOANSWER) le damos tonos deocupado.

    Curso: Introduccin a la VoIP y Asterisk

    Ejercicio

    [macro-prueba]exten => s,1,Dial(${ARG1},30,Tt)exten => s,n,Goto(s-${DIALSTATUS},1)

    exten => s-BUSY,1,Voicemail(${MACRO_EXTEN},b)exten => s-BUSY,n,Hangupexten => s-NOANSWER,1,Voicemail(${MACRO_EXTEN},u)

    t NOANSWER H

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    169/286

    169

    exten => s-NOANSWER,n,Hangupexten => _s-.,1,Answer()exten => _s-.,n,Playtones(busy)

    exten => _s-.,n,Busy(5)

    IVRs

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    170/286

    IVRs

    Curso: Introduccin a la VoIP y Asterisk

    IVRs

    Un IVR (Interactive Voice Response) es unmen con el que el usuario puede

    interactuar mediante pulsaciones DTMF. Tradicionalmente comienza con la

    t i

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    171/286

    171

    extensin s. Se comprueba la hora para decidir la

    siguiente accin. Se reproduce un mensaje de bienvenida y

    se esperan las pulsaciones del usuario. Se controlan las extensiones t e i, por si

    el usuario no pulsa nada en el tiempo fijadoo realiza una pulsacin incorrecta.

    Curso: Introduccin a la VoIP y Asterisk

    IVRs (2)

    Para que no se entre en un bucle infinito, sesuelen fijar 2 tipos de retardo: tiempo inter-

    digito y el tiempo de respuesta total.Set(TIMEOUT(digit)=3)

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    172/286

    172

    Set(TIMEOUT(digit)=3)Set(TIMEOUT(response)=9)

    Curso: Introduccin a la VoIP y Asterisk

    IVRs (3)

    AplicacinWaitExten

    LlamadaEntrada en el men interactivo

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    173/286

    173

    Timeout?

    Aplicacin

    Salta a EXT t

    Existeextensin

    ?AplicacinSalta a EXT i

    Aplicacin

    Llamar extensin

    S

    No No

    S

    Curso: Introduccin a la VoIP y Asterisk

    Ejercicio

    Disear un IVR con las siguientescaractersticas:

    Al pulsar 1 llame al softphone Al pulsar 2 llame al hardphone Al pulsar 3 reproduzca la locucin de los monos

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    174/286

    174

    Al pulsar 3 reproduzca la locucin de los monos Al pulsar 4 reproduzca msica en espera de

    manera infinita Al pulsar 5 dejemos un mensaje en el buzn del

    softphone

    Curso: Introduccin a la VoIP y Asterisk

    Ejercicio

    [ivr]

    exten => s,1,Answer

    exten => s,n,Set(TIMEOUT(digit)=3)exten => s,n,Set(TIMEOUT(response)=6)

    t B k d(bi id )

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    175/286

    175

    exten => s,n,Background(bienvenida)

    exten => s,n,WaitExten(3)

    exten => 1,1,Dial(SIP/softphone)

    exten => 2,1,Dial(SIP/hardphone)

    exten => 3,1,Playback(tt-monkeys)

    exten => 3,n,Hangupexten => 4,1,MusicOnHold()

    exten => 5,1,Voicemail(1234,s)

    Dialplan avanzado

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    176/286

    a p a a a ado

    Curso: Introduccin a la VoIP y Asterisk

    AstDB

    Asterisk incorpora una BD tipo Berkley DBv2.

    En ella el propio Asterisk guarda diversosvalores:Registros SIP IAX

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    177/286

    177

    Registros SIP, IAX. Informacin sobre colas.

    Nosotros tambin podemos guardarinformacin en ella y consultarla desde eldialplan.

    Se organiza en familias, y dentro de una

    familia puedes tener diversas claves, y paracada clave un solo valor.

    Curso: Introduccin a la VoIP y Asterisk

    AstDB (2)

    Ejemplo desde el CLI:

    *CLI> database put mifamilia miclave mivalorUpdated database successfully

    *CLI> database show mifamilia

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    178/286

    178

    *CLI> database show mifamilia/mifamilia/miclave : mivalor

    *CLI> database put mifamilia miclave mivalor2Updated database successfully

    *CLI> database show mifamilia/mifamilia/miclave : mivalor2

    Curso: Introduccin a la VoIP y Asterisk

    AstDB (3)

    Desde el dialplan: Set(var=${DB(familia/clave)}) Set(DB(familia/clave)=${var})

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    179/286

    179

    Curso: Introduccin a la VoIP y Asterisk

    Ejercicio

    Desarrollar una macro que implemente DND (DoNot Disturb)

    Si la extensin a la que llamamos tiene el DNDactivado reproducimos un mensaje de extensinno disponible.Si l ti ti d l ll

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    180/286

    180

    Si no lo tiene activado, le llamamos. Si no contesta o esta ocupado, le mandamos al

    buzn. Pistas:

    Funcin DB_EXISTS. Aplicacin GotoIf.

    Variable MACRO_EXTEN.

    Curso: Introduccin a la VoIP y Asterisk

    Ejercicio

    [macro-llamar]exten => s,1,GotoIf($[${DB_EXISTS(DND/${MACRO_EXTEN})} = 0]?s,llamar)exten => s,n,Playback(vm-extension)exten => s,n,Playback(vm-isunavail)exten => s,n,Hangupexten => s,n(llamar),Dial(${ARG1},45,Tt)exten => s,n,Goto(s-${DIALSTATUS},1)exten > s BUSY 1 Voicemail(${MACRO EXTEN}|b)

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    181/286

    181

    exten => s-BUSY,1,Voicemail(${MACRO_EXTEN}|b)exten => s-BUSY,n,Hangupexten => s-NOANSWER,1,Voicemail(${MACRO_EXTEN}|u)

    exten => s-NOANSWER,n,Hangupexten => _s-.,1,Answer()exten => _s-.,n,Playtones(busy)exten => _s-.,n,Busy(5)

    Curso: Introduccin a la VoIP y Asterisk

    Ejercicio

    Ampliar la macro anterior para que implemente CF(Call Forward)

    Primero se comprueba el DND, y luego el CF. El desvo puede realizarse a cualquier nmero que

    los telfonos internos puedan marcar (contexto telf-internos)

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    182/286

    182

    internos) Pistas:

    Funcin DB_EXISTS. Variable DB_RESULT.

    Curso: Introduccin a la VoIP y Asterisk

    Ejercicio

    [macro-llamar]exten => s,1,GotoIf($[${DB_EXISTS(DND/${MACRO_EXTEN})} = 0]?s,comp-cf)exten => s,n,Playback(vm-extension)exten => s,n,Playback(vm-isunavail)

    exten => s,n,Hangupexten => s,n(comp-cf),GotoIf($[${DB_EXISTS(CF/${MACRO_EXTEN})} = 0]?s,llamar)exten => s,n,Goto(telf-internos,${DB_RESULT},1)exten => s,n(llamar),Dial(${ARG1},45,Tt)

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    183/286

    183

    exten => s,n,Goto(s-${DIALSTATUS},1)exten => s-BUSY,1,Voicemail(${MACRO_EXTEN}|b)exten => s-BUSY,n,Hangup

    exten => s-NOANSWER,1,Voicemail(${MACRO_EXTEN}|u)exten => s-NOANSWER,n,Hangupexten => _s-.,1,Answer()exten => _s-.,n,Playtones(busy)exten => _s-.,n,Busy(5)

    Otras funcionalidades dePBX

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    184/286

    PBX

    Curso: Introduccin a la VoIP y Asterisk

    Asterisk como PBXAsterisk como PBX

    Toda la secuencia y programacin deldialplan es el verdadero ncleo del sistemacentralita, si bien, las siguientesf i lid d fi

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    185/286

    185

    funcionalidades se configuran enfeatures.conf: Transferencias de llamadas: transferencia de

    llamadas entre diversos usuarios,independientemente de la tecnologa que usen.

    Call Parking: Parking de llamadas.

    Call PickUp: Auto-transferencia (o robo dellamada) de un telfono que est sonando.

    Curso: Introduccin a la VoIP y Asterisk

    Asterisk como PBXTransferencias

    En caso de SIP e IAX2: La transferencia DEBE ser nativa. Elusuario SIP es el dueo de su llamada!

    En features.conf se especifica: blindxfer => secuencia

    Permite realizar una transferencia de llamada a ciegasmarcando la secuencia.

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    186/286

    186

    marcando la secuencia. atxfer => secuencia

    Permite realizar una transferencia de llamada atendida.El origen es puesto en espera, mientras el destino secomunica con el nuevo destino para anunciarle lallamada. Si el nuevo destino cuelga, la llamada no setransfiere.

    pickupexten => secuencia

    Especifica como coger una llamada del grupo (callgroup).

    Curso: Introduccin a la VoIP y Asterisk

    Asterisk como PBXMsica en Espera

    Asterisk puede poner un canal dado en espera ('HOLD'),principalmente en las siguientes situaciones:

    Durante una transferencia. Durante una llamada si se ha especificado el

    parmetro 'm', que indica que no se oir tono dellamada sino msica en espera

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    187/286

    187

    llamada sino msica en espera. Durante una espera en el parking.

    Si la aplicacin MusicOnHold ha sido llamada desde elDialPlan. Si el destino de la llamada ha solicitado

    explcitamente que la llamada sea puesta en espera. Es posible tener distintos tipos de msica en espera. La msica en espera se configura en el fichero

    musiconhold.conf

    Curso: Introduccin a la VoIP y Asterisk

    Asterisk como PBXCallParking (I)

    El callparking es una funcionalidad que permite

    transferir la llamada a un 'parking' virtual. Pudiendocolgar sin que la llamada origen sea desconectadade Asterisk, ya que se encontrar aparcada.

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    188/286

    188

    Usuario: Tienes una llamada por la 3

    Para operar, el usuario transfiere la llamada a unaextensin especial (parkext en features.conf),Asterisk aparca la llamada y anuncia la posicin enel parking.

    Cualquier usuario que tenga incluido en su contextoel contexto especial 'parkedcalls' puede recuperarla llamada aparcada llamando directamente a suposicin en el parking.

    Curso: Introduccin a la VoIP y Asterisk

    Asterisk como PBX

    CallParking (II)

    1) A y B estn en conversacin.

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    189/286

    189

    2) A transfiera al 700 y 'aparca' a B enel Parking 701.

    A B

    A

    3. Ests aparcadoMsica en espera

    B

    1. Llamar 700

    2. Anuncio de *:B aparcado en 701

    Curso: Introduccin a la VoIP y Asterisk

    Asterisk como PBX

    CallParking (III)

    3) Desde otro telfono C se puede recoger aB del Parking marcando el 701.

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    190/286

    190

    4) C y B estn en conversacin.

    C

    1. Llamar 701

    C B

    Curso: Introduccin a la VoIP y Asterisk

    Asterisk como PBXCallPickup 'CallPickup' es el hecho de poder descolgar y

    responder a la llamada entrante a un telfono o

    grupo de telfonos determinado desde un tercertelfono que no est sonando. La configuracin de los cdigos DTMF para

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    191/286

    191

    'CallPickup' se configura en features.conf Se definen dos conceptos:

    callgroup: Toda llamada que entra a unaextensin determinada pertenece al/loscallgroups de la extensin.

    pickupgroup: Es el/los callgroups de llamadas

    entrantes que el usuario puede hacer 'pickup'. En cada usuario de la centralita se pueden definir

    esos dos parmetros.

    Curso: Introduccin a la VoIP y Asterisk

    Asterisk como PBXCallPickup (II)

    La aplicacin PickUp nos permite hacer una

    captura 'dirigida' de una llamada Podemos seleccionar cual de las llamadas

    queremos capturar.

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    192/286

    192

    q p

    exten => *8XXX,1,PickUp(${EXTEN:2}@usuarios)

    Curso: Introduccin a la VoIP y Asterisk

    DISADISA

    La aplicacin DISA nos permite ofrecer un tono de

    marcado al usuario para que ste (opcionalmente)se autentique y llame desde el contexto indicado

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    193/286

    193

    exten => 1234,1,DISA(no-password, desde-disa)

    Construyendo un dialplansostenible

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    194/286

    Curso: Introduccin a la VoIP y Asterisk

    Escenario sencillo

    Muy tpico, una oficina con: Telefona SIP interna. Entrantes va PSTN:

    2 numeraciones, 2 departamentos, horario, buzn de voz.

    Salientes va PSTN y proveedor VoIP:

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    195/286

    195

    Salientes va PSTN y proveedor VoIP: Segn destino.

    Servicios internos: Consulta de buzn, conferencia.

    Curso: Introduccin a la VoIP y Asterisk

    Dialplan poco mantenible (I)

    sip.conf[plantilla-usuarios](!)

    type = friendhost = dynamic

    secret = ****

    canreinvite = yes

    context = usuarios

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    196/286

    196

    context usuarios

    [200](plantilla-usuarios)

    [201](plantilla-usuarios)[202](plantilla-usuarios)

    ...

    Curso: Introduccin a la VoIP y Asterisk

    Dialplan poco mantenible (II)

    extensions.conf[usuarios]

    ; A usuarios internos:

    exten => _2XX,1,Dial(SIP/${EXTEN}|80|tT)

    ; Nacionales:

    exten => [6789]XXXXXXXX,1,Dial(mISDN/g:bri/${EXTEN}|80|T)

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    197/286

    197

    exten _[6789]XXXXXXXX,1,Dial(mISDN/g:bri/${EXTEN}|80|T)

    ; Extranjero:

    exten => _00.,1,Dial(SIP/proveedor-voip/${EXTEN}|80|T)

    ; Urgencias:exten => 112,1,Dial(mISDN/g:bri/112||T)

    ; Nmeros cortos:

    exten => _1XXX,1,Dial(mISDN/g:bri/${EXTEN}|80|T)

    ; Consulta buzn de voz:

    exten => 500,1,VoiceMailMain(buzon-entrantes)

    ; Sala de conferencia:exten => 501,1,MeetMe(501)

    Curso: Introduccin a la VoIP y Asterisk

    Dialplan poco mantenible (III)

    [entrantes-rdsi]

    ; Departamento de ventas:

    exten => 999000111,1,Macro(comprueba-horario-ventas)exten => 999000111,n,Goto(999000111-${HORARIO},1)

    exten => 999000111-DENTRO,1,Queue(ventas|wt|||45)

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    198/286

    198

    exten => 999000111-FUERA,1,PlayBack(fuera-de-horario)

    exten => 999000111-FUERA,n,VoiceMail(buzon-entrantes,s)

    ; Departamento tcnico:

    exten => 999000222,1,Macro(comprueba-horario-tecnicos)

    ...dem...

    [macro-comprueba-horario-ventas]

    ...

    [macro-comprueba-horario-tecnicos]

    ...

    Curso: Introduccin a la VoIP y Asterisk

    Dialplan poco mantenible (V)

    Pero las cosas cambian con el tiempo: Numeraciones Lneas Personas Necesidades

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    199/286

    199

    Necesidades etc... Y esto nos lo piden estando Asterisk en

    produccin !!!

    Curso: Introduccin a la VoIP y Asterisk

    Dialplan poco mantenible (VI)

    Qu desemboca un mnimo cambio? Ej: Contratan 2 becarios y no quieren que llamen al

    extranjero (?? ... pero el cliente manda) Solucin a-toda-prisa:

    sip.conf

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    200/286

    200

    p[plantilla-becarios](!)

    context = becarios

    secret = ******

    ...

    [210](plantilla-becarios)

    [211](plantilla-becarios)

    Curso: Introduccin a la VoIP y Asterisk

    Dialplan poco mantenible (VII)

    extensions.conf[becarios]

    ; A usuarios internos:

    exten => _2XX,1,Dial(SIP/${EXTEN}|80|tT)

    ; Nacionales:

    exten => _[6789]XXXXXXXX,1,Dial(mISDN/g:bri/${EXTEN}|80|T)

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    201/286

    201

    ; Extranjero:

    exten => _00.,1,Dial(SIP/proveedor-voip/${EXTEN}|80|T)

    ; Urgencias:exten => 112,1,Dial(mISDN/g:bri/112||T)

    ; Nmeros cortos:

    exten => _1XXX,1,Dial(mISDN/g:bri/${EXTEN}|80|T)

    ; Consulta buzn de voz:

    exten => 500,1,VoiceMailMain(buzon-entrantes)

    ; Sala de conferencia:exten => 501,1,MeetMe(501)

    Curso: Introduccin a la VoIP y Asterisk

    Dialplan poco mantenible (VIII)

    Ahora nos piden alargar la duracin de la llamada. Ala, a cambiarlo en 30 sitios.

    Nos piden otra sala de conferencia 502. Lo mismo.

    Se nos olvid los nmeros de emergencias 0XX !

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    202/286

    202

    g Aadir en ambos contextos:

    exten => _0XX,1,Dial(mISDN/g:bri/${EXTEN}||T)

    Y puede ser peor...

    Curso: Introduccin a la VoIP y Asterisk

    Dialplan poco mantenible (IX)

    Nos piden conectar una FCT por FXO para llamadasva GSM (ahorro de coste).

    A duplicar cdigo otra vez. Cambian los nmeros RDSI.

    Toca modificar muchas lneas.

  • 7/30/2019 Introduccion a La VoIP y Asterisk

    203/286

    203

    Permitir entrantes va GSM al dept. ventas.

    Duplicar cdigo o la super-apa:[entrantes-trac]

    exten => s,1,Goto(entrantes-rdsi,999000111,1)

    ahhhhhh !!!

    Curso: Introduccin a la VoIP y Asterisk

    Dialplan mantenible (I)

    sip.conf; Empleados:

    [plantilla-empleados](!)...

    context = desde-empleados

    [200](plantilla-empleados)