En el mundo de la telefonía IP se escucha cada vez más el concepto PJSIP. Por tal motivo decidí aterrizar las ideas en este post para entender las diferencias entre pjsip y sip.

El canal de señalización para el protocolo de telefonía IP por estándar ha sido SIP, sin embargo está dando un giro a una librería llamada PJSIP. Pero veamos por qué este cambio, qué ventajas nos ofrece y las diferencias entre PJSIP y SIP.

¿Qué es el protocolo SIP?

Empecemos por SIP. Es un protocolo, es decir el conjunto de reglas que definen las especificaciones y procesos que tienen las comunicaciones por este.  Este Protocolo de inicio de sesión (SIP) es un método que establece el modo de administrar la comunicación a través de Internet, por lo que fue adoptado para el uso de telefonía IP. (Sin embargo se puede usar para otros servicios). Las marcas de teléfonos IPs y plataforma de telefonía IP utilizan este protocolo como base.

Un driver de canal es el módulo que permite que algun telefono IP o software se comunique a través de algún protocolo, este puede ser: SIP, IAX, h323, etc.

El el mundo de Asterisk, tenemos dos drivers para SIP, es decir dos módulos desarrollados para poder conectarnos a otros dispositivos que soporten el protocolo SIP, estos drivers son : ChanSIP y PJSIP.

Hasta ahora debemos entender esto:

Protocolo SIPEs un protocolo de Comunicación para telefonía IP.
CHAN SIPDriver para que un dispositivo/software se comunique con otro mediante el protocolo SIP
PJSIPOtro driver para que un dispositivo/software se comunique con otro mediante el protocolo SIP
SIP, chanSIP y PJSIP

DRIVER CHAN SIP

Hablando desde el mundo de Asterisk, chan sip se desarrolló desde las primeras versiones y hasta la actualidad es usado. Dentro de los módulos de asterisk lo encontráramos como chan_sip, o simplemente sip (Aqui es donde surge la confusión, ya que por muchos años fue el unico driver). Si tienes un Asterisk 11 o inferior debes tener este driver, incluso en versiones posteriores es muy probable que lo uses.

Puedes validar que lo estas usando con el siguiente comando desde tu Asterisk: module show like chan_sip.so y tendras una salida como esta.

SIP y PJSIP Tabla comaprativa
cargar chan_sip en asterisk

Incluso podemos probar el comando conocido para validar el estado de las extensiones: sip show peers y tendremos una salida similar a esta.

DRIVER PJSIP

PJSIP, es un nuevo drivers y este se utiliza en versiones desde asterisk 11 a asterisk 18 (hasta el momento que escribí esto). Este driver es prácticamente nuevo, y se está probando aun en varias plataformas para validar su estabilidad, sin embargo tiene funciones que valen la pena adentrarse. La primera función que escuche de el hace un par de años es que te permite conectar la misma extensión en dos IPs diferentes. (Si vienes del mundo de SIP, sabrás que esto está prohibido a nivel sacrilegio ).

Pjsip es integral, es decir hay muchos módulos con una tarea específica, Si ejecutas ‘modules show like pjsip’ verás todos los módulos de pjsip y lo que hacen.

Podemos validar si tenemos el módulo instalado en nuestro Asterisk con el siguiente comando: module show like res_pjsip.so

SIP y PJSIP Tabla comaprativa
Cargar pjsip en Asterisk

Podemos ver las extensiones PJSIP conectadas a nuestro Asterisk con el siguiente comando: pjsip show aors

SIP y PJSIP Tabla comaprativa
Mostrar anexos pjsip

Tabla comparativa entre SIP y PJSIP

Esta tabla la hice de acuerdo a algunas características que conozco, si dejas tus comentarios, puedo ir agregando a la tabla.

SIPPJSIP
Chan_sip es monolítico. Un solo pedazo de software hace todo. Desde manejo de registros, presencia, etc.Pjsip es integral,es decir hay muchos módulos con una tarea específica

Ya no se mantiene de forma activaTiene soporte de Asterisk
Se puede montar en todas las versiones de AsteriskA partir de Asterisk 16, PJSIP se descarga automáticamente
Solo puedes ligar 1 extensión a 1 ipPuedes tener la misma extensiones en diferentes IPs (locales o publicas)
Comando en asterisk para ver extensiones: sip show peersComando en asterisk para ver extensiones: pjsip show aors
Comparativa entre sip y pjsip

PJSIP VS SIP

Como hemos comentado, es importante no confundir entre driver y protocolo. No podemos comparar pjsip vs sip. Sin embargo si podemos comparar chan_sip vs pjsip.

Lista de características de PJSIP

  • Sistemas operativos soportados de PJSIP
    • Windows
    • Mac OS X
    • Linux/uClinux
    • Smartphones:
      • iPhone OS/iOS (iPhone, iPad, iPod Touch)
      • Android
      • Windows Mobile
      • BlackBerry 10 (BB10)
      • Symbian S60 3rd Edition and 5th Edition
  • Community supported:
    • OpenBSD
    • FreeBSD
    • Solaris
    • MinGW
    • RTEMS
    • Android
  • Habilidades SIP
    • Core methods: RFC 3261: INVITE, CANCEL, BYE, REGISTER, OPTIONS, INFO
    • Digest authentication ( RFC 2617)
  • Transporte: UDP, TCP, TLS, IPv6 (UDP only)
  • Multiparte
  • NAT Traversal
    • STUN
    • TURN
    • ICE
    • ICE
  • Video
    • Codecs: H.263-1998 (ffmpeg), H.264 (ffmpeg+x264, OpenH264)

Conoce la lista completa aqui: http://www.teluu.com/content/pjsip-features-and-datasheet

Otra tabla comparativa: https://support.flowroute.com/086810-Chan_SIP-and-Chan_PJSIP

Página oficial de pjsip https://www.pjsip.org/


Otros articulos interesantes para ti


4 Comentarios

Felipe · 26 diciembre, 2021 a las 10:43 am

Ando buscando un curso de Kazoo VoIP.. hay alguno en espanol?

    Andres Lavariega · 4 febrero, 2022 a las 8:17 pm

    Desconozco quien pueda darte ese curso, ojala alguien que pasa por aquí te pueda orientas.

Jose · 4 febrero, 2022 a las 7:12 pm

Estimado, tienes un error en el articulo, PJSIP no es un protocolo, es una libreria Open source desarrollada en C para la implementación de varios protocolos incluyendo sip. PJSIP is a free and open source multimedia communication library written in C language implementing standard based protocols such as SIP, SDP, RTP, STUN, TURN, and ICE. https://www.pjsip.org/

    Andres Lavariega · 4 febrero, 2022 a las 8:15 pm

    tienes razón estimado. justo es lo que trato de explicar en el documento y cometí el error de decir que pjsip es un protocolo. Quizás es la costumbre de pensarlo así. Lo corrijo en un momento. saludos.

Deja un comentario

Marcador de posición del avatar

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *