ADC

Configuration HTTP/2

Remarque : La fonctionnalité HTTP/2 est prise en charge sur les modèles Citrix ADC MPX, VPX et SDX. Dans une appliance Citrix ADC VPX, la fonctionnalité HTTP/2 est prise en charge à partir de Citrix ADC version 11.0.

Le problème des performances des applications Web est directement lié à la tendance à l’augmentation de la taille des pages et du nombre d’objets sur les pages Web. HTTP/1.1 a été développé pour prendre en charge des pages Web plus petites, des connexions Internet plus lentes et un matériel serveur plus limité que ce qui est courant aujourd’hui. Il n’est pas adapté aux nouvelles technologies telles que JavaScript et les feuilles de style en cascade (CSS) ou aux nouveaux types de médias tels que les vidéos Flash et les images riches en graphiques. En effet, il ne peut demander qu’une seule ressource par connexion au serveur. Cette limitation augmente considérablement le nombre d’allers-retours, ce qui allonge le rendu des pages et réduit les performances du réseau.

Le protocole HTTP/2 résout ces limitations en permettant la communication avec moins de données transmises sur le réseau et en offrant la possibilité d’envoyer plusieurs requêtes et réponses via une seule connexion. HTTP/2 résout les principales limitations de HTTP/1.1 en utilisant plus efficacement les connexions réseau sous-jacentes. Il modifie la façon dont les demandes et les réponses circulent sur le réseau.

HTTP/2 est un protocole binaire. Il est plus efficace d’analyser, plus compact sur le fil, et surtout, il est moins sujet aux erreurs, par rapport aux protocoles textuels comme HTTP/1.1. Le protocole HTTP/2 utilise une couche de cadrage binaire qui définit le type de trame et la façon dont les messages HTTP sont encapsulés et transférés entre le client et le serveur. La fonctionnalité HTTP/2 prend en charge l’utilisation de la méthode CONNECT pour établir une connexion tunnel via un seul flux HTTP/2 vers un hôte distant.

Le protocole HTTP/2 inclut de nombreuses modifications améliorant les performances qui améliorent considérablement les performances, en particulier pour les clients se connectant via un réseau mobile.

Le tableau suivant répertorie les principales améliorations de HTTP/2 par rapport à HTTP/1.1 :

Fonctionnalités HTTP/2 Description
Compression d’en-tête Les en-têtes HTTP contiennent beaucoup d’informations répétitives et consomment donc une bande passante inutile pendant la transmission des données. HTTP/2 réduit les besoins en bande passante en comprimant l’en-tête et en minimisant la nécessité de transporter les en-têtes HTTP à chaque requête et réponse.
Multiplexage de connexion La latence peut avoir un impact considérable sur les temps de chargement des pages et sur l’expérience de l’utilisateur final. Le multiplexage des connexions résout ce problème en envoyant plusieurs demandes et réponses via une seule connexion.
Serveur Push Server Push permet au serveur de diffuser du contenu de manière proactive vers le navigateur du client, ce qui évite les retards aller-retour. Cette fonctionnalité met en cache les réponses dont le client pense avoir besoin, réduit le nombre d’allers-retours et améliore le temps de rendu de la page. Important : L’appliance Citrix ADC ne prend pas en charge la fonctionnalité de diffusion du serveur.
Pas de blocage de la tête de ligne Sous HTTP 1.1, les navigateurs peuvent télécharger une ressource à la fois par connexion. Lorsqu’un navigateur doit télécharger une ressource volumineuse, il bloque le téléchargement de toutes les autres ressources jusqu’à ce que le premier téléchargement soit terminé. HTTP/2 résout ce problème avec une approche de multiplexage. Il permet au navigateur client de télécharger d’autres composants Web en parallèle sur la même connexion et de les afficher dès qu’ils sont disponibles.
Priorisation des demandes Toutes les ressources n’ont pas la même priorité lorsque le navigateur affiche une page Web. Pour accélérer le temps de chargement, tous les navigateurs modernes hiérarchisent les demandes par type de ressource, leur emplacement sur la page et même par priorité acquise lors des visites précédentes. Avec HTTP/1.1, le navigateur a une capacité limitée d’utiliser les données de priorité, car ce protocole ne prend pas en charge le multiplexage et il n’y a aucun moyen de communiquer la hiérarchisation des requêtes par le serveur. Il en résulte une latence réseau inutile. HTTP/2 résout ce problème en permettant au navigateur d’envoyer toutes les requêtes. Le navigateur peut communiquer ses préférences de priorisation des flux via des dépendances et des pondérations de flux, ce qui permet aux serveurs d’optimiser la livraison des réponses. Important : L’appliance Citrix ADC ne prend pas en charge la fonctionnalité de priorisation des demandes.

Fonctionnement de HTTP/2

Une appliance Citrix ADC prend en charge HTTP/2 côté client ainsi que côté serveur. Côté client, l’appliance Citrix ADC agit comme un serveur qui héberge un serveur virtuel HTTP/HTTPS pour HTTP/2. Côté back-end, Citrix ADC agit en tant que client pour les serveurs liés au serveur virtuel.

Par conséquent, l’appliance Citrix ADC maintient des connexions distinctes côté client et côté serveur. L’appliance Citrix ADC possède des configurations HTTP/2 distinctes pour le côté client et le côté serveur.

Configuration de l’équilibrage de charge HTTP/2 pour HTTPS (SSL)

Pour une configuration d’équilibrage de charge HTTPS, l’appliance Citrix ADC utilise l’extension TLS ALPN (RFC 7301) pour déterminer si le client/serveur prend en charge HTTP/2. Si tel est le cas, la solution matérielle-logicielle choisit HTTP/2 comme protocole de couche applicative pour transmettre les données (comme décrit dans la RFC 7540 - Section 3.3) côté client/serveur. La solution matérielle-logicielle utilise l’ordre de préférence suivant lorsqu’elle choisit le protocole de la couche application via l’extension TLS ALPN :

  • HTTP/2 (s’il est activé dans le profil HTTP)
  • SPDY (s’il est activé dans le profil HTTP)
  • HTTP/1.1

Configuration de l’équilibrage de charge HTTP/2 pour HTTP

Pour une configuration d’équilibrage de charge HTTP, l’appliance Citrix ADC utilise l’une des méthodes suivantes pour commencer à communiquer avec le client/serveur à l’aide de HTTP/2.

Remarque :

Dans les descriptions de méthodes suivantes, le client et le serveur sont des termes généraux pour une connexion HTTP/2. Par exemple, pour une configuration d’équilibrage de charge d’une appliance Citrix ADC utilisant HTTP/2, l’appliance Citrix ADC agit en tant que serveur côté client et en tant que client côté serveur.

  • Mise àniveau HTTP/2. Un client envoie une requête HTTP/1.1 à un serveur. La demande inclut un en-tête de mise à niveau, qui demande au serveur de mettre à niveau la connexion vers HTTP/2. Si le serveur prend en charge HTTP/2, il accepte la demande de mise à niveau et la notifie dans sa réponse. Le client et le serveur commencent à communiquer via HTTP/2 une fois que le client a reçu la réponse de confirmation de mise à niveau.

  • HTTP/2 direct. Un client commence directement à communiquer avec un serveur en HTTP/2 au lieu d’utiliser la méthode de mise à niveau HTTP/2. Si le serveur ne prend pas en charge HTTP/2 ou n’est pas configuré pour accepter directement les requêtes HTTP/2, il supprime les paquets HTTP/2 du client. Cette méthode est utile si l’administrateur de la machine cliente sait déjà que le serveur prend en charge HTTP/2.

  • HTTP/2 direct à l’aide d’un service alternatif (ALT-SVC). Un serveur annonce qu’il prend en charge HTTP/2 à un client en incluant un champ Alternative Service (ALT-SVC) dans sa réponse HTTP/1.1. Si le client est configuré pour comprendre le champ ALT-SVC, le client et le serveur commencent à communiquer directement via HTTP/2 une fois que le client a reçu la réponse.

L’appliance Citrix ADC fournit des options configurables dans un profil HTTP pour les méthodes HTTP/2. Ces options HTTP/2 peuvent être appliquées au côté client ainsi qu’au côté serveur d’une configuration d’équilibrage de charge HTTPS ou HTTP. Pour plus d’informations sur les méthodes et options HTTP/2, reportez-vous au PDF des options HTTP/2 .

Avant de commencer

Avant de commencer à configurer HTTP/2 sur une appliance Citrix ADC, notez les points suivants :

  • L’appliance Citrix ADC prend en charge HTTP/2 côté client ainsi que côté serveur.
  • L’appliance Citrix ADC ne prend pas en charge la fonctionnalité de transmission du serveur HTTP/2.
  • L’appliance Citrix ADC ne prend pas en charge la fonctionnalité de priorisation des demandes HTTP/2.
  • L’appliance Citrix ADC ne prend pas en charge la renégociation SSL HTTP/2 pour les configurations d’équilibrage de charge HTTPS.
  • L’appliance Citrix ADC ne prend pas en charge l’authentification HTTP/2 NTLM.
  • Lorsque HTTP/2 est activé, le multiplexage des connexions désactivé (comme USIP activé) et le mappage individuel des connexions TCP client et serveur, les événements de fermeture tels que FIN, reset (RST) sont transférés de la connexion client ou serveur à la connexion homologue liée.

Configuration de HTTP/2

La configuration de HTTP/2 pour une configuration d’équilibrage de charge (HTTPS ou HTTP) comprend les tâches suivantes :

  • Activez HTTP/2 et définissez des paramètres HTTP/2 facultatifs dans un profil HTTP. Activez HTTP/2 dans un profil HTTP. Lorsque vous activez uniquement HTTP/2 dans un profil HTTP, l’appliance Citrix ADC utilise uniquement la méthode de mise à niveau (pour HTTP) ou la méthode TLS ALPN (pour HTTPS) pour communiquer en HTTP/2.

    Pour que l’appliance Citrix ADC utilise la méthode HTTP/2 directe, l’option Direct HTTP/2 doit être activée dans le profil HTTP. Pour que l’appliance Citrix ADC utilise le protocole HTTP/2 direct à l’aide de la méthode de service alternative, l’option Alternative Service (altsvc) doit être activée dans le profil HTTP.

  • Liez le profil HTTP à un serveur virtuel ou à un service. Liez le profil HTTP à un serveur virtuel pour configurer HTTP/2 pour le côté client de la configuration de l’équilibrage de charge. Liez le profil HTTP à un service afin de configurer HTTP2 pour le côté serveur de la configuration de l’équilibrage de charge.

Remarque :

Citrix recommande de lier des profils HTTP distincts pour le côté client et le côté serveur.

  • Activez le paramètre global pour la prise en charge HTTP/2 côté serveur. Activez le paramètre HTTP global HTTP/2 Service Side(HTTP2ServerSide) pour activer la prise en charge HTTP/2 côté serveur de toutes les configurations d’équilibrage de charge pour lesquelles HTTP/2 est configuré.

    HTTP/2 ne fonctionne pas côté serveur des configurations d’équilibrage de charge si le côté service HTTP/2 est désactivé, même si le protocole HTTP/2 est activé sur le profil HTTP lié aux services d’équilibrage de charge associés.

Procédures de ligne de commande Citrix ADC :

Pour activer HTTP/2 et définir les paramètres HTTP/2 à l’aide de la ligne de commande Citrix ADC

  • Pour activer HTTP/2 et définir les paramètres HTTP/2 lors de l’ajout d’un profil HTTP, à l’invite de commandes, tapez :

add ns httpProfile <name> - http2 ( ENABLED | DISABLED ) [-http2Direct ( ENABLED | DISABLED )] [-altsvc ( ENABLED | DISABLED )] show ns httpProfile <name>

  • Pour activer HTTP/2 et définir les paramètres HTTP/2 lors de la modification d’un profil HTTP, à l’invite de commandes, tapez :

set ns httpProfile <name> -http2 ( ENABLED | DISABLED ) [-http2Direct ( ENABLED | DISABLED)] [-altsvc (ENABLED | DISABLED )] show ns httpProfile <name>

Pour lier le profil HTTP à un serveur virtuel à l’aide de la ligne de commande Citrix ADC

À l’invite de commandes, tapez :

set lb vserver <name> - httpProfileName <string> show lb vserver <name>

Pour lier le profil HTTP à un service d’équilibrage de charge à l’aide de la ligne de commande Citrix ADC

À l’invite de commandes, tapez :

set service <name> -httpProfileName <string> show service <name>

Pour activer la prise en charge HTTP/2 globalement côté serveur à l’aide de la ligne de commande Citrix ADC

À l’invite de commandes, tapez :

set ns httpParam -HTTP2Serverside( ENABLED | DISABLED ) show ns httpParam

Pour activer HTTP/2 et définir les paramètres HTTP/2 à l’aide de l’interface graphique Citrix ADC

  1. Accédez à Système > Profils, puis cliquez sur l’onglet Profils HTTP .
  2. Activez HTTP/2 lors de l’ajout d’un profil HTTP ou de la modification d’un profil HTTP existant.

Pour lier le profil HTTP à un serveur virtuel à l’aide de l’interface graphique Citrix ADC

  1. Accédez à Gestion du trafic > Équilibrage de charge > Serveurs virtuels, puis ouvrez le serveur virtuel.
  2. Dans Paramètres avancés, cliquez sur+Profil HTTP pour lier le profil HTTP créé au serveur virtuel.

Pour lier le profil HTTP à un service d’équilibrage de charge à l’aide de l’interface graphique Citrix ADC

  1. Accédez à Gestion du trafic > Équilibrage de charge > Service, puis ouvrez le service.
  2. Dans Paramètres avancés, cliquez sur+Profil HTTP pour lier le profil HTTP créé au service.

Pour activer la prise en charge de HTTP/2 globalement côté serveur à l’aide de l’interface graphique

Accédez à Système > Paramètres, cliquez sur Modifier les paramètres HTTP et activez HTTP/2 Server Side.

Exemples de configurations

Dans l’exemple de configuration suivant, HTTP/2 et HTTP/2 direct sont activés sur le profil HTTP HTTP-PROFILE-HTTP2-CLIENT-SIDE. Le profil est lié au serveur virtuel LB-VS-1.

set ns httpProfile HTTP-PROFILE-HTTP2-CLIENT-SIDE -http2 enabled -http2Direct enabled
Done

set lb vserver LB-VS-1 -httpProfileName HTTP-PROFILE-HTTP2-CLIENT-SIDE

Done
<!--NeedCopy-->

Dans l’exemple de configuration suivant, HTTP/2 et le service alternatif (ALT-SVC) sont activés sur le profil HTTP HTTP-PROFILE-HTTP2-SERVER-SIDE. Le profil est lié au service LB-SERVICE-1.

set ns httpparam -HTTP2Serverside ENABLED
Done

set ns httpProfile HTTP-PROFILE-HTTP2-SERVER-SIDE -http2 ENABLED -altsvc ENABLED
Done

set service LB-SERVICE-1 -httpProfileName HTTP-PROFILE-HTTP2-SERVER-SIDE
Done
<!--NeedCopy-->

Configurer la taille de la fenêtre de connexion initiale HTTP/2

Conformément à la RFC 7540, la fenêtre de contrôle de flux pour le flux HTTP2 et la connexion doit être définie sur 64 K (65535) octets, et toute modification apportée à cette valeur doit être communiquée à l’homologue. L’appliance ADC communique la modification de la taille de la fenêtre de contrôle de flux comme suit :

  • Utiliser le SETTINGS cadre pour le flux.
  • Utilisation du WINDOW_UPDATE cadre pour la connexion.

Dans un profil HTTP, vous devez configurer le paramètre http2InitialWindowSize pour définir la taille initiale de la fenêtre au niveau du flux. En raison d’une erreur système interne, l’appliance ADC initialise également la fenêtre de contrôle de flux de la connexion. En cas de modification de la fenêtre de contrôle de flux configurée pour le flux, l’appliance ADC communique avec l’homologue à l’aide de la trame SETTINGS. Mais l’appliance ADC ne parvient pas à communiquer la modification de la fenêtre de contrôle de flux pour la connexion à l’aide de la WINDOW_UPDATE trame. Cela entraîne un gel de la connexion.

Pour résoudre ce problème, le paramètre http2InitialConnWindowSize (en octets) est maintenant ajouté pour contrôler la fenêtre de contrôle de flux pour la connexion. En utilisant des paramètres configurables distincts, vous pouvez désormais permettre à l’appliance d’envoyer des mises à jour pour modifier la taille de fenêtre au niveau du flux et de la connexion.

Configurer le paramètre de taille de fenêtre de connexion initiale HTTP/2 à l’aide de l’interface de ligne de commande

À l’invite de commandes, tapez :

set http profile p1 -http2InitialConnWindowSize 8290
Initial window size for stream level flow control, in bytes.
Default value: 65535
Minimum value: 8192
Maximum value: 20971520
<!--NeedCopy-->
Configuration HTTP/2