Cette page présente quelques idées pour faciliter l'analyse du trafic réseau.
Justification
Les problèmes de lenteur sur le réseau ne sont pas toujours facile à analyser. Il faut d'abord déterminer entre quels points se situe le ralentissement, avec des outils tels que mtr, ce qui permet alors de déterminer nos possibilités d'intervention. Ensuite, si le problème se trouve dans notre infrastructure et que nous avons donc la possibilité d'intervenir, il reste à comprendre la cause du ralentissement.
Les causes peuvent aller des problèmes physiques (câbles, cartes réseau, switch, ...) aux problèmes de téléchargements massifs, en passant par des problèmes plus subtils tels que collision, boucle de routage, diffusion massive (broadcast) ou encore un manque d'optimisation (typiquement de cache) ou de gestion de flux.
Généralement nous sommes capables de déterminer la cause du problème quand nous en faisons un analyse immédiate. Nous avons de bons outils pour nous y aider, tels que iptraf ou même un simple tcpdump avec filtrage. Cependant quand le problème survient en notre absence, ou que nous n'avons pas la possibilité de l'analyser au moment où il survient, nous manquons alors d'information pour comprendre ce qui s'est passé. Certes nous avons nos graphiques mrtg ou smokeping qui permettent de savoir qu'il y a eu un problème, mais ils ne permettent généralement pas d'en savoir plus sur la nature du problème.
D'autre part, vu les besoins croissant en utilisation du réseau, ce qui est tout à fait compréhensible dans un monde moderne, il va être grandement temps de mettre en place une gestion de qualité de service réseau (QoS) pour donner la priorité à certains flux sur d'autres (VoIP, Vidéo-Conférence, accès SSH administratif, accès TSE, ...).
Idées
Faire du comptage de paquets sur les passerelles et en faire des statistiques. La nouveauté ici sera de rendre ce comptage plus fin que le classique comptage des entrées/sorties. Il faut découper ce comptage suivant la nature des statistiques souhaitées.
Quelques idées de statistiques qui pourraient être intéressantes :
- par protocole sur Ethernet : ARP, $alien, IPv4, IPv6, autre
- $alien = IPX, ATALK
Objectif : repérer les problèmes ARP, les protocoles non souhaités et la répartition IPv4/IPv6
- par protocole sur IP : ICMP, ESP, TCP, UDP, autre
Objectif : avoir une vue d'ensemble sur les grandes catégories de protocoles circulant sur le réseau
- par protocole sur {TCP,UDP}/IP : SSH, DNS, $vpn, $chat, $voip, $mail, $web, $p2p, autre
- $vpn = OpenVPN (1194, à fusionner avec ESP ?)
- $chat = XMPP (5222), XMPPS (5223), Yahoo (5050), MSN (...), IRC (6666-6670 en majorité)
- $voip = IAX2 (4569), SIP (5060, mais ce n'est pas le gros du traffic, il faut suivre la suite avec conntrack)
- $mail = SMTP, SMTPS, POP3, POP3S, IMAP, IMAPS
- $web = HTTP (80 uniquement ? ou bien compter ce qui va au proxy), HTTPS
- $p2p = difficile, mais il y a plusieurs ports fixes connus, et on verra le reste dans autre
Objectif : repérer quel type de transfert pourrait être à l'origine d'un problème
- par machine destinataire dans le réseau local, pour celles en IP fixe
Objectif : repérer quelle machine pourrait être à l'origine d'un problème
Quelques idées de techniques pour y arriver :
dans un premier temps, faire du comptage via des compteurs iptables
- par la suite, éventuellement faire un crochet vers un service utilisateur dédié (pour optimiser la vitesse de comptage, à voir si ce sera nécessaire ou non)
collecter les données avec rrdtool (extraordinaire cet outil !!)
faire les graphiques avec rrdtool (extraordinaire cet outil !! (bis) )
Expérimentations
2007-01-04 : j'ai commencé par faire un premier test local sur ma machine, voir /test1