Ir al contenido principal

NAT traversal signal: rtpproxy vs rtpengine – que usar

NAT traversal signal y kamailio

La idea es la escucha permanente internamente en el puerto UDP o en un socket local, los mensajes de control para las señales SIP. Es decir controlar el flujo de informacion y hacia donde se envia la respuestas por medio de estos comandos. Dado que estas señales no llegan directo al servicio SIP sino al software RTP NAT, entonces el servicio SIP puede decirle al servicio RTP “dame ese flujo, yo se que hacer” despues de enviarlo internamente y recibir una respuesta lo vuelve entregar y decir “aqui esta el flujo respuesta, envialo a tal dispositivo”.




— el servicio SIP puede decirle al servicio RTP “dame ese flujo, yo se que hacer” despues de enviarlo internamente y recibir una respuesta lo vuelve entregar y decir “aqui esta el flujo respuesta, envialo a tal dispositivo”.
Para cada secuencia de medios, abre dos pares de puertos UDP en la interfaz pública en el rango de 20000 y 40000 por defecto dependiendo de que software rtpmedia se este usando (rtpproxy/rtpengine), un par en números de puerto impares para los datos de medios, y un par en el siguiente número de puerto par para los metadatos, por ejemplo, RTCP en el caso de secuencias RTP. Cada punto final se comunica con un par para ambos puntos finales (si emplea rtpproxy) o un par especifico para estos (si emplea rtpengine) para evitar problemas a la hora de determinar a dónde enviar un paquete.
Tenemos entonces:
  1. RTPProxy resumido
  2. RTPengine resumido
  3. Tabla comparativa
  4. Paquetes para descargar

1. RTP Proxy

RTPProxy fue desarrollado para habilitar llamadas VoIP SIP con NAT actuando como un intermediario para los flujos RTP. Este software es el predecesor y base de tanto rtpengine asi como de mediaproxy, funciona similar a rtpengine pero mas simplificado, es el mayormente usado en despliegues livianos y simples, su gran ventaja es que no requiere mayores cambios de configuracion mas que si la ip publica cambia.
Se puede utilizar en combinación con un elemento de señalización (SIP Proxy o SIP B2BUA) para construir redes VoIP complejas, optimizar el flujo de tráfico, recopilar información de calidad de voz, etc. Puede realizar varias funciones adicionales en transmisiones RTP, incluyendo grabación de llamadas, reproducción de anuncios pre-codificados, copia de transmisiones en tiempo real y re-encuadre de cargas útiles RTP.
El RTPproxy soporta algunas características avanzadas, como el modo de control remoto (usando socket ICE via UDP), permitiendo la construcción de redes SIP VoIP distribuidas y escalables. El módulo nathelper incluido en el SIP Express Router (SER: OpenSIPS o Kamailio), así como Sippy B2BUA permiten el uso de múltiples instancias de RTPproxy que se ejecutan en máquinas remotas con fines de tolerancia a fallos y equilibrio de carga.
CONCLUSION: Para entornos medianos con un solo servicio SIP/router esta es la eleccion, inclusive esta en debian (version vieja aun)

2. RTP Engine

El Media Relay (llamado rtpengine) es un redireccionador/reenviador de paquetes basado espacio de software del núcleo del sistema operativo, y controlado por el proxy SIP. Para cada flujo de medios (por ejemplo, un flujo de voz y/o vídeo), mantiene un par de puertos en el rango de números de puerto de 30000 a 40000. Cuando se negocian los flujos de medios, rtpengine abre los puertos en el espacio de usuario (aunque trabaje en el espacio de el sistema/software) y comienza a retransmitir los paquetes a las direcciones anunciadas (puede ser de nuevo a “endpoints” o a otro servicio interno antes de entregarlos a estos).
Usando NAT: Si los paquetes llegan desde direcciones de origen diferentes a las anunciadas en el cuerpo SDP del mensaje SIP (por ejemplo, en el caso de NAT), la dirección de origen se cambia implícitamente por la dirección de la que se reciben los paquetes. Una vez que se ha establecido la llamada y el rtpengine ha recibido paquetes de medios de ambos endpoints para esta llamada, el flujo de medios es empujado al kernel y luego es manejado por un módulo iptables personalizado de Sipwise para aumentar el rendimiento del sistema y reducir la latencia de los paquetes de medios.
Kernel e iptables: La parte interna del kernel del rtpengine se facilita a través de un módulo iptables con el nombre de destino RTPENGINE; si! es un modulo que modifica iptables dependiendo del origen y destino, haciendo este sistema muy dinamico, por lo que se tiene delicado cuidado: si se instalan reglas adicionales de cortafuegos o de filtrado de paquetes, es imperativo que esta regla permanezca intacta y se mantenga en su lugar. De lo contrario, si la regla se elimina de iptables, el núcleo no podrá reenviar los paquetes de medios y el reenvío recaerá en el servicio del espacio de usuario. Los paquetes seguirán siendo reenviados normalmente, pero el rendimiento será mucho peor en esas circunstancias, lo que se notará especialmente cuando muchos flujos de medios estén activos al mismo tiempo.
CONCLUSION: Por ende usar rtpengine es para niveles avanzados y de mucho cuidado!

Tabla comparativa

RTP media Patrocinador Programado Balanceo carga En kamailio A/V streams SQL log TP reenvio version
RTPproxy Sippy Software C delegado/kamailio rtpproxy limitado No software 1.2.1/2009-10-19
Rtpengine Sipwise C+kernel automatico/interno rtpengine cualquiera Si kernel/user 2.1/2013-02-11
MediaProxy AG Projects python+kernel automatico/interno mediaproxy cualquiera Si kernel 2.5.2/2011-09-09
erlrtpproxy Peter Lemenkov erlang delegado/erlang rtpproxy limitado No no sin stable version
Adicional todos tienen:
  • Apagado gradual, que termina el servicio solo cuando todas las señales hayan finalizado
  • Grabacion de medios, aunque inestable en rtpengine y mejorado en rtpproxy
  • Soporte de ambas tipos de IP : IPv4, IPv6.
  • Soporte de socket ICE de control: limitado en rtpproxy, completo en rtpengine.

Paquetes

A) RTPProxy:
En el caso de rtpproxy en Debian oficial esta uan version vieja, y aunque hay un request abierto: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=917456 explicando que no soporta NAT traversal con ip de advertise la respuesta de debian es bastante obtusa lo que es de esperar ya que muchos winbunteros son los empaquetadores ahora.
Para los que deseen un rtpproxy actualizado y debianizado correctamente usar: https://build.opensuse.org/package/show/home:vegnuli:voip/rtpproxy
B) RTPEngine
En el caso de rtpengine ha sidfo un dolor en Debian oficial debido a sus dependencias y el tema de licenciamiento y patentes, esta abierto el ITP como https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=916126 pero el avance es lento, el proyecto original tiene la estructura para construir paquetes pero no se garantiza la integracion de calidad con Debian en actualizaciones y menos seguridad. Se esta empaquetando en VenenuX en https://build.opensuse.org/package/show/home:vegnuli:voip/rtpengine tambien

Comentarios

Entradas más populares de este blog

Zabbix monitorizacion y admnistracion de redes - introduccion

  Esta herramienta, Zabbix se centra en los hosts: por lo que es la opción correcta para monitorear redes distribuidas (se desarrolló originalmente para monitorear servidores). Zabbix también es administrador , y está listo para ipv6! Con un proxy como hombre en el medio y también con funciones para redes ocultas y con cortafuegos. En los casos en los que no existe la opción de instalar un agente, Zabbix ofrece una supervisión básica sin agentes. Con él, puede verificar la disponibilidad de los servicios de red, así como ejecutar comandos remotos, con esta introducción comenzamos una serie de publicaciones sobre el despliegue de Zabbix en alpine y / o debian linux, también para redes distribuidas. Entonces empezemos a entender a zabbix:

Errores de pam_mysql: símbolo my_make_scrambled_password y dlerror

. el viejo Linux siempre funciona, los más nuevos son una mierda, pero aquí estamos y debemos solucionar.. para que se arregle esa basura: pam_mysql simplemente no se carga en Debian, porque se mueve a "ubicaciones segura"s, además, viene con algunos problemas en Debian 7, Debian 8 y Debian 9 si usas diferentes versiones de Mysql / Mariadb. Aquí las soluciones simples y otras:

ostiket 1.9.X solucion a STARTTLS failed code: 220, response OK

  ..en osticket 1.12, 1.10 asi como 1.9 si tiene un sistema de corro fuertemente configurado.. y quiere conectarse localmente (es decir no necesitamos alta seguridad) la configuracion es imposible con localhost aun cuando su puertos estan 100% cerrados y es ILOGICO TANTA SEGURIDAD!!! El mas ilogico de sus problemas fue " oticket authentication failure [SMTP: STARTTLS failed (code: 220, response: Ok)] ",...

bandeja de iconos e indicadores desaparecen con ayatana - Linux no es más GNU linux

En Alpine sabemos que todo es la vieja escuela, si intentas instalar en Alpine todo a mano, o en Debian a mano sin las recomendaciones activadas; en ambos casos, notaras que no apareceran los iconos en la barra de tareas! Si! tal cual sospechas, tiene que ver con una mierda windowisada y estandares! Si caiste de la mata con la inclusion de codigo Microsoft en el kernel, si la mierda ya huele con la invasion de shitstemd, te caeras y volveras a caer cuando te enteres que Canonical creo un estandar para el area de notificacion "que unifica todo los indicadores del sistema"! Si .. mas software que intenta tomar control unificado. Winlinux se acerca.. y no hacemos nada para proteger la libertad de diversidad que ofrecia linux! ! .

libretro viene y pronto estara en tu tv o telefono

Libretro es un multisistema como mame, pero enfocado a multimedia, es decir   no se extrañen pronto jugar viejos games o poner roms emuladores de play en su tv o bluray   player! porque libretro esta hasta para televisores!

Actualizando debian (old)stable a debian (new)stable

Debian 11 fue lanzado, ahora le mostraremos cómo actualizar de cualquier Debian a cualquier Debian nuevo. Significa que puede actualizar cualquiera, por ejemplo, Debian 12 futuro a Debian 13 futuro, o inclusive oldoldstable a siguiente oldstable.

Tomando en cuidado optimizaciones para estupidos novatos

En general, los ignorantes y los lammers al compilar algo, en su mal conocimiento, simplemente siguen algunas palabras y obedecen las introducciones a la mala comodidad ... Si le preguntas a StackOverFlow, solo hay noobs que le darán respuestas incorrectas .. Verifiquemos este caso: ...

Diversidad de los Sistemas de Inicio en peligro en Debian afecta a otras distros

Una posible mancha ocupara la libertad de elección de usuarios avanzados para la distro madre: Debian; uno que respete la diversidad y la libertad de elección a nivel de «Sistemas de Inicio (Init), todo debido a la futura Resolución General del Proyecto DEBIAN sobre como la gran Distro Madre debe abordar la Diversidad existente sobre los Sistemas de Inicio. Resumiendo hay 3 resoluciones que eliminan las libertades de diversidad, dejando solo el "systemd", de allí el que mas gente odie a systemd, a todo esto se le denomina "un enfoque sano de PID1" en el argot técnico. Sus consecuencias: muerte/obstrucción al trabajo de otras distros mediante carga de trabajo extra debido a que solo existirá systemd: Devuan y MXLinux entre otras.

virtualbox GURU_MEDITATION y VERR_PGM_PHYS_PAGE_RESERVED, casos y soluciones

Error ocurre cuando se tiene mala configuracino de CPU, RAM o NET, por ejemplo la maquina esta en 32bit y el os es 64, o se configuro mucha ram o casi mas de la mitad respecto la real. Guru Meditation -1618 (VERR_PGM_PHYS_PAGE_RESERVED pero encontrar como arreglarlo es dificil ya que no se sabe la causa real puesto es un probelma de configuracion del xml/vdm y sucede mcuho cuadno se crean VM por linea de comandos, asi que pongo los casos mas comunes que lo pueden solventar: CASO1: memoria mal asignada o no accedible es muy comun si usas varias VM y estas son de usuarios distintos, aqui es facil si tienes 2G de ram y ya tienes uan VM con 1G asignada, si tratas de arrancar otra VM con tambien 1G asignada esta fallara con ese error la solucion es disminuir ambas a 512 ya que no puedes arrancar varias VM y estas abarquen mas de la mitad de la ram del sistema real. Menos si son desde ditintos usuarios en la misma maquina real. CASO 2: mala configuracion de discos/ide...