e damos la bienvenida a «Detrás de las sendas», un blog donde nuestro equipo de desarrollo discute algunos de los desafíos, correcciones de errores y golpes de suerte casuales que nos encontramos al trabajar en un juego tan único como Dota.
Esta entrega trata de internet y de cómo no funciona como debería, si es que funciona, o de cómo no funciona para nada. Es una historia sobre cómo internet dejó de funcionar para nuestros usuarios y cómo lo arreglamos.
Internet tiene más de salvaje oeste de lo que creemos. Si te alejas de la seguridad que ofrecen la autenticación de doble factor y las cookies fiables, el entorno se vuelve un poco salvaje, se llena de troles aleatorios con la malicia y —cada vez más— la habilidad de hacerte la vida imposible simplemente porque está en su mano hacerlo.
En 2014, esos troles utilizaban el método de los ataques distribuidos de denegación de servicio (DDoS). Se llaman «distribuidos» porque un gran número de equipos conectados a internet sobrecargan con tráfico y maliciosamente una dirección IP objetivo concreta con el fin de desbordar la red. Esto se denomina ataque volumétrico y la intención no es intentar entrar en la red. El objetivo es denegar el servicio. Una denegación de servicio distribuida significa que las personas que buscan recibir un servicio legítimo se ven desplazadas por el tráfico malicioso.
El problema con los ataques DDoS era que, a finales de 2014, no los cometían superpiratas con títulos especializados en informática para tratar de extraer datos. Los podía cometer cualquier persona que pagase a un servicio o bot para que lo realizase en su lugar. Y la razón es bastante evidente. Algunos lo hacían por puro vandalismo, pero otros tenían un objetivo: los ataques DDoS eran un método infalible para suspender una partida cuando la parte interesada iba perdiendo. Esto se había convertido en algo más que una molestia esporádica. Se estaba convirtiendo en un ataque directo contra cualquier partida competitiva.
En los primeros meses de 2015, presenciamos un aumento enorme en los ataques DDoS en Dota y CS:GO. Otras empresas también indicaban que el salto era gigantesco. De alguna manera, alguien de repente hizo que fuera muy fácil realizar esos ataques.
En agosto de 2015, The International se vio interrumpido por ataques DDoS. Los jugadores profesionales pudieron jugar las partidas normalmente, pero los comentaristas no pudieron ver las partidas para seguir el juego ni realizar sus comentarios durante más de dos horas. La difusión en forma de retransmisión televisiva se convirtió en un problema. De repente, los jugadores participaban sin ninguna visibilidad. Cualquiera podía interrumpir un evento de jugadores profesionales con millones de espectadores y millones de dólares en juego con un software de 5 euros. Era un problema que Valve no podía pasar por alto.
Antes de encontrar la solución adecuada, probamos varias formas de hacer frente a los ataques DDoS. Al principio, tratamos de filtrar el tráfico usando un potente conmutador de red. Lamentablemente, es muy complicado filtrar así el tráfico de un juego. Para los servidores de juegos es normal recibir tráfico espontáneo mediante el protocolo de datagramas de usuario (UDP, por sus siglas en inglés) desde direcciones IP arbitrarias. Es como si la oficina de correos se encargase de filtrar la correspondencia no deseada en tu lugar. Ahora imagínate que eres el periodista que se encarga de una sección de consejos y recibes montones de cartas de desconocidos constantemente. En ese caso la oficina de correos no puede distinguir las cartas de correo basura del resto. Así es como suele verse el tráfico a los servidores de juegos. Además, la dirección IP de origen en los paquetes UDP no está protegida y se puede falsificar fácilmente. Nuestra oficina de correos ni siquiera puede buscar pistas en la dirección del remitente del sobre, porque quienes envían el correo basura la falsifican.
Steam distribuye mucha información para el contenido de los juegos y, para ello, ha creado una red extensa. Ya estábamos aprovechando esa red para distribuir el tráfico de los juegos a través de enlaces dedicados, obtener una buena interconexión, asegurarnos de que se utilizaban las mejores prácticas de ingeniería de redes, etc. Esto hacía que los tiempos de ping de los jugadores fueran bajos, pero no protegía contra los ataques DDoS. El problema es que los protocolos UDP no son seguros, por lo que, aunque teníamos nuestra propia red, no era privada.
Necesitábamos controlar todas las entradas y protegerlas para evitar que los atacantes utilizaran nuestra red para atacar nuestros servidores. Logramos hacerlo creando proxies para el tráfico de juegos y enrutando mediante relés cada paquete de datos transmitido a través de la red. Ahora, cuando un cliente quiere comunicarse con un servidor del juego, tiene que hacerlo a través de un relé que lo autentica y envía ese tráfico por proxy al servidor del juego. Esto significa que la dirección IP del servidor siempre está oculta y el atacante simplemente no sabe a dónde enviar el ataque.
Siguiendo con la metáfora de la oficina de correos, el emisor del correo basura no tiene una dirección a la que enviar sus cartas. Podría enviar cartas a todas las oficinas de correos y pedir que las distribuyan, pero esa oficina de correos no lo va a hacer pues no tiene los permisos necesarios (además, a esa oficina de correos le resultaría muy sospechoso que alguien quiera enviar 100 000 cartas a una sola persona).
¿Pero no se podría simplemente atacar el relé? En teoría, se puede. Pero tenemos un número prácticamente ilimitado de relés y los creamos para que los ataquen. Un relé es simplemente un ordenador que ejecuta software. Puedes atacarlo o hacer que se desconecte, pero el protocolo se diseñó para esas situaciones. Si un cliente está tratando de jugar a un juego y pierde el contacto con un relé, simplemente se cambia a otro. Los relés son como cientos de soldados repartidos por todo el mundo con el único propósito de proteger el servidor del juego. Por cierto, desactivar un relé es más difícil de lo que parece. Están diseñados muy bien y se colocan en una parte específica de la red, y, aunque se concibieron para que se pudieran desconectar, todavía no hemos perdido ninguno.
La solución era sencilla pero eficaz. Antes, si alguien quería interrumpir una partida, solo tenía que saturar alguno de los servidores del juego (un listón muy bajo). Ahora es necesario saturar el centro de datos completo, lo cual es muchísimo más difícil. ¿Hay ataques que todavía podrían lograrlo? Sí, claro. ¿Son el tipo de ataques que alguien puede realizar en línea comprando una herramienta por 5 euros? No. Un ataque así de complejo no está al alcance de la mayoría de la gente.
Una vez que se puso en funcionamiento el nuevo sistema, nos dimos cuenta de algo importante: al poder controlar nuestra propia red, no tendríamos las limitaciones del funcionamiento normal de internet. Podríamos aprovechar para mejorar aún más la experiencia de los usuarios. Con la internet normal, cuando envías un paquete desde una dirección IP a otra, la ruta que se usa está determinada por el protocolo de puerta de enlace de frontera (BGP, por sus siglas en inglés). Ese protocolo es el algoritmo que decide cómo viajan tus paquetes por la red, y no te permite elegir su ruta.
Sin embargo, con una red privada virtual compuesta por cientos de relés y centros de datos en todo el mundo, podíamos elegir nuestra propia ruta desde el cliente hasta el servidor del juego, encontrando a menudo un atajo más rápido que la ruta predeterminada. Si utilizas Steam Datagram Relay (SDR), te mostramos tu tiempo de ping y la ruta que te damos, para que compruebes la mejora por ti mismo.
Esta característica, que comenzó como una forma de proteger los servidores del juego de Dota, se ha ampliado hasta superar todas las expectativas. La red SDR distribuye de forma habitual hasta 140 millones de paquetes y 550 GBit por segundo. Tenemos relays en 31 centros de datos con una capacidad de más de 5 TBit. Lo que ahora llamamos Steam Datagram Relay no solo protege contra los ataques DDoS, sino que también aumenta la conectividad y reduce el ping para todos los clientes de Dota. Y no solo lo hace para Dota, sino para cualquier juego de Steam que quiera aprovechar esa funcionalidad.
Esperamos que hayas disfrutado de esta entrega de «Detrás de las sendas» de Dota. Esta fue bastante técnica, ¡gracias por aguantar hasta el final! Y no dudes en sugerirnos qué temas te gustaría que abordásemos en el futuro.