Etiqueta: pjsip

  • Adios chan_sip, la próxima versión de Asterisk obligará a utilizar PJSIP

    Adios chan_sip, la próxima versión de Asterisk obligará a utilizar PJSIP

    Aún recuerdo en uno de los primeros VoIP2DAY celebrados en Madrid, aprovechando que venía el jefe de desarrollo de Asterisk en aquel momento (Kevin P. Flemming), se hizo una mesa redonda donde usuarios de Asterisk pudieran plantear sus preguntas sobre Asterisk y debatir sobre cualquier tema de VoIP, prácticamente TODAS las preguntas que se hicieron fueron sobre lo mal que funcionaba el módulo chan_sip y lo necesario que era que mejorase urgentemente para todos los que estábamos allí presentes.

    Ahí se plantearon soluciones como utilizar sistemas de test propios de Asterisk que permitiera verificar el código en lugar de subir nuevas versiones con fallos que ya se habían corregido, se vieron características muy importantes en España que apenas se utilizan en otros países, y se planteó que podría ser muy interesante utilizar un stack propio separado de Asterisk para llevar el SIP y que pudiera evolucionar y cambiar sin que tuviera que actualizar todo Asterisk.

    Quizá fuera algo planteado previamente o que sirvió para apoyar una necesidad común, pero sea como fuere, a partir de ahí se empezó a mover el tema de que Asterisk necesitaba cambiar de stack SIP de chan_sip a otro que pudiera crecer y corregir los problemas básicos de Asterisk.

    Puede que desde ese día, la preocupación por el sistema que gestiona las peticiones SIP se tuvieron bastante más en consideración y se preocuparon por solucionar grandes problemas que aparecieron y que afectaban a la estabilidad de un gran número de Asterisk 1.4. Razón por la cual, la gente de Irontec empezó a congelar una versión de Asterisk que se conoció como Asterisk-ES-RSP (Rock Solid Patchset).

    Desde entonces se han hecho muchos cambios en chan_SIP y quizá desde entonces este stack ha ido mejorando todo lo posible, donde «todo lo posible» ha sido pese a sus limitaciones.

    Tales han sido las limitaciones que Asterisk 12 ya empezó a incluir un nuevo stack basado en PJSIP, un stack SIP bastante robusto, que funciona por sí solo en multitud de aplicaciones (softphones, servidores, etc.) y que sería incorporado a Asterisk como un componente externo gracias a una colaboración entre los desarrolladores de PJProject (el proyecto del que sale PJSIP) y Asterisk.

    Cada nueva versión de Asterisk ha aumentado la integración de PJSIP y disminuida la de chan_sip, hasta que Asterisk 16 ya incluía chan_pjsip como nuevo stack SIP por defecto y chan_sip pasaba a estar obsoleto («deprecated»), y no será hasta el próximo Asterisk 21 cuando realmente desaparezca chan_sip y sólo quede chan_pjsip.

    PJSIP es sólo un poco más complejo que chan_sip, básicamente porque permite más cosas, es más flexible, más completo y elimina las restricciones nativas que traía chan_sip y que, para muchos, es algo intrínseco a SIP como por ejemplo, como me dijo hace poco un usuario:

    «SIP no permite más de un registro simultaneo»

    A lo que rápidamente tuve que saltar y corregirle indicándole que es chan_sip quien no permite más de un registro simultaneo… cualquier otra aplicación SIP soporta tantos registros como deseemos. Y es que la gente está tan acostumbrada a los sistemas Asterisk y a lo que se permite o no en Asterisk que no repara en lo que se permite o no en SIP y que Asterisk con chan_sip limita algunas cosas.

    Aún así, la facilidad de chan_sip ha hecho que Asterisk llegue a prácticamente cualquier usuario y que pueda instalar, configurar y modificar una centralita de telefonía sin necesidad de saber de SIP, ni de dialplans, ni de telefonía. 😉

  • Si utilizas PJSIP, probablemente deberías actualizar

    Si utilizas PJSIP, probablemente deberías actualizar

    Hace algún tiempo avisamos que Sinologic no publicaría noticias relacionadas con seguridad. Principalmente porque uno debe ser responsable de estar al día de todo lo que surge en cuanto a vulnerabilidades, fallos de seguridad, etc. Por este motivo, todos deberíamos tener en nuestras pantallas un sistema tipo «telex» que nos informe en tiempo real de los problemas que ocurren.

    No obstante, y por diversos motivos y proyectos personales, estoy un poco más en el día a día de ciertos temas relacionados con la seguridad, el fraude telefónico y cómo evitarlos, por lo que acabo de ver una vulnerabilidad que merece la pena comentar aquí:

    Una vulnerabilidad de PJSIP en un paquete INVITE malintencionado podría provocar un crash de Asterisk.

    https://downloads.asterisk.org/pub/security/AST-2020-001.html

    Concretamente, este repositorio lo explica con un ejemplo para probarlo:

    https://github.com/EnableSecurity/advisories/tree/master/ES2020-02-asterisk-tcp-invite-crash

    Este bug ha sido resuelto en las versiones: 13.37.1, 16.14.1, 17.8.1, y 18.0.1

    Así que si tenéis una versión anterior y utilizáis PJSIP como el 33% de los usuarios encuestados de Sinologic, os recomendamos actualizar a la siguiente versión cuanto antes.

  • Asterisk 16 ya disponible: La hemos probado y nos encanta!

    Asterisk 16 ya disponible: La hemos probado y nos encanta!

    Asterisk 16 se anuncia en la Astricon

    Aprovechando el evento Astricon, se ha publicado la versión 16.0.0 de Asterisk entre un gran número de seguidores, usuarios y desarrolladores, una versión que llevamos esperando desde hace mucho tiempo ya que, tanto la versión Asterisk 14 como Asterisk 15 fueron ambas, versiones orientadas a desarrollo en la que se han incorporado bastantes buenas características, se han estabilizado algunas que ya existían y los usuarios de Asterisk llevamos esperando una versión LTS más de 3 años.

    En la Astricon de 2014 se anunció la última versión LTS: Asterisk 13 y desde entonces ha llovido mucho. En aquel momento se publicaba PJSIP de forma oficial en una versión LTS (en un Asterisk orientado a producción) y los primeros trazos de un nuevo interfaz llamado ARI (Asterisk Rest Interface) pero que aún estaba un poco en pañales. Por esta razón, esperábamos que la siguiente versión LTS incorporase estas novedades mucho más estabilizados y orientados a entornos en producción, por esta razón, cuando nos enteramos que Asterisk 15 no sería una versión LTS, muchos nos quedamos con la miel en los labios sabiendo que nos tocaría esperar al menos otro año para poder aprender y disfrutar de las bondades que llevamos leyendo y escuchando tanto tiempo.

    (más…)
  • Asterisk 15: cada día más cerca

    Asterisk 15: cada día más cerca

    Nos levantábamos hace unos días con la noticia de la publicación de la Release Candidate de Asterisk 15 (la nueva versión de Asterisk) y que llevábamos tiempo esperando por lo que ello significa.

    Hace poco veíamos como el equipo de desarrollo de Asterisk anunciaba que Asterisk 15 es, posiblemente, la versión más grande de Asterisk de los últimos 10 años. Este comentario parecer un poco exagerado, pero si analizamos los cambios internos que se han producido en las últimas versiones, empezamos a ver la realidad de dicha afirmación. Lo importante de esta versión son los cambios a nivel interno, una apuesta de futuro que sirve para que Asterisk siga creciendo con energía y vitalidad, al contrario que muchos software que nacen y se basan en parches sobre parches, lo que termina ocasionando un «spaguetti code» que pocos desarrolladores son capaces de manejar.

    El objetivo es que Asterisk 15 esté disponible en octubre de 2017 y que tenga actualizaciones durante al menos, dos años. *Corrección*: Tal y como nos apunta @jbmanwe, Asterisk 15, aunque por el número debería ser una LTS, es una versión de desarrollo como Asterisk 14 (no LTS)

    ¿Qué trae de nuevo Asterisk 15?

    Como suele ocurrir, uno de los principales intereses cuando aparece una nueva versión es ver, qué trae de nuevo:

    • Mejor soporte de WebRTC: Si bien Asterisk 14 ya presumía de soportar WebRTC, no va a ser hasta Asterisk 15 cuando el soporte de WebRTC sea completo. Un simple parámetro como «webrtc=yes» en la configuración ajustará todos los parámetros necesarios (NAT, SRTP, Opus, etc.) para poder utilizar WebRTC con Asterisk.
    • Introducción al concepto de Stream para la gestión de flujos de RTP. Lo que permite una mejor gestión del media ahora que también incluye soporte de WebRTC. También mejora el tema de videoconferencias, multiconferencias, etc. para ser más descriptivo y poder gestionarlo mejor.
    • Mejora en el soporte de PJSIP: Si bien Asterisk 12 y 13 ya incluía soporte de PJSIP, no será hasta Asterisk 15 cuando realmente el soporte sea completo. Las ventajas de PJSIP en Asterisk las hemos comentado hasta la saciedad, pero si bien el equipo de desarrollo de Asterisk había «bloqueado» una versión de PJProject (el proyecto detrás de PJSIP) para compilar con Asterisk y evitar problemas, en Asterisk 15 esta versión estará incluida por defecto y únicamente si queremos utilizar la última versión de PJSIP, tendremos que compilar con un flag especial.
    • Cambios en el esqueleto de Asterisk: Como hemos dicho muchas veces en Sinologic, Asterisk ha pasado a ser un software muy maduro creado por muchos tipos de desarrolladores que trabajan en muchas empresas, por lo que se ha tenido que trabajar muy duro en conseguir un código fácil de entender, reutilizable, y evolucionable. Por esta razón, desde Asterisk 11 se ha estado modificando el núcleo para convertir el código en objetos, lo que permite una gestión de memoria mucho más intuitiva y práctica, a la vez que se crea una capa de abstracción que permite a otros desarrolladores despreocuparse de ciertos conceptos fuertemente relacionados con el código.
    • Mejoras en características generales: Quizá lo más interesante para todos serían las novedades en las características generales, pero para eso habrá que examinar la versión más detenidamente. Lo único que de momento sabemos es que se han modificado muchas partes del código para mejorar su potencia, reducir el consumo y aumentar la compatibilidad con sistemas como Docker, contenedores y plataformas como systemd…  No obstante, también se ha incluido muchas mejoras en aplicaciones, funciones y características incluidas en Asterisk y que seguro que todos los usuarios de Asterisk agradeceremos pero que tendremos que ver con tranquilidad.

    Asterisk ya no es para todo el mundo.

    Tristemente, y a medida que la VoIP se hace más y más común entre los mortales, las herramientas pasan a otro nivel. Si bien los que comenzamos hace algún tiempo seguimos con paciencia e ilusión las nuevas versiones de un software como Asterisk o Kamailio, la mayor parte de los usuarios apenas conocen este software y únicamente se centran en «el software que lo haga todo» ya sea 3CX, Issabel o FreePBX. Esto no es ningún caso malo, es simplemente la evolución natural de meter a más y más empresas en un mundo que desconocen y que, puestos a aprender, prefieren algo que les haga ganar dinero.

    Asterisk (y también otras aplicaciones como freeSwitch, Kamailio, OpenSIPs, etc.) ha quedado relegado como software motor para aquellos profesionales que quieren profundizar en las posibilidades que les otorga para poder ofrecer cosas fuera del ámbito «comercial» y cotidiano y, como hemos dicho tantas veces, tratar a estas herramientas como herramientas que forman parte de un todo y no como sistemas «todo en uno».

    Todo cambia, evoluciona y si bien la VoIP ha madurado y evolucionado, también los usuarios lo han hecho. El mercado se hace más grande y hay más personas que se han metido en el mundo de la VoIP, pese a que no sepan cómo funciona el protocolo SIP, qué es WebRTC o porqué interesa usar el códec Opus en lugar de Alaw. Hay espacio para todos y la VoIP es una rama propiamente dicha que sigue creciendo y generando sus propias ramas donde hacer crecer las hojas.

     

  • Asterisk 14 mejorará el soporte de DNS en PJSIP

    Asterisk 14 mejorará el soporte de DNS en PJSIP

    Con Asterisk 13 ya pudimos disfrutar de PJSIP de forma estable, es cierto que nos costó acostumbrarnos (tras tantos años trabajando con chan_sip) pero al final las ventajas superan a los inconvenientes y PJSIP se está haciendo un hueco en muchos sistemas nuevos, pero el equipo de desarrolladores de Asterisk no se para ahí y quiere seguir mejorándolo.

    Mira nuestro paso a paso para instalar y configurar Asterisk con PJSIP.

    Una de los cambios que quieren hacer para Asterisk 14 es mejorar el soporte de DNS creando para ello una API especial utilizable por todo Asterisk y que sea «todo lo que siempre hemos querido que Asterisk hiciera con los DNS». Para ello, se está desarrollando lo que se va a llamar «Core DNS API», un sistema que gestionará las peticiones DNS en condiciones de una vez por todas aunque de momento ya han adelantado que no soportará DNSSEC sí que soportarán características «básicas» como NAPTR y SRV de una forma mucho mejor que como actualmente lo hace.

    (más…)

  • Cómo instalar y configurar PJSIP en Asterisk 13

    Cómo instalar y configurar PJSIP en Asterisk 13

    Somos muchos los que esperábamos con ansia la llegada de PJSIP en Asterisk como «sustituto» de chan_sip por varias razones. El gran problema era que, pese a que chan_pjsip es un conector hacia PJProject, tras hacer un par de pruebas, uno descubre que no todo es tan fácil como esperaba y que utilizar PJSIP en lugar de chan_sip se hace más cuesta arriba, por lo que al final el 99% de los usuarios siguen utilizando chan_sip. Resultado: frustrante.

    La primera cuesta arriba que nos encontramos cuando trabajamos con PJSIP es la instalación. Hay que compilar previamente PJPROJECT, por lo que descargamos la última versión, la instalamos y una vez finalizado correctamente (y sin que nos de ningún error) al compilar Asterisk, este falla por alguna razón. ¿qué hemos hecho mal? ni idea… como todo buen usuario, vamos al wiki de Asterisk y seguimos las instrucciones paso a paso… vemos que la versión que aparece en el wiki no es la última, así que vamos a probar por si la última versión no fuera todo lo estable que pensábamos y volvemos a intentarlo… utilizamos una línea mágica que viene en el wiki:

    ./configure --prefix=/usr --enable-shared --disable-sound --disable-resample --disable-video --disable-opencore-amr CFLAGS='-O2 -DNDEBUG'

    Con esto, parece que debería funcionar bien… volvemos a compilar… vuelve a fallar… ¿puede ser porque hemos instalado antes la versión más moderna? Eliminamos las librerías que tenemos para asegurarnos que no tenemos nada de PJ… instalado previamente y volvemos a recompilar… y así, durante un par de horas más.

    Finalmente encontramos las versiones correctas de PJSIP, PJProyect, Asterisk 13 y demás lindezas, con la línea correcta de ./configure y parece que por fin compila y tenemos nuestro PJSIP configurado y funcionando. Vamos a configurar ahora nuestras cuentas SIP…

    (más…)

  • Verano, un buen momento para aprender…

    Verano, un buen momento para aprender…

    Asistir a un curso es una oportunidad ideal para aprender y ahorrar tiempo. Lo que normalmente tardaríamos 1 mes en aprender por nuestra cuenta buscando información por internet, haciendo pruebas y comprobando que lo que hemos aprendido está bien, si estamos siendo guiados por un curso, este mes suele acelerarse unos días, de ahí que siempre recomiende asistir a cursos especializados donde cada hora de enseñanza suelen equivaler a varios días de investigación, prácticas y estudio. No obstante, ya sea por falta de tiempo, coste económico u otras razones, un curso no siempre es posible y nos toca buscarnos la vida para continuar estando «al día».

    Es de sobra conocido por todos, que los meses de verano, el trabajo se traslada a los chiringuitos, hoteles, bares, restaurantes, discotecas y demás lugares más felices que una triste oficina. Por lo tanto, y aunque siempre existen excepciones, si no estamos disfrutando de la playa de un cóctel mientras tenemos los pies en el agua y hemos cambiado la sombrilla por el ratón y el teclado como acompañamiento veraniego, entonces te animamos a que aproveches esos tiempos muertos para hacer algunas de estas cosas que vamos a comentaros a continuación.

    (más…)

  • Asterisk utilizará PJSIP

    Hace algún tiempo que no hablábamos sobre Asterisk, quizá porque desde la partida de Kevin P. Flemming, andaba un poco perdido acerca de la actual dirección que el proyecto Asterisk estaba siguiendo y, pese la aparición de algunas nuevas versiones importantes como la versión Asterisk 1.8, 10 y 11, pocas noticias han ocurrido en este increíble mundo.

    Nada más anunciarse la partida de Kevin P. Flemming, empezó a hablarse sobre la intención de algunos desarrolladores de Asterisk de cambiar la «pila SIP», el famoso «SIP Stack», algo que muchos llevábamos muchos años deseando, quizá hacía tanto tiempo, que ya habíamos perdido la esperanza que algún dia fuese a cambiar, hasta que llegó a nuestros oídos el famoso proyecto Asterisk-SCF y su reestructuración de código y entonces volvimos a soñar con que podríamos encontrar un Asterisk con una nueva pila SIP.

    Algunas personas preguntarán ¿porqué tanto interés en cambiar el código del protocolo SIP de Asterisk? ¿no funciona bien? y la respuesta quizá es tan tremenda como contundente: NO, no funciona bien.

    El actual chan_sip es una maraña de código en la que han tocado demasiadas personas, que algunos han intentado limpiar, y cada vez que lo han hecho, algún desastre ha ocurrido:

    • fallos que habían sido corregidos, han vuelto a la vida
    • características que siempre han funcionado a la perfección, han dejado de funcionar en versiones supuestamente estables.

    Tanto revuelo causó, que en Asterisk-ES nació un proyecto llamado Asterisk-ES-RSP y evitar estos problemas ocasionados por estas modificaciones de código.

    Por suerte, el protocolo SIP de Asterisk dejó de avanzar por los caminos que algunos querían, lo que provocó que no se desarrollasen algunas características importantes del protocolo SIP, pero al cambio, tampoco aparecerían nuevos errores, algo que alegraba a algunos pero entristecían a otros que veían como otras aplicaciones que habían optado por cambiar de pila SIP a una más «independiente», sí ofrecía estas nuevas características: mensajería SIP, transferencias del caller ID, entre otras.