Extensions de protocole - architecture

Pour obtenir une extensibilité au niveau du trafic, le traitement du trafic sur une appliance Citrix ADC est exposé sous la forme d’un pipeline de modules de traitement distincts. Le trafic circule à travers eux pendant qu’il le traite de l’entrée à la sortie. Ces modules du pipeline suivent un modèle de rien partagé. Le passage de message est utilisé pour envoyer les données de trafic d’un module du pipeline au module suivant.

Certains points du pipeline de traitement du trafic sont extensibles, de sorte que vous pouvez ajouter du code pour personnaliser le comportement de Citrix ADC.

image localisée

Par défaut, le trafic contourne un module programmable auquel vous n’ajoutez aucun code.

image localisée

Comportements

Les interfaces programmables pour personnaliser la gestion du trafic sont appelées comportements. Les comportements sont essentiellement une formalisation des modèles programmables courants disponibles sur une appliance Citrix ADC. Les comportements sont constitués d’un ensemble prédéfini de fonctions de rappel d’événement. Vous pouvez implémenter un comportement en fournissant des fonctions de rappel conformes au comportement.

Par exemple, le comportement du client TCP consiste en une fonction de rappel (on_data) qui traite les événements de flux de données client TCP. Pour implémenter l’équilibrage de charge basé sur le message (MBLB) pour un protocole basé sur TCP, vous pouvez ajouter du code pour cette fonction de rappel afin de traiter le flux de données TCP à partir du client et d’analyser le flux d’octets dans des messages de protocole.

Contexte :

Les fonctions de rappel dans un comportement sont appelées avec un contexte, qui est l’état du module de traitement. Le contexte est l’instance du module de traitement. Par exemple, les rappels de comportement du client TCP sont appelés avec différents contextes pour différentes connexions TCP client.

Charge utile :

En plus du contexte, les rappels de comportement peuvent avoir d’autres arguments. Habituellement, le reste des arguments sont passés en tant que charge utile, qui est la collection de tous les arguments.

Ainsi, les instances du module de traitement programmable peuvent être considérées comme une combinaison d’état d’instance et de fonctions de rappel d’événement, c’est-à-dire le contexte et le comportement. Et le trafic circule à travers le pipeline comme charge utile d’événement.

Pour les extensions API Citrix ADC, reportez-vous à la section Référence de l’API de l’extension Citrix ADC.

L’extrait de code suivant montre une fonction définie par l’utilisateur pour gérer les événements de flux de données client TCP. Le contexte et la charge utile sont transmis à la fonction par le code Citrix ADC. Ce code transfère simplement les données TCP reçues dans chaque appel au contexte du module de traitement suivant dans le pipeline. Dans ce cas, le module suivant est le contexte d’équilibrage de charge (LB), qui est un module natif Citrix ADC.

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

Extensions de protocole - architecture