Gestion et automatisation de réseau : Cisco Application Policy Infrastructure Controller (APIC)

Vérifiez les contrats et les règles dans la matrice interception commandée en vol

17 décembre 2015 - Traduction automatique
Autres versions: PDFpdf | Anglais (29 juin 2015) | Commentaires

Introduction

Ce document décrit comment vérifier que des contrats sont configurés et se comporter correctement dans la matrice centrale de l'infrastructure d'application (interception commandée en vol).

Remarque: La vérification des modèles logiques et concrets, aussi bien que le matériel programmant, est décrite dans ce document.

Contribué par Paul Raytick et Robert Correiro, ingénieurs TAC Cisco.

Topologie

Dans l'exemple qui est utilisé dans tout ce document, l'ordinateur-Un virtuel (VM) est relié à Leaf1, et à un contrat est en place que lui permette pour communiquer avec VM-B, qui est relié à Leaf2. Le contrat permet le Protocole ICMP (Internet Control Message Protocol) et le HTTP.

Cette image illustre la topologie :

Aperçu de processus

C'est l'interaction et l'écoulement de stratégie pour des contrats et des règles :

  1. Le Policy Manager sur le contrôleur d'infrastructure de stratégie d'application (APIC) communique avec le gestionnaire d'éléments de stratégie sur le commutateur.

  2. Le gestionnaire d'éléments de stratégie sur le commutateur programme la mémoire d'objet sur le commutateur.

  3. Le Policy Manager sur le commutateur communique avec le client de la qualité de service de liste de contrôle d'accès (ACLQOS) sur le commutateur.

  4. Les programmes client ACLQOS le matériel.

Identifiez la règle de contrat/Répartition en zones utilisée

Voici une sortie de commande de Répartition en zones-règle d'exposition d'exemple de la feuille, avant que le contrat soit ajouté pour les deux groupes de point final (EPGs).

fab1_leaf1# show zoning-rule

Rule ID  SrcEPG  DstEPG  FilterID  operSt   Scope     Action

=======  ======  ======  ========  ======   =====     ======

4096     0       0       implicit  enabled  16777200  deny,log

4097     0       0       implicit  enabled  3080192   deny,log

4098     0       0       implicit  enabled  2686976   deny,log

4099     0       49154   implicit  enabled  2686976   permit

4102     0       0       implicit enabled  2097152   deny,log

4103     0       32771   implicit  enabled  2097152   permit

4117     16387   16386   12        enabled  2097152   permit

4116     16386   16387   13        enabled  2097152   permit

4100     16386   49154   default   enabled  2097152   permit

4101     49154   16386   default   enabled  2097152   permit

4104     0       32770   implicit  enabled  2097152   permit

4105     49155   16387   13        enabled  2097152   permit

4112     16387   49155   13        enabled  2097152   permit

4113     49155   16387   12        enabled 2097152   permit

4114     16387   49155   12        enabled  2097152   permit

[snip]

C'est la même sortie de commande après que le contrat soit ajouté de sorte que les deux EPGs puissent communiquer les uns avec les autres :

fab1_leaf1# show zoning-rule

Rule ID  SrcEPG  DstEPG  FilterID  operSt   Scope   Action

=======  ======  ======  ========  ======   ========  ========

4096     0       0       implicit  enabled  16777200  deny,log

4097     0       0       implicit  enabled  3080192   deny,log

4098     0       0       implicit  enabled  2686976   deny,log

4099     0       49154   implicit  enabled  2686976   permit

4131     49155   32771   7         enabled  2686976   permit

4132     32771   49155   6         enabled  2686976   permit

4102     0       0       implicit  enabled  2097152   deny,log

4103     0       32771   implicit  enabled  2097152   permit

4117     16387   16386   12        enabled  2097152   permit

4116     16386   16387   13        enabled  2097152   permit

4100     16386   49154   default   enabled  2097152   permit

4101     49154   16386   default   enabled  2097152   permit

4104     0       32770   implicit  enabled  2097152   permit

4105     49155   16387   13        enabled  2097152   permit

4112     16387   49155   13        enabled  2097152   permit

4113     49155   16387   12        enabled  2097152   permit

4114     16387   49155   12        enabled  2097152   permit

[snip]

Remarque: Notez les nouveaux id de règle (4131 et 4132) qui ont été ajoutés, les id de filtre de 7 et de 6, et la portée de 2686976.

Attention : Cette sortie de commande te permet pour localiser facilement les règles que vous devez examiner dans un système de laboratoire ; cependant, ceci peut être encombrant dans un environnement de production avec les modifications dynamiques qui se produisent.

Une autre méthode que vous pouvez utiliser afin de localiser les règles d'intérêt est d'utiliser Visore. Exécutez une recherche sur l'objet géré par contexte (MOIS) pour le fvCtx. Vous pouvez alors rechercher sur cet écran pour votre nom unique spécifique de contexte (DN), comme affiché ici :

Notez la place pour ce contexte. Vous pouvez employer ceci afin de tracer à la sortie de commande d'exposition-Répartition en zones-règle de sorte que vous puissiez localiser les règles que vous devez questionner :

Vous pouvez également identifier le segment ID/scope pour le contexte de l'interface utilisateur (UI), comme affiché ici :

Cette portée apparie cela affiché dans la sortie de commande de Répartition en zones-règles d'exposition :

Une fois que vous faites identifier les informations et à vous d'ID de portée la règle et les id de filtre, vous pouvez employer la prochaine commande afin de vérifier que vous frappez les nouveaux filtres (et pas l'implicite refusez les messages entre l'EPGs). Les implicites refusent le message sont inclus de sorte que par défaut, l'EPGs ne puisse pas communiquer.

Avis dans cette sortie de commande que Leaf1, Filter-6 (f-6) incrémente :

fab1_leaf1# show system internal policy-mgr stats | grep 2686976

Rule (4098) DN (sys/actrl/scope-2686976/rule-2686976-s-any-d-any-f-implicit)
Ingress: 0, Egress: 81553

Rule (4099) DN (sys/actrl/scope-2686976/rule-2686976-s-any-d-49154-f-implicit)
Ingress: 0, Egress: 0

Rule (4131) DN (sys/actrl/scope-2686976/rule-2686976-s-49155-d-32771-f-7)
Ingress: 0, Egress: 0

Rule (4132) DN (sys/actrl/scope-2686976/rule-2686976-s-32771-d-49155-f-6)
Ingress: 1440, Egress: 0
fab1_leaf1# show system internal policy-mgr stats | grep 2686976

Rule (4098) DN (sys/actrl/scope-2686976/rule-2686976-s-any-d-any-f-implicit)
Ingress: 0, Egress: 81553

Rule (4099) DN (sys/actrl/scope-2686976/rule-2686976-s-any-d-49154-f-implicit)
Ingress: 0, Egress: 0

Rule (4131) DN (sys/actrl/scope-2686976/rule-2686976-s-49155-d-32771-f-7)
Ingress: 0, Egress: 0

Rule (4132) DN (sys/actrl/scope-2686976/rule-2686976-s-32771-d-49155-f-6)
Ingress: 1470, Egress: 0

Avis dans cette sortie de commande que Leaf2, Filter-7 (f-7) incrémente :

fab1_leaf2# show system internal policy-mgr stats | grep 268697

Rule (4098) DN (sys/actrl/scope-2686976/rule-2686976-s-any-d-any-f-implicit)
Ingress: 0, Egress: 80257

Rule (4099) DN (sys/actrl/scope-2686976/rule-2686976-s-any-d-49153-f-implicit)
Ingress: 0, Egress: 0

Rule (4117) DN (sys/actrl/scope-2686976/rule-2686976-s-32771-d-49155-f-6)
Ingress: 0, Egress: 0

Rule (4118) DN (sys/actrl/scope-2686976/rule-2686976-s-49155-d-32771-f-7)
Ingress: 2481, Egress: 0
fab1_leaf2# show system internal policy-mgr stats | grep 268697

Rule (4098) DN (sys/actrl/scope-2686976/rule-2686976-s-any-d-any-f-implicit)
Ingress: 0, Egress: 80257

Rule (4099) DN (sys/actrl/scope-2686976/rule-2686976-s-any-d-49153-f-implicit)
Ingress: 0, Egress: 0

Rule (4117) DN (sys/actrl/scope-2686976/rule-2686976-s-32771-d-49155-f-6)
Ingress: 0, Egress: 0

Rule (4118) DN (sys/actrl/scope-2686976/rule-2686976-s-49155-d-32771-f-7)
Ingress: 2511, Egress: 0

Conseil : La connaissance de la portée, l'ID de règle, les pcTags de destination et de source, et le filtre est importante avec des tentatives de dépanner cette question plus loin. Il est également utile d'avoir la connaissance de l'EPGs entre lequel l'ID de règle existe.

Vous pouvez exécuter une recherche le MOIS avec le fvAEPg et le grep de nom de DN pour le pcTag particulier par l'intermédiaire de la commande de moquery, comme affiché ici :

admin@RTP_Apic1:~> moquery -c fvAEPg | grep 49155 -B 5

dn : uni/tn-Prod/ap-commerceworkspace/epg-Web
lcOwn : local
matchT : AtleastOne
modTs : 2014-10-16T01:27:35.355-04:00
monPolDn : uni/tn-common/monepg-default
pcTag : 49155

Vous pouvez également utiliser l'option de filtre avec la commande de moquery, comme affiché ici :

admin@RTP_Apic1:~> moquery -c fvAEPg -f 'fv.AEPg.pcTag=="49155"'
Total Objects shown: 1

# fv.AEPg
name : Web
childAction :
configIssues :
configSt : applied
descr :
dn : uni/tn-Prod/ap-commerceworkspace/epg-Web
lcOwn : local
matchT : AtleastOne
modTs : 2014-10-16T01:27:35.355-04:00
monPolDn : uni/tn-common/monepg-default
pcTag : 49155
prio : unspecified
rn : epg-Web
scope : 2523136
status :
triggerSt : triggerable
uid : 15374

Vérifiez la programmation de matériel

Maintenant vous pouvez vérifier l'entrée de matériel pour la règle. Afin de visualiser les informations de matériel, sélectionnez la commande interne d'entrée de mth_lux_slvz_DHS_SecurityGroupStatTable_memif_data de table du show platform NS (c'est une commande de vsh_lc) :

Dans cet exemple, l'entrée 41 (ENTRÉE [000041]) de matériel incrémente.

Remarque: L'utilisation de cette commande n'est pas pratique dans un environnement de production, mais vous pouvez utiliser les autres commandes qui sont décrites dans cette section à la place.

Souvenez-vous la règle (4132) et la portée (268976) :

Entrez dans cette commande afin de déterminer l'ID de règle au mappage ternaire d'entrée d'index de matériel de la mémoire de contenu adressable (TCAM), et filtre basé sur l'ID de règle et/ou l'ID de filtre :

module-1# show system internal aclqos zoning-rules

[snip]

===========================================
Rule ID: 4131 Scope 4 Src EPG: 49155 Dst EPG: 32771 Filter 7

Curr TCAM resource:
=============================
   unit_id: 0
   === Region priority: 771 (rule prio: 3 entry: 3)===
       sw_index = 62 | hw_index = 40
   === Region priority: 772 (rule prio: 3 entry: 4)===
       sw_index = 63 | hw_index = 45

===========================================
Rule ID: 4132 Scope 4 Src EPG: 32771 Dst EPG: 49155 Filter 6

Curr TCAM resource:
=============================
   unit_id: 0
   === Region priority: 771 (rule prio: 3 entry: 3)===
       sw_index = 66 | hw_index = 41
   === Region priority: 771 (rule prio: 3 entry: 3)===
       sw_index = 67 | hw_index = 42

[snip]

Pour cet exemple, la source et la combinaison de la destination EPG d'intérêt est 32771=0x8003, 49155=0xC003. Par conséquent, vous devriez considérer toutes les entrées TCAM pour des ces les classes de source et de destination qui apparient les id de règle (4131 et 4132) et des id de filtre (6 et 7).

Dans cet exemple, certaines de ces entrées TCAM sont vidées. Pour la référence, voici la configuration de contrat qui permet les pings et le trafic web pour des ces EPGs :

module-1# show platform internal ns table mth_lux_slvz_DHS_SecurityGroupKeyTable0
_memif_data 41


=======================================================================
                         TABLE INSTANCE : 0
=======================================================================
ENTRY[000041] =
               sg_label=0x4           

               sclass=0x8003           

               dclass=0xc003           

               prot=0x1 (IP Protocol 0x01 = ICMP)

Remarque: La commande précédente affichée dans le bleu est utilisée pour le Northstar ASIC. La commande qui est utilisée pour Donner ou Donner+ est la table interne mth_luxh_slvq_DHS_SecurityGroupKeyTable0_memif_data du show platform NS.

sup_tx_mask=0x1            
               src_policy_incomplete_mask=0x1          

               dst_policy_incomplete_mask=0x1           

               class_eq_mask=0x1

               aclass_mask=0x1ff

               port_dir_mask=0x1           

               dport_mask=0xffff           

               sport_mask=0xffff          

               tcpflags_mask=0xff
           
               ip_opt_mask=0x1
           
               ipv6_route_mask=0x1
           
               ip_fragment_mask=0x1
           
               ip_frag_offset0_mask=0x1           

               ip_frag_offset1_mask=0x1           

               ip_mf_mask=0x1
           
               l4_partial_mask=0x1           

               dst_local_mask=0x1           

               routeable_mask=0x1           

               spare_mask=0x7ff           

               v4addr_key_mask=0x1           

               v6addr_key_mask=0x1           

               valid=0x1


module-1# show platform internal ns table mth_lux_slvz_DHS_SecurityGroupKeyTable0
_memif_data 42


=======================================================================
                         TABLE INSTANCE : 0
=======================================================================
ENTRY[000042] =

               sg_label=0x4           

               sclass=0x8003           

               dclass=0xc003           

               prot=0x6 <--           

               dport=0x50 <--

sup_tx_mask=0x1
           
               src_policy_incomplete_mask=0x1           

               dst_policy_incomplete_mask=0x1           

               class_eq_mask=0x1           

               aclass_mask=0x1ff           

               port_dir_mask=0x1           

               sport_mask=0xffff           

               tcpflags_mask=0xff           

               ip_opt_mask=0x1           

               ipv6_route_mask=0x1           

               ip_fragment_mask=0x1           

               ip_frag_offset0_mask=0x1           

               ip_frag_offset1_mask=0x1           

               ip_mf_mask=0x1           

               l4_partial_mask=0x1           

               dst_local_mask=0x1

Conseil : Vous pouvez vérifier chacune des entrées TCAM avec la même méthode.

Dépannez les questions de programmation de matériel

Cette section fournit quelques commandes de dépannage et conseils utiles.

Commandes de dépannage utiles

Voici quelques commandes utiles que vous pouvez employer afin de localiser les erreurs de Policy Manager de feuille quand des problèmes sont produits :

fab1_leaf1# show system internal policy-mgr event-history errors


1) Event:E_DEBUG, length:84, at 6132 usecs after Mon Sep 8 13:15:56 2014

   [103] policy_mgr_handle_ctx_mrules(779): ERROR: Failed to process prio(1537):
(null)


2) Event:E_DEBUG, length:141, at 6105 usecs after Mon Sep 8 13:15:56 2014

   [103] policy_mgr_process_mrule_prio_aces(646): ERROR: Failed to insert iptables
rule for rule(4120) , fentry(5_0) with priority(1537): (null)


[snip]


fab1_leaf1# show system internal policy-mgr event-histor trace

[1409945922.23737] policy_mgr_ppf_hdl_close_state:562: Got close state callback

[1409945922.23696] policy_mgr_ppf_rdy_ntf_fun:239: StatStoreEnd returned: 0x0(SU

CCESS)

[1409945922.23502] policy_mgr_ppf_rdy_ntf_fun:208: ppf ready notification: sess_

id: (0xFF0104B400005B51)

[1409945922.23475] policy_mgr_ppf_rdy_ntf_fun:205: Got ready notification callba

ck with statustype (4)

[1409945921.983476] policy_mgr_gwrap_handler:992: Dropped...now purging it...

[1409945921.982882] policy_mgr_ppf_goto_state_fun:481: Sess id (0xFF0104B400005B


[snip]


module-1# show system internal aclqos event-history trace

T [Fri Sep 5 13:18:24.863283] ============= Session End ============

T [Fri Sep 5 13:18:24.862924] Commit phase: Time taken 0.62 ms, usr 0.00 ms,

sys 0.00 ms

T [Fri Sep 5 13:18:24.862302] ppf session [0xff0104b410000087] commit ... npi

nst 1

T [Fri Sep 5 13:18:24.861421] Verify phase: Time taken 0.77 ms, usr 0.00 ms,

sys 0.00 ms

T [Fri Sep 5 13:18:24.860615] ============= Session Begin ============

T [Fri Sep 5 13:18:24.830472] ============= Session End ============

T [Fri Sep 5 13:18:24.830062] Commit phase: Time taken 0.98 ms, usr 0.00 ms,

sys 0.00 ms

T [Fri Sep 5 13:18:24.829085] ppf session [0xff0104b410000086] commit ... npi

nst 1

T [Fri Sep 5 13:18:24.827685] Verify phase: Time taken 2.04 ms, usr 0.00 ms,

sys 0.00 ms

T [Fri Sep 5 13:18:24.825388] ============= Session Begin ============

T [Fri Sep 5 12:32:51.364225] ============= Session End ============

T [Fri Sep 5 12:32:51.363748] Commit phase: Time taken 0.64 ms, usr 0.00 ms,


[snip]

Conseil : Certains des fichiers sont grands, ainsi il est plus facile de les envoyer au bootflash et de les examiner dans un éditeur.

module-1# show system internal aclqos ?

asic           Asic information

brcm           Broadcam information

database       Database

event-history   Show various event logs of ACLQOS

mem-stats       Show memory allocation statistics of ACLQOS

prefix         External EPG prefixes

qos             QoS related information

range-resource Zoning rules L4 destination port range resources

regions         Security TCAM priority regions

span           SPAN related information

zoning-rules   Show zoning rules


module-1# show system internal aclqos event-history ?

errors       Show error logs of ACLQOS

msgs         Show various message logs of ACLQOS

ppf          Show ppf logs of ACLQOS

ppf-parse    Show ppf-parse logs of ACLQOS

prefix       Show prefix logs of ACLQOS

qos          Show qos logs of ACLQOS

qos-detail   Show detailed qos logs of ACLQOS

span         Show span logs of ACLQOS

span-detail  Show detailed span logs of ACLQOS

trace        Show trace logs of ACLQOS

trace-detail Show detailed trace logs of ACLQOS

zoning-rules Show detailed logs of ACLQOS

Conseils de dépannage

Voici quelques conseils de dépannage utiles :

  • Si vous vous semblez rencontrer un problème d'épuisement TCAM, vérifiez l'UI ou le CLI pour les défauts qui sont associés avec la règle en question. Ce défaut pourrait être signalé :
    Fault F1203 - Rule failed due to hardware programming error.
    Une règle pourrait prendre plus d'une entrée TCAM dans le circuit intégré spécifique (ASIC). Afin de visualiser le nombre d'entrées sur l'ASIC, sélectionnez ces commandes :
    fab1-leaf1# vsh_lc

    module-1# show platform internal ns table-health
    VLAN STATE curr usage: 0 - size: 4096
    QQ curr usage: 0 - size: 16384
    SEG STATE curr usage: 0 - size: 4096
    SRC TEP curr usage: 0 - size: 4096
    POLICY KEY curr usage: 0 - size: 1
    SRC VP curr usage: 0 - size: 4096
    SEC GRP curr usage: 43 - size: 4096

    Remarque: Dans cet exemple, il y a 43 entrées actuelles. Cette utilisation est également signalée à l'APIC dans la classe d'eqptCapacity.

  • Quand il y a de plusieurs correspondances, la consultation TCAM renvoie le hw-index inférieur. Afin de vérifier l'index, sélectionnez cette commande :
    show system internal aclqos zoning-rule
    Pour le dépannage, vous pourriez observer la baisse qui est provoqué par par la tout-toute-implict règle. Cette règle est toujours au bas, ainsi il signifie que le paquet est lâché parce qu'une règle n'existe pas. C'est ou dû à une mauvaise configuration, ou le gestionnaire d'éléments de stratégie ne la programme pas comme prévue.

  • Les pcTags peuvent avoir une portée locale ou globale :

    • PcTag globalement scoped ? Ce pcTag a habituellement une valeur inférieure (moins de quatre chiffres dans le format décimal).

    • PcTag localement scoped ? Ce pcTag utilise une plus grande valeur (cinq chiffres dans le format décimal).

  • Quand vous dépannez, un rapide regarde la longueur de la valeur indique sa portée.

Conversations connexes de la communauté de soutien de Cisco

Le site Cisco Support Community est un forum où vous pouvez poser des questions, répondre à des questions, faire part de suggestions et collaborer avec vos pairs.


Document ID: 119023