Skip to content

Captura de multicast y MPTS

Un flujo de transporte por UDP es la entrada principal de la cabecera. La señal llega como un servicio aparte en un grupo (SPTS) o como un multiplex en el que el programa necesario es uno de una docena (MPTS). Mcaster acepta ambos casos, y en el segundo recibe el tronco una sola vez para todos sus programas, por muchos streams que usted monte a partir de él.

Conecte el grupo

Cree un stream y pulse + Añadir fuente en la pestaña Fuentes. El protocolo es UDP MPEGTS:

  • Host — la dirección del grupo multicast, por ejemplo 239.255.1.77, o 0.0.0.0 para unicast en un puerto;
  • Puerto — el puerto del grupo;
  • Interfaz de entrada — el nombre de la interfaz de red o su dirección IPv4 local; si el campo está vacío, el sistema la elige.
  • Tiempo de espera del par (ms) — cuánto silencio tolerar antes de reiniciar la captura; el campo vacío significa el valor por defecto.

Pulse Guardar. Si en el campo Host hay un grupo multicast, la estación se suscribe a él por sí misma (IGMP para IPv4, MLD para IPv6). El unicast se diferencia solo en la dirección: 0.0.0.0 significa «escuchar el puerto en todas las interfaces».

Selección de la interfaz de entrada

Si el multicast llega por una tarjeta de red dedicada, indique su Interfaz de entrada en la fuente MPEG-TS/UDP de la pestaña Fuentes. Por ejemplo, establezca Host en 239.255.1.77, Puerto en 5500 e Interfaz de entrada en eno2. En lugar del nombre puede usar la dirección IPv4 de esa tarjeta, por ejemplo 192.168.20.10. La suscripción al grupo se crea en esa interfaz aunque la ruta por defecto pase por eno1.

El campo se aplica al multicast IPv4, incluido el multicast con fuente específica (SSM). Para IPv6 déjelo vacío: no se admite la selección explícita de interfaz para IPv6. En unicast este campo no selecciona la interfaz de recepción. Vacíe el campo y guarde para volver a la selección mediante la tabla de rutas del sistema operativo. Cambiar la interfaz recrea la suscripción e interrumpe brevemente la captura.

El nombre o la dirección deben pertenecer al streamer que recibe la señal. Si la interfaz no existe o no tiene dirección IPv4, la fuente no arrancará; el estado de la entrada mostrará la causa. En un clúster, compruebe el ajuste en cada streamer donde pueda colocarse este stream.

Si la fuente se configura mediante URL, use udp://239.255.1.77:5500?interface=eno2. También se admite udp://eno2@239.255.1.77:5500; si se incluye además el parámetro interface, este tiene prioridad.

La interfaz para enviar multicast se configura por separado en cada push.

Un programa de un tronco MPTS

Un multiplex de un satélite o de un socio lleva varios servicios en un mismo grupo. El necesario se elige con el campo Programa (PNR) del mismo origen: cree un stream por servicio, todos con el mismo grupo y puerto y con números de programa distintos.

El campo vacío significa «la primera con contenido» — así lo dice el formulario debajo del campo.

Lo que importa aquí en la práctica:

  • El tronco se recibe una sola vez. Dos streams con el mismo grupo, puerto, interfaz y fuente SSM comparten el socket y el demultiplexor: la red ve una sola suscripción y la máquina hace un único análisis del transporte. Diez programas de un tronco no cuestan diez capturas.
  • Sin número indicado, se toma el primer programa que realmente lleva medios. No el primero según el PSI: las tablas de los troncos suelen estar desfasadas y anuncian servicios cuyos PID fueron recortados hace tiempo.
  • Un número ilegible lo rechaza el formulario, en lugar de interpretarse como «todo el tronco»: de lo contrario el stream acabaría siendo una mezcla de todos los programas del multiplex.
  • Los contadores se atribuyen por suscriptor, mientras que los errores del tronco en su conjunto se duplican a todos: por stream se ven tanto los PID propios como el problema ocurrido con el transporte entero.

Búfer de recepción

El núcleo del sistema mantiene una cola de datagramas entrantes en el socket UDP: mientras la estación está ocupada en otra cosa, los paquetes esperan ahí en lugar de perderse. El campo Búfer de recepción (bytes) de la entrada fija el tamaño de esa cola. Un campo vacío es el valor por omisión de 4 MiB — alrededor de un segundo de un multiplex completo de 30–40 Mbit/s; los 212 KiB de fábrica del núcleo apenas cubrirían 40–50 ms, y cualquier demora del planificador se convierte en pérdidas que aparecen como errores CC en los contadores.

Lo que importa en la práctica:

  • Un socket por dirección. Todos los streams del mismo grupo y puerto comparten también el búfer: gana el último valor configurado explícitamente, y el cambio se aplica en caliente, sin recrear la suscripción.
  • El núcleo puede recortar la petición. Sin CAP_NET_ADMIN el tamaño está limitado por el sysctl net.core.rmem_max — bajo el campo aparece un aviso con el tamaño real. Suba rmem_max al valor pedido o conceda a la estación CAP_NET_ADMIN: entonces la petición se aplica íntegra.
  • La tarjeta nombra la causa. Cuando el núcleo empieza a descartar datagramas, la entrada recibe el problema «Búfer de recepción pequeño», y una pista bajo el campo dice «al menos N»: cuántos bytes ocupan 200 ms del bitrate actual. Los errores CC y la desincronización junto a ella son consecuencias: suba primero el búfer.

El margen queda por debajo de 200 ms del bitrate — el formulario indica hasta cuánto subir el búfer

La pérdida de datagramas nombrada en la tarjeta: la causa es el búfer de recepción; los errores CC y la desincronización son sus consecuencias

Captura de un remitente concreto (SSM)

Cuando varias fuentes emiten a un grupo y solo interesa una de ellas, ponga su dirección en el campo Origen (SSM).

El kernel se suscribe al grupo indicando el remitente (IP_ADD_SOURCE_MEMBERSHIP, IGMPv3) y descarta el tráfico ajeno antes de que llegue a la estación. Soportado para IPv4.

Captura por HTTP

El mismo flujo de transporte servido por HTTP es la forma habitual de tomar la señal de un socio cuando entre ustedes no circula multicast. El protocolo del origen es HTTP MPEGTS, con una URL y, si hace falta, un Tiempo de espera del par (ms).

La transferencia chunked está soportada. Una conexión rota y una conexión viva pero silenciosa se distinguen y aparecen de forma distinta en el estado de la entrada — son dos diagnósticos diferentes: «nos desconectaron» y «dejaron de enviar».

Una entrada HTTP tiene activado por defecto el búfer de entrada (30 segundos): un origen así casi siempre llega a ráfagas y, sin el búfer, las ráfagas se irían a la salida.

Qué se analiza del stream

Vídeo H264, HEVC, MPEG-2; audio AAC, AC3, EAC3, MPEG-2 audio; teletexto DVB y subtítulos DVB con sus descriptores, subtítulos CEA-608/708, metadatos KLV, marcadores SCTE-35, descriptores de idioma de las pistas del PMT.

Los marcadores SCTE-35 se reciben, atraviesan el stream hasta cada salida y se reúnen en pausas publicitarias, véase Marcas publicitarias.

Qué debe cumplirse en la red

  • El multicast no viaja por internet. La estación debe estar en el mismo segmento que el origen del grupo, o la red entre ellos debe encaminar multicast.
  • Quien se suscribe es la estación. La petición IGMP sale de ella, y los conmutadores con IGMP snooping entregan el stream solo a los suscriptores. No hay nada que configurar en la estación para ello — lo importante es que la red deje pasar la suscripción.
  • Compruebe desde la máquina de la estación. El tcpdump -i <iface> host 239.255.1.77 ejecutado allí responde a la pregunta «¿llegan los paquetes?», y ninguna comprobación desde una máquina vecina lo sustituye.

Aplicación de los cambios

El cambio de grupo, puerto, interfaz, número de programa o URL reinicia el origen. El cambio de un solo tiempo de espera se aplica en caliente, sin interrumpir la captura.

Qué viene después