El tráfico de datos entre los servidores de Facebook y su aplicación ahora es más rápido
Cada día millones de personas utilizan la red social por excelencia, Facebook, para hablar con sus amigos, y una gran cantidad de esas personas utilizan la aplicación oficial de Facebook para smartphones y tablets con sistema operativo Android y iOS. Facebook ha estado trabajando muy duro para que el tráfico de datos entre sus servidores y tu dispositivo móvil, funcione lo más rápido posible, hoy os mostramos cómo lo han logrado.
Facebook usa principalmente TLS 1.2 en sus comunicaciones
Actualmente las aplicaciones móviles de Facebook utilizan una pila de protocolos TCP/IP personalizada llamada Mobile Proxygen, esto les permite compartir el mismo código fuente entre el servidor y los clientes para facilitar y acelerar el despliegue de nuevas actualizaciones de seguridad y de rendimiento en todo su software.
Facebook utiliza el estándar TLS 1.2 en sus aplicaciones móviles, y utilizan Folly con OpenSSL para realizar la implementación de dicho protocolo TLS en sus sistemas. Como todos sabéis, TLS 1.2 incorpora un tiempo de establecimiento de ida y vuelta (1-RTT) para realizar las comunicaciones. En los últimos años han desarrollado diferentes técnicas para minimizar el impacto, como por ejemplo técnicas para la terminación de conexiones TLS cerca de los usuarios, reusar conexiones HTTP2 e incluso la reanudación de la sesión y el denominado TLS False Start. La mayoría de conexiones que se realizan desde las aplicaciones móviles de Facebook añaden solo 1-RTT adicional.
El problema: Tener 1-RTT significa demasiada latencia en algunos países
El equipo de Facebook observó que aunque el handshake estuviera optimizado al máximo, el establecimiento de la conexión es demasiado alto en mercados emergentes como India, llegando hasta los 600ms de latencia de conexión antes de empezar a recibir los datos. Por este motivo, los ingenieros de Facebook empezaron a realizar pruebas con otros protocolos de seguridad que son 0-RTT, a diferencia de TLS 1.2 que es 1-RTT.
La solución: Protocolo QUIC
Aunque actualmente TLS 1.3 incorpora características 0-RTT tal y como os hemos explicado anteriormente en RedesZone, cuando Facebook se puso en marcha aún este protocolo apenas estaba desarrollado, y no tenía características 0-RTT como ahora. Por este motivo, miraron QUIC, un protocolo 0-RTT que utiliza un protocolo de la capa de transporte UDP, y Facebook quiso llevar lo mejor de QUIC al protocolo TCP para tener conexiones rápidas, seguras y todos los beneficios de utilizar TCP en lugar de UDP.
Facebook construyó un protocolo 0-RTT desde cero, basándose en QUIC y utilizando TCP, por lo que realizaron muchas modificaciones a nivel de código de ambos protocolos.
Los resultados: más rápido e igual de seguro
Este nuevo protocolo creado por Facebook para sus servidores y clientes ha demostrado un rendimiento muy bueno. Se ha reducido el tiempo de latencia del establecimiento de la conexión en un 41%, casi la mitad. Además, se ha reducido en un 2% el tiempo que se tarda en realizar una solicitud, pero debemos tener en cuenta que este protocolo Zero ayuda especialmente a las solicitudes que se realizan cuando se inicia la aplicación y no se puede reusar la conexión anterior.
El equipo de desarrollo de este protocolo 0-RTT ha contribuido tanto al protocolo TLS 1.3 como a QUIC con su experiencia a la hora de desarrollarlo. De esta forma, todos podremos beneficiarnos de un rendimiento similar con el protocolo TLS 1.3. Otro detalle muy importante es que próximamente piensan implementar su propia versión de TLS 1.3 optimizada específicamente a sus requisitos.
Os recomendamos visitar este artículo de Facebook donde encontrarás todo lo que tuvieron que hacer para conseguir un protocolo Zero basándose en QUIC y TCP. Podéis acceder al listado de puertos de TCP y UDP más usados por diferentes aplicaciones y protocolos como TLS 1.3 y otros.