Los hosts ESXi preparados para NSX 6.4.5 o 6.4.6 muestran una pantalla de diagnóstico de color púrpura (PSOD) cuando la función de latencia de la infraestructura virtual está habilitada en vRNI 4.2 o una versión posterior.

Problema

Se muestra una pantalla de diagnóstico PSOD cuando el número de túneles de BFD supera los 900.

Causa

La función de latencia de la infraestructura virtual en vRNI utiliza la supervisión de BFD en los hosts preparados por NSX para establecer túneles entre hosts. La pantalla PSOD se muestra cuando el módulo de kernel de NSX mantiene el estado de las sesiones de BFD mientras responde a una consulta detallada del túnel de BFD desde el agente del plano de control.

La pantalla PSOD no se muestra cuando el número de túneles de BFD es de varios centenares. Cuando el número de túneles de BFD supera los 900, el host sufre un error crítico y deja de estar operativo. El número de hosts que crearán más de 900 túneles de BFD dependerá del número de VTEP de su entorno.

Para determinar el número de túneles de BFD en su entorno, utilice la siguiente fórmula: (N-1)*(T^2)

Donde:
  • N es el número de hosts.
  • T es el número de VTEP por host.

Por ejemplo, en un clúster de cuatro hosts con dos VTEP cada uno, el número de túneles de BFD que cada host puede ver es:

(4-1)*(2^2)=12
En el seguimiento de la pila de la pantalla PSOD, observe las entradas similares a las siguientes:
#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 ?? ()
En el archivo /var/log/vmkernel.log del host, observe las siguientes entradas, que indican que BFD se habilitó en el host:
# 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
En el volcado de núcleo o de memoria de ESXi, observe los siguientes mensajes de BFD (cambio de estado de 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.

Solución

  1. Si utilizó vRNI para habilitar la recopilación de métricas de latencia de los hosts preparados para NSX, deshabilite la función de latencia de la infraestructura virtual.
    1. En vRNI, desplácese hasta Configuración (Settings) > Cuentas y orígenes de datos (Accounts and Data Sources).
    2. Edite el origen de datos de NSX Manager y desmarque la casilla Habilitar latencia de infraestructura virtual (Enable Virtual Infrastructure Latency).
    3. Haga clic en Enviar (Submit) para confirmar el cambio.
  2. Si utilizó API de NSX para habilitar la recopilación de métricas de latencia, o si el dispositivo de vRNI es inaccesible, deshabilite BFD ejecutando una solicitud de API.
    1. Recupere los detalles de configuración global de BFD ejecutando la siguiente API GET y compruebe que BFD está habilitado:
      GET /api/2.0/vdn/bfd/configuration/global
      Respuesta de API de ejemplo:
      <bfdGlobalConfiguration>
          <enabled>true</enabled>
          <pollingIntervalSecondsForHost>180</pollingIntervalSecondsForHost>
          <bfdIntervalMillSecondsForHost>120000</bfdIntervalMillSecondsForHost>
      </bfdGlobalConfiguration>
    2. Deshabilite BFD ejecutando la siguiente solicitud de API PUT:
      PUT /api/2.0/vdn/bfd/configuration/global
      Cuerpo de solicitud de ejemplo:
      <bfdGlobalConfiguration>
          <enabled>false</enabled>
          <pollingIntervalSecondsForHost>180</pollingIntervalSecondsForHost>
          <bfdIntervalMillSecondsForHost>120000</bfdIntervalMillSecondsForHost>
      </bfdGlobalConfiguration>
    Para obtener información detallada sobre los parámetros de configuración de BFD, consulte la Guía de NSX API.