Auteur Sujet: Wireshark : Capturer son trafic Internet à haut débit sans perdre de paquets  (Lu 18027 fois)

0 Membres et 1 Invité sur ce sujet

vivien

  • Administrateur
  • *
  • Messages: 47 085
    • Twitter LaFibre.info
Wireshark : Capturer son trafic Internet à haut débit sans perdre de paquets
Ou comment optimiser Wireshark pour la capture...


Vous vous êtes peut être intéressé à analyser votre trafic ?
En ADSL, l'utilisation de Wireshark (nouveau nom pour Ethereal) ne pose pas de problème particulier si votre PC est puissant.

En fibre optique avec des débits de 100 Mb/s à 300 Mb/s, Wireshark n'arrive pas à capturer tous les paquets.

Comment voir que l'on ne capture pas tous les paquets ?
Après avoir terminé la capture, vous avez "Drop : 0" qui s'affiche en bas de la fenêtre Wireshark.

Si c'est 0, c'est bon, aucun paquet na été ignoré. Si vous avez "Drop : 5473", vous avez 5473 paquets qui ne sont pas présents  :'(

Quelques suggestions :

  • Décocher la case "Update list of packets in real time" dans la fenetre d'option de capture
  • Ne pas mettre de filtre lors de la capture (ne pas utiliser les "read filters" ni les "capture filters")
  • Arrêter les programmes inutiles afin de libérer de la puissance CPU et de la RAM qui pourra "cacher" les écriturres disque
  • Pour les PC avec 2 disques dur, utiliser un disque pour le transfert http / ftp et un pour Wireshark (changer l'emplacement du fichier temporaire)
  • Windows uniquement : augmenter la tailler du buffer "Buffer size" dans la fenêtre d'option de capture
  • Si vous avez plusieurs carte réseau, tester avec un autre, elle ne consomme pas toute autant de CPU pour un même trafic



Si malgré ces conseils vous perdez encore des paquets, il reste encore 6 solutions a utiliser éventuellement ensemble :

- Réduire la taille des paquet capturé au strict minimum pour votre usage. Par exemple en n'enregistrant que les 100 premiers octets de chaque paquet contre plus de 1500 habituellement, vous limitez fortement les écriture sur le disque qui sont critique pour la perte de paquets lors de la capture.

- Si vous avez beaucoup de RAM, vous pouvez créer un RAMdisk ou vous demanderez à wireshark d'écrire son fichier. Un RAMdisk est un disque de quelques centaines de Mo qui va puiser l'espace en RAM (c'est donc d'accès immédiat avec un débit de plusieurs Go par seconde). Attention, la mémoire réservée au Ramdisk n´est plus utilisable comme mémoire vive centrale par votre système d'exploitation. Faite donc attention a laisser au moins 512 Mo à Windows XP / linux sans quoi il va swaper et la c'est la catastrophe pour la capture. (pour vista laissez 1 Go au système est un minimum)
Mode d'emploi pour crée un ram disque : pour Windows / pour linux voir ci-dessous.

- Utiliser un outil spécialisé dans la capture (Wireshark n'est pas optimisé pour faire de la capture, pour ne pas avoir de pertes, il est conseillé de passer par un outil qui fait de la capture uniquement, source : http://wiki.wireshark.org/Performance). Une fois la capture réalisée vous pourrez l'ouvrir avec Wireshark pour appliquer vos filtres et analyser la trace. Ces outils sont :


- Sous linux prioriser l'application tcpdump :

# Ecriture du cache sur le disque pour que dump ne se produise pas pendant l'écriture
/bin/sync

# Démarrage de la capture
/usr/bin/sudo /usr/bin/nice -n -10 /usr/bin/ionice -c1 /usr/sbin/tcpdump -i eth0 -n -s 0 -w $1/Capture.pcap host 87.88.87.88 or 87.88.87.87 and udp -c 90000 2> $1/drop_pendant_capture.txt

Le fait de mettre /usr/bin/sudo /usr/bin/nice -n -10 devant la commande tcpdump priorise le CPU pour tcpdump
Le fait de mettre /usr/bin/sudo /usr/bin/ionice -c1 devant la commande tcpdump priorise l'accès disque pour tcpdump


- Utiliser un système d'exploitation Linux serveur : les OS en ligne de commande ont moins de taches faisant des accès au disque et créant des pertes de paquets.

- Sous linux supprimer la crontab afin de ne laisser que le process de capture :

sudo nano -w /etc/crontab => commenter les différentes lignes
sudo nano -w /etc/cron.d/anacron => commenter la ligne
sudo nano -w /etc/cron.d/update-motd => commenter les différentes lignes





Linux : Pour faire une capture avec wireshark sans le démarer en root, la solution la plus simple est ci-dessous. Copiez / collez ces 4 lignes dans un terminal :

sudo addgroup -quiet -system wireshark
sudo chown root:wireshark /usr/bin/dumpcap
sudo setcap cap_net_raw,cap_net_admin=eip /usr/bin/dumpcap
sudo usermod -a -G wireshark VOTRE_LOGIN


Note : pensez a changer VOTRE_LOGIN par votre login ubuntu.

vivien

  • Administrateur
  • *
  • Messages: 47 085
    • Twitter LaFibre.info
Wireshark : Capturer son trafic internet sans perdre de paquets
« Réponse #1 le: 14 juillet 2011 à 23:26:40 »
Mode d'emploi pour faire un RamDisk sous linux
Un espace pour faire des capture à 1 Gb/s sans pertes de paquets


Pour créer un RamDisk dans /tmp/ramdisque, une fois (au prochain redémarrage, il n'y aura pas de ramdisk), vous devez taper les commande suivantes :

  • sudo mkdir /tmp/ramdisque    (créer un point de montage)
  • mount -t tmpfs -o size=1g tmpfs /tmp/ramdisque    (créer un ramdisque de 1Go)

Avec certains systèmes, il faut également faire sudo chmod ugoa+rwx /tmp/ramdisque    (Donner tous les droits d'exécutions pour que root ne soit pas le seul autorisé a écrire)

Pour qu'a chaque démarrage, le RamDisque soit crée (souvenez-vous que les informations étant en ram, tout est perdu si le PC est éteint), ces informations doivent être incorporé au fichier /etc/rc.local

sudo nano -w /etc/rc.local

Placez les lignes suivantes devant le exit 0 :

### DEBUT CREATION RAMDISQUE ###
mkdir /tmp/ramdisque
mount -t tmpfs -o size=1g tmpfs /tmp/ramdisque
### FIN CREATION RAMDISQUE ###
exit 0



Information importante : Sous linux un RamDisk ne prend de la place en RAM qu'a hauteur des fichiers copiés dessus. La création de ce RamDisk de taille maximum de 1 Go ne prendras pas de place en RAM tant que vous n'y mettrez pas de fichiers.

Pour un ramdisque de taille maximum de 500 Mo : mount -t tmpfs -o size=500m tmpfs /tmp/ramdisque
Pour un ramdisque de taille maximum de 5 Go : mount -t tmpfs -o size=5g tmpfs /tmp/ramdisque

corrector

  • Invité
Wireshark : Capturer son trafic internet sans perdre de paquets
« Réponse #2 le: 16 juillet 2011 à 05:48:24 »
"Sous linux un RamDisk ne prend de la place en RAM qu'a hauteur des fichiers copiés dessus. "

Et pour récupérer la RAM, il suffit de rebooter.

Comme Windows de la grande époque.

corrector

  • Invité
Mode d'emploi pour faire un RamDisk sous linux
« Réponse #3 le: 22 juillet 2011 à 01:26:49 »
Information importante : Sous linux un RamDisk ne prend de la place en RAM qu'a hauteur des fichiers copiés dessus. La création de ce RamDisk de taille maximum de 1 Go ne prendras pas de place en RAM tant que vous n'y mettrez pas de fichiers.
Pas tout à fait. Il prend de la place en fonction du nombre des secteurs modifiés. Rien que le formatage va copier le bloc principal en des milliers d'exemplaire, chaque copie occupant de la place en mémoire.

En fonction de la stratégie d'allocation du système de fichier (ici ext2), si des fichiers sont supprimés, selon leur taille, leur position, et leur fragmentation éventuelle, la place libre de ces fichiers supprimés sera ou pas réutilisée pour les nouveaux fichiers.

La suppression de tous les fichiers de /tmp/ramdisk0 ne libérera pas un seul octet de mémoire utilisée par /tmp/ramdisk0 (par contre cela libère immédiatement la mémoire éventuellement utilisée par le cache d'inode, le cache de dentry, et le cache de pages pour ces fichiers).

Le démontage de /tmp/ramdisk0 ne libérera pas un seul octet de mémoire utilisée par /tmp/ramdisk0 (par contre cela libère immédiatement la mémoire pour le point de montage lui-même).

La mémoire utilisée par /tmp/ramdisk0 est de la RAM, non swapable, monopolisée par le périphérique.

Bien sûr, le redémarrage détruit le contenu du ramdisk et donc "libère" la mémoire.
« Modifié: 22 juillet 2011 à 17:47:24 par corrector »

vivien

  • Administrateur
  • *
  • Messages: 47 085
    • Twitter LaFibre.info
Wireshark : Capturer son trafic internet sans perdre de paquets
« Réponse #4 le: 22 juillet 2011 à 10:41:17 »
Moi aussi je pensais qu'en prenant une machine puissante avec beaucoup de RAM le cache disque permettrais de pallier les lenteurs du disque dur pour les captures à haut débit.

En pratique, les accès disques qui sont réalisés pour mettre le contenu du cache sur le disque dur font perdre des paquets lors de la capture. Avec un RAM disque je n'ai jamais eu le moindre souci de perte de paquet.

Bien sur il faut suffisamment de ram, mais aujourd'hui les PC ont plu de 4go de ram alors qu'un fichier wiresahrk doit faire moins de 1Go pour être exploitable et linux (même avec une interface graphique) consomme assez peu de ram.

corrector

  • Invité
Taille du ramdisk
« Réponse #5 le: 22 juillet 2011 à 20:21:56 »
Bien sur il faut suffisamment de ram, mais aujourd'hui les PC ont plu de 4go de ram
Pas tous! Pas le mien!

alors qu'un fichier wiresahrk doit faire moins de 1Go pour être exploitable et linux (même avec une interface graphique) consomme assez peu de ram.
Oui... (Les systèmes KDE/Gnome, c'est quand même une orgie de mémoire par rapport au premiers systèmes graphiques.)

Mais je pense que tu sera d'accord pour dire qu'il faut définir sa dimension du ramdisk pour qu'il ne rende jamais le PC inutilisable : il faut que quand le ramdisk est utilisé à 100 % il reste assez de RAM pour un fonctionnement confortable.

Je pense qu'avec un ramdisk de moins de 50 % de la RAM et s'il reste au moins 1 Go ça devrait aller!