Contrôleur d'entrée Citrix ADC

Cas d’utilisation TCP

Cette rubrique couvre divers cas d’utilisation TCP que vous pouvez configurer sur Citrix ADC d’entrée à l’aide des annotations dans le Citrix ingress controller.

Le tableau suivant répertorie les cas d’utilisation TCP avec des exemples d’annotations :

Cas d’utilisation Exemple d’annotation
Suppression silencieuse des connexions TCP inactives ingress.citrix.com/frontend-tcpprofile: '{"apache":{"DropHalfClosedConnOnTimeout" : "ENABLE", "DropEstConnOnTimeout":"ENABLE"}}'
Accusés de réception de la connexion TCP ingress.citrix.com/frontend-tcpprofile: '{"apache":{"delayack" : "150"}}'
Gestion des sessions MPTCP côté client ingress.citrix.com/frontend-tcpprofile: '{"apache":{"mptcp": "ENABLED", "mptcpSessionTimeout":"7200"}}'
Optimisation TCP S.O.
Défendre TCP contre les attaques par usurpation d’identité ingress.citrix.com/frontend_tcpprofile: '{"rstwindowattenuate" : "enabled", "spoofSynDrop":"enabled"}

Suppression silencieuse des connexions TCP inactives

Dans un réseau, un grand nombre de connexions TCP deviennent inactives et le Citrix ADC d’entrée envoie des paquets RST pour les fermer. Les paquets envoyés sur les canaux activent ces canaux inutilement, provoquant un flot de messages qui à son tour provoque la génération d’un flot de messages de rejet de service par Ingress Citrix ADC.

À l’aide des paramètres drophalfclosedconnontimeout et dropestconnontimeout des profils TCP, vous pouvez supprimer silencieusement les connexions TCP semi-fermées en cas de délai d’inactivité ou supprimer les connexions établies TCP en cas d’inactivité. Par défaut, ces paramètres sont désactivés sur l’entrée Citrix ADC. Si vous les activez tous les deux, ni une connexion semi-fermée ni une connexion établie n’entraînent l’envoi d’un paquet RST au client lorsque la connexion expire. Le Citrix ADC supprime simplement la connexion.

À l’aide des annotations pour les profils TCP, vous pouvez activer ou désactiver le drophalfclosedconnontimeout et dropestconnontimeout sur l’entrée Citrix ADC. Voici un exemple d’annotation du profil TCP pour activer ces paramètres :

ingress.citrix.com/frontend-tcpprofile: '{"apache":{"drophalfclosedconnontimeout" : "enable", "dropestconnontimeout":"enable"}}'

Accusés de réception de la connexion TCP

Pour éviter d’envoyer plusieurs paquets ACK, Ingress Citrix ADC prend en charge le mécanisme d’accusé de réception retardé TCP. Il envoie un accusé de réception retardé avec un délai d’attente par défaut de 100 ms. Ingress Citrix ADC accumule les paquets de données et envoie un accusé de réception uniquement s’il reçoit deux paquets de données en continu ou si le délai expire. Le délai minimum que vous pouvez définir pour l’ACK déployé TCP est de 10 ms et le maximum est de 300 ms. Par défaut, le délai est défini sur 100 ms.

À l’aide des annotations pour les profils TCP, vous pouvez gérer le paramètre ACK retardé. Voici un exemple d’annotation du profil TCP pour activer ces paramètres :

ingress.citrix.com/frontend-tcpprofile: '{"apache":{"delayack" : "150"}}'

Gestion des sessions MPTCP côté client

Vous effectuez la configuration TCP sur le Citrix ADC d’entrée pour les connexions MPTCP entre le client et Ingress Citrix ADC. Les connexions MPTCP ne sont pas prises en charge entre Citrix ADC et la communication principale. Le client et l’appliance Citrix ADC Ingress doivent tous deux prendre en charge la même version MPTCP.

Vous pouvez activer MPTCP et définir le délai d’expiration de session MPTCP (mptcpsessiontimeout) en quelques secondes à l’aide des profils TCP dans Citrix ADC Ingress. Si la mptcpsessiontimeout valeur n’est pas définie, les sessions MPTCP sont vidées après le délai d’inactivité du client. La valeur minimale du délai d’expiration que vous pouvez définir est 0 et la valeur maximale est 86400. Par défaut, la valeur du délai d’expiration est définie sur 0.

À l’aide des annotations pour les profils TCP, vous pouvez activer MPTCP et définir la valeur du paramètre mptcpsessiontimeout sur l’entrée Citrix ADC. Voici un exemple d’annotation du profil TCP pour activer MPTCP et définir la valeur du paramètre mptcpsessiontimeout sur 7200 sur Citrix ADC d’entrée :

ingress.citrix.com/frontend-tcpprofile: '{"apache":{"mptcp" : "ENABLED", "mptcpSessionTimeout":"7200"}}'

Optimisation TCP

La plupart des fonctionnalités d’optimisation TCP pertinentes du Citrix ADC Ingress sont exposées via un profil TCP correspondant. À l’aide des annotations pour les profils TCP, vous pouvez activer les fonctionnalités d’optimisation TCP suivantes sur le Citrix ADC Ingress :

  • Selective acknowledgment (SACK): TCP SACK résout le problème des pertes de paquets multiples, ce qui réduit la capacité de débit globale. Avec un accusé de réception sélectif, le destinataire peut informer l’expéditeur de tous les segments qui ont été reçus avec succès, ce qui permet à l’expéditeur de ne retransmettre que les segments qui ont été perdus. Cette technique permet à T1 d’améliorer le débit global et de réduire la latence de connexion.

    Voici un exemple d’annotation de profil TCP pour activer SACK sur l’entrée Citrix ADC :

     ingress.citrix.com/frontend_tcpprofile: '{"sack" : "enabled"}
    
  • Forward acknowledgment (FACK): Pour éviter la congestion TCP en mesurant explicitement le nombre total d’octets de données en attente sur le réseau et en aidant l’expéditeur (T1 ou un client) à contrôler la quantité de données injectées dans le réseau pendant les délais de retransmission.

    Voici un exemple d’annotation de profil TCP pour activer FACK sur l’entrée Citrix ADC :

     ingress.citrix.com/frontend_tcpprofile: '{"fack" : "enabled"}
    
  • Window Scaling (WS): le dimensionnement de la fenêtre TCP permet d’augmenter la taille de la fenêtre de réception TCP au-delà de 65535 octets. Il contribue à améliorer les performances TCP en général et en particulier dans les réseaux à bande passante élevée et à long retard. Il permet de réduire la latence et d’améliorer le temps de réponse via TCP.

    Voici un exemple d’annotation de profil TCP pour activer WS sur l’entrée Citrix ADC :

     ingress.citrix.com/frontend_tcpprofile: '{"ws" : "enabled", "wsval" : "9"}
    

    wsval est le facteur utilisé pour calculer la nouvelle taille de fenêtre. L’argument est obligatoire uniquement lorsque la mise à l’échelle de la fenêtre est activée. La valeur minimale que vous pouvez définir est 0 et la valeur maximale est 14. Par défaut, la valeur est définie sur 4.

  • Maximum Segment Size (MSS): MSS d’un seul segment TCP. Cette valeur dépend du paramètre MTU sur les routeurs intermédiaires et les clients finaux. Une valeur de 1460 correspond à un MTU de 1500.

    Voici un exemple d’annotation de profil TCP pour activer MSS sur l’entrée Citrix ADC :

     ingress.citrix.com/frontend_tcpprofile: '{"mss" : "1460", "maxPktPerMss" : "512"}
    

    Où :

    • mss est le MSS à utiliser pour la connexion TCP. La valeur minimale que vous pouvez définir est 0 et la valeur maximale est 9176.
    • maxPktPerMss est le nombre maximum de paquets TCP autorisés par taille maximale de segment (MSS). La valeur minimale que vous pouvez définir est 0 et la valeur maximale est 1460.
  • Keep-Alive (KA): envoie des sondes persistantes TCP (KA) périodiques pour vérifier si le pair est toujours actif.

    Voici un exemple d’annotation du profil TCP pour activer le maintien en vie TCP (KA) sur Citrix ADC d’entrée :

     ingress.citrix.com/frontend_tcpprofile: '{"ka" : "enabled", "kaprobeupdatelastactivity":"enabled", "KAconnIdleTime": "900",  "kamaxprobes" : "3",  "kaprobeinterval" : "75"}
    

    Où :

    • ka est utilisé pour permettre l’envoi de sondes persistantes TCP (KA) périodiques pour vérifier si le pair est toujours actif. Valeurs possibles : ACTIVÉ, DÉSACTIVÉ. Valeur par défaut : DÉSACTIVÉ.
    • kaprobeupdatelastactivity met à jour la dernière activité de la connexion après avoir reçu des sondes KeepAlive (KA). Valeurs possibles : ACTIVÉ, DÉSACTIVÉ. Valeur par défaut : ENABLED.
    • KAconnIdleTime est la durée (en secondes) pendant laquelle la connexion est inactive, avant l’envoi d’une sonde KeepAlive (KA). La valeur minimale que vous pouvez définir est 1 et la valeur maximale est 4095.
    • kaprobeinterval est le temps interne (en secondes) avant la prochaine sonde KeepAlive (KA), si le pair ne répond pas. La valeur minimale que vous pouvez définir est 1 et la valeur maximale est 4095.
  • bufferSize: Spécifiez la taille du tampon TCP, en octets. La valeur minimale que vous pouvez définir est 8190 et la valeur maximale est 20971520. Par défaut, la valeur est définie sur 8190.

    Voici un exemple d’annotation de profil TCP pour spécifier la taille du tampon TCP :

     ingress.citrix.com/frontend_tcpprofile: '{"bufferSize" : "8190"}
    
  • MPTCP: Activez MPTCP et définissez la configuration MPTCP facultative. Voici un exemple d’annotation du profil TCP pour activer MPTCP et utiliser les configurations MPTCP facultatives :

     ingress.citrix.com/frontend_tcpprofile: '{"mptcp" : "enabled", "mptcpDropDataOnPreEstSF":"enabled", "mptcpFastOpen": "enabled", "mptcpSessionTimeout":"7200"}
    
  • flavor: définissez l’algorithme de contrôle de congestion TCP. Les valeurs valides sont Default, BIC, CUBIC, Westwood et Nile. Par défaut, la valeur est définie sur Par défaut. Voici un exemple d’annotation du profil TCP pour définir l’algorithme de contrôle de congestion TCP :

     ingress.citrix.com/frontend_tcpprofile: '{"flavor" : "westwood"}
    
  • Dynamic receive buffering: active ou désactive la mise en mémoire tampon de réception dynamique. Lorsqu’il est activé, il permet d’ajuster dynamiquement le tampon de réception en fonction des conditions de mémoire et du réseau. Valeurs possibles : ENABLED, DISABLED et la valeur par défaut : DISABLED.

    Remarque :

    L’argument de taille de la mémoire tampon doit être défini pour que les ajustements dynamiques aient lieu.

     ingress.citrix.com/frontend_tcpprofile: '{"dynamicReceiveBuffering" : "enabled"}
    

Défendez TCP contre les attaques par usurpation

Vous pouvez activer le Citrix ADC Ingress pour défendre le protocole TCP contre les attaques par usurpation d’identité rstWindowAttenuation à l’aide des profils TCP intégrés. Par défaut, le paramètre rstWindowAttenuation est désactivé. Ce paramètre est activé pour protéger l’entrée Citrix ADC contre l’usurpation d’identité. Si vous l’activez, il répond avec un accusé de réception correctif (ACK) pour un numéro de séquence non valide. Les valeurs possibles sont Activé ou Désactivé.

Voici un exemple d’annotation de profil TCP à activer rstWindowAttenuation sur Citrix ADC d’entrée :

ingress.citrix.com/frontend_tcpprofile: '{"rstwindowattenuate" : "enabled", "spoofSynDrop":"enabled"}
Cas d’utilisation TCP