Problema

En varios despliegues de Remote Desktop Services (RDS) sobre Windows Server 2025 aparecen pantallas azules intermitentes con el código DRIVER_IRQL_NOT_LESS_OR_EQUAL. El fallo ocurre cuando los usuarios navegan ciertos sitios con Chrome y, a veces, con otras aplicaciones que usan la pila de red. El dump muestra a tcpip.sys como el módulo que provocó la excepción, concretamente la rutina WfpTlShimInspectFastLoopbackSendDatagram. El síntoma es reproducible, pero no constante: la sesión se cierra abruptamente y el host necesita reiniciarse.

Este patrón no es exclusivo de una versión concreta de Windows; se ha reportado en entornos RDS con FSLogix, con o sin soluciones EDR, y tras actualizar controladores y parches del sistema. El objetivo del artículo es ofrecer un método reutilizable para diagnosticar y corregir este tipo de BSODs en servidores de terminales.

Causa

Los BSOD con DRIVER_IRQL_NOT_LESS_OR_EQUAL aparecen cuando un driver accede a memoria paginada desde un nivel de interrupción demasiado alto. En el contexto de RDS, las causas más frecuentes son:

  1. Filtros de red basados en Windows Filtering Platform (WFP). Antivirus, VPN o soluciones de inspección de tráfico añaden controladores que interceptan paquetes. Si alguno de ellos tiene un bug, la llamada a tcpip.sys falla.
  2. Controladores de adaptador de red desactualizados o con offload mal configurado. Funciones como TCP Chimney, Large Receive Offload (LRO) o Receive Side Scaling (RSS) pueden generar accesos a memoria no paginada bajo alta IRQL.
  3. Incompatibilidad entre la sandbox de Chrome y la pila de red. Chrome usa sockets de bajo nivel y, en algunos casos, la combinación de filtros WFP y offloads provoca colisiones.
  4. Configuraciones de FSLogix que manipulan el registro de red de la sesión. Cuando los perfiles se montan sobre VHDX, el redireccionamiento de rutas puede activar rutas de loopback que el filtro inspecciona.
  5. Problemas de hardware de memoria. Aunque menos frecuente, una RAM defectuosa puede manifestarse como errores de acceso a direcciones inválidas bajo IRQL alta.

Identificar cuál de estos factores está presente en el host es la clave para una solución estable.

Solución

El enfoque se divide en tres fases: recopilación de información, aislamiento del driver problemático y aplicación de correcciones.

1. Recopilar volcados y símbolos

  1. Configura el servidor para generar Full Memory Dumps (HKLM\SYSTEM\CurrentControlSet\Control\CrashControl\CrashDumpEnabled = 1).
  2. Descarga los símbolos de Microsoft (srv*https://msdl.microsoft.com/download/symbols).
  3. Abre el dump con WinDbg y ejecuta:
    !analyze -v
    
    Busca la línea MODULE_NAME: tcpip y la función que aparece en STACK_COMMAND. Anota cualquier driver adicional que aparezca antes de tcpip.sys.

2. Verificar filtros WFP

Ejecuta:

netsh wfp show filters

Si aparecen filtros de terceros (por ejemplo, de un antivirus o de una solución VPN), desactívalos temporalmente. En muchos casos, el simple hecho de desinstalar o deshabilitar el cliente de seguridad elimina el BSOD.

3. Actualizar y ajustar el controlador de red

  1. Descarga la última versión del driver del fabricante del NIC.
  2. Desinstala el driver actual desde el Administrador de dispositivos y reinstala el nuevo.
  3. Desactiva los offloads que más suelen causar problemas:
netsh int ip set global taskoffload=disabled
netsh int tcp set global chimney=disabled
netsh int tcp set global rss=disabled
netsh int tcp set global autotuninglevel=disabled
  1. Reinicia el host y verifica que la configuración persista (netsh int tcp show global).

4. Probar sin Chrome

Si el BSOD desaparece al usar Edge o Firefox, el problema está ligado a la interacción de Chrome con la pila de red. En ese caso, prueba:

  • Desactivar la aceleración de hardware (chrome://settings -> System -> Use hardware acceleration when available).
  • Ejecutar Chrome con la bandera --disable-features=NetworkService,AsyncDns.
  • Actualizar Chrome a la última versión estable.

5. Revisar FSLogix

FSLogix puede crear rutas de red virtuales en el registro de la sesión. Asegúrate de que la política EnableProfileContainer esté activada y que no haya scripts que modifiquen la tabla de rutas al iniciar la sesión. Si sospechas que el contenedor VHDX está corrupto, crea un perfil nuevo y observa si el BSOD persiste.

6. Aplicar hotfixes de Microsoft

Microsoft publica correcciones específicas para tcpip.sys bajo ciertos KB. Busca en el catálogo de actualizaciones de Windows Server 2025 los hotfixes que mencionen WFP o DRIVER_IRQL_NOT_LESS_OR_EQUAL y aplícalos mediante Windows Update o WSUS.

7. Utilizar Driver Verifier (solo en laboratorio)

Para confirmar cuál driver falla, habilita Driver Verifier con el perfil Standard y elige tcpip.sys. Cuando el servidor vuelva a fallar, el dump mostrará el driver exacto que provocó la violación. No lo dejes activo en producción.

Cuándo aplicar esta solución

Aplica este procedimiento cuando:

  • Aparecen BSOD con DRIVER_IRQL_NOT_LESS_OR_EQUAL y el dump indica tcpip.sys.
  • El fallo se dispara al usar Chrome o al acceder a sitios que hacen uso intensivo de sockets (streaming, websockets, etc.).
  • Has descartado problemas de hardware mediante pruebas de memoria (MemTest86) y de CPU.

No es necesario seguir todos los pasos si ya identificas, por ejemplo, un filtro de antivirus como culpable; basta con desactivarlo y validar. En entornos donde el hardware es crítico y no se puede reiniciar frecuentemente, prioriza la actualización del driver NIC y la desactivación de offloads antes de tocar filtros WFP.

Código

# Restablecer pila TCP/IP y desactivar offloads problemáticos
netsh int ip reset
netsh int tcp set global chimney=disabled
netsh int tcp set global rss=disabled
netsh int tcp set global autotuninglevel=disabled
netsh int tcp set global ecncapability=disabled
# Verificar estado actual
netsh int tcp show global
# Listar filtros WFP instalados
netsh wfp show filters
# Mostrar drivers de red instalados (útil para comparar versiones)
driverquery /v /fo list | findstr /i "net"

Verificación

  1. Reproducir: abre Chrome, navega a los sitios que anteriormente provocaban el BSOD. Mantén la sesión activa durante al menos 10 minutos.
  2. Monitorizar: revisa el Visor de eventos (System y Application) en busca de eventos 1001 o 41.
  3. Comprobar dumps: si se genera un nuevo dump, ábrelo con WinDbg y confirma que tcpip.sys ya no aparece en la pila de llamadas.
  4. Validar rendimiento: ejecuta perfmon para observar latencias de red y uso de CPU; la eliminación de offloads no debe degradar significativamente el throughput en entornos RDS.

Si después de los cambios no aparecen más BSOD y el rendimiento se mantiene aceptable, la solución está confirmada.

Notas adicionales

  • Mantén siempre una copia de la configuración de red antes de modificar offloads; puedes restaurarla con netsh int tcp set global autotuninglevel=normal.
  • Cuando uses Driver Verifier, captura los logs en un entorno aislado; la sobrecarga puede provocar más fallos y afectar a usuarios productivos.
  • Algunas soluciones de EDR inyectan controladores que se cargan antes que tcpip.sys. Si no puedes desinstalar el producto, contacta al vendor para obtener una versión certificada para Windows Server 2025.
  • Si el problema persiste después de actualizar NIC y desactivar filtros, considera probar un adaptador de red diferente (por ejemplo, pasar de un NIC de 10 GbE a uno de 1 GbE) para descartar incompatibilidades de firmware.