Découverte de DirectAccess simplifié avec Windows Server 2012

 

En attendant les TechDays 2013 ou Stanislas et moi vous présenterons les nouveautés de DirectAccess pour Windows Server 2012 et Windows 8 en détails :

 

DirectAccess avec Windows Server 2012 et Windows 8 (SEC305)

Jeudi 14 février 2013 : 11h00-12h00

 

Retrouvez une petite vidéo d’un quart d’heure de découverte des principales nouveautés : Cette session vous montre les améliorations de DirectAccess dans Windows Server 2012 et notamment l’ensemble des fonctionnalités qui vous permettent de déployer un environnement DirectAccess de manière simple et rapide. Après une brève introduction aux concepts, nous mettons en œuvre la technologie dans une démonstration.

 

Pour tester Windows Server 2012, vous pouvez télécharger gratuitement la version d’évaluation disponible sous la forme :
- d'une image ISO : https://aka.ms/jeveuxwindows2012
- d'un fichier VHD avec un système préinstallé : https://aka.ms/jeveuxwindows2012

 

Arnaud Lheureux

Toutes les documentations System Center 2012 SP1

System Center 2012 SP1 est disponible sur le centre de téléchargement Microsoft à partir d’aujourd’hui, n’oubliez pas le package complet des documentations en version Word et PDF pour l’emporter sur vos tablettes !

Enfin et pas des moindres, le guide pour mettre à jour un environnement et la liste des scénarios et des configurations supportées :

Pour télécharger System Center 2012 SP1, rendez vous sur https://aka.ms/jeveuxmoncloudprive

Pour tester Windows Server 2012, vous pouvez télécharger gratuitement la version d’évaluation disponible sous la forme :
– d’une image ISO : https://aka.ms/jeveuxwindows2012
– d’un fichier VHD avec un système préinstallé : https://aka.ms/jeveuxwindows2012

Arnaud Lheureux

SMB 3.0: Introduction au Multicanal

Dans Windows Server 2012, vous aurez remarqué que nous avons massivement investi pour donner au protocole de partage de fichiers que nous utilisons tous les jours une ambition supplémentaire : supporter toutes vos applications les plus exigeantes (hébergement de machines virtuelles, de bases de données SQL Server 2012, etc.)

Pour cela, le multicanal SMB est un aspect fondamental : offrir aux machines la possibilité d’un accès aux partages de fichiers de manière redondée (un peu comme du multipath IO) ou en agrégeant la bande passante des connexions disponibles sur la machine. Concrètement il s’agit donc dans un dialogue SMB d’établir plusieurs sessions pour accélérer les accès aux fichiers distants en accord avec les capacités de la machine cliente et du serveur.

Prérequis

Pour pouvoir mettre en œuvre le multicanal de SMB il vous faudra au moins deux machines Windows Server 2012 et/ou Windows 8 qui ont au choix:

  • Plusieurs cartes réseau
  • Au moins une carte réseau qui supporte RSS (Receive Side Scaling)
  • Au moins une carte réseau qui supporte RDMA (Remote Direct Memory Access)

 

Détection du multicanal SMB

Lorsque le client SMB va initier un dialogue avec un serveur, cela commence comme d’habitude par un établissement de session TCP sur le port 445 suivi d’un SMB Negotiate en SMBv1 (frame 1038 sur la capture ci-dessous). La capacité de SMB 3.0 va être annoncé par le serveur ce qui va faire que le client bascule automatiquement en réponse avec le protocole SMB3.0 (techniquement SMB3.0 n’est que SMB2.2 mais il y a tellement de nouveautés dans le protocole qu’on s’est dit au final qu’un incrément de version était bien mérité)

smbnego

Une fois cette bascule en SMB30 effectuée et la connexion établie (Session Setup complété), si le client supporte le multicanal, il va demander au serveur la liste de ses interfaces et de leurs capacités (en matière de bande passante notamment, mais aussi la possibilité de faire du RDMA – Remote Direct Memory Access). Charge au client de tester les différents chemins possibles pour atteindre les différentes interfaces. Ceci va s’effectuer quelques secondes après la connexion initiale et en fonction de la qualité du lien (latence et taille de la fenêtre TCP).

 

Evaluation des chemins

Un fois les connections établies, la machine va réévaluer le chemin toutes les 10 minutes ou lorsque les évènements suivants se produisent:

  • déconnection d’un câble réseau
  • perte de connexion
  • modification de la configuration SMB multicanal

 

Calculs des canaux à disposition

Pour une relation client/serveur, il y aura toujours une limite maximale de 8 connections concourantes et la création des connections va se baser sur le type de carte réseau impliquée comme suit:

Type d’interface réseau Nombre maximal de connexions établies
Interface standard 1 connexion TCP
Interface supportant RDMA 2 connexions RDMA
Interface supportant RSS 4 connexions TCP

 

Multicanal a une carte

Commençons par un cas simple: le multicanal a une carte. Pourquoi faire ? Avec des cartes réseau a très forte bande passante et faible latence, lorsque l’on copie des gros fichiers tout va bien car on ne perd pas de temps en aller-retour pour effectuer les transactions et l’on remplit aisément la fenêtre TCP. En revanche lorsque l’on copie des petits fichiers, établir plusieurs connections TCP sur les différents cœurs CPU va permettre de mener de front plusieurs transactions et donc de tirer partie au maximum de la bande passante du lien.  Dans l’implémentation actuelle, ceci ne se passe que sur des cartes à minimale 10GbE.

 

Multicanal a plusieurs cartes

L’utilisation du multicanal a plusieurs cartes va se faire dans les conditions énumérées précédemment en considérant l’ensemble des NICs avec des capacités égales. Si l’on a une carte 10GbE et une carte 1GbE, il est plus pertinent de n’utiliser que la carte 10GbE sans chercher à multiplexer avec la carte 1GbE.

 

Multicanal, et teaming

Le multicanal et la mise en équipe des cartes réseaux de Windows Server 2012 sont cumulatif. La mise en équipe de carte réseau permet d’agréger des liens au niveau logique dans NDIS (couches basses) pour n’avoir qu’une seule carte logique exposant plusieurs cartes physiques. Combiner les deux technologies permet de cumuler les bénéfices et de monter encore plus en charge dans la mesure ou une team ne correspondra alors qu’à une interface réseau du point de vue de l’évaluation des chemins par le système.  

 

Commandes utiles

Voici quelques commandes permettant de diagnostiquer le comportement d’un système.

Dans un premier temps il est fondamental de vérifier les capacités RSS avec les commandes suivantes:

  • Get-NetAdapter – affiche la liste des interfaces réseau
  • Get-NetAdapterAdvancedProperty – affiche la liste des interfaces réseau et leurs capacités
  • Get-NetAdapterRSS permet de lister les files RSS associées aux cartes dans le système

 

Il est ensuite intéressant de vérifier les capacités du composant serveur comme du composant client SMB:  

Get-SmbServerConfiguration -  

get-smbserverconfiguration

Get-SmbClientConfiguration

get-smbclientconfiguration

Get-SmbServerNetworkInterface – est sans doute la commande la plus importante car elle permet de lister les interfaces liées au serveur SMB et leurs capacités RSS.

get-smbservernetworkint

Get-SmbClientNetworkInterface – est l’équivalent côté client de la commande précédente :

get-smbclientnetworkint

 

Get-SmbMultichannelConnection – Permet de voir l’état dynamique des connections établies

Get-SmbMultichannelConnectionFL

 

*** SECTION JACKY TUNING ***

Enfin notons que même si les réglages par défaut du groupe produit ont été testés pour être les plus favorables dans les cas communs, il est possible de paramétrer le nombre de connections utilisées avec les commandes suivantes:

Set-SmbClientConfiguration –MaximumConnectionCountPerServer <n>

Set-SmbClientConfiguration -ConnectionCountPerRssNetworkInterface <n>

 

Il est également possible de personnaliser le comportement du multicanal entre plusieurs serveurs pour forcer l’utilisation de certaines cartes et en exclure d’autres. Il faudra alors utiliser les commandes suivantes:

New-SmbMultichannelConstraint -ServerName <monserveur> -InterfaceAlias <macarte1>, <macarte2>

 

 

Exemple avec trace

Etudions un cas simple dans mon environnement de test représenté comme suit:

simplelab

 

La configuration est la même que celle utilisée dans les commandes précédentes. Depuis member01, on va établir une connexion depuis l’Explorateur de fichiers vers member02. En parallèle Microsoft Network Monitor nous permet de suivre ce qui se passe.

1. Première session depuis member 01:

netmon1

Dans les frames 1035 à 1037, on voit l’établissement de session TCP entre member01 par sa première adresse IP (192.168.42.20) et member02, puis l’initiation du dialogue SMB.

 

2. Deuxième, troisième, quatrième sessions:

netmon2

Si on descend dans la trace, on observe que 3 établissements de sessions vont suivre depuis notre même adresse IP source de member01 (les frames 1087-1089, 1092-1094, 1099,1102 et 1103)

 

3. Cinquième, Sixième, Septième et huitième sessions:

netmon3

Un peu plus loin dans la session, on voit que member01 va commencer à établir de nouvelles sessions sur sa deuxième carte réseau avec l’adresse IP source 192.168.42.132, avec le serveur member02. Il s’agit des frames 1260-1262, 1265-1266 et 1268; 1272 et 1274-1275 et la dernière que l’on ne voit pas ce la capture d’écran (mais vous me faites confiance non?)

 

Explications:

Comme on peut le voir dans cette capture on a deux interfaces 10GbE, compatibles RSS sur member01. On sait que chaque interface RSS pourra établir 4 connections TCP et qu’au total une relation client/serveur ne peut avoir que 8 connections TCP simultanées. On a donc bien mis en œuvre le multicanal, sans rien avoir configuré. Dans cette configuration, cela nous permettra d’avoir par exemple de bien meilleures performances sur la copie de fichiers en comparaison avec les versions précédentes de Windows (pour des benchmarks, voir la section référence de cet article).

 

Suivi à la trace

Journaux d’évènements

Les erreurs peuvent être trouvés dans les journaux d’évènements pour la partie cliente et la partie serveur:

  • Application and Services Log, Microsoft, Windows, SMB Client – Operational
  • Application and Services Log, Microsoft, Windows, SMB Server – Operational

 

Compteurs de performance

On notera que Windows Server 2012 sait désormais nous montrer des compteurs de performance propres à chaque partage et non plus seulement de manière globale pour le serveur. On peut ainsi obtenir des informations avancées par chacun des partage en utilisant les compteurs SMB Client Shares ainsi que SMB Server Shares.

 

Traces unifiées

Enfin, quand plus rien ne va, il reste toujours les traces unifiées pour déterminer les raisons d’un comportement suspect :

netsh trace start scenario=filesharing capture=yes

<repro du problème>

netsh trace stop

Et envoi du package a votre ingénieur support préféré !

 

Pour références:

– MSDN Protocol documentation: [MS-SMB2]- Server Message Block (SMB) Protocol Versions 2 and 3

– Windows 8 SMB 2.2 File Sharing Performance – http://msdn.microsoft.com/en-us/library/windows/hardware/hh457617 

– Vidéo : Windows Server 2012 NIC Teaming and Multichannel Solutions – https://channel9.msdn.com/Events/TechEd/NorthAmerica/2012/WSV314 

– The basics of SMB Multichannel, a feature of Windows Server 2012 and SMB 3.0-  http://blogs.technet.com/b/josebda/archive/2012/05/13/the-basics-of-smb-multichannel-a-feature-of-windows-server-2012-and-smb-3-0.aspx

 

Enfin, pour tester Windows Server 2012, vous pouvez télécharger gratuitement la version d’évaluation disponible sous la forme :
– d’une image ISO : https://aka.ms/jeveuxwindows2012
– d’un fichier VHD avec un système préinstallé : https://aka.ms/jeveuxwindows2012

 

Arnaud Lheureux

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