Contenido

Introducción

Síntomas

Error en el servidor ISE

Análisis de registro detallado:

Controlador inalámbrico EPC:

Volcados de ISE TCP

Azure Side Capture con análisis:

Solución sugerida desde el extremo del controlador inalámbrico:

Solución:

Introducción

Este documento describe un problema conocido con la plataforma de Azure que conduce a la pérdida de paquetes debido al mal manejo de fragmentos fuera de secuencia.

Síntomas

Productos afectados: Controlador inalámbrico Catalyst 9800-CL alojado en Azure o Identity Service Engine alojado en Azure.

Configuración de SSID: Configurado para 802.1x EAP-TLS con autenticación central.

Conducta: Mientras utiliza el 9800-CL alojado en la plataforma Azure con un SSID basado en EAP-TLS, puede encontrar problemas de conectividad. Los clientes pueden encontrar dificultades durante la fase de autenticación.

Error en el servidor ISE

Código de error 5411 que indica que el solicitante ha dejado de comunicarse con ISE durante el intercambio de certificados EAP-TLS.

Análisis de registro detallado:

A continuación se muestra una ilustración de una de las configuraciones afectadas: En el controlador inalámbrico 9800, el SSID se configura para 802.1x y el servidor AAA se configura para EAP-TLS. Cuando un cliente intenta la autenticación, especialmente durante la fase de intercambio de certificados, el cliente envía un certificado que excede el tamaño de la unidad de transmisión máxima (MTU) en el controlador inalámbrico. A continuación, el controlador inalámbrico 9800 fragmenta este paquete grande y envía los fragmentos secuencialmente al servidor AAA. Sin embargo, estos fragmentos no llegan en el orden correcto al host físico, lo que lleva a la caída de paquetes.

Estos son los rastros de RA del controlador inalámbrico cuando el cliente intenta conectarse:

El cliente ingresa en el estado de autenticación L2 y se inicia el proceso EAP

2023/04/12 16:51:27.606414 {wncd_x_R0-0}{1}: [dot1x] [19224]: (información): [Client_MAC:capwap_90000004] Ingresando el estado de la solicitud

2023/04/12 16:51:27.606425 {wncd_x_R0-0}{1}: [dot1x] [19224]: (información): [0000.0000.0000:capwap_90000004] Enviando paquetes EAPOL

2023/04/12 16:51:27.606494 {wncd_x_R0-0}{1}: [dot1x] [19224]: (información): [Client_MAC:capwap_90000004] Paquete EAPOL enviado - Versión: 3,Tipo EAPOL: EAP, longitud de carga útil: 1008, EAP-Tipo = EAP-TLS

2023/04/12 16:51:27.606496 {wncd_x_R0-0}{1}: [dot1x] [19224]: (información): [Client_MAC:capwap_90000004] Paquete EAP - REQUEST, ID: 0x25

2023/04/12 16:51:27.606536 {wncd_x_R0-0}{1}: [dot1x] [19224]: (información): [Client_MAC:capwap_90000004] Paquete EAPOL enviado al cliente

2023/04/12 16:51:27.640768 {wncd_x_R0-0}{1}: [dot1x] [19224]: (información): [Client_MAC:capwap_90000004] Paquete EAPOL recibido - Versión: 1,Tipo EAPOL: EAP, longitud de carga útil: 6, EAP-Tipo = EAP-TLS

2023/04/12 16:51:27.640781 {wncd_x_R0-0}{1}: [dot1x] [19224]: (información): [Client_MAC:capwap_90000004] Paquete EAP - RESPUESTA, ID: 0x25

Cuando el controlador inalámbrico envía la solicitud de acceso al servidor AAA y el tamaño del paquete es inferior a 1500 bytes (que es la MTU predeterminada en el controlador inalámbrico), el desafío de acceso se recibe sin ninguna complicación.

2023/04/12 16:51:27.641094 {wncd_x_R0-0}{1}: [radius] [19224]: (información): RADIUS: Send Access-Request to 172.16.26.235:1812 id 0/6, len 552

2023/04/12 16:51:27.644693 {wncd_x_R0-0}{1}: [radius] [19224]: (información): RADIUS: Recibido desde id 1812/6 172.16.26.235:0, Access-Challenge, len 1141

A veces, un cliente puede enviar su certificado para la autenticación. Si el tamaño del paquete excede la MTU, se fragmentará antes de enviarse más lejos.

2023/04/12 16:51:27.758366 {wncd_x_R0-0}{1}: [radius] [19224]: (información): RADIUS: Send Access-Request to 172.16.26.235:1812 id 0/8, len 2048

2023/04/12 16:51:37.761885 {wncd_x_R0-0}{1}: [radius] [19224]: (información): RADIUS: Tiempo de espera iniciado 5 s

2023/04/12 16:51:42.762096 {wncd_x_R0-0}{1}: [radius] [19224]: (información): RADIUS: Retransmitir a (172.16.26.235:1812,1813) para id 0/8

2023/04/12 16:51:32.759255 {wncd_x_R0-0}{1}: [radius] [19224]: (información): RADIUS: Retransmitir a (172.16.26.235:1812,1813) para id 0/8

2023/04/12 16:51:32.760328 {wncd_x_R0-0}{1}: [radius] [19224]: (información): RADIUS: Tiempo de espera iniciado 5 s

2023/04/12 16:51:37.760552 {wncd_x_R0-0}{1}: [radius] [19224]: (información): RADIUS: Retransmitir a (172.16.26.235:1812,1813) para id 0/8

2023/04/12 16:51:42.762096 {wncd_x_R0-0}{1}: [radius] [19224]: (información): RADIUS: Retransmitir a (172.16.26.235:1812,1813) para id 0/8

Hemos observado que el tamaño del paquete es 2048, lo que supera la MTU predeterminada. En consecuencia, no ha habido respuesta del servidor AAA. El controlador inalámbrico volverá a enviar la solicitud de acceso de forma persistente hasta que alcance el número máximo de reintentos. Debido a la ausencia de una respuesta, el controlador inalámbrico restablecerá finalmente el proceso EAPOL.

2023/04/12 16:51:45.762890 {wncd_x_R0-0}{1}: [dot1x] [19224]: (información): [Client_MAC:capwap_90000004] Publicando EAPOL_START en el cliente

2023/04/12 16:51:45.762956 {wncd_x_R0-0}{1}: [dot1x] [19224]: (información): [Client_MAC:capwap_90000004] Ingresando al estado de inicialización

2023/04/12 16:51:45.762965 {wncd_x_R0-0}{1}: [dot1x] [19224]: (información): [Client_MAC:capwap_90000004] Publicando !AUTH_ABORT en el cliente

2023/04/12 16:51:45.762969 {wncd_x_R0-0}{1}: [dot1x] [19224]: (información): [Client_MAC:capwap_90000004] Ingresando al estado de reinicio

Este proceso entra en loop y el cliente está atascado en la fase de autenticación solamente.

La captura de paquetes incorporada capturada en el controlador inalámbrico muestra que después de varias solicitudes de acceso y de intercambios de desafío con una MTU inferior a 1500 bytes, el controlador inalámbrico envía una solicitud de acceso superior a 1500 bytes, que contiene el certificado del cliente. Este paquete más grande sufre fragmentación. Sin embargo, no hay respuesta a esta solicitud de acceso en particular. El controlador inalámbrico continúa reenviando esta solicitud hasta que alcanza el número máximo de reintentos, después de lo cual se reinicia la sesión EAP-TLS. Esta secuencia de eventos se repite constantemente, lo que indica que se produce un loop EAP-TLS cuando el cliente intenta autenticarse. Consulte las capturas de paquetes simultáneas del controlador inalámbrico y de ISE que se proporcionan a continuación para obtener una comprensión más clara.

Controlador inalámbrico EPC:

Captura de paquetes en WLC

Observamos que el controlador inalámbrico está enviando varias solicitudes duplicadas para un ID de solicitud de acceso específico = 8

Nota: En el EPC, también observamos que hay una única solicitud duplicada para otras ID. Esto nos lleva a la pregunta: ¿Se prevé tal duplicación? La respuesta a si se espera esta duplicación es sí, lo es. La razón es que la captura se tomó de la GUI del controlador inalámbrico con la opción 'Monitor Control Plane' seleccionada. Como resultado, es normal observar varias instancias de paquetes RADIUS ya que están siendo dirigidos a la CPU. En estos casos, las solicitudes de acceso deben verse con las direcciones MAC de origen y destino establecidas en 00:00:00.

Radius Access-Request Punted to CPU on WLC

Sólo las solicitudes de acceso con las direcciones MAC de origen y destino especificadas deben enviarse realmente desde el controlador inalámbrico.

Solicitud de acceso Radius enviada al servidor AAA

Las solicitudes de acceso en cuestión, identificadas por ID = 8, que se envían varias veces y para las que no se ha visto ninguna respuesta del servidor AAA. Tras una investigación adicional, observamos que para Access-request ID=8, la fragmentación UDP se produce debido al tamaño que supera la MTU, como se ilustra a continuación:

Fragmentación que tiene lugar en la captura de paquetes WLC

Paquete fragmentado: I

Paquete fragmentado - II

Paquete reensamblado

Para llevar a cabo la verificación cruzada, revisamos los registros de ISE y descubrimos que ISE no estaba recibiendo la solicitud de acceso, que se había fragmentado en el controlador inalámbrico.

Volcados de ISE TCP

Capturas al final de ISE

Azure Side Capture con análisis:

El equipo de Azure realizó una captura en el host físico de Azure. Los datos capturados en el vSwitch dentro del host de Azure indican que los paquetes UDP están llegando fuera de secuencia. Debido a que estos fragmentos UDP no están en el orden correcto, Azure los está descartando. A continuación se muestran las capturas del extremo de Azure y del controlador inalámbrico, tomadas simultáneamente para el ID de solicitud de acceso = 255, donde el problema de los paquetes que están fuera de servicio es claramente evidente:

La captura de paquetes encapsulados (EPC) del controlador inalámbrico muestra la secuencia en la que los paquetes fragmentados salen del controlador inalámbrico.

Secuencia de paquetes fragmentados en WLC

En el host físico, los paquetes no llegan en la secuencia adecuada

Capturas en Azure End

Dado que los paquetes llegan en el orden incorrecto y el nodo físico está programado para rechazar cualquier trama fuera de orden, los paquetes se descartan inmediatamente. Esta interrupción hace que el proceso de autenticación falle, dejando al cliente incapaz de avanzar más allá de la fase de autenticación.

Solución sugerida desde el extremo del controlador inalámbrico:

A partir de la versión 17.11.1, estamos implementando el soporte para tramas Jumbo en paquetes Radius/AAA. Esta función permite que el controlador c9800 evite la fragmentación de paquetes AAA, siempre que se establezca la siguiente configuración en el controlador. Tenga en cuenta que para evitar la fragmentación completa de estos paquetes, es esencial asegurarse de que cada salto de red, incluido el servidor AAA, sea compatible con los paquetes de tramas gigantes. Para ISE, la compatibilidad con tramas gigantes comienza a partir de la versión 3.1.

Configuración de la interfaz en el controlador inalámbrico:

C9800-CL(config)#interface

C9800-CL(config-if) # mtu

C9800-CL(config-if) # ip mtu

[1500 to 9000]

Configuración de servidor AAA en controlador inalámbrico:

C9800-CL(config)# aaa group server radius

C9800-CL(config-sg-radius) # server name

C9800-CL(config-sg-radius) # ip radius source-interface

A continuación se presenta una breve descripción de un paquete Radius cuando la MTU (unidad de transmisión máxima) se configura en 3000 bytes en un controlador de LAN inalámbrica (WLC). Los paquetes menores de 3000 bytes se enviaron sin problemas sin necesidad de fragmentación:

Captura de paquetes en WLC con MTU aumentada

Al establecer la configuración de esta manera, el controlador inalámbrico transmite los paquetes sin fragmentarlos, enviándolos intactos. Sin embargo, como la nube de Azure no admite tramas jumbo, esta solución no se puede implementar.

Solución:

- En la captura de paquetes encapsulados (EPC) del controlador inalámbrico, observamos que los paquetes se envían en el orden correcto. Es responsabilidad del host receptor volver a ensamblarlos correctamente y continuar con el procesamiento, que, en este caso, no se produce en el lado de Azure.

- Para resolver el problema de los paquetes UDP fuera de servicio,enable-udp-fragment-reorderingdebe activarse la opción en Azure.

- Debe ponerse en contacto con el equipo de soporte técnico de Azure para obtener ayuda con este asunto. Microsoft ha reconocido este problema.

Nota: Debe tenerse en cuenta que este problema no es exclusivo del controlador de LAN inalámbrica (WLC). Problemas similares con paquetes UDP fuera de servicio se han encontrado en diferentes servidores RADIUS, incluidos los servidores ISE, Forti Authenticator y RTSP, especialmente cuando funcionan dentro del entorno de Azure.