Gerenciamento e automatização de redes : Cisco Application Policy Infrastructure Controller (APIC)

Verifique contratos e regras na tela ACI

18 Junho 2016 - Tradução por Computador
Outras Versões: Versão em PDFpdf | Feedback

Introdução

Este documento descreve como verificar que os contratos estão configurados e comportar-se corretamente na tela céntrica da infraestrutura do aplicativo (ACI).

Nota: A verificação dos modelos lógicos e concretos, assim como o hardware que programa, são descritos neste documento.

Contribuído por Paul Raytick e por Robert Correiro, engenheiros de TAC da Cisco.

Topologia

No exemplo que é usado durante todo este documento, a máquina-Um virtual (VM) é anexada a Leaf1, e a um contrato é no lugar que permite que se comunique com o VM-B, que é anexado a Leaf2. O contrato permite o Internet Control Message Protocol (ICMP) e o HTTP.

Esta imagem ilustra a topologia:

Vista geral do processo

Este é a interação e o fluxo da política para contratos e regras:

  1. O gerente da política no controlador da infraestrutura da política do aplicativo (APIC) comunica-se com o Element Manager da política no interruptor.

  2. O Element Manager da política no interruptor programa a loja do objeto no interruptor.

  3. O gerente da política no interruptor comunica-se com o cliente de Qualidade de Serviço do Access Control List (ACLQOS) no interruptor.

  4. Os programas de cliente ACLQOS o hardware.

Identifique a regra do contrato/Zoneamento usada

Está aqui um comando da Zoneamento-regra da mostra do exemplo output da folha, antes que o contrato esteja adicionado para os dois grupos do ponto 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]

Esta é a mesma saída do comando depois que o contrato é adicionado de modo que o dois EPGs possam se comunicar um com o otro:

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]

Nota: Observe a regra nova ID (4131 e 4132) que foi adicionado, o filtro ID de 7 e de 6, e o espaço de 2686976.

Cuidado: Esta saída do comando permite que você encontre facilmente as regras que você deve examinar em um sistema de laboratório; contudo, isto pode ser incómodo em um ambiente de produção com as mudanças dinâmicas que ocorrem.

Um outro método que você possa empregar a fim encontrar as regras de interesse é usar Visore. Execute uma busca no objeto gerenciado do contexto (MO) para o fvCtx. Você pode então procurar nessa tela por seu nome destacado (DN) específico do contexto, como mostrado aqui:

Tome a nota do espaço para esse contexto. Você pode usar este a fim traçar ao comando da mostra-Zoneamento-regra output de modo que você possa encontrar as regras que você deve perguntar:

Você pode igualmente identificar o segmento ID/scope para o contexto da interface do utilizador (UI), como mostrado aqui:

Este espaço combina aquele mostrado no comando das Zoneamento-regras da mostra output:

Uma vez que você o manda a informação de ID e do espaço identificar a regra e o filtro ID, você pode usar o comando seguinte a fim verificar que você bate os filtros novos (e não o implícito negue mensagens entre o EPGs). O implícitos negam a mensagem são incluídos de modo que à revelia, o EPGs não possa se comunicar.

A observação neste comando output esse Leaf1, Filter-6 (f-6) está incrementando:

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

A observação neste comando output esse Leaf2, Filter-7 (f-7) está incrementando:

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

Dica: O conhecimento do espaço, a regra ID, os pcTags do destino e da fonte, e o filtro é importante com tentativas de pesquisar defeitos mais esta edição. É igualmente útil ter o conhecimento do EPGs entre que a regra ID existe.

Você pode executar uma busca no MO com o fvAEPg e o grep do nome DN para o pcTag particular através do comando do moquery, como mostrado aqui:

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

Você pode igualmente usar a opção de filtro com o comando do moquery, como mostrado aqui:

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

Verifique a programação do hardware

Agora você pode verificar a entrada de hardware para a regra. A fim ver a informação de hardware, incorpore o comando interno do ingresso do mth_lux_slvz_DHS_SecurityGroupStatTable_memif_data da tabela ns da plataforma da mostra (este é um comando do vsh_lc):

Neste exemplo, a entrada de hardware 41 (ENTRADA [000041]) está incrementando.

Nota: O uso deste comando não é prático em um ambiente de produção, mas você pode usar os outros comandos que são descritos nesta seção pelo contrário.

Recorde a regra (4132) e o espaço (268976):

Entre neste comando a fim determinar a regra ID ao mapeamento da entrada de deslocamento predeterminado do hardware do Ternary Content Addressable Memory (TCAM), e em filtro baseado na regra ID e/ou em filtro ID:

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]

Para este exemplo, a fonte e a combinação do destino EPG de interesse são 32771=0x8003, 49155=0xC003. Consequentemente, você deve considerar todas as entradas de TCAM para estes as classes da fonte e do destino que combinam a regra ID (4131 e 4132) e filtram ID (6 e 7).

Neste exemplo, algumas destas entradas de TCAM são despejadas. Para a referência, está aqui a configuração do contrato que permite sibilos e tráfego de web para estes 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)

Nota: O comando precedente mostrado no azul é usado para o Northstar ASIC. O comando que é usado para Donner ou Donner+ é a tabela interna mth_luxh_slvq_DHS_SecurityGroupKeyTable0_memif_data ns da plataforma da mostra.

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

Dica: Você pode verificar cada um das entradas de TCAM com o mesmo método.

Pesquise defeitos edições de programação do hardware

Esta seção fornece alguns comandos de Troubleshooting e pontas úteis.

Comandos de Troubleshooting úteis

Estão aqui alguns comandos úteis que você pode usar a fim encontrar os erros do gerente da política da folha quando os problemas são encontrados:

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]

Dica: Alguns dos arquivos são grandes, assim que é mais fácil enviá-los ao bootflash e examiná-los em um editor.

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

Dicas para Troubleshooting

Estão aqui alguns dicas de Troubleshooting úteis:

  • Se você você parece experimentar um problema da exaustão de TCAM, verifique o UI ou o CLI para ver se há falhas que são associadas com a regra na pergunta. Esta falha pôde ser relatada:
    Fault F1203 - Rule failed due to hardware programming error.
    Uma regra pôde tomar mais de uma entrada de TCAM nos circuitos integrados do aplicativo específicos (ASIC). A fim ver o número de entradas no ASIC, incorpore estes comandos:
    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

    Nota: Neste exemplo, há 43 entradas atuais. Este uso é relatado igualmente ao APIC na classe do eqptCapacity.

  • Quando há uns fósforos múltiplos, a consulta TCAM retorna o HW-deslocamento predeterminado mais baixo. A fim verificar o deslocamento predeterminado, incorpore este comando:
    show system internal aclqos zoning-rule
    Ao pesquisar defeitos, você pôde observar a gota que é causada por algum-alguma-implict regra. Esta regra está sempre na parte inferior, assim que significa que o pacote está deixado cair porque uma regra não existe. Isto é ou devido a um misconfiguration, ou o Element Manager da política não o programa como esperado.

  • Os pcTags podem ter um espaço local ou global:

    • PcTag globalmente no escopo – Este pcTag tem geralmente um valor mais baixo (menos de quatro dígitos no formato decimal).

    • PcTag localmente no escopo – Este pcTag usa um valor maior (cinco dígitos no formato decimal).

  • Quando você pesquisa defeitos, uma consulta rápida no comprimento do valor indica seu espaço.

Discussões relacionadas da comunidade de suporte da Cisco

A Comunidade de Suporte da Cisco é um fórum onde você pode perguntar e responder, oferecer sugestões e colaborar com colegas.