ADC

Expresiones de directivas avanzadas: Direcciones IP y MAC, rendimiento, ID de VLAN

Puede utilizar prefijos de expresión de directiva avanzada que devuelven direcciones IPv4 e IPv6, direcciones MAC, subredes IP, datos útiles de cliente y servidor, como las tasas de rendimiento en los puertos de interfaz (Rx, Tx y RxTx) y los identificadores de las VLAN a través de las cuales se reciben los paquetes. A continuación, puede utilizar varios operadores para evaluar los datos devueltos por estos prefijos de expresión.

Expresiones para direcciones IP y subredes IP

Puede utilizar expresiones de directiva avanzadas para evaluar direcciones y subredes que están en formato Protocolo de Internet versión 4 (IPv4) o Protocolo de Internet versión 6 (IPv6). Los prefijos de expresión para direcciones y subredes IPv6 incluyen IPv6 en el prefijo. Los prefijos de expresión para direcciones y subredes IPv4 incluyen IP en el prefijo. A continuación se muestra un ejemplo de una expresión que identifica si una solicitud se ha originado de una subred IPv4 determinada.

client.ip.src.in_subnet(147.1.0.0/16)
<!--NeedCopy-->

A continuación se presentan dos ejemplos de directivas de reescritura que examinan la subred desde la que se recibe el paquete y realizan una acción de reescritura en el encabezado Host. Con estas dos directivas configuradas, la acción de reescritura que se realiza depende de la subred de la solicitud. Estas dos directivas evalúan las direcciones IP que están en formato de dirección IPv4.

- add rewrite action URL1-rewrite-action replace "http.req.header("Host")" ""www.mycompany1.com""
- add rewrite policy URL1-rewrite-policy "http.req.header("Host").contains("www.test1.com") && client.ip.src.in_subnet(147.1.0.0/16)" URL1-rewrite-action
- add rewrite action URL2-rewrite-action replace "http.req.header("Host")" ""www.mycompany2.com""
- add rewrite policy URL2-rewrite-policy "http.req.header("Host").contains("www.test2.com") && client.ip.src.in_subnet(10.202.0.0/16)" URL2-rewrite-action
<!--NeedCopy-->

Nota

Los ejemplos anteriores son comandos que escribe en la interfaz de línea de comandos (CLI) de Citrix ADC y, por lo tanto, cada comilla debe ir precedida de una barra diagonal inversa (\). Para obtener más información, consulte Configuración de expresiones de directivas avanzadas en una directiva. “

Prefijos para direcciones IPv4 y subredes IP

En la tabla siguiente se describen los prefijos que devuelven direcciones y subredes IPv4 y segmentos de direcciones IPv4. Puede utilizar operadores numéricos y operadores específicos de direcciones IPv4 con estos prefijos. Para obtener más información sobre las operaciones numéricas, consulte “Operaciones básicas con prefijos de expresión” y “Operaciones compuestas para números. “

Cuadro 1 Prefijos que evalúan direcciones IP y MAC

Prefix Descripción
CLIENT.IP.SRC Devuelve la IP de origen del paquete actual como una dirección IP o como un número.
CLIENT.IP.DST Devuelve la dirección IP de destino del paquete actual como una dirección IP o como un número.
SERVER.IP.SRC Devuelve la IP de origen del paquete actual como una dirección IP o como un número.
SERVER.IP.DST Devuelve la dirección IP de destino del paquete actual como una dirección IP o como un número.

Operaciones para direcciones IPv4

La tabla Prefijo para operaciones IPV4 describe los operadores que se pueden utilizar con prefijos que devuelven una dirección IPv4.

Acerca de las expresiones IPv6

El formato de dirección IPv6 permite más flexibilidad que el formato IPv4 anterior. Las direcciones IPv6 están en formato hexadecimal (RFC 2373). En los ejemplos siguientes, el ejemplo 1 es una dirección IPv6, el ejemplo 2 es una dirección URL que incluye la dirección IPv6 y el ejemplo 3 incluye la dirección IPv6 y un número de puerto.

Ejemplo 1:

9901:0ab1:22a2:88a3:3333:4a4b:5555:6666
<!--NeedCopy-->

Ejemplo 2:

http://[9901:0ab1:22a2:88a3:3333:4a4b:5555:6666]/
<!--NeedCopy-->

Ejemplo 3:

https://[9901:0ab1:22a2:88a3:3333:4a4b:5555:6666]:8080/
<!--NeedCopy-->

En el ejemplo 3, los corchetes separan la dirección IP del número de puerto (8080).

Tenga en cuenta que solo puede utilizar el operador ‘+’ para combinar expresiones IPv6 con otras expresiones. La salida es una concatenación de los valores de cadena que se devuelven de las expresiones individuales. No se puede utilizar ningún otro operador aritmético con una expresión IPv6. La siguiente sintaxis es un ejemplo:

client.ipv6.src + server.ip.dst
<!--NeedCopy-->

Por ejemplo, si la dirección IPv6 de origen del cliente es ABCD:1234::ABCD, y la dirección IPv4 de destino del servidor es 10.100.10.100, la expresión anterior devuelve "ABCD:1234::ABCD10.100.10.100".

Tenga en cuenta que cuando el dispositivo Citrix ADC recibe un paquete IPv6, asigna una dirección IPv4 temporal de un intervalo de direcciones IPv4 no utilizado y cambia la dirección de origen del paquete a esta dirección temporal. En el momento de respuesta, la dirección de origen del paquete saliente se reemplaza por la dirección IPv6 original.

Nota

Puede combinar una expresión IPv6 con cualquier otra expresión excepto una expresión que produzca un resultado booleano.

Prefijos de expresión para direcciones IPv6

Las direcciones IPv6 devueltas por los prefijos de expresión de la tabla siguiente se pueden tratar como datos de texto. Por ejemplo, el prefijo client.ipv6.dst devuelve la dirección IPv6 de destino como una cadena que se puede evaluar como texto.

En la tabla siguiente se describen los prefijos de expresión que devuelven una dirección IPv6.

Tabla 3. Prefijos de expresión IPv6 que devuelven texto

Prefix Descripción
CLIENT.IPV6 Funciona en la dirección IPv6 con el paquete actual.
CLIENT.IPV6.DST Devuelve la dirección IPv6 en el campo de destino del encabezado IP.
CLIENT.IPV6.SRC Devuelve la dirección IPv6 en el campo de origen del encabezado IP. A continuación se presentan ejemplos: client.ipv6.src.in_subnet(2007::2008/64) client.ipv6.src.get1.le(2008)
SERVIDOR.IPV6 Funciona en la dirección IPv6 con el paquete actual.
SERVER.IPV6.DST Devuelve la dirección IPv6 en el campo de destino del encabezado IP.
SERVER.IPV6.SRC Devuelve la dirección IPv6 en el campo de origen del encabezado IP. A continuación se presentan ejemplos: server.ipv6.src.in_subnet(2007::2008/64) server.ipv6.src.get1.le(2008)

Operaciones para prefijos IPv6

En la siguiente tabla se describen los operadores que se pueden utilizar con prefijos que devuelven una dirección IPv6:

Tabla 4. Operaciones que evalúan direcciones IPv6

Operación IPv6 Descripción
<ipv6>.EQ(<IPv6_address> Devuelve un valor booleano TRUE si el valor de la dirección IP es el mismo que el <IPv6_address> argumento. A continuación se muestra un ejemplo: client.ipv6.dst.eq(ABCD:1234::ABCD)
<ipv6>.GET1. . .GET8 Devuelve un segmento de una dirección IPv6 como un número. Las expresiones de ejemplo siguientes recuperan segmentos de la dirección ipv6 1000:1001:CD10:0000:0000:89AB:4567:CDEF: client.ipv6.dst.get5 extracts 0000, que es el quinto conjunto de bits de la dirección. client.ipv6.dst.get6 extracts 89AB. client.ipv6.dst.get7 extracts 4567. Puede realizar operaciones numéricas en estos segmentos. Tenga en cuenta que no puede realizar operaciones numéricas al recuperar una dirección IPv6 completa. Esto se debe a que las expresiones que devuelven una dirección IPv6 completa, como CLIENT.IPV6.SRC, devuelven la dirección en formato de texto.
<ipv6>.IN_SUBNET(<subnet>) Devuelve un valor booleano TRUE si el valor de la dirección IPv6 está en la subred especificada por el <subnet> argumento. A continuación se muestra un ejemplo: client.ipv6.dst.eq(1000:1001:CD10:0000:0000:89AB:4567:CDEF/60)
<ipv6>.IS_IPV4 Devuelve un valor booleano TRUE si se trata de un cliente IPv4, y devuelve un valor booleano FALSE si no lo es.
<ipv6>.SUBNET(<n>) Devuelve la dirección IPv6 después de aplicar la máscara de subred especificada como argumento. La máscara de subred puede tomar valores entre 0 y 128. Por ejemplo: CLIENT.IPV6.SRC.SUBNET(24)

Expresiones para direcciones MAC

Una dirección MAC consta de valores hexadecimales delimitados por dos puntos en el formato ##: ##: ##: ##: ##, donde cada “#” representa un número comprendido entre 0 y 9 o una letra de A a F. Los prefijos y operadores de expresión de sintaxis predeterminados están disponibles para evaluar las direcciones MAC de origen y destino.

Prefijos para direcciones MAC

En la tabla siguiente se describen los prefijos que devuelven direcciones MAC.

Tabla 5. Prefijos que evalúan direcciones MAC

Prefix Descripción
client.ether.dstmac Devuelve la dirección MAC en el campo de destino del encabezado Ethernet.
client.ether.srcmac Devuelve la dirección MAC en el campo de origen del encabezado Ethernet.

Operaciones para direcciones MAC

En la siguiente tabla se describen los operadores que se pueden utilizar con prefijos que devuelven una dirección MAC.

Tabla 6. Operaciones en direcciones MAC

Prefix Descripción
<mac address>.EQ(<address>) Devuelve un valor booleano TRUE si el valor de la dirección MAC es el mismo que el <address> argumento.
<mac address>.GET1. . .GET4 Devuelve un valor numérico extraído del segmento de la dirección MAC que se especifica en la operación GET. Por ejemplo, si la dirección MAC es 12:34:56:78:9a:bc, lo siguiente devuelve 34: client.ether.dstmac.get2

Expresiones para datos numéricos de cliente y servidor

En la tabla siguiente se describen los prefijos para trabajar con datos numéricos de cliente y servidor, incluidos el rendimiento, los números de puerto y los ID de VLAN.

Tabla 7. Prefijos que evalúan datos numéricos de cliente y servidor

Prefix Descripción
client.interface.rxthroughput Devuelve un entero que representa el rendimiento de tráfico recibido sin procesar en kilobytes por segundo (Kbps) durante los siete segundos anteriores.
client.interface.txthroughput Devuelve un entero que representa el rendimiento de tráfico transmitido sin procesar en Kbps durante los siete segundos anteriores.
client.interface.rxtxthroughput Devuelve un entero que representa el rendimiento de tráfico sin procesar recibido y transmitido en Kbps durante los siete segundos anteriores.
server.interface.rxthroughput Devuelve un entero que representa el rendimiento de tráfico recibido sin procesar en Kbps durante los siete segundos anteriores.
server.interface.txthroughput Devuelve un entero que representa el rendimiento de tráfico transmitido sin procesar en Kbps durante los siete segundos anteriores.
server.interface.rxtxthroughput Devuelve un entero que representa el rendimiento de tráfico sin procesar recibido y transmitido en Kbps durante los siete segundos anteriores.
server.vlan.id Devuelve un ID numérico de la VLAN a través de la cual el paquete actual introdujo el dispositivo Citrix ADC.
client.vlan.id Devuelve un ID numérico para la VLAN a través de la cual el paquete actual introdujo el dispositivo Citrix ADC.
Expresiones de directivas avanzadas: Direcciones IP y MAC, rendimiento, ID de VLAN