Citrix ADC

高级策略表达式:IP地址、MAC地址、吞吐量、VLAN id

可以使用高级策略表达式前缀返回IPv4地址、IPv6地址、MAC地址、IP子网,以及接口端口(Rx、Tx、RxTx)的吞吐量、接收报文的vlan id等客户端和服务器的有用数据。然后可以使用各种运算符对这些表达式前缀返回的数据求值。

IP地址和IP子网的表达式

可以使用高级策略表达式对Internet Protocol version 4 (IPv4)或Internet Protocol version 6 (IPv6)格式的地址和子网进行计算。IPv6地址和子网的表达式前缀中包含IPv6。IPv4地址和子网的表达式前缀中包含IP。下面是一个表达式的示例,用于标识请求是否来自特定的IPv4子网。

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

以下是两个重写策略的示例,它们检查从哪个子网接收数据包,并对Host报头执行重写操作。配置了这两个策略后,执行的重写操作取决于请求中的子网。这两种策略对IPv4格式的IP地址进行评估。

-添加重写动作url -重写动作替换"http.req.header(\"Host\")""\"www.mycompany1.com\"" -添加重写策略url -重写策略"http.req.header(\"Host\").contains(\"www.test1.com\") && client.ip.src.in_subnet(147.1.0.0/16)"URL1-rewrite-action -添加重写操作URL2-rewrite-action替换"http.req.header(\"Host\")""\"www.mycompany2.com\"" -添加重写策略url2 -重写策略"http.req.header(\"Host\").contains(\"www.test2.com\") && client.ip.src.in_subnet(10.202.0.0/16)"URL2-rewrite-action < !——NeedCopy >

请注意

前面的示例是您在Citrix ADC命令行界面(CLI)中键入的命令,因此,每个引号之前必须有一个反斜杠(\)。有关更多信息,请参见配置策略的高级策略表达式”。

IPV4地址前缀和IP子网前缀

下表给出了返回IPv4地址和子网的前缀以及IPv4地址段。您可以使用带有这些前缀的数字运算符和特定于IPv4地址的运算符。有关数值运算的详细信息,请参见“表达式前缀基本操作"和"数字的复合运算”。

表1。用于评估IP地址和MAC地址的前缀

前缀 描述
CLIENT.IP.SRC 以IP地址或数字的形式返回当前数据包的源IP。
CLIENT.IP.DST 以IP地址或数字的形式返回当前数据包的目的IP。
SERVER.IP.SRC 以IP地址或数字的形式返回当前数据包的源IP。
SERVER.IP.DST 以IP地址或数字的形式返回当前数据包的目的IP。

IPV4地址操作

IPV4操作前缀表描述了可以与返回IPv4地址的前缀一起使用的操作符。

关于IPv6表达式

IPv6地址格式比旧的IPv4格式更灵活。IPv6地址采用十六进制格式(RFC 2373)。示例1为IPv6地址,示例2为包含IPv6地址的URL,示例3为包含IPv6地址和端口号的URL。

示例1:

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

示例2:

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

示例3:

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

在示例3中,括号将IP地址与端口号(8080)分开。

请注意,您只能使用' + '运算符将IPv6表达式与其他表达式组合起来。输出是由各个表达式返回的字符串值的连接。不能对IPv6表达式使用任何其他算术运算符。语法示例如下:

client.ipv6。SRC + server.ip.dst 

例如,客户端源IPv6地址为ABCD: 1234:: ABCD,服务器目的IPv4地址为10.100.10.100,则返回前面的表达式“ABCD: 1234:: ABCD10.100.10.100”

注意,当Citrix ADC设备接收到IPv6数据包时,它会从一个未使用的IPv4地址范围中分配一个临时IPv4地址,并将数据包的源地址更改为这个临时地址。在响应时,发送报文的源地址被替换为原来的IPv6地址。

请注意

IPv6表达式可以与除布尔表达式外的任何表达式组合使用。

IPv6地址的表达式前缀

下表中的表达式前缀返回的IPv6地址可以被视为文本数据。例如,前缀client.ipv6。dst返回目的IPv6地址作为一个字符串,可以计算为文本。

下表描述了返回IPv6地址的表达式前缀。

表3。返回文本的IPv6表达式前缀

前缀 描述
客户端。IPV6 对当前报文中的IPv6地址进行操作。
CLIENT.IPV6.DST 返回IP报头目的字段中的IPv6地址。
CLIENT.IPV6.SRC 返回IP报头源字段中的IPv6地址。以下是一些例子:client.ipv6.src.in_subnet (2007:: 2008/64)client.ipv6.src.get1.le (2008)
服务器。IPV6 对当前报文中的IPv6地址进行操作。
SERVER.IPV6.DST 返回IP报头目的字段中的IPv6地址。
SERVER.IPV6.SRC 返回IP报头源字段中的IPv6地址。以下是一些例子:server.ipv6.src.in_subnet (2007:: 2008/64)server.ipv6.src.get1.le (2008)

IPv6前缀的相关操作

下表描述了可用于返回IPv6地址的前缀的操作符:

表4。IPv6地址求值操作

IPv6操作 描述
< ipv6 >。EQ (< IPv6_address > 返回一个布尔值TRUE,如果IP地址值与< IPv6_address >论点。示例如下:client.ipv6.dst.eq (ABCD: 1234:: ABCD)
. get1 . . get8 以数字形式返回IPv6地址的一个段。下面的示例表达式从ipv6地址1000:1001:cd10:000:000:89 ab:4567:CDEF:client.ipv6.dst。Get5提取0000,这是地址中的第五组位。client.ipv6.dst。get6提取物89AB。client.ipv6.dst。Get7提取4567。您可以对这些段执行数值操作。请注意,当您检索整个IPv6地址时,您不能执行数字操作。这是因为返回整个IPv6地址的表达式,如CLIENT.IPV6。以文本格式返回地址。
< ipv6 > .IN_SUBNET(<子网>) 参数指定的子网内的IPv6地址返回一个布尔值TRUE<子网>论点。示例如下:client.ipv6.dst.eq (1000:1001: CD10:0000:0000:89AB: 4567: CDEF / 60)
< ipv6 >。IS_IPV4 如果这是一个IPv4客户端,返回一个布尔值TRUE,如果不是,返回一个布尔值FALSE。
< ipv6 > .SUBNET (< n >) 在应用作为参数指定的子网掩码后返回IPv6地址。子网掩码取值范围为0 ~ 128。例如:CLIENT.IPV6.SRC.SUBNET (24)

MAC地址表达式

MAC地址由冒号分隔的十六进制值组成,格式为##:##:##:##:##,其中每个“#”表示从0到9的数字或从A到f的字母。高级策略表达式前缀和操作符可用于评估源和目的MAC地址。

MAC地址前缀

下表描述了返回MAC地址的前缀。

表5所示。用于评估MAC地址的前缀

前缀 描述
client.ether.dstmac 返回以太网报头目的字段中的MAC地址。
client.ether.srcmac 返回以太网报头源字段中的MAC地址。

MAC地址操作

下表描述了可用于返回MAC地址的前缀的操作符。

表6所示。MAC地址操作

前缀 描述
< mac地址> .EQ(<地址>) 返回一个布尔值TRUE,如果MAC地址值与<地址>论点。
. get1 . . get4 . 返回从GET操作中指定的MAC地址段中提取的数值。例如,MAC地址为12:34:56:78:9a:bc,则返回值为34:client.ether.dstmac.get2

用于数字客户端和服务器数据的表达式

下表描述了用于处理数字客户机和服务器数据的前缀,包括吞吐量、端口号和VLAN id。

表7所示。用于计算数字客户机和服务器数据的前缀

前缀 描述
client.interface.rxthroughput 返回一个整数,表示前7秒的原始接收流量吞吐量,单位为KBps(千字节每秒)。
client.interface.txthroughput 返回一个整数,表示前7秒的原始传输流量吞吐量,单位为KBps。
client.interface.rxtxthroughput 返回一个整数,表示前7秒的原始接收和传输流量吞吐量,单位为KBps。
server.interface.rxthroughput 返回一个整数,表示前7秒的原始接收流量吞吐量,单位为KBps。
server.interface.txthroughput 返回一个整数,表示前7秒的原始传输流量吞吐量,单位为KBps。
server.interface.rxtxthroughput 返回一个整数,表示前7秒的原始接收和传输流量吞吐量,单位为KBps。
server.vlan.id 返回当前数据包进入Citrix ADC的VLAN的数字ID。
client.vlan.id 返回当前数据包进入Citrix ADC的VLAN的数字ID。
高级策略表达式:IP地址、MAC地址、吞吐量、VLAN id