RTSP ALG
El protocolo de transmisión en tiempo real (RTSP) controla la entrega de datos con propiedades en tiempo real, como audio y video. Los medios se pueden transmitir en el mismo flujo de control RTSP. Este es un protocolo basado en texto similar a HTTP, pero el cliente y el servidor mantienen la información de la sesión. Una sesión se establece mediante el mensaje SETUP y termina con el mensaje TEARDOWN. El transporte (el protocolo de medios, la dirección y los números de puerto) se negocia en la configuración y en la configuración-respuesta.
La compatibilidad con firewall con estado y servicios TDR requiere que configure el ALG RTSP para el puerto TCP 554. El ALG monitorea la conexión de control, abre flujos dinámicamente para secuencias de medios (RTP/RTSP) y realiza reescrituras de puerto y dirección TDR.
Descripción de la ALG RTSP
Visión general
RTSP (Protocolo de transmisión en tiempo real) es un protocolo de capa de aplicación para controlar la entrega de datos con propiedades en tiempo real. Es similar en sintaxis y operación a HTTP/1.1. A diferencia de SIP y H.323, el propósito de RTSP es acceder a los archivos de medios existentes a través de la red y controlar la reproducción de los medios. La comunicación típica es entre un cliente (que ejecuta RealPlayer, por ejemplo) y un servidor de medios de transmisión. Los comandos incluyen la capacidad de pausar y reproducir archivos multimedia desde el servidor remoto.
RTSP es un protocolo de canal de control entre el cliente de medios y el servidor de medios. El canal de datos utiliza un protocolo diferente, por lo general, protocolo de transporte en tiempo real (RTP) o protocolo de control RTP (RTCP).
En el modo estándar RTSP, el cliente configura tres canales de red con el servidor RTSP cuando se entregan datos de medios mediante RTP a través de UDP.
RTSP se ejecuta a través de TCP. EL RTP y EL RTCP se ejecutan sobre UDP. Los puertos para los paquetes RTP y RTCP son negociados dinámicamente por el cliente y el servidor mediante RTSP. Dado que los puertos RTP y RTCP son dinámicos, una política estática no puede permitir estos puertos. El propósito principal de introducir un ALG RTSP en un firewall es crear políticas dinámicas (pinhole) según el resultado de la negociación del cliente/servidor para que el tráfico RTCP y RTP pueda pasar.
Cuando el cliente y el servidor residen en diferentes reinos, es posible que no puedan determinar cómo enrutar a la dirección de la oferta DEPC o RTCP dada por el par. En este caso, ALG debe estar involucrado para hacer la traducción para la dirección de oferta de RTCP o RTCP y modificarla en la carga.
Después de establecer la conexión, el ALG RTSP monitorea los mensajes intercambiados entre el cliente y el servidor, realiza un seguimiento del cambio de estado del diálogo y devuelve todos los recursos que adquirió para admitir un diálogo RTSP al sistema después de que el cuadro de diálogo se haya completado o no.
Modos RTSP
Modo estándar
En el modo estándar RTSP, el cliente configura tres canales de red con el servidor RTSP cuando se entregan datos de medios mediante RTP a través de UDP.
Se utiliza una conexión TCP dúplex completa para el control y la negociación. Un canal UDP dúplex completo se utiliza para la entrega de datos de medios mediante el formato de paquete RTP. En la mayoría de los casos, el RTP se inicia desde el servidor. Un canal UDP dúplex completo llamado RTCP se utiliza para proporcionar información de sincronización al cliente y la información de pérdida de paquetes al servidor.
La Figura 1 muestra el modo estándar ALG RTSP.

Modo de interleave
En el modo de interleave RTSP, los datos de medios se pueden realizar en paquetes mediante RTP o RDT a través de TCP. En este caso, se utiliza una única conexión TCP a dúplex completo para el control y para la entrega de datos de medios desde el servidor RTSP al cliente. La secuencia de datos se intercala con la secuencia de control RTSP.
La Figura 2 muestra el modo de interleave RTSP ALG.

Descripción de mensajes ALG RTSP
Formato de mensaje RTSP
RTSP está basado en texto y utiliza el conjunto de caracteres ISO 10646 en la codificación UTF-8. CRLF termina las líneas y una línea vacía es el separador del mensaje y el cuerpo.
La primera línea se denomina línea de inicio. Para los mensajes de solicitud del cliente al servidor, la línea de inicio representa el método RTSP. Para el mensaje de respuesta del servidor al cliente, la línea de inicio representa el código de estado RTSP como la respuesta del método. El elemento de código de estado es un código de resultado entero de 3 dígitos.
Métodos RTSP
Hay nueve tipos de métodos durante una transacción.
OPTION: representa una solicitud de información sobre las opciones de comunicación disponibles en la cadena de solicitud/respuesta identificada por la url de solicitud. Este método permite al cliente determinar las opciones, los requisitos o ambos asociados con un recurso, o las capacidades de un servidor, sin implicar una acción de recurso ni iniciar una recuperación de recursos.
DESCRIBE: recupera la descripción de una presentación o un objeto multimedia identificado por la URL de solicitud de un servidor. Este método puede usar el encabezado Accept para especificar los formatos de descripción que el cliente interpreta.
ANNOUNCE— Solicitud enviada del cliente al servidor, este método publica la descripción de una presentación o un objeto multimedia identificado por la DIRECCIÓN URL de solicitud en un servidor. Cuando se envía una solicitud del servidor al cliente, este método actualiza la descripción de la sesión en tiempo real.
SETUP: solicita un URI y especifica el mecanismo de transporte que se utilizará para los medios transmitidos.
PLAY: informa al servidor para que comience a enviar datos con el mecanismo especificado en SETUP.
PAUSE: solicita que la entrega de la secuencia se interrumpa temporalmente.
TEARDOWN: detiene la entrega de la secuencia para el URI dado, liberando el recurso asociado con él.
GET_PARAMETER: recupera el valor de un parámetro de una presentación o secuencia especificada en el URI.
SET_PARAMETER: establece el valor de un parámetro para una presentación o secuencia especificada por el URI.
Código de estado RTSP
El primer dígito del código de estado define la clase de respuesta.
1**: Información: solicitud recibida, proceso continuo.
2**: Éxito
3**: Redirección: se deben tomar medidas adicionales para completar la solicitud.
4**: Error del cliente: la solicitud contiene una sintaxis incorrecta o no se puede cumplir.
5**: Error del servidor: el servidor no pudo satisfacer una solicitud aparentemente válida.
Encabezado RTSP
El encabezado RTSP consta de los siguientes campos:
CSeq: especifica el número de secuencia de un par de solicitud-respuesta RTSP. Para cada solicitud RTSP que contenga el número de secuencia dado, habrá una respuesta correspondiente con el mismo número.
Content-Length: contiene la longitud del contenido del método, es decir, después de la CRLF doble que sigue al último encabezado.
TRANSPORT: indica qué protocolo de transporte se va a utilizar y configura sus parámetros.
SESSION: identifica una sesión RTSP iniciada por el servidor de medios en una respuesta SETUP y concluida por TEARDOWN en la URL de la presentación.
Descripción de la conversación ALG y TDR de RTSP
En este tema, se proporcionan detalles sobre la conversación típica de ALG RTSP.
En general, los paquetes RTP y RTCP son bidireccionales, lo que significa que el cliente o el servidor pueden iniciar una sesión RTCP o un RTCP.
En la Figura 3 se describe un ejemplo de una captura de paquetes de ejemplo en una conversación RTSP estándar.

El ALG RTSP realiza las siguientes acciones para una captura de paquetes de ejemplo RTSP en una conversación RTSP estándar:
Monitorea la CONFIGURACIÓN y los mensajes de 200 OK.
Recibe puertos negociados (6543 y 8765 en este ejemplo)
Abre un agujero para los datos de medios UDP del servidor al cliente.
Recibe la dirección IP en la carga y traduce la dirección si se requiere TDR.
La tabla 1 describe el TDR DE IP de carga RTSP.
Tabla 1: TDR de carga de RTSP Adelante(C->S)
Reverso(S->C)
Estenopeica
Traducción de IP de carga
Traducción del puerto de carga
Sin TDR
A/4321->B/554
A/4321<-B/554
B/9876->A/5678
A/5678->B/9876
N/A
N/A
TDR de origen (IPvx)
A/4321->B/554
A'/P'<-B/554
B/9876->A'/P''
A/5678->B/9876
N/A (*)
5678<->P''
TDR de destino (IPvx)
A/4321->B'/554
A/4321<-B/554
B/9876->A/5678
A/5678->B'/9876
B' -> B (**)
N/A
NAT64
A/4321->B''/554
A'/Q'<-B/554
B/9876->A'/Q''
A/5678->B''/9876
B''(IPv6)->B(IPv4)
5678<->Q''
NAT46
A/4321->B''/554
A''/R'<-B/554
B/9876->A''/R''
A/5678->B'''/9876
B'''(IPv4)->B(IPv6)
5678<->R'
En la Tabla 1, se utilizan las siguientes letras y símbolos:
A: dirección IP del cliente RTSP
A': dirección IPv4 o IPv6 traducida del cliente RTSP
A'': dirección IPv4 traducida
A''': dirección IPv6 traducida
B: dirección IP del servidor RTSP
B': dirección IP del servidor RTSP antes del TDR de destino
B'': dirección IP del servidor RTSP en el reino de IPv6
B''': dirección IP del servidor RTSP en el reino de IPv4
P'— Puerto traducido(traduce desde 4321) del cliente RTSP
P''— Puerto traducido (se traduce desde 5678 en carga del mensaje) del cliente RTSP
Q': puerto traducido (IPv6 a IPv4) (se traduce desde 4321) del cliente RTSP
Q''— Puerto traducido (IPv6 a IPv4) (se traduce de 5678 en carga de mensaje) del cliente RTSP
R': puerto traducido (IPv4 a IPv6) (se traduce desde 4321) del cliente RTSP
R'': puerto traducido (IPv4 a IPv6) (se traduce de 5678 en carga de mensaje) del cliente RTSP
(*)— La dirección IP B del servidor RTSP aparece en el mensaje de carga; no es necesario traducir
(**)— La dirección IP B' aparece en el mensaje de carga del cliente al servidor; debe traducirse a B
Ejemplo: Configurar el ALG RTSP
En este ejemplo, se muestra cómo configurar el ALG RTSP para pasar a través del tráfico RTSP con un conjunto TDR de origen en los dispositivos de Juniper Networks.
Requisitos
Configure ARP de proxy para todas las direcciones IP del grupo TDR de origen.
Habilite el ALG RTSP.
Comprenda los conceptos básicos del ALG RTSP. Consulte Descripción del ALG RTSP.
Visión general
En este ejemplo, el ALG RTSP está configurado para supervisar y permitir el tráfico RTSP que transfiere medios entre el cliente y el servidor situados en lados opuestos de un dispositivo juniper Networks.
Configuración
- Habilitación de ALG RTSP
- Configuración de un conjunto de reglas y conjuntos de reglas de TDR y una política
- Configuración de opciones de seguimiento ALG RTSP
Habilitación de ALG RTSP
Configuración rápida de CLI
Para configurar rápidamente esta sección del ejemplo, copie los siguientes comandos, péguelos en un archivo de texto, elimine los saltos de línea, cambie los detalles necesarios para que coincidan con su configuración de red, copie y pegue los comandos en la CLI en el nivel de jerarquía y, luego, ingrese commit
desde el [edit]
modo de configuración.
Para configurar ARP de proxy para todas las direcciones IP del grupo TDR de origen y habilitar RTSP ALG:
set security nat proxy-arp interface <interface-name> address 10.10.10.1/32 to 10.10.10.10/32 set security alg rtsp
Ingrese commit
desde el modo de configuración.
Configuración de un conjunto de reglas y conjuntos de reglas de TDR y una política
Configuración rápida de CLI
Para configurar rápidamente esta sección del ejemplo, copie los siguientes comandos, péguelos en un archivo de texto, elimine los saltos de línea, cambie los detalles necesarios para que coincidan con su configuración de red, copie y pegue los comandos en la CLI en el nivel de jerarquía y, luego, ingrese commit
desde el [edit]
modo de configuración.
set security nat source pool pool1 address 10.10.10.1/32 to 10.10.10.10/32 set security zones security-zone green address-book address sa1 1.1.1.0/24 set security zones security-zone red address-book address da1 2.2.2.0/24 set security nat source rule-set rs1 from zone green set security nat source rule-set rs1 to zone red set security nat source rule-set rs1 rule r1 match source-address 1.1.1.0/24 set security nat source rule-set rs1 rule r1 match destination-address 2.2.2.0/24 set security nat source rule-set rs1 rule r1 then source-nat pool pool1
set security policy from-zone green to-zone red policy pol1 match destination-address da1 set security policy from-zone green to-zone red policy pol1 match source-address sa1 set security policy from-zone green to-zone red policy pol1 match application junos-rtsp set security policy from-zone green to-zone red policy pol1 then permit
Ingrese commit
desde el modo de configuración.
Si no está seguro de la dirección IP del cliente y del servidor RTSP, puede reemplazar "da1" y "sa1" por "cualquiera".
Procedimiento paso a paso
En el ejemplo siguiente, debe navegar por varios niveles en la jerarquía de configuración. Para obtener instrucciones sobre cómo hacerlo, consulte Uso del editor de CLI en el modo de configuración en la Guía del usuario de cli.
Para configurar un grupo TDR de origen:
Cree un grupo de origen TDR.
[edit security] user@host# set nat source pool pool1 address 10.10.10.1/32 to 10.10.10.10/32
Configure las entradas de la libreta de direcciones de la zona de seguridad.
[edit security zones security-zone] user@host# set green address-book address sa1 1.1.1.0/24 user@host# set red address-book address da1 2.2.2.0/24
Cree un conjunto de reglas de origen TDR.
[edit security nat source rule-set rs1] user@host# set from zone green user@host# set to zone red user@host# set rule r1 match source-address 1.1.1.0/24 user@host# set rule r1 match destination-address 2.2.2.0/24 user@host# set rule r1 then source-nat pool pool1
Configure una política.
[edit security policies from-zone green to-zone red policy pol1] user@host# set match source-address sa1 user@host# set match destination-address da1 user@host# set match application junos-rtsp user@host# set then permit
Resultados
Desde el modo de configuración, escriba los comandos y show security policies
para confirmar la show security nat
configuración. Si el resultado no muestra la configuración deseada, repita las instrucciones de configuración en este ejemplo para corregirla.
[edit ] user@host# show security nat source { pool pool1 { address { 10.10.10.1/32 to 10.10.10.10/32; } } rule-set rs1 { from zone green; to zone red; rule r1 { match { source-address 1.1.1.0/24; destination-address 2.2.2.0/24; } then { source-nat { pool { pool1; } } } } }
[edit] user@host# show security policies from-zone green to-zone red {policy pol1 { policy pol1 { match { source-address sa1; destination-address da1; application [junos-rtsp]; } then { permit; } } } default-policy { permit-all; }
Si ha terminado de configurar el dispositivo, ingrese commit
desde el modo de configuración.
Configuración de opciones de seguimiento ALG RTSP
Configuración rápida de CLI
Para configurar rápidamente este ejemplo, copie los siguientes comandos, péguelos en un archivo de texto, elimine los saltos de línea, cambie los detalles necesarios para que coincidan con su configuración de red, copie y pegue los comandos en la CLI en el nivel de jerarquía y, luego, ingrese commit
desde el [edit]
modo de configuración.
set security alg rtsp traceoptions flag all set security alg traceoptions file trace set security alg traceoptions file size 1g set security alg traceoptions level verbose
Procedimiento paso a paso
Para configurar las opciones de seguimiento de ALG RTSP:
Habilite las opciones de rastreo ALG RTSP.
[edit security alg] user@host# set rtsp traceoptions flag all
Configure un nombre de archivo para recibir la salida de la operación de seguimiento.
[edit security alg] user@host# set traceoptions file trace
Especifique el tamaño máximo del archivo de seguimiento.
[edit security alg] user@host# set traceoptions file size 1g
Especifique el nivel de salida de seguimiento.
[edit security alg] user@host# set traceoptions level verbose
Resultados
Desde el modo de configuración, escriba el comando para confirmar la show security alg
configuración. Si el resultado no muestra la configuración deseada, repita las instrucciones de configuración en este ejemplo para corregirla.
[edit] user@host# show security alg traceoptions { file trace size 1g; level verbose; } rtsp traceoptions flag all;
Si ha terminado de configurar el dispositivo, ingrese commit
desde el modo de configuración.
Verificación
Confirme que la configuración funciona correctamente.
- Verificación de ALG RTSP
- Verificar la sesión de control de ALG RTSP
- Verificar la información de la puerta de flujo ALG RTSP
- Verificar el grupo de gestor de recursos RTSP
- Verificar la información del recurso RTSP
Verificación de ALG RTSP
Propósito
Verifique que el ALG RTSP esté habilitado.
Acción
Desde el modo operativo, ingrese el show security alg status
comando.
user@host> show security alg status DNS : Enabled FTP : Enabled H323 : Enabled RTSP : Enabled
Significado
El resultado muestra el estado ALG RTSP del siguiente modo:
Habilitado: muestra que el ALG RTSP está habilitado.
Deshabilitado: muestra que el ALG RTSP está deshabilitado.
Verificar la sesión de control de ALG RTSP
Propósito
Compruebe que se crea la sesión de control y que se crean todas las sesiones de datos y de control RTSP.
Acción
Desde el modo operativo, ingrese el show security flow session
comando.
user@host>show security flow session Flow Sessions on FPC5 PIC0: Session ID: 100004087, Policy name: dns-alg/4, Timeout: 1798, Valid Resource information : RTSP ALG, 1, 0 In: 1.1.0.100/59889 --> 1.1.0.202/554;tcp, If: ge-0/0/1.0, Pkts: 28, Bytes: 7618 Out: 1.1.0.202/554 --> 1.1.0.100/59889;tcp, If: ge-0/0/2.0, Pkts: 27, Bytes: 24304 Session ID: 100004088, Policy name: dns-alg/4, Timeout: 120, Valid Resource information : RTSP ALG, 1, 1 In: 1.1.0.202/5004 --> 1.1.0.100/62092;udp, If: ge-0/0/2.0, Pkts: 19, Bytes: 17013 Out: 1.1.0.100/62092 --> 1.1.0.202/5004;udp, If: ge-0/0/1.0, Pkts: 0, Bytes: 0 Session ID: 100004089, Policy name: dns-alg/4, Timeout: 120, Valid Resource information : RTSP ALG, 1, 4 In: 1.1.0.202/5004 --> 1.1.0.100/62094;udp, If: ge-0/0/2.0, Pkts: 433, Bytes: 346183 Out: 1.1.0.100/62094 --> 1.1.0.202/5004;udp, If: ge-0/0/1.0, Pkts: 0, Bytes: 0 Session ID: 100004090, Policy name: dns-alg/4, Timeout: 120, Valid Resource information : RTSP ALG, 1, 3 In: 1.1.0.100/62093 --> 1.1.0.202/5005;udp, If: ge-0/0/1.0, Pkts: 2, Bytes: 260 Out: 1.1.0.202/5005 --> 1.1.0.100/62093;udp, If: ge-0/0/2.0, Pkts: 0, Bytes: 0 Total sessions: 4
Significado
Session ID: número que identifica la sesión. Utilice este ID para obtener más información sobre la sesión, como el nombre de la política o el número de paquetes dentro y fuera.
Policy name— Nombre de política que permitió el tráfico.
In: el flujo entrante (direcciones IP de origen y destino con sus respectivos números de puerto de origen y destino, la sesión es TCP y la interfaz de origen para esta sesión es ge-0/0/1.0).
Out— Flujo inverso (direcciones IP de origen y destino con sus respectivos números de puerto de origen y destino, la sesión es TCP y la interfaz de destino para esta sesión es fe-0/0/2.0).
Verificar la información de la puerta de flujo ALG RTSP
Propósito
Compruebe que la puerta de flujo está abierta para la conexión del canal de datos TCP.
Acción
Desde el modo operativo, ingrese el show security flow gate
comando.
user@host>show security flow gate Flow Gates on FPC5 PIC0: Hole: 1.1.0.202-1.1.0.202/5005-5005->1.1.0.100-1.1.0.100/62093-62093 Translated: 0.0.0.0/0->0.0.0.0/0 Protocol: udp Application: RTSP ALG/11 Age: 32 seconds Flags: 0x0080 Zone: untrust Reference count: 1 Resource: 4-1-2 Hole: 1.1.0.100-1.1.0.100/62093-62093->1.1.0.202-1.1.0.202/5005-5005 Translated: 0.0.0.0/0->0.0.0.0/0 Protocol: udp Application: RTSP ALG/11 Age: 32 seconds Flags: 0x0080 Zone: trust Reference count: 1 Resource: 4-1-3 Hole: 1.1.0.202-1.1.0.202/5004-5004->1.1.0.100-1.1.0.100/62094-62094 Translated: 0.0.0.0/0->0.0.0.0/0 Protocol: udp Application: RTSP ALG/11 Age: 32 seconds Flags: 0x0080 Zone: untrust Reference count: 1 Resource: 4-1-4 Hole: 1.1.0.100-1.1.0.100/62094-62094->1.1.0.202-1.1.0.202/5004-5004 Translated: 0.0.0.0/0->0.0.0.0/0 Protocol: udp Application: RTSP ALG/11 Age: 32 seconds Flags: 0x0080 Zone: trust Reference count: 1 Resource: 4-1-5 Valid gates: 4 Pending gates: 0 Invalidated gates: 0 Gates in other states: 0 Total gates: 4
Significado
El resultado de ejemplo muestra que la puerta de entrada de flujo se abre para la conexión del canal de datos TCP.
Verificar el grupo de gestor de recursos RTSP
Propósito
Compruebe la cantidad total de grupos de gestores de recursos y grupos activos que utiliza el ALG RTSP.
Acción
Desde el modo operativo, ingrese el show security resource-manager group active
comando.
user@host>show security resource-manager group active Group ID 1: Application - RTSP ALG Total groups 19763, active groups 1
Significado
El resultado de ejemplo muestra la cantidad total de grupos de gestores de recursos y grupos activos que utiliza el ALG RTSP.
Verificar la información del recurso RTSP
Propósito
Verifique la cantidad total de recursos y recursos activos que utiliza el ALG RTSP.
Acción
Desde el modo operativo, ingrese el show security resource-manager resource active
comando.
user@host>show security resource-manager resource active Resource ID 2: Group ID - 1, Application - RTSP ALG Resource ID 1: Group ID - 1, Application - RTSP ALG Total Resources 93286, active resources 2
Significado
El resultado de ejemplo muestra la cantidad total de recursos y recursos activos que utiliza el ALG RTSP.