Citrix ADC

Cómo funciona la coincidencia de cadenas con conjuntos de patrones y conjuntos de datos

Un conjunto de patrones o un conjunto de datos contiene un conjunto de patrones, y a cada patrón se le asigna un índice único. Cuando se aplica una directiva a un paquete, una expresión identifica una cadena que se va a evaluar y el operador compara la cadena con los patrones definidos en el conjunto de patrones o conjunto de datos hasta que se encuentre una coincidencia o se hayan comparado todos los patrones. Luego, en función de su función, el operador devuelve un valor booleano que indica si se encontró o no un patrón coincidente o el índice del patrón que coincide con la cadena.

Nota: En este tema se explica el funcionamiento de un conjunto de patrones. Los conjuntos de datos funcionan de la misma manera. La única diferencia entre los conjuntos de patrones y los conjuntos de datos es el tipo de patrones definidos en el conjunto.

Considere el siguiente caso de uso para entender cómo los patrones se pueden usar para la coincidencia de cadenas.

Quiere determinar si el sufijo URL (texto de destino) contiene alguna de las extensiones de archivo de imagen. Sin usar conjuntos de patrones, tendría que definir una expresión compleja, de la siguiente manera:

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")

Si la URL tiene un sufijo de “jpg” con la expresión compuesta anterior, el dispositivo Citrix ADC debe iterar secuencialmente toda la expresión compuesta, de una subexpresión a la siguiente, para determinar que la solicitud se refiere a una imagen jpg. La siguiente figura muestra los pasos del proceso.

Imagen localizada

Cuando una expresión compuesta incluye cientos de subexpresiones, el proceso anterior requiere un uso intensivo de recursos. Una mejor alternativa es una expresión que invoca un conjunto de patrones, como se muestra en la siguiente figura.

Imagen localizada

Durante la evaluación de directivas como se muestra anteriormente, el operador (CONTAINS_ANY) compara la cadena identificada en la solicitud con los patrones definidos en el conjunto de patrones hasta que se encuentre una coincidencia. Con la expresión Sample_Patset, las múltiples iteraciones a través de seis subexpresiones se reducen a una sola.

Al eliminar la necesidad de configurar expresiones compuestas que realizan la coincidencia de cadenas con varias operaciones OR, los conjuntos de patrones o conjuntos de datos simplifican la configuración y aceleran el procesamiento de solicitudes y respuestas.

Cómo funciona la coincidencia de cadenas con conjuntos de patrones y conjuntos de datos