Citrix ADC

Funktionsweise von Zeichenfolgenabgleich mit Mustersätzen und Datensätzen

Ein Mustersatz oder ein Datensatz enthält einen Satz von Mustern, und jedem Muster wird ein eindeutiger Index zugewiesen. Wenn eine Richtlinie auf ein Paket angewendet wird, identifiziert ein Ausdruck eine Zeichenfolge, die ausgewertet werden soll, und der Operator vergleicht die Zeichenfolge mit den Mustern, die im Mustersatz oder im Datensatz definiert sind, bis eine Übereinstimmung gefunden oder alle Muster verglichen wurden. Anschließend gibt der Operator je nach Funktion entweder einen booleschen Wert zurück, der angibt, ob ein übereinstimmendes Muster gefunden wurde oder nicht, oder den Index des Musters, das mit der Zeichenfolge übereinstimmt.

Hinweis: In diesem Thema wird die Arbeit eines Mustersatzes erläutert. Datensätze funktionieren auf die gleiche Weise. Der einzige Unterschied zwischen Mustersätzen und Datensätzen ist die Art der Muster, die in der Menge definiert sind.

Betrachten Sie den folgenden Anwendungsfall, um zu verstehen, wie Muster für String-Matching verwendet werden können.

Sie möchten ermitteln, ob das URL-Suffix (Zieltext) eine der Bilddateierweiterungen enthält. Ohne Mustersätze zu verwenden, müssten Sie einen komplexen Ausdruck wie folgt definieren:

HTTP.REQ.URL.SUFFIX.CONTAINS("svg") ¦¦ HTTP.REQ.URL.SUFFIX.CONTAINS("bmp") ¦¦ HTTP.REQ.URL.SUFFIX.CONTAINS("png") ¦¦
HTTP.REQ.URL.SUFFIX.CONTAINS("gif") ¦¦ HTTP.REQ.URL.SUFFIX.CONTAINS("tiff") ¦¦ HTTP.REQ.URL.SUFFIX.CONTAINS("jpg")

Wenn die URL das Suffix jpg mit dem obigen zusammengesetzten Ausdruck aufweist, muss die Citrix ADC Appliance den gesamten zusammengesetzten Ausdruck sequenziell von einem Unterausdruck zum nächsten durchlaufen, um festzustellen, dass sich die Anforderung auf ein jpg-Bild bezieht. Die folgende Abbildung zeigt die Schritte im Prozess.

lokalisiertes Bild

Wenn ein zusammengesetzter Ausdruck Hunderte von Unterausdrücken enthält, ist der obige Prozess ressourcenintensiv. Eine bessere Alternative ist ein Ausdruck, der einen Mustersatz aufruft, wie in der folgenden Abbildung gezeigt.

lokalisiertes Bild

Während der Richtlinienauswertung, wie oben dargestellt, vergleicht der Operator (CONTAINS_ANY) die in der Anforderung identifizierte Zeichenfolge mit den Mustern, die im Mustersatz definiert sind, bis eine Übereinstimmung gefunden wird. Mit dem Sample_Patset-Ausdruck werden die mehrfachen Iterationen durch sechs Unterausdrücke auf nur einen reduziert.

Da keine Notwendigkeit besteht, zusammengesetzte Ausdrücke zu konfigurieren, die String-Matching mit mehreren ODER Operationen durchführen, vereinfachen Mustersätze oder Datensätze die Konfiguration und beschleunigen die Verarbeitung von Anfragen und Antworten.

Funktionsweise von Zeichenfolgenabgleich mit Mustersätzen und Datensätzen