Accueil > Hyper-V v2, Microsoft, Windows 2008 R2 > Lenteurs réseau avec HyperV R2

Lenteurs réseau avec HyperV R2

Ok nous allons voir ici comment résoudre un problème de lenteurs réseau qui pevent apparaitre après avoir activé HyperV R2 et transformé une carte réseau (physique) en Switch virtuel.
Les lenteurs apparaissent aussi bien sur le serveur HyperV que sur les VMs qu’il héberge !

Tout d’abord l’origine du problème ! (qui n’en est pas un !)
En faite des optimisations sont apparues sur la gestion du réseau avec l’arrivé de Windows Serveur 2008 R2 et la monté en puissance de l’iSCSI, par conséquent pour en profiter il faut posséder une carte compatible avec ces optimisations … (et forcement ce sont les cartes réseaux de dernière génération).
On parle ici de cartes réseau compatibles TOE (TCP/IP Offload Engine).
L’iSCSI est un très bon protocole mais souffre (un mot bien dur ;p) de sa dépendance à la stack TCP/IP, de ce fait les ressources machines sont consommées pour le traitement TCP/IP (principalement des ressources CPU), avec le TOE, un agent intelligent est placée dans le hardware de la carte réseau et la stack TCP/IP est elle aussi déplacée dans la carte (déchargeant ainsi le CPU).
(il faut avouer que du 10GB/s ça impacte considerablement le CPU ! (sans le TOE)).
Ces optimisations sont activées par défaut (elles ne l’étaient pas sur windows 2008) et si vous ne possédez pas une carte réseau compatible les conflits apparaissent !
(Elles sont activées par défaut lorsque qu’un contrôleur réseau est transformé en Switch virtuel à l’installation d’hyperv R2 ou à l’ajout d’un réseau de type externe (cela impacte l’interface virtuelle crée et connectée à ce nouveau Switch virtuel)).

J’ai nommé TCP task offloading !
Si votre carte réseau en est allergique il vous suffira de le désactiver (voir les spec du constructeur et chercher TOE)
Pour se faire il faudra vous rendre dans le registre (regedit) :
Avant toute modification bien faire une sauvegarde de votre registre.
Ensuite il faudra vous rendre dans la clef :
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Servic es\Tcpip\Parameters
Puis créer un DWORD “DisableTaskOffload” et lui mettre la valeur 1
Enfin il vous faudra redémarrer.

Il vous faudra le faire sur le serveur HyperV mais aussi sur les VMs (qui rencontrent le symptôme des lenteurs)

La manipulation est aussi possible à l’aide de la commande netsh :
netsh int ip show offload (des informations vont apparaitre)
netsh int ip set global taskoffload=disabled
netsh int ip show offload (plus d’informations doivent apparaitre après le reboot)

Si votre carte est RSSE (Receive Side Scaling Enabled) :
Vous aurez peut etre besoin de rajouter dans le registre, au meme endroit que le DisableTaskOffload, les DWORD suivant : EnableRSS, EnableTCPA, EnableTCPChimney tous avec une valeur de 0

Les commandes netsh associées (à ne manipuler que si l’ont sait ce que l’on fait)
Netsh int tcp set global RSS=Disabled
Netsh int tcp set global chimney=Disabled
Netsh int tcp set global autotuninglevel=Disabled
Netsh int tcp set global congestionprovider=None
Netsh int tcp set global ecncapability=Disabled
Netsh int ip set global taskoffload=disabled
Netsh int tcp set global timestamps=Disabled

Anthony Hyper-V v2, Microsoft, Windows 2008 R2 , , , ,