目錄

簡介

拓撲

流程概述

確定使用的合約/分割槽規則

驗證硬體程式設計

硬體程式設計問題故障排除

有用的故障排除命令

疑難排解提示

從規則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）、7和6的過濾器ID以及2686976的範圍。

注意：透過此命令輸出，您可以輕鬆找到必須在實驗室系統中檢查的規則；但是，在生產環境中如果發生動態更改，可能會很麻煩。

另一個可用來尋找利益規則的方法是使用Visore。在上下文託管對象(MO)上搜尋fvCtx。然後，您可以在該螢幕上搜尋您的特定上下文可分辨名稱(DN)，如下所示：

請注意該情景的範圍。您可以使用此命令對映到show-zoning-rule命令輸出，以便查詢必須查詢的規則：

您也可以從使用者介面(UI)辨識前後關聯的區段ID/範圍，如下所示：

此範圍與show zoning-rules命令輸出中顯示的範圍一致：

有了範圍ID資訊並確定了規則和過濾器ID後，可以使用next命令驗證您是否點選了新過濾器（而不是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也很有用。

您可以使用DN name fvAEPg 和grep，透過moquery命令在MO上搜尋特定pcTag，如下所示：

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可以具有本地或全局範圍：

- 系統保留pcTag -此pcTag用於系統內部規則(1-15)。

- 全局範圍的pcTag -此pcTag用於共用服務(16-16385)。

- 本地範圍內的pcTag -此pcTag在本地按VRF使用(範圍為16386-65535)。

在排除故障時，快速檢視值的長度即可確定範圍。

從規則ID派生合約名稱

通常，在疑難解答案例中，工程師會考慮分割槽規則。在某些情況下，EPG/pcTag具有許多合約，並且故障排除可能很麻煩。本節概述一種方法，該方法根據交換機CLI上看到的規則ID確定EPG/pcTags之間使用的合約名稱。

若要開始：

1. 查詢具體合約/規則對象actrlRule（如果需要），按屬性id值rule-d縮小搜尋範圍

2. 找到正確的規則後，按一下DN上的綠色箭頭，以檢視actrlRule物件子系。我們的答案就在孩子身上。

此處的子對象為actrlRsToEpgConn。通常可以有兩個，每個EPG一個。此對象的DN顯示兩個應用合約的EPG以及方向（提供商或消費者），最重要的是合約對象名稱。

如突出顯示內容所示，本例中的合約名稱為brc-dpita-ssh。

如果需要，請查詢vzBrCP以查詢正確的合約。