Extensions de protocole - architecture

Pour obtenir une extensibilité au niveau du trafic, le traitement du trafic sur une appliance NetScaler est présenté sous la forme d’un pipeline de modules de traitement distincts. Le trafic les traverse au fur et à mesure qu’il le traite de l’entrée à la sortie. Ces modules du pipeline suivent un modèle de partage nul. La transmission de messages est utilisée pour envoyer les données de trafic d’un module du pipeline au module suivant.

Certains points du pipeline de traitement du trafic sont étendus afin que vous puissiez ajouter du code pour personnaliser le comportement de NetScaler.

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 permettant de personnaliser la gestion du trafic sont appelées comportements. Les comportements sont essentiellement une formalisation de modèles programmables courants disponibles sur une appliance NetScaler. Les comportements consistent en un ensemble prédéfini de fonctions de rappel d’événements. 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 du flux de données du client TCP. Pour implémenter l’équilibrage de charge basé sur les messages (MBLB) pour un protocole TCP, vous pouvez ajouter du code pour cette fonction de rappel afin de traiter le flux de données TCP provenant du client et d’analyser le flux d’octets en messages de protocole.

Contexte :

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

Charge utile :

En plus du contexte, les fonctions de rappel de comportement peuvent comporter d’autres arguments. Habituellement, le reste des arguments est passé 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 de fonctions d’état d’instance et 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 de l’API NetScaler, consultez la référence de l’API de l’extension NetScaler.

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 NetScaler. Ce code transmet simplement les données TCP reçues lors de chaque appel au contexte du module de traitement suivant du pipeline. Dans ce cas, le module suivant est le contexte d’équilibrage de charge (LB), qui est un module natif NetScaler.

function client.on_data(ctxt, payload)
    ns.send(ctxt.output, "DATA", {data = payload.data})
end
<!--NeedCopy-->
Extensions de protocole - architecture