Conversion d’expressions de stratégie à l’aide de l’outil NSPEPI

Les fonctionnalités et fonctionnalités classiques basées sur des stratégies sont obsolètes à partir de NetScaler 12.0 build 56.20. Comme alternative, Citrix vous recommande d’utiliser l’infrastructure de stratégie avancée. Dans le cadre de cet effort, lorsque vous effectuez une mise à niveau vers Citrix ADC 12.1 build 56.20 ou version ultérieure, vous devez remplacer les fonctionnalités et fonctionnalités basées sur des stratégies classiques par les fonctionnalités et fonctionnalités non obsolètes correspondantes. En outre, vous devez convertir les stratégies et expressions classiques en stratégies et expressions avancées. En outre, toutes les nouvelles fonctionnalités de Citrix ADC prennent uniquement en charge l’infrastucture de stratégie avancée.

L’outil nspepi peut effectuer les opérations suivantes :

  1. Convertir les expressions de stratégie classiques en expressions de stratégie avancées.
  2. Convertissez certaines stratégies classiques et leurs liaisons d’entités en stratégies et liaisons avancées.
  3. Convertissez quelques entités obsolètes supplémentaires en entités non obsolètes correspondantes.
  4. Convertir les commandes de filtre classiques en commandes de filtre avancées.
  5. Convertir des fonctions de filtre classiques en fonctions avancées pour l’expression goto comme END ou use_innocation

Remarque :

Une fois que l’outil nspepi a réussi à convertir le fichier de configuration ns.conf, l’outil décompose le fichier converti en un nouveau fichier avec un préfixe, « new_ ». Si le fichier de configuration converti comporte des erreurs ou des avertissements, vous devez les corriger manuellement dans le cadre du processus de conversion. Une fois converti, vous devez tester le fichier dans l’environnement de test, puis l’utiliser pour remplacer le fichier de configuration ns.conf réel. Après le test, vous devez redémarrer l’appliance pour le fichier de configuration ns.conf nouvellement converti ou fixe.

Les fonctionnalités qui ne prennent en charge que les stratégies ou expressions classiques sont obsolètes et doivent être remplacées par les fonctionnalités non obsolètes correspondantes.

Remarque :

Les informations relatives à l’ancienne version de l’outil nspepi sont disponibles en format pdf. Pour plus d’informations, voir le pdf Conversion de stratégie classique à l’aide de l’outil nspepi avant 12.1-51.16.

Avertissements de conversion et fichiers d’erreur

Avant d’utiliser l’outil pour votre conversion, il y a quelques avertissements à garder à l’esprit :

  1. Tous les avertissements et erreurs sont affichés sur la console. Un fichier d’avertissement est créé dans lequel les fichiers de configuration sont stockés.
  2. Le fichier d’avertissement et d’erreur porte le même nom que le fichier d’entrée, mais avec un préfixe « warn_ » ajouté au nom du fichier. Lors de la conversion d’expression (en utilisant -e), les avertissements apparaîtront dans le répertoire courant avec un nom « warn_expr ».

Remarque :

Ce fichier est dans un format de fichier journal standard, avec horodatage et niveau de journal. Les instances précédentes du fichier sont conservées avec des suffixes comme “.1”, “.2”, etc. car l’outil est exécuté plusieurs fois. Au plus 10 instances seront conservées.

Format de fichier converti

Lors de la conversion d’un fichier de configuration (en utilisant « -f »), le fichier converti sera placé dans le même répertoire que celui où le fichier de configuration d’entrée existe avec le même nom mais un préfixe « new_ ».

Commandes gérées par l’outil de conversion nspepi

Voici les commandes gérées pendant le processus de conversion automatique.

  • Les stratégies classiques suivantes et leurs expressions sont converties en stratégies et expressions avancées. Cela inclut la conversion des liaisons d’entités, y compris les liaisons globales.
  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. ajouter une action de filtre
  9. ajouter une stratégie de filtre
  10. pour l’équilibrage de charge, la commutation de contenu, la redirection de cache et globale.

Remarque :

Toutefois, pour « add tm SessionPolicy » et « add vpn TrafficPolicy », vous ne pouvez pas lier au remplacement global dans les stratégies avancées.

  • Le paramètre de règle configuré dans « add lb vserver » est converti de l’expression classique à l’expression avancée.
  • Le paramètre SPDY configuré dans la commande « add ns HttpProfile » ou « set ns HttpProfile » est remplacé par « -http2 ENABLED ».
  • Expressions nommées (commandes « add policy expression »). Chaque expression de stratégie nommée classique est convertie en son expression nommée avancée correspondante avec « nspepi_adv_ » défini comme préfixe. En outre, l’utilisation des expressions nommées pour les expressions classiques converties est remplacée par les expressions nommées avancées correspondantes. En outre, chaque expression nommée aura deux expressions nommées, dont l’une est Classique et l’autre est Avancée (comme indiqué ci-dessous).

Par exemple :

add policy expression classic_expr ns_true
Converts to:
add policy expression classic_expr ns_true
add policy expression nspepi_adv_classic_expr TRUE
  • Le paramètre PolicyType configuré dans la commande « set cmp parameter » est remplacé par Type de stratégie avancé.

Convertir les commandes de filtre classiques en commandes de filtre avancées

L’outil nspepi peut convertir des commandes basées sur des actions de filtre classiques telles que l’ajout, la liaison et ainsi de suite en commandes de filtre avancées.

Cependant, l’outil nepepi ne prend pas en charge les commandes de filtre suivantes.

  1. ajouter une action de filtre<action Name><service name>```` FORD
  2. ajouter une action de filtre<action name> ADD précorps
  3. ajouter une action de filtre<action name> ADD postbody

Remarque :

  1. S’il existe des fonctions de réécriture ou de répondeur dans ns.conf et que leurs stratégies sont liées globalement à l’expression GOTO-END ou USER_INVOCATION_RESULT et que le type de liaison est REQ_X ou RES_X, l’outil convertit partiellement les commandes de filtre de liaison et les commentaires. Un avertissement sera affiché pour faire un effort manuel.
  2. S’il existe des fonctions de réécriture ou de répondeur existantes et que leurs stratégies sont liées à des serveurs virtuels (par exemple, équilibrage de charge, commutation de contenu ou redirection de cache) de type HTTPS avec GOTO-END ou USER_INVOCATION_RESULT, l’outil convertit partiellement les commandes de filtrage de liaison, puis les commentaires sortis. Un avertissement sera affiché pour faire un effort manuel.

Exemple

Voici un exemple d’entrée :

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


Voici un exemple de sortie. Toutes les commandes converties sont commentées.

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

Convertir les commandes de filtre classiques en commandes de fonctionnalité avancées si les liaisons de stratégie de réécriture ou de répondeur existantes ont une expression goto END ou USE_INNVOCATION

Dans cette conversion, si une stratégie de réécriture liée à un ou plusieurs serveurs virtuels et si le serveur a END ou USE_INVOCATION_RESULT, l’outil commente les commandes.

Exemple

Voici un exemple de commande d’entrée :

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


Voici un exemple de commande de sortie :

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-

Commandes non gérées par l’outil de conversion nspepi

Voici quelques commandes qui ne sont pas gérées dans le cadre du processus de conversion automatique.

  • Certaines liaisons ne peuvent pas être converties s’il existe un certain entrelacement de priorités entre les points de liaison globaux et non globaux, entre les utilisateurs et les groupes, et aussi entre les liaisons vers différentes entités. Ceux-ci auront la configuration affectée commenté et une erreur sera produite. Ces configurations doivent être converties manuellement.
  • Les stratégies Classic et Advanced peuvent être liées à cmp global. Dans de nombreux cas, la fonctionnalité changera une fois que les stratégies classiques sont converties en stratégies avancées. Nous avons converti des commandes qui peuvent être résolues en commentant certaines stratégies. Il y a encore des commandes qui ne peuvent pas être converties ; dans de tels cas, une erreur sera produite et la conversion doit être effectuée manuellement.
  • Les stratégies de commutation de contenu classique qui sont liées à plusieurs points de liaison ne sont pas gérées.
  • Les liaisons de stratégie classique intégrées dans toutes les fonctionnalités ne sont pas gérées.
  • Toutes les utilisations des expressions nommées intégrées classiques ne sont pas converties en expressions nommées avancées équivalentes.
  • Les expressions nommées dans une règle d’équilibrage de charge ne sont pas gérées.
  • Les expressions de sécurité du client ne sont pas gérées.
  • Les liaisons aux serveurs virtuels GSLB ne sont pas gérées.
  • L’option « -precedence » pour les serveurs virtuels de commutation de contenu et de redirection de cache n’est pas gérée.

Problèmes connus

Les erreurs suivantes peuvent être produites par l’outil nspepi :

  • S’il y a un problème lors de la conversion d’une expression.
  • Si une expression de stratégie nommée utilise le paramètre -ClientSecurityMessage car ce paramètre n’est pas pris en charge dans l’expression de stratégie avancée.

Remarque :

Toutes les liaisons de stratégie classiques avec l’option -state désactivée sont commentées. L’option -state n’est pas disponible pour les liaisons de stratégie avancées.

Exécution de l’outil nspepi

Voici un exemple de ligne de commande pour exécuter l’outil nspepi. Cet outil est exécuté à partir de la ligne de commande du shell (vous devrez taper la commande « shell » à l’interface de ligne de commande NetScaler « CLI » pour y arriver). Pour effectuer une conversion, vous devez spécifier « -f » ou « -e ». L’utilisation de « -d » est principalement destinée à permettre au personnel de Citrix d’analyser à des fins de support.

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

Voici quelques exemples d’exécution de l’outil nspepi à partir de l’interface de ligne de commande :

Exemple de sortie pour le paramètre —e :

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

Exemple de sortie pour le paramètre -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

Exécution de nspepi avec le paramètre -f :

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

Exemple de sortie du paramètre -f avec le paramètre -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#

Exemple de sortie avec fichier converti et fichiers d’avertissement générés

Fichier de configuration converti :

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

Exemple de sortie d’un exemple de configuration sans erreurs ou avertissements :

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

Exemple de sortie d’un exemple de configuration avec des avertissements :

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#

Exemple d’exécution de nspepi avec le paramètre -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#

Fichier converti :

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#

Fichier d’avertissement :

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#

Priorités contraignantes

Les stratégies avancées ne permettent pas l’imbrication arbitraire par priorité entre global et non global et entre différents types de liaison. Si vous comptez sur un tel entrelacement des priorités de stratégie classiques, vous devrez ajuster les priorités pour qu’elles soient conformes aux règles de stratégie avancées et pour obtenir le comportement que vous souhaitez.Les priorités des stratégies avancées sont locales jusqu’à un point de liaison. Un point de liaison est une combinaison unique de protocole, de fonctionnalité, de direction et d’entité (les entités sont des serveurs virtuels spécifiques, des utilisateurs, des groupes, des services, et le remplacement global ou global par défaut). Les priorités stratégiques ne sont pas suivies d’un point à l’autre.

Pour un protocole, une fonctionnalité et une direction donnés, l’ordre d’évaluation des stratégies avancées est donné ci-dessous :

  • Remplacer globalement.
  • Utilisateur AAA (actuel).
  • Groupes AAA (dont l’utilisateur est membre) par ordre de poids - l’ordre n’est pas défini si deux groupes ou plus ont le même poids.
  • Serveur virtuel LB sur lequel la demande a été reçue ou que le commutateur de contenu sélectionné.
  • Serveur virtuel de commutation de contenu, serveur virtuel de redirection de cache sur lequel la demande a été reçue.
  • Service sélectionné par équilibrage de charge.
  • Valeur par défaut globale.

Pour l’évaluation de la stratégie d’autorisation, la commande est la suivante :

  • Remplacer le système.
  • Serveur virtuel d’équilibrage de charge sur lequel la demande a été reçue ou que CS a sélectionné.
  • Serveur virtuel de commutation de contenu sur lequel la demande a été reçue.
  • Système par défaut.

À l’intérieur de chaque point de liaison, les polices sont évaluées par ordre de priorité, du plus petit au plus grand. Bien entendu, les stratégies ne sont évaluées que pour le protocole utilisé et la direction d’où le message a été reçu.

Liaisons de stratégies classiques nécessitant une redéfinition manuelle des priorités

Voici quelques types de liaisons de stratégie classiques qui nécessiteront une redéfinition manuelle des priorités pour répondre à vos besoins. Tous ces éléments sont pour une fonction et une direction données.

  • Priorités classiques qui augmentent en nombre de priorité opposé à la direction des listes de types d’entités ci-dessus. Par exemple, une liaison de serveur virtuel de commutation de contenu inférieure à une liaison de serveur virtuel d’équilibrage de charge.
  • Priorités classiques qui entrelacent les groupes AAA. Une partie d’un groupe est avant un autre groupe et une autre partie est après une partie de cet autre groupe.
  • Priorités classiques qui augmentent en nombre autre que l’ordre de pondération des groupes AAA.
  • Les priorités mondiales classiques qui sont inférieures à certaines priorités non mondiales et les mêmes priorités mondiales sont supérieures à d’autres priorités non mondiales (en d’autres termes, tout segment de priorités non mondiales, suivi d’une ou de plusieurs priorités mondiales, suivi d’une ou de plusieurs priorités non mondiales).