domingo, 28 de febrero de 2010

Capitulo 4. Principios de Conmutación y enrutamiento.

Switches

Un Switch es un dispositivo de networking, que conecta segmentos de red, separando dominios de colisión, microsegmentando la red. En principio no es más que un puente multipuerto, que opera en la capa 2 del modelo OSI.

Para redes Ethernet, cuando un switch se inicializa, construye una tabla de las direcciones físicas (MAC) de los dispositivos que tiene conectados a cada uno de sus puertos, agregando cierta inteligencia en el envío de tramas en la red. que vale mencionar, también tienen su propia dirección física. Como consecuencia un Switch de 100 puertos de red (también tiene otros puertos auxiliares, algunos para administración), tiene 100 direcciones MAC.

Los Switches aumentan considerablemente el rendimiento de la red, por cuanto idealmente eliminan las colisiones. Decimos idealmente en el caso de que, en cada puerto del switch, exista un único dispositivo final. Siendo así, ese puerto (y por consiguiente el segmento mismo conectado a él) puede operar en modo Full Duplex (por supuesto, ya que el medio no sería compartido por más nadie que el host y el switch). Si por el contrario, se opta por conectar varios dispositivos en ese segmento, digamos, con un concentrador (hub), entonces habremos compartido nuevamente el medio, dando lugar a la ocurrencia de colisiones y obligando al switch a colocar el enlace en modo Half Duplex.


Tipos de Switches

Desde el punto de vista de operación, podemos clasificarlos como Configurables y No Configurables. Estos últimos, son básicamente la variedad de switch de uso personal, en redes hogareñas o similares en estructura, semi-aisladas. No requiere más que simplemente conectarlo para operar.

Los configurables son una variedad más robusta que admite programación por un puerto de consola, al que se accede a través de una sesión de terminal, configurandola de acuerdo a las indicaciones del equipo; también puede admitir programación a través de la CLI (interfaz de línea de comandos) a la cual se accede mediante una solicitud de Telnet. Entre las opciones de configuración (además del levantamiento lógico de los puertos) están el poder activar el protocolo Spanning Tree y crear y administrar VLAN's.

También es posible clasificarlos de acuerdo a la capa en que operan. Como se dijo, en principio los switches operan en la capa 2, esto es, que conmutan las tramas entre sus puertos basados únicamente en sus tablas de almacenamiento de MAC's. Los switches pueden conmutar de diversos modos:

  • Almacenamiento y envío: El switch retiene la trama completa y verifica su integridad mediante el campo de la FCS, así chequea los posibles errores en vez de hacerse en el destino.

  • Corte y envío: Tan pronto lee la dirección MAC de destino, la envía por el puerto correspondiente de salida. Aunque es evidente que este modo demora mucho menos, es posible que el switch reenvíe una trama del tipo runt (Capítulo 2). Para este modo, ambos puertos involucrados deben operar a la misma velocidad (conmutación síncrona), pues es posible que el puerto de salida esté ocupado en el momento que se disponga a recibir la trama. En este caso el switch debe cambiar a almacenamiento y envío.

  • Libre de fragmentos: Este modo es un compromiso entre los 2 anteriores, lee los primeros 64 bytes, y la conmutación comienza antes de que se lean los datos y la FCS. Este método verifica la confiabilidad del direccionamiento.

Existen además, algunas clases de siwtches que operan en otras capas:

  • Switch de capa 3: Electrónicamente se pueden diferenciar de un router de propósito general en la implementación física. En el router la conmutación de paquetes la realiza un microprocesador, mientras en el switch lo hace un circuito integrado de aplicación específica (ASIC). Se puede decir, que es un router menos robusto.

  • Switch de capa 3 y/o 4: Además de lo anterior, estos switches pueden enrutar entre VLAN's y/o puertos, como un router común.

  • Switch de capas superiores 4-7: Tienen la capacidad de hacer balanceo de carga de acuerdo al tráfico solicitado por algún grupo de usuarios hacia un servicio requerido en un puerto específico. Esto frecuentemente involucra el mapeo de direcciones ip y puertos mediante el proceso de NAT.


Bandwidth (ancho de Banda)

Dentro de este contexto, es muy común oir el término ancho de banda ó ancho de banda digital, refiriéndose simplemente a la velocidad máxima teórica para trasmitir data sobre la red, y se expresa generalmente en bit/s. Aunque en redes, ésta es siempre la unidad en que se expresa, muchas veces el concepto se refiere a algo relativamente distinto. En el contexto de los switches, se suele llamar bandwidth a la velocidad a la cual pueden trabajar los puertos del switch


Throughput

Una definición simple es el número de bits por segundo que son físicamente entregados. Una definición un poco más formal sería la tasa de mensajes exitosamente entregados sobre el canal. Por esa razón el Throughput máximo teórico sería igual al bit rate, o velocidad de la línea o bandwitdh digital del la línea.


Protocolo Spanning Tree

Aunque a menudo se recomienda la interconexión con rutas redundantes en pro de aumentar la confiabilidad y tolerancia a fallas, esto puede tener el efecto inverso cuando ocurren los bucles de conmutación. Por esta razón se desarrolló el protocolo STP, Spanning Tree Protocol. Cada switch en con el protocolo STP levantado, envía una BPDU (Unidad de datos de protocolo de puente) desde todos sus puertos para que los otros switches sepan de su existencia y elijan un puente raíz para la red, el proceso finaliza cuando, logran resolver y desconectar de forma lógica las rutas redundantes, sin embargo físicamente las rutas siguen disponibles.


Funcionamiento del Protocolo

El algoritmo Spanning Tree (STA) es quién está detrás de la convergencia de la red lógica de los switches. El algortimo realiza lo siguiente:

  • Escoje un Switch raíz: Los switches poseen un número que consiste en un identificador y un número de prioridad.

  • hola
Cada puerto del switch con STP pasa por los siguientes cinco estados:
  • De la inicialización al bloqueo: Esto es, sólo recibe las BPDU. No se recibe ni envía información de usuario.

  • Del bloqueo a escuchar: Recibe las BPDU y espera por cualquier nueva información que lo pueda regresar al estado anterior..

  • De escuchar a aprender: No envía datos de usuario, pero si construye las tablas MAC.

  • De aprender a enviar: Operación regular. No obstante, sigue monitoreando las BPDU en caso de que deba volver al bloqueo para evitar bucles.

  • De envío a desactivado: El puerto pasa a estar administrativamente apagado.


Hola

miércoles, 24 de febrero de 2010

Capitulo 3 Protocolos. Direccionamiento IP

3.1 Grupo de Protocolos de Internet (TCP/IP)

Es básicamente un conjunto protocolos de comunicación usados para Internet y otras redes similares. Los protocolos mas importantes son:
  • Protocolo de control de trasmisión (TCP)
  • Protocolo Internet (IP)
TCP/IP usa el modelo de comunicación cliente/servidor, en el cual un usuario (cliente) solicita un servicio que será proporcionado por otro computador (servidor) en la red, esta comunicación TCP/IP es principalmente punto-a-punto, donde un host en la red se comunica con otro host.
El conjunto TCP/IP como muchos otros grupos de protocolos, esta conformado por capas. Cada capa se encarga de solventar los problemas inherentes a la transmisión de datos, proporcionando un servicio bien definido para los protocolos de capa superior que se basan en servicios de alguna capa inferior.
El modelo TCP/IP consiste en cuatro capas. A continuacion se muestran las capa de TCP/IP y los protocolos que operan en cada una de estas capas:
  • Capa de Aplicación: DHCP, DNS, FTP, GTP, HTTP, IMAP, IRC, NTP, POP, RIP, RPC, RTP, RTSP, SDP, SIP, SMTP, SNMP, SOAP, SSH, Telnet, TLS/SSL, XMPP
  • Capa de Transporte: TCP, UDP, DCCP, SCTP, RSVP, ECN, IL, RUDP
  • Capa de Internet: IP (IPv4, IPv6), ICMP, ICMPv6, IGMP, IPsec
  • Capa de Enlace: ARP, RARP, NDP, OSPF, Tunnels (L2TP), PPP, Media Access Control (Ethernet, DSL, ISDN, FDDI)
3.1.1 Ventajas y Desventajas

Ventajas
Está diseñado para enrutar y tiene un grado muy elevado de fiabilidad, además es compatible con las herramientas estándar para analizar el funcionamiento de la red.

Desventajas
Es que es más difícil de configurar y de mantener que NetBEUI o IPX/SPX; además es algo más lento en redes con un volumen de tráfico medio bajo. Sin embargo, puede ser más rápido en redes con un volumen de tráfico grande donde haya que enrutar un gran número de tramas.

3.2 Protocolo TCP

TCP (Protocolo de Control de Transmisión) como ya se dijo es uno de los principales protocolos de la capa de transporte del modelo TCP/IP. Este protocolo esta orientado a conexión, es decir, permite que dos máquinas que están comunicadas controlen la transmisión de los datos.

Las principales características del protocolo TCP son las siguientes:
  • Coloca los datagramas nuevamente en orden cuando vienen del protocolo IP.
  • Monitorea y controla el flujo de los datos y evitando congestionamiento en la red.
  • Los datos se segmentan en longitudes variables para "entregarlos" al protocolo IP.
  • Multiplexa/Demultiplexa los datos, es decir, trasmite los datos que viene de diferentes aplicaciones en la misma línea.
  • Comienza y finaliza la comunicación amablemente.
3.2.1 Cabecera

Un segmento TCP está formado de la siguiente manera:

  • Puerto de origen (16 bits): Puerto relacionado con la aplicación en curso en la máquina origen
  • Puerto de destino (16 bits): Puerto relacionado con la aplicación en curso en la máquina destino
  • Número de secuencia (32 bits): Cuando el indicador SYN está fijado en 0, el número de secuencia es el numero del segmento actual. Cuando SYN está fijado en 1, el número de secuencia es igual un número de secuencia inicial utilizado para sincronizar y establecer la comunicación entre las dos maquinas.
  • Número de acuse de recibo (ACK)(32 bits): El número de acuse de recibo se relaciona con el número (secuencia) del último segmento esperado y no el número del último segmento recibido.
  • Posición de Datos (4 bits): Especifica el tamaño de la cabecera TCP en palabras de 4 Bytes. El tamaño mínimo es 5 palabras y el máximo es 15, porlo tanto el tamaño mìnimo de la cabecera son 20 Bytes y el máximo 60 Bytes, permitiendo 40 Bytes para opciones en la cabecera. Este campo tambien permite ubicar el inicio de los datos en el paquete. Aquí, el margen es fundamental porque el campo opción es de tamaño variable.
  • Reservado (6 bits): Un campo que actualmente no está en uso pero se proporciona para el uso futuro.
  • Banderas (6x1 bit): Los indicadores representan información adicional:
  1. URG: Si este indicador está fijado en 1, el paquete se debe procesar en forma urgente.
  2. ACK: Si este indicador está fijado en 1, el paquete es un acuse de recibo.
  3. PSH (PUSH): Si este indicador está fijado en 1, el paquete opera de acuerdo con el método PUSH.
  4. RST: Si este indicador está fijado en 1, se restablece la conexión.
  5. SYN: El indicador SYN de TCP indica un pedido para establecer una conexión.
  6. FIN: Si este indicador está fijado en 1, se interrumpe la conexión.
  • Ventana (16 bits): Este campo permite saber la cantidad de bytes que el receptor desea recibir sin ACK.
  • Suma de Control : Permite realizar una verificación de los datos y de la cabecera.
  • Puntero urgente (16 bits): Indica el número de secuencia después del cual la información se torna urgente.
  • Opciones (tamaño variable): Diversas opciones y su tamaño se especifica en el campo de Posición de Datos
  • Relleno: Espacio restante después de que las opciones se rellenan con ceros para tener una longitud que sea múltiplo de 4 Bytes.

3.2.2 Operación del Protocolo

El protocolo TCP opera en tres fases. Primero se debe establecer correctamente la conexión mediante un proceso de handshake multiple antes de entrar en la fase de transferencia de datos. Luego que la transmisión concluyó, se debe terminar la conexión, cerrando los circuitos virtuales establecidos y liberar todos los recursos almacenados.

Durante el tiempo de vida de una conexión TCP sufre los siguientes cambios:
  1. ESCUCHAR: En caso de un servidor, espera por la solicitud de algun cliente remoto.
  2. ENVIADO-SYN: Espera por el cliente remoto para enviar devuelta un segmento TCP con las banderas SYN y ACK fijadas en 1.
  3. RECIBIDO-SYN: Espera por el cliente remoto para enviar devuelta un ACK despues de haber enviado de vuelta un ACK al cliente remoto por la sincronización.
  4. ESTABLECIDO: el puerto esta listo para enviar y recibir datos desde y al cliente remoto.
  5. FIN-ESPERA-1
  6. FIN-ESPERA-2
  7. CERRAR-ESPERAR
  8. CERRANDO
  9. ULTIMO-ACK
  10. TIEMPO-ESPERA: representa un tiempo suficiente para asegurar que el cliente remoto recibió el ACK de la solicitud para finalizar la conexión. Segun RFC 793 se puede esperar hasta un máximo de 4 minutos.
  11. CERRADO
3.2.2.1 Establecimiento de Conexión

La conexión establecida entre las dos aplicaciones a menudo se realiza siguiendo el siguiente esquema:
  • Los puertos TCP deben estar abiertos.
  • La aplicación en el servidor es pasiva, es decir, que la aplicación escucha y espera una conexión.
  • La aplicación del cliente realiza un pedido de conexión al servidor en el lugar donde la aplicación es abierta pasiva. La aplicación del cliente se considera "abierta activa".
Para establecer la conexión TCP usa un handshake de tres pasos, estos son:
  1. El cliente remoto envia SYN al servidor. Este fija el número de secuencia del segmento en un valor aleatorio A.
  2. En respuesta, el servidor responde con un SYN-ACK. El número de acuse se fija es una unidad mayor al numero de secuencia recibido (A+1) y el servidor fija un valor aleatorio B para el número secuencia del segmento.
  3. Finalmente, el cliente envia un ACK de regreso a el servidor. El número de secuencia se fija con el valor del ACK recibido (A+1) y el número de acuse se fija en una unidad mayor al número de secuencia recibido (B+1)
3.2.2.2 Transferencia de Datos

A continuación se muestran las características claves que fijan a TCP, las cuales son:
  • Transferencia de datos ordenada - el host destino reacomoda los segmentos recibidos mediante el número de secuencia. Ésto es posible ya que TCP usa un número de secuencia para identificar cada Byte de datos, este numero permite identificar el orden de los Bytes enviados por un host, así la data puede ser reconstruida en orden, sin fragmentación, debido a la pérdida de algun paquete.
  • Retransmisión de paquetes perdidos - Cualquier paquete sin ACK volverá a transmitirse.
  • Descarte de paquetes duplicados
  • Transferencia libre de error - Debido a la suma de control, la cual captura errores simples.
  • Control de Flujo - Limita la rata de transferencia acorde a la capacidad del receptor para garantizar una fidelidad en la entrega. Cuando el host receptor se le llena el buffer, el proximo acuse (ACK) contiene un 0 en el tamaño de la ventana, para detener la transferencia y permitir que la data en el buffer sea procesada.
  • Control en la congestión - TCP utiliza un diferentes mecanismos de alto rendimiento que evitan un colapso en la congestión. Uno de estos mecanismos consiste en monitorear los ACK que permiten inferir las condiciones de la red entre el host transmisor y el host receptor. También existen otras implementaciones modernas, pero la más común es haciendo uso de la ventana corrediza.
3.2.2.1 Ventana Corrediza

Limitar la cantidad de ACK permite aliviar el tráfico en la red. Esto se logra fijando un número de secuencia después del cual se requiera un acuse de recibo. Este número en realidad se guarda en el campo ventana del encabezado TCP/IP. Esto permite definir una serie de secuencias (ventana) que no necesitan ACK y que se desplaza a medida que se reciben los ACK.

El tamaño de esta ventana no es fija, ya que en la cabecera TCP se puede modificar su tamaño en el campo Ventana. De este modo, cuando el ACK indica un aumento en la ventana, el cliente remoto desplazará al borde derecho de la ventana. Por el contrario, si hay mucha congestión, se enviará una petición de reducción, por lo que el cliente no esperará a que avance el borde izquierdo (al llegar los ACK).

Para un lograr un alto throughput, es importante que el transmisor no detenga al enviar de la ventana en un tiempo menor al tiempo ida y vuelta (RTT). El límite en la cantidad de datos que se pueden enviar antes de parar y esperar por un un ACK no debe ser más grande que el producto del ancho de banda con el retardo (RTT) en el enlace de comunicación. Si no es así, el protocolo se limitará al ancho de banda efectivo del enlace.

3.2.3 Opciones en los criterios de implementación de TCP

TCP deja cierta libertad para utilizar una serie de implementaciones:
  • Criterio de envío: sí no hay indicaciones forzosas de algún criterio de envío por parte del host (urgencia u otras), TCP puede segmentar como mejor le parezca, dependerá de las consideraciones del rendimiento.
  • Criterio de entrega: el TCP del receptor puede hacer lo mismo que el emisor, entregar los segmentos según le convenga al propio TCP, siguiendo criterios de rendimiento (en caso de que no haya urgencia).
  • Criterio de aceptación: TCP puede tomar dos caminos en caso de que lleguen segmentos desordenados, o bien deshecha los que lleguen en desorden o bien deshecha los que lleguen en desorden fuera de una ventana señalada. La primera opción es la más sencilla pero obliga a la capa de red a mucho trabajo de retransmisión, la otra opción es más compleja de utilizar pero descarga a la capa de red de mucho trabajo.
  • Criterio de retransmisión: TCP puede seguir varios caminos para la retransmisión en caso de expiración del temporizador y no aceptación de los segmentos. Bien puede retransmitir toda la lista pendiente en caso de expirar el temporizador del primer segmento o bien puede usar un temporizador para cada segmento individual y sólo enviará el segmento cuyo temporizador caiga sin haber recibido confirmación. Todo depende del criterio de aceptación del receptor para ver qué método es mejor.
  • Criterio de confirmación: el receptor puede o bien confirmar segmento por segmento o bien aguardar un poco para confirmar un grupo de segmentos, pero para este segundo método debe de enviar la confirmación antes de que el temporizador del segmento más antiguo del grupo haya expirado. El primer método es más sencillo pero sobrecarga la red con tantas confirmaciones. El segundo método es más complejo (al tener que calcular el tiempo de espera antes de confirmar un grupo y otros cálculos añadidos) pero descongestiona la red.
3.3 Protocolo UDP

Es muy cierto que el grupo de protocolos TCP/IP lleva su nombre por el Protocolo Internet (IP) y el Protocolo de Control de Transporte (TCP), pero existen otros protocolos en este grupo. Otro de los protocolos usados en Internet para la capa de transporte es el Protocolo de Datagrama de Usuarios (UDP). Este protocolo ofrece servicio a las aplicaciones de red tales como: NFS, SNMP, DNS, DHCP, RIP, VoIP, Video Streaming o aplicaciones en tiempo real.
UDP es un servicio de entrega de datagramas no orientado a conexión, lo que no garantiza fidelidad, orden ni integridad de los datos. UDP no mantiene una conexión de extremo a extremo (como si es el caso de TCP) con el módulo UDP remoto; simplemente envía el datagrama a la red y acepta datagramas de entrada de la red. Por lo tanto, los datagramas pueden llegar en desorden, aparecer duplicados, o perderse.
UDP añade dos valores a los servicios provistos por IP. Uno de ellos es la multiplexación de la información entre aplicaciones basándose en el número de puerto. El otro es una suma de control para comprobar la integridad de la cabecera UDP.
Los servidores que trabajan con UDP tratan cada solicitud como transacciones independientes que no tienen relación con solicitudes anteriores, por lo tanto estos servidores pueden responder pequeñas solicitudes de un gran número de clientes, esto permite que UDP sea compatible con paquetes para broadcast y multicast.

3.3.1 Operación del Protocolo

La comunicación entre una aplicación y UDP se hace a través de los puertos UDP. Estos puertos están numerados, empezando por cero. El servidor espera pacientemente por un puerto a cualquier cliente que demande un servicio. Cuando el servidor envía datos a través de UDP llegan al destino remoto como una unidad simple (datagrama), por lo que cada datagrama se considera independiente y otra solicitud q realice el mismo cliente generará un nuevo datagrama sin relación con el anterior. UDP conserva los límite del mensaje y nunca une dos mensajes de aplicación o divide un mensaje de aplicación en dos partes.
UDP recibe el datagrama desde IP y examina la suma de control UDP. Si esta suma es cero, significa que no fue calculada por la aplicación y puede ser ignorada. De este modo, el módulo UDP del servidor puede o no generar sumas de control. Si la red entre dos módulos UDP es sólo Ethernet, puede que no sea necesario hacer esta suma. En cualquier caso, es recomendable habilitar siempre su generación ya que en algún momento futuro un cambio en la tabla de enrutamiento pude hacer que los datos pueden ser enviados a través de un medio menos confiable.
Si la suma de comprobación es válida (o cero) el número de puerto destinatario se examina y si la aplicación está limitada a este puerto, un mensaje de aplicación se pone en el buffer para ser leído por la aplicación. De otro modo, el datagrama UDP se descarta. Si el datagrama UDP entrante llega más rápido de lo que la aplicación pueda leerlo y si el buffer está lleno al máximo, el datagrama UDP es descartado por UDP. UDP continuará descartando datagramas hasta que haya espacio en el buffer.

3.3.2 Puertos

Las aplicaciones UDP usan ranuras para establecer la comunicación host a host. Las ranuras enlazan las aplicaciones a los puertos de servicio, que funciona como un punto final de la transmision de datos. El puerto es una estructura logica que viene identificada con un número entero de 16 bits, permitiendo puertos desde 0 hasta 65535.
  • El puerto 0 está reservado
  • Los puertos desde el 1 hastas 1023 se conocen como "well-known" y en sistemas UNIX se necesitan permisos del root.
  • Los puertos desde el 1024 hasta 49151 son puertos registrados.
  • Los puertos desde el 49152 hasta 65535 son usador por clientes como puertos temporales para comunicarse con servidores.
3.3.3 Cabecera

Un datagrama UDP esta formado de la siguiente manera:

  • Puerto de Origen (16 bits): Puerto que enlaza la aplicación con la máquina origen
  • Puerto de Destino (16 bits): Puerto que enlaza la aplicación con la máquina destino (campo obligatorio)
  • Longitud (16 bits): Determina la longitud completa en bytes del datagrama (cabecera más datos). La longitud mínima son 8 Bytes, que es la longitud de la cabecera. La longitud máxima teórica del datagrama son 65535 Bytes pero ésto queda limitado a 65507 Bytes si se usa IPv4 (campo obligatorio)
  • Suma de Control (16 bits): Permite realizar una verificación de la cabecera del datagrama UDP.
3.3.4 Comparación entre UDP y TCP

TCP
  • Fidelidad: TCP maneja mensajes de acuse (ACK), retransmisiones y tiempo muerto.
  • Ordenamiento: Cuando los segmentos de datos llegan desordenados, TCP limpia el buffer hasta que los datos lleguen en orden y sean entregados a la aplicación.
  • Desventaja: TCP requiere tres paquetes para establecer una ranura de conexión antes de que los datos se puedan transmitir.
  • Flujo de Datos: los datos son leídos como un flujo de byte, no se transmite ningunos limites de distinción de datos.
UDP
  • Este protocolo no garantiza fidelidad ni orden en los datos.
  • Desventaja: No hay ordenamiento de datos, ni seguimientos en la conexión
  • Flujo de Datos: Los paquetes se envían individualmente y sólo se chequea su integridad si llegan. Los paquetes tiene limites definidos, lo que significa que una operación de lectura en la ranura de recepción dará paso al mensaje completo enviado originalmente.
3.4 Protocolo Internet (IP)

El Protocolo Internet (IP) es el núcleo del del grupo TCP/IP y es el principal protocolo en la capa de red. Recordamos que la capa de red se encarga principalmente de la entrega de datos, pero no entre dispositivos de la misma red fisica sino entre dispositivos que pueden estar en diferentes redes que se interconectan de manera arbitraria. Por lo tanto, IP se encarga de la entrega de datagramas IP (paquetes) de un host a otro basandose solamente en su dirección, aunque no garantiza su entrega. Para lograr esta tarea, se definen métodos de direccionamiento y estructuras para encapsular los datagramas.

3.4.1 Principales Características

  • Direccionamiento Universal: Para enviar datos de un punto A a un punto B, es necesario asegurar que los dipositivos saben como identificar cual dispositivo es el "punto B". IP define mecanismos de direccionamiento para la red y usa estas direcciones para entregar los paquetes.
  • Independiente de protocolos de capas inferiores: IP esta diseñado para permitir la transmisión de datos a traves de cualquier tipo de subcapa de la red que se diseñó para trabajar con el grupo TCP/IP. Esto incluye provisiones que le permitan adaptarse a los requerimientos de protocolos de capa inferior tales como Ethernet o IEEE 802.11. IP también puede correr sobre los protocolos especiales de la capa de enlace como SLIP y PPP. Un ejemplo de ésto es la habilidad de IP para fragmentar grandes bloques en datos más pequeños para ajustar su tamaño al de la red física y luego tener un destinatario que reemsable las piezas otra vez.
  • Entrega sin Conexión: IP es un protocolo sin conexión. Esto significa que cuando un host quiere enviar datos a otro, no se establece una conexión entre ellos para transmitir los datos - los paquetes se hacen y se envian hacia el otro host.
  • Entrega sin fidelidad: Se dice que IP es un protocolo sin fidelidad. Esto significa que cuando los datagramas (paquetes) se envian de un host a otro, solo se envia cada paquete sin mantener un seguimiento de cada paquete enviado. Por lo tanto, IP no proporciona fidelidad o Servicio de Calidad (QoS) tal como una protección de error para los datos que se envían, control de flujo o retransmisión de los paquetes perdidos. Por esta razón se dice que IP hace "el mejor esfuerzo", es decir, IP puede guiar los paquetes al destino pero no hay garantías de que los datos realmente lleguen.
  • Entrega sin Acuse: IP no usa recibos de acuse (ACK) para confirmar la recepción de los paquetes.
3.4.2 Funciones de IP
  • Direccionamiento: Para ejecutar la tarea de entrega de paquetes, IP debe conocer donde entregarlos. Por esta razón, IP incluye un mecanismo de direccionamiento para el direccionamiento de host. Ademas, puesto que IP opera sobre la Internet, su sistema se diseñó para permitir una dirección unica para cada dispositivo en la red. También se tienen protocolos (IGP y EGP) que facilitan el enrutamiento de los paquetes a redes distantes.
  • Encapsulamiento: IP acepta los datos de los protocolos UDP y TCP de la capa de transporte y se encapsulan en datagramas/paquetes usando un formato especial antes de transmitirlos. No se necesita establecer una conexión antes de que el host envie los paquetes hacia otro host que previamente no existía una comunicación.
  • Fragmentación y Reensamblaje: Los paquetes se pasan la la capa de enlace de datos para la transmisión sobre la red local. Sin embargo, el tamaño máximo de trama de cada red fisica que usa IP puede ser diferente. Por esta razón, IP tiene la habilidad de fragmentar los paquetes en piezas más pequeñas por lo que pueden ser transportadas por la red local. Los dispositivos receptores usan la función de reensamblaje para recrear completamente el paquete otra vez.
  • Entrega Enrutada/Indirecta: Cuando los paquetes se deben enviar a un destinatario de la misma red local, se utilizan los protocolos de capas inferiores. Sin embargo, en muchos casos el destinatario final se encuentra en una red distante que no se encuentra directamente conectada con la fuente. En este caso, el paquete se entrega de manera indirecta, esto se logra enrutando los paquetes a través de dispositivos intermediarios (routers). IP logra esto en conjunto a otros protocolos que incluye: ICMP y protocolos de enrutamiento como RIP y BGP.
3.4.3 IP version 4 (IPv4)

Es la cuarta version del protocolo Internet pero es la primera es utilizarse ampliamente. IPv4 es un protocolo sin conexión para redes de conmutacion de paquetes en la capa de enlace (ej. Ethernet)

3.4.3.1 Direccionamiento

IPv4 usa 32 bits para direccionar, lo cual limita el espacio de direcciones a 4.294.967.296 direcciones posibles únicas. Sin embargo, hay reservadas para propositos especiales tales como redes privadas (~18 millones de direcciones) o direcciones multicast (~ 270 millones de direcciones). Esto reduce el número de direcciones que pueden potencialmente alojarse para enrutar sobre el Internet público.

3.4.3.2 Cabecera

La cabecera de los paquetes IPv4 consiste de 13 campos, de los cuales 12 son obligatorios.

  • Versión (4 bits): Es el número de la version IP, en este caso tiene valor 4.
  • Longitud de la cabecera de Internet (IHL) (4 bits): se indica el tamaño de la cabecera en palabras de 4 Bytes. Como la cabecera tiene una cantidad de opciones, su tamaño puede ser variable. El valor mínimo es 5 (20 Bytes) y el valor máximo es 15 (60 Bytes).
  • Tipo de servicio (8 bits): Le permite al host indicar a la subred el tipo de servicio que desea. Es posible tener varias combinaciones con respecto a la seguridad y la velocidad. Para voz digitalizada, por ejemplo, es más importante la entrega rápida que corregir errores de transmisión. En tanto que, para la transferencia de archivos, resulta más importante tener la transmisión fiable que entrega rápida. También, es posible tener algunas otras combinaciones, desde un tráfico rutinario, hasta una anulación instantánea
  • Longitud Total (16 bits): Define el tamaño completo del datagrama (paquete) incluyendo la cabecera y los datos. La longitud mínima son 20 Bytes y el máximo son 64KB.
  • Identificación (16 bits): Permite que el host destinatario determine a qué datagrama pertenece el fragmento recién llegado. Todos los fragmentos de un datagrama contienen el mismo valor de identificación.
  • Banderas (3 bits): Hay 3 campos de 1 bit cada uno usados para controlar e identificar los fragmentos.
  1. Reservado: debe ser cero.
  2. Sin Fragmentar (DF): Esta es una orden para que las pasarelas no fragmenten el datagrama, porque el extremo destinatario es incapaz de poner las partes juntas nuevamente.
  3. Mas Fragmentos (MF): Todos los fragmentos, con excepción del último, deberán tener ese bit puesto. Se utiliza como una verificación doble contra el campo de Longitud total, con objeto de tener seguridad de que no faltan fragmentos y que el datagrama entero se reensamble por completo.
  • Desplazamiento de fragmento: indica el lugar del paquete actual al cual pertenece este fragmento. En un datagrama, todos los fragmentos, con excepción del último, deberán ser un múltiplo de 8 Bytes, que es la unidad elemental de fragmentación. Dado que se proporcionan 13 bits, hay un máximo de 8192 fragmentos por datagrama, dando así una longitud máxima de datagrama de 64 KB, que coinciden con el campo Longitud total.
  • Tiempo de Vida (8 bits): Ayuda a prevenir que los datagramas queden circulando en el Internet. Este campo limita el tiempo de vida del datagrama. Se especifica en segundos, los intervalos de tiempos menores a 1 segundo se redondean a 1. Cada paquete conmutado o enrutado decrementa el TTL en uno. Cuando el campo llega a cero, el paquete no sigue avanzando y se descarta.
  • Protocolo (8 bits): El número utilizado en este campo indica a qué protocolo pertenece el datagrama que se encuentra a continuación de la cabecera IP, de manera que pueda ser tratado correctamente cuando llegue a su destino.
  • Código de redundancia de la cabecera (16 bits): Este campo es necesario para verificar la integridad de la cabecera IP. Por razones de eficiencia este campo no puede utilizarse para comprobar los datos. Este campo debe calcularse de nuevo cuando cambia alguna opción de la cabecera, como puede ser el tiempo de vida.
  • Dirección de origen (32 bits): contiene la dirección del host que envía el paquete.
  • Dirección de destino (32 bits): Esta dirección es la del host que recibirá la información. Los routers o gateways intermedios deben conocerla para dirigir correctamente el paquete.
  • Opciones: Campo adicional para diversas opciones. Su tamaño se especifica en el campo de longitud total.
3.4.3.3 Fragmentación Y Reensamblaje de datagramas de IP

Como se ha visto, el tamaño máximo de un datagrama es de 64kB. Sin embargo, este valor nunca es alcanzado porque las redes no tienen suficiente capacidad para enviar paquetes tan grandes. Además, las redes en Internet utilizan diferentes tecnologías por lo tanto el tamaño máximo de un datagrama varía según el tipo de red.
El tamaño máximo de una trama se denomina MTU (Unidad de transmisión máxima). El datagrama se fragmentará si es más grande que la MTU de la red.Por ejemplo, El MTU de Arpanet es de 1000 Bytes, el de Ethernet es de 1500 bytes y el de FDDI es de 4470 bytes.
La fragmentación del datagrama se lleva a cabo a nivel de router, es decir, durante la transición de una red con una MTU grande a una red con una MTU más pequeña. Si el datagrama es demasiado grande para pasar por la red, el router lo fragmentará, es decir, lo dividirá en fragmentos más pequeños que la MTU de la red, de manera tal que el tamaño del fragmento sea un múltiplo de 8 bytes.
El router enviará estos fragmentos de manera independiente y los volverá a encapsular (agregar un encabezado a cada fragmento) para tener en cuenta el nuevo tamaño del fragmento. Además, el router agrega información para que el equipo receptor pueda rearmar los fragmentos en el orden correcto. Sin embargo, no hay nada que indique que los fragmentos llegarán en el orden correcto, ya que se enrutan de manera independiente.

3.4.4 IP version 6 (IPv6)

Esta nueva versión del protocolo IP recibe el nombre de IPv6, aunque es también se conoce como IPng (Internet Protocol Next Generation). Los cambios que se introducen en esta nueva versión son muchos y de gran importancia. IPv6 se ha diseñado para solucionar todos los problemas que surgen con IPv4. Además ofrece soporte a las nuevas redes de alto rendimiento (como ATM, Gigabit Ethernet, etc.).
Una de las características más llamativas es el nuevo sistema de direcciones, en el cual se pasa de los 32 a los 128 bit, eliminando todas las restricciones del sistema actual. Otro de los aspectos mejorados es la seguridad, que en IPv4 constituía uno de los mayores problemas. Además, el nuevo formato de la cabecera se ha organizado de una manera más efectiva, permitiendo que las opciones se sitúen en extensiones separadas de la cabecera principal.

3.4.4.1 Direccionamiento

Las direcciones de IPv6 poseen 128 bits de longitud, lo que proporciona 3.4×1038 direcciones únicas. Estas direcciones se escriben normalmente son digitos hexadecimales y dos puntos. Un ejemplo de dirección IPv6 sería 2001:db8:85a3::8a2e:370:7334. Las direcciones IPV6 generalmente se componen por dos partes logicas: una de 64 bits para el prefijo de la (sub-)red y la otra de 64 bits para la parte del host.

Las direcciones IPv6 se clasifican en tres tipos:
  • Direcciones Unicast: únicamente identifican las interfaces de red. Las direcciones unicast que se encuentran definidas actualmente están divididas en varios grupos. Dentro de este tipo de direcciones se encuentra también un formato especial que facilita la compatibilidad con las direcciones de la versión 4 del protocolo IP.
  • Direcciones Anycast: iIdentifican a un conjunto de interfaces de la red. El paquete se enviará a un interfaz cualquiera de las que forman parte del conjunto. Estas direcciones son en realidad direcciones unicast que se encuentran asignadas a varios interfaces, los cuales necesitan ser configurados de manera especial.
  • Direcciones Multicast: Este tipo de direcciones identifica a un conjunto de interfaces de la red, de manera que el paquete es enviado a cada una de ellos individualmente.
3.4.4.2 Cabecera

El tamaño de la cabecera que el protocolo IPv6 añade a los datos es de 40 Bytes, el doble que en la versión antigua. Sin embargo, esta nueva cabecera se ha simplificado con respecto a IPv4. Algunos campos se han retirado, mientras que otros se han convertido en opcionales por medio de las extensiones. De esta manera los routers no tienen que procesar parte de la información de la cabecera, lo que permite aumentar de rendimiento en la transmisión. El formato completo de la cabecera sin las extensiones es el siguiente:

  • Versión (4 bits): Número de versión del protocolo IP, que en este caso contendrá el valor 6
  • Prioridad (4 bits): Contiene el valor de la prioridad o importancia del paquete que se está enviando con respecto a otros paquetes provenientes de la misma fuente.
  • Etiqueta de flujo (24 bits): Campo que se utiliza para indicar que el paquete requiere un tratamiento especial por parte de los routers que lo soporten.
  • Longitud (16 bits): Es la longitud en bytes de los datos que se encuentran a continuación de la cabecera.
  • Siguiente cabecera (8 bits): Se utiliza para indicar el protocolo al que corresponde la cabecera que se sitúa a continuación de la actual. El valor de este campo es el mismo que el de protocolo en la versión 4 de IP.
  • Límite de existencia (8 bits): Tiene el mismo propósito que el campo de la versión 4, y es un valor que disminuye en una unidad cada vez que el paquete pasa por un nodo.
  • Dirección de origen (128 bits): El número de dirección del host que envía el paquete. Su longitud es cuatro veces mayor que en la versión 4.
  • Dirección de destino (128 bits): Número de dirección de destino, aunque puede no coincidir con la dirección del host final en algunos casos. Su longitud es cuatro veces mayor que en la versión 4 del protocolo IP.
3.5 El protocolo de mensajes de error de Internet (ICMP)

Este protocolo es utilizado para enviar mensajes en caso de error. Por ejemplo, cuando un datagrama no puede llegar a su destino, cuando llega con error, cuando el dispositivo de encaminamiento no tiene espacio de almacenamiento suficiente, etc. ICMP, aunque está en el mismo nivel que IP, le pasa sus mensajes a IP para encapsularlos y enviarlos a su destino (en forma de datagrama, por lo que no se asegura que llegue a su destino). Los datagramas suministrados por ICMP contienen su cabecera y parte de los datos del datagrama erróneo para que el IP que los reciba sepa qué protocolos había implicados en el error.
Los casos de error más habituales son que no se encuentre el destino, que se haga necesaria la segmentación pero esté prohibida por el propio datagrama, que haya pasado el tiempo permitido para el envío, que el destinatario no pueda procesar aún el datagrama porque esté sobrecargado de trabajo (el emisor debe de disminuir la velocidad de envío cuando reciba el mensaje de error), etc.
Además de los mensajes de error, son posibles mensajes de control para por ejemplo establecer una conexión, para saber si es posible una conexión con una determinada dirección (el mensaje llega al destinatario y es devuelto con una confirmación o denegación de posibilidad de conexión), para comprobar el tiempo de propagación de datos a través de un camino, etc.

Los principales tipos de mensaje ICMP son los siguientes:

  • Mensajes informativos: Entre estos mensajes hay algunos de suma importancia, como los mensajes de petición de ECO (tipo 8) y los de respuesta de Eco (tipo 0). Las peticiones y respuestas de eco se usan en redes para comprobar si existe una comunicación entre dos host a nivel de capa de red, por lo que nos pueden servir para identificar fallos en este nivel, ya que verifican si las capas física (cableado), de enlace de datos (tarjeta de red) y red (configuración IP) se encuentran en buen estado y configuración.
  • Mensajes de error: En el caso de obtener un mensaje ICMP de destino inalcanzable, con campo "tipo" de valor 3, el error concreto que se ha producido vendrá dado por el valor del campo "código", pudiendo presentar los siguientes valores que se muestran en la parte derecha. Este tipo de mensajes se generan cuando el tiempo de vida del datagrama a llegado a cero mientras se encontraba en tránsito hacia el host destino (código=0), o porque, habiendo llegado al destino, el tiempo de reensamblado de los diferentes fragmentos expira antes de que lleguen todos los necesarios (código=1). Los mensajes ICMP de tipo= 12 (problemas de parámetros) se originan por ejemplo cuando existe información inconsistente en alguno de los campos del datagrama, que hace que sea imposible procesar el mismo correctamente, cuando se envían datagramas de tamaño incorrecto o cuando falta algún campo obligatorio. Por su parte, los mensajes de tipo=5 (mensajes de redirección) se suelen enviar cuando, existiendo dos o más routers diferentes en la misma red, el paquete se envía al router equivocado. En este caso, el router receptor devuelve el datagrama al host origen junto con un mensaje ICMP de redirección, lo que hará que éste actualice su tabla de enrutamiento y envíe el paquete al siguiente router.
3.6 Direccionamiento IP

3.6.1 Direccionamiento Classful

A continuación se explica brevemente las cinco clases en este sistema de direccionamiento
  • Clase A: Son las que en su primer byte tienen un valor comprendido entre 1 y 126, incluyendo ambos valores. Estas direcciones utilizan únicamente este primer byte para identificar la red, quedando los otros tres bytes disponibles para cada uno de los hosts que pertenezcan a esta misma red. Esto significa que podrán existir más de dieciséis millones de ordenadores en cada una de las redes de esta clase. Este tipo de direcciones es usado por redes muy extensas, pero hay que tener en cuenta que sólo puede haber 126 redes de este tamaño. ARPAnet es una de ellas, existiendo además algunas grandes redes comerciales, aunque son pocas las organizaciones que obtienen una dirección de "clase A". Lo normal para las grandes organizaciones es que utilicen una o varias redes de "clase B".
  • Clase B: Estas direcciones utilizan en su primer byte un valor comprendido entre 128 y 191, incluyendo ambos. En este caso el identificador de la red se obtiene de los dos primeros bytes de la dirección, teniendo que ser un valor entre 128.1 y 191.254 (no es posible utilizar los valores 0 y 255 por tener un significado especial). Los dos últimos bytes de la dirección constituyen el identificador del host permitiendo, por consiguiente, un número máximo de 64516 ordenadores en la misma red. Este tipo de direcciones tendría que ser suficiente para la gran mayoría de las organizaciones grandes. En caso de que el número de ordenadores que se necesita conectar fuese mayor, sería posible obtener más de una dirección de "clase B", evitando de esta forma el uso de una de "clase A".
  • Clase C: En este caso el valor del primer byte tendrá que estar comprendido entre 192 y 223, incluyendo ambos valores. Este tercer tipo de direcciones utiliza los tres primeros bytes para el número de la red, con un rango desde 192.1.1 hasta 223.254.254. De esta manera queda libre un byte para el host, lo que permite que se conecten un máximo de 254 ordenadores en cada red. Estas direcciones permiten un menor número de host que las anteriores, aunque son las más numerosas pudiendo existir un gran número redes de este tipo (más de dos millones).
  • Clase D: IP multicasting.
  • Clase E: Reservado para usos experimentales.
3.6.2 Direccionamiento Subnetting

El esquema de direccionamiento Classful dividia conceptalmente un gran número de interredes en una jerarquia simple de 2 niveles: muchas redes de diferentes tamaños, cada una con un numero de host. Este tipo de sistemas funcionaba bien en organizaciones pequeñas, donde podían conectar sus computadoras en una sola red. Sin embargo, esto no funcionaba para grandes organizaciones que generalmente tienen muchas subredes.
Lo que se hace en el esquema de subredes es que se agrega un nivel adicional a la jerarquía usada en Classful, en este caso, la dirección IP se divide en tres elementos. Esto se logra dejando intacto el ID de la red y dividiendo el ID del host en ID de la subred y el ID del host. El ID de la subred se usa para identificar a cada subred de la red. Por lo tanto, estamos "robando" bits del ID del host para usarlos en el ID de la subred. Una red Clase A tiene 24 bits para dividirse entre el ID de la subred y el ID del host; una red clase B tiene 16 bits y una red clase C tiene solo 8 bits.
El numero de subredes se determina generalmente basandose en el número de subredes físicas sobre la red de la organización. El número de host por subred no debe exceder el máximo permitido por la subred particular que elegimos.
En un ambiente de subredes, se necesita una información adicional para indicar que bits forman parte del ID de la subred y cuales de ellos forman parte del ID del host. Esta información viene dada por un número de 32 bits llamado máscara de subred. Al ser un número binario, tendrá bits con valores UNO y valores CERO. Lo que hace la máscara es un filtrado de la dirección IP, esto significa que los bits de la máscara con valor 1 preservarán esa parte de la dirección IP sin cambios, en cambio los bits con valor 0 en la mascara dejaran los bits de la dirección IP en 0. Por ejemplo si se tiene la dirección IP 154.71.150.42 y una mascara de subred 255.255.248.0 se obtiene como resultado del enmascaramiento AND 154.71.144.0 la cual corresponde con la dirección de la subred. Con la mascara aplicada tenemos 11 bits en la ID del host con lo q podriamos tener 2^11-2 = 2046 host. Se eliminan 2 direcciones ya que una de ellas es la que identifica a la subred y la otra dirección se utiliza para broadcast (cuando los 11 bits tienen valor 1).
Como vimos anteriormente, podemos especificar la IP de la subred con la direccion IP 154.71.150.42 con la mascara de subred 255.255.248 o se puede decir 154.71.150.42/21, esto es llamado notacion slash o notacion CIDR, en el cual se indica el numero de bit en "1" que tiene la mascara de subred.
3.6.2.1 Ventajas
  • Mejor ajuste en las estructuras de las redes fisicas
  • El numero de subredes y el numero de host por subred pueden especializarse para cada organización
  • La división interna de la red en subredes sólo es visible en la organización, para el resto del Internet la organización sigue siendo solo una gran red. Por lo tanto cambios en la estructura interna son invisibles fueras de la organización.
  • No es necesario la solicitud de nuevas direcciones IP
  • Solo los enrutadores internos a la organización necesitan preocuparse acerca del enrutamiento entre subredes.
3.6.3 Direccionamiento Supernetting

Una superred es una red IP que se forma por la combinación de dos o mas redes (o subredes) con un prefijo común de enrutamiento (CIDR). Este prefijo agrupa las redes consecutivas en un solo prefijo/máscara. La superred en la Internet sirve como estrategia preventiva para evitar una fragmentación topologica del espacio de las direcciones IP haciendo uso de una sistema jerárquico de almacenamiento que delega el control de los segmentos del espacio direcciones a un proveedor de servicios de red regional.


3.6.3.1 Encaminamiento Inter-Dominios sin Clases (CIDR)

Representa la última mejora en el modo como se interpretan las direcciones IP. Ésta permite una mayor flexibilidad al dividir rangos de direcciones IP en redes separadas, por lo tanto, se usan más eficientes las direcciones IPv4 y hay un mayor uso de la jerarquía de direcciones ('agregación de prefijos de red'), disminuyendo la sobrecarga de los enrutadores principales de Internet para realizar el encaminamiento.
CIDR reemplaza la sintaxis previa para nombrar direcciones IP, no hay clases de redes (Classful). Por lo que usa la técnica VLSM (Variable-Length Subnet Masking - Máscara de Subred de Longitud Variable), para hacer posible la asignación de prefijos de longitud arbitraria. Esta agregación de múltiples prefijos contiguos en superredes, reduce el número de entradas en las tablas de rutas globales.

3.6.3.1.1 Bloques CIDR

CIDR facilita el encaminamiento al permitir agrupar bloques de direcciones en una sola entrada de tabla de rutas. Estos grupos, llamados comúnmente Bloques CIDR, comparten una misma secuencia inicial de bits en la representación binaria de sus direcciones IP.
Los bloques CIDR IPv4 se identifican usando una sintaxis similar a la de las direcciones IPv4: cuatro números decimales separados por puntos, seguidos de una barra de división y un número de 0 a 32; A.B.C.D/N.
Los primeros cuatro números decimales se interpretan como una dirección IPv4, y el número tras la barra es la longitud de prefijo, contando desde la izquierda, y representa el número de bits comunes a todas las direcciones incluidas en el bloque CIDR.
Decimos que una dirección IP está incluida en un bloque CIDR, y que encaja con el prefijo CIDR, si los N bits iniciales de la dirección y el prefijo son iguales.

3.6.3.1.2 Agregación de Prefijos

La posibilidad de agregar prefijos de encaminamiento es lo que permite el supernetting. Por ejemplo, dieciséis redes /24 contíguas pueden ser agregadas y publicadas en los enrutadores de Internet como una sola ruta /20 (si los primeros 20 bits de sus respectivas redes coinciden). Dos redes /20 contiguas pueden ser agregadas en una /19, etc.
Esto permite una reducción significativa en el número de rutas que los enrutadores en Internet tienen que conocer (y una reducción de memoria, recursos, etc.) y previene una explosión de tablas de encaminamiento, que podría sobrecargar a los routers e impedir la expansión de Internet en el futuro.

sábado, 20 de febrero de 2010

Capítulo 2 La Capa Enlace de Datos

La segunda capa del modelo OSI, conocida como Capa de Enlace de Datos (o Dirección física).

Bien sea dentro de una LAN o una WAN, es ésta la capa que tiene por labor realizar la comunicación entre los osts, mediante la aplicación de ciertas directivas que indican la manera en que los datos deben entregarse cuando atraviesan la capa física (capa 1); organiza la forma en que se accesa al canal de comunicaciones y además se encarga de mantener el mismo libre de errores, detectándolos y corrigiéndolos de ser posible. Dichas directivas e indicaciones se realizan a través de los protocolos de la capa 2.

La capa de enlace de datos, se divide a su vez en 2 subcapas mencionadas anteriormente:

Subcapa control de acceso al medio (MAC): Es la subcapa que proporcionan direccionamiento (dirección MAC, dirección física del dispositivo) y mecanismos de control que definen a quién se le permite utilizar el canal: Quién transmite y quién no (y lo que hacen los demás durante una transmisión), mediante la utilización de protocolos de acceso múltiple como ALOHA, CSMA, Token Ring, etc.

Subcapa control de enlace lógico: Aquí residen las directivas de control de flujo (cantidad y tamaño de paquetes a enviar en determinado momento), y de errores (qué se hace en dado caso de presentarse alguno). Esta subcapa permanece igual para distintas tecnologías como Ethernet, Token Ring, WLAN, etc, actuando como intermediario para la coexistencia de distintos protocolos de red permitiendo ser transportados sobre el mismo medio. En pocas palabras, para que podamos pasar de una tecnología a otra de forma transparente (en términos del formato de los datos manejados).


Aloha y CSMA/CD

Si bien Aloha fué desarrollado antes, explicaremos inicialmente al protocolo CSMA por ser probablemente, el más familiar (además de haber sido abordado anteriormente).

La idea de CSMA (acceso múltiple con detección de portadora) es, sensar el canal para determinar si está siendo utilizado. De ser verdadero, el equipo en cuestión debe cancelar por un tiempo aleatorio su transmisión. De ser falso (es decir estar libre el medio) entonces se puede transmitir.

La diferencia fundamental entre ALOHA y CSMA, es que ALOHA no pregunta si el canal está libre inicialmente. Si debe transmitir lo hace, y si la transmisión es fallida, vuelve a transmitir transcurrido un tiempo aleatorio. Existen 2 tipos básicos de ALOHA: Pure ALOHA y Slotted ALOHA. En el primero, como ya se explicó, se envían datos cuando se tenga que enviarlo y si hay colisión se reintenta luego. Una modificación surge con Slotted, aquí se organiza el acceso mediante ranuras de tiempo discretas, y de necesitar transmitir, sólo es posible hacerlo durante el comienzo de una ranura de tiempo (no antes ni después, en tal caso debería solicitar accesar al canal en el siguiente slot), minimizando así las colisiones.

CSMA/CD (con detección de colisiones) es el método de acceso al medio que utiliza Ethernet y agrega lo siguiente a CSMA: Si durante una transmisión se detecta una colisión, se deja de transmitir la trama y se inunda el canal con una señal que avisa a los demás nodos (host, según el caso) que el medio está ocupado, retrasando aleatoriamente los deseos de cada uno de querer transmitir (reduciendo así la posibilidad de una nueva colisión). La forma en que se detectan las colisiones es dependiente del medio físico.

Otra variación es CSMA/CA (con evasión de colisiones), utilizado en el estándar IEEE 802.11 de redes inalámbricas, y a diferencia del método anterior, cuando alguien determina que el medio está libre, se envía un aviso a todos los demás para manifestar su deseo de transmitir; acto seguido, se espera un tiempo corto aleatorio y de seguir libre el canal, se transmite.

La utilización o eficiencia de ALOHA es de 18%(Pure) y 36%(Slotted). La causa de esto es por decirlo de un modo el egoísmo intrínseco de ALOHA, por no determinar en primera instancia si el medio está ocupado antes de transmitir, ocasionando que todos hagan sus instentos de transmisión desmedidamente, hasta que finalmente alguien transmita y ningún otro lo haga durante dos tiempos de trama (para el Pure y 1 para el Slotted). Cualitativamente se observa que CSMA (por las características descritas) supera estos porcentajes. Se discutirá más adelante.

IEEE 802.x

Los estándares IEEE 802.x son una familia de normas e imposiciones aplicadas para redes LAN y WAN. Sus servicios y protocolos recaen en las 2 primeras capas del modelo OSI. Agunos estándares populares son:
  • 802.3 - Ethernet
  • 802.4 - Token Bus
  • 802.11 - WLAN
  • 802.15.1 - Bluetooth
  • 802.16 - WiMAX
Particularmente estamos interesados por los momentos en el estándar 802.3.

Ethernet

La idea original de Ethernet nació del problema de permitir que dos o más host utilizaran el mismo medio y evitar que las señales interfirieran entre sí. El primer estándar de Ethernet fue publicado por un consorcio formado por Digital Equipment Company, Intel y Xerox (DIX).

En 1985, el comité de estándares para Redes Metropolitanas y Locales del Instituto de Ingenieros Eléctricos y Electrónicos (IEEE) publicó los estándares para las LAN.

El estándar para Ethernet es el 802.3. El IEEE quería asegurar que sus estándares fueran compatibles con el modelo OSI de la Organización Internacional de Estándares (ISO), por eso, el estándar IEEE 802.3 debía cubrir las necesidades de la Capa 1 y de las porciones inferiores de la Capa 2 del modelo OSI. Como resultado, ciertas pequeñas modificaciones al estándar original de Ethernet se efectuaron en el 802.3. Las diferencias entre los dos estándares fueron tan insignificantes que cualquier tarjeta de interfaz de la red de Ethernet (NIC) puede transmitir y recibir tanto tramas de Ethernet como de 802.3. Básicamente, Ethernet y IEEE 802.3 son un mismo estándar.

Al igual que para el resto de los estándares, Ethernet en la Capa 1 incluye las interfaces con los medios, señales, corrientes de bits que se transportan en los medios, componentes que transmiten la señal a los medios y las distintas topologías. La subcapa de enlace de datos contribuye significativamente a la compatibilidad de tecnología y comunicación con el computador. La subcapa MAC trata los componentes físicos que se utilizarán para comunicar la información.

Ethernet en la capa 2 está definida como una tecnología de topología de bus lógica (el flujo de información tiene lugar en un bus lineal) y en estrella o en estrella extendida física (cableada en forma de estrella).

Estándares de comunicación Ethernet

El Ethernet originalmente diseñado, es ahora conocido como Ethernet Experimental, y operaba a una velocidad de 2.94Mbit/s sobre cable coaxial. Diversas modificaciones han sido agregadas, lo que ha dado lugar a diferentes estándares de ethernet que indican entre otras cosas, sobre qué medio se implementa (cable coaxial, par trenzado o fibra óptica), longitudes y calidad del mismo, los equipos que se utilizan para interconectar la red y la velocidad a la que opera.

En la actualidad, las implementaciones de ethernet más comunes se realizan sobre par trenzado y entre éstas hay 3 grandes tipos:

  • Ethernet (Ethernet II propiamente en la actualidad, pero el término fué adoptado sin especificar más), que como se mencionó anteriormente es prácticamente 802.3, operando a 10 Mbit/s.
  • FastEthernet, opera a 100 Mbit/s.
  • Gigabit Ethernet, a 1000Mbit/s.

Cada uno de estos tipos tiene variaciones que dan lugar a sub-estándares, de acuerdo a la forma en cómo se implementan, por ejemplo el estándar 802.3z describe a Gigabit Ethernet sobre fibra óptica y el 802.3ab sobre par trenzado. Las redes 10 Gigabit Ethernet y 100 Gigabit Ethernet, son algunas otras que se están volviendo populares.

Todos los estándares son básicamente compatibles con el estándar original de Ethernet. Siempre que permanezca en redes de Ethernet, la trama no cambia. Por este motivo, se considera que Ethernet es muy escalable.

Trama Ethernet

Las tramas son las unidades de datos de protocolo (PDU) de la capa 2 del modelo OSI. A veces son referidas equivocadamente como paquetes, pero oficialmente sólo las unidades de datos de la capa 3 son paquetes. La capa 1 maneja bits, la capa 2 tramas, la capa 3, paquetes, la capa 4 segmentos y el resto de las capas simplemente "datos".

Se puede decir que existen 3 tipos de Trama Ethernet debido a algunas variaciones en el estándar 802.3: Ethernet II (DIX), 802.3 (LLC) y 802.3 (SNAP). Ethernet II es como se dijo anteriormente el formato que se maneja popularmente hoy en día en redes TCP/IP. Las otras dos se suelen manejar en protocolos AppleTalk y NetBios.

Tamano de la trama

La longitud mínima y máxima para Ethernet son respectivamente, 64 y 1518Bytes (aunque algunas implementaciones de GigabitEthernet soportan tramas mucho mayores).En la imagen se observa la estructura de las tramas en cada caso. En líneas generales, una trama difiere de la otra en las longitudes y funciones de los bloques, incluso en las longitudes de datos, pero en cada caso se cumple: 64B


  • Preámbulo: Es un bloque adicional de 7 bytes (IEEE 802.3, 8bytes para Ethernet II que incluyen el inicio de trama) cuyo único propósito es permitirle a los circuitos del receptor que se recuperen (de la lectura de la trama anterior) y se coloquen en el estado indicado para comenzar a recibir nuevamente.
  • Inicio de trama: Comprende 1 byte y su objetivo es marcar el inicio de la trama, la cual comienza precisamente al final de este bloque. Es por esto, que el preámbulo y el inicio de trama, no forman parte de la trama. El patrón de este bloque es la secuencia 10101011.
  • Salto entre tramas: Entre transmisiones, un transmisor debe esperar un período igual a 12 octetos (96bits, a 10Mbit/s equivale a 9.6useg para FastEthernet), que es el tiempo que aproximadamente le toma al receptor procesar la trama. este campo no transporta información alguna, solo "hace tiempo", y mientras el transmisor espera para enviar una nueva trama, el receptor puede que no vea el mismo tiempo sin procesar otra nueva trama ya que es posible que un repetidor reduzca este tiempo para las tramas que él regenera.
En la imagen se observa la estructura de la trama 802.3 tal como se envía.




Cada bloque o agrupación de octetos indica lo siguiente:

  • Dirección MAC destino: dirección de la interfaz física del destino, pudiendo ser de un sólo nodo (unicast), varios (multicast) o todos (broadcast). Cada dispositivo revisa este campo para saber si acepta o descarta la trama.
  • Dirección MAC origen: identifica al remitente de la trama.
  • Tipo: Indica el protocolo de red asociado con la trama, o indica la longitud del campo de datos (de acuerdo al patrón de bits).
  • Datos y Relleno: Este campo contiene la información recibida de la capa 3, su cabecera y la de la capa 4. Dado que los demás bloques tienen una longitud fija, en caso de que los datos no sean suficientes para generar la longitud mínima de trama (64bytes), se emplea el relleno para conseguirlo.
  • FCS (Secuencia de verificación de trama): contiene un valor de verificación de control de redundancia cíclica (CRC). Proporciona detección de errores en caso de que la trama se corrompa (ya sea por errores en la línea o colisiones). El receptor hace el cálculo con la trama y si no coincide con el de éste bloque, se descarta la trama.

Eficiencia

Definimos una eficiencia para la trama como la tasa de la cantidad de datos a la longitud de la trama. Para ethernet la eficiencia se encuentra entre 76.19% y 95.73% (Con la cantidad mínima de datos, 64bytes, se tiene una longitud de trama de 84bytes. Con la máxima de 1500, la trama tiene 1538bytes).

¿Y por qué un máximo de 1500bytes de datos?

Digamos que todo fué un compromiso de criterios para la época en que fué diseñada la trama. Una trama muy larga, haría que los tiempos de espera por los demas equipos (que quieren transmitir también) sean relativamente grandes. Esto por supuesto repercute en el retraso de transmisiones (delay en el medio). También debe considerarse que las tramas de mayor tamaño son más propensas a ser recibidas erróneamente. Por último y como una razón de peso, una trama más grande requiere de mayor memoria en la NIC, lo que requería mayores costos para la época de lo que se requeriría hoy.

Tramas Alteradas (Ilegales)

Todas las tramas que no cumplen con el formato esperado (descartando el hecho de que vengan erróneas) son descartadas por el receptor, y es trabajo de protocolos de capa superior como TCP/IP el notificar a la estación que la envió que la trama fué desechada. Estas tramas son:

  • Trama pequeña (runt): Cualquier trama con menos de 64 bytes se denomina pequeña o "runt". Esta trama puede ser el resultado de un colisión, habiendo quedado sólo fragmentos de trama. Si la capa de red desea enviar una trama menor de 64bytes, es decir menos de 46 bytes en datos, el protocolo MAC de la capa 2 agrega tantos ceros (0) como sea necesario para cumplir con el requisito mínimo. Esto se llama relleno con ceros (bloque de datos en la trama) o "null padding".
  • Trama Gigante (giant): Si excede los 1518 bytes, se denomina gigante. Se supone que los circuitos de control de jabber (lo que pudiera traducirse para efectos del contexto como longitud) en el transceptor (transmisor/receptor en la NIC) deben evitar que se produzca una trama así, sin embargo ella puede deberse a algunos errores en la capa física. De igual forma son descartadas.
  • Trama desalineada: Cualquier trama que no contenga un número entero de bytes, se descarta, por cuanto el receptor no tiene forma de saber cuáles bits faltan o cuáles están bien, ni tampoco cómo calcular la RCR.

Novedades

El estandard IEEE 802.1Q se desarrolló para agregar mayor control en el envío de tramas entre VLANS y agrega un conjunto de 4 bytes despues del bloque de dirección MAC de remitente. Este bloque sirve como etiqueta que identifica la VLAN donde tiene pertinencia.