Protokollerweiterungen - Architektur

Um Erweiterbarkeit auf Traffic-Ebene zu erreichen, wird die Datenverkehrsverarbeitung auf einer Citrix ADC Appliance als Pipeline von separaten Verarbeitungsmodulen bereitgestellt. Der Verkehr fließt durch sie, während er ihn vom Ein- bis zum Ausstieg verarbeitet. Diese Module in der Pipeline folgen einem Shared Nothing Modell. Die Nachrichtenübergabe wird verwendet, um die Verkehrsdaten von einem Modul in der Pipeline an das nächste Modul zu senden.

Bestimmte Punkte in der Datenverarbeitungspipeline werden erweiterbar, sodass Sie Code hinzufügen können, um das Verhalten von Citrix ADC anzupassen.

lokalisierte Grafik

Standardmäßig umgeht der Datenverkehr ein programmierbares Modul, dem Sie keinen Code hinzufügen.

lokalisierte Grafik

Verhaltensweisen

Die programmierbaren Schnittstellen zur Anpassung der Traffic-Handling werden als Verhaltensweisen bezeichnet. Verhaltensweisen sind im Grunde eine Formalisierung gängiger programmierbarer Muster, die auf einer Citrix ADC Appliance verfügbar sind. Die Verhaltensweisen bestehen aus einem vordefinierten Satz von Ereignis-Callback-Funktionen. Sie können ein Verhalten implementieren, indem Sie Callback-Funktionen bereitstellen, die dem Verhalten entsprechen.

Das TCP-Clientverhalten besteht beispielsweise aus einer Callback-Funktion (on_data), die TCP-Client-Datenstream-Ereignisse verarbeitet. Um Message Based Load Balancing (MBLB) für ein TCP-basiertes Protokoll zu implementieren, können Sie Code für diese Callback-Funktion hinzufügen, um den TCP-Datenstrom vom Client zu verarbeiten und den Bytestream in Protokollmeldungen zu analysieren.

Kontext:

Die Callback-Funktionen in einem Verhalten werden mit einem Kontext aufgerufen, der der Verarbeitungsmodulstatus ist. Der Kontext ist die Instanz des Verarbeitungsmoduls. Beispielsweise werden die TCP-Clientverhalten Callbacks mit unterschiedlichen Kontexten für verschiedene Client-TCP-Verbindungen aufgerufen.

Nutzlast:

Zusätzlich zum Kontext können die Verhaltensrückrufe andere Argumente haben. Normalerweise werden die restlichen Argumente als Payload übergeben, was die Sammlung aller Argumente ist.

So können die programmierbaren Verarbeitungsmodulinstanzen als eine Kombination aus Instanzstatus plus Ereignisrückruffunktionen gesehen werden, dh dem Kontext plus Verhalten. Und der Verkehr fließt durch die Pipeline als Ereignisnutzlast.

Informationen zu Citrix ADC API-Erweiterungen finden Sie unter Referenz zur Citrix ADC-Erweiterung.

Das folgende Code-Snippet zeigt eine benutzerdefinierte Funktion zum Behandeln von TCP-Clientdatenstromereignissen. Der Kontext und die Nutzlast werden durch Citrix ADC Code an die Funktion übergeben. Dieser Code leitet die bei jedem Aufruf empfangenen TCP-Daten einfach an den nächsten Verarbeitungsmodulkontext in der Pipeline weiter. In diesem Fall ist das nächste Modul der Load Balancing (LB) -Kontext, bei dem es sich um ein natives Citrix ADC Modul handelt.

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