Inleiding
In dit document wordt beschreven hoe u kunt controleren of contracten zijn geconfigureerd en correct worden uitgevoerd in de Application Centric Infrastructure (ACI)-structuur.
Topologie
In het voorbeeld dat in dit document wordt gebruikt, is Virtual Machine-A (VM) gekoppeld aan Leaf1 en is er een contract dat het mogelijk maakt te communiceren met VM-B, dat is gekoppeld aan Leaf2. Het contract maakt zowel Internet Control Message Protocol (ICMP) als HTTP mogelijk.
Deze afbeelding illustreert de topologie:

Procesoverzicht
Dit is de beleidsinteractie en -stroom voor contracten en regels:
- De Policy Manager op de Application Policy Infrastructure Controller (APIC) communiceert met de Policy Element Manager op de switch.
- Met Beleidselementbeheer op de switch wordt het Objectenarchief op de switch geprogrammeerd.
- De Beleidsmanager op de switch communiceert met de Access Control List Quality of Service (ACLQOS)-client op de switch.
- De ACLQOS-client programmeert de hardware.
Identificeer de gebruikte contract-/zoneringsregel
Hier is een voorbeeld van show zoning-regel commando uitvoer van het blad, voordat het contract wordt toegevoegd voor de twee End Point Groups (EPG's).
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]
Dit is dezelfde opdrachtuitvoer nadat het contract is toegevoegd, zodat de twee EPG's met elkaar kunnen communiceren:
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]
Opmerking: Let op de nieuwe regel-ID's (4131 en 4132) die zijn toegevoegd, de filter-ID's van 7 en 6 en het bereik van 2686976.
Let op: Met deze opdrachtuitvoer kunt u eenvoudig de regels vinden die u in een laboratoriumsysteem moet onderzoeken; dit kan echter omslachtig zijn in een productieomgeving met de dynamische veranderingen die optreden.
Een andere methode die u kunt gebruiken om de regels van belang te vinden is om Visore te gebruiken. Voer een zoekopdracht uit op de context Managed Object (MO) voor fvCtx. U kunt vervolgens op dat scherm zoeken naar uw specifieke context Distinguished Name (DN), zoals hier wordt weergegeven:

Let op de ruimte voor deze context. U kunt dit gebruiken om de opdracht uitvoer toe te wijzen aan de show-zoning-rule, zodat u de regels kunt vinden die u moet opvragen:

U kunt ook de ID/scope van het segment voor de context identificeren via de gebruikersinterface (UI), zoals hier wordt weergegeven:

Dit bereik komt overeen met het bereik dat wordt weergegeven in de opdrachtuitvoer voor het weergeven van bestemmingsregels:

Zodra u de scope-ID-informatie hebt en u de regel- en filter-ID's identificeert, kunt u de volgende opdracht gebruiken om te controleren of u de nieuwe filters hebt geraakt (en niet de impliciete weigerberichten tussen de EPG's). Het impliciete ontkenningsbericht is opgenomen, zodat de EPG's standaard niet kunnen communiceren.
Merk op dat in deze opdrachtuitvoer Leaf1, Filter-6 (f-6) wordt verhoogd:
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
Merk op dat in deze opdrachtuitvoer Leaf2, Filter-7 (f-7) wordt verhoogd:
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
Tip: Kennis van het bereik, regel-ID, bestemming, bron-pcTags en filter is belangrijk bij pogingen om dit probleem verder op te lossen. Het is ook handig om kennis te hebben van de EPG’s waartussen de regel-ID bestaat.
U kunt een zoekopdracht uitvoeren op de MO met de DN-naam fvAEPg en grep voor de specifieke pcTag via de opdracht moquery, zoals hier wordt weergegeven:
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
U kunt de filteroptie ook gebruiken met de opdracht moquery, zoals hier wordt weergegeven:
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
Hardwareprogrammering controleren
Nu kunt u de hardware-invoer voor de regel controleren. Voer de opdracht interne ns-tabel tonen mth_lux_slvz_DHS_SecurityGroupStatTable_memif_data ingress in om de hardwaregegevens te bekijken (dit is een opdracht vsh_lc):

In dit voorbeeld wordt hardware-item 41 (ENTRY [000041]) verhoogd.
Opmerking: De vorige opdracht wordt gebruikt voor de Northstar ASIC. De opdracht die wordt gebruikt voor Donner of Donner+ is interne ns-platformtabel tonen mth_luxh_slvy_DHS_SecurityGroupStatTable_memif_data.
Opmerking: het gebruik van deze opdracht is niet praktisch in een productieomgeving, maar u kunt in plaats daarvan de andere opdrachten gebruiken die in deze sectie worden beschreven.
Denk aan de regel (4132) en de reikwijdte (268976).

Voer deze opdracht in om de regel-ID te bepalen voor de TCAM-indeling (Ternaire Content-Addressable Memory) van de hardware-index en filter op basis van de regel-ID en/of filter-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]
In dit voorbeeld is de EPG-combinatie van bron en bestemming 32771=0x8003, 49155=0xC003. Daarom kunt u alle TCAM-vermeldingen voor deze bron- en doelklassen overwegen die overeenkomen met de regel-ID's (4131 en 4132) en filter-ID's (6 en 7).
In dit voorbeeld worden sommige van deze TCAM-vermeldingen gedumpt. Ter referentie, hier is de contractconfiguratie die pings en webverkeer voor deze EPG's mogelijk maakt:

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)
Opmerking: De vorige opdracht wordt gebruikt voor de Northstar ASIC. De opdracht die wordt gebruikt voor Donner of Donner+ is interne ns-platformtabel tonen mth_luxh_slvq_DHS_SecurityGroupKeyTable0_memif_data.

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
Tip: U kunt elk van de TCAM-vermeldingen met dezelfde methode verifiëren.
Problemen met hardwareprogrammering oplossen
Dit gedeelte bevat een aantal handige opdrachten en tips voor probleemoplossing.
Handige opdrachten voor probleemoplossing
Hier zijn enkele handige opdrachten die u kunt gebruiken om de fouten van de bladbeleidsmanager te vinden wanneer er problemen optreden:
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]
Tip: Sommige bestanden zijn groot, dus het is gemakkelijker om ze naar de bootflash te sturen en ze in een editor te bekijken.
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
Tips bij het oplossen van problemen
Hier zijn enkele handige tips voor probleemoplossing:
- Als u een TCAM-uitputtingsprobleem ondervindt, controleert u de gebruikersinterface of CLI op fouten die verband houden met de betreffende regel. Deze fout kan worden gemeld:
Fault F1203 - Rule failed due to hardware programming error.
Eén regel kan meer dan één TCAM-vermelding in het Application-Specific Integrated Circuit (ASIC) bevatten. Voer de volgende opdrachten in om het aantal items in de ASIC te bekijken:
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
Opmerking: in dit voorbeeld zijn er 43 vermeldingen aanwezig. Dit gebruik wordt ook gerapporteerd aan de APIC in de eqptCapacity-klasse.
- Wanneer er meerdere overeenkomsten zijn, retourneert de TCAM-zoekopdracht de lagere hw-index. Voer deze opdracht in om de index te verifiëren:
show system internal aclqos zoning-rule
Bij het oplossen van problemen kunt u de daling waarnemen die wordt veroorzaakt door de impliciete regel any-any-impliciet. Deze regel staat altijd onderaan, wat betekent dat het pakket wordt weggelaten omdat er geen regel bestaat. Dit is te wijten aan een verkeerde configuratie, of de Policy Element Manager programmeert het niet zoals verwacht.
- De pcTags kunnen zowel lokaal als globaal zijn:
- System Reserved pcTag - Deze pcTag wordt gebruikt voor interne systeemregels (1-15).
- Globally scoped pcTag - Deze pcTag wordt gebruikt voor gedeelde service (16-16385).
- Lokaal gescande pcTag - Deze pcTag wordt lokaal gebruikt per VRF (bereik van 16386-65535).
Wanneer u problemen oplost, geeft een snelle blik op de lengte van de waarde de reikwijdte aan.
Contractnaam afleiden uit regel-ID
Vaak, als het gaat om een probleemoplossingsgeval, kijkt een ingenieur naar bestemmingsregels. In sommige gevallen heeft een EPG/pcTag veel contracten en kan het omslachtig zijn om problemen op te lossen. In dit gedeelte wordt een manier beschreven om de naam te bepalen van het contract dat wordt gebruikt tussen de EPG's/pcTags op basis van de regel-ID die wordt weergegeven op de CLI van de switch.
Om te beginnen:
1. Query voor het concrete contract/regel object actrlRule, indien gewenst, beperk de zoekopdracht op eigenschap: id waarde: rule-d
2. Zodra de juiste regel is gevonden, klikt u op de groene pijl op de DN om de objecten van ActrlRule weer te geven. De kinderen zijn waar ons antwoord ligt.

Het onderliggende object is actrlRsToEpgConn. Meestal kunnen er twee zijn, één voor elke EPG. Het DN van dit object toont de twee EPG's waartussen het contract wordt toegepast, evenals de richting (aanbieder of consument) en, het belangrijkste, de objectnaam van het contract.

Zoals aangegeven is de contractnaam in dit geval brc-dpita-ssh.
Vraag indien nodig naar vzBrCP om het juiste contract te vinden.
