BranchCache : Cache de ressources partagées

I. Présentation

Depuis Windows 2008 R2, Windows intègre une nouvelle fonctionnalité nommée "BranchCache". Elle permet d'optimiser l'accès aux ressources partagées hébergées sur des serveurs de fichiers, voir même des serveurs Web internes de type SharePoint, pour les clients qui se situent sur des sites distants.

La logique de fonctionnement repose sur la mise en cache des éléments partagés. En fait, imaginez une entreprise ayant un site principal et un site annexe, sur le site principal se trouve un serveur de fichiers qui partage les données à l'intégralité des collaborateurs (y compris ceux sur le site annexe). A chaque fois qu'un client du site annexe accède à un fichier celui-ci doit être téléchargé par la liaison WAN inter-site, potentiellement une liaison lente (comparée à la vitesse d'une liaison LAN).

Sur le long terme, notamment si les fichiers sont conséquents et si nombreux sont les collaborateurs sur le site annexe, une telle pratique peut devenir problématique.

C'est là qu'intervient le BranchCache...

Lors de la récupération d’un document, ce dernier ne passe qu’une seule fois par la liaison lente. Une fois le fichier arrivé sur le site distant, il sera mit en cache sur le site distant (nous verrons comment où plus tard). Pour tous les autres clients de ce site, quand ils voudront accéder à ce même document, ils récupérerons le document depuis l'endroit où il est stocké en cache. Cependant, avant que le fichier soit transmis, le gestionnaire du cache effectue une vérification des droits et de la non-modification du document sur le serveur principal où sont centralisées les données (sur le site principal).

Avec BranchCache, l’économie est réalisée sur la bande passante de la liaison, mais aussi sur les temps d’accès aux documents puisque l'on se rapproche très fortement des performances d'un accès local.

II. Mise en cache des données

La mise en cache des données peut être effectuée de deux façons :

- Un serveur stocke et distribue le cache : Les clients récupérerons les données depuis ce serveur situé sur le site annexe afin de bénéficier des avantages du cache. Ce mode est conseillé et peut être réalisé facilement si vous disposez d'un serveur sur place. De plus, le serveur reste généralement en fonctionnement en continue, ce qui n'est pas forcément le cas des machines clientes (concernées par la deuxième manière de mise en cache). Ce mode requiert l'utilisation d'un certificat SSL afin de sécuriser les échanges clients/serveurs. On parlera de cache hébergé.

BranchCache - Cache hébergé

- Distribution du cache entre les clients : Chaque poste client du LAN peut stocker des données en cache, ensuite, les clients se partageront les fichiers en cache entre eux. Ils s'occupent de distribuer le cache et en même temps de récupérer les fichiers en cache qu'ils ne possèdent pas sur les autres postes clients. On parlera de cache distribué.

Le serveur de fichiers du site principal reçoit la demande de fichier de la part du client, et si le fichier a déjà été demandé par un client du site annexe, le serveur de fichiers va envoyer un ensemble d'instructions de hachage aux clients afin de lui indiquer sur quel poste client il doit récupérer le fichier.

Par contre, si une différence est détectée entre la version du serveur de fichiers et la version en cache, des hachages différents seront attribués à ses deux fichiers afin d'éviter l'utilisation de fichiers obsolètes.

BranchCache - Cache distribué

Dans ce tutoriel, le serveur de fichiers principal se nomme "SRV01" et le serveur de cache se nomme "SRV02". Le tout sous Window Server 2012 R2.

III. Mise en place du serveur BranchCache

Nous allons installer la fonctionnalité BranchCache dans un premier temps, puis, nous configurerons BranchCache dans les stratégies de groupe pour ce serveur, dans un second temps.

A. Installation des fonctionnalités

L'installation du serveur BranchCache doit être effectuée sur tous les serveurs qui hébergent des données dans un premier temps, pour ma part il s'agit uniquement du serveur SRV01. En plus d'être un serveur de fichiers classique, il va devenir un serveur BranchCache.

Pour gagner du temps, nous utiliserons une commande PowerShell :

Install-WindowsFeature -Name BranchCache,FS-BranchCache

branchcache3

Cette commande installe "BranchCache pour fichiers réseau" qui peut être également installée via la procédure habituelle en interface graphique. Elle se trouvera alors sous "Services de fichiers et de stockage".

Il n'existe pas d'outil d'administration RSAT pour BranchCache, la configuration doit être effectué via les stratégies de groupe et les paramètres des données partagées.

B. Configuration de BranchCache

La configuration s'effectue par l'intermédiaire des stratégies de groupe, local ou gérée au niveau de domaine. La seconde option est recommandée surtout si vous devez configurer plusieurs serveurs.

L'objectif de la configuration est d'activer sur le serveur la publication de hachage concernant les données partagées. Ces résultats de hachage seront utilisées par la suite dans le processus BranchCache, dans le but d'identifier de façon unique un document et de détecter les modifications effectuées sur un document. Le moindre changement au sein d'un document changera le résultat de la fonction de hachage.

Dans la console de gestion de stratégie de groupe, créez une nouvelle stratégie ou ajoutez ce paramétrage à une GPO existante qui s'applique déjà au(x) serveur(s) concerné(s) par le BranchCache. Parcourez l'arborescence comme ceci :

Configuration ordinateur, Stratégie, Modèles d'administration, Réseau, Serveur Lanman

Le paramètre qui nous intéresses se nomme "Publication de hachages pour BranchCache", activez-le et précisez une action de la publication de hachages. Vous avez le choix entre activer la publication de hachages pour tous les dossiers partagés, l'activer uniquement pour ceux dans lesquels BranchCache est activé, ou alors ne pas autoriser la publication de hachage sur les partages.

Nous choisirons l'option "Autoriser la publication de hachages uniquement pour les dossiers partagés dans lesquels BranchCache est activé".

Publication de hachages pour BranchCache

Il suffit de valider la configuration du paramètre. Ensuite, pensez à actualiser la stratégie de groupe sur le(s) serveur(s).

C. Activer BranchCache sur un partage

Grâce à la stratégie de groupe, nous avons autorisé la publication de hachages pour les dossiers partagés où BranchCache est actif. Il est donc nécessaire d'activer BranchCache sur le partage concerné. Effectuez un clic droit sur le dossier partagé concerné puis "Propriétés", onglet "Partage" et "Partage avancé".

Cliquez sur le bouton "Mise en cache" et dans les "Paramètres hors connexion", cochez "Seuls les fichiers et les programmes spécifiés par les utilisateur sont disponibles hors connexion" et cochez la case enfant "Activer BranchCache".

branchcache5

La configuration côté serveur est désormais terminée, passons à la mise en place de la stratégie des postes clients.

IV. Configuration des clients BranchCache

Sur les ordinateurs clients, BranchCache est désactivé par défaut. Ce qui est logique afin d'éviter de faire tourner un service inutilement.

Deux méthodes sont possibles pour l'activation : Via les stratégies de groupe ou via une commande netsh. La première solution sera nettement plus intéressant dans le cas de nombreux postes et de l'utilisation d'un domaine Microsoft. Je vous donnerais quand même les commandes netsh, cela peut toujours être utile.

La configuration des clients requiert la modification de plusieurs paramètres.

A. Activer BranchCache

Ouvrez la console de gestion des stratégies de groupe, créez/éditez une stratégie de groupe et parcourez là comme ceci :

Configuration Ordinateur, Stratégies, Modèles d'administration, Réseau, BranchCache

Activez le paramètre "Activer BranchCache" disponible dans la liste du volet de droite.

branchcache6

Note : L'ensemble des paramètres dédiés à la configuration BranchCache des clients se trouve à cet endroit.

B. Définir le mode BranchCache

Il va maintenant falloir indiquer si l'on souhaite configurer les clients en mode distribué ou en mode hébergé. Pour ma part, j'opte pour le mode hébergé. Toujours au même endroit dans la GPO... vous trouverez deux paramètres (un pour chaque mode). Activez celui qui correspond au mode désiré.

- Définir le mode de cache distribué de BranchCache

- Définir le mode de cache hébergé de BranchCache : Ce paramètre nécessite également que l'on précise le serveur de cache.

branchcache8bis

C. BranchCache pour les fichiers réseau (SMB)

Il est nécessaire de configurer également le BranchCache pour les fichiers réseau afin que cela fonctionne pour le protocole SMB. Vous devrez également préciser une valeur de temps de réponse maximale aller-retour autorisée avant de déclencher la mise en cache.

Activez le paramètre "Configurer BranchCache pour les fichiers réseau". La valeur de latence par défaut est 80 ms, si vous indiquez 0 la mise en cache sera effectuée pour tous les fichiers.

branchcache8

D. L'activation de BranchCache via netsh

La commande netsh à exécuter en tant qu'administrateur est la suivante :

- Pour le mode distribué :

netsh branchcache set service mode=DISTRIBUTED

- Pour le mode hébergé :

netsh branchcache set service mode=HOSTEDCLIENT LOCATION=<nom-serveur-cache>

 V. Configurer le serveur de cache hébergé

Nous avons configuré le serveur de fichiers, mit en place la stratégie de groupe pour la configuration des postes clients, il reste la configuration du serveur de cache hébergé, situé sur le site distant/annexe.

A. Installer les fonctionnalités

On commence par installer la fonctionnalité BranchCache et celle dédiée aux fichiers pour le SMB :

Install-WindowsFeature -Name BranchCache,FS-BranchCache

Une fois l'installation terminée, vous pouvez passer à l'étape suivante.

B. Créer un certificat

La création d'un certificat étant quelque chose de différent de la mise en place de BranchCache, je vous invite à consulter ce tutoriel TechNet concernant la création : TechNet Microsoft

La procédure s'appuie sur IIS pour la génération ce qui est logique comme BranchCache fonctionne aussi pour le HTTP.

Note : En mode distribué il n'est pas nécessaire de créer un certificat SSL comme le cache est distribué entre les différents clients. Le fonctionnement est différent.

Une fois le certificat créé, ouvrez une console MMC sur le serveur de cache et ajoutez le composant "Certificat" à partir du menu "Fichier" et "Ajouter/supprimer un composant logiciel enfichable". Lors de l'ajout du composant sélectionnez "Un compte d'ordinateur" car le certificat doit être ajouté au niveau du compte ordinateur directement.

branchcache10

Ensuite, sous "Certificats (Ordinateur local)" et "Personnel", faites un clic droit "Toutes les tâches" et "Importer" dans le but d'importer le certificat fraîchement créé.

Lorsque l'importation est terminée, double-cliquez sur le certificat pour afficher ses propriétés. Accédez au volet "Détails" puis sélectionnez le champ "Empreinte numérique". Copiez la valeur de ce champ, elle sera utile dans la prochaine étape.

C. Lier le certificat au serveur BranchCache

Désormais, il faut lier le certificat au service BranchCache. Pour cela, nous allons utiliser la commande netsh. Très utilisée cette commande netsh dans le cas d'une mise en place de BranchCache.

Ouvrez une invite de commande en tant qu'administrateur sur le serveur (qui héberge le cache, qui contient le certificat) et saisissez la commande suivante :

NETSH HTTP ADD SSLCERT IPPORT=0.0.0.0:443 CERTHASH=<valeur-empreinte-numérique> APPID={d673f5ee-a714-454d-8de2-492e4c1bd8f8}

Dans la commande, remplacez uniquement "<valeur-empreinte-numérique>" par la valeur copiée précédemment.

D. Modifier la taille allouée pour le cache

Pour changer la taille allouée au cache vous pouvez utiliser une ligne de commande ou les GPO. Si l'on utilise la ligne de commande cela voici ce que l'on utilisera (exemple pour 40%) :

netsh branchcache set cachesize size=40 percent=TRUE

Il est à noter que par défaut 5% de l'espace disque est alloué pour le cache.

Si vous souhaitez le faire directement via GPO - ce qui peut être intéressant si plusieurs serveurs sont à configurer - vous devez configurer le paramètre "Définir le pourcentage d'espace disque utilisé pour la mémoire cache de l'ordinateur client" qui se trouve sous :

Configuration Ordinateur, Stratégies, Modèles d'administration, Réseau, BranchCache

branchcache11

VI. Paramètres supplémentaires avec Windows 8 - 8.1

L'arrivée de Windows 8 et plus récemment Windows 8.1 a amenée quelques paramètres supplémentaires dans les GPO concernant BranchCache. Vous les trouverez au même endroit que les autres paramètres.

Voici plus de détails :

- Activer la découverte automatique du cache hébergé par le point de connexion de service : Permet au client de rechercher directement le serveur hébergé correspondant au site auquel il est connecté, cela vous évitera une configuration site par site.

- Définir l’âge des segments dans le cache de données : Définit la durée de conservation des éléments du cache qui sont considérés comme valide. La valeur par défaut est de 28 jours.

- Configurer la prise en charge de la version BranchCache du client : Permet une rétrocompatibilité entre le client Windows 8/8.1 et les anciennes versions de BranchCache. Il est fortement conseillé d'utiliser ce mode si vous utilisez différentes versions d'OS afin d'assurer la compatibilité.

VII. Visualiser l'état de BranchCache

Deux commandes basées sur netsh sont utiles pour suivre facilement l'état de BranchCache.

- État général de BranchCache

netsh branchcache show status

netsh branchcache
- État du cache BranchCache

netsh branchcache show localcache

Vous remarquerez que l'emplacement du cache est également indiqué (copie d'écran ci-dessus).

Ce tutoriel touche à sa fin, si vous avez apprécié la lecture de cet article, merci de le partager sur les réseaux sociaux.

Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Partager sur Google+ Envoyer par mail

Florian BURNEL

Ingénieur système et réseau, cofondateur d'IT-Connect et Microsoft MVP "Cloud and Datacenter Management". Je souhaite partager mon expérience et mes découvertes au travers de mes articles. Généraliste avec une attirance particulière pour les solutions Microsoft et le scripting. Bonne lecture.

Nombre de posts de cet auteur : 5500.Voir tous les posts

5 thoughts on “BranchCache : Cache de ressources partagées

  • bonjour

    merci pour toutes ces explications
    il y a juste quelque chose que j’ai du mal a comprendre.
    comment sait on si on doit faire en mode distribué ou en mode hebergé du coup? lequel est le plus rapide?

    merci a vous,
    Cordialement,
    Maryse

    Répondre
  • bonjour,

    Merci pour le tuto.
    J’aimerais savoir si il y a des prérequis sur la taille du disque dur du cache pour un serveur de cache hébergé.

    Exemple si on a un serveur de fichier de 6 To est ce qu il faut un serveur de cache de 6To?
    Est ce qu il y a une règle de ratio?

    Merci d’avance de votre réponse.
    Yannick

    Répondre
  • Je suis technicien support niv 1. Je suis confronte a un probleme, la mise a jour d’un pilote pour un scanner.
    Le mise a jour ne fonctionne pas, mais j’ai trouve un article qui m’a permis de trouver une solution temporaire.
    La desacrtivation du Brachcache dans les services ne fonctionne pas. J’ai fait un changement dans regedit pour PeerDistSvc qui n’est pas recommande, de mettre la valeur a 4 (deactivate).
    Y a t’il un moyent pour faire ma mise a jour de facon securitaire pour le systeme.
    J’ai fait ce changement sur une machine de test.

    Répondre
  • Bonjour,

    Bon tutoriel mais je remarque qu’une information importante à l’utilisation de brandcache n’est pas indiqué.

    Le client BrandCache SMB/HTTP n’est disponible que sur les versions Entreprises et Éducation de Windows. La version Pro est quant à elle compatible avec BITS donc WSUS pour les mises à jour.

    Répondre

Répondre à baar Annuler la réponse

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.