DEPARTAMENTO DE CIENCIA Y TECNOLOGÍA UNIVERSIDAD NACIONAL DE QUILMES Roque Sáenz Peña 352 – (B1876BXD) Bernal – Buenos Aires – Argentina COMUNICACIÓN DE DATOS ETHERNET Ethernet es el nombre de la tecnología utilizada para la interconexión de computadoras en redes LAN. Por allá por mayo de 1973, el investigador Bob Metcalfe, quien trabajaba en Xerox Palo Alto Research (PARC) en California, Estados Unidos, escribió un memorandum que describía un sistema de interconexión de computadoras que él había inventado y que permitía el envío de datos entre éstas o hacia impresoras también conectadas en la red. Este sería uno de los tantos inventos de Xerox, además de la impresora láser. El memo de Metcalfe de 1973 describiendo la red Ethernet se basa en una idea aplicada hacia finales de 1960, principios de los ’70, llamada red Aloha. Esta red Aloha nació en la Universidad de Hawaii cuando Norman Abramson y sus colegas desarrollaron una red de radio para comunicarse entre varias de las islas de Hawaii. Este fue uno de los primeros experimentos para desarrollar mecanismos para compartir un canal de comunicación común entre varios usuarios, en este caso un canal de radio. La idea de Aloha es bastante sencilla: hay varios usuarios que comparten un canal de comunicación en común para comunicarse entre ellos. Cuando una estación desea enviar un mensaje a otra, simplemente lo envía “sin preguntar nada a nadie” y espera un mensaje de confirmación para saber que el mensaje llegó correctamente a destino. Como cada estación simplemente transmite cuando tiene algo para transmitir, puede ocurrir que dos o más estaciones intenten transmitir simultáneamente por lo que en tal caso los mensajes colisionarán y no llegarán a los destinos establecidos. En este caso no se recibirá ningún mensaje de confirmación. Por lo tanto, si luego de cierto tiempo la estación transmisora no recibe ningún mensaje de confirmación de la estación destinataria se asume que se produjo una colisión y que el mensaje transmitido no fue recibido por el destinatario. Luego de detectada la colisión, las estaciones involucradas esperan un tiempo aleatorio antes de volver a transmitir. Cuando hay muchas estaciones con intenciones de transmitir, el tráfico efectivo (llamado throughput en Inglés) en la red Aloha es bajo, ya que se producen muchas colisiones. Por otro lado, si hay pocas estaciones hay menos probabilidad de colisiones, pero el tráfico efectivo también es bajo puesto que hay pocas estaciones. Se demuestra que el valor de equilibrio entre estas dos situaciones produce un tráfico efectivo máximo de 18%. Esto significa que, por ejemplo, en un canal de 100.000 Kbps la máxima velocidad promedio de transferencia de datos será de 18.000 Kbps. Invención de Ethernet Metcalfe creyó que podía mejorar el sistema desarrollado por Abramson. Una de las cosas que hizo para lograrlo fue desarrollar un mecanismo para detectar la ocurrencia de una colisión (collision detect). Otra cosa que agregó fue un mecanismo para “escuchar el canal” antes de transmitir (carrier sense, o sensado de portadora) de modo que el acceso al canal sea más organizado que el Aloha. Este sistema también soportaba acceso de múltiples estaciones (múltiple access). Poniendo todas estas ideas juntas resulta que Ethernet es un sistema de Acceso Múltiple con Detección de Portadora y Detección de Colisión. Que en Inglés resulta Carrier Sense Múltiple Access with Collision Detection (CSMA/CD). Ethernet 1 A finales de 1972 Metcalf y sus amigos de Xerox en Palo Alto California pusieron en marcha el primer sistema experimental Ethernet, allí mismo en Xerox. La tasa de transmisión de datos era de 2,94 Mbps. La red experimental de Bob Metcalfe se llamó inicialmente Alto Aloha Network. En 1973 Metcalfe le cambió el nombre por Ethernet para que no se pensara que el sistema sólo funcionaba con las computadoras de Palo Alto y que tampoco era un sistema Aloha más. El nombre lo tomó de Éter que era el concepto que habían utilizado los físicos Michelson y Morley para describir el medio sobre el cual se propagaba la luz o las ondas electromagnéticas en general. Una manera de describir la idea de transportar bits a todas las estaciones que están conectadas a ese “medio”. En junio de 1976 Metcalfe presentó Ethernet por primera vez en la Conferencia Nacional de Computadoras de Estados Unidos. Ese mismo año Bob Metcalfe y David Boggs publicaron el paper titulado “Ethernet: Distributed Packet Switching for Local Computer Networks” (Ethernet: Conmutación Distribuida de Paquetes para Redes de Computadoras Locales). A finales de 1977 Robert Metcalfe, David Boggs, Charles Thacker y Butler Lampson recibieron la patente número 4.063.220 de Estados Unidos correspondiente a Ethernet, para un “Sistema de Comunicación de Datos Multipunto con Detección de Colisiones”. A mediados de 1978 se emitió una patente para repetidores Ethernet. Hasta aquí Xerox era el dueño del sistema Ethernet. Xerox se dio cuenta de que el sistema Ethernet debía convertirse en una norma para la industria en lugar de ser sólo un sistema para uso propio de Xerox. Para ello decidió formar una alianza con Digital Equipment Corporation (DEC) e Intel Corporation, dando como resultado el consorcio DIX, nombre formado por las iniciales de las tres compañías. El consorcio DIX se encargó de desarrollar la norma Ethernet de 10 Mbps, de cable coaxil grueso. Por ese entonces el sistema competidor era Wangnet. La norma original Ethernet de 10 Mbps de DIX se publicó en 1980, con el título The Ethernet, A Local Area Network: Data Link Layer and Physical Layer Specifications (Ethernet, una red de área local: especificaciones de capa de enlace de datos y de capa física). Es decir que esta norma especifica todo lo referente a la capa 1 (capa física) y capa 2 (enlace de datos) del modelo OSI. La norma Ethernet de 10 Mbps da todas las especificaciones de capa física (medio de comunicación, velocidad de transmisión, tipos de conectores, distancias máximas, etc.) y de capa de enlace de datos (tamaño de los paquetes, encabezados, CRC, acceso al medio, etc.) correspondientes a un sistema de interconexión de computadoras en redes LAN. Luego de que el estándar de DIX fuera publicado, la IEEE también quiso escribir su propia norma con la idea de establecer un sistema abierto. Consecuentemente, el sistema Ethernet de cable coaxil grueso fue normalizado dos veces: primero por DIX y luego por la IEEE. La norma de la IEEE fue desarrollada bajo la dirección del Comité de Normas para Redes Locales y Metropolitanas, que identifica sus normas con el número 802. El Comité 802 es el encargado de escribir las normas relacionadas a redes LAN. El comité IEEE 802 tomó el sistema descripto originalmente por DIX y lo usó como base para su norma. Ésta se publicó en 1985 bajo el título IEEE 802.3 Carrier Sense Multiple Access with Collision Detection (CSMA/CD) Access Method And Physical Layer Specification. El comité 802 de la IEEE evitó el uso de la palabra Ethernet en su norma para no crear intereses comerciales. En su lugar quedó el nombre 802.3 CSMA/CD o simplemente 802.3. Sin embargo, la mayoría de la gente usa el nombre Ethernet cuando se refiere a la norma 802.3. IEEE 802.3 es la norma oficial de Ethernet. Cada tanto suele aparecer alguna “nueva norma” relacionada a Ethernet escrita por algún consorcio económico dedicado al desarrollo de tecnología de redes. Sin embargo, si dicha norma no está especificada dentro de la 802.3 no se considera una norma oficial. 2 Ethernet El estándar original 802.3 hace referencia al Ethernet de 10 Mbps de cable grueso, es decir al que utiliza como medio de propagación el cable coaxil grueso. Posteriormente a dicha norma, la IEEE fue redactando nuevas versiones de la 802.3 que corresponden a otros medios de propagación como así también otras tasas de transmisión. En la tabla I se resumen las distintas versiones del estándar 802.3 y sus descripciones. Cuando la IEEE tomó como base el estándar original de DIX, le hizo algunos pocos cambios. La principal razón por la diferencia entre ambas normas se debe a que ambos grupos perseguían fines distintos. Las especificaciones de DIX fueron desarrolladas por las tres compañías asociadas y fueron pensadas para describir pura y exclusivamente el sistema Ethernet. Para ese entonces no existía un mercado abierto de LAN con diversos fabricantes. Año Norma IEEE 1985 802.3 Nombre 10 Mbps 50 Ω, cable coaxial de 10mm 1988 1990 1993 1995 10Base-5 (Thick Ethernet) 10Base-2 (Thin Ethernet) 10Base-T 10Base-F 100Base-T4 10 Mbps 100 Mbps 10 Mbps 100 Mbps 50 Ω, cable coaxial de 5 mm Cable UTP categoría 3, 100 Ω Dos fibras multimodo a 850 nm Cuatro pares cable UTP categoría 3, 100 Ω. 100Base-TX 100 Mbps Dos pares cable UTP categoría 5, 100 Ω 100Base-FX Full-Duplex Ethernet 100 Mbps 10 y 100 Mbps 100 Mbps Dos fibras multimodo a 1300 nm 802.3a 802.3i 802.3j 802.3u 1997 802.3x 1997 802.3y 1998 802.3ac 1998 802.3z 1999 802.3ab 2002 802.3ae Velocidad 100Base-T2 Virtual LANs (VLANs) 1000Base-SX 1000Base-LX/HX 1000Base-CX 1000Base-T 10 Gigabit Ethernet 1 Gbps 1 Gbps 1 Gbps 1 Gbps 10 Gbps Descripción Dos pares cable UTP categoría 3, 100 Ω Tramas extendidas hasta 1552 bytes para VLANs Fibra multimodo a 850 nm Fibra multimodo a 1300 nm Cable de cobre Cuatro pares UTP categoría 5, 100 Ω Fibras monomodo y multimodo, full duplex solamente. Tabla I. Principales normas 802.3 En cambio la IEEE fue desarrollando normas de manera tal de poder integrar el mercado mundial de normas de redes LAN y de esa manera establecer un único conjunto de normas internacionales que agrupe las diferentes tecnologías tanto actuales como las nuevas que vayan apareciendo. Las especificaciones tanto Ethernet como IEEE 802.3 se refieren a características de la capa 1 y 2 correspondientes al modelo ISO para interconexión de sistemas abiertos (OSI, Open System Interconnection), es decir la capa física y la capa de enlace de datos. Identificadores IEEE para las distintas normas 802.3 El primer estándar IEEE 802.3 describía (en sus capas de enlace de datos y física) un sistema de interconexión de redes LAN basado en un cable coaxil grueso como medio de comunicación. Desde ahí fue escribiendo nuevas normas para este sistema conforme se fue mejorando o modificando el sistema original de cable coaxil grueso descripto originalmente por Metcalfe y sus colegas. Cada una de estas versiones de la IEEE además de llevar un número que hace referencia a la norma (802.3x en general) lleva un identificador, un nombre digamos, compuesto de tres partes, que da cuenta de la velocidad de transmisión del sistema, el tipo de señalización usada y el tipo de medio sobre el cual se transmite. Ethernet 3 En los primeros sistemas, la parte del identificador que daba cuenta del medio físico se basaba en la longitud del cable en metros. En los sistemas más recientes la IEEE eliminó la convención referente a la distancia o longitud del cable (la tercera parte del identificador) y la reemplazó por el tipo de medio utilizado (por ejemplo par trenzado o fibra óptica). En orden cronológico de aparición los identificadores son los siguientes: 10Base5 Este es el identificador correspondiente al sistema original Ethernet basado en cable coaxil grueso. El 10 significa velocidad de transmisión de 10 megabits por segundo; Base se refiere a Baseband que significa que el medio de transmisión (en este caso coaxil grueso) está dedicado a transportar un solo servicio: señales Ethernet1. Finalmente, el 5 hace referencia a la máxima longitud de 500 metros que un segmento de cable de este sistema puede tener. Para extender la red se conectan varios de estos segmentos unidos por repetidores. 10Base2 Este sistema también se lo conoce como Ethernet de cable coaxil delgado. Opera a 10Mbps en banda base (en el sentido expuesto anteriormente) y con longitudes máximas de segmento de cable de 185 metros. En el identificador se decidió poner 2 al final por simplicidad para no extender el nombre del mismo. FOIRL Significa Fiber Optic Inter-Repeater Link (Enlace de Fibra Óptica entre Repetidores). El estándar original de DIX mencionaba un segmento punto a punto que podía usarse entre repetidores aunque no se daba ninguna especificación al respecto. Más tarde el comité IEEE desarrolló la norma FOIRL y la publicó en 1989. Originalmente fue diseñado para enlazar segmentos Ethernet remotos mediante fibra óptica. 10Broad36 Este sistema fue diseñado para enviar señales de 10Mbps sobre sistemas de cables de banda ancha que soportan varios servicios simultáneamente (sería la contraparte de banda base o baseband). El 36 hace referencia a los 3600 metros de distancia permitidos entre dos estaciones. No tuvo gran desarrollo. 1Base5 Esta norma describe un sistema de 1 Mbps sobre cable de par trenzado. No ha sido popular y fue rápidamente reemplazado por 10Base-T. 10Base-T La “T” hace referencia a twisted (trenzado), del par de cable trenzado. Esta variante de Ethernet opera a 10 Mbps en modo banda base, sobre dos pares trenzados categoría 3 o mejor. El tema de las categorías de cables lo veremos con más detalle más adelante. Se adoptó el uso del guión para que se pronuncie “diez base te” y no “diez baset”2. 10Base-F Es un sistema de 10 Mbps cuyo medio de transmisión es la fibra óptica. Se incluyó como parte oficial del IEEE 802.3 en noviembre de 1993. Esta norma define 3 especificaciones: 10Base-FB, 10Base-FP y 10Base-FL. 1 Recordemos que baseband significa literalmente banda base y se refiere a una señal cuyo espectro de frecuencia se extiende desde aproximadamente 0 hertz hasta unas decenas de megahertz. Sin embargo, en el caso de la nomenclatura IEEE de la que estamos hablando no tiene absolutamente nada que ver con este significado. 2 En Inglés la pronunciación sería ten baset, bastante parecida a la de basset que es una raza de perros. De ahí que se haya optado por poner el guión. 4 Ethernet 100Base-T Variante de Ethernet a 100 Mbps sobre par trenzado. 100Base-X Esta variante opera a 100 Mbps en banda base, tanto en par trenzado como en fibra óptica usando codificación 4B/5B. Se lo subdivide en 100Base-TX y 100Base-FX. 100Base-TX Esta es la variante Fast Ethernet que opera a 100 Mbps sobre dos pares trenzados de alta calidad categoría 5. TX indica que es la versión de par trenzado de 100Base-X. 100Base-FX Esta es la variante Fast Ethernet que opera a 100 Mbps en banda base sobre fibra óptica multimodo. 100Base-T4 Esta variante de Fast Ethernet opera a 100 Mbps en banda base sobre cuatro pares trenzados categoría 3 o mejor. No fue ampliamente desarrollada. 100Base-T2 Opera a 100 Mbps en banda base sobre dos pares trenzados categoría 3. Nunca fue desarrollada por ningún fabricante y no hay ningún equipo basado en esta norma. 1000Base-X Esta es la identificación IEEE para los sistemas Gigabit Ethernet basados en codificación 8B/10B. El sistema 1000Base-X incluye 1000Base-SX, 1000Base-LX y 1000Base-CX. 1000Base-SX La “S” se refiere a “short”, de short wavelength, esto es, longitud de onda corta. La “X” indica que pertenece al sistema con codificación 8B/10B mencionado antes. Lo de longitud de onda corta tiene que ver con la longitud de onda utilizada para transmitir sobre fibra óptica. 1000Base-LX Gigabit Ethernet sobre fibra óptica en larga longitud de onda (long wavelength). 1000Base-CX Gigabit Ethernet basado en cable de cobre. 1000Base-T Este es el identificador de la IEEE para Gigabit Ethernet sobre par trenzado de categoría 5 o mejor. No usa el esquema 8B/10B sino que usa un esquema diferente. Rediseño de Ethernet Por más que el diseño de una tecnología de red LAN sea muy bueno, no sirve de mucho si uno sólo puede usar equipamiento provisto por un solo fabricante. Una LAN tiene que ser capaz de trabajar con la más amplia variedad posible de equipamiento para poder tener la mayor flexibilidad posible. Digamos, no se puede estar atado a un solo fabricante y tiene que ser un sistema compatible con productos hechos por diferentes fabricantes. En los años 70 nadie pensaba en esta característica. Las computadoras eran caras y la tecnología de redes sonaba como algo exótico. Ethernet 5 Metcalfe entendió el potencial negocio que había detrás de todo esto y fue ahí que convenció a la gente de Xerox para que formara un consorcio con otras compañías con el propósito de normalizar Ethernet. La era de los sistemas abiertos de comunicación entre computadoras basadas en Ethernet comenzó formalmente en 1980 cuando DIX anunció su estándar para la red Ethernet de 10 Mbps. Antes de este lanzamiento formal, en 1979 Bob Metcalfe creó una compañía para ayudar a comercializar Ethernet (bah, para ganar plata...). Él creía que al tener un mercado abierto se podrían expandir las capacidades brindadas a los usuarios de computadoras. Y no se equivocó. Fundó la compañía 3Com (Computer communication compatibility). Ethernet prosperó durante los años 80, pero a medida que el crecimiento de las computadoras instaladas se hacía más significativo los problemas inherentes al sistema original de coaxil grueso se hacían más frecuentes, por ejemplo al hacer un tendido de coaxil en un edificio. Con la aparición de Ethernet de coaxil delgado a mediados de los 80 la cosa mejoró un poco pero las dificultades principales persistían. Dado que el sistema basado en coaxil (tanto grueso como delgado) es un sistema en bus en donde todas las estaciones comparten un cable en común, una falla en el cable deja a toda la red fuera de servicio. La invención de Ethernet de par trenzado a finales de los 80 por una compañía llamada SynOptics Communications, convirtió a esta tecnología de red en un sistema de topología estrella mucho más confiable en donde todas las computadoras se conectan a un hub central. Un sistema así es más fácil de instalar y de administrar, además de ser más fácil la localización de fallas. Éste fue el primer rediseño importante de Ethernet desde la versión original de Metcalfe. Sin lugar a dudas, el uso de esta tecnología de par trenzado fue lo que le dio a Ethernet un crecimiento explosivo. Rediseño de Ethernet a 100 Mbps El sistema Ethernet original normalizado en 1980 funcionaba a una tasa de bit de 10 Mbps, una velocidad nada despreciable para aquella época. Durante esos años tal tasa de transmisión era perfectamente compatible con la velocidad de procesamiento de las computadoras. Sin embargo, a medida que la potencia de procesamiento de las computadoras fue aumentando, 10 Mbps comenzó a resultar poco y las computadoras conectadas a Ethernet “pedían más”. Así, el siguiente rediseño importante de Ethernet consistió en aumentar la tasa de transmisión por un factor de 10. Un nuevo estándar creó el sistema Fast Ethernet de 100 Mbps, adoptado oficialmente en 1995. Fast Ethernet está basado en par trenzado como así también en cable de fibra óptica. Con la invención de Fast Ethernet comenzaron a operar sistemas multi velocidad, esto es a 10 Mbps ó 100 Mbps. A través de un proceso de autonegociación la velocidad de transmisión entre dos máquinas se ajusta automáticamente para que funcionen las dos a la misma tasa de transmisión. Ethernet de 1000 Mbps En 1998 llegó un nuevo rediseño de Ethernet: otro crecimiento de la tasa de transmisión por un factor de 10. Esto dio el nacimiento al estándar Gigabit Ethernet, que describe un sistema que opera a 1000 millones de bits por segundo, tanto sobre par trenzado como sobre fibra óptica. Una vez más, usando el mecanismo de autonegociación, se pueden conectar sistemas de diferentes velocidades que se ajustan automáticamente a la velocidad adecuada que permita interoperar a todas las máquinas involucradas. 6 Ethernet El sistema Ethernet Un sistema de Red de Área Local Ethernet está basado en hardware y software que permite entregar datos digitales entre computadoras conectadas a dicha red. El sistema original Ethernet, es decir el desarrollado por Robert Metcalfe y sus colegas y publicado oficialmente como estándar de DIX, es un sistema que opera en modo half duplex (semi duplex en Castellano). Half duplex significa que una computadora que está enviando datos no los puede estar recibiendo simultáneamente desde otra computadora. El ejemplo más común de comunicación half duplex es el walkie talkie: la comunicación es en ambos sentidos, pero habla uno o habla el otro, no los dos simultáneamente. En este sistema Ethernet half duplex varias computadoras comparten un canal de comunicación en común (topología bus) que para ser accedido sin conflictos (o al menos con conflictos administrados inteligentemente) utilizan un protocolo de acceso al medio (MAC, Media Access Control) basado en el sensado de portadora (esto es, la “escucha” del canal) y la detección de posibles colisiones. El nombre completo de todo esto, en Inglés, es Carrier Sense Multiple Access with Collision Detection (Acceso Múltiple con Sensado de Portadora y Detección de Colisiones). Más conocido como protocolo CSMA/CD. Hasta la aparición de los switches (conmutadores) el sistema half duplex fue el modo de operación que usó el sistema Ethernet. Con la llegada de los hubs y los switches el canal en común desapareció y la topología en estrella entró en escena, permitiendo comunicaciones full duplex y sin usar ya el protocolo CSMA/CD. Para una mejor descripción podríamos decir que el sistema Ethernet consta de 4 partes: • El frame o trama, formado por un conjunto de bits que transporta datos a través del sistema. • El protocolo de control de acceso al medio, que consiste en un conjunto de reglas utilizadas por las interfaces Ethernet para poder acceder al canal de manera ordenada teniendo en cuenta que son muchas las computadoras conectadas a la red y que podrían querer acceder al mismo tiempo. • Las componentes de señalización, consistente en dispositivos electrónicos que envían y reciben señales sobre el canal Ethernet. • El medio físico, que consiste en cables y elementos de hardware usados para transportar las señales digitales entre computadoras que están conectadas a la red. El frame Ethernet o trama Ethernet es el corazón de este sistema. El hardware del sistema es el encargado de mover tramas Ethernet entre computadoras o en forma más general entre estaciones ya que también se pueden considerar otros dispositivos como impresoras o cualquier otro equipo conectado a la red. Desde el punto de vista del modelo OSI la trama Ethernet pertenece a la capa dos, es decir a la capa de enlace de datos. Los bits de esta trama están agrupados en campos, como se muestra en la Figura 1. 8 bytes 6 bytes 6 bytes 2 bytes 46 a 1500 bytes 4 bytes Preámbulo Dirección de Destino Dirección de Origen Tipo Datos CRC Figura 1. Trama Ethernet Ethernet 7 La trama comienza con el campo preámbulo, de 8 bytes de longitud ó 64 bits. En un sistema Ethernet de 10 Mbps este preámbulo entrega al hardware una secuencia de bits para alertar que una trama se está por comenzar a transmitir. Los sistemas de 100 y 1000 Mbps no requieren de esta trama de inicio pero para evitar cambios en la estructura de la trama aún se sigue transmitiendo. A continuación del preámbulo se encuentran los campos de dirección de destino y dirección de origen. La asignación de direcciones es controlada por la Asociación de Standards IEEE (IEEE-SA) quien administra una porción del campo de dirección. La IEEE-SA le asigna a cada fabricante de interfaces de red un bloque de 24 bits que es único (Organizationally Unique Identifier, OUI). Este identificador de 24 bits es único para cada fabricante de interfaces de red y de esta manera se evita el problema de que haya dos interfaces de red, de dos fabricantes diferentes, que tengan la misma dirección de red. Con esto se elimina la necesidad de administrar localmente cada dirección de red. Luego veremos con algo más de detalle el significado de direccionamiento local y global. Un fabricante de interfaces Ethernet crea una única dirección Ethernet de 48 bits para cada unidad por él fabricada agregándole 24 bits adicionales a los 24 que le asignó la OUI. Estos 24 bits adicionales también son únicos para cada unidad fabricada por ese fabricante y representan el número de serie de la interfaz. Esta dirección resultante de 48 bits conforma la dirección física de Ethernet o dirección de Control de Acceso al Medio, conocida como MAC Address. La dirección asignada a cada fabricante corresponde al campo Dirección de Origen. El campo Dirección de Destino corresponde precisamente a la dirección hacia donde va dirigida la trama Ethernet. Para una misma estación el campo Dirección de Origen es fijo, mientras que el campo Dirección de Destino es variable dependiendo de a qué estación se envía la trama. A continuación de los campos de dirección se encuentra un campo de 2 bytes, ó 16 bits, llamado campo de tipo (o de longitud en el caso del estándar IEEE). Como veremos con más detalle más adelante este campo se utiliza para identificar a qué protocolo de capa 3 corresponde el campo de datos de la trama Ethernet. Es decir, a qué protocolo de capa 3 se debe entregar el campo de datos transportado por la trama (por ejemplo el protocolo IP). El siguiente campo es el campo de datos, que puede tener una extensión de entre 46 y 1500 bytes. Es mandatorio que este campo tenga al menos 46 bytes de extensión. Esta extensión mínima asegura que la trama Ethernet tenga una duración de tiempo suficiente para que pueda ser “escuchada” por cada una de las demás estaciones conectadas a la red. Cada estación debe escuchar las tramas dentro del máximo tiempo de ida y vuelta de la señal de propagación que transmite dicha trama. Esto se explicará con más detalle más adelante. Si el campo de datos es menor a 46 bytes entonces se utilizan bytes de relleno para completar los 46 bytes mínimos. Finalmente, el último campo de la trama es una secuencia de verificación de trama (Frame Check Sequence, FCS) de 32 bits. Este campo FCS contiene un código de redundancia cíclica (Cyclic Redundancy Checksum, CRC) que verifica la ocurrencia de errores de bit. Este es un código de tipo polinomial como los que se estudiaron oportunamente en capítulos anteriores. Protocolo de control de acceso al medio El sistema Ethernet half duplex originalmente desarrollado utilizaba el protocolo MAC (Media Access Control), que consiste en un conjunto de reglas para que varias estaciones puedan compartir un canal de comunicación en común de manera organizada. Este mecanismo es bastante simple: cada computadora o terminal conectada a una red Ethernet opera de manera independiente, no existe un controlador central. 8 Ethernet El sistema de transmisión Ethernet es del tipo broadcast, es decir del tipo difusión. Eso significa que cada trama que es transmitida a una cierta estación destinataria es en realidad “escuchada” por todas las estaciones que están conectadas a la red. Cada estación compara la dirección que aparece en el campo Dirección de Destino con su propia MAC Address. Si las direcciones difieren entonces descarta la trama transmitida por la estación transmisora. Si las direcciones son iguales entonces interpreta que la trama estaba dirigida a él y procesa la trama completa. Cuando las direcciones difieren la estación destinataria interrumpe el procesamiento de la trama recibida por difusión inmediatamente después de leer el campo de dirección de destino y verificar que no coincide con su propia dirección. Cada estación, antes de transmitir una señal Ethernet, escucha el canal y verifica que esté desocupado. El mecanismo para acceder al canal y transmitir una señal Ethernet se llama protocolo CSMA/CD. Cada estación, antes de transmitir, debe esperar hasta que no haya señal presente en el canal. Si no hay señal presente entonces transmite. Si hay señal presente es porque otra estación está transmitiendo (hay portadora presente en el canal) y todas las demás estaciones con intenciones de transmitir deben esperar hasta que el canal se desocupe. A esta parte del protocolo hace referencia el término carrier sense o sensado de portadora. Con el término Multiple Access se hace referencia a que son muchas las estaciones que intentan transmitir y todas con la misma prioridad. Dado que todas las estaciones tienen igual oportunidad para transmitir es posible que dos o más estaciones hayan sensado el canal como desocupado y comiencen a transmitir sus tramas simultáneamente. Cuando esto ocurre, los dispositivos de señal de las interfaces Ethernet detectan la colisión de señales y en consecuencia las estaciones que estaban transmitiendo dejan de transmitir. Antes de volver a intentar una retransmisión cada estación espera un tiempo aleatorio. Luego de concretarse una transmisión exitosa, si la misma estación necesita enviar inmediatamente otra trama vuelve a ejecutar el protocolo CSMA/CD; es decir que se ejecuta cada vez que debe transmitir una trama. Esto le otorga igualdad de oportunidades a todas las estaciones. Es importante aclarar que las colisiones que se producen como consecuencia de intentos de transmisión simultáneos de varias estaciones no deben interpretarse como un mal funcionamiento del sistema. Está previsto que el sistema funcione así porque así fue diseñado y no debe ser motivo de preocupación creyendo que algo anda mal. Cuando se produce una colisión, las estaciones involucradas esperan un tiempo aleatorio cada una. Si todas esperaran un tiempo fijo volverían a colisionar de nuevo en el próximo intento. El tiempo de espera aleatorio es un número entero de unidades de tiempo, por lo que puede ocurrir que en el segundo intento dos estaciones vuelvan a colisionar ya que les correspondió el mismo tiempo de espera aleatorio. Si esto ocurre, ambas vuelven a esperar otro tiempo aleatorio hasta que finalmente puedan transmitir sin colisión. Este proceso de espera se llama algoritmo de retroceso exponencial binario y lo trataremos con mayor detalle más adelante. La trama Ethernet que hemos mencionado aquí y el protocolo CSMA/CD se usan en todos los sistemas Ethernet half duplex, sean estos sobre cable coaxial, par trenzado o fibra óptica. En el modo full duplex (transmisión y recepción simultánea) el frame sigue siendo el mismo pero el protocolo CSMA/CD ya no se usa. Descripción detallada del protocolo MAC Veamos ahora con más detalle el protocolo de control de acceso al medio que se describió en los últimos párrafos anteriores. Recordemos que este protocolo MAC está basado en CSMA/CD que se aplica en sistemas semiduplex. Los sistemas full duplex o duplex completo no usan el mecanismo CSMA/CD. Ethernet 9 En el modo half duplex original, el protocolo MAC permite que un conjunto de estaciones puedan competir por el acceso de un canal Ethernet compartido, de una manera imparcial y equitativa. Las reglas de este protocolo determinan cómo se deben comportar las estaciones conectadas a la red Ethernet, ya sea cuando están por transmitir un frame o cuando se ha producido una colisión y deben volver a transmitir. Dado que no existe un controlador central, cada interfaz Ethernet opera de manera independiente usando el mismo protocolo MAC. Equipando a todas las interfaces con el mismo conjunto de reglas todas las estaciones operan de la misma manera. La trama Ethernet descripta originalmente en el protocolo publicado por DIX fue posteriormente modificada por la IEEE cuando escribió su estándar 802.3. La figura siguiente repite la trama Ethernet de la Figura 1, en este caso junto con la trama establecida por el estándar IEEE 802.3. Si bien las diferencias entre ambas tramas son mínimas, es suficiente para que sean incompatibles entre sí. Esto significa que en una red todas las estaciones conectadas deben tener NICs (Network Interface Card, Tarjetas de Interfaz de Red) compatibles con el protocolo Ethernet o con el protocolo IEEE 802.3. Como este último es una norma internacional prácticamente todos los fabricantes actuales venden tarjetas que cumplen con el 802.3. Aún quedan algunos pocos productos que cumplen con el protocolo Ethernet o con ambos y normalmente son usados en los casos que se desean hacer expansiones de redes relativamente viejas. 8 bytes 6 bytes 6 bytes 2 bytes 46 a 1500 bytes 4 bytes Preámbulo Dirección de Destino Dirección de Origen Tipo Datos CRC 8 bytes 6 bytes 6 bytes 2 bytes 46 a 1500 bytes 4 bytes Preámbulo Dirección de Destino Dirección de Origen Longitud Datos CRC Figura 2. Trama Ethernet DIX (arriba) y trama IEEE 802.3 (abajo) Veamos entonces en detalle cada campo de ambas tramas y las diferencias que hay entre un protocolo y el otro. La especificación Ethernet determina tanto la estructura de la trama como así también cuándo una estación puede transmitirla. Como venimos diciendo, el control del acceso al medio está basado en el sensado de portadora previo a la transmisión y en la detección de colisiones, todo esto resumido en el acrónimo CSMA/CD. Cuando la IEEE escribió su propio protocolo 802.3 ciertamente hizo algunos cambios mínimos y un cambio relativamente significativo en el campo Tipo de la trama Ethernet original. El estándar de DIX define en la trama un campo llamado Tipo. La primera versión del 802.3, publicada en 1985, especifica este campo como Longitud, con un cierto mecanismo que permite que ambos formatos (DIX e IEEE) puedan coexistir en una misma red. Debido a este mecanismo la mayoría de los fabricantes de software para redes siguieron usando el campo 10 Ethernet como Tipo y el estándar IEEE 802.3 fue posteriormente modificado llamando a este campo de manera dual Tipo/Longitud, el cual se adapta a uno u otro formato dependiendo el uso. La Figura 2 muestra tanto la versión DIX como la IEEE de la trama Ethernet. Como se ve, ambas tienen la misma longitud y la misma cantidad de campos, por lo que las interfaces Ethernet pueden usarse para transmitir cualquiera de las dos versiones de tramas. En tal caso, la diferencia radica en el contenido de los campos y en la interpretación de esos contenidos que deben hacer las estaciones transmisoras y receptoras. Preámbulo La trama comienza con una secuencia de 64 bits correspondiente al campo preámbulo. Esta secuencia permite que las interfaces Ethernet de 10 Mbps conectadas en la red se puedan sincronizar antes de que comiencen a llegar los datos de los siguientes campos. Básicamente este campo permite que se puedan gastar algunos pocos bits para que las demás estaciones “se acomoden” antes de recibir datos. Es como un escudo protector que está delante de los campos de la trama. A pesar de que Fast Ethernet (100 Mbps) y Gigabit Ethernet usan otro mecanismo de sincronismo y no necesitan el campo preámbulo, este campo se sigue manteniendo en estos dos casos sólo para mantener compatibilidad con la trama originalmente definida. En el estándar de DIX el campo preámbulo consta de 8 octetos o bytes, cada uno con “unos” y “ceros” en forma alternada. Es decir, una secuencia alternada de unos y ceros. El último byte de esta secuencia tiene 6 bits con unos y ceros alternados y los dos últimos bits son “1”, “1”. Estos dos bits indican que se ha llegado al final del preámbulo y que a continuación comienzan los campos que llevan información. En la especificación IEEE 802.3 el campo preámbulo está dividido en dos partes, la primera con 7 bytes y la segunda con un byte, llamada Start of Frame Delimiter (SFD) o sea, Delimitador de Comienzo de Trama. La secuencia de bits son unos y ceros alternados como en el caso de DIX y los dos últimos bits de SFD son 1,1 —¡como en el estándar de DIX! Es decir, en la práctica no hay ninguna diferencia entre el preámbulo de DIX y el de la IEEE. Dirección de Destino (Destination Address) A continuación del campo de preámbulo viene el campo dirección de destino. El contenido de este campo identifica la computadora o terminal a la que va dirigida la trama que se transmite. Cada interface Ethernet tiene asignada una dirección única, de 48 bits, llamada comúnmente dirección de hardware o también dirección física. El campo de dirección de destino contiene un número de 48 bits que corresponde a la dirección de la interfaz Ethernet instalada en la computadora o terminal hacia donde va dirigida la trama. Es decir, indica a qué computadora debe ser enviada la trama generada por la estación transmisora. Este campo de dirección de destino puede tener además ciertos valores especiales que indican por ejemplo una dirección multicast (multidifusión) o broadcast (difusión). Una dirección multicast implica transmisión de la trama a varias computadoras del total que está conectado a la red, mientras que una dirección de broadcast (difusión) implica la transmisión de la trama a todas las computadoras conectadas a la red. Cada interfaz Ethernet conectada a la red comienza a leer la trama que está siendo transmitida en ese momento por otra interfaz (es decir, una trama que está “puesta” en el cable o medio de transmisión), comenzando por el preámbulo para sincronizarse y siguiendo luego con el campo de dirección de destino. Si al terminar de leer el campo de dirección de destino la interfaz comprueba que la dirección de destino que allí aparece no concuerda con su propia dirección Ethernet, significa que no es una trama dirigida a ella y por lo tanto ignora el resto de los campos que vienen a continuación en esa trama y directamente no los lee. Ethernet 11 I/G U/L 46 bits de dirección 48 bits de dirección Figura 3. Formato del campo de dirección de origen y dirección de destino La Figura 3 muestra la composición del campo de dirección de destino y dirección de origen. Tanto la dirección de destino como la de origen se representan normalmente en formato hexadecimal, muchas veces con los tres primeros bytes separados por dos puntos de los segundos tres bytes. Por ejemplo, la dirección de origen 02608C0876543 se muestra como 02608C:876543. Como veremos luego, los primeros tres bytes identifican al fabricante de la interfaz mientras que los tres últimos bytes identifican a una interfaz en particular de ese fabricante (sería como un número de serie). Esto es lo que se conoce como MAC Address. La Figura 4 muestra otros formatos en hexadecimal que se usan en la escritura de la MAC address, además del recién comentado. DIRECCIÓN MAC Asignado por Asignado por la IEEE el fabricante 02608C 876543 02608C:876543 02 – 60 – 8C – 87 – 65 – 43 02:60:8C:87:65:43 02.60.8C.87.65.43 Figura 4. Cuatro modos de notación hexadecimal diferentes para la dirección MAC El subcampo I/G (Individual / Group) de un bit de longitud es puesto a 0 para indicar que el frame va destinado a una sola estación individual (Individual), mientras que cuando se pone en 1 es para indicar que la trama va dirigida a un grupo de estaciones (Group). Un caso especial de dirección de grupo es cuando todos los bits del campo de dirección son puestos a 1, lo cual significa que se trata de una dirección de broadcast, es decir que la trama va destinada a todas las estaciones de la red y por lo tanto debe ser aceptada por todas ellas. En hexadecimal es “FFFFFFFFFFFF”. Cuando la dirección especifica una sola estación se habla de dirección unicast, si es de grupo es multicast y si son todas las estaciones es broadcast. En el campo dirección de origen el subcampo I/G siempre está puesto a 0. El subcampo U/L (Universal / Local) sirve para identificar si la dirección es universalmente administrada (Universal) o localmente administrada (Local). Cada Interfaz Ethernet tiene una dirección única que se graba en una ROM al momento de su fabricación. Para asegurar que esta dirección universalmente administrada es única y no está repetida, la IEEE asigna bloques de direcciones a cada fabricante de interfaces. Esta dirección está compuesta por un prefijo de 3 bytes, el cual identifica al fabricante y es asignado por la IEEE, y un sufijo de 3 bytes que es asignado a la interfaz por el fabricante de la misma. Por ejemplo, el prefijo hexadecimal 02608C identifica a una NIC fabricada por 3Com, mientras que el 12 Ethernet 00805F identifica a una NIC fabricada por Compaq. La dirección completa, está claro, queda compuesta por 6 bytes, como se ve en la Figura 3. Si bien el uso de direccionamiento universal elimina la posibilidad de duplicado de direcciones, en algunos casos es conveniente utilizar direcciones administradas localmente ya que le otorga facilidad de administración a cierto tipos de redes. En la versión de DIX, el subcampo U/L no se usa ya que las direcciones son siempre administradas universalmente. Dirección de origen (Source Address) El campo Dirección de Origen identifica a la estación que está transmitiendo la trama. Como se mencionó antes esta dirección (al igual que la de destino) tiene una longitud de 6 bytes. Los tres primeros bytes son asignados al fabricante de la NIC por la IEEE y los tres últimos son asignados por el fabricante de la NIC. Campo Tipo El campo Tipo es aplicable sólo al formato Ethernet de DIX y tiene una longitud de 2 bytes. Este campo está inmediatamente antes del campo Datos e identifica a qué protocolo de alto nivel (capa 3) debe enviarse el contenido del campo datos. No perdamos de vista que la trama Ethernet (sea versión DIX o IEEE) corresponde a la capa 2 del modelo OSI, es decir, la capa de enlace de datos. Por lo tanto, cuando la capa 2 de la estación receptora reciba toda la trama completa, debe determinar a qué protocolo de capa 3 debe pasarle el campo datos de la trama. En una red LAN hay numerosos protocolos de capa 3 que se pueden ejecutar o bien se están ejecutando al mismo tiempo. El protocolo IP seguramente es el más conocido aunque no el único; ARP es otro, por ejemplo. Por lo tanto, cuando la capa 2 de la estación receptora recibe la trama Ethernet se pregunta: ¿A quién de la capa 3 le entrego el contenido del campo Datos? ¿Al protocolo IP que está arriba mío? ¿Al protocolo ARP que está arriba mío? La respuesta está en el contenido del campo Tipo. Según el valor que tenga el campo Tipo, la capa 2 entregará el contenido del campo datos a un cierto protocolo de capa 3. Esencialmente cada protocolo de cada capa del modelo OSI es una subrutina de software (por ejemplo una librería tipo *.dll), por lo que el contenido del campo datos es entregado a la subrutina de software de la capa 3 que corresponde al protocolo identificado por el campo tipo. Protocolo Valor hexadecimal Experimental Xerox XNS Ipv4 X.75 Internet X.25 Level 3 Address Resolution Protocol (ARP) Reverse ARP SNMP IPv6 0101-D1FF 0600 0800 0801 0805 0806 8035 814C 86DD Tabla I. Algunos valores típicos del campo tipo, en hexadecimal La Tabla I muestra algunos valores representativos, expresados en hexadecimal, correspondientes al campo tipo y que indican a qué protocolo de capa 3 debe enviarse el Ethernet 13 contenido del campo datos. Por ejemplo, si el campo Tipo tiene el valor hexadecimal 0800 significa que el contenido del campo Datos debe enviarse al software de capa 3 que se encarga de ejecutar el protocolo IP. Campo Longitud Tanto en el protocolo de DIX como en el de IEEE el tamaño mínimo del frame debe ser de 64 bytes de longitud, medido desde el preámbulo hasta al campo CRC. Esta imposición de tamaño mínimo sirve para asegurar que haya un suficiente tiempo de duración de transmisión de la trama que permita a las demás estaciones detectar una colisión, si la hay. Esto está basado en la longitud máxima de cable especificado para una red y la velocidad de propagación de los bits dentro de ese cable, como veremos con más detalles posteriormente. Esto implica que la longitud mínima del campo datos (que es de longitud variable) debe ser de 46 bytes. Ambos protocolos establecen una longitud máxima para el campo datos de 1500 bytes. Tanto en DIX como en IEEE 802.3 si el campo Datos no alcanza el mínimo de 46 bytes entonces se lo completa con bytes de relleno. El campo Longitud pertenece al protocolo IEEE 802.3. Cuando este protocolo fue publicado inicialmente en 1985, no se incluyó el campo Tipo sino que se incluyó en su lugar el campo Longitud. Posteriormente en 1997 IEEE oficializó el uso del campo Tipo en su protocolo, manteniendo los identificadores originales que había asignado Xerox pero quedando bajo su responsabilidad la asignación de los nuevos identificadores. En la versión más reciente del IEEE 802.3 este campo se llama ahora Tipo/Longitud, y según el valor que tenga este campo se comporta como Tipo o como Longitud. Lo que hace entonces el campo Longitud es indicar cuál es la longitud del campo datos que se está transmitiendo en la trama, sin contar la cantidad de bytes de relleno, si los hay. Este campo además trabaja en conjunto con un subcampo que va dentro del campo datos y que se llama Control Lógico de Enlace, Logical Link Control o LLC. El funcionamiento de este LLC viene especificado por la norma IEEE 802.2 y se utiliza para definir a qué protocolo de capa 3 pertenece el campo Datos que viene transportando la trama, cumpliendo de algún modo la función del campo Tipo del estándar de DIX. Este encabezado LLC no se usa en la norma Ethernet de DIX. Cuando el campo está definido en forma dual como Tipo/Longitud, su función queda definida de acuerdo al valor que contiene este campo. Ya que la longitud del campo datos no puede ser mayor que 1500 (decimal) cuando el campo Tipo / Longitud es mayor que este valor entonces funciona como Tipo. Si es menor entonces funciona como Longitud. Obviamente, si funciona como Tipo entonces el encabezado LLC no se usa. Campo Datos Este es el campo que transporta la información que podríamos decir, con cierto cuidado, útil. Una vez que se ha recibido toda la trama, el protocolo de capa 2 descarta todos los encabezados como así también el campo CRC y se queda con el campo Datos que es la parte útil. Pero útil a los fines de la capa 3. No nos olvidemos que la trama Ethernet al pertenecer a la capa 2 le está proveyendo un servicio a la capa 3 (capa de red). En la estación transmisora la capa 3 le pasa un paquete de datos a la capa 2, ésta le pone los encabezados necesarios y el CRC, la transmite, y la estación receptora quita los encabezados y el CRC y se queda con el campo Datos que es la parte útil en términos del servicio que presta la capa 2 a la capa 3. En el protocolo de DIX el campo Datos tiene una longitud máxima de 1500 bytes y una longitud mínima de 46 bytes. Como se dijo antes, la longitud mínima sirve para garantizar una longitud mínima de la trama completa. Si los datos que la capa 3 le envía a la capa 2 tiene una longitud menor a 46 bytes, el protocolo de capa 2 se encarga de poner bytes de relleno hasta completar 46 bytes. 14 Ethernet En el protocolo IEEE 802.3 el campo de datos tiene también un máximo de 1500 bytes y un mínimo de 46, esto último por las misma razones expuestas antes. También se usan bytes de relleno de ser necesario. Sin embargo, para el caso IEEE 802.3, en el campo de datos viaja también el encabezado LLC, como se mencionó antes, y que proporciona información de control como así también información referente al protocolo de capa 3 al que está asociado el campo datos (cumpliendo de alguna manera la misma función que el campo Tipo de DIX). Los bytes que conforman este encabezado LLC viajan al comienzo del campo Datos y está especificado por el estándar IEEE 802.2. El funcionamiento de este protocolo lo veremos con más detalle más adelante. Campo FCS Este es el último campo de la trama, tanto en DIX como en IEEE, de 4 bytes de longitud, el cual también es llamado CRC (chequeo de redundancia cíclica). Es un código cíclico de detección de error como los que se han estudiado oportunamente en otro capítulo de esta materia. El transmisor utiliza un polinomio cíclico para calcular el valor del CRC, empleando los valores de los campos de dirección, tipo o longitud y datos. No usa el contenido del campo preámbulo. El valor obtenido es puesto en el campo FCS. El campo FCS es un número binario de 32 bits. Cada bit corresponde al coeficiente de un polinomio de grado n-1, es decir de grado 31. Para calcular el contenido del campo FCS se considera a los bits de los campos de dirección, tipo/longitud y datos como los coeficientes de un polinomio M(X) de grado n-1. El primer bit del campo Dirección de Destino corresponde al coeficiente de grado n-1 de dicho polinomio, mientras que el último bit del campo Datos corresponde al coeficiente de grado 0. Este polinomio M(X) es multiplicado por X32 y luego dividido por el siguiente polinomio generador: G( X ) = X 32 + X 26 + X 23 + X 22 + X 16 + X 12 + X 11 + X 10 + X 8 + X 7 + X 5 + X 4 + X 2 + X + 1 Esta división da como resultado un cociente y un resto. El cociente se descarta y se usa el resto como valor del campo FCS. Una vez que la trama es recibida por la estación receptora, ésta utiliza el mismo polinomio generador para calcular CRC. Si el valor calculado coincide con el que está en el campo FCS de la trama recibida se considera que no tiene errores y por lo tanto la trama es aceptada. Si el CRC calculado y el que está en la trama no coinciden, se considera que la trama tiene errores y por lo tanto se descarta. Como se ve, el sistema detecta errores, no los corrige. Las otras dos situaciones bajo las cuales la trama recibida es descartada es cuando el receptor comprueba que no hay un número entero de bytes recibidos, y cuando la longitud del campo Datos no es igual a lo que dice el campo Longitud (este caso sólo en las tramas IEEE 802.3). Interframe Gap (Intervalo intertrama) Una vez que se transmite el último bit de la trama, el transmisor espera un pequeño tiempo llamado intervalo intertrama o tiempo intertrama, antes de transmitir la siguiente trama que pudiera tener disponible en forma inmediata. Es decir que el transmisor no transmite una trama a continuación de la otra sino que espera un breve intervalo de tiempo entre tramas consecutivas. En Ethernet de 10 Mbps este tiempo es de 9,6 µs. Sirve para que la electrónica de los circuitos electrónicos de las interfaces tengan tiempo para reestablecerse y volver a sincronizarse con el comienzo de la próxima trama. La condición de presencia de señal en un canal Ethernet se indica con el nombre de portadora. Cuando la interface transmisora termina de transmitir el último bit de la trama el canal pasa a estar desocupado. En el sistema de 10 Mbps, la pérdida de portadora le indica a la estación receptora que la trama ha terminado. Ethernet 15 Reglas para el control de acceso Luego de haber visto la descripción de la trama Ethernet, en sus dos versiones, veamos a continuación cuáles son las reglas usadas para que las tramas puedan viajar a través de la red sin conflictos y de manera organizada para poder “convivir” con todas las estaciones conectadas a la red. Esto es lo que se conoce como control de acceso al medio. No perdamos de vista que la explicación siguiente es para el caso half duplex. Antes de comenzar la descripción de este mecanismo definamos los siguientes puntos: • Cuando una señal está siendo transmitida sobre el canal se dice que esta condición es portadora (carrier). • Cuando una estación conectada a la red desea transmitir una trama espera hasta que el canal esté desocupado, condición denominada ausencia de portadora. • Cuando el canal queda desocupado, la estación espera todavía por un breve período llamado interframe gap (IFG) y luego transmite la trama. • Cuando dos estaciones transmiten al mismo tiempo, ambas detectan la colisión de las señales, tras lo cual reprograman la retransmisión de sus tramas. Esta condición se llama detección de colisión (collision detect). Veamos cómo hace una estación para saber si está en condiciones de transmitir y cómo es que transmite entonces su trama y qué hace cuando ocurre una colisión. Las reglas que gobiernan este mecanismo son como sigue. 1. Si no hay portadora presente (esto es, el canal está inactivo) y esta ausencia de portadora se manifiesta por un tiempo igual o mayor al IFG entonces la estación transmite su trama inmediatamente. Si la estación desea transmitir varias tramas una atrás de otra, debe esperar un tiempo igual a IFG antes de transmitir la siguiente trama. Este tiempo de espera Interframe gap o IFG sirve para que la estación receptora se vuelva a resincronizar. Este tiempo IFG está definido en 96 bits de duración. Esto significa, para Ethernet de 10 Mbps, un período de 9,6 µs. O bien 960 ns para Ethernet de 100 Mbps, ó 96 ns para Gigabit Ethernet (1000 Mbps). 2. Si hay portadora presente en el canal, esto es, si el canal está ocupado, la estación interesada en transmitir sigue escuchando el canal hasta que la portadora desaparece (el canal se desocupa). Ni bien se desocupa el canal, la estación espera un tiempo IFG y transmite su trama. 3. Si se detecta una colisión durante la transmisión la estación continúa transmitiendo por un período de 32 bits (jam signal, algo así como señal de interferencia). Si la colisión es detectada durante la transmisión del preámbulo, la estación completa la transmisión del mismo y luego sigue con los 32 bits de jam. Al transmitir completamente el preámbulo más la señal de jam se garantiza que la señal de colisión permanezca sobre el medio de transmisión un tiempo suficiente como para que sea detectada por todas las estaciones. Una vez transmitida la señal de jam las estaciones involucradas en la colisión deben volver a intentar transmitir sus tramas. Para ello, esperan un período de tiempo aleatorio y vuelven a transmitir su trama, empezando por el paso 1. Este proceso se llama backoff. La elección de un tiempo de espera aleatorio (diferente para cada estación involucrada en la colisión) se hace para que no vuelvan a colisionar estas estaciones. 16 Ethernet Si en el primer intento de retransmisión dos estaciones vuelven a colisionar (si se da el caso de que ambas eligieron el mismo número aleatorio de espera), el proceso de backoff se repite, ahora con un conjunto más amplio de tiempos de backoff de los cuales cada estación elegirá uno en forma aleatoria. De esta manera, al ser este conjunto más amplio, la probabilidad de que dos estaciones elijan el mismo número es menor. Aún así podrá darse el caso de que vuelvan a tener el mismo tiempo de espera, con lo cual volverán a colisionar. En tal caso se repite una vez más el proceso de backoff, ahora con un conjunto de números más grande aún. Este mecanismo lo volveremos a ver con más detalle más adelante. 4. Una vez que la estación transmisora ha logrado transmitir, sin colisión, 512 bits de la trama (aparte del preámbulo), se dice que ha adquirido el canal o tomado el canal. Esto significa que puede terminar de transmitir la trama sin posibilidad de colisión. La unidad de tiempo de 512 bits se la conoce como slot time (tiempo de ranura) del canal Ethernet. Esto se aplica a Ethernet de 10 y 100 Mbps. En Gigabit Ethernet es diferente y lo veremos luego con detalle. Una vez tomado el canal y terminada de transmitir la trama, la estación borra el contador de colisiones, el cual fue usado para el proceso de backoff. Si al transmitir la siguiente trama aparece una nueva colisión, el proceso de backoff comienza desde el principio otra vez, tal como se explicó anteriormente. Debe quedar claro que cada estación transmite una trama a la vez, y cada estación aplica las mismas reglas de acceso al medio cada vez que desea transmitir una trama. De esta manera se asegura igualdad de oportunidades a todas las estaciones. Si la red está muy cargada porque hay mucho tráfico entonces estará lenta (dado que hay más probabilidad de colisiones), pero esa lentitud se verá reflejada por igual en todas las estaciones. El slot time de 512 bits mencionado antes, está basado en el máximo tiempo de propagación, ida y vuelta, de la señal eléctrica que viaja por el canal en una red Ethernet. Este tiempo de propagación depende de la longitud y el tipo de cable utilizado en una red en particular y de la cantidad de dispositivos que la señal eléctrica atraviesa (un repetidor por ejemplo). Los estándares brindan especificaciones para las máximas longitudes de cable y la máxima cantidad de repetidores que se debe usar en un determinado tipo de red. De ese modo, el tiempo de propagación de ida y vuelta no será mayor al que está establecido en el slot time de 512 bits. El slot time está definido a partir del máximo tiempo de propagación, ida y vuelta, de la señal sobre el medio de propagación. Esto tiene en cuenta dos elementos: • El tiempo que le lleva a una señal propagarse desde un extremo a otro en una red de máxima longitud. Esto se llama tiempo de propagación de ida y vuelta de capa física. • El máximo tiempo requerido para imponer la colisión, esto incluye el tiempo requerido para detectar la colisión y la secuencia de jam que se envía a continuación. Ambos elementos son calculados en términos del número de tiempos de bit requeridos. Sumando los dos elementos antes mencionados más algunos bits extra como factor de seguridad, nos da el slot time de 512 bits para un sistema de 10 y 100 Mbps. Más adelante veremos qué ocurre en Gigabit Ethernet. Entonces, el tiempo que se requiere para transmitir 512 bits es levemente superior que el tiempo requerido para que una señal se propague, ida y vuelta, hasta el extremo más alejado de la red, incluyendo el tiempo requerido para transmitir la secuencia de jam. De esta manera, aún transmitiendo la trama más pequeña permitida, la estación transmisora tendrá suficiente tiempo para “recibir noticias” acerca de la colisión, incluso si ésta ocurrió en el extremo más alejado de la red. Ethernet 17 No hay que olvidar que el slot time incluye el tiempo de propagación a través de todos los elementos de red conectados a la red (cables, repetidores, etc.). Si la cantidad de elementos de red instalada es muy grande, el tiempo de propagación ida y vuelta será muy grande y esto afectará de manera negativa al funcionamiento de la red. En el sistema original de 10 Mbps en cable coaxil la señal puede ir y volver, a lo largo de aproximadamente 2800 metros, en 512 tiempos de bit, lo cual implica una muy buena extensión de red. Al sistema 10BASE-T se le impuso una longitud máxima de segmento de 100 metros no por cuestiones de tiempo de propagación sino por limitaciones en la calidad de la señal. Cuando se desarrolló el estándar Fast Ethernet en 1995, el slot time se mantuvo en 512 bits, para no modificar la longitud mínima de trama y mantener sin cambios el protocolo. Sin embargo, en este sistema el tiempo de bit es 10 veces menor que en 10 Mbps, lo que significa que “permanece en el cable” durante un tiempo también 10 veces menor3. Por lo tanto, la señal eléctrica de los 512 bits en su totalidad, para que esté presente en el cable el tiempo suficiente, deberá hacerlo sobre una longitud de cable diez veces menor que para el caso de 10 Mbps. Esto da como resultado una longitud máxima (o diámetro de red como también se dice) de 205 metros en Fast Ethernet. Cuando se desarrolló Gigabit Ethernet, el haber mantenido el slot time en 512 bits hubiese significado una diámetro de red de apenas unos 20 metros para una operación half duplex. Realmente es una extensión corta, pero a pesar de ello había buenas razones para conservar el tamaño mínimo de trama en 512 bits (64 bytes). Para lograr esto, lo que hace Gigabit Ethernet es aumentar el slot time a 4096 bits (512 bytes) mediante un mecanismo llamado carrier extension (extensión de portadora) que explicaremos más adelante. El uso del slot time como parámetro básico en los cálculos de acceso al medio les permite garantizar a los diseñadores que el sistema funcionará adecuadamente bajo cualquier combinación posible de elementos de red y longitud de segmentos de cable. El slot time se usa de varias maneras: 3 • El slot time establece el máximo límite superior para que una estación adquiera el canal. Una vez que una estación transmitió una trama de 512 bits (trama de longitud suficiente para cualquier estación conectada a una red de tamaño máximo de manera que pueda ser escuchada, y suficientemente larga para “escuchar noticias” de una colisión, incluso si ésta se produce en el extremo más alejado de la red), ésta se asegura de haber adquirido el canal (tomó posesión del canal). Si después de un tiempo de 512 bits no hubo colisión, todas las estaciones restantes estarán sensando portadora y consecuentemente no transmitirán. Es decir, después de 512 bits de tiempo, si la estación transmisora no escuchó ninguna colisión, sabe que su señal está presente a lo largo de todo el cable y ninguna otra estación podrá transmitir. Por lo tanto, puede completar la transmisión de su trama sabiendo que no va a haber colisión. • El slot time de 512 bits sirve también como unidad de tiempo usada por el algoritmo de backoff para generar el tiempo de espera luego de la ocurrencia de una colisión. Luego veremos esto. • Una colisión válida sólo puede ocurrir dentro del período de tiempo de 512 bits, ya que una vez que todas las estaciones ven la señal en el medio (y esto con seguridad ocurre en un tiempo máximo de 512 bits) postergarán su transmisión justamente para evitar una colisión. Ya que una colisión válida sólo puede ocurrir dentro de los primeros 512 bits de la transmisión de la trama, esto establece un límite superior en la longitud de tramas fragmentadas como consecuencia de No confundir con la velocidad de propagación, que es la misma. 18 Ethernet una colisión. Es decir, la interfaz Ethernet siempre descartará cualquier trama de longitud inferior a 512 bits. Fijando la longitud mínima de trama en 512 bits (sin incluir el preámbulo) el campo de datos deberá transmitir al menos 46 bytes. Una trama que tenga 46 bytes en su campo de datos tendrá 512 bits de longitud total (sin el preámbulo) y por lo tanto no será considerada como fragmento de una colisión. Los 512 bits incluyen 12 bytes de dirección, más 2 bytes del campo tipo / longitud, más 46 bytes (como mínimo) del campo datos, más 4 bytes del CRC. Una vez más, no se considera el preámbulo en este cálculo. Detección de colisiones y algoritmo de backoff La detección de colisiones y el algoritmo de backoff es una característica importante del protocolo MAC de Ethernet. Antes de explicar este mecanismo aclaremos algunos puntos: • Las colisiones no son errores. Debe quedar bien en claro que una colisión no es sinónimo de anomalía ni falla del sistema. Está previsto que las colisiones ocurran, forman parte del sistema y así fue diseñado. Y cuando ocurren son administradas en forma predeterminada de acuerdo a un algoritmo perfectamente prestablecido. • Las colisiones no causan corrupción de datos. Como hemos visto, cuando ocurre una colisión sobre un sistema Ethernet diseñado apropiadamente, será dentro de los primeros 512 bits de la transmisión. Cualquier trama que colisiona es reenviada por su transmisor en forma automática. Cualquier trama de menos de 512 bits es considerada fragmento de una colisión y es descartada automáticamente. Entonces, una vez más debe quedar claro que las colisiones forman parte del normal funcionamiento de la red Ethernet y cuando ellas ocurren son administradas adecuadamente por una algoritmo de backoff diseñado para ello. La cantidad de colisiones que se da en una red depende del tráfico ofrecido y del número de estaciones que hay en dicha red. Por lo tanto puede variar ampliamente desde un porcentaje pequeño del número de tramas transmitidas hasta un porcentaje grande. La tasa de colisiones suele ser mayor en aquellas redes que tienen estaciones de alta velocidad de procesamiento por ejemplo. Si bien cada estación escucha el canal antes de transmitir, puede ocurrir que dos o más estaciones escuchen el canal al mismo tiempo y lo encuentren desocupado, por lo que transmitirán simultáneamente y se producirá una colisión. Una colisión puede ocurrir únicamente durante la parte inicial de la transmisión hecha por una estación, es decir durante un slot time de 512 bits, también llamado ventana de colisión. Como ya se mencionó, una vez pasada la ventana de colisión se dice que la estación ha adquirido el canal y ya no hay posibilidad de que ocurra una colisión. El método usado para detectar una colisión es dependiente del medio. Un segmento de enlace, tal como par trenzado o fibra óptica, tiene caminos independientes de transmisión y recepción. Una colisión es detectada en un transceptor de segmento de enlace por la ocurrencia simultánea de actividad tanto en el transmisor como en el receptor. En un cable coaxial, los transceptores detectan una colisión mediante el monitoreo del nivel de señal DC en el cable. Cuando dos o más estaciones colisionan se produce un aumento del nivel de tensión DC que hace disparar un circuito de detección de colisiones en el transceptor. Un transceptor para cable coaxial está monitoreando continuamente el nivel medio de tensión en el cable, y envía una señal de detección de colisión cuando este nivel DC supera cierto límite. Ethernet 19 Si una colisión ocurre después de la ventana de colisión de 512 bits entonces estamos en presencia de un fenómeno anormal, llamado colisión tardía (late collision) y en este caso sí se trata de un problema serio de la red. Cuando este fenómeno ocurre el sistema Ethernet no retransmite la trama colisionada y el problema debe ser subsanado por el software de aplicación (residente en las capas superiores) quien sí se encargará de retransmitir las tramas colisionadas. Debido a esto último, se pierde mucho tiempo en el proceso, por lo que aún habiendo poca cantidad de colisiones tardías éstas pueden afectar seriamente al desempeño de la red por lo que el problema debe ser resuelto lo antes posible. La causa más común de ocurrencia de colisiones tardías es una desadaptación de la configuración duplex en cada extremo final del segmento de enlace. Por ejemplo, una colisión tardía puede ocurrir si una estación está configurada como semi duplex y en el otro extremo de la red hay un switch configurado como duplex total (full duplex). El sistema full duplex no usa CSMA/CD por lo que el switch envía tramas cada vez que así lo requiera sin escuchar previamente el canal puesto que no está configurado para ello. Por lo tanto, si la estación half duplex está transmitiendo, como el switch de este ejemplo no reconoce CSMA/CD enviará tramas en cualquier momento y colisionarán con las de la estación half duplex, incluso después de haber pasado la ventana de colisión de 512 bits. El fenómeno de colisiones tardías también puede ocurrir cuando hay problemas con el medio de comunicación, como por ejemplo un segmento de par trenzado con excesiva señal de crosstalk. Una vez que se ha detectado una colisión común, las estaciones transmisoras reprograman sus transmisiones usando un algoritmo de backoff de modo de minimizar las probabilidades de una nueva colisión. Este algoritmo también permite a las estaciones de la red a modificar su comportamiento de acuerdo al nivel de actividad en la red. Cuanto más estaciones hay es más factible que se produzcan múltiples colisiones (entre más de dos estaciones) y el algoritmo de backoff está diseñado para contemplar esta situación. Cuando el transceptor conectado a la red Ethernet detecta una colisión, envía una señal de presencia de colisión hacia la interfaz de la estación. Si la colisión es detectada en la parte inicial de la trama, la estación transmisora no responde a la señal de presencia de colisión hasta que no haya terminado de transmitir el preámbulo. Llegado ese instante, envía hacia la red una secuencia de 32 bits de jam y detiene su transmisión. De esta manera queda presente en la red una señal de colisión durante un tiempo suficiente como para que sea “escuchada” por las demás estaciones. Las estaciones que quedaron involucradas en la colisión deben reprogramar una retransmisión de sus tramas. Esto lo hacen generando un tiempo de espera antes de la retransmisión, basado en un número aleatorio. Si la red Ethernet está muy demandada, pueden seguir habiendo colisiones en la retransmisión a pesar del tiempo de espera aleatorio. El algoritmo de backoff contempla esta situación y proporciona un mecanismo para ajustar el tiempo de espera. Este mecanismo se llama truncated binary exponential backoff, cuya traducción aproximada podría ser algoritmo de espera exponencial binario truncado. Exponencial binario hace referencia a la potencia de 2 usada en el cálculo del tiempo de espera, mientras que truncado se refiere a que este crecimiento exponencial tiene un límite o tamaño máximo. Luego de la ocurrencia de una colisión el tiempo de espera para la retransmisión es fijado en un múltiplo de time slot de 512 bits usado en Ethernet de 10 y 100 Mbps. Es decir que el tiempo de espera va a ser diferente para cada una de estas dos redes si tenemos en cuenta que en 10 Mbps un bit tiene una duración de 100 ns mientras que en 100 Mbps o Fast Ethernet es de 10 ns. El tiempo de espera se calcula multiplicando el slot time por un número entero elegido aleatoriamente. El rango de números enteros aleatorios posibles y de los cuales se elige uno, es determinado por el algoritmo exponencial, y este rango va aumentando a medida que aumentan los intentos de retransmisión como consecuencia de una nueva colisión en una 20 Ethernet retransmisión. Por ejemplo, para el primer intento de retransmisión hay 2 números posibles para elegir aleatoriamente. Si en esta retransmisión vuelve a ocurrir un colisión hay una nueva oportunidad de retransmisión, ahora con 4 números posibles. Si vuelve a ocurrir una nueva colisión ahora el rango de números a elegir será 8, etc. La fórmula que usa el algoritmo de backoff para calcular este rango r es: 0 ≤ r < 2k (1) donde k es un entero entre 0 y 10. r es un número entero, elegido aleatoriamente, que varía entre 0 y 2k –1. Por ejemplo, si k vale 2, el número r elegido aleatoriamente puede ser 0, 1, 2 ó 3. k es un entero que indica el número de intento de retransmisión para el cual se está aplicando el algoritmo. Por ejemplo, para el primer intento de retransmisión k vale 1, para el segundo intento vale 2, etc. El número máximo que puede adoptar k es 10 (aunque no es ése el número máximo de retransmisiones). Veamos cómo funciona este algoritmo. Supongamos que una estación está enviando una trama y se produce una colisión. En el primer intento de retransmisión k vale 1, por lo tanto los valores posibles de r son 0 y 1, de los cuales la estación que tiene que retransmitir elige aleatoriamente uno de ellos. Dado que el tiempo de espera para la retransmisión es uno de estos números multiplicado por el slot time, el tiempo de espera posible para este caso puede ser 0 slot times ó 1 slot time, dependiendo del valor de r seleccionado aleatoriamente. Si el número r seleccionado fue 0 entonces el tiempo de espera es 0 nanosegundos y la retransmisión ocurre inmediatamente. En cambio si el número r seleccionado fue 1 entonces el tiempo de espera es de 1 slot time ó 512 bits, lo que equivale a 51,2 µs para el caso de una red Ethernet de 10 Mbps. Del proceso descripto en el párrafo anterior está claro que si las dos estaciones retransmisoras involucradas en la colisión previa, hubiesen elegido el mismo valor de r al calcular el tiempo de espera, una nueva colisión hubiese ocurrido en el proceso de retransmisión. Cosa que es efectivamente posible y así funciona este algoritmo. Cuando esto ocurre se debe reprogramar una nueva retransmisión, ahora con un valor de k = 2 lo que da un conjunto posible de valores de r = 0, 1, 2 y 3 para que uno de éstos sea elegido aletoriamente por cada estación retransmisora. El valor elegido determinará cuántos slot time debe esperar cada estación antes de retransmitir. Si aún así volviese a ocurrir una nueva colisión porque ambas estaciones eligieron el mismo r entonces se vuelve a ejecutar el algoritmo, ahora con k = 3. De la explicación anterior se puede observar que a medida que hay más estaciones y más tráfico en la red, la probabilidad de colisiones es mayor, por lo que el algoritmo de backoff tiende a ejecutarse varias veces haciendo crecer la cantidad de enteros r posibles y de esa manera reduciendo la probabilidad de una nueva colisión en una retransmisión. Luego de diez intentos de retransmisión el valor de k deja de aumentar. En este punto 2k = 1024 por lo que el conjunto de enteros r va desde 0 hasta 1023. Si sigue habiendo colisiones, el proceso continúa hasta 16 reintentos, ahora manteniendo fijo en 10 el valor de k. Si luego de 16 reintentos sigue habiendo colisiones finalmente la interfaz Ethernet descarta la trama, informa la situación a su capa superior de software (capa 3) y continúa con la trama siguiente, si la tiene. Es razonable que en una red con carga de tráfico moderada, una estación adquiera el canal con un par de intentos de retransmisión. Cuando lo logra, borra el contador de backoff a cero para que esté listo para otra posible retransmisión a futuro como consecuencia de otra colisión. Ethernet 21