Almacenamiento y reenvío

Almacenamiento y reenvío (en inglés: «Store and forward») es una técnica de conmutación en redes con conexiones punto a punto estáticas, en virtud de la cual los datos se envían a un nodo intermedio, donde son retenidos temporalmente hasta su posterior reenvío, bien a su destino final, bien a otro nodo intermedio.

[1]​ Esta técnica se aplicó como tecnología de conmutación en las primeras redes de área amplia (WAN), y más tarde en los primeros multicomputadores (con redes estáticas).

En general, es adecuada para redes tolerantes al retardo (DTN, de «delay-tolerant networks»), donde no se proporciona ningún tipo de servicio en tiempo real, concretamente en escenarios donde los nodos se hallan geográficamente distantes, no existe conectividad directa o la red sufre una elevada tasa de errores.

En una red basada en «almacenamiento y reenvío», un conmutador espera a recibir íntegramente el paquete antes de ejecutar el algoritmo de encaminamiento.

Una vez hecho esto, el paquete completo se transfiere o reenvía al siguiente conmutador, determinado por el encaminamiento, a través de la salida correspondiente.

En cada instante, el paquete puede estar transfiriéndose por un único canal (ver vídeo).

[1]​ El buffer del conmutador debe tener capacidad para almacenar todo el paquete completo.

En una red de procesamiento paralelo, el recurso a la memoria principal del nodo al que se conecta el conmutador no es una opción viable, ya que degrada considerablemente las prestaciones.

Por ello, es preciso limitar ante todo el tamaño de los paquetes, dividiendo en la interfaz origen el mensaje en unidades más pequeñas que no superen un tamaño máximo preestablecido.

En multiprocesadores esta división puede ser superflua, ya que la longitud del mensaje suele estar ajustada al tamaño de una línea de caché.

) es siempre uniforme, la latencia de transporte con esta técnica viene dada por la siguiente expresión:[1]​ (1)

Donde: Con almacenamiento y reenvío, en cada instante solo puede haber un paquete transfiriéndose por un enlace o por una etapa conmutador-enlace de la red.

) y del tiempo necesario en atravesar una etapa (véase la expresión (1)).

Este número dependerá de la cantidad de enlaces que ocupe un paquete bloqueado; estos enlaces no podrán transferir datos mientras dure el bloqueo, lo que mermará la productividad global de la red.

Si en un momento dado un paquete no puede acceder a un recurso (i.e.

el puerto de salida del conmutador por el que debe encaminarse), se bloquea.

Esto implica que un cierto número de enlaces quedarán ocupados por el paquete bloqueado, permaneciendo inutilizados mientras dure el bloqueo.

Estos enlaces ocupados pueden a su vez provocar el bloqueo de otros paquetes y, en última instancia, causar un bloqueo en cadena y saturar la red.

El problema puede solventarse en parte usando en los conmutadores un almacenamiento común a todas las entradas, de forma que el bloqueo de paquetes no impida la entrada de nuevos paquetes (siempre que haya espacio disponible en el buffer para ellos).

En este caso, el tamaño del buffer asociado a los puertos de entrada o salida será múltiplo de un paquete.

Representación gráfica ( cronograma ) de la transferencia de un paquete desde el nodo A hasta el nodo D, mediante «almacenamiento y reenvío».