Optimisation des performances TCP à l’aide de TCP Nile
Le protocole TCP utilise les techniques d’optimisation et les stratégies (ou algorithmes) de contrôle de la congestion suivantes pour éviter la congestion du réseau lors de la transmission de données.
Stratégies de contrôle de la congestion
Le protocole TCP (Transmission Control Protocol) est utilisé depuis longtemps pour établir et gérer les connexions Internet, gérer les erreurs de transmission et connecter facilement les applications Web aux appareils clients. Mais le trafic réseau est devenu plus difficile à contrôler, car la perte de paquets ne dépend pas uniquement de la congestion du réseau, et la congestion n’entraîne pas nécessairement la perte de paquets. Par conséquent, pour mesurer la congestion, un algorithme TCP doit se concentrer à la fois sur la perte de paquets et sur la bande passante.
Algorithme NILE
Citrix Systems a développé un nouvel algorithme de contrôle de la congestion, NILE, un algorithme d’optimisation TCP conçu pour les réseaux haut débit tels que LTE, LTE advanced et 3G. Nile répond aux défis uniques liés à la décoloration, aux pertes aléatoires ou congestives, aux retransmissions par couche de liaison et à l’agrégation de supports.
L’algorithme NILE :
- Base les estimations de la latence des files d’attente sur des mesures du temps aller-retour.
- Utilise une fonction d’augmentation de la fenêtre de congestion qui est inversement proportionnelle à la latence de file d’attente mesurée. Cette méthode permet d’approcher le point de congestion du réseau plus lentement que ne le fait la méthode TCP standard et de réduire les pertes de paquets pendant la congestion.
- Peut faire la distinction entre les pertes aléatoires et les pertes liées à la congestion sur le réseau en utilisant la latence estimée de la file d’attente.
Les fournisseurs de services de télécommunications peuvent utiliser l’algorithme NILE dans leur infrastructure TCP pour :
- Optimisez les réseaux mobiles et longue distance : l’algorithme NILE permet d’obtenir un débit supérieur à celui du protocole TCP standard. Cette fonctionnalité est particulièrement importante pour les réseaux mobiles et longue distance.
- Réduisez la latence perçue par les applications et améliorez l’expérience des abonnés : l’algorithme Nile utilise les informations relatives aux pertes de paquets pour déterminer si la taille de la fenêtre de transmission doit être augmentée ou diminuée, et utilise les informations relatives au délai de mise en file d’attente pour déterminer la taille de l’incrément ou de la décrémentation. Ce paramètre dynamique de la taille de la fenêtre de transmission réduit la latence des applications sur le réseau.
Pour configurer le support NILE à l’aide de l’interface de ligne de commande
À l’invite de commandes, tapez ce qui suit :
set ns tcpProfile <name> [-flavor NILE]
<!--NeedCopy-->
Configuration du support NILE à l’aide de l’utilitaire de configuration
- Accédez à Système > Profils > ProfilsTCP et cliquez sur ProfilsTCP.
- Dans la liste déroulante TCP Flavor, sélectionnez NILE.
Exemple :
set ns tcpProfile tcpprofile1 -flavor NILE
<!--NeedCopy-->
Algorithme de récupération du débit proportionnel (PRR)
Les mécanismes de restauration rapide TCP réduisent la latence Web causée par les pertes de paquets. Le nouvel algorithme PRR (Proportional Rate Recovery) est un algorithme de restauration rapide qui évalue les données TCP lors d’une restauration après perte. Il est calqué sur la réduction de moitié du débit, en utilisant la fraction appropriée pour la fenêtre cible choisie par l’algorithme de contrôle de congestion. Cela minimise l’ajustement de la fenêtre et la taille réelle de la fenêtre à la fin de la restauration est proche du seuil de démarrage lent (ssthresh).
Ouverture rapide TCP (TFO)
Le protocole TCP Fast Open (TFO) est un mécanisme TCP qui permet un échange de données rapide et sécurisé entre un client et un serveur lors de l’établissement de connexion initial du protocole TCP. Cette fonctionnalité est disponible en tant qu’option TCP dans le profil TCP lié à un serveur virtuel d’une appliance NetScaler. TFO utilise un cookie TCP Fast Open (un cookie de sécurité) généré par l’appliance NetScaler pour valider et authentifier le client initiant une connexion TFO au serveur virtuel. En utilisant le mécanisme TFO, vous pouvez réduire la latence réseau d’une application du temps nécessaire pour un aller-retour complet, ce qui réduit considérablement le retard subi lors de courts transferts TCP.
Comment fonctionne TFO
Lorsqu’un client essaie d’établir une connexion TFO, il inclut un cookie TCP Fast Open avec le segment SYN initial pour s’authentifier. Si l’authentification est réussie, le serveur virtuel de l’appliance NetScaler peut inclure des données dans le segment SYN-ACK même s’il n’a pas reçu le dernier segment ACK de l’établissement de liaison tripartite. Cela permet d’économiser jusqu’à un aller-retour complet par rapport à une connexion TCP normale, qui nécessite une liaison à trois voies avant de pouvoir échanger des données.
Un client et un serveur principal effectuent les étapes suivantes pour établir une connexion TFO et échanger des données en toute sécurité lors de l’établissement de connexion TCP initial.
- Si le client ne dispose pas d’un cookie d’ouverture rapide TCP pour s’authentifier, il envoie une demande de cookie d’ouverture rapide dans le paquet SYN au serveur virtuel de l’appliance NetScaler.
- Si l’option TFO est activée dans le profil TCP lié au serveur virtuel, l’appliance génère un cookie (en chiffrant l’adresse IP du client sous une clé secrète) et répond au client par un SYN-ACK qui inclut le cookie d’ouverture rapide généré dans un champ d’option TCP.
- Le client met en cache le cookie pour les futures connexions TFO au même serveur virtuel sur l’appliance.
- Lorsque le client essaie d’établir une connexion TFO avec le même serveur virtuel, il envoie un SYN qui inclut le cookie Fast Open mis en cache (en tant qu’option TCP) ainsi que des données HTTP.
- L’appliance NetScaler valide le cookie et, si l’authentification est réussie, le serveur accepte les données du paquet SYN et accuse réception de l’événement à l’aide d’un SYN-ACK, d’un cookie TFO et d’une réponse HTTP.
Remarque : Si l’authentification du client échoue, le serveur supprime les données et accuse réception de l’événement uniquement avec un SYN indiquant un délai d’expiration de session.
- Côté serveur, si l’option TFO est activée dans un profil TCP lié à un service, l’appliance NetScaler détermine si le cookie d’ouverture rapide TCP est présent dans le service auquel elle tente de se connecter.
- Si le cookie TCP Fast Open n’est pas présent, l’appliance envoie une demande de cookie dans le paquet SYN.
- Lorsque le serveur principal envoie le cookie, l’appliance stocke le cookie dans le cache d’informations du serveur.
- Si l’appliance possède déjà un cookie pour la paire d’adresses IP de destination donnée, elle remplace l’ancien cookie par le nouveau.
- Si le cookie est disponible dans le cache d’informations du serveur lorsque le serveur virtuel tente de se reconnecter au même serveur principal en utilisant la même adresse SNIP, l’appliance combine les données du paquet SYN avec le cookie et les envoie au serveur principal.
- Le serveur principal accuse réception de l’événement à l’aide de données et d’un SYN.
Remarque : Si le serveur accuse réception de l’événement avec uniquement un segment SYN, l’appliance NetScaler renvoie immédiatement le paquet de données après avoir supprimé le segment SYN et les options TCP du paquet d’origine.
Configuration de TCP Fast Open
Pour utiliser la fonctionnalité TCP Fast Open (TFO), activez l’option TCP Fast Open dans le profil TCP concerné et définissez le paramètre TFO Cookie Timeout sur une valeur qui répond aux exigences de sécurité de ce profil.
Pour activer ou désactiver TFO à l’aide de la ligne de commande
À l’invite de commandes, tapez l’une des commandes suivantes pour activer ou désactiver TFO dans un profil nouveau ou existant.
Remarque : La valeur par défaut est DISABLED.
add tcpprofile <TCP Profile Name> - tcpFastOpen ENABLED | DISABLED
set tcpprofile <TCP Profile Name> - tcpFastOpen ENABLED | DISABLED
unset tcpprofile <TCP Profile Name> - tcpFastOpen
<!--NeedCopy-->
Exemples :
add tcpprofile Profile1 – tcpFastOpen Set tcpprofile Profile1 – tcpFastOpen Enabled unset tcpprofile Profile1 – tcpFastOpen
Pour définir la valeur du délai d’expiration du cookie TCP Fast Open à l’aide de l’interface de ligne de commande
À l’invite de commandes, tapez :
set tcpparam –tcpfastOpenCookieTimeout <Timeout Value>
<!--NeedCopy-->
Exemple :
set tcpprofile –tcpfastOpenCookieTimeout 30secs
<!--NeedCopy-->
Pour configurer le TCP Fast Open à l’aide de l’interface graphique
- Accédez à Configuration > Système > Profils > puis cliquez sur Modifier pour modifier un profil TCP.
- Sur la page Configurer le profil TCP, cochez la case TCP Fast Open.
- Cliquez sur OK, puis sur OK.
Pour configurer la valeur du délai d’expiration du cookie rapide TCP à l’aide de l’interface graphique
Accédez à Configuration > Système > Paramètres > Modifier les paramètresTCP, puis à la page Configurer les paramètresTCP pour définir la valeur du délai d’expiration du cookie d’ouverture rapide TCP.
Hystart TCP
Un nouveau paramètre de profil TCP, hystart, active l’algorithme Hystart, qui est un algorithme de démarrage lent qui détermine dynamiquement un point sûr auquel se terminer (ssthresh). Il permet une transition vers la prévention de la congestion sans pertes importantes de paquets. Ce nouveau paramètre est désactivé par défaut.
Si une congestion est détectée, Hystart entre dans une phase d’évitement de la congestion. Son activation vous permet d’obtenir un meilleur débit sur les réseaux à haut débit présentant de fortes pertes de paquets. Cet algorithme permet de maintenir une bande passante proche de la limite maximale lors du traitement des transactions. Il peut donc améliorer le débit.
Configuration de TCP Hystart
Pour utiliser la fonctionnalité Hystart, activez l’option Cubic Hystart dans le profil TCP approprié.
Pour configurer Hystart à l’aide de l’interface de ligne de commande (CLI)
À l’invite de commandes, tapez l’une des commandes suivantes pour activer ou désactiver Hystart dans un profil TCP nouveau ou existant.
add tcpprofile <profileName> -hystart ENABLED
set tcpprofile <profileName> -hystart ENABLED
unset tcprofile <profileName> -hystart
<!--NeedCopy-->
Exemples :
add tcpprofile Profile1 – tcpFastOpen
Set tcpprofile Profile1 – tcpFastOpen Enabled
unset tcpprofile Profile1 – tcpFastOpen
<!--NeedCopy-->
Pour configurer le support Hystart à l’aide de l’interface graphique
- Accédez à Configuration > Système > Profils > et cliquez sur Modifier pour modifier un profil TCP.
- Sur la page Configurer le profil TCP, cochez la case Cubic Hystart .
- Cliquez sur OK, puis sur OK.
Techniques d’optimisation
TCP utilise les techniques et méthodes d’optimisation suivantes pour optimiser les contrôles de flux.
Sélection de profils TCP basée sur des règles
Le trafic réseau d’aujourd’hui est plus diversifié et plus gourmand en bande passante que jamais. Avec l’augmentation du trafic, l’effet de la qualité de service (QoS) sur les performances du protocole TCP est significatif. Pour améliorer la QoS, vous pouvez désormais configurer des stratégies AppQoE avec différents profils TCP pour différentes classes de trafic réseau. La stratégie AppQoE classe le trafic d’un serveur virtuel afin d’associer un profil TCP optimisé pour un type de trafic particulier, tel que la 3G, la 4G, le LAN ou le WAN.
Pour utiliser cette fonctionnalité, créez une action de stratégie pour chaque profil TCP, associez une action aux stratégies AppQoE et associez les stratégies aux serveurs virtuels d’équilibrage de charge.
Configuration de la sélection de profil TCP basée sur une stratégie
La configuration de la sélection de profils TCP basée sur des règles comprend les tâches suivantes :
- Activation d’AppQoE. Avant de configurer la fonctionnalité de profil TCP, vous devez activer la fonctionnalité AppQoE.
- Ajout d’une action AppQoE. Après avoir activé la fonctionnalité AppQoE, configurez une action AppQoE avec un profil TCP.
- Configuration de la sélection du profil TCP basée sur AppQoE. Pour implémenter la sélection de profils TCP pour différentes classes de trafic, vous devez configurer des stratégies AppQoE grâce auxquelles votre dispositif NetScaler peut distinguer les connexions et associer l’action AppQoE appropriée à chaque stratégie.
- Liaison de la stratégie AppQoE au serveur virtuel. Une fois que vous avez configuré les stratégies AppQoE, vous devez les lier à un ou plusieurs serveurs virtuels d’équilibrage de charge, de commutation de contenu ou de redirection de cache.
Configuration à l’aide de l’interface de ligne de commande
Pour activer AppQoE à l’aide de l’interface de ligne de commande :
À l’invite de commandes, tapez les commandes suivantes pour activer la fonctionnalité et vérifier qu’elle est activée :
enable ns feature appqoe
show ns feature
<!--NeedCopy-->
Pour lier un profil TCP lors de la création d’une action AppQoE à l’aide de l’interface de ligne de commande
À l’invite de commandes, tapez la commande d’action AppQoE suivante avec l’option tcpprofiletobind.
Lier un profil TCP :
add appqoe action <name> [-priority <priority>] [-respondWith ( ACS | NS ) [<CustomFile>] [-altContentSvcName <string>] [-altContentPath <string>] [-maxConn <positive_integer>] [-delay <usecs>]] [-polqDepth <positive_integer>] [-priqDepth <positive_integer>] [-dosTrigExpression <expression>] [-dosAction ( SimpleResponse |HICResponse )] [-tcpprofiletobind <string>]
show appqoe action
<!--NeedCopy-->
Pour configurer une stratégie AppQoE à l’aide de l’interface de ligne de commande
À l’invite de commandes, tapez :
add appqoe policy <name> -rule <expression> -action <string>
<!--NeedCopy-->
Pour lier une stratégie AppQoE à des serveurs virtuels d’équilibrage de charge, de redirection de cache ou de commutation de contenu à l’aide de l’interface de ligne de commande
À l’invite de commandes, tapez :
bind cs vserver cs1 -policyName <appqoe_policy_name> -priority <priority>
bind lb vserver <name> - policyName <appqoe_policy_name> -priority <priority>
bind cr vserver <name> -policyName <appqoe_policy_name> -priority <priority>
<!--NeedCopy-->
Exemple :
add ns tcpProfile tcp1 -WS ENABLED -SACK ENABLED -WSVal 8 -nagle ENABLED -maxBurst 30 -initialCwnd 16 -oooQSize 15000 -minRTO 500 -slowStartIncr 1 -bufferSize 4194304 -flavor BIC -KA ENABLED -sendBuffsize 4194304 -rstWindowAttenuate ENABLED -spoofSynDrop ENABLED -dsack enabled -frto ENABLED -maxcwnd 4000000 -fack ENABLED -tcpmode ENDPOINT
add appqoe action appact1 -priority HIGH -tcpprofile tcp1
add appqoe policy apppol1 -rule "client.ip.src.eq(10.102.71.31)" -action appact1
bind lb vserver lb2 -policyName apppol1 -priority 1 -gotoPriorityExpression END -type REQUEST
bind cs vserver cs1 -policyName apppol1 -priority 1 -gotoPriorityExpression END -type REQUEST
<!--NeedCopy-->
Configuration du profilage TCP basé sur des règles à l’aide de l’interface graphique
Pour activer AppQoE à l’aide de l’interface graphique
- Accédez à Système > Paramètres.
- Dans le volet de détails, cliquez sur Configurer les fonctionnalités avancées.
- Dans la boîte de dialogue Configurer les fonctionnalités avancées, cochez la case AppQoE .
- Cliquez sur OK.
Pour configurer la stratégie AppQoE à l’aide de l’interface graphique
- Accédez à App-Expert > AppQoE > Actions.
- Dans le volet d’informations, effectuez l’une des opérations suivantes :
- Pour créer une nouvelle action, cliquez sur Ajouter.
- Pour modifier une action existante, sélectionnez-la, puis cliquez sur Modifier.
-
Dans l’écran Créer une action AppQoE ou Configurer une action AppQoE, tapez ou sélectionnez des valeurs pour les paramètres. Le contenu de la boîte de dialogue correspond aux paramètres décrits dans « Paramètres de configuration de l’action AppQoE » comme suit (un astérisque indique un paramètre obligatoire) :
- Nom—nom
- Type d’action — respondWith
- Priorité — priority
- Profondeur de la file d’attente de stratégies — polqDepth
- Profondeur de file d’attente — priqDepth
- Action DOS — dosAction
- Cliquez sur Créer.
Pour lier la stratégie AppQoE à l’aide de l’interface graphique
- Accédez à Gestion du trafic > Équilibrage de charge > Serveurs virtuels, sélectionnez un serveur, puis cliquez sur Modifier.
- Dans la section Stratégies, cliquez sur (+) pour lier une stratégie AppQoE.
- Dans le curseur Stratégies, effectuez les opérations suivantes :
- Sélectionnez un type de stratégie comme AppQoE dans la liste déroulante.
- Sélectionnez un type de trafic dans la liste déroulante.
- Dans la section Policy Binding, procédez comme suit :
- Cliquez sur Nouveau pour créer une nouvelle stratégie AppQoE.
- Cliquez sur Stratégie existante pour sélectionner une stratégie AppQoE dans la liste déroulante.
- Définissez la priorité de liaison et cliquez sur Lier à la stratégie au serveur virtuel.
- Cliquez sur Terminé.
Génération de blocs SACK
Les performances du protocole TCP ralentissent lorsque plusieurs paquets sont perdus dans une fenêtre de données. Dans un tel scénario, un mécanisme d’accusé de réception sélectif (SACK) combiné à une stratégie de retransmission répétitive sélective permet de surmonter cette limitation. Pour chaque paquet entrant hors service, vous devez générer un bloc SACK.
Si le paquet hors ordre entre dans le bloc de la file d’attente de réassemblage, insérez les informations du paquet dans le bloc et définissez les informations du bloc complètes sur SACK-0. Si un paquet en panne ne rentre pas dans le bloc de réassemblage, envoyez le paquet au format SACK-0 et répétez les blocs SACK précédents. Si un paquet hors ordre est un doublon et que les informations du paquet sont définies comme SACK-0, alors D-SACK le bloc.
Remarque : Un paquet est considéré comme D-SACK s’il s’agit d’un paquet accusé de réception ou d’un paquet hors service déjà reçu.
Le client renie
Une appliance NetScaler peut gérer les renégats du client lors d’une restauration basée sur SACK.
Les vérifications de la mémoire pour le marquage du point de terminaison sur un circuit imprimé ne tiennent pas compte de la quantité totale de mémoire disponible
Dans une appliance NetScaler, si le seuil d’utilisation de la mémoire est défini sur 75 % au lieu d’utiliser la mémoire totale disponible, les nouvelles connexions TCP contournent l’optimisation TCP.
Retransmissions inutiles en raison de l’absence de blocs SACK
En mode hors point de terminaison, lorsque vous envoyez des DUPACKS, si des blocs SACK sont absents pour quelques paquets hors service, cela déclenche des retransmissions supplémentaires depuis le serveur.
Le protocole SNMP pour le nombre de connexions a contourné l’optimisation en raison d’une surcharge
Les identifiants SNMP suivants ont été ajoutés à une appliance NetScaler pour suivre le nombre de connexions contournées par l’optimisation TCP en raison d’une surcharge.
- 1.3.6.1.4.1.5951.4.1.1.46.13 (optimisation TCP activée). Pour suivre le nombre total de connexions activées grâce à l’optimisation TCP.
- 1.3.6.1.4.1.5951.4.1.1.46.132 (tcpOptimizationBypassed). Pour suivre le nombre total de connexions contournées, optimisez TCP.
Buffer de réception dynamique
Pour optimiser les performances TCP, une appliance NetScaler peut désormais ajuster dynamiquement la taille de la mémoire tampon de réception TCP.
Dans cet article
- Stratégies de contrôle de la congestion
- Algorithme NILE
- Algorithme de récupération du débit proportionnel (PRR)
- Ouverture rapide TCP (TFO)
- Hystart TCP
- Techniques d’optimisation
- Sélection de profils TCP basée sur des règles
- Génération de blocs SACK
- Le client renie
- Les vérifications de la mémoire pour le marquage du point de terminaison sur un circuit imprimé ne tiennent pas compte de la quantité totale de mémoire disponible
- Retransmissions inutiles en raison de l’absence de blocs SACK
- Le protocole SNMP pour le nombre de connexions a contourné l’optimisation en raison d’une surcharge