Citrix ADC

使用 NSPEPI 工具转换策略表达式

基于经典策略的功能和特性已在 NetScaler 12.0 Build 56.20 版本中弃用。作为替代方法,Citrix 建议您使用高级策略基础结构。作为此项工作的一部分,当您升级到 Citrix ADC 12.1 版本 56.20 或更高版本时,必须将基于经典策略的功能和功能替换为相应的非弃用功能和功能。此外,您必须将经典策略和表达式转换为高级策略和表达式。此外,所有新的 Citrix ADC 功能仅支持高级策略基础设施。

nspepi 工具可以执行以下操作:

  1. 将经典策略表达式转换为高级策略表达式。
  2. 将某些经典策略及其实体绑定转换为高级策略和绑定。
  3. 将一些额外的弃用功能转换为其对应的非弃用功能。
  4. 将经典过滤器命令转换为高级过滤器命令。
  5. 将经典过滤器功能转换为高级功能,以便Goto 表达式作为 END 或 use_innocation

注意

nspepi 工具成功转换 ns.conf 配置文件后,该工具将转换后的文件复制为带有前缀“new_”的新文件。如果转换后的配置文件有错误或警告,则必须在转换过程中手动修复这些错误或警告。转换后,您必须在测试环境中测试该文件,然后使用它来替换实际的 ns.conf 配置文件。测试后,您必须重新启动新转换或修复的 ns.conf 配置文件的设备。

仅支持 Classic 策略或表达式的功能将被弃用,并且需要替换为相应的非弃用功能。

注意:

有关旧版本的 nspepi 工具的信息以 pdf 格式提供。有关更多信息,请参阅在 12.1-51.16 之前使用 nspepi 工具的经典策略转换pdf。

转换警告和错误文件

在使用该工具进行转换之前,需要记住一些警告:

  1. 所有警告和错误都会输出到控制台。存储配置文件的位置创建了一个警告文件。
  2. 警告和错误文件的名称与输入文件相同,但在文件名中添加了前缀“warn_”。在表达式转换过程中(使用-e 时),警告将显示在当前目录中,名称为“warn_expr”。

注意:

此文件采用标准日志文件格式,具有日期/时间戳和日志级别。由于工具多次运行,因此文件的先前实例会保留后缀,如“.1”、“.2” 等。最多将保留 10 个实例。

转换后的文件格式

转换配置文件时(使用“-f”),转换后的文件将被放入与输入配置文件存在的同一目录中,其名称相同,但前缀为“new_”。

由 nspepi 转换工具处理的命令

下面是自动转换过程中处理的命令。

  • 以下经典策略及其表达式将转换为高级策略和表达式。这包括实体绑定的转换,包括全局绑定。
  1. add appfw policy
  2. add authorization policy
  3. add cmp policy
  4. add cr policy
  5. add cs policy
  6. add tm sessionPolicy
  7. add vpn trafficPolicy
  8. add filter action
  9. add filter policy
  10. 过滤器策略绑定到负载平衡、内容切换、缓存重定向和全局。

注意:

但是,对于“add tm sessionPolicy”和“add vpn trafficPolicy”,您不能绑定到高级策略中的全局覆盖。

  • 在“add lb vserver”中配置的规则参数将从经典表达式转换为高级表达式。
  • 在“add ns httpProfile”或“set ns httpProfile”命令中配置的 SPDY 参数更改为“-http2 ENABLED”。
  • 命名表达式(“add policy expression”命令)。每个 Classic 命名策略表达式都会转换为其相应的高级命名表达式,并将“nspepi_adv_”设置为前缀。此外,已转换的 Classic 表达式的命名表达式的用法将更改为相应的高级命名表达式。此外,每个命名表达式都有两个命名表达式,其中一个是 Classic,另一个是高级表达式(如下所示)。

例如:

add policy expression classic_expr ns_true
Converts to:
add policy expression classic_expr ns_true
add policy expression nspepi_adv_classic_expr TRUE
  • 在“set cmp parameter”命令中配置的 policyType 参数更改为“高级策略类型”。

将经典过滤器命令转换为高级过滤器命令

nspepi 工具可以将基于经典过滤器操作(如添加、绑定等)的命令转换为高级过滤器命令。

但是,nepepi 工具不支持以下过滤器命令。

  1. add filter action <action Name> FORWARD <service name>
  2. add filter action <action name> ADD prebody
  3. add filter action <action name> ADD postbody

注意:

  1. 如果 ns.conf 中有现有的重写或响应程序功能,并且它们的策略将 GOTO 表达式全局绑定为 END 或 USER_INVOCATION_RESUT,绑定类型为 REQ_X 或 RES_X, 则该工具将部分转换绑定过滤器命令并注释掉。将显示警告,以便把手动努力。
  2. 如果存在现有的重写或响应程序功能,并且它们的策略绑定到带有 GOTO-END 或 USER_INVOCATION_REUT 的 HTTPS 类型的虚拟服务器(例如,负载平衡、内容切换或缓存重定向),则该工具将部分转换绑定过滤器命令,然后注释出。将显示警告,以便把手动努力。

示例

下面是一个示例输入:

add lb vserver v1 http 1.1.1.1 80 -persistenceType NONE -cltTimeout 9000
add cs vserver csv1 HTTP 1.1.1.2 80 -cltTimeout 180 -persistenceType NONE
add cr vserver crv1 HTTP 1.1.1.3 80 -cacheType FORWARD
add service svc1 1.1.1.4 http 80
add filter action fact_add add 'header:value'
add filter action fact_variable add 'H1:%%HTTP.TRANSID%%'
add filter action fact_prebody add prebody
add filter action fact_error_act1 ERRORCODE 200 "<HTML>Good URL</HTML>"
add filter action fact_forward_act1 FORWARD svc1
add filter policy fpol_add_res -rule ns_true -resAction fact_add
add filter policy fpol_error_res -rule ns_true -resAction fact_error_act1
add filter policy fpol_error_req -rule ns_true -reqAction fact_error_act1
add filter policy fpol_add_req -rule ns_true -reqAction fact_add
add filter policy fpol_variable_req -rule ns_true -reqAction fact_variable
add filter policy fpol_variable_res -rule ns_true -resAction fact_variable
add filter policy fpol_prebody_req -rule ns_true -reqAction fact_prebody
add filter policy fpol_prebody_res -rule ns_true -resAction fact_prebody
add filter policy fpol_forward_req -rule ns_true -reqAction fact_forward_act1
bind lb vserver v1 -policyName fpol_add_res
bind lb vserver v1 -policyName fpol_add_req
bind lb vserver v1 -policyName fpol_error_res
bind lb vserver v1 -policyName fpol_error_req
bind lb vserver v1 -policyName fpol_variable_res
bind lb vserver v1 -policyName fpol_variable_req
bind lb vserver v1 -policyName fpol_forward_req
bind cs vserver csv1 -policyName fpol_add_req
bind cs vserver csv1 -policyName fpol_add_res
bind cs vserver csv1 -policyName fpol_error_res
bind cs vserver csv1 -policyName fpol_error_req
bind cr vserver crv1 -policyName fpol_add_req
bind cr vserver crv1 -policyName fpol_add_res
bind cr vserver crv1 -policyName fpol_error_res
bind cr vserver crv1 -policyName fpol_error_req
bind cr vserver crv1 -policyName fpol_forward_req
bind filter global fpol_add_req
bind filter global fpol_add_res
bind filter global fpol_error_req
bind filter global fpol_error_res
bind filter global fpol_variable_req
bind filter global fpol_variable_res
bind filter global fpol_variable_res -state DISABLED
bind filter global fpol_prebody_req
bind filter global fpol_forward_req
After conversion, warning/error messages will be displayed for manual effort.
Warning files:
cat warn_<input file name>:
2019-11-07 17:13:34,724: ERROR - Conversion of [add filter action fact_prebody add prebody] not supported in this tool.
2019-11-07 17:13:34,739: ERROR - Conversion of [add filter action fact_forward_act1 FORWARD svc1] not supported in this tool.
2019-11-07 17:13:38,042: ERROR - Conversion of [add filter policy fpol_prebody_req -rule ns_true -reqAction fact_prebody] not supported in this tool.
2019-11-07 17:13:38,497: ERROR - Conversion of [add filter policy fpol_prebody_res -rule ns_true -resAction fact_prebody] not supported in this tool.
2019-11-07 17:13:39,035: ERROR - Conversion of [add filter policy fpol_forward_req -rule ns_true -reqAction fact_forward_act1] not supported in this tool.
2019-11-07 17:13:39,060: WARNING - Following bind command is commented out because state is disabled. Advanced expressions only have a fixed ordering of the types of bindings without interleaving, except that global bindings are allowed before all other bindings and after all bindings. If you have global bindings in the middle of non-global bindings or any other interleaving then you will need to reorder all your bindings for that feature and direction. Refer to nspepi documentation. If command is required please take a backup because comments will not be saved in ns.conf after triggering 'save ns config': bind filter global fpol_variable_res -state DISABLED


下面是一个示例输出。所有转换后的命令都会被注释。

cat new_<input file name>
add rewrite action fact_add insert_http_header header ""value""
add filter action fact_prebody add prebody
add filter action fact_forward_act1 FORWARD svc1
add filter policy fpol_prebody_req -rule ns_true -reqAction fact_prebody
add filter policy fpol_prebody_res -rule ns_true -resAction fact_prebody
add filter policy fpol_forward_req -rule ns_true -reqAction fact_forward_act1
bind lb vserver v1 -policyName fpol_forward_req
bind cr vserver crv1 -policyName fpol_forward_req
#bind filter global fpol_variable_res -state DISABLED
bind filter global fpol_prebody_req
bind filter global fpol_forward_req
add rewrite action nspepi_adv_fact_variable insert_http_header H1 HTTP.RES.TXID
add rewrite action fact_variable insert_http_header H1 HTTP.REQ.TXID
add responder action fact_error_act1 respondwith "HTTP.REQ.VERSION.APPEND(" 200 OK\r
nConnection: close\r
nContent-Length: 21\r\n\r
n<HTML>Good URL</HTML>")"
add rewrite action nspepi_adv_fact_error_act1 replace_http_res "HTTP.REQ.VERSION.APPEND(" 200 OK\r
nConnection: close\r
nContent-Length: 21\r\n\r
n<HTML>Good URL</HTML>")"
add rewrite policy fpol_add_res TRUE fact_add
add rewrite policy fpol_error_res TRUE nspepi_adv_fact_error_act1
add responder policy fpol_error_req TRUE fact_error_act1
add rewrite policy fpol_add_req TRUE fact_add
add rewrite policy fpol_variable_req TRUE fact_variable
add rewrite policy fpol_variable_res TRUE nspepi_adv_fact_variable
set cmp parameter -policyType ADVANCED
bind rewrite global fpol_add_req 100 NEXT -type REQ_DEFAULT
bind rewrite global fpol_variable_req 200 NEXT -type REQ_DEFAULT
bind rewrite global fpol_add_res 100 NEXT -type RES_DEFAULT
bind rewrite global fpol_error_res 200 NEXT -type RES_DEFAULT
bind rewrite global fpol_variable_res 300 NEXT -type RES_DEFAULT
bind responder global fpol_error_req 100 END -type REQ_DEFAULT
bind lb vserver v1 -policyName fpol_add_res -type RESPONSE -priority 100 -gotoPriorityExpression NEXT
bind lb vserver v1 -policyName fpol_error_res -type RESPONSE -priority 200 -gotoPriorityExpression NEXT
bind lb vserver v1 -policyName fpol_variable_res -type RESPONSE -priority 300 -gotoPriorityExpression NEXT
bind lb vserver v1 -policyName fpol_add_req -type REQUEST -priority 100 -gotoPriorityExpression NEXT
bind lb vserver v1 -policyName fpol_variable_req -type REQUEST -priority 200 -gotoPriorityExpression NEXT
bind lb vserver v1 -policyName fpol_error_req -type REQUEST -priority 100 -gotoPriorityExpression END
bind cs vserver csv1 -policyName fpol_add_req -type REQUEST -priority 100 -gotoPriorityExpression NEXT
bind cs vserver csv1 -policyName fpol_add_res -type RESPONSE -priority 100 -gotoPriorityExpression NEXT
bind cs vserver csv1 -policyName fpol_error_res -type RESPONSE -priority 200 -gotoPriorityExpression NEXT
bind cs vserver csv1 -policyName fpol_error_req -type REQUEST -priority 100 -gotoPriorityExpression END
bind cr vserver crv1 -policyName fpol_add_req -type REQUEST -priority 100 -gotoPriorityExpression NEXT
bind cr vserver crv1 -policyName fpol_add_res -type RESPONSE -priority 100 -gotoPriorityExpression NEXT
bind cr vserver crv1 -policyName fpol_error_res -type RESPONSE -priority 200 -gotoPriorityExpression NEXT
bind cr vserver crv1 -policyName fpol_error_req -type REQUEST -priority 100 -gotoPriorityExpression END

如果现有的重写或响应程序策略绑定具有Goto 表达式 END 或 USE_INNTRITY,则将经典筛选器命令转换为高级功能命令

在此转换中,如果绑定到一个或多个虚拟服务器的重写策略,并且服务器具有 END 或 USE_INVOCATION_RESULT,则该工具将注释掉这些命令。

示例

下面是一个示例输入命令:

COPY
add filter policy fpol1 -rule ns_true -resAction reset
add filter policy fpol2 -rule ns_true -reqAction reset
add rewrite policy pol1 true NOREWRITE
add rewrite policylabel pl http_res
bind rewrite policylabel pl pol1 1
bind rewrite global NOPOLICY 1 USE_INVOCATION_RESULT -type RES_DEFAULT -invoke policylabel pl
add responder policy pol2 true NOOP
add responder policylabel pl -policylabeltype HTTP
bind responder policylabel pl pol2 1
bind responder global NOPOLICY 1 USE_INVOCATION_RESULT -type REQ_DEFAULT -invoke policylabel pl
bind lb vserver v1_tcp -policyName pol1 -priority 100 -gotoPriorityExpression USE_INVOCATION_RESULT -type RESPONSE
bind cs vserver csv1_tcp -policyName pol1 -priority 100 -gotoPriorityExpression USE_INVOCATION_RESULT -type RESPONSE
bind lb vserver v1_tcp -policyName pol2 -priority 100 -gotoPriorityExpression USE_INVOCATION_RESULT -type REQUEST
bind cs vserver csv1_tcp -policyName pol2 -priority 100 -gotoPriorityExpression USE_INVOCATION_RESULT -type REQUEST
bind cr vserver crv1_tcp -policyName pol2 -priority 100 -gotoPriorityExpression USE_INVOCATION_RESULT -type REQUEST
bind lb vserver v1_http -policyName fpol1
bind cs vserver csv1_http -policyName fpol1
bind lb vserver v2_http -policyName fpol2
bind cs vserver csv2_http -policyName fpol2
bind cr vserver crv2_http -policyName fpol2
bind filter global fpol1 -priority 100
bind filter global fpol2 -priority 100


下面是一个示例输出命令:

COPY
add rewrite policy pol1 true NOREWRITE
add rewrite policylabel pl http_res
bind rewrite policylabel pl pol1 1
add responder policy pol2 true NOOP
add responder policylabel pl -policylabeltype HTTP
bind responder policylabel pl pol2 1
add rewrite policy fpol1 TRUE RESET
add responder policy fpol2 TRUE RESET
#bind lb vserver v1_http -policyName fpol1 -type RESPONSE
#bind cs vserver csv1_http -policyName fpol1 -type RESPONSE
#bind rewrite global fpol1 100 -type RES_DEFAULT
#bind lb vserver v2_http -policyName fpol2 -type REQUEST
#bind cs vserver csv2_http -policyName fpol2 -type REQUEST
#bind cr vserver crv2_http -policyName fpol2 -type REQUEST
#bind responder global fpol2 100 -type REQ_DEFAULT
bind rewrite global NOPOLICY 1 USE_INVOCATION_RESULT -type RES_DEFAULT -invoke policylabel pl
bind responder global NOPOLICY 1 USE_INVOCATION_RESULT -type REQ_DEFAULT -invoke policylabel pl
bind lb vserver v1_tcp -policyName pol1 -priority 100 -gotoPriorityExpression USE_INVOCATION_RESULT -type RESPONSE
bind lb vserver v1_tcp -policyName pol2 -priority 100 -gotoPriorityExpression USE_INVOCATION_RESULT -type REQUEST
bind cs vserver csv1_tcp -policyName pol1 -priority 100 -gotoPriorityExpression USE_INVOCATION_RESULT -type RESPONSE
bind cs vserver csv1_tcp -policyName pol2 -priority 100 -gotoPriorityExpression USE_INVOCATION_RESULT -type REQUEST
bind cr vserver crv1_tcp -policyName pol2 -priority 100 -gotoPriorityExpression USE_INVOCATION_RESULT -type REQUEST-

nspepi 转换工具未处理的命令

下面是一些不作为自动转换过程的一部分处理的命令。

  • 如果全局绑定点和非全局绑定点之间、用户和组之间以及绑定到不同实体之间存在某些优先级交错,则某些绑定无法转换。这些将注释掉受影响的配置并产生错误。此类配置必须手动转换。
  • 经典策略和高级策略都可以绑定到 CMP 全局。在许多情况下,经典策略转换为高级策略后,功能会发生变化。我们已经转换了可以通过注释一些策略来解决的命令。仍然有一些命令无法转换; 在这种情况下,将产生错误,转换必须手动完成。
  • 不会处理绑定到多个绑定点的经典内容交换策略。
  • 不处理所有功能中的内置经典策略绑定。
  • 并非所有 Classic 内置命名表达式的用法都转换为等效的高级命名表达式。
  • 不处理负载平衡规则中的命名表达式。
  • 不处理客户端安全表达式。
  • 不会处理到 GSLB 虚拟服务器的绑定。
  • 不处理内容切换和缓存重定向虚拟服务器的“-precedence”选项。

已知问题

nspepi 工具可能会产生以下错误:

  • 如果转换表达式时出现问题。
  • 如果命名策略表达式使用-Client SecurityMessage 参数,因为高级策略表达式不支持此参数。

注意:

禁用状态选项的所有经典策略绑定都被注释掉。状态选项不适用于高级策略绑定。

运行 nspepi 工具

下面是运行 nspepi 工具的命令行示例。此工具从 shell 的命令行运行(您需要在 NetScaler“CLI”中键入“shell”命令才能获得该命令)。必须指定“-f”或“-e”才能执行转换。使用“-d”主要用于 Citrix 人员为支持目的进行分析。

usage: nspepi [-h]
              (-e <classic policy expression> | -f <path to ns config file>)
              [-d] [-v] [-V]

Convert classic policy expressions to advanced policy
expressions and deprecated commands to non-deprecated
commands.
optional arguments:
  -h, --help            show this help message and exit
  -e <classic policy expression>, --expression <classic policy expression>
                        convert classic policy expression to advanced policy
                        expression (maximum length of 8191 allowed)
  -f <path to ns config file>, --infile <path to ns config file>
                        convert netscaler config file
  -d, --debug           show debug output
  -v, --verbose         show verbose output
  -V, --version         show program's version number and exit

下面是从命令行界面运行 nspepi 工具的几个示例:

—e 参数的输出示例:

root@ns# nspepi -e "req.http.header foo == "bar""
"HTTP.REQ.HEADER("foo").EQ("bar")"

-f 参数的输出示例:

root@ns# cat sample.conf

add c**Input**r vserver cr_vs HTTP -cacheType TRANSPARENT -cltTimeout 180 -originUSIP OFF

add cr policy cr_pol1 -rule ns_true

bind cr vserver cr_vs -policyName cr_pol1

运行带 -f 参数的 nspepi:

root@ns# nspepi -f sample.conf  
root@ns#

-f 参数和-v 参数的输出示例

root@ns# nspepi -f sample.conf -v
INFO - add cr vserver cr_vs HTTP -cacheType TRANSPARENT -cltTimeout 180 -originUSIP OFF
INFO - add cr policy cr_pol1 -rule TRUE -action ORIGIN
INFO - set cmp parameter -policyType ADVANCED
INFO - bind cr vserver cr_vs -policyName cr_pol1 -priority 100 -gotoPriorityExpression END -type REQUEST
root@ns#

生成转换后的文件和警告文件的示例输出

转换后的配置文件:

root@ns# cat new_sample.conf
add cr vserver cr_vs HTTP -cacheType TRANSPARENT -cltTimeout 180 -originUSIP OFF
add cr policy cr_pol1 -rule TRUE -action ORIGIN
set cmp parameter -policyType ADVANCED
bind cr vserver cr_vs -policyName cr_pol1 -priority 100 -gotoPriorityExpression END -type REQUEST

没有错误或警告的示例配置输出示例:

root@ns# cat warn_sample.conf
root@ns#

带有警告的示例配置输出示例:

root@ns# cat sample_2.conf
add policy expression security_expr "req.tcp.destport == 80" -clientSecurityMessage "Not allowed"
set cmp parameter -policyType CLASSIC
add cmp policy cmp_pol1 -rule ns_true -resAction COMPRESS
add cmp policy cmp_pol2 -rule ns_true -resAction COMPRESS
add cmp policy cmp_pol3 -rule TRUE -resAction COMPRESS
bind cmp global cmp_pol1
bind cmp global cmp_pol2 -state DISABLED
bind cmp global cmp_pol3 -priority 1 -gotoPriorityExpression END -type RES_DEFAULT
bind lb vserver lb_vs -policyName cmp_pol2
root@ns#

运行带 -f 参数的 nspepi 的示例:

root@ns# nspepi -f sample_2.conf
ERROR - Error in converting expression security_expr : conversion of clientSecurityMessage based expression is not supported.
WARNING - Following bind command is commented out because state is disabled. Advanced expressions only have a fixed ordering of the types of bindings without interleaving, except that global bindings are allowed before all other bindings and after all bindings. If you have global bindings in the middle of non-global bindings or any other interleaving then you will need to reorder all your bindings for that feature and direction. Refer to nspepi documentation. If command is required please take a backup because comments will not be saved in ns.conf after triggering 'save ns config': bind cmp global cmp_pol2 -state DISABLED
Warning - Bindings of advanced CMP policies to cmp global are commented out, because initial global cmp parameter is classic but advanced policies are bound. Now global cmp parameter policy type is set to advanced. If commands are required please take a backup because comments will not be saved in ns.conf after triggering 'save ns config'. Advanced expressions only have a fixed ordering of the types of bindings without interleaving, except that global bindings are allowed before all other bindings and after all bindings. If you have global bindings in the middle of non-global bindings or any other interleaving then you will need to reorder all your bindings for that feature and direction. Refer to nspepi documentation.
root@ns#

转换后的文件:

root@ns# cat new_sample_2.conf  
add policy expression security_expr "req.tcp.destport == 80" -clientSecurityMessage "Not allowed"
set cmp parameter -policyType ADVANCED
add cmp policy cmp_pol1 -rule TRUE -resAction COMPRESS
add cmp policy cmp_pol2 -rule TRUE -resAction COMPRESS
add cmp policy cmp_pol3 -rule TRUE -resAction COMPRESS
#bind cmp global cmp_pol2 -state DISABLED
#bind cmp global cmp_pol3 -priority 1 -gotoPriorityExpression END -type RES_DEFAULT
bind cmp global cmp_pol1 -priority 100 -gotoPriorityExpression END -type RES_DEFAULT
bind lb vserver lb_vs -policyName cmp_pol2 -priority 100 -gotoPriorityExpression END -type RESPONSE
root@ns#

警告文件:

root@ns# cat warn_sample_2.conf
2019-02-28 06:20:10,590: ERROR - Error in converting expression security_expr : conversion of clientSecurityMessage based expression is not supported.
2019-02-28 06:20:12,187: WARNING - Following bind command is commented out because state is disabled. Advanced expressions only have a fixed ordering of the types of bindings without interleaving, except that global bindings are allowed before all other bindings and after all bindings. If you have global bindings in the middle of non-global bindings or any other interleaving then you will need to reorder all your bindings for that feature and direction. Refer to nspepi documentation. If command is required please take a backup because comments will not be saved in ns.conf after triggering 'save ns config': bind cmp global cmp_pol2 -state DISABLED
2019-02-28 06:20:12,191: WARNING - Bindings of advanced CMP policies to cmp global are commented out, because initial global cmp parameter is classic but advanced policies are bound. Now global cmp parameter policy type is set to advanced. If commands are required please take a backup because comments will not be saved in ns.conf after triggering 'save ns config'. Advanced expressions only have a fixed ordering of the types of bindings without interleaving, except that global bindings are allowed before all other bindings and after all bindings. If you have global bindings in the middle of non-global bindings or any other interleaving then you will need to reorder all your bindings for that feature and direction. Refer to nspepi documentation.
root@ns#

具有约束力的优先级

高级策略不允许在全局和非全局之间以及在不同绑定类型之间按优先级进行任意交错。如果您依赖于经典策略优先级的此类交错,则需要调整优先级以符合高级策略规则并获得所需的行为。 高级策略中的优先级是绑定点的本地优先级。绑定点是协议、功能、方向和实体的唯一组合(实体是特定的虚拟服务器、用户、组、服务以及全局覆盖或全局默认值)。各绑定点之间不遵循策略优先级。

对于给定的协议、功能和方向,高级策略的评估顺序如下:

  • 全局覆盖。
  • (当前)AAA 用户。
  • AAA 组(用户所属的)按权重顺序排列-如果两个或更多组具有相同的权重,则排序是未定义的。
  • LB 虚拟服务器上接收请求或选择内容切换。
  • 内容切换虚拟服务器,缓存重定向虚拟服务器接收请求。
  • 通过负载平衡选择的服务。
  • 全局默认值。

对于授权策略评估,顺序为:

  • 系统覆盖。
  • 负载平衡已收到请求或已选择 CS 的虚拟服务器。
  • 接收请求的内容切换虚拟服务器。
  • 系统默认值。

在每个绑定点内,按编号最低到编号最高的优先顺序对策略进行评估。当然,策略仅针对使用的协议和接收消息的方向进行评估。

需要手动重新优先级的经典策略绑定

下面是一些类型的 Classic 策略绑定,需要手动重新优先级来满足您的需求。所有这些都是针对给定的特征和方向。

  • 与上述实体类型列表的方向相反的优先级增加优先级。例如,内容交换虚拟服务器绑定低于负载平衡虚拟服务器绑定。
  • 交织 AAA 组的经典优先级。一个组的一个部分位于另一个组之前,另一个部分位于另一个组之后。
  • 除 AAA 组权重顺序以外的数量增加的典型优先级。
  • 低于某些非全局优先级和相同全局优先级的传统全局优先级比其他一些非全局优先级更大(换言之,任何非全局优先级段,后跟一个或多个全局优先级,后跟一个非全局优先级)。