sábado, 9 de marzo de 2013

Arquitectura de redes



En los inicios de la informática el diseño de un ordenador resultaba en sí mismo una tarea tan compleja que no se tomaba en consideración la compatibilidad con otros modelos de ordenadores; la preocupación fundamental era que el diseño fuera correcto y eficiente. Como consecuencia de esto era preciso crear para cada nuevo modelo de ordenador un nuevo sistema operativo y conjunto de compiladores. Los programas escritos en lenguaje máquina o en ensamblador (que entonces eran la mayoría) tenían que ser prácticamente reescritos para cada nuevo modelo de ordenador.

En 1964 IBM anunció un nuevo ordenador denominado Sistema/360. Se trataba en realidad de una familia formada por varios modelos que compartían una arquitectura común (era la primera vez que se utilizaba este término referido a ordenadores). La arquitectura establecía unas especificaciones comunes que hacían compatibles a todos los modelos de la familia (conjunto de instrucciones, forma de representar los datos, etc.), pudiendo así ejecutar los mismos programas, utilizar el mismo sistema operativo, compiladores, etc. en toda la familia, que comprendía una gama de ordenadores de potencias y precios diversos. El nombre 360 se eligió en base a la década en que se creó (los 60) y a la idea de que era una arquitectura polivalente, que pretendía servir para aplicaciones de todo tipo (360º, o sea que puede ir en todas direcciones). La arquitectura 360 ha ido evolucionando hasta desembocar en nuestros días en la arquitectura ESA/390, utilizada en los grandes ordenadores IBM (mainframes) actuales, que son aún la base de las aplicaciones críticas en grandes empresas (bancos, líneas aéreas, etc.). Todos los fabricantes de ordenadores actuales utilizan una o varias arquitecturas como base para el diseño de sus equipos.

Las primeras redes de ordenadores tuvieron unos inicios muy similares a los primeros ordenadores: Las redes y los protocolos se diseñaban pensando en el hardware a utilizar en cada momento, sin tener en cuenta la evolución previsible, ni por supuesto la interconexión y compatibilidad con equipos de otros fabricantes (seguramente muchos creían que bastante trabajo suponía conseguir que las cosas funcionaran como para perder el tiempo con florituras¡). A medida que la tecnología avanzaba y se mejoraba la red se vivieron experiencias parecidas a las de los primeros ordenadores: los programas de comunicaciones, que habían costado enormes esfuerzos de desarrollo, tenían que ser reescritos para utilizarlos con el nuevo hardware, y debido a la poca modularidad prácticamente nada del código era aprovechable.

El problema se resolvió de forma análoga a lo que se había hecho con los ordenadores. Cada fabricante elaboró su propia arquitectura de red, que permitía independizar las funciones y el software del hardware concreto utilizado. De esta forma cuando se quería cambiar algún componente sólo la función o el módulo afectado tenía que ser sustituido. La primera arquitectura de redes fue anunciada por IBM en 1974, justo diez años después de anunciar la arquitectura S/360, y se denominó SNA (Systems Network Architecture). La arquitectura SNA se basa en la definición de siete niveles o capas, cada una de las cuales ofrece una serie de servicios a la siguiente, la cual se apoya en esta para implementar los suyos, y así sucesivamente. Cada capa puede implementarse en hardware, software o una combinación de ambos. El módulo (hardware y/o software) que implementa una capa en un determinado elemento de la red debe poder sustituirse sin afectar al resto de la misma, siempre y cuando el protocolo utilizado se mantenga inalterado. Dicho en otras palabras, SNA es una arquitectura altamente modular y estructurada. No vamos a entrar en mas detalles sobre la arquitectura SNA, ya que cae fuera de los objetivos del presente curso, pero sí diremos que el modelo de capas que utiliza ha sido la base de todas las arquitecturas de redes actualmente en uso, incluidas las basadas en el modelo OSI (Open Systems Interconnection) y el TCP/IP (Transmission Control Protocol/Internet Protocol) que veremos en detalle más adelante.

Las ideas básicas del modelo de capas son las siguientes:

  • La capa n ofrece una serie de servicios a la capa n+1.

  • La capa n solo ‘ve’ los servicios que le ofrece la capa n-1.

  • La capa n en un determinado sistema solo se comunica con su homóloga en el sistema remoto (comunicación de igual a igual o ‘peer-to-peer’). Esa ‘conversación’ se efectúa de acuerdo con una serie de reglas conocidas como protocolo de la capa n.

La comunicación entre dos capas adyacentes en un mismo sistema se realiza de acuerdo con una interfaz. La interfaz es una forma concreta de implementar un servicio y no forma parte de la arquitectura de la red.

La arquitectura de una red queda perfectamente especificada cuando se describen las capas que la componen, su funcionalidad, los servicios que implementan y los protocolos que utilizan para hablar con sus ‘iguales’. El conjunto de protocolos que utiliza una determinada arquitectura en todas sus capas se denomina pila de protocolos (‘protocol stack’ en inglés); así es frecuente oír hablar de la pila de protocolos OSI, SNA, TCP/IP o DECNET, por ejemplo.

Para mejor comprender como funciona el modelo de arquitectura de redes basado en capas hagamos una analogía. Supongamos que un ejecutivo de la empresa A desea enviar de forma urgente un importante informe a un colega suyo en la empresa B. Para esto hablará con aquél notificándole el envío y a continuación pasará a su secretaria el informe con las instrucciones correspondientes. La secretaria llamará a la secretaria de B para averiguar la dirección exacta, pondrá el informe en un sobre y llamará a un servicio de mensajería, que enviará a un motorista para que recoja el paquete y lo lleve al aeropuerto. Cuando el paquete llega al aeropuerto de destino es recogido allí por otro motorista que lo lleva a la oficina de la empresa B y lo entrega a la secretaria; ésta se ocupará de los trámites administrativos (pagar al mensajero, abrir el paquete, comprobar su contenido, acusar recibo a la secretaria de A, etc.) y lo pasará después a su jefe, el cual una vez estudio el informe llamará al ejecutivo de A.

Obsérvese que en el proceso anterior existen diferentes niveles claramente diferenciados: los ejecutivos, las secretarias, los motoristas, y por último la empresa de líneas aéreas que se ocupa del transporte físico de la mercancía. En todos los niveles (menos probablemente el más bajo) hay dos entidades, la transmisora (A) y la receptora (B). Si todo ocurre según lo previsto cada entidad sólo hablará con su correspondiente en el otro lado, y con sus entidades vecinas, es decir, el jefe de A sólo habla con el jefe de B y con su secretaria, la secretaria habla con su jefe, con el motorista y con la otra secretaria para confirmar el envío, etc. En ningún caso se contempla que la secretaria de A hale con el ejecutivo de B. Si por ejemplo la secretaria de A es sustituida por enfermedad por otra persona los procedimientos seguirán funcionando, siempre y cuando la secretaria suplente desarrolle la misma función. Las variaciones de carácter interno sólo han de ser conocidas por las entidades contiguas, por ejemplo, el motorista de B podría ser reemplazado por una furgoneta de reparto, y este hecho solo ha de ser conocido por la secretaria de B y por la persona que entrega los paquetes en el aeropuerto. Esto es lo que denominamos una interfaz. Obsérvese que el modelo de capas simplifica considerablemente la tarea de cada una de las entidades, que sólo tiene que preocuparse de una pequeña parte de todo el mecanismo. En esencia se trata de aplicar a la resolución de problemas la vieja fórmula de divide y vencerás.

Cuando un sistema desea enviar un mensaje a un sistema remoto normalmente la información se genera en el nivel más alto; conforme va descendiendo se producen diversas transformaciones, por ejemplo adición de cabeceras, de colas, de información de control, la fragmentación en paquetes mas pequeños si es muy grande (o mas raramente la fusión con otros si es demasiado pequeño), etc. Todas estas operaciones se invierten en el sistema remoto en las capas correspondientes, llegando en cada caso a la capa correspondiente en el destino un mensaje igual al original.

No hay comentarios:

Publicar un comentario