Le petit câbleur
Optimisation des réseaux étendus (WAN) de bout en bout avec BranchCache
Joseph Davies
Développer une activité dans de nouvelles régions du globe en ouvrant des succursales est une excellente idée d'un point de vue commercial, mais pose souvent des problèmes aux architectes réseau et aux responsables d'implémentation. La connexion de chaque succursale à un site central nécessite une connexion physique ou logique, avec une bande passante généralement beaucoup plus faible que les connexions au réseau local. La faiblesse des bandes passantes associée à la tendance selon laquelle les données de l'entreprise sont de plus en plus centralisées provoquent souvent une congestion des liaisons avec les succursales et aboutissent à des applications peu performantes. En outre, de nombreuses liaisons de réseau étendu (WAN) sont coûteuses et peuvent générer des frais de démarrage et des frais mensuels conséquents.
Il existe de nombreuses techniques d'optimisation de réseau étendu permettant de mieux utiliser une liaison de réseau étendu existante ou d'éviter les coûts associés à l'augmentation de la bande passante de votre liaison de réseau étendu. Certaines nécessitent un équipement supplémentaire. La mise en cache est une technique d'optimisation du réseau étendu majeure. Les données obtenues via la liaison de réseau étendu sont mises en cache au niveau de la succursale. Un ordinateur de la succursale qui a besoin de données déjà utilisées par un autre ordinateur extrait les données du cache d'une succursale au lieu d'utiliser la liaison de réseau étendu.
BranchCache sur Windows 7 et Windows Server 2008 R2 est une implémentation de la technique d'optimisation du réseau étendu par mise en cache qui permet de réduire la charge des liaisons des succursales pour Server Message Block (SMB) 2.0 (trafic de partage de fichier) et Hypertext Transfer Protocol (HTTP) 1.1 (trafic Web). Un déploiement BranchCache comprend des serveurs de contenu dans le bureau central qui exécutent Windows Server 2008 R2, des ordinateurs demandeurs dans la succursale qui exécutent Windows 7 ou Windows Server 2008 R2 et des ordinateurs de mise en cache dans la succursale qui exécutent Windows 7 ou Windows Server 2008 R2.
Les serveurs de contenu fournissent les données demandées et d'autres métadonnées que les ordinateurs de mise en cache utilisent pour identifier les données mises en cache dans la succursale. Les ordinateurs demandeurs demandent des données au serveur de contenu et indiquent qu'ils prennent en charge BranchCache. Les ordinateurs de mise en cache stockent des données d'un serveur de contenu auquel une demande a été faite. Ils sont soit des clients sur Windows 7 ou Windows Server 2008 R2 soit un serveur de cache hébergé sur Windows Server 2008 R2. BranchCache possède deux modes de fonctionnement selon que vous utilisez des clients (mode cache distribué) ou un serveur de cache hébergé (mode cache hébergé) pour stocker les données mises en cache.
Chaque mise en œuvre du cache doit répondre aux questions suivantes :
- Comment le serveur de contenu, les ordinateurs demandeurs et les ordinateurs de mise en cache identifient-ils le contenu mis en cache ?
- Quand les données sont-elles mises en cache dans la succursale ?
- Comment le serveur de contenu et l'ordinateur demandeur identifient-ils que le contenu a changé ?
- Comment l'ordinateur demandeur trouve-t-il le contenu mis en cache dans la succursale ?
- Comment BranchCache empêche-t-il l'accès non autorisé aux données ?
Au fur et à mesure que nous découvrons le fonctionnement de BranchCache, nous reviendrons sur ces questions pour nous assurer qu'elles reçoivent une réponse.
Fonctionnement de BranchCache et optimisation des réseaux étendus
Le fonctionnement élémentaire de BranchCache tient en quatre étapes.
Étape 1 : Un ordinateur demandeur de la succursale demande un fichier à un serveur de contenu du bureau central. Le serveur de contenu dispose de métadonnées, calculées et stockées, associées au fichier. L'ordinateur demandeur s'étant identifié comme compatible avec BranchCache, le serveur de contenu lui envoie les métadonnées associées au fichier. L'ordinateur demandeur recherche le fichier sur un autre ordinateur de mise en cache de la succursale en utilisant les métadonnées du fichier comme moyen d'identification. Aucun autre ordinateur de mise en cache de la succursale ne disposant du fichier, l'ordinateur demandeur demande le fichier au serveur de contenu.
Étape 2 : L'ordinateur demandeur met en cache le fichier et ses métadonnées associées dans la succursale, soit sur lui-même (mode cache distribué) soit sur un serveur de cache hébergé (mode cache hébergé).
Étape 3 : Un deuxième ordinateur demandeur de la même succursale tente de télécharger le même fichier à partir du serveur de contenu du bureau central. Le serveur de contenu répond avec les métadonnées du contenu.
Étape 4 : Le deuxième ordinateur demandeur utilise les métadonnées du contenu pour télécharger le document à partir d'un client ou d'un serveur de cache hébergé de la succursale. La Figure 1 illustre ces étapes élémentaires pour le mode cache distribué.
Figure 1 Fonctionnement élémentaire de BranchCache pour le mode cache distribué
Lorsque les données sont détectées dans la succursale, les seules informations qui transitent par la liaison de réseau étendu sont les métadonnées. Les besoins en bande passante sont réduits jusqu'à 2 000 fois ; les métadonnées peuvent être jusqu'à 2 000 fois plus petites que les données associées. Cependant, cela n'est valable que pour les fichiers demandés plusieurs fois et pour ceux de plus de 64 Ko.
Après ces quelques éclaircissements sur le fonctionnement de BranchCache, revenons aux questions essentielles concernant la mise en cache et à leurs réponses. La réponse à la question « Comment le serveur de contenu, les ordinateurs demandeurs et les ordinateurs de mise en cache identifient-ils le contenu mis en cache ? » est que BranchCache utilise les métadonnées calculées par le serveur de contenu. Ces métadonnées contiennent des hachages de segments et de blocs calculés par le serveur de contenu à l'aide de l'algorithme de hachage Secure Hash Algorithm (SHA)-256.
La réponse à la question « Quand les données sont-elles mises en cache dans la succursale ? » est que BranchCache met en cache les données dans la succursale lorsqu'un ordinateur demandeur compatible BranchCache et actif obtient des données SMB 2.0 ou HTTP 1.1 pour un fichier de plus de 64 Ko à partir d'un serveur de contenu compatible BranchCache et actif.
La réponse à la question « Comment le serveur de contenu et l'ordinateur demandeur identifient-ils que le contenu a changé? » est que, lorsqu'un ordinateur demandeur cherche à obtenir des données, le serveur de contenu envoie les nouveaux hachages. Par exemple, si un document Microsoft Word a été modifié, le serveur de contenu calcule de nouveaux hachages de blocs et de segments et envoie les nouvelles métadonnées de l'intégralité du fichier à l'ordinateur demandeur.
La réponse à la question « Comment l'ordinateur demandeur trouve-t-il le contenu mis en cache dans la succursale ? » est que l'ordinateur demandeur envoie une demande concernant les métadonnées du fichier directement à un ordinateur de cache hébergé configuré (pour le mode cache hébergé) ou utilise le protocole multidiffusion Web Services-Discovery (WS-Discovery) pour découvrir l'ordinateur client qui dispose des données mises en cache, puis envoie une demande pour les données (pour le mode cache distribué).
Dans notre exemple de document Word modifié, un ordinateur demandeur demande l'intégralité du fichier au serveur de contenu, qui répond avec les métadonnées contenant les hachages de blocs et de segments de l'intégralité du fichier. Comme seuls des hachages de blocs et de segments spécifiques ont changé, l'ordinateur demandeur peut obtenir les blocs non modifiés d'un ordinateur de mise en cache de la succursale et les blocs modifiés du serveur de contenu sur la liaison de réseau étendu. Dans de nombreux cas, cependant, un changement dans le fichier modifie tous les blocs et le serveur de contenu envoie la totalité du fichier par liaison de réseau étendu.
Sécurité des opérations de BranchCache
Il est plus difficile de répondre à la dernière question « Comment BranchCache empêche-t-il l'accès non autorisé aux données ? », car la mise en œuvre du cache ne doit pas permettre aux utilisateurs de contourner la sécurité qui existe en l'absence de cache. Ces éléments de sécurité incluent l'authentification de l'utilisateur ou de l'ordinateur demandeur, l'autorisation accordée à l'ordinateur ou à l'utilisateur pour accéder aux données demandées et la confidentialité des données sur le réseau.
Lorsqu'un client demande des données sur le serveur de contenu, ce dernier ne fournit pas les métadonnées ni les données tant que les autorisations de l'utilisateur ou de l'ordinateur ne sont pas vérifiées et que l'accès aux données n'est pas autorisé. Les métadonnées sont constituées des hachages de blocs et de segments et d'une clé de segment privée pour chaque segment. Le serveur de contenu calcule la clé de segment à partir du hachage de segments et d'une clé secrète connue uniquement du serveur de contenu. Les métadonnées sont envoyées comme les données. Par exemple, si le contenu d'un fichier est envoyé chiffré à l'ordinateur demandeur, les métadonnées sont également envoyées chiffrées.
À partir des métadonnées, l'ordinateur demandeur calcule une clé de découverte de segment que les ordinateurs demandeurs et les ordinateurs de mise en cache utilisent pour identifier le segment. En mode cache hébergé, l'ordinateur demandeur envoie la clé de découverte dans une demande au serveur de cache hébergé. En mode cache distribué, l'ordinateur demandeur envoie la clé de découverte dans le message de multidiffusion du sous-réseau local. Lorsque l'ordinateur de mise en cache reçoit la demande avec la clé de découverte, il cherche le hachage de segments correspondant et répond à l'ordinateur demandeur avec la disponibilité des blocs demandés dans ce segment.
L'ordinateur demandeur demande alors les blocs nécessaires pour ce segment à l'ordinateur de mise en cache. Pour éviter le détournement des données envoyées sur le réseau de la succursale, l'ordinateur demandeur et l'ordinateur de mise en cache calculent la même clé de chiffrement basée sur la clé de segment. L'ordinateur de mise en cache envoie les blocs chiffrés à l'ordinateur demandeur, qui les déchiffre. Par défaut, BranchCache utilise l'algorithme Advanced Encryption Standard (AES) avec une clé de 128 bits.
Après le déchiffrement de chaque bloc, l'ordinateur demandeur calcule son propre hachage de blocs et vérifie qu'il correspond à celui des métadonnées. Le cas échéant, les données sont reçues de l'ordinateur de mise en cache et le bloc de données est renvoyé à l'application.
Résumé
BranchCache sur Windows 7 et Windows Server 2008 R2 fournit à bas prix une optimisation des réseaux étendus (WAN) de bout en bout qui préserve les services de sécurité déjà présents sur votre réseau. BranchCache participe à la réduction de la charge sur les liaisons de réseau étendu à bas débit coûteuses pour le trafic SMB 2.0 et HTTP 1.1.
Encadré : Maintien du statu quo de la sécurité
BranchCache utilise le chiffrement entre l'ordinateur demandeur et l'ordinateur de mise en cache pour maintenir le statu quo de la sécurité sur votre réseau. Si aucun chiffrement de données n'est envoyé à partir du serveur de contenu sur l'ordinateur demandeur, BranchCache n'offre aucune protection supplémentaire lorsque les données mises en cache sont envoyées sur le réseau de la succursale. Cependant, si les données envoyées à l'ordinateur demandeur à partir du serveur de contenu sont chiffrées, BranchCache maintient la confidentialité lorsque les données mises en cache sont envoyées sur le réseau de la succursale.
Les demandes de données envoyées sous forme de texte en clair peuvent être interceptées par des utilisateurs malveillants au niveau de la succursale. BranchCache utilise la même méthode pour envoyer les métadonnées et les données sous forme de données non mises en cache et, au niveau de la succursale, un utilisateur malveillant peut intercepter les métadonnées d'un segment non chiffré, calculer la clé de découverte et la clé de chiffrement à partir des métadonnées, puis l'utiliser pour déchiffrer les blocs de données lorsqu'ils sont envoyés d'un ordinateur de mise en cache vers un ordinateur demandeur. Il ne s'agit cependant pas d'un problème de sécurité supplémentaire, car les données d'origine ont été envoyées sous forme de texte en clair et, en l'absence de BranchCache, seraient envoyées par le serveur au bureau central chaque fois qu'un client de la succursale les demande. Lorsque du texte en clair est utilisé, BranchCache n'offre aucun service de sécurité supplémentaire pour les données mises en cache envoyées sur le réseau de la succursale.
Lorsque le serveur de contenu envoie des données aux ordinateurs demandeurs en utilisant un canal chiffré, par exemple, en utilisant le protocole de sécurité Internet Protocol (IPsec) ou HTTPS, le chiffrement supplémentaire exécuté entre l'ordinateur de mise en cache et l'ordinateur demandeur assure qu'aucun utilisateur malveillant au niveau de la succursale ne peut interpréter les données mises en cache. Comme le serveur de contenu envoie les métadonnées en utilisant le même canal de chiffrement que pour les données du serveur de contenu, un utilisateur malveillant au niveau de la succursale doit d'abord déchiffrer les métadonnées d'un segment avant de pouvoir calculer la clé de découverte et la clé de chiffrement et déchiffrer les blocs de données. Si les utilisateurs malveillants n'arrivent pas à déchiffrer les métadonnées, ils ne peuvent pas déchiffrer les données d'origine.
Ainsi, pour les canaux de données chiffrées entre le serveur de contenu et l'ordinateur demandeur, l'utilisation d'une clé de chiffrement dérivée de la clé de segment protège les données mises en cache de deux façons. D'abord, seuls les utilisateurs ou les ordinateurs authentifiés et autorisés reçoivent les métadonnées, qui incluent la clé de segment. Ensuite, comme la clé de segment est envoyée en utilisant un canal chiffré, un utilisateur malveillant ne peut trouver ni la clé de segment ni la clé de chiffrement correspondante et ne peut pas non plus déchiffrer les données mises en cache lorsqu'elles sont envoyées sur le réseau de la succursale.
Joseph Davies est l'un des principaux rédacteurs techniques de l'équipe de rédaction spécialisée dans les réseaux Windows chez Microsoft. Il est l'auteur ou le co-auteur de plusieurs ouvrages publiés par Microsoft Press, parmi lesquels « Windows Server 2008 Networking and Network Access Protection (NAP) », « Understanding IPv6, Deuxième édition » et « Windows Server 2008 TCP/IP Protocols and Services ».
Contenu associé