0% ont trouvé ce document utile (0 vote)
390 vues62 pages

M4205 Cours PDF

Transféré par

Yassine Maleh
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
390 vues62 pages

M4205 Cours PDF

Transféré par

Yassine Maleh
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Module M4205

Téléphonie sur IP
IUT de Villetaneuse
Département Réseaux et Télécommunications
Année 2019–2020

[Link]
Plan 2/62

1. Introduction

2. Architectures et protocoles de ToIP

3. SIP : Établissement et libération de sessions

4. SIP et NAT

5. RTP et RTCP : Transport de la voix

6. Éléments de qualité de services


Contenu du module 3/62

M4205 — Téléphonie sur IP


[Link]

I Objectif : étude des protocoles et mécanismes de qualité de service utilisés


en téléphonie sur IP
I Organisation :
I 2 × 3h de Cours/TDs
I 6 × 3h de TPs
I 1 × 2h de contrôle
I Évaluation : 4 TPs notés (1/3) + le contrôle (2/3)
La ToIP 4/62

I ToIP = Telephony on IP
I Techniques de téléphonie qui utilisent uniquement le réseau IP (plus de
réseau téléphonique).
I Équipements téléphoniques avec une pile TCP/IP.
I Avantages :
I baisse des coûts (abonnements et communication)
I simplification du câblage (un seul réseau avec un seul type de câble)
I mobilité des utilisateurs (grâce aux registres, voir plus loin)
I Inconvénients :
I pas de service pendant une coupure électrique
I réseau IP moins fiable que le réseau téléphonique ⇒ plus faible disponibilité
I Solution courante : presque tous les téléphones sur IP et on garde quelques
téléphones analogiques de secours en cas de problème.
Exemple d’architecture hybride (TPs 1, 2 et 3) 5/62

PABX

Internet

I utilisation de téléphones analogiques ( ) et IP ( )


I Tous les appels (entrants, sortants et en interne) transitent par le PABX.
I Rôles du PABX :
I proxy et registrar SIP (voir plus loin)
I passerelle VoIP (traduction flux analogiques ↔ flux numériques)
Exemple d’architecture 100% IP (TPs 4, 5 et 6) 6/62

serveur asterisk

Internet

I plus de téléphones analogiques


I asterisk = logiciel libre, serveur SIP sous Linux
I Le serveur asterisk remplace le PABX.
Plan 7/62

1. Introduction

2. Architectures et protocoles de ToIP

3. SIP : Établissement et libération de sessions

4. SIP et NAT

5. RTP et RTCP : Transport de la voix

6. Éléments de qualité de services


L’architecture SIP 8/62

Participants :
I UAs (User Agent) : logiciel ou équipement de téléphonie
I Registrars : les serveurs d’enregistrement des UAs
I Proxys SIP : intermédiaires entre les UAs
I Serveurs DNS : renseignent sur les proxys SIP de leur domaine
Les UAs et l’adressage SIP 9/62

I UA = n’importe quel logiciel (linphone, ekiga, . . . ) ou téléphone IP qui


comprend le protocole SIP.
I Pas skype, par exemple, car il utilise un protocole propriétaire.
I Un UA est identifié par son URI (Uniform Ressource Identifier).
I forme générale d’une URI :
sip:identifiant[:motdepasse]@où[:port][?paramètres]
I entre crochets : ce qui est optionnel
I Donc dans la forme la plus simple on a :
sip:identifiant@où
I où peut être :
I l’IP ou le nom de l’UA
I l’IP ou le nom de son proxy SIP
I le nom du domaine de l’UA
Les registrars (serveurs d’enregistrement) 10/62

I Les utilisateurs peuvent se connecter avec leurs UAs sur différentes


machines.
I Problème : comment retrouver son IP pour lui transmettre des appels ?
I La registrar maintient une base de données des localisations dans un
registre sous forme de couples
(identifiant, IP + port)
I registrar = n’importe quel serveur qui traite les requêtes SIP REGISTER
des UAs
I À un identifiant peuvent être associées plusieurs IP.
I Si on appelle cet identifiant toutes les IP seront contactées.
I Le premier UA qui répond prend l’appel.
I Un registrar stocke uniquement les localisations de son domaine.
Les proxys SIP 11/62

I proxy SIP : intermédiaires entre deux UAs qui ne connaissent pas leurs
localisations respectives
I Le proxy SIP consulte le registre de son domaine pour récuperer la
localisation d’un UA appelé.
I Généralement, le proxy et le registrar sont une seule et même entité.
I Par exemple, les PABXs Aastra en R101 sont à la fois proxy et registrar.
Scénario d’appel entre deux UAs 12/62

Domaine [Link] Proxy SIP Proxy SIP Registre


SIP

Domaine [Link]
DNS
DNS
SIP SIP
RTP + RTCP

alice bob

alice@[Link] passe un appel à bob@[Link]


1. Établissement de la session
I utilisation de SIP entre les proxys et les UAs
I Le proxy SIP de [Link] interroge le DNS de [Link] pour avoir l’IP du
proxy SIP de [Link].
I Le proxy SIP de [Link] interroge son registre pour connaı̂tre la(es)
localisation(s) actuelle(s) de bob.
2. Lors de l’appel
I transport du flux audio entre les deux UAs avec RTP+RTCP
3. Libération de la session
I utilisation de SIP entre les proxys et les UAs
Utilisation de DNS pour localiser un proxy SIP 13/62

I Dans le scénario précédent, on a vu qu’un proxy interroge un serveur DNS


quand il doit relayer un message SIP au proxy d’un domaine, disons
[Link].
I Dans ce cas, le DNS du domaine [Link] doit définir (au moins) un
enregistrement SRV ayant la forme suivante :
_sip._prot SRV prio poids port nom-du-proxy-sip
avec :
I prot = protocole de transport utilisé par le proxy
I prio = classe de priorité du serveur
I poids = poids relatif du serveur dans sa classe de priorité
I port = numéro de port sur lequel il faut contacter le proxy sip
I Quand un proxy voudra communiquer en UDP avec un proxy de [Link], il
demandera les enregistrements SRV concernant _sip._udp.[Link].
Utilisation de DNS pour localiser un proxy SIP : exemple 14/62

Fichier de la zone [Link] :


;; priorité poids port nom-du-proxy
_sip._udp SRV 1 2 5060 sip1
_sip._udp SRV 1 1 5060 sip2
_sip._udp SRV 2 1 6589 sip3

;; adresses IP des trois serveurs


sip1 A [Link]
sip2 A [Link]
sip3 A [Link]
I Le domaine [Link] a trois proxys SIP utilisant UDP : sip1, sip2 sur le
port 5060 et sip3 sur le port 6589.
I sip1 et sip2 ont une priorité de 1 : c’est eux qu’il faut tenter de contacter
en premier. Si aucun des deux ne répond, on contacte sip3.
I sip1 et sip2 ont la même priorité mais pas le même poids. Les poids
relatifs indiquent que dans 2 cas sur 3 il faut contacter sip1 et dans 1 cas
sur 3 il faut contacter sip2.
Remarque sur les enregistrements DNS de type SRV 15/62

I Dans l’exemple précédent on a vu qu’un enregistrement SRV permet de


découvrir l’identité d’un serveur SIP.
I Ce type d’enregistrement a été créé pour découvrir n’importe quel type de
service proposé sur un domaine.
I Par exemple, si l’administrateur du domaine veut rendre visibles deux
serveurs HTTP et FTP, il peut rajouter dans le fichier de zone :
;; priorité poids port nom de la machine
_http._tcp SRV 1 1 80 www
_ftp._tcp SRV 1 1 21 ftp
Plan 16/62

1. Introduction

2. Architectures et protocoles de ToIP

3. SIP : Établissement et libération de sessions

4. SIP et NAT

5. RTP et RTCP : Transport de la voix

6. Éléments de qualité de services


Présentation de SIP 17/62

I SIP = Session Initiation Protocol


I première version de SIP dans la RFC 3261 (juin 2002)
I protocole de signalisation pour l’établissement/libération de sessions
interactives entre utilisateurs
I utilisé en téléphonie et plus généralement pour les communications
multimédias
I port par défaut = 5060
(utilisé par tous les équipements SIP : UAs, proxys, registrars)
I pile protocolaire :

SIP

UDP, TCP

IP

Ethernet, Wifi, . . .

I (En général c’est plutôt de l’UDP au niveau transport.)


Structure des messages SIP 18/62

I structure similaire aux messages HTTP


I Requêtes et réponses ont le même format :
I 1 ligne avec
I pour une requête : le type de la requête
I pour une réponse : le code d’état
I N ligne(s) d’en-tête avec différents champs
I 1 ligne vide qui marque la fin de l’en-tête
I un corps
Types de requête 19/62

Les types les plus utilisés :


I INVITE = demande d’initiation d’une session
I ACK = confirmation des paramètres d’une session
I REGISTER = enregistrement de sa localisation auprès d’un registrar
I BYE = fin d’une session (⇔ un des UAs raccroche pendant l’appel)
I CANCEL = annulation d’une session (⇔ l’appelant raccroche avant que
l’appelé ne décroche)
Codes d’état des réponses 20/62

Les codes les plus utilisés :


I 1xx = Messages d’information
I 100 = trying
I 180 = ringing
I 200 = OK
I 3xx = Messages de redirection
I 301 = moved permanently (identifiant demandé n’est plus dispo.)
I 302 = moved temporarily
I 4xx = Erreur client
I 401 = authorisation requise ([Link]., un registrar refuse l’enregistrement)
I 404 = utilisateur inexistant
I 486 = utilisateur occupé
I 5xx = Erreur serveur
I 500 = erreur interne
I 503 = service non disponible ([Link]., serveur surchargé)
Les champs d’en-tête 21/62

I Chaque champ de l’en-tête a la forme Champ: Valeur.


I Champs principaux pour les messages INVITE :
I From — URI de l’appelant
I To — URI de l’appelé
I Call-Id — id. d’un appel
I User-Agent — type de l’UA
I Via — liste des UAs/Proxys par lequel le message est passé (IPs + ports)
⇒ La réponse au message suivra ce même chemin.
I Content-Type — type MIME du contenu
I Max-Forwards — nombre max. de proxys par lesquels un message peut
transiter (⇒ permet d’éviter les boucles)
Le corps du message 22/62

I Le corps du message est optionnel.


I Il contient le descriptif des paramètres de la session :
I IP + port à utiliser pour le flux RTP
I medias souhaités pour la communication
I codecs disponibles
I paramètres des codecs
...
I On le trouve principalement dans
I un message INVITE (param. fournis par l’appelant)
I un message OK envoyé en réponse à un INVITE (param. fournis par l’appelé)
I Il peut être au format HTML ou SDP (Session Description Protocol).
Exemple de message INVITE 23/62

1 INVITE sip :411 @ideasip . com SIP /2.0 En-tête (lignes 1 à 12)
2 CSeq : 1 INVITE
3 Via : SIP /2.0/ UDP 1 9 4 . 2 5 4 . 1 7 3 . 6 : 5 0 6 0 ligne 1 — ligne de requête avec type de
4 Via : SIP /2.0/ UDP 1 5 7 . 1 2 . 5 4 . 8 7 : 5 0 6 0 la requête, URI de l’appelé et num. de
5 Via : SIP /2.0/ UDP 54.21. 4.7:5060 version SIP
6 User - Agent : Ekiga /4.0.1 lignes 3–5 — le INVITE a été émis par
7 From : < sip : sami@194 .254.173.6 > l’UA [Link]:5060. Il est ensuite
8 Call - ID : 54 d5b754 - cdbe - e611 -885 f passé par les proxys [Link]:5060
9 To : < sip :411 @ideasip . com > et [Link]:5060
10 Content - Length : 458
lignes 7–9 — URIs de l’appelant et de
11 Content - Type : application / sdp
l’appelé
12 Max - Forwards : 70
13 ligne 11 — format du contenu du
14 v =0 message = SDP
15 o = - 1481542778 1 IN IP4 [Link]
16 s = Ekiga /4.0.1
17 c = IN IP4 [Link] Corps (lignes 14 et suivantes)
18 t =0 0
ligne 17 — IP à utiliser pour le flux RTP
19 m = audio 54678 RTP / AVP 116 0 8 101
= [Link]
20 a = sendrecv
21 a = rtpmap :116 Speex /16000/1 ligne 19 — port UDP à utiliser pour le
22 a = rtpmap :8 PCMA /8000/1 flux RTP = 54678
23 a = rtpmap :101 telephone - event /8000 ligne 20 et suivantes — autres info. RTP
24 a = fmtp :101 0 -16 ,32 ,36 (media utilisés, codecs, . . . )
25 ...
Scénario SIP 1 — Enregistrement d’un UA 24/62

I alice@[Link] s’enregistre auprès de son registrar


I Quand a lieu l’enregistrement ? À l’ouverture du softphone, au
branchement du téléphone IP, . . .
alice sur [Link] registrar de [Link]

REGISTER (id)
401 Unauthorized (algo=md5)
REGISTER (id + mdp chiffré)
insert (alice, [Link]:5060)
200 OK
registre de [Link]

I Un 1er message REGISTER contient l’identifiant.


I Le serveur refuse et envoie un algo de chiffrement (md5 ici).
I Un 2ème message REGISTER contient identifiant + mot de passe crypté.
Scénario SIP 2 — Appel direct 25/62

I toto@[Link] appelle kim@[Link]


(Pas nécessaire de passer par un proxy si on a l’IP de l’UA destinataire.)
toto@[Link] kim@[Link]

INVITE
180 ringing sonnerie

200 OK
l’appelé
ACK décroche

RTP + RTCP
l’appelant
raccroche BYE

200 OK
Scénario SIP 3 — Appel passant par deux proxys 26/62

I toto@[Link] appelle kim@[Link] en passant par son proxy


toto@[Link] Proxy [Link] Proxy [Link] kim@[Link]
résolution
DNS : IP
du proxy de localisation
INVITE
[Link] ? de kim via
100 trying le registre
INVITE
100 trying
INVITE
180 ringing sonnerie
180 ringing
180 ringing l’appelé
200 OK décroche
200 OK
200 OK
ACK
ACK
ACK
RTP + RTCP
l’appelé
BYE raccroche
BYE
BYE
200 OK
200 OK
200 OK
Scénario SIP 4 — Appel passant par un proxy 27/62

I toto@[Link] appelle kim@[Link] en contactant directement le proxy


de [Link]
toto@[Link] Proxy [Link] kim@[Link]
résolution
DNS : IP
du proxy de
localisation
[Link] ?
de kim via
INVITE le registre
100 trying
INVITE
180 ringing sonnerie
180 ringing
l’appelé
200 OK décroche
200 OK
ACK
ACK
RTP + RTCP
l’appelé
BYE raccroche
BYE
200 OK
200 OK
Plan 28/62

1. Introduction

2. Architectures et protocoles de ToIP

3. SIP : Établissement et libération de sessions

4. SIP et NAT

5. RTP et RTCP : Transport de la voix

6. Éléments de qualité de services


Rappels sur NAT 29/62

I NAT = Network Address Translation


I technique utilisée pour résoudre la pénurie d’adresses IP en séparant des
réseaux privés ([Link]., à l’IUT) et le réseau public
I sur un réseau privé : IP privées inutiles sur le réseau public
I Plages des adresses privées :
I [Link]/8
I [Link]/12
I [Link]/16
I Un réseau privé est derrière une passerelle NAT (généralement la passerelle
par défaut du réseau) qui fait la translation entre les deux types d’adresse.
I L’interface de la passerelle qui la relie à l’extérieur a une IP publique.
Fonctionnement de la passerelle NAT (1/2) 30/62

1 Pour les paquets sortants, la passerelle :


1.1 modifie l’IP et le port source (privés) par son IP publique et par un nouveau
numéro de port qu’elle choisit ([Link]., aléatoirement dans une plage donnée) ;
2.2 et mémorise l’association (IP + port privés, IP + port publics) dans une
table de correspondance.

[Link]
Réseau privé
NAT
[Link] Réseau
[Link]
public

[Link] IP src = [Link] IP src = [Link]


port src = 58784 port src = 12548

Table de correspondance
IP + port privés IP + port publics
[Link]:58784 [Link]:12548
Fonctionnement de la passerelle NAT (2/2) 31/62

2 Pour les paquets entrants, la passerelle cherche dans sa table.


2.1 si association trouvée : IP et port destination modifiés
2.2 sinon : paquet jeté

Table de correspondance
IP + port privés IP + port publics
[Link]:58784 [Link]:12548
[Link]
Réseau privé
NAT
[Link] Réseau
[Link]
public
IP dest = [Link] IP dest = [Link]
[Link] port dest = 58784 port dest = 12548
X
IP dest = [Link]
port dest = 54874
Remarques sur le fonctionnement de la passerelle NAT 32/62

I Certaines passerelles NAT ne font pas de translation de port : elles


changent uniquement l’adresse IP.
I La sortie d’un paquet ouvre le port choisi par la passerelle.
I Les lignes de la table ont une durée de vie limitée (quelques minutes).
I La passerelle joue le rôle de filtre : elle
I laisse entrer les paquets envoyés en réponse à des paquets sortis du réseau ;
I et bloque les autres.
I Si un serveur se trouve sur le réseau privé et doit pouvoir être accessible
depuis l’extérieur il faut rajouter statiquement une ligne dans la table.
I Ex : l’administrateur ajoute (priv. = [Link]:80, pub. = [Link]:80) pour
rendre le serveur web sur [Link] accessible depuis l’extérieur.
opération possible sous Linux avec l’outil iptables (voir TP)
Problème d’utilisation du NAT avec SIP (1/2) 33/62

[Link] appelle [Link].


Proxy de [Link] Proxy de [Link]
2 3
[Link]

1 [Link] 4
max@[Link] mary@[Link]
[Link] Réseau
[Link]
public
NAT
[Link]

I La passerelle ne modifie pas l’en-tête et le contenu SIP !


I Dans le message SIP Invite 3 :
I source IP et UDP = [Link]:48789 (port choisi par la passerelle NAT)
I Dans l’en-tête SIP : Via: [Link]:5060 et Via: [Link]:5060
I Dans le corps SIP : IP + port pour le flux RTP = [Link]:8420
⇒ La réponse au INVITE ne pourra pas parvenir au proxy de [Link].
⇒ Même si la réponse au INVITE arrivait à max, le flux RTP envoyé par mary
serait envoyé sur [Link]:8420
Problème d’utilisation du NAT avec SIP (2/2) 34/62

I L’exemple précédent montre qu’on doit résoudre deux problèmes :


1. La réponse au INVITE doit arriver au proxy de [Link].
2. Le flux RTP doit pouvoir arriver à max.
I Pour le problème 1 : utilisation de l’option received/rport.
I Pour le problème 2 : nombreuses solutions. Nous allons étudier STUN.
L’option received/rport 35/62

I Quand un proxy SIP va recevoir un INVITE, il :


1. compare l’IP+port source à IP+port du dernier champ Via
2. si 6= alors il y a un NAT entre les 2 ⇒ il rajoute à ce dernier champ Via
I l’option received=<ip-source>
I l’option rport=<port-source>
I Ce sont les valeurs des options received et rport qui seront utilisées
pour la réponse au INVITE.
L’option received/rport — Exemple 36/62
Proxy de [Link] Proxy de [Link]
2 3
[Link]

1 [Link] 4
max@[Link] mary@[Link]
[Link] Réseau
[Link]
public
NAT
[Link]

IP + port sources Champs Via (en-tête SIP)


1 [Link]:5060 Via : [Link]:5060
2 [Link]:5060 Via : [Link]:5060
Via : [Link]:5060
3 [Link]:48789 Via : [Link]:5060
Via : [Link]:5060
4 [Link]:5060 Via : [Link]:5060
Via : [Link]:5060 ;received=[Link] ;rport=48789
Via : [Link]:5060

Le proxy de [Link] pourra envoyer sa réponse à [Link]:48789.


STUN 37/62

I STUN = Simple Traversal of UDP through NATs


I Un serveur STUN permet au client de découvrir son IP et son port publics.
I On trouve plein de serveurs STUN libres d’utilisation sur Internet.
I Fonctionnement (simplifié) :
1. Le client envoie un paquet UDP au serveur STUN.
2. Le serveur STUN répond en plaçant dans sa réponse l’IP et le port du client.
I Remarques :
I Le serveur STUN ne doit pas être sur le réseau privé du client.
I L’IP et le port du client sont placés à l’intérieur du message STUN (⇒ non
modifiés par le NAT lors du retour).
I L’envoi du paquet STUN par le client permet d’ouvrir le port public alloué
par le NAT.
I STUN ne marche pas avec certains types de NATs : les NATs symétriques
qui attribuent des ports publics en fonction de l’IP de destination.
Application de STUN à la ToIP 38/62

I STUN va permettre à l’UA d’ouvrir un port UDP public pour le flux RTP.
I Le port et l’IP publics sont ensuite placés dans le corps du INVITE.
Proxy de [Link] Proxy de [Link]
5 6
[Link]
4 7
max@[Link] mary@[Link]
NAT
[Link] Réseau
[Link]
public
[Link] 1
2
3
Serveur STUN

1 req. STUN — IP src = [Link] et port src = 10000 (port RTP privé)
2 req. STUN — IP src = [Link] et port src = 24045 (port RTP public)
3 rép. STUN — contenu : IP = [Link] et port = 24045
4–7 INVITE — contenu SDP :
c = IN IP4 [Link]
m = audio 24045 RTP / AVP 116 0 8 101
Plan 39/62

1. Introduction

2. Architectures et protocoles de ToIP

3. SIP : Établissement et libération de sessions

4. SIP et NAT

5. RTP et RTCP : Transport de la voix

6. Éléments de qualité de services


Utilisation de RTP et RTCP 40/62

I Une fois l’appel initié, SIP n’est plus utilisé durant l’appel.
I C’est RTP qui va permettre de transporter le flux audio entre les deux UAs.
I RTCP est utilisé en complément de RTP pour contrôler la qualité de la
communication.
I RTCP fournit périodiquement un rapport aux UAs.
Présentation de RTP 41/62

I RTP = Real-time Transport Protocol


I version initiale : janvier 1996 (RFC 1889)
I version actuelle : juillet 2003 (RFC 3550)
I utilisé par les applications ayant des contraintes temporelles fortes
(téléphonie, vidéo, jeux vidéo, . . . )
I pile protocolaire :

Données : voix ou vidéo

RTP

UDP

IP

Ethernet, Wifi, . . .
Fonctions principales de RTP 42/62

I Réordonancement des paquets.


I Le réseau IP ne garantit pas que ordre de réception = ordre d’émission.
I déséquencement en ToIP ⇒ mots restitués dans le désordre
I (TCP réordonne les paquets mais RTP utilise UDP.)
I Synchronisation des flux vidéo et audio.
I utilisation d’estampilles temporelles pour indiquer l’instant d’émission du
paquet
L’en-tête RTP (1/2) 43/62

32 bits

V PX CC M PT Num. de séquence

Horodatage (Timestamp)

Source de Synchronisation (SSRC)


CC Sources contributrices (CSRC)

I V (numéro de version) = 2 actuellement


I P (Padding) = 1 si octets de bourrage dans les données
I si P = 1, le dernier octet des données donne le nb. d’octets de bourrage
I X = 1 s’il y a une eXtension d’en-tête (utilisée par certains codecs)
I CC (CSRC Count) = nombre de CSRC dans l’en-tête (0 en pratique)
I M (Marker) = signification dépendante du PT
I PT (Payload Type, 7 bits) = type du codec utilisé (ex : 80 pour le G711)
I Num. de séquence (16 bits) = compteur incréménté de 1 entre chaque
paquet. utilisé :
I par RTP pour réordonner les paquets
I et par RTCP pour compter les pertes
L’en-tête RTP (2/2) 44/62

32 bits

V PX CC M PT Num. de séquence

Horodatage (Timestamp)

Source de Synchronisation (SSRC)


CC Sources contributrices (CSRC)

I Timestamp (32 bits) = estampille temporelle. utilisée :


I par RTP pour la synchronisation voix-image
I et par RTCP pour calculer la gigue.
L’unité pour l’estampille et la période d’échantillonage. Par exemple :
I Avec la plupart des codecs on a une fréquence d’échantillonnage de 8kHz.
7840
I Une estampille de 14 240 correspond à un temps de 8×10 3 = 1.78 s.

L’estampille du 1er paquet RTP est généralement choisie aléatoirement.


I SSRC (Synchronisation SouRCe, 32 bits) = identifie la source de la
synchronisation. Choisi aléatoirement.
I CCSRC (Contributing SouRCe, CC mot(s) de 32 bits) = identifient les
sources contributrices (souvent CC = 0)
RTP en audio+vidéo 45/62

I Dans le cas d’un appel audio+vidéo on a 2 flux RTP sur 2 ports différents
(⇒ chacun ouvert avec STUN ou équivalent si l’on a du NAT).
I C’est dans le corps du message INVITE que l’on précise les deux ports :
m=audio 49170 RTP/AVP ...
m=video 51372 RTP/AVP ...
I On utilise les estampilles temporelles des deux flux pour synchroniser la
voix et l’image.
Le codec G711 46/62

I C’est le codec le plus utilisé.


I choix par défaut sur la plupart des équipements et logiciels de ToIP
I normalisé par l’UIT-T (Union internationale des télécommunications) dans
les années 1970
I période d’échantillonnage de 125 µs
I 256 niveaux d’échantillonnage codés sur 8 bits
8
⇒ débit du codec = 125×10−6
= 64kb/s
Autres codecs 47/62

Quelques codecs de l’UIT-T avec leur MOS (Mean Opinion Score), une note
moyenne entre 0 et 5 attribuée par un panel d’utilisateurs.

Codec Débit (kb/s) MOS


G711 64 4,1
G722 64 4,5
G726 32 3,85
G728 16 3,61
G729 8 3,92
Présentation de RTCP 48/62

I RTCP = Real-time Transport Control Protocol


I défini dans les mêmes RFCs que RTP
I toujours utilisé conjointement avec RTP
I permet aux UAs de contrôler la qualité de la communication
I pile protocolaire :

RTCP

UDP

IP

Ethernet, Wifi, . . .

I RTCP n’encapsule pas de données.


Principe de RTCP 49/62

I Durant l’appel, les UAs s’échangent périodiquement des rapports RTCP.


I Ces rapports fournissent des infos sur la qualité de la communication.
I Informations principales :
I taux de perte (reconstitué à partir des Num. de séquence RTP)
I gigue (voir mode de calcul plus loin)
I Le trafic RTCP ne doit pas occuper plus de 5% de la bande passante de la
session (trafic RTP + RTCP).
Calcul de la gigue par RTCP 50/62

gigue = variation dans le temps d’acheminement des paquets


te (i − 1) te (i)

RTP RTP RTP RTP RTP RTP


Émetteur

Récepteur
RTP RTP RTP RTP RTP RTP

tr (i − 1) tr (i)

Gigue nulle Gigue élevée

I GI (i) = Gigue instantanée en i


GI (i) = |tr (i) − tr (i − 1)| − |te (i) − te (i − 1)|
I G (i) = Gigue en i
1
G (i) = 16 × GI (i) + 1516 × G (i − 1)
(moyenne mobile exponentielle de coefficient 1/16)
Utilisation des rapports RTCP 51/62

I Et les rapports RTCP, qu’en fait-on ?


I Ce sont aux UAs d’interpréter ces rapports et de les traiter de manière
adéquate.
I Par exemple :
1. Durant une session audio+vidéo, les rapports RTCP montrent un taux de
perte élevé.
2. Hypothèse : pertes dûes à une congestion du réseau.
⇒ L’UA renégocie, pendant l’appel, les paramètres de la session en
2.1 désactivant la vidéo
2.2 utilisant un codec audio de moindre qualité
I Les paramètres de session (utilisation de la vidéo ou pas, codec audio à
utiliser, . . . ) peuvent être renégociés lors d’une session par l’envoi d’un
message SIP RE-INVITE.
Plan 52/62

1. Introduction

2. Architectures et protocoles de ToIP

3. SIP : Établissement et libération de sessions

4. SIP et NAT

5. RTP et RTCP : Transport de la voix

6. Éléments de qualité de services


La ToIP, une application temps-réel 53/62

I Critères de qualité de service (QoS) les plus importants en ToIP :


I gigue
I causes : congestion du réseau, paquets suivant des chemins différents, . . .
I conséquences : variations dans le débit de la conversation
I délai d’acheminement de bout en bout (délai entre l’instant de production
d’un octet par l’UA émetteur et celui ou il est restitué par l’UA récepteur)
I délai max. pour une bonne qualité : 100 ms
I délai max. tolérable : 300 − 500 ms
I Au-delà de 500 ms, ce n’est plus du temps réel.
I Critères secondaires :
I bande passante
I faible débit requis pour transporter de la voix
I fiabilité
I faible perte de paquets acceptable (baisse temporaire de la qualité)
I Nous allons voir quelques mécanismes de QoS pour la ToIP :
I aux extrémités (sur les UAs) : choix d’UDP vs TCP pour RTP, utilisation de
mémoires tampon
I dans le réseau : mécanismes de QoS
Choix d’UDP plutôt que TCP pour transporter la voix 54/62

UDP est plus adapté pour les applications temps-réel :


I en-tête de 8 o. pour UDP vs 20 pour TCP
I temps de traversée de la couche TCP > temps de traversée de la couche
UDP ⇒ augmentation du délai d’acheminement de bout en bout avec TCP
I L’algorithme de contrôle de la congestion de TCP diminue radicalement le
débit d’envoi en cas d’erreur ⇒ le récepteur est alors en situation de
“famine”, en attente de données RTP.
I L’avantage de TCP est la correction des erreurs mais dans le cas de la voix
nous avons vu que celles-ci ne sont pas si graves.
Principe du contrôle de la congestion de TCP 55/62

I en situation de congestion :
I Les mémoires des routeurs sont saturées (modèle du seau percé).
I Les routeurs détruisent les paquets qu’ils ne peuvent plus mémoriser.
⇒ Lorsque la couche TCP envoie un paquet, aucun acquittement n’est reçu.
I Mais la congestion n’est pas la seule cause possible à la non réception d’un
acquittement. Autre cause possible : erreur de transmission (même si la
probabilité est faible).
I Principe du contrôle de la congestion de TCP :
I Si un paquet n’est pas acquitté (dans les temps), c’est parce qu’il y a de la
congestion.
I Pour réduire la congestion, TCP va réduire radicalement le débit avant de le
réaugmenter progressivement.
Algorithme de contrôle de la congestion de TCP 56/62

I TCP utilise deux variables pour contrôler la congestion :


I W : fenêtre de congestion = nb. max de segments que l’on peut envoyer en
rafale (sans acquittement).
I S : seuil d’évitement de la congestion
I au début de la connexion, W = 1 et S = paramètre de l’OS (généralement
32 ou 64)
I quand tous les segments de la fenêtre sont acquittés :
I si W < S ⇒ W = min(S, 2 × W )
I si W ≥ S ⇒ W = W + 1
I quand un segment n’est pas acquitté à temps :
I S = W /2
I W =1
Scénario d’échange TCP 57/62

données
W=1, S=32 ack

W=2, S=32

W=4, S=32

W=8, S=32 X

attente de l’acquittement

W=1, S=4
Évolution de la fenêtre de congestion 58/62

40
36 1 temporisation expirée
Seuil d’évitement
32
W = Fenêtre de congestion

28

24

20 Seuil d’évitement
18
16
12 8 segments acquittés
8

4 4 segments acquittés
0
Les tampons en émission et en réception 59/62

2 tampons (zones mémoire) sont utilisés par les UAs :


I en émission
I en réception

codage décodage
réseau
tampon tampon
UA émetteur d’émission de réception UA récepteur
Le tampon en émission 60/62

I Son utilité : grouper les octets produits par le codec pour les envoyer en
blocs.
I Quelle doit être sa taille (= taille des données RTP émises) ?
I trop petit ⇒ mauvaise utilisation de la bande passante
I Ex : tampon de 1 o. ⇒ les en-têtes (Ethernet, IP, UDP et RTP) représentent
Ethernet+IP+UDP+RTP
Ethernet+IP+UDP+RTP+1
≈ 98% du trafic.
I trop grand ⇒ augmente le délai d’acheminement de bout en bout
I Ex : le tampon fait 1 460 o. (1 500 - IP - UDP - RTP).
I Avec le codec G711 (débit = 64 kbit/s), il faut ≈ 180 ms. pour remplir le
tampon.
⇒ Temps d’acheminement du 1er octet placé dans le tampon > 180 ms. (il faut
aussi ajouter le temps de traversée du réseau)
I Cette taille est donc un compromis entre le taux d’utilisation de la bande
passante et l’augmentation du délai d’acheminement.
I En pratique, on utilise des tampons de 100–500 o., ce qui correspond à
environ 10–60 ms. de voix avec le G711.
Le tampon en réception 61/62

I Son utilité :
I compenser la gigue
I corriger les déséquencements

1 2 3 4 2 4 1 3
réseau 1 2 3 4
départ des paquets tampon
UA émetteur de réception UA récepteur

I À l’arrivée du 1er paquet dans le tampon (2 dans notre exemple), le


récepteur déclenche une temporisation.
I Les paquets sont placés dans le tampon selon leurs num. de séquence RTP.
I Le contenu du tampon est ensuite restitué à l’UA récepteur
I dès qu’il est plein
I ou dès que la temporisation arrive à expiration (les paquets arrivant trop tard
sont considérés comme perdus).
I Sa taille est aussi un compromis :
I trop petit ⇒ pas de correction des pbs de réseau
I trop grand ⇒ augmentation du délai d’acheminement
I En pratique sa taille est un (petit) multiple de celle du tampon d’émission.
QoS de niveau 2 : séparation des flux grâce aux VLANs 62/62

I VLANs = réseaux locaux virtuels


I Permet de segmenter un réseau physique en plusieurs réseaux logiques.
I Exemple : un réseau avec 2 VLANs (10 = données et 20 = téléphonie).

trunk
VLAN10

VLAN20

I Quel intérêt pour la ToIP ? Donner une priorité aux flux


I priorité = 3 bits de l’étiquette de VLANs visible sur les liaisons trunk :
DA SA Id de prot. Pri. DEI VLAN-id DL/EType Données + Bourrage FCS
6 o. 6 o. 2 o. 3 bits 1 bit 12 bits 2 o. 46–1 500 o. 4 o.
← étiquette de 4 octets →
I Les switchs retransmettent les trames par priorité décroissante.
I On peut attribuer une priorité de 7 pour le VLAN 20 et 1 pour le VLAN 10.
⇒ Si la liaison entre les deux switchs est engorgée par un transfert de
données, les paquets RTP seront tout de même retransmis.
I Voir le TP 3.

Vous aimerez peut-être aussi