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 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) :
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).
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
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
.