Le concept :
De plus en plus de FAI mettent un couche supplémentaire pour les flux multicast (ceux qui transporte la TV) : RTP (Real-time Transport Protocol)
RTP rajoute 12 octets par paquet IP avec des informations d'horodatage et un n° de séquence. C'est ce dernier qui nous intéresse : il est incrémenté de un a chaque paquet : Cela nous permet de savoir si nous avons perdu des paquets.
Ce tuto a été testé avec les 3 FAI suivants :
- NeufBox de SFR
- Bbox de Bouygues Telecom
- ClubBox de Club-Internet
Il faut être abonné a l'offre TV pour que cela puisse fonctionner.
Nous allons utiliser VLC pour nous abonner aux flux multicast et Wireshark / Tshark pour analyser ces pertes de paquet.
Voici une liste de quelques IP multicast pour faire les tests :
Le plan de service complet de la NeufBox de SFR est consultable ici : http://lafibre.info/index.php/topic,3701.0.html
De plus en plus de FAI mettent un couche supplémentaire pour les flux multicast (ceux qui transporte la TV) : RTP (Real-time Transport Protocol)
RTP rajoute 12 octets par paquet IP avec des informations d'horodatage et un n° de séquence. C'est ce dernier qui nous intéresse : il est incrémenté de un a chaque paquet : Cela nous permet de savoir si nous avons perdu des paquets.
Ce tuto a été testé avec les 3 FAI suivants :
- NeufBox de SFR
- Bbox de Bouygues Telecom
- ClubBox de Club-Internet
Il faut être abonné a l'offre TV pour que cela puisse fonctionner.
Nous allons utiliser VLC pour nous abonner aux flux multicast et Wireshark / Tshark pour analyser ces pertes de paquet.
Voici une liste de quelques IP multicast pour faire les tests :
IP multicast | port | Nom de la chaine TV | Débit IP | diffusion | Flux RTP disponible avec les Box |
233.136.0.116 | 65000 | ARTE SD MPEG4 | 2,47 Mb/s | flux en clair | NeufBox, Bbox de Bouygues Telecom |
233.136.0.127 | 65000 | I>Tele SD MPEG4 | 2,47 Mb/s | flux en clair | NeufBox, Bbox de Bouygues Telecom |
233.60.197.8 | 64000 | I>Tele SD MPEG2 | 3,5 Mb/s | flux en clair | NeufBox, Bbox de Bouygues Telecom |
233.49.82.73 | 7500 | TF1 HD MPEG4 adsl | 6,05 Mb/s | flux crypté | NeufBox, Bbox de Bouygues Telecom |
233.136.0.201 | 7500 | France2 HD MPEG4 fibre optique | 12,28 Mb/s | flux crypté | NeufBox fibre optique uniquement |
Le plan de service complet de la NeufBox de SFR est consultable ici : http://lafibre.info/index.php/topic,3701.0.html
1ére étape : Installer VLC, Wireshark et Tshark.
2éme étape : Configurer Wireshark pour le RTP (Real-time Transport Protocol)
Pour Wireshark 1.0.7 (Ubuntu 9.04) :
1/ mkdir ~/.wireshark
2/ wget http://iperf.fr/download/wireshark/preferences.wireshark1.0.7-ubuntu9.04
3/ mv preferences.wireshark1.0.7-ubuntu9.04 ~/.wireshark/preferences
4/ wget http://iperf.fr/download/wireshark/disabled_protos.wireshark1.0.7-ubuntu9.04
5/ mv disabled_protos.wireshark1.0.7-ubuntu9.04 ~/.wireshark/disabled_protos
Pour Wireshark 1.0.3 (Ubuntu 8.10) :
1/ mkdir ~/.wireshark
2/ wget http://iperf.fr/download/wireshark/preferences.wireshark1.0.3-ubuntu8.10
3/ mv preferences.wireshark1.0.3-ubuntu8.10 ~/.wireshark/preferences
4/ wget http://iperf.fr/download/wireshark/disabled_protos.wireshark1.0.3-ubuntu8.10
5/ mv disabled_protos.wireshark1.0.3-ubuntu8.10 ~/.wireshark/disabled_protos
3éme étape : S'abonner au flux multicast avec VLC
cvlc rtp://@233.136.0.116
4éme étape : Lancer la capture + analyse temps réel avec Tshark
Lancer dans un autre terminal sans fermer la commande VLC :
sudo tshark -i eth0 -n -s 68 -w /tmp/capture_temporaire.cap -a duration:600 -z rtp,streams
A la fin de la capture il suffit de quitter VLC "CTRL" + "C" pour se dé-abonner du flux multicast
Voici un script pour lancer la capture depuis la Crontab en permanence :
#!/bin/bash
####################################################################################
# SYNOPSIS : est appelé depuis la crontab - pas d'options #
# #
# DESCRIPTION : #
# Fait une capture pendant 59minutes et 50 secondes #
# #
# DEPENDANCES : #
# /bin/bash #
# /bin/date #
# /bin/sync #
# /bin/rm #
# /usr/sbin/ntpdate #
# /usr/bin/tshark #
# /usr/bin/cvlc #
# /usr/bin/killall #
# /usr/bin/sudo #
# #
####################################################################################
# abonnement au flux
/usr/bin/sudo -u vgu /usr/bin/cvlc rtp://@233.49.82.73 &
# date de début de capture
/bin/date >> /root/capture.txt
# Capture avec Tshark
/usr/bin/tshark -i eth0 -n -s 68 -w /tmp/ramdisk0/capture_temporaire.cap -a duration:175 -z rtp,streams >> /root/capture.txt
# désabonnement du flux
/usr/bin/killall vlc
# Supressions des fichiers et sync pour ne pas avoir une grosse écriture qui fait perdre des paquets au début du tcpdump
/bin/rm /tmp/ramdisk0/capture_temporaire.cap
# MISE A L'HEURE (la mise à l'heure ne soit pas se faire pendant la capture)
/usr/sbin/ntpdate 194.158.119.97 >> /root/ntpdate.vg.log
# Ecriture du cache sur le disque pour que dump ne se produise pas pendant l'écriture
/bin/sync
# date de fin de capture
/bin/date >> /root/capture.txt
# Ecriture du cache sur le disque pour que dump ne se produise pas pendant l'écriture
/bin/sync
Le rendre exécutable : sudo chmod +x capture.sh
Pour mettre les préférence wireshark (2éme étape), il faut se connecter en root avec sudo -i pour avoir les variables environnement du root
La ligne a mettre dans la crontab :
lancement toutes les 3min : 0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57 * * * * /root/capture.sh
lancement toutes les 4min : 0,4,8,12,16,20,24,28,32,36,40,44,48,52,56 * * * * /root/capture.sh
#!/bin/bash
####################################################################################
# SYNOPSIS : est appelé depuis la crontab - pas d'options #
# #
# DESCRIPTION : #
# Fait une capture pendant 59minutes et 50 secondes #
# #
# DEPENDANCES : #
# /bin/bash #
# /bin/date #
# /bin/sync #
# /bin/rm #
# /usr/sbin/ntpdate #
# /usr/sbin/tcpdump #
# /usr/bin/tshark #
# /usr/bin/cvlc #
# /usr/bin/killall #
# /usr/bin/sudo #
# /usr/bin/sleep #
# #
####################################################################################
# abonnement au flux
/usr/bin/sudo -u vgu /usr/bin/cvlc rtp://@233.49.82.73 &
# date de début de capture
/bin/date >> /root/capture.txt
# Capture avec TCPdump
/usr/sbin/tcpdump -i eth0 -n -s 68 -w /tmp/ramdisk0/capture_temporaire.cap host 233.49.82.73 &
/bin/sleep 3550
/usr/bin/killall -s INT tcpdump
# désabonnement du flux
/usr/bin/killall -s INT vlc
# Post-traitement avec Tshark
/usr/bin/tshark -n -r /tmp/ramdisk0/capture_temporaire.cap -q -z rtp,streams >> /root/capture.txt
# Supressions des fichiers et sync pour ne pas avoir une grosse écriture qui fait perdre des paquets au début du tcpdump
/bin/rm /tmp/ramdisk0/capture_temporaire.cap
# MISE A L'HEURE (la mise à l'heure ne soit pas se faire pendant la capture)
/usr/sbin/ntpdate 194.158.119.97 >> /root/ntpdate.vg.log
# Ecriture du cache sur le disque pour que dump ne se produise pas pendant l'écriture
/bin/sync
# date de fin de capture
/bin/date >> /root/capture.txt
# Ecriture du cache sur le disque pour que dump ne se produise pas pendant l'écriture
/bin/sync
1ére étape : Installer VLC et Wireshark qui sont 2 logiciels libres.
En graphique sous Ubuntu, allez dans me menu Applications => Ajouter / supprimer... sélectionner "Afficher toutes les applications disponibles" et recherchez VLC et Wireshark.
Pour faire l'installation en ligne de commande :
sudo aptitude install vlc wireshark
Démarrez Wireshark.
Allez dans le menu Edit => Preferences...
Cliquez sur la petite flèche à gauche de Protocols
Cherchez RTP dans le bas de la liste (c'est par ordre alphabétique)
Cochez la 2éme case comme montré ci-dessous :
Cliquez sur Valider.
A partir de maintenant Wireshark et Tshark sont capable de décoder le protocole RTP
Allez dans le menu Edit => Preferences...
Cliquez sur la petite flèche à gauche de Protocols
Cherchez RTP dans le bas de la liste (c'est par ordre alphabétique)
Cochez la 2éme case comme montré ci-dessous :
Cliquez sur Valider.
A partir de maintenant Wireshark et Tshark sont capable de décoder le protocole RTP
3éme étape : S'abonner au flux multicast avec VLC
Via une ligne de commande il suffit d'entrer la ligne suivante dans un terminal :
cvlc rtp://@233.136.0.116
Via l'interface graphique de VLC cela se fait en 3 étapes :
Via une ligne de commande il suffit d'entrer la ligne suivante dans un terminal :
cvlc rtp://@233.136.0.116
Via l'interface graphique de VLC cela se fait en 3 étapes :
L'interface a utiliser est la première dans la liste qui a des paquets qui s'incrémente régulièrement. En Ethernet généralement c'est eth0
La capture temporaire (avant enregistrement) est réalisée dans /tmp
4éme étape : Lancer la capture avec Wireshark
5éme étape : Analyser la capture avec Wireshark
Aller dans le menu Telephony puis RTP et enfin Show All Streams
Aller dans le menu Telephony puis RTP et enfin Show All Streams
Exemples de résultats :
Pas bon :
Parfait :
Modem Dlink :
Modem TG787 20min :
Modem TG787 20min :
Modem TG787 60min :
Pas bon :
Code: [Sélectionner]
# tshark -i eth3 -a duration:600 -q -z rtp,streams
Running as user "root" and group "root". This could be dangerous.
Capturing on eth3
142323 packets captured
========================= RTP Streams ========================
Src IP addr Port Dest IP addr Port SSRC Payload Pkts Lost Max Delta(ms) Max Jitter(ms) Mean Jitter(ms) Problems?
84.96.146.150 5000 233.136.0.116 65000 0x1324FE6A MPEG-II transport streams 141011 1464 (1.0%) 4127.30 1.13 0.24 X
==============================================================
# tshark -i eth3 -a duration:600 -q -z rtp,streams
Running as user "root" and group "root". This could be dangerous.
Capturing on eth3
141168 packets captured
========================= RTP Streams ========================
Src IP addr Port Dest IP addr Port SSRC Payload Pkts Lost Max Delta(ms) Max Jitter(ms) Mean Jitter(ms) Problems?
84.96.146.150 5000 233.136.0.116 65000 0x1324FE6A MPEG-II transport streams 141068 1283 (0.9%) 5394.35 0.46 0.24 X
==============================================================
Parfait :
Code: [Sélectionner]
# tshark -i eth0 -a duration:600 -q -z rtp,streams
Running as user "root" and group "root". This could be dangerous.
Capturing on eth0
142342 packets captured
========================= RTP Streams ========================
Src IP addr Port Dest IP addr Port SSRC Payload Pkts Lost Max Delta(ms) Max Jitter(ms) Mean Jitter(ms) Problems?
84.96.146.150 5000 233.136.0.116 65000 0x1324FE6A MPEG-II transport streams 142269 0 (0.0%) 4.31 0.03 0.02
==============================================================
# tshark -i eth0 -a duration:600 -q -z rtp,streams
Running as user "root" and group "root". This could be dangerous.
Capturing on eth0
142430 packets captured
========================= RTP Streams ========================
Src IP addr Port Dest IP addr Port SSRC Payload Pkts Lost Max Delta(ms) Max Jitter(ms) Mean Jitter(ms) Problems?
84.96.146.150 5000 233.136.0.116 65000 0x1324FE6A MPEG-II transport streams 142352 0 (0.0%) 4.30 0.03 0.02
==============================================================
Modem Dlink :
Code: [Sélectionner]
root@bt8silq2:~# tshark -i eth0 -a duration:3600 -q -z rtp,streams
Running as user "root" and group "root". This could be dangerous.
Capturing on eth0
855204 packets captured
========================= RTP Streams ========================
Src IP addr Port Dest IP addr Port SSRC Payload Pkts Lost Max Delta(ms) Max Jitter(ms) Mean Jitter(ms) Problems?
84.96.146.150 5000 233.136.0.116 65000 0x1324FE6A MPEG-II transport streams 854739 0 (0.0%) 4.31 0.03 0.02
==============================================================
root@vivien:~# tshark -i eth0 -a duration:3600 -q -z rtp,streams
Running as user "root" and group "root". This could be dangerous.
Capturing on eth0
915734 packets captured
========================= RTP Streams ========================
Src IP addr Port Dest IP addr Port SSRC Payload Pkts Lost Max Delta(ms) Max Jitter(ms) Mean Jitter(ms) Problems?
84.96.146.150 5000 233.136.0.116 65000 0x1324FE6A MPEG-II transport streams 845987 8675 (1.0%) 8102.02 0.48 0.12 X
==============================================================
Modem TG787 20min :
Code: [Sélectionner]
root@bt8silq2:~# tshark -i eth0 -a duration:1200 -q -z rtp,streams
Running as user "root" and group "root". This could be dangerous.
Capturing on eth0
285038 packets captured
========================= RTP Streams ========================
Src IP addr Port Dest IP addr Port SSRC Payload Pkts Lost Max Delta(ms) Max Jitter(ms) Mean Jitter(ms) Problems?
84.96.146.150 5000 233.136.0.116 65000 0xB2D9803F MPEG-II transport streams 284895 0 (0.0%) 4.31 0.51 0.01
==============================================================
root@vivien:~# tshark -i eth0 -a duration:1200 -q -z rtp,streams
Running as user "root" and group "root". This could be dangerous.
Capturing on eth0
284856 packets captured
========================= RTP Streams ========================
Src IP addr Port Dest IP addr Port SSRC Payload Pkts Lost Max Delta(ms) Max Jitter(ms) Mean Jitter(ms) Problems?
84.96.146.150 5000 233.136.0.116 65000 0xB2D9803F MPEG-II transport streams 257782 27010 (9.5%) 45797.12 0.65 0.27 X
==============================================================
Modem TG787 20min :
Code: [Sélectionner]
root@bt8silq2:~# tshark -i eth0 -a duration:1200 -q -z rtp,streams
Running as user "root" and group "root". This could be dangerous.
Capturing on eth0
285087 packets captured
========================= RTP Streams ========================
Src IP addr Port Dest IP addr Port SSRC Payload Pkts Lost Max Delta(ms) Max Jitter(ms) Mean Jitter(ms) Problems?
84.96.146.150 5000 233.136.0.116 65000 0xB2D9803F MPEG-II transport streams 284901 0 (0.0%) 4.33 0.83 0.01
==============================================================
root@vivien:~# tshark -i eth0 -a duration:1200 -q -z rtp,streams
Running as user "root" and group "root". This could be dangerous.
Capturing on eth0
287700 packets captured
========================= RTP Streams ========================
Src IP addr Port Dest IP addr Port SSRC Payload Pkts Lost Max Delta(ms) Max Jitter(ms) Mean Jitter(ms) Problems?
84.96.146.150 5000 233.136.0.116 65000 0xB2D9803F MPEG-II transport streams 262157 22702 (8.0%) 31113.13 0.68 0.27 X
==============================================================
Modem TG787 60min :
Code: [Sélectionner]
root@bt8silq2:~# tshark -i eth0 -a duration:3600 -q -z rtp,streams
Running as user "root" and group "root". This could be dangerous.
Capturing on eth0
749068 packets captured
========================= RTP Streams ========================
Src IP addr Port Dest IP addr Port SSRC Payload Pkts Lost Max Delta(ms) Max Jitter(ms) Mean Jitter(ms) Problems?
84.96.146.150 5000 233.136.0.116 65000 0xB2D9803F MPEG-II transport streams 748642 0 (0.0%) 4.32 1.24 0.01
==============================================================
root@vivien:~# tshark -i eth0 -a duration:3600 -q -z rtp,streams
Running as user "root" and group "root". This could be dangerous.
Capturing on eth0
903653 packets captured
========================= RTP Streams ========================
Src IP addr Port Dest IP addr Port SSRC Payload Pkts Lost Max Delta(ms) Max Jitter(ms) Mean Jitter(ms) Problems?
84.96.146.150 5000 233.136.0.116 65000 0xB2D9803F MPEG-II transport streams 826094 28748 (3.4%) 48968.63 0.85 0.27 X
==============================================================
Aucun commentaire:
Enregistrer un commentaire