Principio de extremo a extremo
El principio de extremo a extremo es un marco de diseño en redes informáticas. En las redes diseñadas de acuerdo con este principio, garantizar ciertas características específicas de la aplicación, como la confiabilidad y la seguridad, requiere que residan en los nodos finales de comunicación de la red. Los nodos intermediarios, como puertas de enlace y enrutadores, que existen para establecer la red, pueden implementarlos para mejorar la eficiencia, pero no pueden garantizar la corrección de un extremo a otro.
La esencia de lo que luego se llamaría el principio de extremo a extremo estaba contenida en el trabajo de Paul Baran y Donald Davies sobre redes de conmutación de paquetes en la década de 1960. Louis Pouzin fue pionero en el uso de la estrategia de extremo a extremo en la red CYCLADES en la década de 1970. El principio fue articulado explícitamente por primera vez en 1981 por Saltzer, Reed y Clark. El significado del principio de extremo a extremo se ha reinterpretado continuamente desde su articulación inicial. Además, se pueden encontrar formulaciones notables del principio de extremo a extremo antes del artículo seminal de Saltzer, Reed y Clark de 1981.
Una premisa básica del principio es que los beneficios de agregar ciertas características requeridas por la aplicación final al subsistema de comunicación disminuyen rápidamente. Los hosts finales tienen que implementar estas funciones para que sean correctos. La implementación de una función específica incurre en algunas penalizaciones de recursos, independientemente de si la función se usa o no, y la implementación de una función específica en la red agrega estas penalizaciones a todos los clientes, ya sea que necesiten la función o no.
Concepto
La noción fundamental detrás del principio de extremo a extremo es que para dos procesos que se comunican entre sí a través de algún medio de comunicación, no se puede esperar que la confiabilidad obtenida de ese medio esté perfectamente alineada con el requerimientos de confiabilidad de los procesos. En particular, cumplir o superar los requisitos de confiabilidad muy alta de los procesos de comunicación separados por redes de tamaño no trivial es más costoso que obtener el grado requerido de confiabilidad mediante reconocimientos y retransmisiones de extremo a extremo positivos (denominados PAR o ARQ). Dicho de otra manera, es mucho más fácil obtener confiabilidad más allá de un cierto margen mediante mecanismos en los hosts finales de una red que en los nodos intermediarios, especialmente cuando estos últimos están más allá el control de, y no rendir cuentas a la primera. Los reconocimientos positivos de extremo a extremo con reintentos infinitos pueden obtener una confiabilidad arbitrariamente alta de cualquier red con una probabilidad superior a cero de transmitir datos con éxito de un extremo a otro.
El principio de extremo a extremo no se extiende a funciones más allá del control y la corrección de errores y la seguridad de extremo a extremo. Por ejemplo, no se pueden presentar argumentos directos de extremo a extremo para parámetros de comunicación como la latencia y el rendimiento. En un artículo de 2001, Blumenthal y Clark señalan: "[D]esde el principio, los argumentos de extremo a extremo giraron en torno a los requisitos que podrían implementarse correctamente en los puntos finales; si la implementación dentro de la red es la única forma de cumplir con el requisito, entonces un argumento de extremo a extremo no es apropiado en primer lugar."
El principio de extremo a extremo está estrechamente relacionado y, en ocasiones, se considera un precursor directo del principio de neutralidad de la red.
Historia
En la década de 1960, Paul Baran y Donald Davies, en sus elaboraciones de redes anteriores a ARPANET, hicieron breves comentarios sobre la confiabilidad que capturan la esencia del principio posterior de extremo a extremo. Para citar un artículo de Baran de 1964, “La confiabilidad y las tasas de error sin procesar son secundarias. La red debe construirse con la expectativa de un gran daño de todos modos. Existen potentes métodos de eliminación de errores." De manera similar, Davies señala sobre el control de errores de extremo a extremo: "Se cree que todos los usuarios de la red se proporcionarán algún tipo de control de errores y que esto podría hacerse sin dificultad para mostrar un paquete faltante". Debido a esto, se puede tolerar la pérdida de paquetes, si es lo suficientemente rara."
ARPANET fue la primera red de conmutación de paquetes de propósito general a gran escala e implementó varias de las nociones básicas mencionadas anteriormente por Baran y Davies.
Davies había trabajado en simulación de redes de datagramas. Sobre la base de esta idea, la red CYCLADES de Louis Pouzin fue la primera en hacer que los hosts sean responsables de la entrega confiable de datos, en lugar de ser un servicio centralizado de la propia red. Los conceptos implementados en esta red influyeron en la arquitectura TCP/IP.
Aplicaciones
ARPANET
ARPANET demostró varios aspectos importantes del principio de extremo a extremo.
- El cambio de paquete empuja algunas funciones lógicas hacia los puntos finales de comunicación
- Si la premisa básica de una red distribuida es la conmutación de paquetes, entonces las funciones como la reordenación y la detección duplicada inevitablemente tienen que ser implementadas en los extremos lógicos de dicha red. En consecuencia, el ARPANET presenta dos niveles distintos de funcionalidad:
- un nivel más bajo relacionado con el transporte de paquetes de datos entre los nodos de red vecinos (llamados procesadores de mensajes de interfaz o IMP), y
- un nivel superior que se ocupa de diversos aspectos finales a finales de la transmisión de datos.
- Dave Clark, uno de los autores del documento de principio final a final, concluye: "El descubrimiento de paquetes no es una consecuencia del argumento final a fin. Es el éxito de los paquetes que hacen relevante el argumento final a final."
- No hay transferencia de datos arbitrariamente fiable sin mecanismos de reconocimiento y retransmisión finales a fin
- El ARPANET fue diseñado para proporcionar un transporte fiable de datos entre los dos puntos finales de la red, como un simple canal I/O entre un ordenador y un dispositivo periférico cercano. Para remediar los posibles fallos de transmisión de paquetes, los mensajes normales de ARPANET fueron entregados de un nodo al próximo nodo con un esquema de reconocimiento y retransmisión positivo; después de una entrega exitosa fueron entonces descartados, ninguna retransmisión de origen a destinación en caso de pérdida de paquetes fue atendido. Sin embargo, a pesar de los esfuerzos significativos, la confiabilidad perfecta prevista en la especificación inicial de ARPANET resultó ser imposible de proporcionar – una realidad cada vez más obvia cuando ARPANET creció más allá de su topología inicial de cuatro nodos. Por lo tanto, ARPANET proporcionó un fuerte caso para los límites inherentes a los mecanismos de confiabilidad basados en red de aro, en la búsqueda de la verdadera fiabilidad de extremo a extremo.
- Comercio entre fiabilidad, latencia y rendimiento
- La búsqueda de una fiabilidad perfecta puede dañar otros parámetros relevantes de una transmisión de datos – lo más importante latencia y el rendimiento. Esto es particularmente importante para aplicaciones que valoran la rentabilidad predecible y la baja latencia sobre la confiabilidad – el ejemplo clásico es aplicaciones interactivas de voz en tiempo real. Este caso de uso fue atendido en ARPANET proporcionando un servicio de mensaje crudo que dispensaba varias medidas de fiabilidad para proporcionar un servicio de transmisión de datos de latencia más rápido y menor a los anfitriones finales.
TCP/IP
El Protocolo de Internet (IP) es un servicio de datagramas sin conexión y sin garantías de entrega. En Internet, IP se utiliza para casi todas las comunicaciones. El reconocimiento y la retransmisión de extremo a extremo son responsabilidad del Protocolo de control de transmisión (TCP) orientado a la conexión que se encuentra sobre IP. La división funcional entre IP y TCP ejemplifica la aplicación adecuada del principio de extremo a extremo para el diseño de protocolos de transporte.
Transferencia de archivos
Un ejemplo del principio de extremo a extremo es el de una transferencia de archivos arbitrariamente confiable entre dos puntos finales en una red distribuida de un tamaño variable y no trivial: la única forma en que dos puntos finales pueden obtener una transferencia completamente confiable es transmitiendo y reconocer una suma de comprobación para todo el flujo de datos; en tal entorno, los protocolos de suma de verificación y reconocimiento (ACK/NACK) menores se justifican solo con el fin de optimizar el rendimiento: son útiles para la gran mayoría de los clientes, pero no son suficientes para cumplir con el requisito de confiabilidad de esta aplicación en particular. Por lo tanto, es mejor realizar una suma de verificación exhaustiva en los puntos finales, y la red mantiene un nivel relativamente bajo de complejidad y un rendimiento razonable para todos los clientes.
Limitaciones
La limitación más importante del principio de extremo a extremo es que su premisa básica, colocar funciones en los puntos finales de la aplicación en lugar de en los nodos intermediarios, no es trivial de implementar.
Un ejemplo de las limitaciones del principio de extremo a extremo existe en los dispositivos móviles, por ejemplo, con IPv6 móvil. Llevar la complejidad específica del servicio a los puntos finales puede causar problemas con los dispositivos móviles si el dispositivo no tiene un acceso confiable a los canales de la red.
Se pueden ver otros problemas con una disminución en la transparencia de la red debido a la adición de la traducción de direcciones de red (NAT), en la que se basa IPv4 para combatir el agotamiento de direcciones. Con la introducción de IPv6, los usuarios vuelven a tener identificadores únicos, lo que permite una verdadera conectividad de extremo a extremo. Los identificadores únicos pueden basarse en una dirección física o pueden ser generados aleatoriamente por el host.