vRNI 4.2 이상에서 가상 인프라 지연 기능이 사용하도록 설정된 경우 NSX 6.4.5 또는 6.4.6에 대해 준비된 ESXi 호스트에 PSOD(Purple Screen of Death) 진단 화면이 표시됩니다.
문제
BFD 터널 수가 900을 초과할 경우 PSOD 진단 화면이 표시됩니다.
원인
vRNI의 가상 인프라 지연 기능은 NSX 준비 호스트에서 BFD 모니터링을 사용하여 호스트 간에 터널을 설정합니다. NSX 커널 모듈이 제어부 에이전트의 상세 BFD 터널 쿼리에 응답하는 동안 BFD 세션의 상태를 유지하는 경우 PSOD가 발생합니다.
BFD 터널 수가 수백 개에 해당하는 경우 PSOD가 확인되지 않습니다. BFD 터널 수가 900을 초과하면 호스트에 심각한 오류가 발생하고 사용할 수 없게 됩니다. 900개를 초과하는 BFD 터널을 생성하는 호스트 수는 환경의 VTEP 수에 따라 다릅니다.
환경의 BFD 터널 수를 확인하려면 공식 (N-1)*(T^2)
를 사용합니다.
여기서 다음이 적용됩니다.
- N은 호스트의 수입니다.
- T는 호스트당 VTEP의 수입니다.
예를 들어, 각각 2개의 VTEP이 있는 4개의 호스트 클러스터에서 각 호스트가 볼 수 있는 BFD 터널 수는 다음과 같습니다.
(4-1)*(2^2)=12
PSOD의 스택 추적에서 다음과 유사한 항목을 확인합니다.
#0 DLM_free (msp=0x431a455dcca0, mem=mem@entry=0x431a458cbd10, allowTrim=allowTrim@entry=1 '\001') at bora/vmkernel/main/dlmalloc.c:4924 #1 0x0000418012343ffa in Heap_Free (heap=0x431a455dc000, mem=<optimized out>, mem@entry=0x431a458cbd10) at bora/vmkernel/main/heap.c:4314 #2 0x000041801222db25 in vmk_HeapFree (heap=<optimized out>, mem=mem@entry=0x431a458cbd10) at bora/vmkernel/core/vmkapi_heap.c:250 #3 0x000041801393ca61 in __VDL2_Free (heapID=<optimized out>, data=data@entry=0x431a458cbd10) at /build/mts/release/bora-13168956/esx-datapath/modules/vdl2/vdl2.c:152 #4 0x0000418013950caf in VDL2_CPTaskFree (task=task@entry=0x431a458cbd10) at /build/mts/release/bora-13168956/esx-datapath/modules/vdl2/vdl2_ctlplane.c:164 #5 0x0000418013949415 in VDL2CPWorldProcessTask (task=0x431a458cbd10) at /build/mts/release/bora-13168956/esx-datapath/modules/vdl2/vdl2_cpworld.c:283 #6 VDL2CPWorldFunc (data=data@entry=0x0) at /build/mts/release/bora-13168956/esx-datapath/modules/vdl2/vdl2_cpworld.c:335 #7 0x0000418012308adf in vmkWorldFunc (data=<optimized out>) at bora/vmkernel/main/vmkapi_world.c:528 #8 0x00004180124c91f5 in CpuSched_StartWorld (destWorld=<optimized out>, previous=<optimized out>) at bora/vmkernel/sched/cpusched.c:10792 #9 0x0000000000000000 in ?? ()
호스트의
/var/log/vmkernel.log 파일에서 BFD가 호스트에서 사용하도록 설정되어 있음을 나타내는 다음 항목을 확인합니다.
# cpu75:68603 opID=6616a61a)vxlan: VDL2PortsetPropSet:1036: Updating BFD VTEP config to : enable # cpu75:68603 opID=6616a61a)BFD: BFD_CreateNewSession ENTER: localIP: a.b.c.d , remoteIP: w.x.y.z , probeInterval (in milli seconds): 12000 # cpu75:68603 opID=6616a61a)WARNING: BFD: Inserted new session: Discriminator 1471713223, localIP: a.b.c.d remoteIP: w.x.y.z
ESXi 코어 덤프 또는 메모리 덤프에서 다음 BFD 메시지를 확인합니다(BFD 상태 변경: init -> up).
less vmkernel-zdump.1 vers:1 diag:"No Diagnostic" state:up mult:3 length:24 flags: pol my_disc:0x50c322ca your_disc:0x39f2436f min_tx:300000us (300ms) min_rx:12000000us (12000ms) min_rx_echo:0us (0ms)(null): BFD state change: init->up "No Diagnostic"->"No Diagnostic".(null): New remote min_rx. vers:1 diag:"No Diagnostic" state:up mult:3 length:24 flags: pol my_disc:0x5a566ae8 your_disc:0x16f3890c min_tx:300000us (300ms) min_rx:12000000us (12000ms) min_rx_echo:0us (0ms)(null): BFD state change: init->up "No Diagnostic"- >"No Diagnostic".(null): New remote min_rx.