Planteamiento y alcance
Dos navegadores necesitan una conexión de audio, video o datos. Pueden estar en la misma LAN, detrás de diferentes NAT o en redes que bloquean UDP. Explica la ruta de establecimiento y la ruta de fallo. La respuesta debe distinguir el canal de señalización que intercambia descripciones de ICE, el cual descubre y comprueba posibles rutas de red.
La guía pública de entrevistas de WebRTC de Credmark pide explícitamente a los candidatos que expliquen ICE y las funciones de STUN y TURN. El RFC 8445 define los procedimientos de candidatos, listas de comprobación y verificaciones de conectividad de ICE; WebRTC.org documenta cómo una conexión entre pares utiliza servidores STUN o TURN para recopilar candidatos.
Qué evalúa el entrevistador
- Si separas la señalización, la recopilación de candidatos, las comprobaciones de conectividad y el cifrado de medios.
- Si explicas los candidatos de tipo host, reflexivos de servidor (server-reflexive) y de retransmisión (relay) sin prometer que STUN "abre un puerto".
- Si puedes sopesar la latencia de la ruta directa frente al ancho de banda, la privacidad y el costo operativo de TURN.
La señal clave es una línea de tiempo causal: las descripciones y los candidatos se mueven a través de la señalización, las comprobaciones se ejecutan sobre los pares de candidatos y solo entonces la ruta seleccionada transporta medios o datos cifrados.
Aclaraciones antes de responder
- ¿La señalización ya está disponible? ICE no define el transporte de señalización de tu aplicación mediante WebSocket, HTTP o mensajería.
- ¿Los pares se comunican de navegador a navegador o detrás de una SFU? Una SFU cambia la topología de medios, pero aún necesita conectividad con cada par.
- ¿Se permiten UDP y TCP 443? La política del firewall modifica si los candidatos host, reflexivos o de retransmisión pueden tener éxito.
- ¿Cuál es el objetivo de costo? Un relay TURN transporta tráfico, por lo que la tasa de bits de video y el porcentaje de retransmisión determinan el gasto.
Una respuesta de 30 segundos
"La señalización intercambia la oferta y respuesta SDP junto con los candidatos ICE transmitidos progresivamente (trickled); es específica de la aplicación. Cada par recopila candidatos host, solicita a STUN una dirección reflexiva de servidor y obtiene candidatos de retransmisión TURN cuando las rutas directas pueden fallar. ICE forma pares de candidatos, envía comprobaciones de conectividad autenticadas y nomina un par funcional. Luego, DTLS autentica y deriva claves para medios o datos. STUN ayuda a descubrir una dirección mapeada; TURN retransmite bytes. Un NAT simétrico, UDP bloqueado o un firewall restrictivo pueden forzar TURN, por lo que mediría el éxito de pares de candidatos, el tiempo hasta la conexión, la proporción de retransmisión y los fallos por tipo de red."
Respuesta detallada paso a paso
Paso 1: Intercambiar descripciones a través de la señalización.
El emisor crea una oferta que contiene secciones de medios y credenciales ICE, y luego la envía a través del servicio de señalización de la aplicación. El receptor devuelve una respuesta. La señalización también transporta candidatos transmitidos progresivamente y marcadores de fin de candidatos. Un servidor de señalización no transporta medios simplemente porque reenvía SDP.
Paso 2: Recopilar tipos de candidatos.
Los candidatos host representan interfaces locales. Una solicitud de vinculación (binding request) STUN permite al par conocer un candidato reflexivo de servidor que contiene la dirección mapeada pública y el puerto observados por ese servidor STUN. La asignación TURN crea un candidato de retransmisión; el servidor TURN se convierte en el extremo del tráfico. La prioridad del candidato y la fundación (foundation) ayudan a ICE a comparar rutas, pero no garantizan que un par de mayor prioridad pase con éxito.
Paso 3: Formar y comprobar pares de candidatos.
Cada lado combina sus candidatos locales y remotos. ICE ordena los pares en una lista de comprobación, envía comprobaciones de conectividad STUN utilizando las credenciales ICE y registra las respuestas. Una comprobación exitosa demuestra que el tráfico puede atravesar ese par en ese momento; no prueba la disponibilidad futura. El agente controlador nomina un par válido y ambos pares convergen en él.
Paso 4: Asegurar la ruta seleccionada.
Después de la conectividad ICE, DTLS autentica al par y deriva claves. SRTP protege el audio y el video; SCTP sobre DTLS transporta un canal de datos. ICE elige la accesibilidad; no cifra las cargas útiles de la aplicación. Las API del navegador exponen el estado de la conexión y las estadísticas de los candidatos seleccionados, que son esenciales para el diagnóstico.
Paso 5: Explicar los resultados comunes de NAT.
Los candidatos host en la misma LAN suelen funcionar. Un NAT de cono completo o compatible puede permitir candidatos reflexivos de servidor. Los mapeos de NAT simétrico, el filtrado dependiente del extremo o el bloqueo de UDP pueden hacer que los candidatos directos fallen. TURN sobre UDP, TCP o TLS en el puerto 443 proporciona un respaldo de retransmisión, con mayor latencia, costo de ancho de banda y una mayor superficie de confianza.
Paso 6: Diagnosticar fallos con evidencia.
Registra el estado de señalización, el estado de recopilación de ICE, el estado de conexión de ICE, los tipos de candidatos, las comprobaciones de pares, el par de candidatos seleccionado, RTT, la frescura del consentimiento (consent freshness) y la familia de red. Utiliza una matriz controlada de redes LAN, móviles, NAT simétrico, VPN y con UDP bloqueado. Si la recopilación tiene éxito pero las comprobaciones fallan, inspecciona las políticas de firewall y NAT; si solo la retransmisión tiene éxito, mejora la política de ruta directa solo después de medir el costo de retransmisión y la calidad de la llamada.
Ejemplo de respuesta de alta calidad
"Trazaría cuatro límites. El servicio de señalización de la aplicación intercambia SDP, credenciales ICE, candidatos y fin de candidatos; no es la ruta de medios. Los candidatos host describen interfaces locales, STUN produce mapeos reflexivos de servidor y TURN asigna una retransmisión. ICE combina candidatos locales y remotos, comprueba pares con mensajes STUN autenticados y nomina un par. Después de eso, DTLS deriva claves, SRTP transporta audio/video y SCTP transporta canales de datos.
Las rutas directas de host o reflexivas tienen menor costo y a menudo menor latencia, pero los NAT simétricos y el UDP bloqueado pueden requerir TURN. Instrumentaría la recopilación de candidatos, los errores de comprobación de pares, el tiempo hasta la conexión, el tipo de candidato seleccionado, la proporción de retransmisión, RTT y la pérdida de consentimiento por clase de red. Eso distingue la falta de señalización de una falla en el recorrido NAT y de una llamada conectada con una ruta de medios deficiente."
Errores comunes
- Llamar a STUN un relay → STUN informa una dirección mapeada pero no transporta la sesión → reserva la semántica de retransmisión para TURN.
- Decir que la señalización establece los medios → la señalización solo transporta descripciones y candidatos → rastrea las comprobaciones de ICE posteriores y el par seleccionado.
- Asumir que una respuesta STUN exitosa prueba conectividad → el par aún puede fallar debido al filtrado → ejecuta comprobaciones ICE entre ambos candidatos.
- Usar TURN para cada llamada sin medir → el ancho de banda de retransmisión y la latencia pueden dominar el costo y la calidad → prioriza las rutas directas y monitorea la proporción de retransmisión.
- Tratar ICE como cifrado → ICE comprueba la accesibilidad, no la confidencialidad → explica DTLS y SRTP/SCTP por separado.
Preguntas de seguimiento y respuestas
Pregunta de seguimiento 1: ¿Por qué puede funcionar STUN mientras la conexión entre pares aún falla?
STUN solo muestra que un servidor observó un mapeo desde un lado. Es posible que el par remoto no pueda enviar a ese mapeo porque el NAT utiliza mapeos o filtrados dependientes del extremo, o porque un firewall bloquea el protocolo. ICE debe probar el par completo; una solicitud STUN exitosa no es una garantía de ruta.
Pregunta de seguimiento 2: ¿Cuándo debería el sistema forzar TURN?
Fuerza o prioriza TURN cuando la política prohíba direcciones de pares, las comprobaciones directas fallen repetidamente o se sepa que una clase de red controlada bloquea UDP. Utiliza credenciales de corta duración, retransmisores regionales, límites de tasa y alarmas de capacidad. Forzar TURN globalmente oculta regresiones en rutas directas y aumenta el costo de ancho de banda, por lo que debe ser una política explícita con mediciones.
Pregunta de seguimiento 3: La llamada se conecta pero el video es deficiente. ¿Qué inspeccionas?
Lee el par de candidatos seleccionado y si es de retransmisión, RTT, pérdida de paquetes, jitter, frescura de consentimiento y adaptación de tasa de bits. Compara la misma llamada en rutas directas y de retransmisión, inspecciona las colas de CPU y de codificadores, y comprueba si la región de la SFU o de TURN está lejana. El éxito de ICE demuestra accesibilidad; no demuestra capacidad suficiente ni calidad de medios.