簡介
本文檔介紹ACI交換矩陣中DHCP中繼的故障排除。
縮寫
- BD:網橋域
- EPG:終端組
- ExEPG:外部終結點組
- VRF:虛擬路由和轉送
- 類ID或pcTag:標識EPG的標籤
- DHCP:動態主機設定通訊協定
- SVI:交換虛擬介面
需求
建議您瞭解以下主題的一般知識:
- DHCP概念和工作流(DORA進程)
- ACI概念:訪問策略、終端學習、合約和L3out
- 必須已建立DHCP中繼策略
採用元件
本故障排除練習是在ACI 6.0(8f)版上進行的,使用的是第二代Nexus交換機N9K-C93180YC-EX和N9K-C93240YC-FX2。
本文中的所有命令均在實驗室環境中運行,並使用RFC1819進行IP編址。如果您的網路正在作用,請確保您已瞭解任何指令可能造成的影響,並確保您已根據特定需要設定適當的指令。
本文中的資訊是根據特定實驗室環境內的裝置所建立。文中使用到的所有裝置皆從已清除(預設)的組態來啟動。如果您的網路運作中,請確保您瞭解任何指令可能造成的影響。
疑難排解建議
終端學習
如果終端未獲知,請驗證靜態埠策略,如交換機、介面和VLAN配置。對於虛擬伺服器,請確認埠組已正確部署並分配到VM。
策略部署
確保DHCP中繼策略(dhcpRelayP)和DHCP中繼標籤(dhcpLbl)已正確配置並由相應的網橋域(BD)使用。 標籤策略的所有權規則為:
- 使用者租戶所有權:只有該租戶可以使用策略
- 公共租戶所有權:所有租戶都可以使用該策略,但必須在公共EPG上獲取DHCP伺服器
- Infra租戶所有權:所有租戶都可以使用該策略,DHCP伺服器可以在交換矩陣中的任何位置獲知
如果dhcpRelayP父策略下缺少dhcpRtLblDefToRelayP子類,則沒有BD正在使用中繼策略,因此需要更正操作。
主機可達性
DHCP客戶端必須可從其BD的SVI訪問。如果無法連線,請確認合約和路由設定以確保連線。
終端學習和路由
確保可從客戶端所在的網橋域的SVI訪問DHCP伺服器。
iping -V [ tenant : VRF ] -S [ SVI IP of the Client ] [ DHCP server IP]
Leaf101# iping -V tz:VRF1 -S 172.16.19.1 172.16.18.100
PING 172.16.18.100 (172.16.18.100) from 172.16.19.1: 56 data bytes
64 bytes from 172.16.18.100: icmp_seq=0 ttl=64 time=0.912 ms
64 bytes from 172.16.18.100: icmp_seq=1 ttl=64 time=0.706 ms
64 bytes from 172.16.18.100: icmp_seq=2 ttl=64 time=0.643 ms
64 bytes from 172.16.18.100: icmp_seq=3 ttl=64 time=0.689 ms
64 bytes from 172.16.18.100: icmp_seq=4 ttl=64 time=0.717 ms
--- 172.16.18.100 ping statistics ---
5 packets transmitted, 5 packets received, 0.00% packet loss
round-trip min/avg/max = 0.643/0.733/0.912 ms
在EPG下配置時,必須將DHCP客戶端和DHCP伺服器均獲知為終端。要驗證是否已正確學習這些端點,可以檢查枝葉上的端點管理器表。
show system internal epm endpoint [ip | mac] [ DHCP server IP | DHCP client MAC]
Leaf101# show system internal epm endpoint ip 172.16.18.100
MAC : 0050.56b7.80cf ::: Num IPs : 1
IP# 0 : 172.16.18.100 ::: IP# 0 flags : ::: l3-sw-hit: No
Vlan id : 12 ::: Vlan vnid : 8535 ::: VRF name : tz:VRF1
BD vnid : 15400880 ::: VRF vnid : 2981888
Phy If : 0x1a02c000 ::: Tunnel If : 0
Interface : Ethernet1/45
Flags : 0x80004c04 ::: sclass : 16402 ::: Ref count : 5
EP Create Timestamp : 09/11/2025 17:37:15.158380
EP Update Timestamp : 09/11/2025 19:17:41.261985
EP Flags : local|IP|MAC|sclass|timer|
::::
•••
Leaf101# show system internal epm endpoint mac 0050.56b7.33ee
MAC : 0050.56b7.33ee ::: Num IPs : 0
Vlan id : 25 ::: Vlan vnid : 8494 ::: VRF name : tz:VRF1
BD vnid : 15630228 ::: VRF vnid : 2981888
Phy If : 0x1a02c000 ::: Tunnel If : 0
Interface : Ethernet1/45
Flags : 0x80004804 ::: sclass : 32780 ::: Ref count : 4
EP Create Timestamp : 09/11/2025 17:33:36.158122
EP Update Timestamp : 09/11/2025 19:17:41.258478
EP Flags : local|MAC|sclass|timer|
::::
原則驗證
在驗證DHCP中繼策略時,可以確認以下關鍵屬性:
- 名稱:DHCP中繼策略的識別符號。
- 所有者:配置策略的租戶,指示其可視範圍僅限於該租戶。
- 地址:將DHCP請求中繼到的DHCP伺服器的IP地址。
- DHCP伺服器的位置:通過標籤(如epgDn、bdDefDn和ctxDefDn)進行驗證,以確保與EPG、網橋域和VRF的正確關聯。
- 策略狀態:策略必須處於已形成的狀態,這表示它在交換矩陣中已正確部署並處於活動狀態。
通過在APIC上運行moqueries來執行此驗證,以確認正確建立了DHCP中繼策略,這些策略與適當的租戶相關聯,並且正確連結到相關的網橋域。此步驟有助於及早識別錯誤配置,防止因策略部署缺失或不正確而導致DHCP中繼失敗。
moquery -c dhcpRelayP -f 'dhcp.RelayP.dn*"[ tenant name ].*[ DHCP Relay Policy name ]"' -x rsp-subtree=children
APIC# moquery -c dhcpRelayP -f 'dhcp.RelayP.dn*"tz.*Relay"' -x rsp-subtree=children
Total Objects shown: 1
# dhcp.RelayP
name : tz-DHCP_Relay
<-- cut for brevity-->
dn : uni/tn-tz/relayp-tz-DHCP_Relay
<-- cut for brevity-->
owner : tenant
<-- cut for brevity-->
rn : relayp-tz-DHCP_Relay
# dhcp.ProvDhcp
epgDn : uni/tn-tz/ap-AP1/epg-EPG1
addr : 172.16.18.100
bdDefDn : uni/bd-[uni/tn-tz/BD-BD1]-isSvc-no
<-- cut for brevity-->
ctxDefDn : uni/ctx-[uni/tn-tz/ctx-VRF1]
ctxDefStQual : none
ctxSeg : 2981888
descr :
dn : uni/tn-tz/relayp-tz-DHCP_Relay/provdhcp-[uni/tn-tz/ap-AP1/epg-EPG1]
l3CtxEncap : vxlan-2981888
<-- cut for brevity-->
name : EPG1
<-- cut for brevity-->
pcTag : 16402
<-- cut for brevity-->
# dhcp.RsProv
tDn : uni/tn-tz/ap-AP1/epg-EPG1
addr : 172.16.18.1
<-- cut for brevity-->
state : formed
一旦DHCP中繼策略與客戶端的橋接域(BD)相關聯,將自動建立相應的DHCP標籤策略。此DHCP標籤策略充當DHCP中繼策略和BD之間的連結,從而啟用中繼功能。
您可以使用APIC CLI使用如下命令驗證DHCP標籤策略:
moquery -c dhcpLbl -f 'dhcp.Lbl.dn*"[ tenant ].*[ DHCP Relay Policy name]"'
APIC# moquery -c dhcpLbl -f 'dhcp.Lbl.dn*"tz.*Relay"'
Total Objects shown: 1
# dhcp.Lbl
name : tz-DHCP_Relay
annotation :
childAction :
descr :
dn : uni/tn-tz/BD-BD2/dhcplbl-tz-DHCP_Relay
extMngdBy :
lcOwn : local
modTs : 2025-09-11T16:30:03.016+00:00
monPolDn : uni/tn-common/monepg-default
nameAlias :
owner : tenant
ownerKey :
ownerTag :
rn : dhcplbl-tz-DHCP_Relay
status : modified
tag : yellow-green
uid : 15374
userdom : :all:
這顯示與BD關聯的DHCP標籤對象。
如果正確配置了DHCP中繼策略,則它將有一個使用DHCP標籤的子對象,可以使用以下選項進行驗證:
APIC# moquery -c dhcpRelayP -f 'dhcp.RelayP.dn*"tz.*Relay"' -x rsp-subtree=children rsp-subtree-class=dhcpRtLblDefToRelayP
Total Objects shown: 1
# dhcp.RelayP
name : tz-DHCP_Relay
annotation :
childAction :
descr :
dn : uni/tn-tz/relayp-tz-DHCP_Relay
extMngdBy :
lcOwn : local
modTs : 2025-09-11T16:10:56.421+00:00
mode : visible
monPolDn : uni/tn-common/monepg-default
nameAlias :
owner : tenant
ownerKey :
ownerTag :
rn : relayp-tz-DHCP_Relay
status : modified
uid : 15374
userdom : :all:
# dhcp.RtLblDefToRelayP
tDn : uni/bd-[uni/tn-tz/BD-BD2]-isSvc-no/dhcplbldef-tz-DHCP_Relay
childAction : deleteNonPresent
dn : uni/tn-tz/relayp-tz-DHCP_Relay/rtlblDefToRelayP-[uni/bd-[uni/tn-tz/BD-BD2]-isSvc-no/dhcplbldef-tz-DHCP_Relay]
lcOwn : local
modTs : 2025-09-11T16:30:03.106+00:00
rn : rtlblDefToRelayP-[uni/bd-[uni/tn-tz/BD-BD2]-isSvc-no/dhcplbldef-tz-DHCP_Relay]
status :
tCl : dhcpLblDef
DHCP封包追蹤
ACI將傳送到CPU的所有DHCP資料包記錄為跟蹤檔案,可以對這些跟蹤檔案進行分析以排除DHCP發現、提供、請求和確認(DORA)進程故障。使用以下命令檢視DHCP資料包跟蹤:
show dhcp internal event-history traces
提示:單個DHCP資料包會生成超過100個跟蹤條目。強烈建議結合正規表示式使用grep來過濾相關輸出,以便進行高效分析。
在Cisco ACI的DHCP跟蹤分析過程中,可以確認幾個關鍵屬性以確保DHCP中繼正常運行:
表示正在將DHCP選項82新增到資料包,這對於中繼代理資訊至關重要。
表示在DHCP中繼策略中配置的DHCP伺服器IP地址。
中繼用於到達DHCP伺服器的SVI IP地址。
確認DHCP客戶端和伺服器屬於同一個VRF情景。
觀察到的DHCP消息的型別,例如Discover、Offer、Request或Ack。
配置DHCP標籤策略的VRF名稱。
DHCP客戶端的MAC地址。
使用的DHCP埠,通常用於客戶端68個,用於伺服器67個。
Leaf101# show dhcp internal event-history traces | grep -A34 -B70 "00 50 56 b7 33 ee" | egrep "(Rec.*pkt.*intf|ip add|UDP|packet vlan|IfIndex|interface:|[DS]mac|ctx.*is.*:|Pkt.*ID|relay_handle.*(ifindex|msg|from.*ctx)|relayback|relay_send.*(ifindex|Client.*Server)|Adding option82|Mac addr|dhcp_get_vlan|Add.*suboption.*epg_vnid|Helper|Outgoing|gi.*is|Cross-vrf|Sending.*Server|Relaying.*DHCP)" | head -29
2) 2025 Sep 11 04:14:46.660433 _relay_handle_packet_from_pkt_mgr: 480 : Relaying the DHCP pkt on intf: Vlan24
28) 2025 Sep 11 04:14:46.659985 _relay_add_circuitid_rmtid_msiteinfo: 3354 : Add circuit id suboption: if_index: Ethernet1/45 (1a02c000) , svlan: 24, option def id: 0 epg_vnid 8529.
••
31) 2025 Sep 11 04:14:46.659934 _relay_add_option82: 3151 : Mac addr is 28:6f:7f:eb:54:9f
32) 2025 Sep 11 04:14:46.659930 _relay_add_option82: 3147 : Adding option82 suboptions
35) 2025 Sep 11 04:14:46.659924 _relay_send_packet: 1975 : gi address is 172.16.18.1
••
37) 2025 Sep 11 04:14:46.659921 _relay_send_packet: 1965 : Helper address is 172.16.18.100
38) 2025 Sep 11 04:14:46.659918 _relay_send_packet: 1956 : Client and Server are in the same VRF
39) 2025 Sep 11 04:14:46.659793 _relay_send_packet: 1898 : ifindex is Vlan24
40) 2025 Sep 11 04:14:46.659786 _relay_send_packet: 1833 : dhcp_relay_send_packet: relayback_ifindex is Ethernet1/45
••
42) 2025 Sep 11 04:14:46.659730 _relay_handle_packet_from_pkt_mgr: 447 : DHCPDISCOVER msg
43) 2025 Sep 11 04:14:46.659728 _relay_handle_packet_from_pkt_mgr: 438 : ifindex is Vlan24
••
61) 2025 Sep 11 04:14:46.657274 _snoop_handle_istack_packet: 1763 : ctx name is tz:VRF1
64) 2025 Sep 11 04:14:46.657062 _snoop_handle_istack_packet: 1751 : Smac = [00 50 56 b7 33 ee ]
65) 2025 Sep 11 04:14:46.657057 _snoop_handle_istack_packet: 1749 : Dmac = [ff ff ff ff ff ff ];
68) 2025 Sep 11 04:14:46.657050 _snoop_handle_istack_packet: 1737 : Logical interface: Vlan24
72) 2025 Sep 11 04:14:46.657044 _snoop_handle_istack_packet: 1721 : Physical interface: Ethernet1/45
••
86) 2025 Sep 11 04:14:46.657024 _snoop_handle_istack_packet: 1669 : UDP src port 68 UDP dst port 67
88) 2025 Sep 11 04:14:46.657021 _snoop_handle_istack_packet: 1577 : destination ip address 255.255.255.255
89) 2025 Sep 11 04:14:46.657018 _snoop_handle_istack_packet: 1574 : source ip address 0.0.0.0
95) 2025 Sep 11 04:14:46.656991 _snoop_handle_istack_packet: 1533 : Received pkt on Vlan 25 intf Ethernet1/45
常見問題
問題1:L3out silent drop
當L3Out使用vPC介面與相鄰路由器形成鄰居關係時,每台交換機使用自己的vTEP傳送資料包。如果vPC對等裝置收到的DHCP服務具有其自身的vTEP地址,它將通過交換矩陣轉發資料包,導致發起者vTEP無提示丟棄該資料包而沒有故障日誌。
若要檢查此類捨棄,請使用以下命令:
show dhcp internal event-history traces | egrep “(failed|Drop).*packet" | head
Leaf101# show dhcp internal event-history traces | egrep "(failed|Drop).*packet" | head
53) 2025 Sep 10 04:14:26.685020 _snoop_handle_istack_packet: 1881 : Drop DHCP DISCOVER/REQUEST packet because it is for a BD SVI, and recvd from fabric facing intf.
172) 2025 Sep 10 04:14:23.792669 _snoop_handle_istack_packet: 1881 : Drop DHCP DISCOVER/REQUEST packet because it is for a BD SVI, and recvd from fabric facing intf.
239) 2025 Sep 10 04:14:22.516679 _snoop_handle_istack_packet: 1881 : Drop DHCP DISCOVER/REQUEST packet because it is for a BD SVI, and recvd from fabric facing intf.
444) 2025 Sep 10 04:14:17.055216 _snoop_handle_istack_packet: 1881 : Drop DHCP DISCOVER/REQUEST packet because it is for a BD SVI, and recvd from fabric facing intf.
563) 2025 Sep 10 04:14:14.450437 _snoop_handle_istack_packet: 1881 : Drop DHCP DISCOVER/REQUEST packet because it is for a BD SVI, and recvd from fabric facing intf.
736) 2025 Sep 10 04:14:09.056993 _snoop_handle_istack_packet: 1881 : Drop DHCP DISCOVER/REQUEST packet because it is for a BD SVI, and recvd from fabric facing intf.
803) 2025 Sep 10 04:14:07.344467 _snoop_handle_istack_packet: 1881 : Drop DHCP DISCOVER/REQUEST packet because it is for a BD SVI, and recvd from fabric facing intf.
906) 2025 Sep 10 04:14:06.290135 _snoop_handle_istack_packet: 1881 : Drop DHCP DISCOVER/REQUEST packet because it is for a BD SVI, and recvd from fabric facing intf.
1025) 2025 Sep 10 04:14:03.770388 _snoop_handle_istack_packet: 1881 : Drop DHCP DISCOVER/REQUEST packet because it is for a BD SVI, and recvd from fabric facing intf.
1094) 2025 Sep 10 04:14:03.234017 _snoop_handle_istack_packet: 1881 : Drop DHCP DISCOVER/REQUEST packet because it is for a BD SVI, and recvd from fabric facing intf.
導航到Tenants > [ tenant name ] > Networking > L3outs > [ L3out name ] > Logical Node Profile > [ LNP name ] > Logical Interface Profile [ LIP name ] > SVI > [ SVI policy]
進入此狀態後,create或openSecondary IP address和enable for DHCP Relay覈取方塊。

這將強制使用vPC vTEP地址而不是本地vTEP傳送消息,並且資料包按照預期轉發。
問題2:DHCP伺服器不支援選項82
選項82在VXLAN環境(如ACI)中至關重要,它根據vTEP地址在源枝葉和目的地之間建立電路。它包括:
- 電路ID:看到DHCP發現的傳入介面、VLAN和EPG VNID。
- 遠端ID:接收發現的交換機的TEP地址。
如果缺少選項82,則會丟棄DHCP中繼資料包。通過檢查DHCP跟蹤日誌中是否存在指示缺少選項82的錯誤,驗證連線到該DHCP伺服器的枝葉上的選項82是否存在。
此命令驗證DCHP伺服器所連線的枝葉交換機是否收到具有有效DHCP選項82的優惠
Leaf101# show dhcp internal event-history traces | egrep “(failed|Drop).*packet" | head
67) 2025 Sep 10 05:16:52.336785 _relay_handle_packet: 1478 : dhcp_relay_handle_packet: DHCP UDP failed to relay packet back to client - Unknown error -1
68) 2025 Sep 10 05:16:52.336772 _relayback_response: 929 : dhcp_relayback_response : option 82 not present. Drop the packet
479) 2025 Sep 10 05:11:07.308085 _relay_handle_packet: 1478 : dhcp_relay_handle_packet: DHCP UDP failed to relay packet back to client - Unknown error -1
480) 2025 Sep 10 05:11:07.308073 _relayback_response: 929 : dhcp_relayback_response : option 82 not present. Drop the packet
891) 2025 Sep 10 05:10:22.312386 _relay_handle_packet: 1478 : dhcp_relay_handle_packet: DHCP UDP failed to relay packet back to client - Unknown error -1
892) 2025 Sep 10 05:10:22.312374 _relayback_response: 929 : dhcp_relayback_response : option 82 not present. Drop the packet
1303) 2025 Sep 10 05:09:37.309888 _relay_handle_packet: 1478 : dhcp_relay_handle_packet: DHCP UDP failed to relay packet back to client - Unknown error -1
1304) 2025 Sep 10 05:09:37.309874 _relayback_response: 929 : dhcp_relayback_response : option 82 not present. Drop the packet
1715) 2025 Sep 10 05:08:52.295721 _relay_handle_packet: 1478 : dhcp_relay_handle_packet: DHCP UDP failed to relay packet back to client - Unknown error -1
1716) 2025 Sep 10 05:08:52.295709 _relayback_response: 929 : dhcp_relayback_response : option 82 not present. Drop the packet
參考資料
ACI交換矩陣中的DHCP中繼深度故障排除 — TACDCN-2017