Dépannage du Switch Hyper-V Extensible de Windows Server 2012

Avec Windows Server 2012 apparait le switch extensible Hyper-V un vrai petit bijou dont on parlera encore souvent sur ce blog. Dans cet article concentrons nous sur les techniques et outils disponibles lorsque l’on veut comprendre ce qui se passe dans la bête.

Traces unifiées:

Les traces unifiées sont apparues avec Windows 7 et permettent de récupérer des traces système corrélées via ETW (Event Tracing for Windows). Cela signifie que les différents éléments inclus dans la traces sont mis en relation entre eux pour former un tout plus facile à interpréter.

Pour lancer une trace ETW, utilisons le contexte netsh trace avec le fournisseur approprié:

netsh trace start provider=Microsoft-Windows-Hyper-V-VmSwitch

Si l’on veut une trace réseau en même temps, on peut même y ajouter l’argument qui va bien:

netsh trace start provider=Microsoft-Windows-Hyper-V-VmSwitch capture=yes

Parfois on a besoin de tracer le comportement au boot, on utilise alors l’argument persistent:

netsh trace start provider=Microsoft-Windows-Hyper-V-VmSwitch persistent=yes

Par défaut on trace dans le profile de l’utilisateur courant avec une taille max de 250MB:

netsh1 

Une fois le comportement problématique reproduit, on arrête la trace avec

netsh trace stop

netsh2

Une fois la trace obtenue, on peut l’ouvrir avec le journal d’évènements, mais ce n’est pas l’outil le plus efficace pour explorer et filtrer ce genre de traces. Utilisons plutôt des outils appropriés comme Network Monitor et Message Analyzer.

Vous allez entendre parler de plus en plus de Message Analyzer c’est le successeur de Network Monitor, et il permet de tracer à peu près tout et n’importe quoi dans Windows, bien au delà de son prédécesseur.

Vous pouvez suivre le blog de l’équipe produit ici: http://blogs.technet.com/b/messageanalyzer/ 

==> Pour l’instant Message Analyzer n’est disponible qu’en beta publique que vous pouvez télécharger ici: https://connect.microsoft.com/site216 (vous devrez joindre le groupe Message Analyzer et Network Monitor pour télécharger les éléments dont nous discutons ici). <==

Si vous n’avez pas envie de vous familiariser avec Message Analyzer, vous pouvez juste télécharger les parseurs pour Network Monitor 3.4, ce qui vous permettra d’interpréter les messages du Switch Virtuel Hyper-V. Etudions les deux cas pour notre exemple.

Avec Network Monitor 3.4:

La trace suivante (passage en mode plein écran recommandé), montre un exemple basique. On remarque dans la partie gauche, les network conversations permettent de filtrer les différent types d’activités du Switch de manière rapide:

nm34-1

On peut voir les opérations courantes sur le Switch: routage, delivery et reception que l’on peut filtrer avec les mécanismes habituels sous Netmon:

VMSWITCH_MicrosoftWindowsHyperVVmSwitch.VM_NBL_DELIVER
VMSWITCH_MicrosoftWindowsHyperVVmSwitch.VM_NBL_RECEIVE
VMSWITCH_MicrosoftWindowsHyperVVmSwitch.VM_NBL_ROUTE

Si votre dépannage ne concerne pas ces opérations, vous pouvez déjà retirer ce bruit en utilisant le filtre d’affichage

!(VMSWITCH_MicrosoftWindowsHyperVVmSwitch.VM_NBL_DELIVER OR VMSWITCH_MicrosoftWindowsHyperVVmSwitch.VM_NBL_RECEIVE OR VMSWITCH_MicrosoftWindowsHyperVVmSwitch.VM_NBL_ROUTE)

Selon les scénarios que l’on dépannage on pourra également vouloir mettre en évidence différents problèmes comme les drops de paquets: 

VMSWITCH_MicrosoftWindowsHyperVVmSwitch.VM_NBL_INCOMING_DROP

Le petit exemple ci-dessous vous permettra d’apprécier les subtilités de ma configuration domestique Sourire

nm34-2

 

Et pour terminer une séquence de requête de configuration et de suppression de Switch Virtuel:

nm34-3

 

Avec Message Analyzer:

Le même message que précédemment, vu avec Message Analyzer:

ma40-1

 

Message Analyzer est vraiment passionnant et son interface extensible quasiment à l’infini. Rajoutons ici une colonne pour voir rapidement quels sont les switch virtuals des différents messages:

ma40-2

Nous avons alors une vue rapide sur les différents switch et les différents dialogues:

ma40-3

 

Pour l’instant, aucun soucis dans notre trace, il s’agit juste de se familiariser avec l’outillage, nous verrons prochainement des cas concrets!

 

Bon amusement avec Message Analyzer et Windows Server 2012!

 

Plus d’informations:

Hyper-V Extensible Switch – http://msdn.microsoft.com/en-us/library/windows/hardware/hh598161(v=vs.85).aspx

Hyper-V Extensible Switch Components – http://msdn.microsoft.com/en-us/library/windows/hardware/hh598163(v=vs.85).aspx

Improve Debugging And Performance Tuning With ETW – http://msdn.microsoft.com/en-us/magazine/cc163437.aspx 

Unified Tracing Overview – http://technet.microsoft.com/en-us/library/hh848933.aspx

http://www.cisco.com/en/US/solutions/collateral/ns340/ns517/ns224/ns955/ns963/solution_overview_c22-687087.html

 

Enfin comme de tradition, pour mettre tout ça en pratique, Windows Server 2012, c’est par ici: https://aka.ms/jeveuxWindows2012

 

Arnaud

SR-IOV en pratique dans Windows Server 2012

Une des grandes nouveautés pour la virtualisation et les meilleures performances dans Windows Server 2012 est le support de SR-IOV. Cette norme qui fait partie du PCI-SIG n’est pas propre au réseau, mais elle permet d’une manière générale de simplifier le chemin des IO entre une machine virtuelle et les ressources de sa machine physique. Avec des cartes réseaux de plus en plus puissantes, on pense au 40GbE et même au 100GbE qui pointent le bout de leurs nez, ce n’est donc plus la bande passante qui est le souci mais le volume de données, les temps de latence dans le filtrage et la simplification des gestions des IO.

 

Schématiquement voici comment se présente SR-IOV:

WS 2012 Deck_Networking

Ce schéma extrêmement simplifié montre qu’une carte réseau compatible SR-IOV va exposer au système un certain nombre de Virtual Functions qui seront autant de slots que pourront consommer des machines virtuelles connectées sur la machine physique.

Pour faire fonctionner SR-IOV, il ne suffit pas d’une carte réseau SR-IOV, on doit vérifier également quelques prérequis :

  • Support de la fonctionnalité par la carte réseau (notons les cartes Intel Gigabit ET Dual Port, ainsi que Gigabit ET2 QuadPort que nous utilisons pour cet article)
  • Un driver et un firmware bien mis à jour (même si les pilotes de Windows reconnaissent votre carte réseau, installez ceux du constructeur pour bénéfice de toutes les fonctionnalités ET n’oubliez pas de les mettre à jour régulièrement.)
  • Support du chipset pour IOMMU (Input/Output Memory Management Unit, voir références plus bas)
  • Support du SLAT (Second Level Address Translation)

 

Vérifications sur la partition parent

Avec les pilotes réseau par défaut de Windows, vérifions la présence de la section SRIOV dans les fonctionnalités avancées de la carte au sein du gestionnaire de périphériques:

 WindowsDRV1

 

Dans notre exemple nous utilisons les cartes carte Intel Gigabit ET Dual Port, ainsi que Gigabit ET2 QuadPort. Lorsque l’on installe les drivers Intel on a beaucoup plus d’options et notamment un contrôle plus fin sur l’utilisation de SR-IOV et VMQ :

IntelDRV1IntelDRV2

 

Une fois les fonctionnalités activés au niveau du périphérique, vérifions les capacités exposées par la carte réseau à l’aide de la commande PowerShell:

 Get-NetAdapterSriov

verifcarte

Premier élément à vérifier est le support de SR-IOV, dans notre cas c’est supported, mais dans d’autres cas on aura un message d’erreur indiquant la raison pour laquelle cela ne fonctionne pas.

Autres éléments intéressants le nombre total de VF exposées par la carte (NumVFs) et le nombre déjà consommées sur le système (NumAllocatedVFs) .

 

Configuration de la partition parent

Une fois tout cela vérifié, il faudra l’activer sur le Switch Virtuel ainsi que sur les cartes réseaux virtuelles des VM qui doivent profiter de la fonctionnalité.

Cela se fait dans le gestionnaire de réseaux virtuels de Hyper-V:

Switch

 

Ensuite pour chaque VM dans les options d’accélération matérielles de la carte virtuelle:

VM

 

De la même manière on peut vérifier en Powershell l’effectivité de SR-IOV sur le switch en utilisant la commande:

Get-VMSwitch

PshellSwitch

La case cochée dans l’interface graphique est ici représentée par IovEnabled.

IovSupport et IovSupportReasons permettront de comprendre ce qui se passe réellement : si il y a un problème avec la fonctionnalité et quelle en est l’origine.

 

Vérification sur les machines virtuelles

Une fois tout cela effectué, on peut vérifier le fonctionnalité premièrement dans le gestionnaire de périphériques de la VM avec l’apparition d’une "carte réseau" supplémentaire:

VF

Sur la machine physique, on peut aussi s’assurer du fonctionnement de l’ensemble dans le gestionnaire Hyper-V, dans l’onglet Networking de la VM:

HV-Net

 

Notons que lorsqu’on utilise les fonctions du switch Hyper-V telles que les ACL réseau entre machines virtuelles, cela désactive automatiquement SR-IOV pour passer par le chemin classique des IO réseau.

Dans un prochain article nous étudierons le cas d’une machine qui ne support pas SR-IOV et comment en déterminer les raisons avec Powershell et les journaux d’évènements! 

 

Pour plus d’informations sur SR-IOV :

IT Pro :

Excellent série d’article de John Howard dont je me suis inspiré: http://blogs.technet.com/b/jhoward/archive/2012/03/12/everything-you-wanted-to-know-about-sr-iov-in-hyper-v-part-1.aspx 

A BIOS update may be required for some computers to install the Hyper-V Role and/or start Hyper-V virtual machines – http://support.microsoft.com/kb/2762297

Yellow bang in device manager if SR-IOV NIC is moved to noncapable slot on Windows Server 2012 – http://support.microsoft.com/kb/2756208

Building Your Cloud Infrastructure: Non-Converged Data Center Configuration – http://technet.microsoft.com/en-us/library/hh831559.aspx

 

Architecture :

Overview of Single Root I/O Virtualization (SR-IOV) – http://msdn.microsoft.com/en-us/library/windows/hardware/hh440148(v=vs.85).aspx

Writing SR-IOV PF Miniport Drivers – http://msdn.microsoft.com/en-us/library/windows/hardware/hh440298(v=vs.85).aspx

Writing SR-IOV VF Miniport Drivers – http://msdn.microsoft.com/en-us/library/windows/hardware/hh440299(v=vs.85).aspx

Intel’s Virtualization for Directed I/O, a.k.a IOMMU-  http://software.intel.com/en-us/blogs/2009/03/02/intels-virtualization-for-directed-io-aka-iommu-part-1/

 

Et toujours, si tu veux Windows Server 2012, c’est par ici: https://aka.ms/jeveuxWindows2012

 

Arnaud