Extensiones de protocolo: Arquitectura

Para lograr la extensibilidad a nivel de tráfico, el procesamiento del tráfico en un dispositivo Citrix ADC se expone como una procesoón de módulos de procesamiento independientes. El tráfico fluye a través de ellos a medida que lo procesa desde la entrada hasta la salida. Estos módulos en el proceso siguen un modelo de nada compartido. El paso de mensajes se utiliza para enviar los datos de tráfico de un módulo en el proceso al siguiente módulo.

Algunos puntos del proceso de procesamiento de tráfico se hacen extensibles, de modo que puede agregar código para personalizar el comportamiento de Citrix ADC.

Imagen localizada

De forma predeterminada, el tráfico omite un módulo programable al que no se agrega ningún código.

Imagen localizada

Comportamientos

Las interfaces programables para personalizar el manejo del tráfico se denominan comportamientos. Los comportamientos son básicamente una formalización de patrones programables comunes que están disponibles en un dispositivo Citrix ADC. Los comportamientos consisten en un conjunto predefinido de funciones de devolución de llamada de eventos. Puede implementar un comportamiento proporcionando funciones de devolución de llamada que se ajusten al comportamiento.

Por ejemplo, el comportamiento del cliente TCP consiste en una función de devolución de llamada (on_data) que procesa eventos de flujo de datos del cliente TCP. Para implementar Equilibrio de carga basado en mensajes (MBLB) para un protocolo basado en TCP, puede agregar código para esta función de devolución de llamada para procesar la secuencia de datos TCP desde el cliente y analizar la secuencia de bytes en mensajes de protocolo.

Contexto:

Las funciones de devolución de llamada en un comportamiento se llaman con un contexto, que es el estado del módulo de procesamiento. El contexto es la instancia del módulo de procesamiento. Por ejemplo, las devoluciones de llamada del comportamiento del cliente TCP se llaman con contextos diferentes para diferentes conexiones TCP de cliente.

Carga útil:

Además del contexto, las devoluciones de llamada de comportamiento pueden tener otros argumentos. Por lo general, el resto de los argumentos se pasan como carga útil, que es la colección de todos los argumentos.

Por lo tanto, las instancias del módulo de procesamiento programable se pueden ver como una combinación de estado de instancia más funciones de devolución de llamada de evento, es decir, el contexto más comportamiento. Y el tráfico fluye a través de la proceso como carga útil de eventos.

Para obtener información sobre las extensiones de API de Citrix ADC, consulte Referencia de la API de extensión Citrix ADC.

El siguiente fragmento de código muestra una función definida por el usuario para manejar eventos de flujo de datos de cliente TCP. El contexto y la carga útil se transfieren a la función mediante el código Citrix ADC. Este código simplemente reenvía los datos TCP recibidos en cada llamada al siguiente contexto del módulo de procesamiento en el proceso. En este caso, el siguiente módulo es el contexto de equilibrio de carga (LB), que es un módulo nativo de Citrix ADC.

function client.on_data(ctxt, payload)
    ns.send(ctxt.output, "DATA", {data = payload.data})
end

Extensiones de protocolo: Arquitectura