Configuración de optimización TCP

Antes de configurar la optimización TCP, aplique las siguientes opciones de configuración básicas en el dispositivo Citrix ADC:

Configuración inicial:

enable ns feature LB IPv6PT
enable ns mode FR L3 USIP MBF Edge USNIP PMTUD
disable ns feature SP
disable ns mode TCPB
set lb parameter -preferDirectRoute NO
set lb parameter -vServerSpecificMac ENABLED
set l4param -l2ConnMethod Vlan
set rsskeytype -rsstype SYMMETRIC
set ns param -useproxyport DISABLED

Nota

Reinicie el dispositivo Citrix ADC si cambia el parámetro rsskeytype del sistema.

Terminación TCP

Para que Citrix ADC T1 aplique la optimización TCP, primero debe terminar el tráfico TCP entrante. Con este fin, se debe crear y configurar un vserver TCP comodín para interceptar el tráfico de entrada y luego reenviarlo al enrutador de Internet.

Entorno de enrutamiento estático/dinámico

Para entornos con enrutamiento estático o dinámico en su lugar, vserver puede confiar en la información de la tabla de enrutamiento para reenviar paquetes hacia el enrutador de Internet. La ruta predeterminada debe apuntar al enrutador de Internet y también las entradas de enrutamiento para las subredes del cliente hacia el enrutador inalámbrico deben estar en su lugar:

Ejemplo:

add lb vserver vsrv-wireless TCP * * -persistenceType NONE -Listenpolicy "CLIENT.VLAN.ID.EQ(100) && SYS.VSERVER("vsrv-wireless").STATE.EQ(UP)" -m IP -cltTimeout 9000
add route 0.0.0.0 0.0.0.0 192.168.2.1
add route 10.0.0.0 255.0.0.0 192.168.1.1

Entorno de VLAN a VLAN (PBR)

Existen entornos de clientes en los que el tráfico de suscriptor se segmenta a múltiples flujos y necesita ser reenviado a diferentes enrutadores en función de los parámetros de tráfico entrante. El enrutamiento basado en directivas (PBR) se puede utilizar para enrutar paquetes basados en parámetros de paquetes entrantes, como VLAN, dirección MAC, interfaz, IP de origen, puerto de origen, dirección IP de destino y puerto de destino.

Imagen localizada

Ejemplo:

add lb vserver vsrv-wireless TCP * * -m IP -l2Conn ON -listenpolicy "CLIENT.VLAN.ID.EQ(100) || CLIENT.VLAN.ID.EQ(101) || CLIENT.VLAN.ID.EQ(102)"

add ns pbr pbr-vlan100-to-vlan200 ALLOW -vlan 100 -nexthop 172.16.200.1

add ns pbr pbr-vlan101-to-vlan201 ALLOW -vlan 101 -nexthop 172.16.201.1

add ns pbr pbr-vlan102-to-vlan202 ALLOW -vlan 102 -nexthop 172.16.202.1

El uso de enrutamiento basado en directivas para enrutar el tráfico optimizado TCP es una nueva función agregada en la versión 11.1 50.10. Para versiones anteriores, tener varias entidades vserver “MAC en modo” por VLAN es una solución alternativa para entornos de varias VLAN. Cada servidor virtual tiene un servicio vinculado que representa el enrutador de Internet para el flujo en particular.

Ejemplo:

add server internet_router_1 172.16.200.1

add server internet_router_2 172.16.201.1

add server internet_router_3 172.16.202.1

add service svc-internet-1 internet_router_1 TCP * -usip YES -useproxyport NO

add service svc-internet-2 internet_router_2 TCP * -usip YES -useproxyport NO

add service svc-internet-3 internet_router_3 TCP * -usip YES -useproxyport NO

bind service svc-internet-1 -monitorName arp

bind service svc-internet-2 -monitorName arp

bind service svc-internet-3 -monitorName arp

add lb vserver vsrv-wireless-1 TCP * * -Listenpolicy "CLIENT.VLAN.ID.EQ(100) && SYS.VSERVER("vsrv-wireless-1").STATE.EQ(UP)" -m MAC -l2Conn ON

add lb vserver vsrv-wireless-2 TCP * * -Listenpolicy "CLIENT.VLAN.ID.EQ(101) && SYS.VSERVER("vsrv-wireless-2").STATE.EQ(UP)" -m MAC -l2Conn ON

add lb vserver vsrv-wireless-3 TCP * * -Listenpolicy "CLIENT.VLAN.ID.EQ(102) && SYS.VSERVER("vsrv-wireless-3").STATE.EQ(UP)" -m MAC -l2Conn ON

bind lb vserver vsrv-wireless-1 svc-internet-1

bind lb vserver vsrv-wireless-2 svc-internet-2

bind lb vserver vsrv-wireless-3 svc-internet-3

Nota

El modo vserver es MAC en contraste con ejemplos anteriores donde es el modo IP. Esto es necesario para conservar la información IP de destino cuando tenemos servicio (s) enlazado (s) a vserver. Además, la configuración de PBR adicional necesita enrutar el tráfico no optimizado.

Optimización TCP

La terminación TCP de Citrix ADC listo para usar está configurada para la funcionalidad de paso a través de TCP. El paso a través de TCP significa esencialmente que Citrix ADC T1 puede interceptar de forma transparente una secuencia TCP cliente-servidor, pero no retiene búferes de cliente/servidor independientes ni aplica ninguna técnica de optimización.

Para habilitar la optimización TCP, se utiliza un perfil TCP, denominado nstcpprofile, para especificar las configuraciones TCP que se utilizan si no se proporcionan configuraciones TCP en el nivel de servicio o servidor virtual y debe modificarse de la siguiente manera:

Comando:

add ns tcpProfile nstcpprofile -WS ENABLED -SACK ENABLED -WSVal 8 -mss 1460 -maxBurst 30 -initialCwnd 16 -oooQSize 15000 -minRTO 800 -bufferSize 4000000 -flavor BIC -dynamicReceiveBuffering ENABLED -KA ENABLED -sendBuffsize 4000000 -rstWindowAttenuate ENABLED -spoofSynDrop ENABLED -ecn ENABLED -frto ENABLED -maxcwnd 1000000 -fack ENABLED -rstMaxAck enABLED -tcpmode ENDPOINT

Nota

Si no hay ningún perfil explícitamente creado y enlazado a vserver y servicio, el perfil nstcp_default_profile está enlazado de forma predeterminada.

En caso de necesidad de múltiples perfiles TCP, se pueden crear perfiles TCP adicionales y asociarlos con el servidor virtual apropiado

Comando:

add ns tcpProfile custom_profile -WS ENABLED -SACK ENABLED -WSVal 8 -mss 1460 -maxBurst 30 -initialCwnd 16 -oooQSize 15000 -minRTO 800 -bufferSize 4000000 -flavor BIC -dynamicReceiveBuffering ENABLED -KA ENABLED -sendBuffsize 4000000 -rstWindowAttenuate ENABLED -spoofSynDrop ENABLED -ecn ENABLED -frto ENABLED -maxcwnd 1000000 -fack ENABLED -rstMaxAck enABLED -tcpmode ENDPOINT

set lb vserver vsrv-wireless -tcpProfileName custom_profile

Nota

Para implementaciones con MAC y servicio vserver -m, el mismo perfil debe estar asociado con el servicio.

set service svc-internet -tcpProfileName custom_profile

Capacidades de optimización TCP

La mayoría de las capacidades de optimización TCP relevantes de un dispositivo Citrix ADC se exponen a través de un perfil TCP correspondiente. Los parámetros típicos de CLI que deben tenerse en cuenta al crear un perfil TCP son los siguientes:

  1. Escala de ventana (WS): Escalado de ventana TCP permite aumentar el tamaño de ventana de recepción TCP más allá de 65535 bytes. Ayuda a mejorar el rendimiento TCP en general y especialmente en redes de alto ancho de banda y largo retardo. Ayuda a reducir la latencia y mejorar el tiempo de respuesta a través de TCP.
  2. Reconocimiento selectivo (SACK): TCP SACK aborda el problema de la pérdida de múltiples paquetes que reduce la capacidad de rendimiento general. Con el acuse de recibo selectivo, el receptor puede informar al remitente sobre todos los segmentos que se reciben correctamente, permitiendo al remitente solo retransmitir los segmentos que se perdieron. Esta técnica ayuda a T1 a mejorar el rendimiento general y reducir la latencia de conexión.
  3. Factor de escala de ventana (WsVal): Factor utilizado para calcular el nuevo tamaño de ventana. Debe configurarse con un valor alto para permitir que la ventana anunciada por NS sea al menos igual al tamaño del búfer.
  4. Tamaño máximo del segmento (MSS): MSS de un único segmento TCP. Este valor depende de la configuración de MTU en enrutadores intermedios y clientes finales. Un valor de 1460 corresponde a una MTU de 1500.
  5. MaxBurst: Número máximo de segmentos TCP permitidos en una ráfaga.
  6. Tamaño de la ventana de congestión inicial (InitialCwnd): El tamaño de la ventana de congestión inicial TCP determina el número de bytes que pueden estar pendientes al comienzo de la transacción. Permite a T1 enviar esos muchos bytes sin preocuparse por la congestión en el cable.
  7. Tamaño máximo de cola de paquetes OOO (OOQSize): TCP mantiene la cola Fuera de orden para mantener los paquetes OOO en la comunicación TCP. Esta configuración afecta a la memoria del sistema si el tamaño de la cola es largo, ya que los paquetes deben mantenerse en la memoria en tiempo de ejecución. Por lo tanto, esto debe mantenerse en un nivel optimizado basado en el tipo de funciones de la red y la aplicación.
  8. RTO mínimo (minRto): El tiempo de espera de retransmisión TCP se calcula en cada ACK recibido según la lógica de implementación interna. El tiempo de espera de retransmisión predeterminado ocurre en 1 segundo para empezar y esto se puede ajustar con esta configuración. Para la segunda retransmisión de estos paquetes RTO se calculará por N*2 y luego N*4… N*8… continúa hasta el último intento de retransmisión.
  9. BufferSize/SendBuffSize: Se refieren a la cantidad máxima de datos que el T1 puede recibir del servidor y el búfer internamente sin enviarlos al cliente. Deben establecerse en un valor mayor (al menos doble) que el producto de retardo de ancho de banda del canal de transmisión subyacente.
  10. sabor: Esto se refiere al algoritmo de control de congestión TCP. Los valores válidos son Default, BIC, CUBIC, Westwood y Nile.
  11. Almacenamiento enbúfer de recepción dinámico: Permite que el búfer de recepción se ajuste dinámicamente en función de las condiciones de memoria y red. Llenará el búfer tanto como sea necesario para mantener el proceso de descarga del cliente llena en lugar de llenar, leyendo con anticipación desde el servidor, un búfer de tamaño fijo, ya que este último se especifica en el perfil TCP y normalmente se basa en criterios como 2* BDP, para una conexión. Citrix ADC T1 supervisa las condiciones de red para el cliente y calcula cuánto debe leer con anticipación desde el servidor.
  12. Keep-Alive (KA): Envíe sondeos TCP keep-alive (KA) periódicos para comprobar si el par sigue activo.
  13. RstWindowAttenuate: Defender TCP contra ataques de suplantación. Responderá con ACK correctivo cuando un número de secuencia no es válido.
  14. RstMaxack: Habilita o inhabilita la aceptación de RST que está fuera de la ventana pero hace eco del número de secuencia ACK más alto.
  15. SpoofSynDrop: Caída de paquetes SYN no válidos para proteger contra la suplantación de identidad.
  16. Notificación explícita de congestión (ecn): Envía una notificación del estado de congestión de la red al remitente de los datos y toma medidas correctivas para la congestión de los datos o la corrupción de los datos.
  17. Reenviar RTO-recuperación: En caso de retransmisiones falsas, las configuraciones de control de congestión se revierten a su estado original.
  18. Ventana de congestión máxima TCP (maxcwnd): Tamaño máximo de ventana de congestión TCP configurable por el usuario.
  19. Reconocimiento directo (FACK): Para evitar la congestión TCP midiendo explícitamente el número total de bytes de datos pendientes en la red y ayudando al remitente (ya sea T1 o cliente) a controlar la cantidad de datos inyectados en la red durante los tiempos de espera de retransmisión.
  20. tcpmode: Modos de optimización TCP para perfil específico.

Para los parámetros anteriores, consulte \1] para obtener orientación sobre la selección de los valores apropiados. Para los restantes, los valores descritos en [Optimización TCP para que se aplique a la mayoría de los casos.

Desconexión silenciosa de conexiones inactivas

En una red de telecomunicaciones, casi el 50% de las conexiones TCP de un dispositivo Citrix ADC quedan inactivas y el dispositivo envía paquetes RST para cerrarlas. Los paquetes enviados a través de canales de radio activan esos canales innecesariamente, lo que causa un flujo de mensajes que a su vez hacen que el dispositivo genere un flujo de mensajes de rechazo de servicio. El perfil TCP predeterminado ahora incluye los parámetros DropAlfClosedConnonTimeout y DropestConnonTimeout, que de forma predeterminada están inhabilitados. Si habilita ambos, ni una conexión medio cerrada ni una conexión establecida hacen que se envíe un paquete RST al cliente cuando se agote el tiempo de espera de la conexión. El dispositivo solo deja caer la conexión.

set ns tcpProfile nstcpprofile  -DropHalfClosedConnOnTimeout ENABLED

set ns tcpProfile nstcpprofile  -DropEstConnOnTimeout ENABLED