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

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