Ir al contenido

UDP / RTP para la entrega de TV digital

El multicast UDP entrega contenido de TV a muchos receptores a la vez usando un solo flujo. Esto ahorra ancho de banda y funciona bien para hoteles, redes de ISP y recintos deportivos. Lee más sobre el Protocolo UDP.

Diagrama de Multicast UDP

La Dirección de Medios configura el destino del flujo UDP. El formato para esta dirección es el siguiente:

udp://[interface@]address[:port][#options]

Entre corchetes se indican los parámetros opcionales.

  • interface - nombre de la interfaz local, como eth0. Si este campo no se define, el flujo UDP se entregará según las rutas del sistema
  • address - dirección IPv4 del grupo multicast, localhost o host remoto para entrega unicast
  • port - puerto de red para la entrega UDP. Si no se especifica, se usa el puerto predeterminado 1234

Se pueden definir opciones adicionales después del símbolo # y se separan con el símbolo &, similar a los parámetros en una URL típica. Estas son las opciones disponibles:

  • socket_size=bytes - define el tamaño personalizado del socket del sistema. Si no se especifica, se toma el valor predeterminado de la configuración del sistema: sysctl net.core.wmem_default
  • sync - habilita la transmisión de UDP en un hilo separado con sincronización de bitrate
  • no_sync - desactiva la sincronización de bitrate si se ha habilitado globalmente
  • cbr=Kbps - habilita la sincronización de bitrate y bitrate constante. Lee más sobre Bitrate Constante (CBR)
  • ttl=n - controla la vida útil del datagrama para evitar que se repita indefinidamente por errores de enrutamiento. El valor predeterminado es 32
  • sap - activa SAP. Lee más sobre el Protocolo de Anuncio de Sesión para Multicast

Aquí tienes algunos ejemplos de cómo se puede usar el formato de dirección de medios en diferentes escenarios con Astra:

  • Entrega multicast en una interfaz específica: Si quieres entregar un flujo UDP a un grupo multicast en la dirección 239.255.0.1 a través de una interfaz de red específica como eth0, la dirección sería: udp://[email protected]
  • Entrega multicast según la ruta definida por el sistema: Si quieres entregar un flujo UDP a un grupo multicast en la dirección 239.255.0.2 y que el sistema determine la ruta (interfaz), la dirección sería: udp://239.255.0.2
  • Entrega unicast a un host específico: Si envías un flujo unicast a un host específico en la dirección IP 192.168.1.100, la dirección sería: udp://192.168.1.100
  • Entrega en un puerto específico: Si quieres entregar un flujo UDP a un grupo multicast en la dirección 239.255.0.3 en un puerto específico, por ejemplo 5000, la dirección sería: udp://239.255.0.3:5000
  • Activar CBR para preparar el flujo para modulación DVB: Si quieres entregar un flujo UDP al modulador DVB y necesitas un bitrate constante, por ejemplo 24000Kbit/s, la dirección sería: udp://239.255.0.4#cbr=24000
  • Entrega a localhost con un puerto específico: Si necesitas entregar un flujo UDP a un servicio en el mismo servidor, como FFMpeg para transcodificación, usarías la siguiente dirección: udp://127.0.0.1:11000

Para configurar una nueva salida UDP usando la Interfaz Web, comienza seleccionando “New Stream” en el menú principal. Luego, en la Lista de Salidas, haz clic en el ícono de engranaje y establece el “Output Type” en UDP. Alternativamente, puedes modificar un flujo existente abriendo su configuración, agregando una Nueva Salida y haciendo clic en el ícono de engranaje correspondiente.

Opciones de Salida UDP

La mayoría de las opciones presentadas en la interfaz web corresponden directamente a los componentes de la dirección UDP, como se describe en la sección “Formato de Dirección de Medios”.

Astra regula el ritmo de cada salida UDP y RTP según la tasa de bits del flujo y envía los datagramas con un temporizador de 10 puntos de envío por milisegundo. Esto es suficiente para la mayoría de los servidores.

Cuando un solo proceso de Astra envía cientos de flujos UDP, muchas salidas se activan en el mismo punto de envío y sus datagramas salen en ráfagas. Entonces el lado receptor puede informar errores CC. Un temporizador más fino reparte los datagramas dentro del milisegundo.

La variable de entorno ASTRA_UDP_TICKS define el número de puntos de envío por milisegundo: de 1 a 50, 10 por defecto. El valor se aplica a todas las salidas UDP y RTP del proceso. Un valor más alto consume más CPU.

Para establecer el valor, abra la configuración adicional (override) del servicio:

Ventana de terminal
systemctl edit astra

Añada la variable en el editor, guarde el archivo y salga:

[Service]
Environment=ASTRA_UDP_TICKS=50

Reinicie el servicio para aplicar el cambio:

Ventana de terminal
systemctl restart astra

Si el servicio tiene otro nombre, úselo en lugar de astra. Más información en Administrar el servicio Astra. Un valor fuera del rango se ignora con una advertencia en el registro y se usa el valor por defecto.