Mettre les mains dans les paquets.
Une page hands-on. Filtres Wireshark prêts à coller, lectures de traces commentées, diagnostic des pannes les plus courantes, snippets utiles.
Wireshark, filtres utiles.
Sept filtres qui couvrent 95 % des situations de débogage SIP/RTP.
| Filtre | Ce qu'il montre |
|---|---|
| sip | Tous les messages SIP, peu importe le port. |
| sip.Method == "INVITE" | Seulement les requêtes INVITE. |
| sip.Status-Code >= 400 | Toutes les réponses d'erreur (4xx, 5xx, 6xx). |
| sip.Call-ID == "..." | Un seul dialogue, identifié par son Call-ID. |
| rtp | Tout le flux média RTP. |
| rtp.ssrc == 0x12345678 | Un seul flux RTP, par identifiant de source. |
| tcp.port == 5061 or udp.port == 5060 | Tout ce qui touche le SIP, sans dissection applicative. |
Lire un flow.
Telephony → VoIP Calls → choisir un appel → Flow Sequence. Wireshark dessine un diagramme verticalement, avec les UA en colonnes et les messages en flèches. C'est ce qu'on appelle un ladder diagram.
Ce diagramme permet de voir d'un coup d'œil : la chronologie, qui parle à qui, où l'appel a éventuellement raté. Plus efficace qu'une trace ligne par ligne.
Diagnostic RTP.
Telephony → RTP → Stream Analysis. Pour chaque flux, Wireshark calcule trois métriques critiques :
| Métrique | Bon | Mauvais |
|---|---|---|
| Jitter moyen | < 30 ms | > 80 ms = voix robotique. |
| Lost packets | < 1 % | > 5 % = voix hachée. |
| Delta max | < 100 ms | > 300 ms = mute apparent. |
Si les chiffres sont mauvais : tester filaire au lieu de Wi-Fi, changer de codec (Opus est plus résilient), vérifier la QoS sur le routeur, ou contacter l'opérateur si le SBC est en cause.
Pannes courantes.
| Symptôme | Cause probable | Remède |
|---|---|---|
| 403 Forbidden au REGISTER | Mauvais mot de passe ou compte non activé. | Revérifier depuis le tableau de bord ippi. |
| 408 Request Timeout | Le proxy ne répond pas — réseau ou DNS. | dig sip.ippi.com, nc -u sip.ippi.com 5060. |
| Pas de son sortant | RTP bloqué par le NAT. | Activer STUN, vérifier que c= SDP a bien l'IP publique. |
| Pas de son entrant | NAT asymétrique côté distant. | Forcer rport, ouvrir UDP 7078–7099 en forward sur la box. |
| L'appel coupe à 30 s | NAT keep-alive expiré côté box. | Réduire le timer SIP register à 60 s, activer keepalive RTP. |
| Voix robotique | Codec inadapté ou perte de paquets. | Forcer G.711 en codec unique pour diagnostiquer, puis revenir à Opus. |
| Écho local | Couplage micro/HP, ou pas d'annulation d'écho. | Casque obligatoire, ou activer l'AEC dans les préférences audio. |
| 488 Not Acceptable | Aucun codec commun. | Ajouter G.711 µ-law et A-law dans la liste autorisée. |
Snippets utiles.
Test rapide de connectivité SIP
# Vérifier que le port SIP répond nc -uv sip.ippi.com 5060 # Réponse attendue : "Connection succeeded" (UDP, pseudo) # Envoyer un OPTIONS minimal avec sipsak sipsak -s sip:sip.ippi.com
Capturer une trace SIP avec tcpdump
# Tout le trafic SIP/RTP vers/depuis ippi
tcpdump -i any -s 0 -w trace.pcap \
'(udp port 5060) or (host sip.ippi.com)'
Décoder un Authorization à la main (Perl)
perl -e 'use Digest::MD5 qw(md5_hex);
$u="votre_login"; $r="sip.ippi.com"; $p="motdepasse";
$m="REGISTER"; $uri="sip:sip.ippi.com";
$n="3a7f5c8b9e4d2";
$h1=md5_hex("$u:$r:$p");
$h2=md5_hex("$m:$uri");
print md5_hex("$h1:$n:$h2"), "\n";'
Faire sonner tous ses postes en parallèle (Asterisk)
; extensions.conf
exten => votre_login,1,Dial(PJSIP/1001&PJSIP/1002&PJSIP/1003,30)
exten => votre_login,n,Voicemail(1001@default)
Mesurer la qualité.
Quatre indicateurs à suivre sur un parc en production :
| Indicateur | Cible | Source |
|---|---|---|
| ASR (Answer-Seizure Ratio) | > 50 % | Asterisk CDR. |
| ACD (Average Call Duration) | > 30 s | Asterisk CDR. |
| MOS estimée | > 4.0 | RTCP XR ou outil tiers (VQ). |
| PDD (Post-Dial Delay) | < 3 s | Wireshark, mesurer INVITE → 180. |
« Le SIP est lisible. Le RTP est mesurable. Si quelque chose ne marche pas, c'est qu'on n'a pas encore ouvert le bon outil. » — note de fin
Retour à : ← Accueil