目录

简介

拓扑

流程概述

确定使用的合同/分区规则

验证硬件编程

排除硬件编程问题

有用的故障排除命令

故障排除提示

从规则ID派生合同名称

简介

本文档介绍如何验证在以应用为中心的基础设施(ACI)交换矩阵中是否配置了合同以及合同是否行为正确。

拓扑

在本文档中使用的示例中，虚拟机A(VM)连接到Leaf1，并且已签订合同，允许其与连接到Leaf2的VM-B通信。合同允许互联网控制消息协议(ICMP)和HTTP。

下图说明了拓扑：

流程概述

以下是合同和规则的策略交互和流程：

1. 应用策略基础设施控制器(APIC)上的策略管理器与交换机上的策略元素管理器通信。

2. 交换机上的策略元素管理器对交换机上的对象存储进行编程。

3. 交换机上的策略管理器与交换机上的访问控制列表服务质量(ACLQOS)客户端通信。

4. ACLQOS客户端对硬件进行编程。

确定使用的合同/分区规则

以下是为两个终端组(EPG)添加合同之前从枝叶输出的show zoning-rule命令示例。

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]

这是添加合同后的相同命令输出，这样两个EPG可以相互通信：

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]

注意：注意已添加的新规则ID（4131和4132）、过滤器ID 7和6以及应用范2686976。

注意：此命令输出允许您轻松地查找必须在实验室系统中检查的规则；但是，在生产环境中发生动态更改时可能会很麻烦。

另一种定位利益规则的方法是使用Visore。在上下文托管对象(MO)上搜索fvCtx。然后，您可以在该屏幕上搜索您的特定情景可分辨名称(DN)，如下所示：

请注意该情景的范围。您可以使用此命令映射到show-zoning-rule命令输出，以便查找必须查询的规则：

您还可以通过用户界面(UI)标识上下文的分段ID/范围，如下所示：

此作用域与show zoning-rules命令输出中显示的作用域匹配：

一旦拥有作用域ID信息，并且您标识了规则和过滤器ID，就可以使用下一命令来验证是否点击了新过滤器（而不是EPG之间的隐式拒绝消息）。默认情况下会包含隐式拒绝消息，以使EPG无法通信。

请注意，在此命令输出中，Leaf1、Filter-6(f-6)正在递增：

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

请注意，在此命令输出中，Leaf2、Filter-7(f-7)正在递增：

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

提示：有关范围、规则ID、目标、源pcTags和过滤器的知识对于进一步解决此问题的尝试非常重要。了解存在规则ID的EPG也很有用。

您可以通过moquery命令使用DN名称fvAEPg和grep对特定pcTag在MO上执行搜索，如下所示：

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

您还可以将filter选项与moquery命令一起使用，如下所示：

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

验证硬件编程

现在，您可以验证规则的硬件条目。要查看硬件信息，请输入show platform internal ns table mth_lux_slvz_DHS_SecurityGroupStatTable_memif_data ingress命令(这是vsh_lc命令):

在本示例中，硬件条目41(条目[000041])正在递增。

注：所示的上一个命令用于Northstar ASIC。用于Donner或Donner+的命令是show platform internal ns table mth_luxh_slvy_DHS_SecurityGroupStatTable_memif_data。

注：在生产环境中使用此命令不切实际，但您可以改用本节中介绍的其他命令。

记住规则(4132)和范围(268976)。

输入此命令以确定三重内容可寻址存储器(TCAM)硬件索引条目映射的规则ID，并根据规则ID和/或过滤器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]

在本示例中，感兴趣的源和目标EPG组合为32771=0x8003,49155=0xC003。因此，您可以考虑与规则ID（4131和4132）和过滤器ID（6和7）匹配的这些源和目标类的所有TCAM条目。

在本例中，其中一些TCAM条目被转储。供参考，以下是允许这些EPG的ping和Web流量的合同配置：

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)

注：所示的上一个命令用于Northstar ASIC。用于Donner或Donner+的命令是show platform internal ns table 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

提示：您可以使用相同的方法验证每个TCAM条目。

排除硬件编程问题

本节提供一些有用的故障排除命令和提示。

有用的故障排除命令

以下是一些有用的命令，可用于在遇到问题时定位枝叶策略管理器错误：

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]

提示：有些文件很大，因此将其发送到bootflash并在编辑器中检查它们会更加容易。

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

故障排除提示

以下是一些有用的故障排除提示：

- 如果您似乎遇到TCAM耗尽问题，请检查UI或CLI中是否存在与问题规则相关的故障。可以报告此故障：

Fault F1203 - Rule failed due to hardware programming error.
一条规则可以在专用集成电路(ASIC)中占用多个TCAM条目。要查看ASIC上的条目数，请输入以下命令：

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

注：在本示例中，有43个条目。此使用情况也会报告给eqptCapacity类中的APIC。

- 当存在多个匹配项时，TCAM查找会返回较低的hw-index。要验证索引，请输入以下命令：

show system internal aclqos zoning-rule
进行故障排除时，您可以观察由any-any-implicit规则引起的丢弃。此规则始终位于底部，这意味着由于规则不存在，数据包将被丢弃。这可能是因为配置错误，或者策略元素管理器未按预期对其进行编程。

- pcTags可以具有本地或全局范围：

System Reserved pcTag — 此pcTag用于系统内部规则(1-15)。

全局范围的pcTag — 此pcTag用于共享服务(16-16385)。

本地作用域的pcTag — 此pcTag按VRF在本地使用(范围为16386-65535)。

进行故障排除时，快速查看值的长度表示其范围。

从规则ID派生合同名称

通常，在故障排除案例中，工程师会查看分区规则。在某些情况下，EPG/pcTag具有许多合同，排除故障可能非常麻烦。本部分通过交换机CLI上显示的规则ID确定EPG/pcTags之间使用的合同名称。

要开始查询，请根据需要查询具体合同/规则对象actrlRule，按属性id value: rule-d缩小搜索范围

找到正确的规则后，点击DN上的绿色箭头以查看actrlRule对象的子对象。答案就在孩子身上。

此处的子对象是actrlRsToEpgConn。通常可以有两种，每种EPG对应一种。此对象的DN显示应用合同的两个EPG以及方向（提供商或消费者），最重要的是合同对象名称。

如突出显示，本例中的合同名称为brc-dpita-ssh。

如果需要，请查询vzBrCP以查找正确的合同。