El multihoming es la práctica de conectar un host o una red informática a más de una red. Esto se puede hacer para aumentar la confiabilidad o el rendimiento.
Una red típica de host o usuario final está conectada a una sola red. Conectarse a varias redes puede aumentar la confiabilidad porque si una conexión falla, los paquetes aún pueden enrutarse a través de la conexión restante. Conectarse a varias redes también puede mejorar el rendimiento porque los datos pueden transmitirse y recibirse a través de varias conexiones simultáneamente, lo que multiplica el rendimiento y, según el destino, puede ser más eficiente enrutarlos a través de una red u otra.
Hay varias formas diferentes de realizar multihoming.
Un único host puede estar conectado a varias redes. Por ejemplo, un teléfono móvil puede estar conectado simultáneamente a una red WiFi y a una red 3G , y una computadora de escritorio puede estar conectada tanto a una red doméstica como a una VPN . A un host multihomed normalmente se le asignan varias direcciones, una por cada red conectada.
En el multihoming clásico, [1] [2] una red está conectada a múltiples proveedores y utiliza su propio rango de direcciones (normalmente de un rango independiente del proveedor (PI)). Los enrutadores de borde de la red se comunican con los proveedores mediante un protocolo de enrutamiento dinámico , normalmente BGP , que anuncia el rango de direcciones de la red a todos los proveedores. Si uno de los enlaces falla, el protocolo de enrutamiento dinámico reconoce la falla en cuestión de segundos o minutos y reconfigura sus tablas de enrutamiento para utilizar los enlaces restantes, de forma transparente para los hosts.
El multihoming clásico es costoso, ya que requiere el uso de un espacio de direcciones que sea aceptado por todos los proveedores, un número de Sistema Autónomo (AS) público y un protocolo de enrutamiento dinámico. Como el espacio de direcciones multihoming no se puede agregar, provoca el crecimiento de la tabla de enrutamiento global. [3] [ verificación fallida ]
En este enfoque, la red se conecta a varios proveedores y se le asignan varios rangos de direcciones, uno para cada proveedor. A los hosts se les asignan varias direcciones, una para cada proveedor. [4]
El multihoming con múltiples direcciones es más económico que el multihoming clásico y se puede utilizar sin ninguna cooperación de los proveedores (por ejemplo, en una red doméstica), pero requiere tecnología adicional para realizar el enrutamiento: [5]
Cuando se utiliza multihoming para mejorar la confiabilidad, se debe tener cuidado de eliminar cualquier punto único de falla (SPOF):
Al aumentar el número de interfaces y enlaces utilizados y hacer que el enrutamiento sea menos determinista, el multihoming complica la administración de la red [ cita requerida ] .
La técnica dominante para IPv4 es el multihoming clásico. Requiere que una red tenga su propio rango de direcciones IP públicas y un número AS público.
Si bien se ha implementado el multihoming con múltiples direcciones para IPv4, [6] no se lo utiliza generalmente, ya que las implementaciones de host no manejan bien múltiples direcciones por interfaz, lo que requiere el uso de "interfaces virtuales". [7] También es posible implementar el multihoming para IPv4 utilizando múltiples puertas de enlace NAT . [8]
En IPv6 se pueden utilizar tanto el multihoming clásico como el multihoming con múltiples direcciones.
El espacio de direcciones independiente del proveedor (PI) está disponible en IPv6. [9] Esta técnica tiene la ventaja de funcionar como IPv4, lo que permite equilibrar el tráfico entre varios proveedores y mantener las sesiones TCP y UDP existentes mediante cortes. Los críticos dicen que el mayor tamaño de las tablas de enrutamiento necesarias para gestionar el multihoming de esta manera abrumará al hardware del enrutador actual. Los defensores dicen que el nuevo hardware podrá manejar el aumento debido a una memoria más barata, cuyo precio baja de acuerdo con la ley de Moore . Los defensores también dicen que esta es la única solución viable en este momento, y la filosofía de que lo peor es mejor respalda la idea de que es mejor implementar una solución imperfecta ahora que una solución perfecta después de que sea demasiado tarde.
Debido a que muchos ISP filtran los anuncios de ruta con prefijos pequeños, esto generalmente requerirá una asignación de IP grande "del tamaño del ISP", como un /32, para garantizar la accesibilidad global. El uso de prefijos tan grandes es un uso ineficiente del espacio de direcciones de IPv6; solo hay alrededor de 4 mil millones de prefijos /32. Sin embargo, desde una perspectiva pragmática, asignar un /32 es equivalente en costo de espacio de direcciones global a asignar una sola dirección IPv4, y esto puede ser aceptable si, como parece ser probable para el futuro previsible, la cantidad de sitios multihomed solo puede contarse en millones, en oposición a los muchos miles de millones de puntos finales no multihomed que se anticipa que comprenderán la gran mayoría de los puntos finales de IPv6. [ cita requerida ] Algunos registros regionales de Internet (RIR) como RIPE han comenzado a asignar /48 de un prefijo específico para este propósito. RIPE asigna espacios de direcciones IPv6 independientes del proveedor /48 o más cortos desde 2001:0678::/29.
Se ha implementado el multihoming con múltiples direcciones para IPv6. [6] [10] Para el tráfico saliente, esto requiere soporte en el host, ya sea independiente del protocolo ( Multipath TCP , SCTP , QUIC , etc.) o específico para IPv6 (por ejemplo, SHIM6 ).