Compartir a través de


Bloque de mensajes del servidor de solución de problemas avanzado (SMB)

Pruebe nuestro agente virtual: puede ayudarle a identificar y corregir rápidamente problemas comunes del protocolo Bloque de mensajes del servidor.

El bloque de mensajes del servidor (SMB) es un protocolo de transporte de red para las operaciones de sistemas de archivos para permitir que un cliente acceda a los recursos de un servidor. El propósito principal del protocolo SMB es habilitar el acceso remoto del sistema de archivos entre dos sistemas a través de TCP/IP.

La solución de problemas de SMB puede ser extremadamente compleja. En su lugar, este artículo no es una guía de solución de problemas exhaustiva, es un breve manual para comprender los conceptos básicos sobre cómo solucionar problemas de SMB de forma eficaz.

Herramientas y recopilación de datos

Un aspecto clave de la solución de problemas de SMB es comunicar la terminología correcta. Por lo tanto, en este artículo se presenta la terminología básica de SMB para garantizar la precisión de la recopilación y el análisis de datos.

Nota:

El servidor SMB (SRV) hace referencia al sistema que hospeda el sistema de archivos, también conocido como servidor de archivos. El cliente SMB (CLI) hace referencia al sistema que intenta acceder al sistema de archivos, independientemente de la versión o edición del sistema operativo.

Por ejemplo, si usa Windows Server 2016 para acceder a un recurso compartido SMB hospedado en Windows 10, Windows Server 2016 es el cliente SMB y Windows 10 el servidor SMB.

Recopilación de datos

Antes de solucionar problemas de SMB, se recomienda recopilar primero un seguimiento de red en los lados del cliente y del servidor. Se aplican las siguientes directrices:

  • En los sistemas Windows, puede usar netshell (netsh), Network Monitor, Message Analyzer o Wireshark para recopilar un seguimiento de red.

  • Por lo general, los dispositivos de terceros tienen una herramienta de captura de paquetes integrada, como tcpdump (Linux/FreeBSD/Unix) o pktt (NetApp). Por ejemplo, si el cliente SMB o el servidor SMB es un host de Unix, puede recopilar datos ejecutando el siguiente comando:

    # tcpdump -s0 -n -i any -w /tmp/$(hostname)-smbtrace.pcap
    

    Deje de recopilar datos mediante Ctrl+C desde el teclado.

Para detectar el origen del problema, puede comprobar los seguimientos en dos lados: CLI, SRV o en algún lugar entre ellos.

Uso de netshell para recopilar datos

En esta sección se proporcionan los pasos para usar netshell para recopilar el seguimiento de red.

Importante

La herramienta Analizador de mensajes de Microsoft se ha retirado y se recomienda Wireshark para analizar archivos ETL. Para aquellos que han descargado la herramienta anteriormente y buscan más información, consulte Instalación y actualización del Analizador de mensajes.

Nota:

Un seguimiento de Netsh crea un archivo ETL. Los archivos ETL se pueden abrir en Message Analyzer (MA), Network Monitor 3.4 (establezca el analizador en Network Monitor Parsers > Windows) y Wireshark.

  1. En el servidor SMB y el cliente SMB, cree una carpeta Temp en la unidad C. A continuación, ejecute el siguiente comando:

    netsh trace start capture=yes report=yes scenario=NetConnection level=5 maxsize=1024 tracefile=c:\Temp\netTrace.etl
    

    Si usa PowerShell, ejecute los siguientes cmdlets:

    New-NetEventSession -Name trace -LocalFilePath "C:\Temp\netTrace.etl" -MaxFileSize 1024
    
    Add-NetEventPacketCaptureProvider -SessionName trace -TruncationLength 1500
    
    Start-NetEventSession trace
    
  2. Reproduzca el problema.

  3. Detenga el seguimiento ejecutando el comando siguiente:

    netsh trace stop
    

    Si usa PowerShell, ejecute los siguientes cmdlets:

    Stop-NetEventSession trace  
    Remove-NetEventSession trace
    

Nota:

Debe realizar un seguimiento de solo una cantidad mínima de los datos transferidos. En caso de problemas de rendimiento, tome siempre un seguimiento correcto y uno incorrecto, siempre que la situación lo permita.

Análisis del tráfico

SMB es un protocolo de nivel de aplicación que usa TCP/IP como protocolo de transporte de red. Por lo tanto, un problema de SMB también puede deberse a problemas de TCP/IP.

Compruebe si TCP/IP experimenta cualquiera de estos problemas:

  1. El protocolo de enlace tridireccional TCP no finaliza. Esto suele indicar que hay un bloque de firewall o que el servicio Servidor no se está ejecutando.

  2. Se están produciendo retransmisiones. Esto puede provocar transferencias lentas de archivos debido a la limitación de congestión de TCP compuesta.

  3. Cinco retransmisiones seguidas de un restablecimiento TCP podrían significar que la conexión entre sistemas se haya perdido o que uno de los servicios SMB se haya bloqueado o dejado de responder.

  4. La ventana de recepción TCP está disminuyendo. Esto puede deberse a un almacenamiento lento o a algún otro problema que impide que los datos se recuperen del búfer winsock del controlador de funciones auxiliares (AFD).

Si no hay ningún problema de TCP/IP perceptible, busque errores de SMB. Para hacer esto, sigue estos pasos:

  1. Compruebe siempre los errores de SMB con la especificación del protocolo MS-SMB2. Muchos errores SMB son benignos (no dañinos). Consulte la siguiente información para determinar por qué SMB devolvió el error antes de concluir que el error está relacionado con cualquiera de los siguientes problemas:

  2. Compruebe si se envía un comando de restablecimiento de TCP inmediatamente después de un comando FSCTL_VALIDATE_NEGOTIATE_INFO (validar negociación). Si es así, consulte la siguiente información:

    • La sesión SMB debe finalizarse (restablecimiento de TCP) cuando el proceso de Validación/Negociación falla en el cliente o en el servidor.

    • Este proceso puede producir un error porque un optimizador WAN está modificando el paquete Negotiate de SMB.

    • Si la conexión finalizó prematuramente, identifique la última comunicación de intercambio entre el cliente y el servidor.

Análisis del protocolo

Examine los detalles reales del protocolo SMB en el seguimiento de red para comprender los comandos y las opciones exactos que se usan.

  • Recuerde que SMB hace solo lo que se le dice que haga.

  • Puede aprender mucho sobre lo que intenta hacer la aplicación examinando los comandos SMB.

Compare los comandos y las operaciones con la especificación del protocolo para asegurarse de que todo funciona correctamente. Si no es así, recopile datos más cercanos o en un nivel inferior para buscar más información sobre la causa principal. Para hacer esto, sigue estos pasos:

  1. Recopile una captura de paquetes estándar.

  2. Ejecute el comando netsh para realizar un seguimiento paso a paso y recopilar detalles sobre si hay problemas en la pila de red o caídas en las aplicaciones de la Plataforma de filtrado de Windows (PMA), como el firewall o el programa antivirus.

  3. Si fallan todas las demás opciones, recopile un t.cmd si sospecha que el problema se produce dentro de SMB en sí mismo, o si ninguno de los demás datos es suficiente para identificar una causa raíz.

Por ejemplo:

  • Experimenta transferencias lentas de archivos a un único servidor de archivos.

  • Los seguimientos de dos lados muestran que el SRV responde con lentitud a una solicitud de LECTURA.

  • Al quitar un programa antivirus, se resuelven las transferencias lentas de archivos.

  • Póngase en contacto con el fabricante del programa antivirus para resolver el problema.

Nota:

Opcionalmente, es posible que también desinstale temporalmente el programa antivirus durante la solución de problemas.

Registros de eventos

Tanto el cliente SMB como el servidor SMB tienen una estructura de registro de eventos detallada, como se muestra en la captura de pantalla siguiente. Recopile los registros de eventos para ayudar a encontrar la causa principal del problema.

Registros de eventos

En esta sección se enumeran los archivos del sistema relacionados con SMB. Para mantener actualizados los archivos del sistema, asegúrese de que está instalado el paquete acumulativo de actualizaciones más reciente.

Archivos binarios del cliente de SMB que se enumeran en %windir%\system32\Drivers:

  • RDBSS.sys

  • MRXSMB.sys

  • MRXSMB10.sys

  • MRXSMB20.sys

  • MUP.sys

  • SMBdirect.sys

Archivos binarios del servidor de SMB que se enumeran en %windir%\system32\Drivers:

  • SRVNET.sys

  • SRV.sys

  • SRV2.sys

  • SMBdirect.sys

  • En %windir%\system32

  • srvsvc.dll

Componentes de SMB

Actualizar sugerencias

Se recomienda actualizar los siguientes componentes antes de solucionar problemas de SMB:

  • Un servidor de archivos requiere almacenamiento de archivos. Si el almacenamiento tiene un componente iSCSI, actualice esos componentes.

  • Actualice los componentes de red.

  • Para mejorar el rendimiento y la estabilidad, actualice Windows Core.

Referencia

Escenario de intercambio de paquetes de protocolo SMB de Microsoft