Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

RTSP ALG

O protocolo de streaming em tempo real (RTSP) controla a entrega de dados com propriedades em tempo real, como áudio e vídeo. A mídia pode ser transmitida no mesmo fluxo de controle RTSP. Este é um protocolo baseado em texto semelhante a HTTP, mas cliente e servidor mantêm informações de sessão. Uma sessão é estabelecida usando a mensagem SETUP e encerrada usando a mensagem TEARDOWN. O transporte (o protocolo de mídia, endereço e números de porta) é negociado na configuração e na resposta à configuração.

O suporte para serviços de firewall e NAT stateful exige que você configure o RTSP ALG para a porta TCP 554. O ALG monitora a conexão de controle, abre fluxos dinamicamente para fluxos de mídia (RTP/RTSP) e executa reescritas de endereço e porta NAT.

Entender o RTSP ALG

Visão geral

RTSP (Protocolo de streaming em tempo real) é um protocolo de Camada de Aplicativo para controlar a entrega de dados com propriedades em tempo real. É semelhante em sintaxe e operação ao HTTP/1.1. Ao contrário do SIP e do H.323, o objetivo do RTSP é acessar arquivos de mídia existentes na rede e controlar a repetição da mídia. A comunicação típica é entre um cliente (executando o RealPlayer, por exemplo) e um servidor de mídia de streaming. Os comandos incluem a capacidade de pausar e reproduzir arquivos de mídia a partir do servidor remoto.

RTSP é um protocolo de canal de controle entre o cliente de mídia e o servidor de mídia. O canal de dados usa um protocolo diferente, geralmente protocolo de transporte em tempo real (RTP) ou protocolo de controle rtp (RTCP).

No modo padrão RTSP, o cliente configura três canais de rede com o servidor RTSP quando os dados de mídia são entregues usando RTP sobre UDP.

O RTSP passa por cima do TCP. RTP e RTCP atropelam UDP. As portas para pacotes RTP e RTCP são negociadas dinamicamente pelo cliente e servidor usando RTSP. Como as portas RTP e RTCP são dinâmicas, essas portas não podem ser permitidas por uma política estática. O principal objetivo de introduzir um ALG RTSP em um firewall é criar política dinâmica (pinhole) de acordo com o resultado da negociação cliente/servidor para que o tráfego RTP e RTCP possa passar.

Quando o cliente e o servidor residem em diferentes reinos, eles podem não ser capazes de determinar como rotear para o endereço da oferta RTP ou RTCP dada pelo peer. Nesse caso, a ALG precisa estar envolvida para fazer a tradução para o endereço de oferta RTP ou RTCP e modificá-lo no payload.

Depois que a conexão é estabelecida, o RTSP ALG monitora as mensagens trocadas entre o cliente e o servidor, monitora a mudança de status do diálogo e devolve todos os recursos que adquiriu para dar suporte a um diálogo RTSP de volta ao sistema após a conclusão ou falha do diálogo.

Modos RTSP

Modo padrão

No modo padrão RTSP, o cliente configura três canais de rede com o servidor RTSP quando os dados de mídia são entregues usando RTP sobre UDP.

Uma conexão TCP totalmente duplex é usada para controle e negociação. Um canal UDP completo é usado para a entrega de dados de mídia usando o formato de pacotes RTP. Na maioria dos casos, o RTP é iniciado a partir do servidor. Um canal UDP completo chamado RTCP é usado para fornecer informações de sincronização ao cliente e informações de perda de pacotes ao servidor.

A Figura 1 mostra o modo padrão RTSP ALG.

Figura 1: Modo padrão RTSP ALG Standard Mode RTSP ALG

Modo interleave

No modo de interleave RTSP, os dados de mídia podem ser transformados em pacotes usando RTP ou RDT sobre TCP. Nesse cenário, uma única conexão TCP totalmente duplex é usada tanto para o controle quanto para a entrega de dados de mídia do servidor RTSP para o cliente. O fluxo de dados é intercalado com o fluxo de controle RTSP.

A Figura 2 mostra o modo de interleave RTSP ALG.

Figura 2: Modo de interleave RTSP ALG Interleave Mode RTSP ALG

Entender as mensagens DE ALG RTSP

Formato de mensagem RTSP

O RTSP é baseado em texto e usa o conjunto de caracteres ISO 10646 na codificação UTF-8. As linhas são terminadas pelo CRLF, e uma linha vazia é o separador da mensagem e do corpo.

A primeira linha é chamada de linha de partida. Para solicitar mensagens do cliente ao servidor, a linha de partida representa o método RTSP. Para a mensagem de resposta do servidor ao cliente, a linha de partida representa o código de status RTSP como a resposta do método. O elemento de código de status é um código de resultado de inteiro de 3 dígitos.

Métodos RTSP

Existem nove tipos de métodos durante uma transação.

  • OPTION— Representa uma solicitação de informações sobre as opções de comunicação disponíveis na cadeia de solicitação/resposta identificada pelo Request-URL. Esse método permite que o cliente determine as opções, requisitos ou ambos associados a um recurso ou aos recursos de um servidor, sem implicar uma ação de recursos ou iniciar uma recuperação de recursos.

  • DESCRIBE— Recupera a descrição de uma apresentação ou objeto de mídia identificado pela URL de solicitação de um servidor. Esse método pode usar o cabeçalho Aceitar para especificar os formatos de descrição que o cliente interpreta.

  • ANNOUNCE— Solicitação enviada do cliente ao servidor, esse método posta a descrição de uma apresentação ou objeto de mídia identificado pela URL de solicitação a um servidor. Quando solicitação enviada do servidor ao cliente, este método atualiza a descrição da sessão em tempo real.

  • SETUP— Solicita uma URI e especifica o mecanismo de transporte a ser usado para a mídia transmitida.

  • PLAY— Informa o servidor para começar a enviar dados usando o mecanismo especificado na CONFIGURAÇÃO.

  • PAUSE— Solicita que a entrega do fluxo seja interrompida temporariamente.

  • TEARDOWN— Interrompe a entrega de fluxo para o determinado URI, liberando o recurso associado a ele.

  • GET_PARAMETER— Recupera o valor de um parâmetro de uma apresentação ou fluxo especificado no URI.

  • SET_PARAMETER— Define o valor de um parâmetro para uma apresentação ou fluxo especificado pelo URI.

Código de status RTSP

O primeiro dígito do código de status define a classe de resposta.

  • 1**: Informações — Solicitação recebida, processo contínuo.

  • 2**: Sucesso

  • 3**: Redirecionamento — outras medidas devem ser tomadas para concluir a solicitação.

  • 4**: Erro do cliente — A solicitação contém sintaxe ruim ou não pode ser atendida.

  • 5**: Erro do servidor — o servidor não conseguiu atender a uma solicitação aparentemente válida.

Cabeçalho RTSP

O cabeçalho RTSP consiste nos seguintes campos:

  • CSeq— especifica o número da sequência para um par de resposta à solicitação RTSP. Para cada solicitação RTSP contendo o número de sequência, haverá uma resposta correspondente com o mesmo número.

  • Content-Length— Contém o comprimento do conteúdo do método, ou seja, após o CRLF duplo após o último cabeçalho.

  • TRANSPORT— Indica qual protocolo de transporte deve ser usado e configura seus parâmetros.

  • SESSION— Identifica uma sessão RTSP iniciada pelo servidor de mídia em uma resposta setup e concluída pelo TEARDOWN na URL de apresentação.

Entender a conversa com o RTSP ALG e o NAT

Este tópico fornece detalhes sobre a conversa típica do RTSP ALG.

Em geral, os pacotes RTP e RTCP são bidirecionais, o que significa que o cliente ou o servidor podem iniciar uma sessão RTP ou RTCP.

A Figura 3 descreve um exemplo de captura de pacotes de amostra em uma conversa RTSP padrão.

Figura 3: Conversa RTSP ALG Conversation com o RTSP ALG

O RTSP ALG executa as seguintes ações para uma captura de pacotes de amostra RTSP em uma conversa rtsp padrão:

  1. Monitora a CONFIGURAÇÃO e 200 mensagens OK.

  2. Recebe portas negociadas (6543 e 8765 neste exemplo)

  3. Abre um pinhole para dados de mídia UDP do servidor ao cliente.

  4. Recebe o endereço IP no payload e traduz o endereço se o NAT for necessário.

    A Tabela 1 descreve o IP NAT de carga RTSP.

    Tabela 1: RTSP Payload IP NAT
     

    Encaminhamento (C->S)

    Reverso (S->C)

    Pinhole

    Payload IP Translate

    Tradução da porta de carga

    Sem NAT

    A/4321->B/554

    A/4321<-B/554

    B/9876->A/5678

    A/5678->B/9876

    N/A

    N/A

    NAT de origem (IPvx)

    A/4321->B/554

    A'/P'<-B/554

    B/9876->A'/P''

    A/5678->B/9876

    N/A (*)

    5678<->P''

    NAT 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''

    Na Tabela 1, as seguintes letras e símbolos são usados:

    • A — endereço IP do cliente RTSP

    • A'— Endereço IPv4 ou IPv6 traduzido do cliente RTSP

    • A''— Endereço IPv4 traduzido

    • A''' — Endereço IPv6 traduzido

    • B — endereço IP do servidor RTSP

    • B'— endereço IP do servidor RTSP antes do NAT de destino

    • B''— Endereço IP do servidor RTSP no reino IPv6

    • B'''— Endereço IP do servidor RTSP no reino IPv4

    • P'— Porta traduzida(traduzida por 4321) do cliente RTSP

    • P''— Porta traduzida (traduzida de 5678 em carga de mensagem) do cliente RTSP

    • Q'— Porta traduzida (IPv6 para IPv4) (traduzida a partir de 4321) do cliente RTSP

    • Q''— Porta traduzida (IPv6 para IPv4) (traduzida de 5678 em carga de mensagem) do cliente RTSP

    • R'— Porta traduzida (IPv4 para IPv6) (traduzida a partir de 4321) do cliente RTSP

    • R''— Porta traduzida (IPv4 para IPv6) (traduzida de 5678 em carga de mensagem) do cliente RTSP

    • (*)— O endereço IP do servidor RTSP B aparece em mensagem de payload; não precisa traduzir

    • (**)— endereço IP B' aparece em mensagem de payload do cliente ao servidor; ela precisa se traduzir para B

Exemplo: configurar o RTSP ALG

Este exemplo mostra como configurar o RTSP ALG para passar pelo tráfego RTSP com um pool NAT de origem em dispositivos Juniper Networks.

Requisitos

  • Configure o ARP proxy para todos os endereços IP no pool NAT de origem.

  • Habilite o RTSP ALG.

  • Entenda os conceitos básicos do RTSP ALG. Veja como entender o RTSP ALG.

Visão geral

Neste exemplo, o RTSP ALG está configurado para monitorar e permitir a transferência de mídia de tráfego RTSP entre cliente e servidor localizado em lados opostos de um dispositivo Juniper Networks.

Configuração

Habilitação do RTSP ALG

Configuração rápida da CLI

Para configurar rapidamente esta seção do exemplo, copie os seguintes comandos, cole-os em um arquivo de texto, remova quaisquer quebras de linha, altere todos os detalhes necessários para combinar com sua configuração de rede, copiar e colar os comandos na CLI no nível de [edit] hierarquia e, em seguida, entrar no commit modo de configuração.

Configurar o ARP proxy para todos os endereços IP no pool NAT de origem e habilitar o RTSP ALG:

Entre no commit modo de configuração.

Configuração de um pool de origem do NAT e conjunto de regras e uma política

Configuração rápida da CLI

Para configurar rapidamente esta seção do exemplo, copie os seguintes comandos, cole-os em um arquivo de texto, remova quaisquer quebras de linha, altere todos os detalhes necessários para combinar com sua configuração de rede, copiar e colar os comandos na CLI no nível de [edit] hierarquia e, em seguida, entrar no commit modo de configuração.

Entre no commit modo de configuração.

Nota:

Se você não tiver certeza do endereço IP do cliente e servidor RTSP, você pode substituir "da1" e "sa1" por "qualquer".

Procedimento passo a passo

O exemplo a seguir exige que você navegue por vários níveis na hierarquia de configuração. Para obter instruções sobre como fazer isso, consulte o uso do editor de CLI no modo de configuração no guia de usuário da CLI.

Para configurar um pool NAT de origem:

  1. Crie um pool de origem NAT.

  2. Configure as entradas do livro de endereços da zona de segurança.

  3. Crie um conjunto de regras de origem NAT.

  4. Configure uma política.

Resultados

A partir do modo de configuração, confirme sua configuração inserindo os show security nat comandos e show security policies os comandos. Se a saída não exibir a configuração pretendida, repita as instruções de configuração neste exemplo para corrigi-la.

Se você terminar de configurar o dispositivo, entre no commit modo de configuração.

Configuração de opções de rastreamento RTSP ALG

Configuração rápida da CLI

Para configurar rapidamente este exemplo, copie os seguintes comandos, cole-os em um arquivo de texto, remova quaisquer quebras de linha, altere todos os detalhes necessários para combinar com sua configuração de rede, copiar e colar os comandos na CLI no nível de [edit] hierarquia e, em seguida, entrar no commit modo de configuração.

Procedimento passo a passo

Para configurar opções de rastreamento RTSP ALG:

  1. Habilite opções de rastreamento RTSP ALG.

  2. Configure um nome de arquivo para receber saída da operação de rastreamento.

  3. Especifique o tamanho máximo do arquivo de rastreamento.

  4. Especifique o nível de saída de rastreamento.

Resultados

A partir do modo de configuração, confirme sua configuração entrando no show security alg comando. Se a saída não exibir a configuração pretendida, repita as instruções de configuração neste exemplo para corrigi-la.

Se você terminar de configurar o dispositivo, entre no commit modo de configuração.

Verificação

Confirme que a configuração está funcionando corretamente.

Verificando o RTSP ALG

Propósito

Verifique se o RTSP ALG está habilitado.

Ação

Do modo operacional, entre no show security alg status comando.

Significado

A saída mostra o status de ALG RTSP da seguinte forma:

  • Habilitado — mostra que o RTSP ALG está habilitado.

  • Desabilitado — mostra que o RTSP ALG está desativado.

Verificando a sessão de controle de ALG RTSP

Propósito

Verifique se a sessão de controle é criada e todas as sessões de controle e dados do RTSP são criadas.

Ação

Do modo operacional, entre no show security flow session comando.

Significado
  • Session ID— Número que identifica a sessão. Use este ID para obter mais informações sobre a sessão, como nome da política ou número de pacotes dentro e fora.

  • Policy name— Nome da política que permitiu o tráfego.

  • In— Fluxo de entrada (endereços IP de origem e destino com seus respectivos números de porta de origem e destino, a sessão é TCP, e a interface de origem para esta sessão é ge-0/0/1.0).

  • Out— Fluxo reverso (endereços IP de origem e destino com seus respectivos números de porta de origem e destino, a sessão é TCP, e a interface de destino para esta sessão é fe-0/0/2.0).

Verificando as informações do RTSP ALG Flow Gate

Propósito

Verifique se a porta de fluxo está aberta para conexão de canal de dados TCP.

Ação

Do modo operacional, entre no show security flow gate comando.

Significado

A saída da amostra mostra que a porta de fluxo está aberta para conexão de canal de dados TCP.

Verificando o grupo de gerente de recursos RTSP

Propósito

Verifique o número total de grupos de gerentes de recursos e grupos ativos usados pelo RTSP ALG.

Ação

Do modo operacional, entre no show security resource-manager group active comando.

Significado

A saída amostral mostra o número total de grupos de gerentes de recursos e grupos ativos que são usados pelo RTSP ALG.

Verificando as informações de recursos do RTSP

Propósito

Verifique o número total de recursos e recursos ativos usados pelo RTSP ALG.

Ação

Do modo operacional, entre no show security resource-manager resource active comando.

Significado

A saída amostral mostra o número total de recursos e recursos ativos usados pelo RTSP ALG.