ethertool tcp

ARTICLE PÉRIMÉ

Ce premier épisode, va me permettre de balayer les optimisations rendues possible par le TCP Offload Engine (TOE). Cette fonctionnalité décharge le processeur d'une partie des taches déportées, au niveau du hardware de la carte réseau éthernet. Le traitement déporté de TCP.

Suite à la conversation constructive avec Philippe Petrinko (voir les commentaires plus bas), le TOE NE SERT A RIEN !!!

Les optimisations réseaux

Les OS permettent d'optimiser et de maximiser les flux réseaux, en agissant à 3 niveaux (chacun donnera lieu à un article et un article final, présentera à mise en oeuvre et mesures avec iperf) :

  • optimisation hardware avec le TOE
  • optimisation des buffers de carte réseau au niveau driver
  • optimisation des buffers systèmes de l'OS au niveau de la pile IP
Je vais traiter dans ce premier article, l'optimisation hardware TCP Offload.

TCP Offload Engine

A l'origine TCP a été conçu pour des réseaux non fiables à faible vitesse (modems dial-up), la vitesse d'Internet a depuis augmenté.

Les stacks TCP des OS exigent une puissance de calcul importante : une carte Full duplex TCP Gigabit consomme plus de 80% d'un 2,4 GHz Pentium 4.

L'idée est donc de décharger le processeur, des traitements TCP, au profit d'un chipset dédié sur la carte réseau. Depuis plusieurs années, beaucoup de cartes réseaux supportent cette fonctionnalité (à divers degrés), connue sous le nom de TOE (TCP Offload Engine).

Mise en oeuvre de ethtool

Première étape: installer l'outil ethtool, sur Debian :

aptitude install ethtool

Pour connaitre, les options déjà activées, je vais utiliser la commande ethtool sur une carte Intel Pro 1000 Dual NIC :

sudo ethtool -k eth0

Offload parameters for eth0:
rx-checksumming: on
tx-checksumming: on
scatter-gather: on
tcp-segmentation-offload: on
udp-fragmentation-offload: off
generic-segmentation-offload: on
generic-receive-offload: off
large-receive-offload: off
ntuple-filters: off
receive-hashing: off

Ces différentes valeurs peuvent être modifiées, avec la commande ethtool, pour optimiser les réglages du TCP Offload Engine, de multiples manières :

sudo ethtool --offload eth0 rx off tx off sg off tso off
ou

sudo ethtool -K eth0 tx on
sudo ethtool -K eth0 rx on
sudo ethtool -K eth0 sg on
sudo ethtool -K eth0 tso on
sudo ethtool -K eth0 ufo on
sudo ethtool -K eth0 gso on
sudo ethtool -K eth0 gro on
sudo ethtool -K eth0 lro on
sudo ethtool -K eth0 rh on

Les constructeurs proposent une description avancée, des différentes fonctions TOE supportées par leurs cartes. Il convient également, d'essayer chaque réglage individuellement, pour ne pas risquer de perdre la connexion (surtout dans le cas de serveurs distants). En outre, certains ont rencontré des problèmes sur des options, avec des machines virtuelles VMware !

Les différentes commandes ne sont pas persistantes, vous pouvez les ajouter dans /etc/rc.local pour les activer au prochain reboot.

Pour plus d'informations, vous pouvez consulter cet article TOE sur Wikipedia

.