Herramientas de desarrollo · UUID generador
De Apollo NCS a RFC 9562: Una breve historia de UUID
· Antecedentes
uuid criptografía APIS del navegador
El extraño diseño 8-4-4-4-12 y el tamaño de 128 bits se heredan de la informática distribuida de los años 80. Esta publicación rastrea el UUID del sistema de computación en red de Apollo a través de DCE, el GUID de Microsoft y dos estándares IETF.
¿Por qué 128 bits y por qué esos guiones? — las preguntas que hace todo recién llegado y las respuestas de la historia
El formato con guiones 8-4-4-4-12 y el tamaño de 128 bits de un UUID son opciones de diseño que los historiadores cuestionan de inmediato. ¿Por qué no 96 bits para facilitar las matemáticas? ¿Por qué ese diseño de segmento específico? ¿Por qué base-16 con guiones en lugar de base-64 o una codificación más simple? Las respuestas se encuentran en el Apollo Network Computing System de principios de la década de 1980, una plataforma informática distribuida que se enfrentaba a un problema genuino: los sistemas de una red necesitaban asignar identificadores únicos sin una autoridad central, y esos identificadores tenían que ser globalmente únicos con una probabilidad abrumadora. Apollo NCS resolvió este problema combinando una marca de tiempo, una dirección de red y una secuencia de reloj en un identificador de 128 bits que cualquier máquina podría generar de forma independiente.
Apollo Network Computing System: el origen en la década de 1980 de identificadores únicos creados a partir del tiempo y una dirección de red
El estándar actual registra un linaje desde Apollo NCS hasta el entorno de computación distribuida OSF y plataformas posteriores de Microsoft. Esa historia explica por qué los sistemas modernos comparten una familia de 128 bits reconocible y al mismo tiempo conservan marcadores de variantes para diseños más antiguos. No establece una garantía absoluta de unicidad: cada versión tiene sus propias reglas de generación y modos de fallo. El logro duradero es la interoperabilidad sin un servicio de registro central. Un navegador, una base de datos y un sistema operativo pueden intercambiar la misma forma hexadecimal canónica, inspeccionar sus campos de variante y versión y decidir si la receta productora se ajusta a las necesidades del sistema receptor.
OSF DCE y el campo variante: cómo el entorno informático distribuido formalizó el diseño y agregó los bits variantes
El diseño se adapta a múltiples estrategias de generación a través de campos de versión y variantes que se incorporaron desde el inicio del diseño. La generación basada en el tiempo, la generación aleatoria y la generación basada en nombres pueden coexistir en el mismo espacio de identificador. Las aplicaciones modernas tienen requisitos diferentes a los NCS de la década de 1980 (bases de datos que quieren claves ordenables, sistemas en la nube que quieren privacidad, sistemas distribuidos que quieren resistencia a las colisiones), pero la misma estructura de 128 bits todavía los adapta. Las versiones 6 y 7 que se agregaron en RFC 9562 en 2024 demuestran que los diseñadores originales dejaron espacio para la evolución futura sin romper la compatibilidad con versiones anteriores.
GUID de Microsoft: COM, el registro y el estilo de llaves y mayúsculas que persiste hoy
El Apollo Network Computing System era una plataforma informática distribuida que se ejecutaba en las estaciones de trabajo Apollo Computer en la década de 1980. Se basaba en identificadores únicos a nivel mundial para llamadas a procedimientos remotos, replicación de datos y servicios de nombres. Los nodos de la red no tenían forma de coordinar la asignación de ID porque no se podía contactar a un servidor central si la red estaba dividida o desconectada. Entonces, los diseñadores de Apollo crearon un formato de 128 bits que combina una marca de tiempo de 60 bits, un identificador de nodo generalmente derivado de la dirección MAC de la tarjeta de red 48 bits y una secuencia de reloj de 14 bits para manejar los cambios de reloj. Este enfoque permite que los nodos generen identificadores de forma independiente combinando tiempo, una secuencia de reloj y un campo de nodo; su comportamiento todavía dependía de los relojes y la selección de nodos.
RFC 4122 (2005): el estándar IETF que definió las versiones 1 a 5 y el espacio de nombres URN, alineado con ITU-T X.667
Cuando OSF luego estandarizó esto para su entorno de computación distribuida alrededor de 1992, mantuvieron el mismo diseño y agregaron el campo variante para distinguir diferentes tipos de UUID. El diseño ya ha sido probado en sistemas de producción. El IETF estandarizó el RFC 4122 en 2005, casi veinte años después de Apollo NCS y unos trece años después de la estandarización de DCE. RFC 4122 versiones codificadas 1 a 5: versión 1 para generación basada en tiempo, versión 3 para generación basada en nombre con MD5, versión 4 para generación aleatoria y versión 5 para generación basada en nombre con SHA-1. El estándar fue estable y ampliamente adoptado porque ya era omnipresente en Microsoft Windows, la infraestructura DNS y los sistemas distribuidos. Cuando se publicó el RFC 4122, el UUID ya estaba tan integrado en la infraestructura que la estandarización era casi académica.
RFC 9562 (2024): la revisión que dejó obsoleto el RFC 4122, agregó las versiones 6, 7 y 8, y escribió consejos modernos sobre aleatoriedad
En 2024, el IETF publicó el RFC 9562, que deja obsoleto el RFC 4122 y agrega las versiones 6, 7 y 8. La versión 6 reordena los campos de tiempo de la versión 1 para una mejor localidad y ordenación del árbol B. La versión 7 utiliza una marca de tiempo Unix moderna y familiar en lugar del recuento basado en 1582, lo que mejora la capacidad de clasificación y se adapta a los requisitos de las bases de datos modernas. La versión 8 reserva espacio para implementaciones personalizadas y diseños experimentales UUID. Las nuevas versiones abordan problemas que surgieron durante cuarenta años de implementación de UUID: el bajo rendimiento de las claves aleatorias en la base de datos, la fuga de privacidad de la versión 1 y el deseo de identificadores ordenables en los sistemas de nube. Sin embargo, la estructura central de 128 bits, los campos de variante y versión y el diseño general permanecen intactos.
Lo que esto no cubre: detalles de implementación de cada versión, que tienen sus propias publicaciones.
La adopción por parte de Microsoft de los UUID como GUID, identificadores únicos globalmente en el modelo de objetos componentes, los integró profundamente en los sistemas Windows a partir de la década de 1990. GUID apareció en el registro, en las interfaces COM y en la infraestructura ActiveDirectory. Microsoft agregó una variación menor: almacenaron los GUID en orden de bytes little-endian para algunos componentes, apartándose del estándar de orden de bytes de red. Esa peculiaridad persiste en algunas API de Windows: si exporta un GUID desde Windows y lo importa a un sistema Unix, los problemas de orden de bytes pueden causar aparentes discrepancias. Pero el formato en sí es el mismo y la confusión es una nota a pie de página en la norma, no una diferencia fundamental. El estilo de llaves y mayúsculas {3FA85F64-5717-4562-B3FC-2C963F66AFA6} proviene de las convenciones de Windows; otros sistemas prefieren minúsculas y guiones sin llaves.
Conclusión: un diseño de cuarenta años que todavía funciona: el generador ToolAcre produce los UUID aleatorios (versión 4) que RFC 9562 todavía define para los casos en los que no es necesario realizar pedidos
Una línea de tiempo trabajada muestra la longevidad y estabilidad del diseño: Apollo NCS de los años 80 inventa el concepto; 1992 El DCE de OSF estandariza el diseño; Microsoft de la década de 2000 lo incorpora a Windows; 2005 IETF publica RFC 4122; 2024 IETF publica el RFC 9562 con versiones modernas. Se trata de uno de los esfuerzos de estandarización más largos en informática, no por disputas sino porque el diseño original era muy robusto y adaptable. Ha acomodado oleadas de cambios arquitectónicos (desde sistemas NFS distribuidos hasta bases de datos en la nube, desde Windows COM hasta dispositivos móviles, desde máquinas 64 bits de los años 80 hasta sistemas modernos) sin un rediseño fundamental. El impacto práctico es que los UUID son ubicuos y estables; cuando genera un UUID con el generador ToolAcre, está generando un identificador cuyo formato se estableció en la década de 1980, estandarizado internacionalmente en 2005 y mantenido en 2024 con relevancia duradera.