소개
이 문서에서는 ACI 패브릭에서 DHCP 릴레이의 문제를 설명합니다.
약어
- BD: 브리지 도메인
- EPG: 엔드포인트 그룹
- ExEPG: 외부 엔드포인트 그룹
- VRF: 가상 라우팅 및 포워딩
- 클래스 ID 또는 pcTag: EPG를 식별하는 태그
- DHCP: 동적 호스트 구성 프로토콜
- SVI: 스위치드 가상 인터페이스
요구 사항
이 문서에서는 다음과 같은 주제에 대해 일반적으로 알고 있는 것이 좋습니다.
- DHCP 개념 및 워크플로(DORA 프로세스)
- ACI 개념: 액세스 정책, 엔드포인트 학습, 계약 및 L3out
- DHCP 릴레이 정책을 이미 생성해야 합니다.
사용되는 구성 요소
이 트러블슈팅 연습은 2세대 Nexus 스위치 N9K-C93180YC-EX 및 N9K-C93240YC-FX2를 사용하여 ACI 버전 6.0(8f)에서 수행되었습니다.
이 문서의 모든 명령은 랩 환경에서 실행되었으며 IP 주소 지정에 RFC1819를 사용합니다. 네트워크가 가동 중인 경우, 특정 명령의 잠재적인 영향을 이해하고 해당 명령을 특정 요구 사항에 맞게 적절히 적용해야 합니다.
이 문서의 정보는 특정 랩 환경의 디바이스를 토대로 작성되었습니다. 이 문서에 사용된 모든 디바이스는 초기화된(기본) 컨피그레이션으로 시작되었습니다. 현재 네트워크가 작동 중인 경우 모든 명령의 잠재적인 영향을 미리 숙지하시기 바랍니다.
문제 해결 권장 사항
엔드포인트 학습
엔드포인트를 학습하지 않은 경우 스위치, 인터페이스, VLAN 컨피그레이션과 같은 정적 포트 정책을 검증합니다. 가상 서버의 경우 포트 그룹이 VM에 올바르게 구축되고 할당되었는지 확인합니다.
정책 구축
DHCP 릴레이 정책(dhcpRelayP) 및 DHCP 릴레이 레이블(dhcpLbl)이 올바르게 구성되어 적절한 브리지 도메인(BD)에서 사용되고 있는지 확인합니다. 레이블 정책에 대한 소유권 규칙은 다음과 같습니다.
- 사용자 테넌트 소유권: 해당 테넌트에서만 정책을 사용할 수 있습니다.
- 공통 테넌트 소유권: 모든 테넌트는 정책을 사용할 수 있지만 DHCP 서버는 공통 EPG에서 학습해야 합니다
- 인프라 테넌트 소유권: 모든 테넌트가 정책을 사용할 수 있으며 패브릭 내 어디서나 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 서버를 모두 엔드포인트로 학습해야 합니다. 이러한 엔드포인트가 올바르게 학습되었는지 검증하려면 leaf에서 엔드포인트 관리자 테이블을 확인할 수 있습니다.
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 릴레이 정책의 식별자.
- 소유자: 정책이 구성된 테넌트로, 해당 테넌트로 제한된 가시성 범위를 나타냅니다.
- Address: DHCP 요청이 릴레이되는 DHCP 서버의 IP 주소.
- DHCP 서버의 위치: EPG, 브리지 도메인 및 VRF와의 올바른 연결을 보장하기 위해 epgDn, bdDefDn 및 ctxDefDn과 같은 태그를 통해 검증되었습니다.
- 정책의 상태: 정책이 패브릭에서 올바르게 구축되고 활성 상태임을 나타내는 구성된 상태여야 합니다.
이 검증은 APIC에서 moquery를 실행하여 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(Bridge Domain)에 연결되면 해당 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 Label 객체를 표시합니다.
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(Discover, Offer, Request, and Acknowledge) 프로세스 트러블슈팅을 위해 분석할 수 있습니다. DHCP 패킷 추적을 보려면 다음 명령을 사용합니다.
show dhcp internal event-history traces
팁: 단일 DHCP 패킷이 100개 이상의 추적 엔트리를 생성합니다. 효율적인 분석을 위해 정규식과 함께 grep를 사용하여 관련 출력을 필터링하는 것이 좋습니다.
Cisco ACI에서 DHCP 추적 분석을 수행하는 동안 다음과 같은 몇 가지 주요 특성을 확인하여 적절한 DHCP 릴레이 작업을 보장할 수 있습니다.
DHCP 옵션 82가 패킷에 추가되고 있음을 나타냅니다. 이는 릴레이 에이전트 정보에 필수적입니다.
DHCP 릴레이 정책에 구성된 DHCP 서버 IP 주소를 나타냅니다.
릴레이가 DHCP 서버에 연결하기 위해 사용하는 SVI IP 주소입니다.
- 클라이언트와 서버는 동일한 VRF에 있습니다.
DHCP 클라이언트와 서버 모두 동일한 VRF 컨텍스트에 속하는지 확인합니다.
Discover, Offer, Request 또는 Ack와 같이 관찰된 DHCP 메시지의 유형입니다.
DHCP Label(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 무음 삭제
L3Out이 vPC 인터페이스를 사용하여 인접 라우터와 네이버 관계를 형성하는 경우 각 스위치는 자체 vTEP를 사용하여 패킷을 전송합니다. vPC 피어가 자체 주소가 아닌 vTEP 주소의 DHCP 제공을 받은 경우 패브릭을 통해 패킷을 전달하므로 발신자 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](SVI 정책)로 이동합니다.
그런 다음 보조 IP 주소를 만들거나 열고 Enable for DHCP Relay(DHCP 릴레이에 활성화) 확인란을 활성화합니다.

이렇게 하면 메시지가 로컬 vTEP 대신 vPC vTEP 주소를 사용하여 전송되고 패킷이 예상대로 전달됩니다.
문제 2: DHCP 서버는 옵션 82를 지원하지 않습니다.
옵션 82는 ACI와 같은 VXLAN 환경에서 vTEP 주소를 기반으로 소스 leaf와 대상 간에 회로를 생성하는 데 중요합니다. 여기에는 다음이 포함됩니다.
- 회선 ID: DHCP 검색이 표시되는 수신 인터페이스, VLAN 및 EPG VNID.
- 원격 ID: 검색을 수신한 스위치의 TEP 주소입니다.
옵션 82가 없으면 DHCP 릴레이 패킷이 삭제됩니다. DHCP 추적 로그에서 옵션 82가 누락되었음을 나타내는 오류를 확인하여 DHCP 서버에 연결된 리프에 옵션 82가 있는지 확인합니다.
이 명령은 DCHP 서버가 연결된 leaf 스위치가 유효한 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