Resumen
- RFC 3338 insertó un traductor entre API socket y pilas IPv4/IPv6. Ante un destino solo AAAA, podía sintetizar una respuesta A con un valor del pool local y vincularlo a IPv6 sin traducir cabeceras IP.
- Ese valor era estado con ámbito y tiempo. Agotamiento, reutilización, diferencias de API y discordancia entre AAAA del host y soporte del servicio rompían la ilusión. Generación, llamada traducida, transporte y aplicación necesitaban recibos propios.
El nombre obtenía una forma antigua para un destino nuevo
Un programa IPv4 esperaba resultados de cuatro bytes. Si su fuente no estaba disponible, portarlo no era inmediato. BIA estaba pensado para un host dual stack cuya red ya hablaba IPv6 pero cuyos programas aún no.
El resolvedor interceptaba la consulta, pedía A y AAAA y, si solo encontraba AAAA, solicitaba al mapper un valor IPv4 interno. Guardaba el par y devolvía un A sintético.
Cuando el programa usaba el valor en un socket IPv4, el function mapper recuperaba IPv6 e invocaba la API correspondiente. La pila enviaba IPv6 nativo; BIA no reescribía cabeceras como BIS.
Los cuatro bytes señalaban una tabla privada
Una dirección normal parece tener significado en la red. El valor BIA significaba “esta entrada de esta tabla en esta generación”. Un pool por nodo, usuario o proceso podía dar referentes distintos a los mismos bits.
El documento usó como ejemplo valores no asignados entre 0.0.0.1 y 0.0.0.255, destinados a no salir del host. Su unicidad era local.
Por eso el log debe guardar ámbito, generación, proceso, respuesta DNS y IPv6 real. El valor era más parecido a un descriptor que a identidad de interfaz.
Reciclar el pool podía cambiar el destino
Muchos pares agotaban el pool. La norma contempló liberar la entrada más antigua y reutilizar el valor. El espacio volvía, pero el identificador pasaba a otro IPv6.
Una copia atrasada en caché, callback o registro podía seguir pareciendo válida. El riesgo nacía de dos conceptos de vida útil dentro del host.
Asignación, uso, expulsión, reutilización y generación deben conservarse. El mismo número antes y después no es la misma identidad operacional.
Las API no eran semánticamente idénticas
El mapper buscaba funciones equivalentes, pero IPv6 tenía capacidades nuevas. Raw sockets, ancillary data, ICMP y direcciones embebidas en protocolos dependían del sistema operativo.
Que la función retornara no probaba que opciones, errores y efectos fueran idénticos. La aplicación podía leer una diferencia que el traductor no veía.
El recibo conserva función y argumentos originales, resultado traducido, opciones, OS, retorno e interpretación. Evitar cabeceras no eliminó la traducción semántica.
AAAA para la máquina no era IPv6 para el servicio
Un host dual stack podía publicar AAAA porque algunos servicios hablaban IPv6 mientras una aplicación en cierto puerto seguía solo en IPv4. BIA alcanzaba el host y fallaba en el servicio.
En TCP podía observar connect fallido e intentar otra dirección. En UDP era difícil o imposible saber cuál funcionó sin ayuda de la aplicación.
DNS prueba registros; reachability, camino; listener, puerto; aplicación, operación. Cada capa debe dar su recibo.
El puente no debía sustituir al porting
RFC 3338 era Experimental, para early adopters con código no disponible. No se recomendaba para producción general y no debía retrasar el portado si existía fuente.
La advertencia anticipaba lock-in. La compatibilidad acumula excepciones y observabilidad propia hasta volverse infraestructura permanente.
Un despliegue necesitaba salida: aplicaciones elegibles, dueño del porting, llamadas sin soporte, revisión y señal de retirada.
Happy Eyeballs resolvió otra versión del problema
RFC 2767 colocó BIS bajo la API con SIIT de RFC 2765. RFC 2893 dio contexto dual stack. RFC 3493 describió sockets IPv6 y RFC 4038 la transición de aplicaciones.
RFC 6555 y RFC 8305 añadieron Happy Eyeballs, con intentos entre familias. No eran el alias IPv4 privado de BIA y no deben proyectarse hacia 2002.
RFC 4291 define IPv6, no el significado global del pool sintético. Ningún texto demuestra adopción.
Un identificador mutable necesita generación
BIA conservó la interfaz y cambió la ejecución. El precio fue estado oculto: una dirección se convirtió en referencia y un socket ordinario en llamada interceptada.
Cada A sintético necesita mapping; cada llamada, antes y después; cada conexión, IPv6 real y resultado. Sin ello, el investigador atribuye identidad global a un número local.
Los bits no eran el par. La tabla viva era el significado.
Fuentes
- RFC 3338 — Dual Stack Hosts Using Bump-in-the-API
- Registro de RFC 3338 en RFC Editor
- RFC 2767 — Bump-in-the-Stack
- RFC 2765 — SIIT
- RFC 2893 — Mecanismos de transición IPv6
- RFC 3493 — Extensiones socket básicas para IPv6
- RFC 4038 — Aspectos de aplicación en transición IPv6
- RFC 6555 — Happy Eyeballs
- RFC 8305 — Happy Eyeballs versión 2
- RFC 4291 — Arquitectura de direcciones IPv6
Informe para miembros
Contexto ampliado del perfil
Inicia sesión con el nivel de membresía adecuado para desbloquear el informe completo y las notas de las fuentes.
Solo para Strategic Circle
Strategic Circle
Abierto a todos los lectores. Desbloquea informes de perfil después de unirte e iniciar sesión.
Únete a Strategic CircleSolo para Leadership Alliance
Leadership Alliance
Para propietarios y directivos cualificados de activos de propiedad intelectual; inicia sesión para desbloquear los informes de la alianza.
Unirse a Leadership Alliance
