Citrix ADC

AppFlow

El dispositivo Citrix ADC es un punto central de control para todo el tráfico de aplicaciones en el centro de datos. Recopila información de flujo y nivel de sesión de usuario valiosa para aplicaciones de supervisión del rendimiento de las aplicaciones, análisis e inteligencia empresarial. También recopila datos de rendimiento de la página web e información de la base de datos. AppFlow transmite la información mediante el formato de Internet Protocol Flow Information Export (IPFIX), que es un estándar abierto de Internet Engineering Task Force (IETF) definido en RFC 5101. IPFIX (la versión estandarizada de NetFlow de Cisco) se utiliza ampliamente para supervisar la información de flujo de red. AppFlow define nuevos elementos de información para representar información a nivel de aplicación, datos de rendimiento de página web e información de base de datos.

Con UDP como protocolo de transporte, AppFlow transmite los datos recopilados, denominados registros de flujo, a uno o más recopiladores IPv4. Los recopiladores agregan los registros de flujo y generan informes históricos o en tiempo real.

AppFlow proporciona visibilidad en el nivel de transacción para flujos HTTP, SSL, TCP, SSL_TCP y HDX Insight. Puede muestrear y filtrar los tipos de flujo que quiere supervisar.

Nota

Para obtener más información sobre HDX Insight, consulte HDX Insight.

AppFlow utiliza acciones y directivas para enviar registros de un flujo seleccionado a un conjunto específico de recopiladores. Una acción AppFlow especifica qué conjunto de recopiladores reciben los registros AppFlow. Las directivas, que se basan en expresiones avanzadas, se pueden configurar para seleccionar flujos para los que se envían registros de flujo a los recopiladores especificados por la acción AppFlow asociada.

Para limitar los tipos de flujos, puede habilitar AppFlow para un servidor virtual. AppFlow también puede proporcionar estadísticas para el servidor virtual.

También puede habilitar AppFlow para un servicio específico, que represente un servidor de aplicaciones, y supervisar el tráfico a ese servidor de aplicaciones.

Nota: Esta función solo se admite en compilaciones Citrix ADC nCore.

Cómo funciona AppFlow

En el caso de implementación más común, el tráfico entrante fluye a una dirección IP virtual (VIP) en el dispositivo Citrix ADC y se equilibra la carga a un servidor. El tráfico saliente fluye desde el servidor a una dirección IP asignada o de subred en Citrix ADC y desde el VIP al cliente. Un flujo es una colección unidireccional de paquetes IP identificados por las siguientes cinco tuplas: SourceIP, sourcePort, destTip, destPort y protocolo.

La siguiente figura describe cómo funciona la función AppFlow.

Ilustración 1. Secuencia de flujo Citrix ADC

secuencia de flujo

Como se muestra en la figura, los identificadores de flujo de red para cada tramo de una transacción dependen de la dirección del tráfico.

Los diferentes flujos que forman un registro de flujo son:

Flujo1: <Client-IP, Client-Port, VIP-IP, VIP-port, Protocol>

Flujo2: <NS-MIP/SNIP, NS-port, Server-IP, Server-Port, Protocol>

Flujo3: <Server-IP, Server-Port, NS-MIP/SNIP, NS-Port, Protocol>

Flujo4: <VIP-IP, VIP-port, Client-IP, Client-Port, Protocol>

Para ayudar al recopilador a vincular los cuatro flujos de una transacción, AppFlow agrega un elemento TransactionID personalizado a cada flujo. Para la conmutación de contenido a nivel de aplicación, como HTTP, es posible que una conexión TCP de cliente único se balancee la carga con diferentes conexiones TCP de back-end para cada solicitud. AppFlow proporciona un conjunto de registros para cada transacción.

Registros de flujo

Los registros de AppFlow contienen información estándar de NetFlow o IPFIX, como marcas de tiempo para el inicio y el final de un flujo, recuento de paquetes y recuento de bytes. Los registros de AppFlow también contienen información de nivel de aplicación (como direcciones URL HTTP, métodos de solicitud HTTP y códigos de estado de respuesta, tiempo de respuesta del servidor y latencia). Datos de rendimiento de la página web (como el tiempo de carga de la página, el tiempo de procesamiento de la página y el tiempo dedicado a la página). E información de base de datos (como protocolo de base de datos, estado de respuesta de base de datos y tamaño de respuesta de base de datos) Los registros de flujo IPFIX se basan en plantillas que deben enviarse antes de enviar registros de flujo.

Plantillas

AppFlow define un conjunto de plantillas, una para cada tipo de flujo. Cada plantilla contiene un conjunto de elementos de información (IE) estándar y elementos de información específicos de la empresa (EIE). Las plantillas IPFIX definen el orden y los tamaños de los elementos de información (Internet Explorer) en el registro de flujo. Las plantillas se envían a los recopiladores a intervalos regulares, como se describe en RFC 5101.

Una plantilla puede incluir las siguientes EIE:

  • TransactionID

    Número de 32 bits sin firmar que identifica una transacción a nivel de aplicación. Para HTTP, corresponde a un par de solicitud y respuesta. Todos los registros de flujo que corresponden a este par de solicitudes y respuestas tienen el mismo identificador de transacción. En el caso más común, hay cuatro registros de flujo único que corresponden a esta transacción. Si Citrix ADC genera la respuesta por sí mismo (servida desde la caché integrada o mediante una directiva de seguridad), es posible que solo haya dos registros de flujo para esta transacción.

  • ID de conexión

    Número de 32 bits sin firmar que identifica una conexión de capa 4 (TCP o UDP). Los flujos de Citrix ADC son bidireccionales, con dos registros de flujo independientes para cada dirección del flujo. Este elemento de información se puede utilizar para vincular los dos flujos.

    Para Citrix ADC, un ConnectionID es un identificador para que la estructura de datos de conexión realice un seguimiento del progreso de una conexión. En una transacción HTTP, por ejemplo, un ConnectionID dado podría tener varios elementos transactionID correspondientes a varias solicitudes que se realizaron en esa conexión.

  • TCPRTT

    El tiempo de ida y vuelta, en milisegundos, medido en la conexión TCP. Se puede utilizar como métrica para determinar la latencia del cliente o del servidor en la red.

  • HttpRequestMethod

    Un número de 8 bits que indica el método HTTP utilizado en la transacción. Se envía una plantilla de opciones con la asignación de número a método junto con la plantilla.

  • HttpRequestSize

    Un número de 32 bits sin firmar que indica el tamaño de la carga útil de la solicitud.

  • HttpRequestURL

    La URL HTTP solicitada por el cliente.

  • HttpUserAgent

    Origen de las solicitudes entrantes al servidor web.

  • HttpResponseStatus

    Un número de 32 bits sin firmar que indica el código de estado de la respuesta.

  • HttpResponseSize

    Un número de 32 bits sin firmar que indica el tamaño de la respuesta.

  • HttpResponseTimeToFirstByte

    Número de 32 bits sin signo que indica el tiempo necesario para recibir el primer byte de la respuesta.

  • HttpResponseTimetolastByte

    Un número de 32 bits sin firmar que indica el tiempo necesario para recibir el último byte de la respuesta.

  • FlowFlags

    Indicador de 64 bits sin signo que se utiliza para indicar diferentes condiciones de flujo.

EIE para datos de rendimiento de páginas web

  • ClientInteractionStartTime

    Hora en la que el explorador recibe el primer byte de la respuesta para cargar cualquier objeto de la página, como imágenes, scripts y hojas de estilo.

  • clientInteractionEndTime

    Hora en la que el explorador recibió el último byte de respuesta para cargar todos los objetos de la página, como imágenes, scripts y hojas de estilo.

  • clientRenderStartTime

    Hora en la que el explorador comienza a representar la página.

  • clientRenderEndTime

    Hora en la que un explorador terminó de renderizar toda la página, incluidos los objetos incrustados.

EIE para información sobre bases de datos

  • dbProtocolName

    Un número de 8 bits sin firmar que indica el protocolo de base de datos. Los valores válidos son 1 para MS SQL y 2 para MySQL.

  • dbReqType

    Número de 8 bits sin signo que indica el método de solicitud de base de datos utilizado en la transacción. Para MS SQL, los valores válidos son 1 es para QUERY, 2 es para TRANSACTION y 3 es para RPC. Para obtener valores válidos para MySQL, consulte la documentación de MySQL.

  • dbReqString

    Indica la cadena de solicitud de base de datos sin el encabezado.

  • dbRespStatus

    Número de 64 bits sin firmar que indica el estado de la respuesta de la base de datos recibida desde el servidor web.

  • dbRespLength

    Un número de 64 bits sin firmar que indica el tamaño de la respuesta.

  • dbRespStatString

    La cadena de estado de respuesta recibida del servidor web.

AppFlow