Dans cet article, je vais vous présenter la nouvelle fonctionnalité phare de Windows 7 et Windows Server 2008 R2 : BranchCache.
Cette fonctionnalité est en passe de révolutionner le monde de l’entreprise par sa simplicité et son efficacité. Elle permet aux clients d’une filiale ou d’un site distant de récupérer les fichiers du cache local d’une machine au lieu de récupérer ces mêmes fichiers à partir du serveur distant. A partir du moment où un des clients du site distant a téléchargé le fichier du serveur sur le site principal, ce même client est en capacité de fournir ce fichier aux autres clients de son site distant.
Conséquence ? Une économie concrète sur la bande passante, car souvent les WAN séparant le site principal des sites distants sont souvent munis d’une connexion bas débit. Ce système limite donc l’utilisation de la bande passante et peut permettre d’éviter la saturation du réseau WAN.
Cet article ne détaillera pas BranchCache dans son ensemble mais seulement dans son utilisation avec le produit System Center Configuration Manager 2007.
C’est en effet avec SCCM que cette fonctionnalité prend tout son sens. Les grands comptes sont amenés à utiliser SCCM sur un nombre de sites distants importants.
Il devient donc nécessaire d’utiliser un nombre important de Distribution Point ou Branch Distribution Point pour alimenter les clients sur les sites distants. Il est parfois difficile de mettre en œuvre une architecture complète avec un ensemble de Distribution Point.
De ce fait, certains clients se retrouvent isolés et doivent obtenir les packages (Applications, Mises à jour etc …) à travers une liaison lente. BranchCache répond à cette attente en fournissant un mécanisme de partage inter-clients efficace.
Pour rappel, SCCM est un produit de gestion de parc informatique clients et serveurs et offre les possibilités suivantes :
- Inventaire Matériel
- Inventaire Logiciel
- Déploiement de mises à jour
- Déploiement de systèmes d’exploitation
- Télédistribution d’applications
- Télédistribution d’applications virtuelles
- Gestion de configurations désirées
- Gestion des périphériques mobiles (PDA, smartphones…)
- Gestion hors bande des postes clients
- Gestion des licences avec Asset Intelligence
- Intégration de la fonctionnalité NAP
- Intégration de Forefront Client Security
- Reporting avancé
Pré-requis à la lecture de l’article :
- Notions sur la gestion des postes clients Windows
- Notions sur la gestion des Serveurs Windows
- Notions sur le produit System Center Configuration Manager
Je ne détaillerai à aucun moment l’installation de SCCM dans cet article. C’est pourquoi, je vous conseille de bien connaître le produit avant de lire la suite.
1. BranchCache : Théorie
Cette partie présentera Windows Product Activation dans son fonctionnement et toutes les composantes qui l’en constitue.
1.1 Pré-requis
Comme précisé dans l’introduction, BranchCache est une fonctionnalité présente dans Windows Server 2008 R2 et Windows 7.
Seuls les clients Windows 7 Enterprise ou Ultimate pourront donc utiliser la puissance de cette fonctionnalité et effectuer des échanges.
Il prend tout son sens d’avoir un parc de client principalement constitué d’ordinateurs équipés de Windows 7 Enterprise.
Une chose importante à noter, c’est qu’il ne vous sera pas nécessaire de toucher au serveur SCCM (site primaire).
Seuls les serveurs hébergeant un Distribution Point sont concernés doivent être équipés de Windows Server 2008 R2.
Votre architecture SCCM doit être équipée du Service Pack 2 incluant d’une part la compatibilité pour les systèmes Windows Server 2008 R2 mais aussi la gestion de la fonctionnalité BranchCache.
1.2 Fonctionnement
BranchCache peut fonctionner dans deux modes :
-
Dans le mode Cache hébergé, un serveur BranchCache dédié exécutant Windows Server 2008 R2 héberge les fichiers en cache dans le site distant. Les clients gèrent leur propre cache local de fichiers téléchargés depuis les serveurs de bureau à domicile ou du site distant. Toutefois, grâce au serveur BranchCache dédié du site distant, l’utilisation du réseau étendu est réduite dans ce mode.
-
Dans le mode Cache distribué, le serveur de site distant n’est pas nécessaire, car des copies des fichiers sont mises en cache directement sur les ordinateurs de la filiale et sont détectables par les autres clients Windows 7 le cas échéant.
Dans ce scénario, le serveur BranchCache du siège reçoit la demande de fichier du client, et si le fichier a déjà été demandé par le site distant, il renvoie un ensemble d’instructions de hachage à l’emplacement du fichier sur le réseau distant, soit en général l’ordinateur d’un autre utilisateur.
Les fichiers sont ensuite détectables à cet emplacement. Si la version des fichiers diffère, des hachages distincts sont attribués à ces fichiers pour éviter le téléchargement de fichiers obsolètes depuis la filiale. Si le fichier n’a jamais été demandé ou si l’utilisateur qui l’a demandé n’est pas sur le site, alors la demande est satisfaite en général par le réseau étendu.
BranchCache sert les fichiers uniquement aux utilisateurs qui disposent des autorisations appropriées, et des vérifications sont effectuées pour veiller à la remise du fichier de la version la plus récente.
Dans SCCM, l’intérêt est de limiter au maximum l’utilisation de la bande passante ou la mise en place massive de Distribution Point sur des sites distants ne le justifiant pas du fait de leur taille.
2. BranchCache : Implémentation Server
Sans vous mentir, il va falloir faire quelques manipulations sur les serveurs. Les serveurs concernés seront uniquement les serveurs hébergeant un Distribution Point SCCM. Ces serveurs doivent être hébergés sur Windows Server 2008 R2.
Les Distributions Point peuvent fournir les packages de deux manières :
-
Par BITS (Background Intelligent Transfer Service). BITS est un composant interne au système d’exploitation et permettant le transfert de fichiers de manière asynchrone en utilisant la bande passante lorsqu’elle est inoccupée.
-
Par SMB (Server Message Block)
Nous verrons dans les parties qui suivent comment mettre en place BranchCache pour ces deux protocoles.
Noter que l’utilisation de BITS est conseillée, étant donné sa capacité à gérer le téléchargement et à sauvegarder la bande passante.
2.1 Installation pour BITS
Afin d’installer BranchCache pour l’utilisation de BITS dans SCCM, il vous faut ouvrir le gestionnaire de server (Server Manager) et ouvrir l’assistant d’ajout d’une fonctionnalité.
Une fois l’assistant ouvert, cochez « BranchCache » :
Terminez l’assistant pour installer la fonctionnalité.
Note ! Pour les serveurs Windows Server 2008 R2 en édition Core, vous pouvez utiliser la commande suivante : « ServerManagerCmd.exe –i BranchCache ».
L’installation de BranchCache terminée, vous n’avez pas à configurer autre chose. C’est SCCM qui va se charger de gérer la fonctionnalité.
2.2 Installation pour SMB
Si vous avez décidé de ne pas utiliser la fonctionnalité BITS et que vous souhaitez utiliser SMB pour vos transferts entre les clients et les Distribution Points, vous pouvez activer la fonctionnalité BranchCache pour ce protocole.
Ouvrez le gestionnaire de server (Server Manager) et ouvrez l’assistant d’ajout d’un service de rôle pour le serveur de Fichiers (File Server) :
L’assistant ouvert, cochez « BranchCache for network files » et terminez l’assistant pour procéder à l’installation :
La prochaine consiste à configurer la fonctionnalité BranchCache pour SMB et configurer le partage concerné pour prendre en compte la fonctionnalité.
2.3 Configuration pour SMB
Dans cette partie, nous allons configurer le serveur de fichiers pour utiliser BranchCache. Pour cela, nous allons créer une GPO qui va s’appliquer à tous les Distribution Point.
Ouvrez la console « Group Policy Management Console » et créez une GPO qui ciblera une OU contenant les Distribution Point.
Editez la GPO. Ouvrez l’arborescence : « <NOM_GPO> => Computer Configuration => Policies => Administrative Templates => Network => Lanman Server » :
Une fois l’arborescence ouverte, Editez le paramétrage « Hash Publication for BranchCache ».
Cochez « Activer » (ou Enabled) et sélectionnez le type de publications Hash que vous souhaitez appliquer :
-
« Allow Hash Publication only for shared folder on which BranchCache is enabled » : Autorise la publication des Hash pour les partages de fichiers spécifiquement spécifiés.
Je vous conseille de choisir cette option qui nous permettra de mieux contrôler la fonctionnalité. -
« Allow Hash Publication for all file shares » : Autorise la publication des Hash pour tous les partages de fichiers. Vous pouvez choisir cette option.
Cependant cette option est très permissive et certains partages de fichiers ne sont pas forcément concernés par la fonctionnalité BranchCache. Dans notre cas, seul le partage de fichiers utilisés pour le point de distribution ou le serveur de fichiers est concerné. -
« Disallow hash publication on all file shares » : N’autorise pas la publication des Hash sur les partages de fichiers.
Vous comprenez que nous n’allons pas choisir cette option.
Veillez à ce que la GPO soit correctement attribuée aux Distribution Point et au serveur de fichiers concernés. Veillez aussi à ce que la fonctionnalité « BranchCache for Network Files » soit installée sur les serveurs.
Sur chaque serveur, identifiez le partage de fichiers utilisé par SCCM.
Ouvrez la console « Share and Storage Management » :
Editez les propriétés du partage SMB :
Cliquez sur « Advanced » et sélectionnez l’onglet « Caching ».
Vérifiez que l’option « Only the files and programs that users specify are available offline » et cochez l’option « Enable BranchCache » :
Validez la configuration.
Nous avons fini de configurer la fonctionnalité BranchCache côté serveur pour le protocole SMB et BITS. Vous avez pu constater que l’installation ne demandait pas énormément d’opérations.
Nous allons passer maintenant à la configuration des clients.
3. BranchCache : Implémentation Client
Le premier prérequis est de disposer de client Windows 7 dans leur édition Enterprise ou Ultimate. L’édition Professional n’est pas concernée par la fonctionnalité BranchCache.
Par défaut, le service BranchCache n’est pas activé.
Le but est de configurer BranchCache en mode de distribution.
3.1 Configuration Manuelle
Nous allons voir d’abord la méthode de configuration manuelle.
Pour cela, ouvrez une invite de commande avec les droits d’administrateur et tapez la commande suivante : « Netsh BranchCache set service DISTRIBUTED »
Notez que cette commande créée les règles d’exceptions nécessaires au pare-feu puis configure et démarre le service.
Vérifiez que les clés de registre suivantes sont à 0 (par défaut dans Windows 7) :
-
HKLM \ Software \ Microsoft \ Windows \ Current Version \ BITS \DisableBranchCache
-
HKLM \ Software \ Policies \ Microsoft \ Windows \ BITS \DisableBranchCache
3.2 Configuration par GPO
Il est possible de configurer par GPO l’ensemble des paramétrages relatifs à l’utilisation de BranchCache sur les clients.
Pour cela, créez une GPO qui s’appliquera aux clients concernés.
Editez la GPO et dirigez vous dans l’arborescence : « <NOM_GPO> => Computer Configuration => Policies => Administrative Templates => Network => BranchCache ».
Afin d’activer BranchCache, passez le paramétrage « Turn on BranchCache » à Enabled
Pour configurer BranchCache en mode distribution, activez « Set BranchCache Distributed Cache Mode ».
Pour activer BranchCache lors de l’utilisation de SMB, activez « Configure BranchCache for network files » et entrez une valeur pour le ping (ms) à partir de laquelle les fichiers doivent être stockés en local :
Dans mon cas, j’ai mis 0 car je suis en environnement virtualisé sans latence.
Enfin, vous pouvez configurer l’espace disque (en pourcentage) utilisé pour le cache (par défaut 5%) :
La configuration de BranchCache terminée, nous allons configurer la fonctionnalité BITS pour prendre en compte la fonctionnalité.
Ouvrez l’arborescence : « <NOM_GPO> => Computer Configuration => Policies => Administrative Templates => Network => Background Intelligent Transfer Service (BITS) ».
Désactivez « Do not Allow the BITS client to use Windows Branch Cache » pour s’assurer que BITS utilisera bien BranchCache quand cela est possible.
Activez « Allow BITS Peercaching » pour rendre les fichiers téléchargés par BITS disponibles aux autres clients BranchCache.
Notez qu’il existe beaucoup d’autres paramétrages concernant BITS et BranchCache (comme la taille du cache, ou le vieillissement des fichiers stockés en cache) mais je ne rentrerai pas dans les détails. Vous pouvez trouver ces paramétrages dans la même arborescence.
Une fois la GPO créée, il ne reste simplement qu’à l’associer avec une OU contenant les clients et appliquer la GPO sur ces clients.
3.3 Informations sur le client
Il est possible de vérifier la configuration et l’état du service BranchCache.
Pour cela, vous pouvez utiliser la commande « netsh branchcache show ».
Afin de visualiser l’ensemble de l’état du service tapez : « netsh branchcache show status all » :
On peut voir les informations suivantes :
-
la taille du cache local est configurée à 20% du disque dur.
-
la taille du cache de publication est configurée à 1% du disque dur.
-
L’espace occupé dans chacun des caches
-
L’emplacement de stockage des caches
4. BranchCache : Vérification
Le but de cette partie est de créer une procédure de validation. Pour cela, nous allons créer un package et le déployer sur deux clients Windows 7.
Si tout fonctionne correctement, le premier client devrait le télécharger à partir du Distribution Point bien que le second le récupérera à partir du cache du premier client.
Les pré-requis à la validation :
-
Disposer d’un Distribution Point sous Windows Server 2008 R2 équipé de la fonctionnalité BranchCache
-
Disposer de deux clients Windows 7 Enterprise ou Ultimate équipés du client SCCM.
4.1 Création d'un package d'Application
Afin de vérifier le fonctionnement, créez un package pour une application.
J’ai choisi de créer un package pour installer l’application : Notepad ++.
Note ! Je ne détaillerai pas l’étape de création du package. Sachez tout de même que Notepad++ n’offre pas d’installation Silencieuse. J’ai donc du autoriser l’interaction entre l’installation et l’utilisateur afin que l’utilisateur puisse compléter les assistants d’installation.
Distribuez l’application sur le(s) point(s) de distribution cible(s).
Cliquez droit sur le package fraichement créé, et sélectionnez « Distribute => Software »
L’assistant s’ouvre, passez l’écran de bienvenue.
Sur la page « Distribution Points », vérifiez que le package est distribué correctement sur les points de distribution souhaités :
Sur la page qui suit, cochez « Yes » pour attribuer le programme du package aux clients :
Dans la liste qui suit, sélectionnez le programme à déployer :
Choisissez ensuite d’attribuer le programme à une collection existante contenant des clients de tests ou de créer une nouvelle collection :
Choisissez ensuite un nom d’advertisement :
Passez l’écran suivant excepté si vous souhaitez neutraliser l’héritage des sous collections pour l’avertissement que nous créons :
Sur l’écran de programmation, vous pouvez choisir les options d’expiration :
Enfin sur l’étape « Assign Program », cliquez sur « Yes assign the program » :
4.2 Vérification pour BITS
Dans SCCM, vérifiez que vous avez activé les échanges avec BITS sur chaque Distribution Point. Pour cela, ouvrez la console SCCM puis l’arborescence : « Site Database => Site Management => <SiteCode> - <SiteName> => Site Settings => Site Systems ».
Cliquez sur un Distribution Point concerné par BranchCache, puis ouvrez les propriétés du rôle : « ConfigMgr distribution Point » :
Dans les propriétés (onglet General), vérifiez que la case « Allow clients to transfer content from this distribution point using BITS, http and HTTPS ». Si ce n’est pas le cas cochez la case.
Répétez l’opération pour l’ensemble des points de distribution.
Les vérifications faites, sur le premier client, rechargez la politique d’ordinateur et de l’utilisateur puis attendez la notification de l’advertisement :
Lancez l’advertisement et procédez à l’installation :
Sur le second client Windows 7, rechargez la politique d’ordinateur et de l’utilisateur, puis procédez à l’exécution de l’advertisement comme précédemment.
Sur chaque client, nous allons observer comment BITS a échangé les données.
Pour cela, ouvrez l’observateur d’événements (Event Viewer) puis ouvrez l’arborescence : « Journaux des applications => Microsoft => Windows => Bits Client => Opérationel »
Cherchez le dernier événement de type 60.
Vous pouvez appliquer le filtre suivant :
<QueryList>
<Query Id="0" Path="Microsoft-Windows-Bits-Client/Operational">
<Select Path="Microsoft-Windows-Bits-Client/Operational">*[System[(EventID=60)]] and *[EventData[Data[1]=’name' and Data[2]='ccmdts job']] and *[EventData[Data[1]='url' and Data[2]='<%URL du package%>']]</Select>
</Query>
</QueryList>
Remplacez <%URL du package%> avec l’url du package que vous déployez.
Sur le premier client, on retrouve (en regardant la vue Détails) les informations suivantes :
Le PeerProtocolFlags est 0, ce qui signifie que BranchCache n’a pas été utilisé pour transférer le package.
Sur le second client, cherchez l’événement de type 60.
On retrouve l’url utilisé pour transférer cependant on peut noter les informations suivantes :
-
PeerProtocolFlags est à 1 ce qui signifie que BranchCache a été utilisé pour ce transfert. Le client a donc récupéré le package à partir du premier client.
-
On retrouve une taille équivalente entre les bytes transférés et les bytes transférés à partir d’un Peer (autre client)
La fonctionnalité BranchCache fonctionne à travers SCCM et l’utilisation du protocole BITS.
Conclusion
Nous avons vu la puissance de BranchCache faisant office de système « Peer-to-Peer » entre chaque client. Cette fonctionnalité permet ainsi de limiter l’usage de la bande passante du WAN séparant le site principal du site distant dans le cas de l’utilisation massive d’un même contenu.
BranchCache prend tout son sens avec System Center Configuration Manager puisque les administrateurs systèmes sont amenés à administrer des postes clients dans des sites distants disposant d’une connexion bas-débit.
BranchCache répond donc à la problématique de sauvegarde de la bande passante en permettant la distribution massive de fichiers comme des mises à jour ou des applications de taille conséquente. L’utilisation et la mise en ouvre de Distribution Point ou Branch Distribution Point pour alimenter les sites distants disposant de peu de client devient obsolète.
Windows 7 et sa fonctionnalité BranchCache ainsi que sa simplicité de mise en oeuvre vont surement amener à une démocratisation de ce système en entreprise dans les années avenirs dès lors que Windows 7 aura fait son apparition de manière conséquente.