Outils pour utilisateurs

Outils du site


tuto:reseau:toe

TOE - TCP offload engine

Source : http://lafibre.info/tutoriels/tcp-offload-engine/

Compléments : http://lafibre.info/numericable-fttla/tcp-ack-suppression/

Comment TCP offload engine affecte ce que Wireshark capture ?

Quand les calculs de checksum sont réalisés par la carte réseau au lieu du CPU, Wieshark capture des trames avec un checksum incorrect en émission, rempli de 00000 (en réception il est bon, car la carte réseau de l'émetteur a fait le calcul et remplacé les 000000 par le vrai checksum).

Sous linux, il faut installer le paquet “ethtool” (sudo apt-get install ethtool) Et taper en ligne de commande :

$ sudo ethtool -k eth0
  • -k donne les paramètres Offload pour la carte réseau (eth0 pour la première carte réseau Ethernet).
  • -K change les paramètres Offload demandés pour la carte réseau.

Lexique :

  • TCP Offload Engine = Moteur de déchargement TCP
  • rx-checksumming (rx on|off) = Déchargement de la somme de contrôle en réception
  • tx-checksumming (tx on|off) = Déchargement de la somme de contrôle en émission
  • scatter-gather (sg on|off) = comme DMA : Les données circulant de ou vers la carte réseau sont transférées directement vers la mémoire principale de la machine, sans intervention du microprocesseur (si ce n'est pour lancer et conclure le transfert).
  • tcp-segmentation-offload (tso on|off) = Déchargement de la segmentation d'un gros paquet TCP en plusieurs petits (en émission)
  • udp-fragmentation-offload (ufo on|off) = Déchargement de la fragmentation d'un gros paquet UDP en plusieurs petits (en émission)
  • generic-segmentation-offload (gso on|off) = Déchargement de la segmentation d'un gros paquet TCP en plusieurs petits (en émission)
  • generic-receive-offload (gro on|off) = Déchargement en fusionnant des petits paquets TCP reçus du réseau en un gros paquet pour le système (c'est donc en réception)
  • large-receive-offload (lro on|off) = Déchargement important à la réception
  • rx-vlan-offload (rxvlan on|off) = Déchargement de la gestion des Vlan en réception
  • tx-vlan-offload (txvlan on|off) = Déchargement de la gestion des Vlan en émission
  • ntuple-filters (ntuple on|off) = ??
  • receive-hashing (rxhash on|off) = receive hashing offload

Combinaisons on / off :

  • Il est nécessaire d'activer tx-checksumming (tx on) pour activer scatter-gather
  • Il est nécessaire d'activer tx-checksumming (tx on) et scatter-gather (sg on) pour activer tcp-segmentation-offload ou generic-segmentation-offload

Désactiver ce qui fait chuter le débit avec “TCP ACK Supression” activé sur une box :

ethtool -K eth1 tso off gso off

tcp-segmentation-offload et generic-segmentation-offload chacun séparément ou activé tous les deux font chuter fortement le débit avec TCP ACK Supression. Au contraire scatter-gather permet de gagner du débit avec “TCP ACK Supression” activé.

  • TOE entièrement activé (défaut) : 3 min 13 secondes pour télécharger le fichier test
  • TOE entièrement dés-activé : 56 secondes pour télécharger le fichier test
  • Tout désactivé sauf tx-checksumming et scatter-gather : 33 secondes pour télécharger le fichier test
  • Seul tcp-segmentation-offload et generic-segmentation-offload désactivé : 33 secondes pour télécharger le fichier test

A noter qu'avec “TCP ACK Supression” désactivé ou qui n'existe pas (cas des majorités des box) on a :

  • TOE entièrement activé (défaut) : 21 secondes pour télécharger le fichier test
  • TOE entièrement dés-activé : 49 secondes pour télécharger le fichier test
  • Tout désactivé sauf tx-checksumming et scatter-gather : 32 secondes pour télécharger le fichier test
  • Seul tcp-segmentation-offload et generic-segmentation-offload désactivé : 32 secondes pour télécharger le fichier test

Désactiver entièrement TCP offload engine :

# ethtool -K eth0 rx off tx off sg off tso off ufo off gso off gro off lro off rxvlan off txvlan off ntuple off rxhash off

Si vous avez le message “Cannot set device udp large send offload settings: Operation not supported”, utilisez la commande suivante :

# ethtool -K eth0 rx off tx off sg off tso off gso off gro off lro off rxvlan off txvlan off ntuple off rxhash off

Activer entièrement TCP offload engine :

# ethtool -K eth0 rx on tx on sg on tso on ufo on gso on gro on lro on rxvlan on txvlan on ntuple on rxhash on

En cas d'erreur sur l'UDP :

# ethtool -K eth0 rx on tx on sg on tso on gso on gro on lro on rxvlan on txvlan on ntuple on rxhash on

En cas d'erreur sur UDP, large-receive-offload, ntuple-filters :

# ethtool -K eth0 rx on tx on sg on tso on gso on gro on rxvlan on txvlan on rxhash on
tuto/reseau/toe.txt · Dernière modification : 2012/11/17 23:01 de root