Cloudflare recorta 100 TB de memoria en la caché DNS de 1.1.1.1
La compañía reescribe en Rust la representación en memoria de su resolutor público: un 56% menos de espacio por entrada, un 43% más de inserción y un 19% menos de latencia.

Cloudflare ha reescrito la representación en memoria de la caché DNS de su resolutor 1.1.1.1 y ha liberado unos 100 TB de memoria de trabajo en toda la flota. La compañía mide un 56% menos de espacio ocupado por entrada, un 43% más de rendimiento al insertar registros y un 19% menos de latencia en las consultas. El despliegue en producción se hizo entre el 18 de mayo y el 6 de julio de 2026.
La caché vive en Big Pineapple, la plataforma DNS de Cloudflare, que mantiene más de 250.000 millones de entradas en cualquier momento. El trabajo consistió en cinco cambios sucesivos sobre cómo se guardan esos datos en Rust, y el detalle técnico está en el blog de la compañía.
De Vec y String a un buffer contiguo
Los primeros recortes son de manual: sustituir Vec y String por Box<[T]> y Box en todo lo que ya no cambia tras la inserción. Eso son 64 bytes menos por entrada y más de 15 TB en el conjunto de la flota. Después vinieron la fusión de los registros answer, authority y additional en una sola lista con offsets compactos, los booleanos empaquetados en bitflags y la eliminación de los owner names que coinciden con el dominio consultado, que se reconstruyen a partir de la clave de caché.
El escollo gordo fueron los enums de Rust. Cloudflare empezó metiendo las variantes grandes en un Box, pero cada asignación separada añadía sobrecarga y empeoraba la localidad de memoria. El diseño final guarda los datos del registro en un único buffer de bytes contiguo en formato wire de DNS: fuera el enum y las asignaciones por registro. Los tipos de registro más frecuentes se copian directamente en la respuesta; los que llevan nombres de dominio siguen necesitando parseo para la compresión de nombres.
El enfoque difiere del de otros resolutores recursivos. Unbound mantiene cachés separadas de mensajes, RRset, claves y respuestas negativas, con tamaños configurables, y PowerDNS Recursor usa varios tipos de caché, incluida la de paquetes y la de registros. Aquí el esfuerzo se fue a reducir la sobrecarga de representación y de asignación dentro de cada entrada.
Lo que dicen los números
En p99, la memoria residente por instancia bajó de 9,3 GB a 5,3 GB; en p90, de 6,5 GB a 3,8 GB. El espacio por entrada pasó de 953 a 420 bytes y las asignaciones de 1,1 KB a 461 bytes, según los benchmarks que publica la compañía. Sebastiaan Neuteboom, ingeniero de sistemas de Cloudflare, lo resumía así en LinkedIn: "No todos los días uno puede ahorrar 100 terabytes de memoria".
La memoria liberada no se devuelve: Cloudflare piensa usarla para aumentar la capacidad de caché sin subir el consumo total. Un comentarista de Reddit apuntaba el matiz que suele faltar en estos casos: buena parte de estos trucos de memoria solo compensan con el volumen de peticiones que maneja Cloudflare, y a menor escala la indirección extra del boxing puede pasar factura a la localidad de caché más de lo que ayuda. Para quien administra un resolutor propio, la lección es esa: el patrón de buffer contiguo en formato wire es trasladable, pero conviene medirlo antes de adoptarlo.
