VOZ logo

Qué es un SIP Proxy y cual elegir ¿Kamailio u openSIPS?

kamailio-sinologic-cover

Cuando alguien se plantea utilizar un SIP Proxy y busca un poco de información, rápidamente llega a documentación confusa, foros, preguntas y respuestas donde siempre se hace referencia a dos aplicaciones: Kamailio y openSIPS. La pregunta entonces es ¿qué es un SIP Proxy? ¿cuándo debemos invertir tiempo en estas aplicaciones? ¿Qué software debemos utilizar: Kamailio u openSIPS?. Intentaremos responder a algunas de las preguntas típicas desde un punto de vista de usuario que quiere comenzar a utilizar un SIP Proxy.

Soy consciente que la mayoría de los lectores son usuarios de Asterisk en alguna de sus formas (nativa, Elastix, Trixbox, AsteriskNOW, etc…) y realmente un porcentaje bastante pequeño ha sentido la necesidad de utilizar un SIP Proxy, es más, estoy convencido que muchos lectores no saben qué es un SIP Proxy y cuando es necesario ya que para entender en qué consiste un SIP Proxy hay que conocer qué es el protocolo SIP y como funciona.

A modo introductorio y sin querer extenderme en conceptos profundos, un SIP Proxy es un servidor que sirve para redirigir paquetes SIP, esto es, recibe un paquete SIP de una IP y lo reenvía a otra IP. Solo paquetes SIP, ni audio, ni vídeo, ni códecs, ni nada. Normalmente el SIP Proxy puede leer y comprender los datos que vienen dentro del paquete SIP para obtener el usuario, la contraseña, etc. y poder autentificar ese usuario y reenviarlo si es un usuario válido o eliminar el paquete si no lo es.  Un SIP Proxy es como un router, pero exclusivamente de paquetes SIP. Podemos cambiar el destinatario, contar cuantos INVITE ha enviado, aunque su verdadero poder reside en las miles de cosas más que puede hacer.

¿Cuándo interesa utilizar un SIP Proxy?

Un SIP Proxy puede manejar cientos de miles de paquetes SIP en un segundo sin que la carga sea un problema, por esta razón, cualquier estructura de red VoIP o infraestructura cuya principal carga sea entre conexiones SIP, un SIP Proxy es interesante. Por ejemplo, un operador VoIP, cuyos clientes son usuarios SIP y que conecta con otros operadores por SIP o utilizando gateways SIP, es casi imperativo que es necesario un SIP Proxy. Un organismo público con más de 1000 usuarios en el que el 80% de las llamadas realizadas son internas, es una buena idea utilizar un SIP Proxy.

El SIP Proxy es el encargado de recibir y enviar paquetes SIP, por lo que si un usuario SIP envía un INVITE al número 987654321, lo recibirá el SIP Proxy y lo reenviará a donde queramos que envíe este tipo de llamadas, a un Asterisk, a un Gateway SIP conectado a un primario, a otro SIP Proxy, a un operador SIP, etc.

Por esta razón, como nuestro SIP Proxy es capaz de enviar el INVITE a uno o a otro lugar, también se comporta como un «balanceador de carga«, permitiéndonos distribuir las llamadas entre varios sistemas, mientras que el tráfico RTP (el audio) va directo entre el usuario y el gateway, Asterisk o el operador.

¿Un SIP Proxy sustituye a un Asterisk?

Un SIP Proxy sustituiría a un Asterisk para esas llamadas internas, no sobrecargando el sistema, pero si un SIP Proxy es rápido es porque la programación que se ejecuta cada vez que se recibe un INVITE o cualquier otro paquete SIP suele ser bastante sencilla. Si queremos que al pulsar *99, el usuario acceda al buzón de voz, necesitaremos un Asterisk que ofrezca el servicio de Buzón de Voz y programar en el SIP Proxy que, al pulsar el *99, envíe el paquete SIP a ese Asterisk.

Un SIP Proxy no reproduce locuciones, ni espera a que se pulsen DTMF, ni ejecuta menús IVR, ni graba llamadas,… estas acciones son propias de una centralita.

Un SIP Proxy tampoco funciona con tarjetas de comunicaciones, por lo que si queremos utilizar un SIP Proxy para hacer llamadas, necesitarás utilizar otro «punto SIP«, como por ejemplo, un Gateway SIP o un Operador SIP.

Vale, quiero montar un SIP Proxy ¿cual utilizo?

Esa es una de las preguntas más comunes para todos aquellos que quiere empezar a montar su infraestructura SIP y la respuesta no es fácil, aunque la elección prácticamente se reduce en utilizar una de las dos alternativas principales: Kamailio u openSIPS, aunque si tienes prisa y necesitas acelerar el proyecto, también puedes utilizar SIP:Wise como base para tu proyecto.

Hay que saber que tanto Kamailio como openSIPS son dos proyectos que parten del mismo: OpenSER, un SIP Proxy de código abierto y libre que fue desarrollado por varios programadores como alternativa a un SIP proxy comercial, profesional y muy utilizado en grandes proyectos llamado S.E.R. (SIP Express Router).

En el año 2008, los desarrolladores del proyecto OpenSER decidieron separarse y tomar rumbos distintos, apareciendo el proyecto openSIPS, tras lo cual OpenSER pasó a llamarse Kamailio.
Tras esto, tanto Kamailio como openSIPS pasaron a ser proyectos independientes con un recorrido propio y desarrollos individuales, aunque al ser código libre y tener un núcleo tan parecido, algunos avances de un proyecto solían ser «imitados» en el otro.

A finales de ese año, Kamailio se unió a SER y se creó el proyecto SIP-ROUTER Kamailio que, por acortar, llamamos Kamailio y se centró en crear un proyecto de SIP Proxy ultra eficiente, completo y centrado al 100% en su funcionalidad como SIP Proxy.

Kamailio es un proyecto de software libre con una comunidad y documentación bastante amplia y «patrocinado» por la empresa Asipto. De la misma manera, openSIPS es un proyecto de software libre con una comunidad y documentación bastante amplia y «patrocinado» por la empresa AG Projects.

Ambos sistemas tienen empresas a su espalda que ofrecen soporte, ayuda, consultoría y realizan proyectos a medida, desarrollos propios.

Opinión personal

Como me lo han preguntado varias veces, (la última en un comentario del artículo anterior), diré que, siempre como opinión personal, si tuviera que escoger entre ambas aplicaciones, seguramente escogería Kamailio, aunque no hay ningún motivo de peso para tal elección, simplemente me adentré en el mundo SIP con Kamailio, conozco a varios desarrolladores y continué utilizándolo cuando me ha hecho falta.

Si bien desde un punto de vista de software libre apoyo al 100% ambos proyectos y todos los desarrolladores de ambos proyectos merecen mi total gratitud, debo decir que tengo conocidos que utilizan ambos sistemas, por lo que el factor «personal» no es tan decisivo.

Lo ideal sería probar un sistema, aprender a usarlo, probar otro (una vez aprendida la teoría de cómo funciona de uno de ellos, el segundo es bastante similar) y seleccionar cual de los dos es el más conveniente para el proyecto que quiere llevar a cabo.

Generalmente existe cierto «tipo» de proyectos que piden un SIP Proxy a gritos:

  • Un operador IP
  • Una empresa de más de 1000 extensiones cuyo 80% de las llamadas son internas.
  • La infraestructura telefónica de una universidad
  • Una empresa con decenas de sedes independientes
  • etc.

Por supuesto, esto son generalidades que no tiene por qué ser válido siempre, ya que para algunos casos, uno o varios sistemas Asterisk sirven perfectamente, pero tarde o temprano un SIP Proxy es más que necesario.

Descargas

github

GitHub Kamailiohttps://github.com/kamailio/kamailio

GitHub openSIPShttps://github.com/OpenSIPS/opensips

InstantByte Logo
Anterior artículoKamailio 4.1.0 Released
Siguiente artículo 9809-9793Asterisk 10 llega a su fase End Of Life

Debate en este artículo

  • Javier Valencia

    Muy buen articulo Elio.

    Simplemente por ponerle un pero, es que hay una alternativa bastante interesante llamada OverSIP de tu amigo Iñaki. Particularmente me parece muy buena, sobre todo por que la logica del enrutamiento SIP se hace con Ruby.

    Gracias y un saludo.

    • Hola Javier,

      Efectivamente existe OverSIP http://www.sinologic.net/2012-08/oversip-primer-proxy-sip-soporte-websocket.html pero además hay muchos más SIP proxies: repro, siproxd, partysip,… incluso hasta 3cx tiene su proxy sip, pero tanto la documentación existente de Kamailio y OpenSIPS como el número de usuarios, como el número de características, potencia, flexibilidad, etc… hace que estos dos servidores sean los más utilizados.

      Por supuesto, que existen muchas otras implementaciones que tienen sus ventajas (más rápidas, más seguras, más flexibles, hechas en python, en ruby, en PHP, … ) pero tanto Kam como oSips son las más conocidas y más utilizadas.

      Saludos y gracias por el comentario! 😀

  • Javier Valencia

    Bajo mi punto de vista es el tercero de la clase, Elio, por documentación y potencial lo es.

    Tu que tienes más experiencia en VoIP es probable que tengas otra opinión.

    Encantado de participar en la comunidad. =)

  • Pablo

    Elio, excelente articulo, muy bien explicado. Muchas gracias.

  • Elio, y la solucion usando balanceadores de carga tipo Citrix NetScaler?
    Yo he probado este balanceador y creo que realiza funciones similares a las que indicas que realiza un Sip Proxy.
    Un saludo y excelente articulo como siempre

    • No sé cómo funciona el NetScaler de Citryx, pero un balanceador de carga de red no suele ser muy compatible con el protocolo SIP ya que una llamada SIP está formada por varios paquetes (INVITE, OK, ACK, CANCEL, BYE, etc…) y si no se envían todos los paquetes al mismo «servidor», es probable que ocurran cosas no deseadas: no hay audio, la llamada se corte durante la conversación, la llamada no se corte cuando alguien cuelgue, etc.

  • Franmy

    Exelente articulo, una duda que tengo es si se necesitan conocimientos amplios de programacion para trabajar con kamalillo u otro sip proxy.

    • Gracias por tus comentario @Franmy,

      Para utilizar un sip proxy no hace falta saber programar, pero sí que hace falta conocer un poco la sintaxis de la configuración y sobre todo, qué es lo qué se quiere hacer, ya que una vez se sepa con seguridad esto último buscar una solución es mucho más sencilla.

  • Hola Elio, como siempre posteando artículos muy interesantes, quería agradecerte que siempre compartas tecnologías nuevas y otras pues que tal vez uno no ha utilizado, trate de ir al SIP Master Class de Avanzada 7 pero no pude espero este año ir a recibir las instrucciones del gran Olle. Un saludo

    • Una lástima, si hay un sitio donde realmente se aprende cómo montar una red SIP con Kamailio y Asterisk es en la SIP MasterClass. Espero que puedas ir en otra ocasión pues es una experiencia realmente inolvidable.

  • Guillermo Prado

    excelente artículo, diste en el punto. Lo más complicado es saber cuando se requiere un SIP PROXY y cuando no. Hace un tiempo jugué con OpenSer y destaco su estabilidad y posibilidades de configuración, sobre todo en los esquemas de balanceo y failover.

    Gracias.

    • En algunas ocasiones me he encontrado situaciones en las que querían meter un SIP Proxy y no era necesario, y todo lo contrario: una situación que estaba pidiendo un SIP Proxy a gritos y continuaban metiendo Asterisk. En ambas situaciones podían mejorar considerablemente conociendo la existencia de este tipo de aplicación y cuando se debe utilizar, no obstante, tampoco he encontrado un sitio donde lo deje claro. Espero que con este artículo sea algo más fácil. 🙂

  • Alejandro

    Hola Elio,
    magnífico artículo. Dices que vendría bien un SIP Proxy para un organismo público con más de 1000 extensiones y un 80% de llamadas internas. Si esto se hiciese con Kamailio/OpenSips en vez de con Asterisk, ¿se podrían mantener funcionalidades tipo captura de llamadas, BLF, etc., que tan frecuentes son en este tipo de escenarios?
    Muchas gracias por tus sabios consejos!! 🙂