



(4 opiniones)
En cualquier caso, el protocolo más extendido en el uso de las redes de cualquier tipo actualmente es IP (Internet Protocol). IP permite trabajar sobre cualquier tecnología de red, ya que es independiente del medio de comunicación físico. IP es un protocolo no orientado a conexión y no fiable que se basa en técnicas de el mejor esfuerzo (best effort) para encaminar sus paquetes. Esto es en cierto modo una ventaja, en el caso de que se utilice sobre redes no conectivas como pueden ser Ethernet, o una desventaja en redes ATM. En cualquier caso la adaptabilidad del protocolo IP a cualquier red mediante capas que actúan de interfaz permite situar este protocolo por encima de ATM, Frame Relay, Ethernet o redes LAN en general e incluso sobre líneas serie o paralelo.
El protocolo IP se encarga de cumplir los siguientes objetivos en una comunicación:
El protocolo ICMP (Internet Control Message Protocol) se encarga de mandar mensajes de control: errores en host, fallos de encaminamiento y mensajes similares, entre los host de la red. IGMP (Internet Group Message Protocol) se encarga de mantener actualizada la información relativa a la creación de grupos para la multidifusión, broadcast o multicast. El conjunto de estos protocolos dotan a la solución de una completa solidez en uso y funcionamiento.
El formato de bloques de IP no interviene en el factor de diseño de clusters, además, en el caso de IP, permite reducir bastante el tamaño de los paquetes que hay que enviar o ampliarlos al máximo de lo que nos permita la red. El esquema de direccionamiento tampoco es un problema para los clusters, aunque empieza a serlo a nivel mundial por la escasez de direcciones. Se espera que en poco tiempo la red vaya migrando a IPv6, en cualquier caso desde el punto de vista particular de los clusters el uso de IPv6 o IPv4 no tiene por que ser drástico e incluso puede favorecernos esta migración por hacer que los paquetes sean más configurables.
Respecto al encaminamiento y la fragmentación de los datagramas, permiten tener clusters diseminados por una geografía más extensa. Generalmente los clusters suelen localizarse en un mismo aula, edificio o entorno, pero existen problemas para los que pueden ser necesarias redes de área extensa para los que IP ya esta ampliamente comprobado y utilizado, como por ejemplo organizaciones internacionales o empresas multinacionales.
Este documento no pretende ser muy duro en cuanto a la teoría de redes. Lo básico para configurar la necesaria para interconectar nuestros nodos. Lo que sí es necesario es dar una explicación de porqué utilizar IP en clusters.
Existen otros protocolos de red que se han utilizado para entornos distribuidos como pueden ser IPX/SPX, Appletalk u otros; e incluso algunas soluciones se han basado directamente sobre capas de nivel de enlace para efectuar las comunicaciones entre los nodos. GNU/Linux soporta sin problemas todos estos protocolos.
![]() |
Protocolos de transporte
Los protocolos de red están divididos por capas. En la subsección anterior se ha visto la capa de red, ahora se dará paso a las capas que existen a nivel de transporte: UDP y TCP.La mayoría de los protocolos de transporte tienen elementos comunes. Los protocolos orientados a conexión deben tener mecanismos para establecer y liberar conexiones. Cuando hay múltiples conexiones abiertas en una misma máquina, las entidades de transporte tendrán que asignar un número a cada conexión y ponerlo en el mensaje.
En sistemas operativos UNIX y para la red ARPANET existen dos enfoques para saber a que puerto acceder a un servicio:
En otro caso el control de flujo es fundamental. El emisor tiene una copia local de cada mensaje que se envía por la red hasta el momento que es asentido, el receptor quizás no desee enviar un ACK (acknowledgement o asentimiento) de ese mensaje, o no recibió el mensaje correctamente; en esos casos el ordenador que está enviando los mensajes tiene que reenviar el mensaje, por ello la necesidad de tener una copia local.
Con este sistema el receptor puede limitar el tráfico que recibe simplemente tardando más tiempo en asentir los datos recibidos. Así cada uno de estos protocolos define unos temporizadores y unas reglas para no sólo controlar el flujo sino controlar que no se produzca congestión en la red.
Otro punto en común de todos los protocolos de transporte es que permiten la multiplexión y demultiplexión de las conexiones, para aumentar el ancho de banda y aprovechar mejor los recursos de los que se disponga.
UDP
Es el protocolo de transporte no fiable estándar en Internet. Como protocolo de transporte que es solamente está implementado en ordenadores finales, no en routers. Es un protocolo no orientado a conexión (de ahísu nombre, se envían datagramas) y no es fiable. La cabecera que incluye al mensaje es la mínima para poder distinguir a que puerto se dirige y un pequeño checksum de la cabecera. Es usado por las aplicaciones de los servicios no conectivos, para enviar pocos datos (se consigue más rendimiento puesto que no se necesita gastar tiempo en conectar y desconectar) y en multidifusión.UDP al contrario de TCP no puede realizar fragmentaciones de los mensajes puesto que no tiene campos para ello. Por tanto es la aplicación quien debe dividir los mensajes como crea oportuno. Como la tecnología física de red también impone una restricción de tamaño máximo de paquete, otra división se realiza en el nivel IP; por tanto una aplicación que conociera la MTU evitaría esta segunda división. Cuando uno de los fragmentos de un mensaje UDP se pierde se tendría que retransmitir.
En el caso de UDP será la aplicación la encargada, gracias a unos temporizadores, de retransmitirlo. En el caso de TCP es él mismo el que detecta y soluciona e problema.
Como sabemos IP si no puede recomponer un datagrama, lo desecha, no tratando el problema y dejando la solución a capas superiores.
Algunos capas superiores que usan UDP son RPC y todos los aplicaciones que dependen de estos (DNS, NIS, etc.) y otras aplicaciones como pueden ser TFTP, BOOTP, DHCP.
TCP
Este protocolo junto con UDP son los dos protocolos de transporte estándar en Internet, es el protocolo fiable de la familia. Es un protocolo orientado a conexión. TCP recibe mensajes de cualquier tamaño y los divide en trozos de un máximo de 64KB se envía cada uno de estos trozos como un mensaje TCP separado. Para evitar fragmentaciones extra, TCP conoce la MTU de la red, con lo que se evita que el nivel de red tenga que dividir a su vez para acoplarse al MTU de la red.También es misión de TCP ordenar todos los segmentos que hayan llegado separados y ensamblarlos para obtener el mensaje inicial. Tiene la ventaja de que las aplicaciones no tienen que preocuparse de tratar los errores de la comunicación puesto que para la aplicación el canal de comunicación es perfecto y siempre llega la información integra.
El que sea un servicio orientado a conexión quiere decir que hay 3 fases en la comunicación, que forman un mínimo de 7 mensajes sin contar los mensajes de datos:
![]() |
La peor situación que le puede ocurrir a una red físicamente bien es que tenga congestión, por eso esta situación se intenta evitar a toda costa, y los protocolos orientados a conexión son mejores para evitarla, por eso TCP intenta hacer un control de congestión en Internet. Quien más rápidamente puede reaccionar ante la congestión es el emisor, por tanto cuando según acabamos de ver se cumple el temporizador de retransmisión hay error o hay congestión, como las redes actuales son de muy buena calidad es muy difícil que el error sea a causa del medio de transmisión por lo tanto el emisor supone que existe congestión con lo que envía los datos de forma más lenta, siguiendo un algoritmo, con esto se intenta que se alivie la congestión de la red.
Para controlar el flujo y la congestión se usa la ventana deslizante que permite enviar varios paquetes antes de que se envíe un ACK, enviar un ACK por cada paquete es realmente lento por lo tanto cuando se quiere disminuir la velocidad por el peligro de congestión o porque el receptor no puede recibir tantos datos la ventana disminuye dejando enviar menos paquetes por ACK, pudiendo llegar a ser 0, lo que significa que el receptor no puede en esos momentos recibir nada más. Cuando se quiere más velocidad se deja enviar más paquetes antes de parar para esperar un ACK.
Antes de comenzar a instalar el sistema propiamente dicho, se debe hacer un estudio de que servicios o programas debe correr, y tener en cuenta cómo éstas van a afectar a la carga en la red. Este apartado es bastante importante en la instalación de redes por los siguientes motivos.
Factores a tener en cuenta al diseñar una red
A la hora de diseñar una red tenemos que tener claros ciertos conceptos acerca del sistema que queremos instalar, el funcionamiento que éste debe tener, los servicios que debe tener y sobre todo, la funcionalidad que se le va a dar.Hay que conocer la funcionalidad del sistema:
No existe ningún sistema cluster de carácter general, la mayoría de ellos se compone de varias aplicaciones trabajando juntas. Si estas aplicaciones deben acceder a recursos compartidos, hay que tener claras dos cosas: cuáles tienen más prioridad, y cómo obtener la prioridad. Por otro lado están los factores técnicos que afectan a los servicios que utilizará la red. Una vez que se sabe los servicios que poseerá el cluster es necesario describir el tipo de funcionamiento que tiene cada servicio y demás características.
A partir de este apartado, el diseñador de la red debe conocer cada uno de los servicios que la red va a utilizar tanto con conocimiento teórico como práctico para poder tener una visión generalizada. Esta visión debe ser tanto de como puede afectar este servicio a otros y al sistema en general como para tener los conocimientos necesarios para instalar el servicio sin que este provoque problemas de ningún tipo. Cuando un diseñador inexperto no haya instalado un sistema o un servicio de este tipo, lo conveniente es hacer uso de un entorno de simulación reducido en el cual hacer las instalaciones pruebas y verificaciones para después proceder a realizar extrapolaciones a un sistema grande, se ha de recordar siempre que la depuración de un error en un sistema distribuido crece exponencialmente con el número de nodos que tiene el sistema, y en el caso de que éste utilice varios servicios a la vez, el crecimiento de la complejidad crece más aún a medida que escala el cluster.
Cuando intervienen varios sistemas, todos ellos complejos y completos en un entorno distribuido, se debe tener el suficiente conocimiento de cada uno de los sistemas a montar como para asegurar que el conjunto de todos ellos no desestabilizara el funcionamiento de los otros.
El siguiente punto a tener en cuenta es hacer aproximaciones a las necesidades de red que se han extrapolado de cada servicio, y saber de que recursos se cuentan para satisfacer estas necesidades. En este punto, se debe exigir un equilibrio entre los recursos que se tienen y la efectividad de dicho funcionamiento.
Por ejemplo, en un entorno de trabajo con openMosix, NFSROOT y XWindow en un laboratorio de investigación científica probablemente se dé más importancia a la red openMosix que a el sistema de archivos NFS o XWindow. Así que probablemente se separen dichas dos redes como redes aisladas de manera que NFSROOT o X Window no interfieran sobre openMosix y al mismo tiempo openMosix esté aislado: sus paquetes de información de estado de cada nodo no interrumpirán las comunicaciones largas debido a colisiones cuando openMosix está en un estado sin migraciones.
En el caso de sistemas implementados en el kernel de un sistema operativo el fallo del sistema puede provocar el malfuncionamiento de una máquina y por tanto se puede requerir del reseteo de la misma.
Por último se han dado los puntos necesarios para diseñar una red correctamente, ya que generalmente cuesta más escalar un sistema mal diseñado con fallos respecto a los requerimientos iniciales que un sistema que sea bien diseñado y quizá sobredimensionado desde el principio.
|