El problema fundamental que Iroh aborda es la fragilidad y la complejidad inherente a la conectividad basada en direcciones IP en un mundo de dispositivos móviles, NATs y firewalls. Las direcciones IP son efímeras, no controladas por el usuario y a menudo inaccesibles, lo que dificulta la comunicación directa y segura entre pares. Iroh propone una abstracción de red donde los dispositivos son identificados y direccionados por claves criptográficas, no por IPs.

Esta tesis se alinea con la visión de una internet más resiliente y centrada en el usuario, donde la identidad criptográfica se convierte en el ancla de la conectividad. La necesidad de esta abstracción se ha intensificado con la proliferación de dispositivos IoT, la computación en el borde y la demanda de aplicaciones 'local-first' que funcionen sin depender de infraestructura centralizada o conectividad constante a internet. La adopción de QUIC como protocolo base es clave, dado su diseño moderno para superar muchas de las limitaciones de TCP/IP en entornos dinámicos.

Arquitectura del Sistema

Iroh se construye sobre una implementación personalizada de QUIC, extendiéndola con capacidades de multipath y NAT traversal. La clave criptográfica de cada dispositivo actúa como su identificador único y su 'dirección' en la red Iroh. Esta clave se utiliza para establecer y asegurar la conexión, y también para derivar identidad, permisos y atribución.

La arquitectura incluye:
- QUIC Multipath: Permite a Iroh establecer y gestionar múltiples rutas dentro de la misma conexión QUIC, cambiando dinámicamente entre ellas según las condiciones de la red. Esto mejora la resiliencia y el rendimiento, similar a cómo MPTCP mejora TCP.
- QUIC NAT Traversal: Facilita el establecimiento de conexiones directas entre pares que se encuentran detrás de NATs o firewalls, manteniendo los detalles de la conexión cifrados. Esto reduce la dependencia de relays y mejora la eficiencia.
- Configuraciones Local-First: Permite a los dispositivos Iroh descubrir y conectarse a otros dispositivos locales sin necesidad de acceso a internet, lo cual es crucial para escenarios de borde y offline.
- Relays Públicos: Aunque Iroh prioriza las conexiones directas, mantiene una red de relays públicos para facilitar el descubrimiento y la conexión cuando una ruta directa no es inmediatamente posible, actuando como un STUN/TURN server avanzado.
- Soporte de Transportes Personalizados: La arquitectura es extensible para integrar otros protocolos de transporte como Bluetooth Low-Energy (BLE), LoRa o Tor, bajo la misma abstracción de 'dial-by-key'.

La estabilidad del protocolo 'wire' y las APIs de lenguaje (Rust, Python, Node.js, Swift, Kotlin) son pilares de la versión 1.0, asegurando la interoperabilidad entre diferentes implementaciones y versiones menores.

Establecimiento de Conexión Iroh

  1. 1 Dispositivo A Genera clave criptográfica (identificador)
  2. 2 Dispositivo B Genera clave criptográfica (identificador)
  3. 3 Dispositivo A Intenta 'dial' a la clave de Dispositivo B
  4. 4 Iroh Core Utiliza QUIC NAT Traversal para conexión directa P2P
  5. 5 Iroh Core Si falla, usa relays públicos para mediación
  6. 6 Conexión QUIC Establecida y asegurada por claves criptográficas
  7. 7 QUIC Multipath Gestiona múltiples rutas para resiliencia/rendimiento
  8. 8 Dispositivos A y B Comunicación directa y cifrada
CapaTecnologíaJustificación
networking QUIC Protocolo de transporte base para multiplexación, control de flujo y cifrado. Iroh lo extiende con funcionalidades avanzadas. vs TCP/IP, UDP Implementación personalizada de QUIC con soporte multipath y NAT traversal.
security Claves Criptográficas Identificación de dispositivos, direccionamiento, establecimiento de confianza y cifrado de extremo a extremo. vs Certificados X.509 (para identidad), Direcciones IP (para direccionamiento)
networking NAT Traversal Permitir conexiones directas entre pares detrás de NATs/firewalls, reduciendo la dependencia de relays. vs STUN/TURN (como servicios externos), UPnP/PCP Integrado en la implementación de QUIC de Iroh.
networking Multipath Mejorar la resiliencia y el rendimiento de la conexión utilizando múltiples rutas de red simultáneamente. vs MPTCP (para TCP), Bonding/Teaming a nivel de SO Implementación personalizada de QUIC multipath.

Trade-offs

Ganancias
  • Eficiencia de transferencia de datos
  • Resiliencia de conexión
  • Seguridad por defecto
  • Reducción de costes de egress (cloud)
Costes

    Fundamentos Teóricos

    La idea de identificar nodos por claves criptográficas en lugar de direcciones de red efímeras tiene raíces profundas en la investigación de redes peer-to-peer y sistemas distribuidos. Conceptos como las redes 'Content-Addressable Networks' (CAN) o 'Distributed Hash Tables' (DHTs) como Chord o Kademlia (Stoica et al., 2001; Maymounkov & Mazières, 2002) exploraron la idea de direccionamiento basado en identificadores criptográficos o hashes de contenido, aunque principalmente para datos, no para nodos de red.

    La resiliencia y la capacidad de NAT traversal de Iroh se basan en principios explorados en papers sobre 'hole punching' y técnicas de evasión de NAT para UDP y TCP. La adopción de QUIC como base es una evolución natural de la investigación en protocolos de transporte de próxima generación, que buscan superar las limitaciones de TCP en términos de latencia, multiplexación y movilidad, como se detalla en los borradores del IETF que definen QUIC (Langley et al., 2017). La capacidad multipath de Iroh se inspira en el trabajo sobre Multipath TCP (MPTCP), que fue estandarizado en RFC 6824 (Ford et al., 2013), buscando mejorar la utilización de recursos de red y la resiliencia de las conexiones.