RTSP ALG
Le protocole RTSP (Real-Time Streaming Protocol) contrôle la diffusion des données à l’aide de propriétés en temps réel, telles que l’audio et la vidéo. Les contenus multimédias peuvent être transmis sur le même flux de contrôle RTSP. Il s’agit d’un protocole texte de type HTTP, mais le client et le serveur conservent les informations de session. Une session est établie à l’aide du message SETUP et clôturée à l’aide du message TEARDOWN. Le transport (protocole multimédia, adresse et numéros de port) est négocié dans la configuration et la réponse à la configuration.
La prise en charge des services NAT et de pare-feu dynamique nécessite de configurer l’ALG RTSP pour le port TCP 554. L’ALG surveille la connexion de contrôle, ouvre les flux de manière dynamique pour les flux multimédias (RTP/RTSP) et effectue la réécriture d’adresse NAT et de port.
Comprendre l’ALG RTSP
Aperçu
Le protocole RTSP (Real-Time Streaming Protocol) est un protocole de couche applicative permettant de contrôler la diffusion des données avec des propriétés en temps réel. Il est similaire en termes de syntaxe et de fonctionnement à HTTP/1.1. Contrairement aux protocoles SIP et H.323, l’objectif du RTSP est d’accéder aux fichiers multimédias existants sur le réseau et de contrôler la rediffusion des contenus multimédias. La communication typique se situe entre un client (exécutant RealPlayer par exemple) et un serveur multimédia en streaming. Les commandes incluent la possibilité de mettre en pause et de lire les fichiers multimédias à partir du serveur distant.
RTSP est un protocole de canal de contrôle entre le client multimédia et le serveur multimédia. Le canal de données utilise un autre protocole, généralement RTP (Real-Time Transport Protocol) ou RTP Control Protocol (RTCP).
En mode standard RTSP, le client configure trois canaux réseau avec le serveur RTSP lorsque les données multimédias sont transmises via RTP sur UDP.
Le protocole RTSP s’exécute sur TCP. RTP et RTCP s’exécutent sur UDP. Les ports des paquets RTP et RTCP sont négociés dynamiquement par le client et le serveur à l’aide du RTSP. Étant donné que les ports RTP et RTCP sont dynamiques, ces ports ne peuvent pas être autorisés par une stratégie statique. L’introduction d’un ALG RTSP dans un pare-feu a pour but principal de créer une stratégie dynamique (trou d’épingle) en fonction du résultat de la négociation client/serveur afin que le trafic RTP et RTCP puisse transiter.
Lorsque le client et le serveur résident dans différents domaines, ils ne sont peut-être pas en mesure de déterminer comment se rendre à l’adresse de l’offre RTP ou RTCP donnée par l’pair. Dans ce cas, ALG doit être impliqué pour effectuer la traduction pour l’adresse de l’offre RTP ou RTCP et la modifier dans la charge utile.
Une fois la connexion établie, l’ALG RTSP surveille les messages échangés entre le client et le serveur, suit le changement d’état de la boîte de dialogue et renvoie toutes les ressources acquises pour prendre en charge une boîte de dialogue RTSP vers le système une fois la boîte de dialogue terminée ou échouée.
RTSP Modes
Standard Mode
En mode standard RTSP, le client configure trois canaux réseau avec le serveur RTSP lorsque les données multimédias sont transmises via RTP sur UDP.
Une connexion TCP duplex intégral est utilisée pour le contrôle et la négociation. Un canal UDP duplex intégral est utilisé pour la diffusion de données multimédias au format de paquets RTP. Dans la plupart des cas, la RTP est lancée à partir du serveur. Un canal UDP duplex intégral appelé RTCP est utilisé pour fournir des informations de synchronisation au client et sur les pertes de paquets au serveur.
La figure 1 illustre le mode standard ALG RTSP.

Mode inter-léave
En mode interléveille RTSP, les données multimédias peuvent être transformées en paquets à l’aide de RTP ou RDT sur TCP. Dans ce scénario , une seule connexion TCP full-duplex est utilisée à la fois pour le contrôle et pour la diffusion des données multimédias depuis le serveur RTSP vers le client. Le flux de données est entrelacé avec le flux de contrôle RTSP.
La figure 2 illustre le mode d’interleaveur ALG RTSP.

Comprendre les messages ALG RTSP
RTSP Message Format
RtSP est basé sur des textes et utilise le jeu de caractères ISO 10646 dans l’encodage UTF-8. Les lignes sont clôturées par CRLF, et une ligne vide est le séparateur du message et du corps.
La première ligne s’appelle la ligne de départ. Pour demander des messages du client au serveur, la ligne de départ représente la méthode RTSP. Pour le message de réponse du serveur au client, la ligne de départ représente le code d’état RTSP comme réponse de la méthode. L’élément de code d’état est un code de résultat entier à 3 chiffres.
Méthodes RTSP
Neuf types de méthodes sont disponibles lors d’une transaction.
OPTION: représente une demande d’informations sur les options de communication disponibles sur la chaîne de requête/réponse identifiée par l’URL de la requête. Cette méthode permet au client de déterminer les options, les exigences ou les deux associées à une ressource ou aux capacités d’un serveur, sans impliquer une action de ressource ou lancer une extraction des ressources.
DESCRIBE: récupère la description d’un objet multimédia ou de présentation identifié par l’URL de la requête à partir d’un serveur. Cette méthode peut utiliser l’en-tête Accepter pour spécifier les formats de description que le client interprète.
ANNOUNCE— Requête envoyée du client au serveur, cette méthode publie la description d’un objet multimédia ou de présentation identifié par l’URL de la requête à un serveur. Lorsque la requête est envoyée du serveur au client, cette méthode met à jour la description de la session en temps réel.
SETUP: demande un URI et spécifie le mécanisme de transport à utiliser pour le support en streaming.
PLAY: indique au serveur de commencer à envoyer des données à l’aide du mécanisme spécifié dans la configuration.
PAUSE: demande l’interruption temporaire de la diffusion du flux.
TEARDOWN— Arrête la diffusion du flux pour l’URI donnée, libérant ainsi la ressource associée.
GET_PARAMETER: récupère la valeur d’un paramètre d’une présentation ou d’un flux spécifié dans l’URI.
SET_PARAMETER: définit la valeur d’un paramètre pour une présentation ou un flux spécifié par l’URI.
Code d’état RTSP
Le premier chiffre du code de statut définit la classe de réponse.
1**: Information — Demande reçue, processus continu.
2**: Réussite
3**: Redirection : des mesures supplémentaires doivent être prises pour terminer la demande.
4**: Erreur client : la requête contient une syntaxe incorrecte ou ne peut pas être satisfaite.
5**: Erreur de serveur : le serveur n’a pas répondu à une demande apparemment valide.
En-tête RTSP
L’en-tête RTSP se compose des champs suivants :
CSeq— Spécifie le numéro de séquence d’une paire de réponses de requêtes RTSP. Pour chaque requête RTSP contenant le numéro de séquence donné, une réponse correspondante aura le même numéro.
Content-Length: contient la longueur du contenu de la méthode, c’est-à-dire après le double CRLF suivant le dernier en-tête.
TRANSPORT— Indique le protocole de transport à utiliser et configure ses paramètres.
SESSION: identifie une session RTSP lancée par le serveur multimédia dans une réponse SETUP et terminée par TEARDOWN sur l’URL de la présentation.
Comprendre la conversation ALG RTSP et la traduction d’adresses réseau (NAT)
Cette rubrique fournit des détails sur les conversations ALG RTSP typiques.
En général, les paquets RTP et RTCP sont bidirectionnels, ce qui signifie que le client ou le serveur peut initier une session RTP ou RTCP.
La figure 3 décrit un exemple de capture de paquets dans une conversation RTSP standard.

L’ALG RTSP effectue les actions suivantes pour une capture d’exemple de paquets RTSP dans une conversation RTSP standard :
Surveille la CONFIGURATION et 200 messages OK.
Reçoit les ports négociés (6543 et 8765 dans cet exemple)
Ouvre un trou d’épingle pour les données multimédia UDP du serveur au client.
Reçoit l’adresse IP dans la charge utile et traduit l’adresse si le NAT est requis.
Le tableau 1 décrit la charge utile RTSP NAT IP.
Tableau 1 : NAT IP de charge utile RTSP Forward(C->S)
Inverse (S->C)
Sténopé
Payload IP Translate
Port de charge utile traduit
Pas de NAT
A/4321->B/554
A/4321<-B/554
B/9876->A/5678
A/5678->B/9876
S/O
S/O
NAT source (IPvx)
A/4321->B/554
A'/P'<-B/554
B/9876->A'/P''
A/5678->B/9876
S/O (*)
5 678 <->P'
NAT de destination (IPvx)
A/4321->B'/554
A/4321<-B/554
B/9876->A/5678
A/5678->B'/9876
B' -> B (**)
S/O
NAT64
A/4321->B'/554
A''/Q'<-B/554
B/9876->A''/Q''
A/5678->B'/9876
B''(IPv6)->B(IPv4)
5 678<->Q'
NAT46
A/4321->B'''/554
A'''/R'<-B/554
B/9876->A'''/R'
A/5678->B''/9876
B'''(IPv4)->B(IPv6)
5 678 <->R »
Dans le tableau 1, les lettres et symboles suivants sont utilisés :
A — Adresse IP client RTSP
A'— Adresse IPv4 traduite ou IPv6 du client RTSP
A'''— Adresse IPv4 traduite
A''''— Adresse IPv6 traduite
B — Adresse IP du serveur RTSP
B'— Adresse IP du serveur RTSP avant nat de destination
B'''— Adresse IP du serveur RTSP dans le domaine IPv6
B''''— Adresse IP du serveur RTSP dans le domaine IPv4
P'— Port traduit à partir de 4321 du client RTSP
P''— Port traduit à partir de 5678 dans la charge utile du message) du client RTSP
Q'— Traduit (IPv6 vers IPv4) port (traduit à partir de 4 321) du client RTSP
Q''— Port traduit (IPv6 vers IPv4) (traduit à partir de 5678 dans la charge utile du message) du client RTSP
R'— Port traduit (IPv4 vers IPv6) du client RTSP (traduit à partir de 4321)
R''— Port traduit (IPv4 vers IPv6) (traduit à partir de 5678 dans la charge utile du message) du client RTSP
(*)— L’adresse IP du serveur RTSP B apparaît dans le message de la charge utile ; il n’a pas besoin de traduire
(**)— L’adresse IP B' apparaît dans le message de la charge utile du client au serveur ; il doit se traduire en B
Exemple : Configuration de l’ALG RTSP
Cet exemple montre comment configurer l’ALG RTSP pour qu’il transmette le trafic RTSP avec un pool NAT source sur les équipements Juniper Networks.
Exigences
Configurez le protocole ARP proxy pour toutes les adresses IP du pool NAT source.
Activez l’ALG RTSP.
Comprendre les concepts de base de l’ALG RTSP. Voir Understanding the RTSP ALG.
Aperçu
Dans cet exemple, l’ALG RTSP est configuré pour surveiller et autoriser le trafic RTSP transférant des contenus multimédias entre le client et le serveur situés sur les côtés opposés d’un équipement Juniper Networks.
Configuration
- Activation des ALG RTSP
- Configuration d’un pool de sources NAT, d’un ensemble de règles et d’une stratégie
- Configuration des options de traçage ALG RTSP
Activation des ALG RTSP
Configuration rapide CLI
Pour configurer rapidement cette section de l’exemple, copiez les commandes suivantes, collez-les dans un fichier texte, supprimez les sauts de ligne, modifiez tous les détails nécessaires pour correspondre à votre configuration réseau, copiez et collez les commandes dans l’interface de ligne de commande au [edit]
niveau hiérarchique, puis entrez commit
à partir du mode de configuration.
Pour configurer le proxy ARP pour toutes les adresses IP du pool NAT source et pour activer le protocole ALG RTSP :
set security nat proxy-arp interface <interface-name> address 10.10.10.1/32 to 10.10.10.10/32 set security alg rtsp
Entrer depuis commit
le mode de configuration.
Configuration d’un pool de sources NAT, d’un ensemble de règles et d’une stratégie
Configuration rapide CLI
Pour configurer rapidement cette section de l’exemple, copiez les commandes suivantes, collez-les dans un fichier texte, supprimez les sauts de ligne, modifiez tous les détails nécessaires pour correspondre à votre configuration réseau, copiez et collez les commandes dans l’interface de ligne de commande au [edit]
niveau hiérarchique, puis entrez commit
à partir du mode de configuration.
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
Entrer depuis commit
le mode de configuration.
Si vous n’êtes pas sûr de l’adresse IP du client et du serveur RTSP, vous pouvez remplacer « da1 » et « sa1 » par « n’importe quel ».
Procédure étape par étape
L’exemple suivant vous oblige à naviguer à différents niveaux dans la hiérarchie de configuration. Pour obtenir des instructions sur cette méthode, reportez-vous à Using the CLI Editor in Configuration Mode dans le GUIDE DE L’UTILISATEUR CLI.
Pour configurer un pool NAT source :
Créez un pool de sources NAT.
[edit security] user@host# set nat source pool pool1 address 10.10.10.1/32 to 10.10.10.10/32
Configurez les entrées du carnet d’adresses de zone de sécurité.
[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
Créez un ensemble de règles source NAT.
[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
Configurez une stratégie.
[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
Résultats
Depuis le mode configuration, confirmez votre configuration en entrant les show security nat
show security policies
commandes. Si la sortie n’affiche pas la configuration prévue, répétez les instructions de configuration fournies dans cet exemple pour la corriger.
[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 vous avez terminé la configuration de l’unité, entrez commit
dans le mode de configuration.
Configuration des options de traçage ALG RTSP
Configuration rapide CLI
Pour configurer rapidement cet exemple, copiez les commandes suivantes, collez-les dans un fichier texte, supprimez tous les sauts de ligne, modifiez tous les détails nécessaires pour correspondre à la configuration de votre réseau, copiez et collez les commandes dans l’interface de ligne de commande au niveau de la [edit]
hiérarchie, puis entrez commit
du mode de configuration.
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
Procédure étape par étape
Pour configurer les options de trace ALG RTSP :
Activez les options de traçage ALG RTSP.
[edit security alg] user@host# set rtsp traceoptions flag all
Configurez un nom de fichier pour recevoir la sortie de l’opération de traçage.
[edit security alg] user@host# set traceoptions file trace
Indiquez la taille maximale du fichier de traçage.
[edit security alg] user@host# set traceoptions file size 1g
Indiquez le niveau de suivi en sortie.
[edit security alg] user@host# set traceoptions level verbose
Résultats
Depuis le mode configuration, confirmez votre configuration en entrant la show security alg
commande. Si la sortie n’affiche pas la configuration prévue, répétez les instructions de configuration fournies dans cet exemple pour la corriger.
[edit] user@host# show security alg traceoptions { file trace size 1g; level verbose; } rtsp traceoptions flag all;
Si vous avez terminé la configuration de l’unité, entrez commit
dans le mode de configuration.
Vérification
Vérifiez que la configuration fonctionne correctement.
- Vérification des ALG RTSP
- Vérification de la session de contrôle ALG RTSP
- Vérification des informations de flux ALG RTSP
- Vérification du groupe RTSP Resource Manager
- Vérification des informations de ressources RTSP
Vérification des ALG RTSP
But
Vérifiez que l’ALG RTSP est activé.
Action
Dans le mode opérationnel, saisissez la show security alg status
commande.
user@host> show security alg status DNS : Enabled FTP : Enabled H323 : Enabled RTSP : Enabled
Sens
La sortie affiche l’état ALG RTSP comme suit :
Activé : affiche l’activation de l’ALG RTSP.
Désactivé : indique que le protocole ALG RTSP est désactivé.
Vérification de la session de contrôle ALG RTSP
But
Vérifiez que la session de contrôle est créée et que toutes les sessions de contrôle et de données RTSP sont créées.
Action
Dans le mode opérationnel, saisissez la show security flow session
commande.
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
Sens
Session ID— Numéro permettant d’identifier la session. Utilisez cet ID pour obtenir plus d’informations sur la session, telles que le nom de la stratégie ou le nombre de paquets entrants et sortants.
Policy name— Nom de stratégie permettant le trafic.
In— Flux entrant (adresses IP source et de destination avec leurs numéros de ports source et de destination respectifs, session TCP et interface source pour cette session ge-0/0/1.0).
Out— Reverse flow (adresses IP source et de destination avec leurs numéros de ports source et de destination respectifs, la session est TCP et l’interface de destination pour cette session est fe-0/0/2.0).
Vérification des informations de flux ALG RTSP
But
Vérifiez que le portail de flux est ouvert pour la connexion au canal de données TCP.
Action
Dans le mode opérationnel, saisissez la show security flow gate
commande.
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
Sens
Le résultat de l’exemple montre que le portail de flux est ouvert pour une connexion de canal de données TCP.
Vérification du groupe RTSP Resource Manager
But
Vérifiez le nombre total de groupes de gestionnaires de ressources et de groupes actifs utilisés par l’ALG RTSP.
Action
Dans le mode opérationnel, saisissez la show security resource-manager group active
commande.
user@host>show security resource-manager group active Group ID 1: Application - RTSP ALG Total groups 19763, active groups 1
Sens
L’exemple de sortie affiche le nombre total de groupes de gestionnaires de ressources et de groupes actifs utilisés par le ALG RTSP.
Vérification des informations de ressources RTSP
But
Vérifiez le nombre total de ressources et de ressources actives utilisées par l’ALG RTSP.
Action
Dans le mode opérationnel, saisissez la show security resource-manager resource active
commande.
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
Sens
La sortie de l’échantillon montre le nombre total de ressources et de ressources actives utilisées par le ALG RTSP.