Citrix ADC

Conversión de expresiones de directiva mediante la herramienta NSPEPI

Las funciones y funciones clásicas basadas en directivas están obsoletas desde NetScaler 12.0, compilación 56.20 en adelante. Como alternativa, Citrix recomienda utilizar la infraestructura de directivas avanzada. Como parte de este esfuerzo, cuando actualice a Citrix ADC 12.1, compilación 56.20 o posterior, debe reemplazar las funciones y funcionalidades basadas en directivas clásicas por sus funciones y funcionalidades no obsoletas correspondientes. Además, debe convertir las directivas y expresiones clásicas en directivas y expresiones avanzadas. Además, todas las nuevas funciones de Citrix ADC solo admiten infraestructuras avanzadas de directivas.

La herramienta nspepi puede realizar lo siguiente:

  1. Convertir expresiones de directiva clásicas en expresiones de directiva avanzadas.
  2. Convierta determinadas directivas clásicas y sus enlaces de entidades en directivas y enlaces avanzados.
  3. Convierta algunas entidades obsoletas adicionales en sus correspondientes entidades no obsoletas.
  4. Convierta comandos de filtro clásicos en comandos de filtro avanzados.
  5. Convierta funciones de filtro clásicas en funciones avanzadas para la expresión goto como END o use_inocation

Nota:

Después de que la herramienta nspepi convierte correctamente el archivo de configuración ns.conf, la herramienta reproduce el archivo convertido como un nuevo archivo con un prefijo, “new_”. Si el archivo de configuración convertido tiene errores o advertencias, debe corregirlos manualmente como parte del proceso de conversión. Una vez convertido, debe probar el archivo en el entorno de prueba y luego usarlo para reemplazar el archivo de configuración ns.conf real. Después de la prueba, debe reiniciar el dispositivo para el archivo de configuración ns.conf recién convertido o fijo.

Las entidades que solo admiten directivas o expresiones clásicas están en desuso y deben reemplazarse por las entidades no obsoletas correspondientes.

Nota:

La información relativa a la versión anterior de la herramienta nspepi está disponible en formato pdf. Para obtener más información, consulte el PDF Conversión de directivas clásica mediante la herramienta nspepi antes de 12.1-51.16.

Advertencias de conversión y archivos de error

Antes de utilizar la herramienta para la conversión, hay pocas advertencias que tener en cuenta:

  1. Todas las advertencias y errores se envían a la consola. Se crea un archivo de advertencia donde se almacenan los archivos de configuración.
  2. El archivo de advertencias y error tiene el mismo nombre que el archivo de entrada, pero con un prefijo “warn_” agregado al nombre del archivo. Durante la conversión de expresiones (cuando se usa -e), las advertencias aparecerán en el directorio actual con el nombre “warn_expr”.

Nota:

Este archivo tiene un formato de archivo de registro estándar, con sello de fecha/hora y nivel de registro. Las instancias anteriores del archivo se mantienen con sufijos como “.1”, “.2”, etc., ya que la herramienta se ejecuta varias veces. Como máximo, se mantendrán 10 instancias.

Formato de archivo convertido

Al convertir un archivo de configuración (mediante “-f”), el archivo convertido se colocará en el mismo directorio donde existe el archivo de configuración de entrada con el mismo nombre pero un prefijo “new_”.

Comandos manejados por la herramienta de conversión nspepi

Los siguientes son los comandos manejados durante el proceso de conversión automática.

  • Las siguientes directivas clásicas y sus expresiones se convierten en directivas y expresiones avanzadas. Esto incluye la conversión de enlaces de entidades, incluidos enlaces globales.
  1. agregar directiva appfw
  2. agregar directiva de autorización
  3. agregar directiva cmp
  4. agregar directiva cr
  5. agregar directiva cs
  6. add tm SessionPolicy
  7. agregar VPN TrafficPolicy
  8. agregar acción de filtro
  9. agregar directiva de filtro
  10. para el equilibrio de carga, la conmutación de contenido, la redirección de caché y global.

Nota:

Sin embargo, para “add tm SessionPolicy” y “add vpn TrafficPolicy”, no puede enlazar a la anulación global en las directivas avanzadas.

  • El parámetro de regla configurado en “add lb vserver” se convierte de expresión clásica a expresión avanzada.
  • El parámetro SPDY configurado en el comando “add ns HttpProfile” o “set ns HttpProfile” se cambia a “-http2 ENABLED”.
  • Expresiones con nombre (comandos “agregar expresión de directiva”). Cada expresión de directiva con nombre clásico se convierte a su expresión con nombre avanzado correspondiente con “nspepi_adv_” establecido como prefijo. Además, el uso de expresiones con nombre para las expresiones clásicas convertidas se cambia a las expresiones con nombre avanzado correspondientes. Además, cada expresión con nombre tendrá dos expresiones con nombre asignado, donde una es Clásica y la otra es Avanzada (como se muestra a continuación).

Por ejemplo:

add policy expression classic_expr ns_true
Converts to:
add policy expression classic_expr ns_true
add policy expression nspepi_adv_classic_expr TRUE
  • El parámetro PolicyType configurado en el comando “set cmp parameter” cambia a Tipo de directiva avanzado.

Convertir comandos de filtro clásicos en comandos de filtro avanzados

La herramienta nspepi puede convertir comandos basados en acciones de filtro clásicas como agregar, enlazar, etc. a comandos de filtro avanzados.

Sin embargo, la herramienta nepepi no admite los siguientes comandos de filtro.

  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

Nota:

  1. Si hay funciones de reescritura o respuesta existentes en ns.conf y sus directivas están enlazadas globalmente con la expresión GOTO como END o USER_INVLATION_RESULT y el tipo de enlace es REQ_X o RES_X, entonces la herramienta convierte comandos de filtro de enlace parcialmente y comenta. Se mostrará la advertencia para poner esfuerzo manual.
  2. Si existen funciones de reescritura o respuesta y sus directivas están enlazadas a servidores virtuales (por ejemplo, equilibrio de carga, cambio de contenido o redirección de caché) de tipo HTTPS con GOTO: END o USER_INVLATION_RESULT, la herramienta convierte parcialmente los comandos de filtro de enlace y, a continuación, comenta. Se mostrará la advertencia para poner esfuerzo manual.

Ejemplo

A continuación se muestra una entrada de muestra:

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


Lo que sigue es una salida de ejemplo. Se comentan todos los comandos convertidos.

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

Convierta comandos de filtro clásicos en comandos de funciones avanzadas si los enlaces de directivas de reescritura o respuesta existentes tienen goto expresión END o USE_INNVOCATION

En esta conversión, si una directiva de reescritura enlazada a uno o más servidores virtuales y si el servidor tiene END o USE_INVLATION_RESULT, la herramienta comenta los comandos.

Ejemplo

A continuación se presenta un comando de entrada de ejemplo:

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


A continuación se muestra un comando de salida de ejemplo:

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-

Comandos no controlados por la herramienta de conversión nspepi

Los siguientes son algunos comandos que no se manejan como parte del proceso de conversión automática.

  • Algunos enlaces no se pueden convertir si hay cierto entrelazamiento de prioridades entre puntos de enlace globales y no globales, entre usuarios y grupos, y también entre enlaces a diferentes entidades. Estos tendrán la configuración afectada comentada y se producirá un error. Tales configuraciones deben convertirse manualmente.
  • Las directivas Classic y Advanced pueden vincularse a cmp global. Hay muchos casos en los que la funcionalidad cambiará una vez que las directivas clásicas se conviertan en directivas avanzadas. Hemos convertido comandos que se pueden resolver comentando algunas directivas. Todavía hay algunos comandos que no se pueden convertir; en tales casos se producirá un error y la conversión debe realizarse manualmente.
  • Las directivas clásicas de conmutación de contenido enlazadas a varios puntos de enlace no se controlan.
  • Los enlaces de directivas clásicos incorporados en todas las funciones no se manejan.
  • No todos los usos de expresiones con nombre clásico integradas se convierten en expresiones con nombre avanzado equivalente.
  • Las expresiones con nombre en una regla de equilibrio de carga no se controlan.
  • Las expresiones de seguridad del cliente no se controlan.
  • Los enlaces a servidores virtuales GSLB no se manejan.
  • No se controla la opción “-precedence” para los servidores virtuales de conmutación de contenido y redirección de caché.

Problemas conocidos

La herramienta nspepi puede producir los siguientes errores:

  • Si hay un problema al convertir una expresión.
  • Si una expresión de directiva con nombre utiliza el parámetro -ClientSecurityMessage porque este parámetro no es compatible con la expresión de directiva avanzada.

Nota:

Se comentan todos los enlaces de directiva clásicos con la opción -state inhabilitada. La opción -state no está disponible para enlaces de directivas avanzadas.

Ejecución de la herramienta nspepi

A continuación se muestra un ejemplo de línea de comandos para ejecutar la herramienta nspepi. Esta herramienta se ejecuta desde la línea de comandos del shell (necesitará escribir el comando “shell” en la “CLI” de NetScaler para llegar a eso). Debe especificarse “-f” o “-e” para realizar una conversión. El uso de “-d” está destinado principalmente al personal de Citrix para que lo analice con fines de soporte técnico.

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

A continuación se presentan algunos ejemplos de ejecución de la herramienta nspepi desde la interfaz de línea de comandos:

Ejemplo de salida para el parámetro —e:

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

Ejemplo de salida para el parámetro -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

Ejecución de nspepi con el parámetro -f:

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

Ejemplo de salida del parámetro -f junto con el parámetro -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#

Ejemplo de salida con archivos convertidos y archivos de advertencia generados

Archivo de configuración convertido:

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

Ejemplo de salida de una configuración de ejemplo sin errores ni advertencias:

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

Ejemplo de salida de una configuración de ejemplo con advertencias:

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#

Ejemplo de ejecución de nspepi con el parámetro -f:

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#

Archivo convertido:

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#

Archivo de advertencia:

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#

Prioridades vinculantes

Las directivas avanzadas no permiten el entrelazado arbitrario por prioridad entre global y no global y entre diferentes tipos de enlace. Si confía en ese entrelazado de prioridades de directiva clásicas, deberá ajustar las prioridades para que se ajusten a las reglas de directiva avanzadas y obtener el comportamiento que quiera. Las prioridades de las directivas avanzadas son locales a un punto de enlace. Un punto de enlace es una combinación única de protocolo, entidad, dirección y entidad (las entidades son servidores virtuales específicos, usuarios, grupos, servicios y anulación global o valor predeterminado global). Las prioridades de las directivas no se siguen en los puntos de enlace.

Para un protocolo, función y dirección determinados, el orden de evaluación de las directivas avanzadas se indica a continuación:

  • Anulación global.
  • (Actual) Usuario AAA.
  • Grupos AAA (de los que el usuario es miembro) en orden de peso: Ordenar no está definido si dos o más grupos tienen el mismo peso.
  • LB servidor virtual en el que se recibió la solicitud o que Content Switching seleccionó.
  • Servidor virtual de conmutación de contenido, servidor virtual de redirección de caché en el que se recibió la solicitud.
  • Servicio seleccionado por equilibrio de carga.
  • Valor predeterminado global.

Para la evaluación de la directiva de autorización, el orden es:

  • Anulación del sistema.
  • Servidor virtual de equilibrio de carga en el que se recibió la solicitud o que CS seleccionó.
  • Servidor virtual de conmutación de contenido en el que se recibió la solicitud.
  • Valor predeterminado del sistema.

Dentro de cada punto de enlace, las directivas se evalúan en orden de prioridad desde el número más bajo hasta el número más alto. Por supuesto, las directivas solo se evalúan para el protocolo utilizado y la dirección desde la que se recibió el mensaje.

Enlaces de directivas clásicos que requieren una reasignación manual de prioridades

Estos son algunos tipos de enlaces de directivas clásicos que requerirán una reasignación manual de prioridades para satisfacer sus necesidades. Todos estos son para una función y dirección dada.

  • Prioridades clásicas que aumentan el número de prioridad opuesto a la dirección de las listas de tipos de entidad anteriores. Por ejemplo, un enlace de servidor virtual de conmutación de contenido inferior a un enlace de servidor virtual de equilibrio de carga.
  • Prioridades clásicas que entremezclan grupos AAA. Una parte de un grupo es antes que otro grupo y otra parte es después de parte de ese otro grupo.
  • Prioridades clásicas que aumentan en número distinto del orden de pesos de los grupos AAA.
  • Las prioridades mundiales clásicas que son menos que algunas prioridades no mundiales y las mismas prioridades mundiales son mayores que otras prioridades no mundiales (en otras palabras, cualquier segmento de prioridades que sean no globales, seguido de uno o más globales, seguido de uno o más globales, seguido de uno no global).