Configuración de optimización de TCP
Antes de configurar la optimización de TCP, aplique los siguientes parámetros de configuración básicos en el dispositivo NetScaler:
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
<!--NeedCopy-->
Nota
Reinicie el dispositivo NetScaler si cambia el parámetro del sistema rsskeytype.
Terminación TCP
Para que NetScaler T1 aplique la optimización de TCP, primero debe terminar el tráfico TCP entrante. Para ello, se debe crear y configurar un servidor virtual TCP comodín para interceptar el tráfico de entrada y, a continuación, reenviarlo al enrutador de Internet.
Entorno de redirección estática o dinámica
Para entornos con redirección estática o dinámica en su lugar, vserver puede confiar en la información de la tabla de redirecciones para reenviar paquetes hacia el enrutador de Internet. La ruta predeterminada debe apuntar al enrutador de Internet y también las entradas de redirección 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
<!--NeedCopy-->
Entorno de VLAN a VLAN (PBR)
Hay entornos de clientes en los que el tráfico de suscriptores se segmenta en varios flujos y debe reenviarse a diferentes enrutadores en función de los parámetros del tráfico entrante. La redirección 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.
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
<!--NeedCopy-->
El uso de redirección basada en directivas para enrutar el tráfico optimizado TCP es una nueva función agregada en la versión 11.1 50.10. En versiones anteriores, tener varias entidades de servidor virtual “en modo MAC” por VLAN es una solución alternativa para entornos de múltiples VLAN. Cada servidor virtual tiene un servicio enlazado 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
<!--NeedCopy-->
Nota:
El modo vserver es MAC, a diferencia de los ejemplos anteriores en los que es el modo IP. Esto es necesario para conservar la información IP de destino cuando tenemos servicios enlazados a vserver. Además, la configuración PBR adicional debe enrutar el tráfico no optimizado.
Optimización TCP
La terminación TCP de NetScaler lista para usar está configurada para la funcionalidad de transferencia de TCP. Básicamente, la transferencia de TCP significa que NetScaler T1 puede interceptar de forma transparente un flujo TCP cliente-servidor, pero no conserva búferes cliente/servidor separados ni aplica ninguna técnica de optimización.
Para habilitar la optimización de TCP, se utiliza un perfil TCP, denominado nstcpprofile, para especificar las configuraciones de TCP que se utilizan si no se proporciona ninguna configuración de TCP a nivel de servicio o servidor virtual, y se debe modificar 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
<!--NeedCopy-->
Nota:
Si no hay ningún perfil creado explícitamente y enlazado a vserver y service, el perfil nstcp_default_profile está enlazado de forma predeterminada.
En caso de que se requieran varios perfiles TCP, se pueden crear perfiles TCP adicionales y asociarlos al servidor virtual correspondiente
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
<!--NeedCopy-->
Nota:
Para las implementaciones con vserver -m MAC y service, se debe asociar el mismo perfil al servicio.
set service svc-internet -tcpProfileName custom_profile
<!--NeedCopy-->
Capacidades de optimización de TCP
La mayoría de las capacidades de optimización de TCP relevantes de un dispositivo NetScaler se exponen a través del perfil TCP correspondiente. Los parámetros de CLI típicos que se deben tener en cuenta al crear un perfil TCP son los siguientes:
- Escalado de ventanas (WS): el escalado de ventanas TCP permite aumentar el tamaño de la ventana de recepción de TCP más allá de los 65535 bytes. Ayuda a mejorar el rendimiento de TCP en general y especialmente en redes de gran ancho de banda y larga demora. Ayuda a reducir la latencia y a mejorar el tiempo de respuesta a través de TCP.
- Reconocimiento selectivo (SACK): TCP SACK aborda el problema de la pérdida de múltiples paquetes, lo que reduce la capacidad de procesamiento general. Con el acuse de recibo selectivo, el receptor puede informar al remitente sobre todos los segmentos que se han recibido correctamente, lo que permite al remitente retransmitir solo los segmentos que se perdieron. Esta técnica ayuda a T1 a mejorar el rendimiento general y a reducir la latencia de la conexión.
- Factor de escalado de ventana (WSVal): factor utilizado para calcular el tamaño de la nueva 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.
- Tamaño máximo de segmento (MSS): MSS de un solo 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.
- maxBurst: número máximo de segmentos TCP permitido en una ráfaga.
- Tamaño de la ventana de congestión inicial (initialCWND): el tamaño de la ventana de congestión inicial de TCP determina la cantidad de bytes que pueden quedar pendientes al inicio de la transacción. Permite que T1 envíe esa cantidad de bytes sin preocuparse por la congestión del cable.
- Tamaño máximo de cola de paquetes OOO (OOOQSize): TCP mantiene la cola fuera de servicio 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 de ejecución. Por lo tanto, esto debe mantenerse a un nivel optimizado en función del tipo de red y las características de la aplicación.
- RTO mínimo (MinRTO): el tiempo de espera de la retransmisión de TCP se calcula en cada ACK recibido en función de la lógica de implementación interna. El tiempo de espera de retransmisión predeterminado comienza en 1 segundo y se puede modificar con esta configuración. Para la segunda retransmisión de estos paquetes, N*2 calculará el RTO y luego N*4… N*8… continuará hasta el último intento de retransmisión.
- bufferSize/sendBuffSize: se refieren a la cantidad máxima de datos que el T1 puede recibir del servidor y del búfer internamente sin enviarlos al cliente. Deben establecerse en un valor mayor (al menos doble) que el producto de demora de ancho de banda del canal de transmisión subyacente.
- sabor: se refiere al algoritmo de control de congestión TCP. Los valores válidos son Default, BIC, CUBIC, Westwood y Nile.
- Búfer de recepción dinámico: permite ajustar dinámicamente el búfer de recepción en función de las condiciones de la memoria y la red. Llenará el búfer tanto como sea necesario para mantener lleno el canal de descarga del cliente en lugar de llenar, según el servidor, un búfer de tamaño fijo, ya que este último se especifica en el perfil TCP y, por lo general, se basa en criterios como 2*BDP, para una conexión. El NetScaler T1 monitorea las condiciones de la red para que el cliente estime la cantidad que debe leer con antelación desde el servidor.
- Keep-Alive (KA): envíe sondas TCP keep-alive (KA) periódicas para comprobar si el par sigue activo.
- RSTWindowAtenuate: defendiendo TCP contra los ataques de suplantación de identidad. Responderá con un ACK correctivo cuando un número de secuencia no sea válido.
- RSTmaxACK: habilita o inhabilita la aceptación de un RST que esté fuera de la ventana pero que muestre el número de secuencia ACK más alto.
- SpoofSynDrop: eliminación de paquetes SYN no válidos para protegerse contra la suplantación de identidad.
- Notificación de congestión explícita (ecn): envía una notificación del estado de congestión de la red al remitente de los datos y toma medidas correctivas en caso de congestión o corrupción de los datos.
- RTO-Recoverydirecto: en caso de retransmisiones espurias, las configuraciones de control de congestión se revierten a su estado original.
- Ventana de congestión máxima de TCP (maxcwnd): tamaño máximo de ventana de congestión de TCP configurable por el usuario.
- Reconocimiento de reenvío (FACK): para evitar la congestión del TCP midiendo explícitamente el número total de bytes de datos pendientes en la red y ayudando al remitente (ya sea T1 o un cliente) a controlar la cantidad de datos inyectados en la red durante los tiempos de esperade la retransmisión.
- tcpmode: modos de optimización de TCP para un perfil específico. Hay dos modos de optimización de TCP: Transparent y Endpoint.
- Punto final. En este modo, el dispositivo administra las conexiones del cliente y del servidor por separado.
- Transparente. En el modo transparente, los clientes necesitan acceder a los servidores directamente, sin que intervenga ningún servidor virtual. Las direcciones IP del servidor deben ser públicas porque los clientes deben poder acceder a ellas.
Eliminar silenciosamente las conexiones inactivas
En una red de telecomunicaciones, casi el 50 por ciento de las conexiones TCP de un dispositivo NetScaler quedan inactivas y el dispositivo envía paquetes RST para cerrarlas. Los paquetes enviados a través de los canales de radio activan esos canales innecesariamente, lo que provoca una avalancha de mensajes que, a su vez, hace que el dispositivo genere una avalancha de mensajes de rechazo del servicio. El perfil TCP predeterminado ahora incluye los parámetros dropHalfClosedConnonTimeout y dropEstConnonTimeout, que están inhabilitados de forma predeterminada. Si habilita ambas, ni una conexión semicerrada ni una conexión establecida harán que se envíe un paquete RST al cliente cuando se agote el tiempo de espera de la conexión. El dispositivo simplemente interrumpe la conexión.
set ns tcpProfile nstcpprofile -DropHalfClosedConnOnTimeout ENABLED
set ns tcpProfile nstcpprofile -DropEstConnOnTimeout ENABLED
<!--NeedCopy-->