QUIC: los entresijos del protocolo experimental de Google

El que el acceso a Internet con DSL sea cada vez más rápido ha hecho que, en general, disminuya el tiempo de carga de las páginas de Internet. Como consecuencia, hoy se da por sentado que las páginas han de abrirse rápidamente cuando se visitan, de modo que los proyectos web que se cargan con lentitud apenas tienen posibilidades de sobrevivir. La situación se complica aún más dada la importancia creciente que está adquiriendo la codificación: el estándar HTTPS ha demostrado ser un firme aliado para proteger la esfera privada de los usuarios, pero tiene como consecuencia la demora adicional del proceso de carga a través del protocolo handshake TLS y del intercambio de certificados y de claves, una situación que debe solucionar el QUIC protocol iniciado por Google.

¿Qué es QUIC (Quick UDP Internet Connections)?

QUIC es un protocolo de transporte experimental de Google publicado en 2013. El nombre se deriva de “Quick UDP Internet Connections”, lo que se debe a que este posibilita el envío de paquetes sencillos de datos a través del UDP (User Datagram Protocol) o protocolo de datagramas de usuario, que no necesitaconexión. El telón de fondo de los trabajos en QUIC fue el deseo de desarrollar una alternativa a las soluciones de seguridad establecidas a partir de TCP, HTTP/2 y TLS/SSL que ofrecen la misma protección, pero también una demora reducida en la conexión y en el transporte, y posibilita conexiones multiplexadas.

Con este motivo, Google ha diseñado QUIC de manera que el mismo protocolo regule el control de la conexión. En el primer acuerdo de conexión (handshake) entre emisor y receptor, estos se intercambian los certificados y las claves necesarios para el cifrado de los datagramas enviados. Este intercambio no se aplica en posteriores comunicaciones, lo que reduce la latencia. Como protocolo de cifrado se aplica la actual versión TLS1.3 con velocidad optimizada (versión estandarizada en marzo de 2017), que obtuvo preferencia a la solución criptográfica propia. En términos de multiplexación,QUIC se orienta al protocolo SPDY elaborado por Google, que sirvió de modelo para HTTP/2: los flujos de datos se envían a través de una única conexión cliente-servidor, por lo que disminuye el tiempo de carga.

Nota

Desde 2016 existe un grupo de trabajo oficial del IETF que se encarga de la optimización del protocolo QUIC. Alrededor de 50 desarrolladores de Google, Mozilla, Microsoft y otras empresas, dirigidos por Lars Eggert y Mark Nottingham, están implicados en el desarrollo y la expansión de la especificación. En los servidores de Google el protocolo ya se utiliza desde hace varios años (2013). Asimismo, QUIC también se ha implementado en Chrome, el navegador de la casa, por lo que una parte del tráfico de Internet (p. ej., YouTube) se gestiona actualmente a través del avanzado protocolo de transporte.

¿Cuáles son las ventajas del QUIC protocol?

Ya se han puesto de relieve algunas características y ventajas importantes de QUIC, pero a continuación detallamos en qué consiste otra serie de mejoras. Para hacerlo tomaremos como referencia al protocolo TCP, el cual juega un papel importante como precursor del concepto del nuevo protocolo de transporte pero queda algo por debajo del protocolo de Google, tal y como aclaran las siguientes ventajas de QUIC.

Rápida conectividad

La razón principal del rendimiento superior de QUIC frente a TCP es su rapidez en establecer conexión. Aun sin un cifrado SSL/TLS, la conexión a través del protocolo de transporte clásico recorre más pasos con el handshake de tres vías (three-way handshake) que la solución de Google basada en UDP. QUIC inicia una conexión con un único paquete (o dos paquetes si se trata de la primera vez que se establece la conexión) y transmite en ellos todos los parámetros TLS o HTTPS necesarios. En la mayoría de los casos, un cliente puede enviar datos directamente a un servidor sin que este tenga que enviar una respuesta, mientras que TCP debe obtener y procesar la confirmación del servidor.

Permite conexiones multiplexadas

TCP recurre a los puertos TCP y a las direcciones IP de los sistemas conectados para identificar las conexiones. Así, no es posible que un cliente se comunique con el servidor a través de varios puertos en una única conexión. El QUIC protocol soluciona la situación de manera diferente recurriendo a una identificación de la conexión de 64 bits y a diferentes “streams” para transportar los datos en una conexión. Las conexiones QUIC no están vinculadas a un puerto específico (en este caso puerto UDP), a una dirección IP o a un punto final determinado. La modificación de los puertos y de las direcciones IP es, como consecuencia,igual de posible que las mencionadas conexiones multiplexadas.

Adjudicación de números de secuencia únicos

Cada segmento de datos de una conexión QUIC obtiene un número de secuencia propio independientemente de que se trate de un segmento original o de uno reenviado. TCP no establece esta distinción, por lo que un host tampoco puede determinar el estado de una secuencia. Solo la utilización de una extensión de cronosellador (timestamp) permite al protocolo de transporte clásico dicha distinción. El marcado continuo de los paquetes es, por lo tanto, una ventaja, ya que permite una estimación más precisa del tiempo de recorrido del paquete (RTT, Round Trip Time).

Corrección de errores hacia delante

Los paquetes que se pierden representan un gran problema en el transporte de datos con QUIC. Gracias a un sistema de corrección de errores basado en XOR no es necesaria una transmisión nueva de los datos, pues estos pueden reconstruirse en cualquier momento con ayuda de paquetes FEC (Forward Error Correction), copias de seguridad de los paquetes originales para un grupo de datos. La corrección de errores no funciona, sin embargo, cuando faltan varios paquetes de un grupo de datos.

Control de sobrecargas (packet pacing)

TCP siempre intenta enviar datos lo más rápido posible, lo que contribuye a la velocidad de las conexiones pero va ligado también a cierto índice de pérdida. Si un paquete se pierde, se inicia una nueva transferencia (TCP fast retransmit). Para ello, TCP disminuye de manera transitoria la ventana de visualización, lo que tiene como consecuencia que los datos se transmitan en impulsos. El QUIC protocol contrarresta tales picos de carga con ayuda del llamado packet pacing. Este procedimiento se ocupa de que la tasa de transferencia se limite automáticamente, de manera que se eviten las sobrecargas en conexiones con un ancho de banda reducido. No obstante, esta técnica no es nueva, puesto que algunos núcleos de Linux utilizan este método para el protocolo TCP.

Autenticación y codificación

La seguridad ha sido un aspecto esencial desde el principio en la planificación y concepción de QUIC y, en el transcurso del proceso, los desarrolladores se han ocupado de uno de los mayores problemas de TCP: el encabezado de los paquetes enviados está redactado como texto simple y puede leerse sin necesidad de autenticación. Los ataques man in the middle y las manipulaciones de paquetes (como, por ejemplo, la de los números de secuencia), no son algo extraordinario. Los paquetes QUIC siempre se autentifican y en general suelen estar cifrados (incluso la carga útil o payload). Asimismo, la autenticación por parte del destinatario hace que las partes del encabezado que no se presentan de forma cifrada estén protegidas de la inyección y la manipulación.

Independencia del hardware

Otra de las grandes ventajas de QUIC frente a TCP es que el protocolo de Google no depende del sistema. Mientras que los dispositivos y plataformas deben soportar el protocolo TCP para posibilitar la comunicación, el soporte de QUIC solo es necesario en las capas de aplicación. Por eso, en principio son las empresas de software las que integran el protocolo sin depender de los fabricantes de hardware. Hasta la fecha son sobre todo aplicaciones de Google como los servidores de Google, Chromium o Chrome, las que disponen de implementaciones para QUIC, pero con el navegador Opera, el software de servidores Caddy y los productos de balanceo de carga y de servidores web de LiteSpeed Technologies también existen aplicaciones de terceros que permiten conexiones a través del nuevo protocolo de transporte.

Desventajas del QUIC protocol

La posibilidad de que QUIC se utilice cada vez más en el futuro se debe sobre todo al compromiso del IETF. Gracias a los ajustes en los estándares generales efectuados desde la creación del grupo de trabajo en 2016, el protocolo ha pasado de estar fuertemente adaptado a Google a convertirse en un protocolo de red general que está ganando en relevancia. No obstante, el proceso de optimización todavía no ha concluido: el equipo de QUIC sigue ocupándose de los problemas existentes para los que es necesario encontrar las soluciones adecuadas.

En concreto el tema de la seguridad, uno de los más importantes en el desarrollo del protocolo, plantea grandes debates. Mientras que la autenticación y el cifrado se ocupan, sin duda, de un transporte de datos seguro, estos dos factores también son responsables de una desventaja decisiva de QUIC: debido a que los encabezados del paquete contienen menos información con texto claro que en las conexiones TCP, tareas como la solución de problemas, la regulación del tráfico ola gestión de redes en conexiones QUIC se complican notablemente. Tanto los operadores de red como los fabricantes de firewalls y de otras cajas intermedias (middleboxes) se encuentran con dificultades para garantizar la calidad de sus servicios.

Otro problema del protocolo QUIC es que el control automático de las sobrecargas en las conexiones con un amplio ancho de banda puede provocar en algunos casos una peor tasa de transferencia.

Activación o desactivación de QUIC: así funciona

Aun cuando el desarrollo del QUIC protocol ha avanzado considerablemente en los últimos años, hasta la fecha se ha utilizado a modo de experimento en los navegadores Google Chrome y Opera. En el primero suele estar activado por defecto, pero en el segundo está desactivado, por lo que los usuarios de Opera deben activarlo manualmente para beneficiarse de un posible aumento del rendimiento. A continuación te informamos acerca de cómo se activa o desactiva QUIC en ambos clientes web.

Cómo configurar QUIC en Chrome

Para modificar los ajustes del protocolo QUIC en Chrome es necesario recurrir al menú de configuración. Para ello, introduce el siguiente comando en la línea de direcciones:

chrome://flags

En dicho menú busca la opción “Experimental QUIC protocol” con ayuda de la función de búsqueda mediante la combinación de teclas [CTRL] + [F]. Si todavía no has realizado ningún cambio en la configuración básica, debes seleccionar la opción “Default” (por defecto) para el protocolo. En el caso de QUIC, esta configuración estándar de Chrome permite activar el protocolo.

Para desactivar el protocolo, selecciona la entrada “Disabled” (desactivado) y clica en el botón “REINICIAR AHORA”. Chrome dejará de funcionar y la próxima vez que se inicie el navegador los nuevos ajustes estarán activos. Si quieres volver a activar el protocolo, procede de la misma manera y selecciona “Default” (por defecto) o la opción “Enabled” (activado).

Consejo

Chrome ofrece la posibilidad de ver las sesiones activas de QUIC. Para ello añade el comando chrome://net-internals/#quic en la lista de direcciones.

Cómo activar o desactivar QUIC en Opera

Opera, que está basado en Chromium, integra desde la versión 16, publicada en agosto de 2013, una versión experimental del QUIC protocol. La diferencia con Google Chrome estriba en que el protocolo está generalmente desactivado en Opera y para utilizar la nueva tecnología de transporte de datos en dicho navegador tiene que activarse. La opción adecuada para ello, de forma parecida al navegador de Google, se encuentra en el menú de configuración de las características experimentales. En Opera se llama “Experimentos” y a ellos se accede a través del siguiente comando:

opera://flags

En la lista de las diferentes características de prueba se encuentra el menú de opciones para el protocolo bajo la entrada “Experimental QUIC protocol”. Para activar el protocolo, cambia el estado a “Enabled” (activado) y posteriormente haz clic en el botón “Reiniciar ahora”. Si quieres deshacer la configuración más adelante, puedes hacerlo en el mismo lugar pero seleccionando “Disabled” (desactivado).

Consejo

En Opera también se pueden visualizar las conexiones de datos activas que funcionan a través de QUIC, para lo que hay que insertar el comando opera://net-internals/#quic en la barra del navegador tras activar el protocolo.

¿Qué páginas web utilizan el QUIC protocol?

Como impulsor de QUIC, Google ya integró el protocolo en su servidor 2013, por lo que los diferentes servicios de Google se cuentan entre las aplicaciones web más populares que permiten el transporte de datos a través de posiblemente el protocolo más innovador. A la cabeza de todos se sitúa naturalmente el buscador, que ocupa un lugar central en la empresa, pero QUIC también puede entregar otros servicios web como el servicio de mapas Google Maps, la red social Google+, el servicio de correo electrónico Google Mail, la solución de Office Google Docs o el portal de vídeos YouTube siempre que el usuario utilice el cliente adecuado.

Para conocer qué otras páginas web soportan QUIC los usuarios de Chrome pueden recurrir a la extensión HTTP/2 and SPDY indicator. La extensión agrega, además de la barra de direcciones, un pequeño símbolo de un rayo que se vuelve verde si la página visitada soporta el protocolo de transporte. Al colocar el ratón sobre dicho símbolo, un tooltip revela el número de la versión.


¡No te vayas! ¡Tenemos algo para ti!
Consigue tu dominio .es un año gratis.

Introduce el dominio que deseas en la barra de búsqueda para comprobar su disponibilidad.
12 meses desde 0€/año IVA incl.
después 10 €/año IVA incl.