Ngoné DIOP Abderrahim ESSAIDI Professeur : Mr Boutoille Université de Marne la vallée - UFR Ingénieurs 2000 Informatique et Réseaux 3 ème année Année Universitaire 2007-2008
Table des matières Introduction... 3 1 Installation... 4 1.1 Le client :... 4 1.2 Le serveur :... 4 2 Appels simples... 5 2.1 Quel est le port utilisé pour SIP?... 5 2.2 SIP utilise-t-il TCP ou UDP?... 5 2.3 Dans quelle condition SIP utilise-t-il l autre protocole?... 5 2.4 Mettez-le en évidence, et prenez une trace Ethereal... 5 2.5 KPhone est-il conforme à la norme?... 6 2.6 Expliquer ce qu est un proxy stateless.... 6 2.7 Quelle est la ligne de la configuration qui fait qu il s agit d un proxy statefull?... 6 2.8 Quel est l intérêt d avoir un proxy statefull pour la réalisation des services?... 6 2.9 Faire un appel vers le domaine yahoo.com, notez les requêtes DNS qu utilise le proxy local pour trouver le proxy SIP du destinataire... 7 2.10 Vérifiez que l on puisse faire des communications interdomaines.... 7 3 Choix des codecs... 8 3.1 Notez la valeur du champ DSCP des trames RTP par rapport aux autres trames.... 8 3.2 Utilisez ce discriminant pour orienter le trafic RTP vers un filtre TBF grâce aux commandes tc.... 8 3.3 Calculez pour G.711 loi A, GSM 06.10, G.726 et G.721 le débit IP si on met un paquet encodé dans la trame RTP.... 9 3.4 Même question avec 4 paquets.... 9 3.5 Allouez une bande passante largement supérieure à la bande passante nécessaire.... 10 3.6 Etablissez un tableau récapitulatif qui permette de comparer les codecs utilisés... 11 4 Implémentation d un service... 12 4.1 Renvoyer une réponse 302 avec la nouvelle uri à l appelant... 12 4.2 Créer une branche vers le nouveau destinataire... 13 Conclusion...14 Université de Marne-la-vallée UFR Ingénieurs 2000 IR3 2
Introduction Le but de ce TP est de monter une configuration SIP comprenant un serveur (proxy) et un client SIP. Plusieurs tests seront réalisés pour observer le comportement du client et du serveur dans différentes configurations. Université de Marne-la-vallée UFR Ingénieurs 2000 IR3 3
1 Installation Nous avons utilisé trois ordinateurs différents : un serveur (proxy SIP) et deux clients : 1.1 Le client : Nous avons installé le logiciel Ekiga sur les deux clients. 1.2 Le serveur : Openser a été installé sur le serveur. Sa configuration sera détaillée dans la suite du rapport. Pour capturer et analyser des les trames, Wireshark a été utilisé sur les clients et le serveur. La configuration pourrait également être faite dans un contexte où les différents composants se trouveraient dans des réseaux différents. Université de Marne-la-vallée UFR Ingénieurs 2000 IR3 4
2 Appels simples 2.1 Quel est le port utilisé pour SIP? Le port utilisé Le port utilisé par le protocole SIP est le 5060. 2.2 SIP utilise-t-il TCP ou UDP? En règle générale, SIP utilise le protocole UDP pour échanger l information. Ce protocole n effectue pas de contrôle concernant la perte des paquets. Les paquets égarés sont donc définitivement perdus. Mais cela n est pas gênant pour la conversation. Il peut aussi utiliser TCP à la demande. Figure 1: Capture de trame d'une communication VoIp 2.3 Dans quelle condition SIP utilise-t-il l autre protocole? D après la rfc3261 (http://www.ietf.org/rfc/rfc3261.txt) : SIP peut aussi utiliser un protocole faisant du contrôle de congestion comme TCP. Cependant il n utilise ce type de protocole uniquement dans le cas où le MTU est inconnu ou supérieur à 1300 octets et dans le cas où les paquets sont de taille inférieur à 200 octets et que le MTU est trop faible 2.4 Mettez-le en évidence, et prenez une trace Ethereal Université de Marne-la-vallée UFR Ingénieurs 2000 IR3 5
Figure 2: capture de trame TCP Cette capture de trame nous montre que TCP Transmission Control Protocol est bien utilisé. 2.5 KPhone est-il conforme à la norme? KPhone n est pas conforme à la norme car il ne supporte pas l IPv6. 2.6 Expliquer ce qu est un proxy stateless. Le proxy sip est chargé de transmettre les informations entre les destinateurs et destinataire pour qu ils puissent établir une connexion. C est le proxy qui va récupérer l adresse ip de l appelé et ainsi transmettre l invitation de l appelant. Il se comporte à la fois comme un serveur et un client. Le proxy stateless n a pas de contexte. Il reçoit un paquet et le renvoie vers le destinataire sans vérifier que celui-ci l a bien reçu. 2.7 Quelle est la ligne de la configuration qui fait qu il s agit d un proxy statefull? C est la fonction : t_relay() qui oblige le serveur SIP à utiliser l état statefull. 2.8 Quel est l intérêt d avoir un proxy statefull pour la réalisation des services? Mettre en place une configuration permettant de faire des appels vers des clients attachés à un autre proxy SIP. En plus des fonctions d aiguillage, le proxy sip statefull peut également être utilisé pour du contrôle d appels/abonnés et la facturation. Ces services sont rendus possibles grâce à l utilisation de TCP. Ainsi le serveur pourra renvoyer les paquets en cas d erreurs. Université de Marne-la-vallée UFR Ingénieurs 2000 IR3 6
2.9 Faire un appel vers le domaine yahoo.com, notez les requêtes DNS qu utilise le proxy local pour trouver le proxy SIP du destinataire N ayant pas de capture à présenter pour cette question, nous avons relevé que le proxy local utilise les requêtes DNS suivantes : Standard query SRV _sip._udp.yahoo.com (depuis dns) Standard query response (vers dns) Standart query A yahoo.com (depuis dns) Standart query response @IPyahoo.com (vers dns) 2.10 Vérifiez que l on puisse faire des communications interdomaines. En effet, on peut effectuer des appels interdomaines en mettant dans le champ correspondant : sip :nom@domain.com Université de Marne-la-vallée UFR Ingénieurs 2000 IR3 7
3 Choix des codecs 3.1 Notez la valeur du champ DSCP des trames RTP par rapport aux autres trames. La valeur du champ DSCP des trames RTP est «class selector5» (0x28) comme l indique la figure ci-dessous : Figure 3: valeur du champ DSCP Pour les autres trames, le champ DSCP vaut «unkown» (0x00). 3.2 Utilisez ce discriminant pour orienter le trafic RTP vers un filtre TBF grâce aux commandes tc. Dans le cas où l on souhaite utiliser un filtre TBF avec une moyenne de débit de 0,5Mo, une possibilité de pic à 1Mo, un buffer de 5ko une queue de taille limitée à cause d une latence fixée à 70ms, la commande correspondante est: Université de Marne-la-vallée UFR Ingénieurs 2000 IR3 8
# tc qdisc add dev eth0 root tbf rate 0.5mbit burst 5kb latency 70ms minburst 1540 3.3 Calculez pour G.711 loi A, GSM 06.10, G.726 et G.721 le débit IP si on met un paquet encodé dans la trame RTP. Pour l ensemble des calculs, la taille des entêtes est de 40 octets (20 IP+8 UDP+12 RTP) et le délai d émission est de 10ms. Loi G711 Taille du paquet : 80 octets Taille totale du paque : 80 + 40 octets = 120 octets = 960 bits Débit : 960 bits / 0.01s = 96 Kbits/s Loi GSM 06.10 Taille du paquet : 33 octets Taille totale du paquet : 33 + 40 octets = 73 octets = 584 bits Débit : 960 bits / 0.01s = 58.4 Kbits/s Loi G 721 Taille du paquet : 50 octets Taille totale du paquet : 50 + 40 octets = 90 octets = 720bits Débit : 700 bits / 0.01s = 72 Kbits/s 3.4 Même question avec 4 paquets. Pour 4 paquets envoyés par trames, la taille de la trame se compose de la taille des 4 paquets + de la taille de l entête de la trame comme précédemment, le délai d émission quant à lui est multiplié par 4 soit 40ms. Loi G711 Taille des paquets : 4*80 octets = 320 octets Taille totale de la tramet : 320 + 40 octets = 360 octets = 2880 bits Débit : 2880 bits / 0.01s = 288 Kbits/s Loi GSM 06.10 Taille du paquet : 4*33 octets = 132 octets Taille totale du paquet : 132 + 40 octets = 172 octets = 1376 bits Débit : 1376 bits / 0.01s = 137.6 Kbits/s Université de Marne-la-vallée UFR Ingénieurs 2000 IR3 9
Loi G 721 Taille du paquet : 4*50 octets = 200 octets Taille totale du paquet : 200 + 40 octets = 240 octets = 1920 bits Débit : 1920 bits / 0.01s = 192 Kbits/s 3.5 Allouez une bande passante largement supérieure à la bande passante nécessaire. La commande à taper est : qdisc replace dev eth0 root tbf rate 1024kbyte burst 1540 latency 50ms Vérifiez la gigue au niveau du SIP proxy avec Ethereal. La gigue est la variance statistique du délai de transmission. En d'autres termes, elle mesure la variation temporelle entre le moment où deux paquets auraient dû arriver et le moment de leur arrivée effective. Cette irrégularité d'arrivée des paquets est due à de multiples raisons dont : l'encapsulation des paquets IP dans les protocoles supportés, la charge du réseau à un instant donné, la variation des chemins empruntés dans le réseau, etc... Ce qui entraîne des retards et même des pertes de paquets. Pour compenser la gigue, on utilise généralement des mémoires tampon (buffer de gigue) qui permettent de lisser l'irrégularité des paquets. Malheureusement ces paquets présentent l'inconvénient de rallonger d'autant le temps de traversée global du système. Leur taille doit donc être soigneusement définie (à l aide du MTU par exemple), et si possible adaptée de manière dynamique aux conditions du réseau. Dans noter cas, la gigue. Calculez les paramètres du token bucket qui permettent de faire passer une communication sans perte. Le service garanti fournit un délai maximum d attente en queue. Il garantit donc une perte nulle (la perte étant un délai infini d attente). On montre que le temps de transit de bout en bout en file d attente maximum est donné par l équation : (b-m)*(p-r)/(p-r)+(m+ctot)/r+dtot pour r<=r<p et (M+Ctot)/R + Dtot pour R>=p Avec b, la taille de la fille d attente M, la taille maximum d un pâquet R, la bande passante de sortie réservée p, le débit crête, r, le débit moyens en entrée Ctot, le cumul de la partie dépendante du débit du délai passé en file d attente tout au long du chemin Dtot, le cumul de la partie non dépendante du débit du délai passé en file d attente tout au long du chemin Université de Marne-la-vallée UFR Ingénieurs 2000 IR3 10
3.6 Etablissez un tableau récapitulatif qui permette de comparer les codecs utilisés. Figure 4: Tableaux comparatifs des codes utilisés Université de Marne-la-vallée UFR Ingénieurs 2000 IR3 11
4 Implémentation d un service Cette partie consiste à implanter de la logique dans notre proxy SIP. Nous allons définir un comportement lorsque le client ne répond pas. Ce comportement correspond à accueillir le client en lui transférant un message. 4.1 Renvoyer une réponse 302 avec la nouvelle uri à l appelant Comme dit dans l énoncé du TP, nous devons détecter lorsque le message 408 est renvoyé au client, nous interceptons ce message et renvoyons un message 302 contenant le nouveau numéro de l appelant. Ces spécifications correspondent à ajouter le code suivant dans le fichier de configuration «ser.cfg» : route[1] { t_on_failure("1"); # send it out now; use stateful forwarding as it works reliably # even for UDP2TCP if (!t_relay()) { sl_reply_error(); }; } failure_route[1] { log("failure"); if (t_check_status("408")) { log("moved 408"); replace("contact.*","contact:sip:abder@172.17.69.5"); Université de Marne-la-vallée UFR Ingénieurs 2000 IR3 12
t_reply("302", "Moved Temporary"); }; } Le script précédent permet de rediriger les clients qui tentent d atteindre un numéro qui ne répond pas vers le contact «abder@172.17.69.5» 4.2 Créer une branche vers le nouveau destinataire Le script suivant effectue la même redirection, mais vers le contact «client1@172.17.69.3» et à l aide d une branche vers un autres proxy et non d un message de qui indique que le contact à changer d adresse et demande à l utilisateur si il veut être redirigé. route[1] { t_on_failure("1"); # send it out now; use stateful forwarding as it works reliably # even for UDP2TCP if (!t_relay()) { sl_reply_error(); }; } failure_route[1] { log("failure"); if (t_check_status("408")) { log("moved 408"); subst_uri('/.*/sip:client1@172.17.69.3/'); append_branch(); t_relay(); #t_reply("302", "Moved Temporary") }; } Université de Marne-la-vallée UFR Ingénieurs 2000 IR3 13
Conclusion Ce TP nous a permis de prendre en main des communications VoIP et de mieux comprendre les enjeux de cette technologie. Nous avons pu utiliser plusieurs protocoles de communication, les comparer et gérer un proxy SIP. Nous espérons pouvoir bientôt mettre en place les acquis de ce TP au profit de nos entreprises lors de la séquence professionnelle. Université de Marne-la-vallée UFR Ingénieurs 2000 IR3 14