Protocolo de transporte en tiempo real
El Protocolo de transporte en tiempo real (RTP) es un protocolo de red para entregar audio y video a través de redes IP. RTP se utiliza en sistemas de comunicación y entretenimiento que involucran transmisión de medios, como telefonía, aplicaciones de teleconferencia de video que incluyen WebRTC, servicios de televisión y funciones de pulsar para hablar basadas en la web.
RTP generalmente se ejecuta sobre el Protocolo de datagramas de usuario (UDP). RTP se utiliza junto con el Protocolo de control RTP (RTCP). Mientras que RTP transporta los flujos de medios (por ejemplo, audio y video), RTCP se usa para monitorear las estadísticas de transmisión y la calidad del servicio (QoS) y ayuda a la sincronización de múltiples flujos. RTP es una de las bases técnicas de Voz sobre IP y, en este contexto, a menudo se usa junto con un protocolo de señalización como el Protocolo de inicio de sesión (SIP) que establece conexiones a través de la red.
RTP fue desarrollado por el Grupo de trabajo de transporte de audio y video del Grupo de trabajo de ingeniería de Internet (IETF) y se publicó por primera vez en 1996 como RFC 1889, que luego fue reemplazado por RFC 3550 en 2003.
Resumen
El Grupo de trabajo de ingeniería de Internet (IETF) comenzó a desarrollar RTP a partir de 1992, junto con el Protocolo de anuncio de sesión (SAP), el Protocolo de descripción de sesión (SDP) y el Protocolo de inicio de sesión (SIP).
RTP está diseñado para la transferencia en tiempo real de extremo a extremo de medios de transmisión. El protocolo proporciona funciones para la compensación de fluctuaciones y la detección de pérdida de paquetes y entrega fuera de servicio, que son comunes especialmente durante las transmisiones UDP en una red IP. RTP permite la transferencia de datos a múltiples destinos a través de multidifusión IP. RTP se considera el estándar principal para el transporte de audio/video en redes IP y se usa con un perfil asociado y un formato de carga útil. El diseño de RTP se basa en el principio arquitectónico conocido como marco de capa de aplicación, donde las funciones de protocolo se implementan en la aplicación en lugar de la pila de protocolos del sistema operativo.
Las aplicaciones de transmisión multimedia en tiempo real requieren la entrega oportuna de información y, a menudo, pueden tolerar cierta pérdida de paquetes para lograr este objetivo. Por ejemplo, la pérdida de un paquete en una aplicación de audio puede provocar la pérdida de una fracción de segundo de los datos de audio, lo que puede pasar desapercibido con algoritmos de ocultación de errores adecuados. El Protocolo de control de transmisión (TCP), aunque estandarizado para el uso de RTP, normalmente no se usa en aplicaciones RTP porque TCP favorece la confiabilidad sobre la puntualidad. En cambio, la mayoría de las implementaciones de RTP se basan en el Protocolo de datagramas de usuario (UDP). Otros protocolos de transporte diseñados específicamente para sesiones multimedia son SCTP y DCCP, aunque, a partir de 2012, no tienen un uso generalizado.
RTP fue desarrollado por el grupo de trabajo de transporte de audio/video de la organización de estándares IETF. RTP se usa junto con otros protocolos como H.323 y RTSP. La especificación RTP describe dos protocolos: RTP y RTCP. RTP se usa para la transferencia de datos multimedia, y RTCP se usa para enviar periódicamente información de control y parámetros de QoS.
El protocolo de transferencia de datos, RTP, transporta datos en tiempo real. La información proporcionada por este protocolo incluye marcas de tiempo (para sincronización), números de secuencia (para detección de pérdida de paquetes y reordenación) y el formato de carga útil que indica el formato codificado de los datos. El protocolo de control, RTCP, se utiliza para la retroalimentación de calidad de servicio (QoS) y la sincronización entre los flujos de medios. El ancho de banda del tráfico RTCP en comparación con RTP es pequeño, normalmente alrededor del 5 %.
Las sesiones RTP normalmente se inician entre pares que se comunican mediante un protocolo de señalización, como H.323, el Protocolo de inicio de sesión (SIP), RTSP o Jingle (XMPP). Estos protocolos pueden utilizar el Protocolo de descripción de sesión para especificar los parámetros de las sesiones.
Se establece una sesión RTP para cada transmisión multimedia. Los flujos de audio y video pueden usar sesiones RTP separadas, lo que permite que un receptor reciba selectivamente componentes de un flujo en particular. El diseño de RTP y RTCP es independiente del protocolo de transporte. Las aplicaciones generalmente usan UDP con números de puerto en el rango sin privilegios (1024 a 65535). El Protocolo de transmisión de control de flujo (SCTP) y el Protocolo de control de congestión de datagramas (DCCP) pueden usarse cuando se desea un protocolo de transporte confiable. La especificación RTP recomienda números de puerto pares para RTP y el uso del siguiente número de puerto impar para la sesión RTCP asociada. Se puede usar un solo puerto para RTP y RTCP en aplicaciones que multiplexan los protocolos.
RTP es utilizado por aplicaciones multimedia en tiempo real, como voz sobre IP, audio sobre IP, WebRTC y televisión con protocolo de Internet.
Perfiles y formatos de carga útil
RTP está diseñado para transportar una multitud de formatos multimedia, lo que permite el desarrollo de nuevos formatos sin revisar el estándar RTP. Para ello, no se incluye en la cabecera RTP genérica la información requerida por una determinada aplicación del protocolo. Para cada clase de aplicación (por ejemplo, audio, video), RTP define un perfil y formatos de carga útil asociados. Cada instanciación de RTP en una aplicación particular requiere un perfil y especificaciones de formato de carga útil.
El perfil define los códecs utilizados para codificar los datos de carga útil y su asignación a códigos de formato de carga útil en el campo de protocolo Tipo de carga útil (PT) del encabezado RTP. Cada perfil va acompañado de varias especificaciones de formato de carga útil, cada una de las cuales describe el transporte de datos codificados particulares. Ejemplos de formatos de carga útil de audio son G.711, G.723, G.726, G.729, GSM, QCELP, MP3 y DTMF, y ejemplos de cargas útiles de video son H.261, H.263, H.264, H.265 y MPEG-1/MPEG-2. La asignación de flujos de audio/video MPEG-4 a paquetes RTP se especifica en RFC 3016, y las cargas útiles de video H.263 se describen en RFC 2429.
Ejemplos de perfiles RTP incluyen:
- El Perfil RTP para audio y videoconferencias con control mínimo (RFC 3551) define un conjunto de asignaciones de tipo de carga útil estática, y un mecanismo dinámico para el mapeo entre un formato de carga útil, y un valor PT utilizando el Protocolo de descripción de la sesión (SDP).
- El protocolo de transporte seguro en tiempo real (SRTP) (RFC 3711) define un perfil RTP que proporciona servicios criptográficos para la transferencia de datos de carga útil.
- El experimental Perfil de datos de control para RTP (RTP/CDP) para comunicaciones de máquina a máquina.
Encabezado del paquete
Los paquetes RTP se crean en la capa de aplicación y se envían a la capa de transporte para su entrega. Cada unidad de datos de medios RTP creada por una aplicación comienza con el encabezado del paquete RTP.
Offsets | Octet | 0 | 1 | 2 | 3 | ||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Octet | Bit | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | ||
0 | 0 | Versión | P | X | CC | M | PT | Número de secuencia | |||||||||||||||||||||||||||
4 | 32 | Timestamp | |||||||||||||||||||||||||||||||||
8 | 64 | identificador SSRC | |||||||||||||||||||||||||||||||||
12 | 96 | Identificadores de CSRC ... | |||||||||||||||||||||||||||||||||
12+4×CC | 96+32×CC | ID de encabezado de extensión específico del perfil | Longitud del encabezado de extensión | ||||||||||||||||||||||||||||||||
16+4×CC | 128+32×CC | Cabecera de extensión ... |
El encabezado RTP tiene un tamaño mínimo de 12 bytes. Después del encabezado, pueden estar presentes extensiones de encabezado opcionales. A esto le sigue la carga útil RTP, cuyo formato está determinado por la clase particular de aplicación. Los campos del encabezado son los siguientes:
- Versión: (2 bits) Indica la versión del protocolo. La versión actual es 2.
- P (Padding): (1 bit) Se utiliza para indicar si hay bytes adicionales de relleno al final del paquete RTP. El relleno se puede utilizar para llenar un bloque de cierto tamaño, por ejemplo, como requiere un algoritmo de cifrado. El último byte del padding contiene el número de bytes de padding que fueron añadidos (incluyendo a sí mismo).
- X (Extensión): (1 bit) Indica la presencia de un cabecera de extensión entre el encabezado y los datos de carga útil. El encabezado de extensión es específico de aplicación o perfil.
- CC (conteo del CSRC): (4 bits) Contiene el número de identificadores CSRC (definidos a continuación) que siguen el SSRC (también definido a continuación).
- M (Marker): (1 bit) Firma utilizada en el nivel de aplicación de manera específica de perfil. Si se establece, significa que los datos actuales tienen alguna relevancia especial para la aplicación.
- PT (tipo de carga): (7 bits) Indica el formato de la carga útil y determina su interpretación por la aplicación. Los valores son específicos del perfil y pueden ser asignados dinámicamente.
- Número de secuencia: (16 bits) El número de secuencia se aumenta para cada paquete de datos RTP enviado y es utilizado por el receptor para detectar la pérdida de paquetes y para dar cabida a la entrega fuera de orden. El valor inicial del número de secuencia debe ser aleatorizado para hacer más difícil los ataques de texto conocidos contra el Protocolo de Transporte en tiempo real seguro.
- Timestamp: (32 bits) Utilizado por el receptor para reproducir las muestras recibidas a tiempo y intervalo adecuados. Cuando hay varias corrientes de medios presentes, los horarios pueden ser independientes en cada flujo. La granularidad del tiempo es específico de la aplicación. Por ejemplo, una aplicación de audio que muestra datos una vez cada 125 μs (8 kHz, una tasa de muestra común en la telefonía digital) utilizaría ese valor como resolución de reloj. Los flujos de vídeo suelen usar un reloj de 90 kHz. La granularidad del reloj es uno de los detalles que se especifican en el perfil RTP para una aplicación.
- SSRC: (32 bits) Identificador de fuente de sincronización identifica singularmente la fuente de un flujo. Las fuentes de sincronización dentro de la misma sesión RTP serán únicas.
- CSRC: (32 bits cada uno, el número de entradas es indicado por el CSRC count sobre el terreno) Contribuir IDs de fuente enumerar las fuentes de contribución a una corriente que se ha generado de múltiples fuentes.
- Extensión del encabezado: (opcional, presencia indicada por Extensión sobre el terreno) La primera palabra de 32 bits contiene un identificador específico de perfil (16 bits) y un especificador de longitud (16 bits) que indica la longitud de la extensión en unidades de 32 bits, excluyendo los 32 bits del encabezado de extensión. Los datos del encabezado de extensión siguen.
Diseño de aplicaciones
Una aplicación multimedia funcional requiere otros protocolos y estándares utilizados junto con RTP. Se utilizan protocolos como SIP, Jingle, RTSP, H.225 y H.245 para iniciar, controlar y terminar sesiones. Se utilizan otros estándares, como H.264, MPEG y H.263, para codificar los datos de carga útil según lo especificado por el perfil RTP aplicable.
Un remitente RTP captura los datos multimedia, luego los codifica, los enmarca y los transmite como paquetes RTP con marcas de tiempo adecuadas y números de secuencia y marcas de tiempo crecientes. El remitente establece el campo tipo de carga útil de acuerdo con la negociación de conexión y el perfil RTP en uso. El receptor RTP detecta los paquetes faltantes y puede reordenarlos. Decodifica los datos multimedia en los paquetes según el tipo de carga útil y presenta el flujo a su usuario.
Documentos de normas
- RFC 3550, Estándar 64, RTP: Protocolo de transporte para aplicaciones en tiempo real
- RFC 3551, Norma 65, Perfil RTP para conferencias de audio y vídeo con control mínimo
- RFC 4855, Tipo de medios Registro de formatos de carga de RTP
- RFC 4856, Media Type Registro de formatos de carga en el perfil RTP para conferencias de audio y vídeo
- RFC 7656, A Taxonomy of Semantics and Mechanisms for Real-Time Transport Protocol (RTP) Sources
- RFC 3190, Formato de carga de RTP para DAT de 12 bits y audio de 20 y 24 bits
- RFC 6184, Formato de carga de RTP para H.264 Video
- RFC 3640, Formato de carga de RTP para el transporte de corrientes elementales MPEG-4
- RFC 6416, Formato de carga de RTP para MPEG-4 Audio/Visual Streams
- RFC 2250, Formato de carga de RTP para MPEG1/MPEG2 Video
- RFC 4175, Formato de carga de RTP para vídeo no comprimido
- RFC 6295, Formato de carga de RTP para MIDI
- RFC 4696, An Implementation Guide for RTP MIDI
- RFC 7587, Formato de carga de RTP para el código de voz y audio de Opus
- RFC 7798, Formato de carga de RTP para la codificación de vídeo de alta eficiencia (HEVC)
Contenido relacionado
Comandante Keen
Red comunitaria inalámbrica
Personaje de control