Citrix ADC

高级策略表达式:ip和MAC地址,吞吐量,vlan id

可以使用高级策略表达式前缀返回IPv4和IPv6地址,MAC地址,IP子网,有用的客户端和服务器数据,例如接口端口(Rx, Tx和RxTx)的吞吐速率以及接收数据包的VLAN的ID。然后,您可以使用各种运算符来评估这些表达式前缀返回的数据。

IP地址和IP子网的表达式

您可以使用高级策略表达式评估网络协议版本4 (IPv4)或互联网协议版本6 (IPv6)格式的地址和子网。IPv6地址和子网的表达式前缀在前缀中包括IPv6。IPv4地址和子网的表达式前缀在前缀中包含IP地址。下面是标识请求是否源自特定IPv4子网的表达式示例。

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

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

-添加重写动作url -重写动作替换"http.req.header("Host")""www.mycompany1.com" -添加重写策略url -rewrite-policy "http.req.header("Host").contains("www.test1.com") && client.ip.src.in_subnet(147.1.0.0/16)"url -rewrite-action替换“http.req.header("Host")”"www.mycompany2.com" -添加重写策略url -rewrite-policy "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地址和端口号。

示例 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 > 如果IP地址地址值与< IPv6_address >参数相同,则返回布尔值真。下面是一个示例:client.ipv6.dst.eq (ABCD: 1234:: ABCD)
. get1 . . get8 以数字形式返回IPv6地址的段落。以下示例表达式从ipv6地址1000:1001:CD10:0000:0000:89AB: 4567: CDEF:client.ipv6.dst。Get5提取0000中的第五组位检索段。client.ipv6.dst。get6提取89AB。client.ipv6.dst。Get7提取4567。您可以对这些段执行数字操作。请注意,您无法在检索整个IPv6地址时执行数字操作。这是因为返回整个IPv6地址(如CLIENT.IPV6.SRC)的表达式以文本格式返回该地址。
< ipv6 > .IN_SUBNET(<子网>) 如果IPv6地址值位于<子网>参数指定的子网中,则返回布尔值真。下面是一个示例: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的数字或到F的字母。默认语法表达式前缀和运算符可用于评估源和目标MAC地址。

MAC地址的前缀

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

表 5.评估MAC地址的前缀

前缀 说明
client.ether.dstmac 返回以太网标头的目标字段中的MAC地址。
client.ether.srcmac 返回以太网标头的源字段中的MAC地址。

MAC地址的操作

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

表 6.MAC地址上的操作

前缀 说明
< mac地址> .EQ(<地址>) 如果MAC地址值与<地址>参数相同,则返回布尔值真。
. get1 . . get4 . mac地址 返回从get操作中指定的MAC地址段中提取的数值。例如,如果MAC地址是12:34:56:78:9a:bc,则以下内容返回34:client.ether.dstmac.get2

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

下表介绍了用于处理数字客户端和服务器数据(包括吞吐量,端口号和vlan id)的前缀。

表 7.用于评估数字客户端和服务器数据的前缀

前缀 说明
client.interface.rxthroughput 返回一个整数、表示前七秒内的原始接收流量吞吐量(以千字节/秒(kbps)为单位)。
client.interface.txthroughput 返回一个整数,表示前七秒内的原始传输流量吞吐量(kbps)。
client.interface.rxtxthroughput 返回一个整数,表示前七秒内的原始接收和传输流量吞吐量(kbps)。
server.interface.rxthroughput 返回一个整数,表示前七秒内的原始接收流量吞吐量(kbps)。
server.interface.txthroughput 返回一个整数,表示前七秒内的原始传输流量吞吐量(kbps)。
server.interface.rxtxthroughput 返回一个整数,表示前七秒内的原始接收和传输流量吞吐量(kbps)。
server.vlan.id 返回当前数据包进入Citrix ADC的VLAN数字ID。
客户端.vlan.id 返回当前数据包进入Citrix ADC的VLAN的数字ID。
高级策略表达式:ip和MAC地址,吞吐量,vlan id