En las redes de computadoras , una trama Ethernet es una unidad de datos de protocolo de capa de enlace de datos y utiliza los mecanismos de transporte de capa física de Ethernet subyacentes . En otras palabras, una unidad de datos en un enlace Ethernet transporta una trama Ethernet como carga útil. [2]
Una trama Ethernet está precedida por un preámbulo y un delimitador de trama inicial (SFD), que forman parte del paquete Ethernet en la capa física . Cada trama de Ethernet comienza con un encabezado de Ethernet, que contiene las direcciones MAC de destino y de origen como sus primeros dos campos. La sección central de la trama son los datos de carga útil, incluidos los encabezados de otros protocolos (por ejemplo, el Protocolo de Internet ) transportados en la trama. La trama termina con una secuencia de verificación de trama (FCS), que es una verificación de redundancia cíclica de 32 bits que se utiliza para detectar cualquier corrupción de datos en tránsito.
Un paquete de datos en el cable y la trama como carga útil constan de datos binarios. Ethernet transmite datos con el octeto (byte) más significativo primero; Sin embargo, dentro de cada octeto, el bit menos significativo se transmite primero. [a]
La estructura interna de una trama Ethernet se especifica en IEEE 802.3. [2] La siguiente tabla muestra el paquete Ethernet completo y la trama interna, tal como se transmite, para el tamaño de carga útil hasta la MTU de 1500 octetos. [b] Algunas implementaciones de Gigabit Ethernet y otras variantes de Ethernet de mayor velocidad admiten tramas más grandes, conocidas como tramas jumbo .
La etiqueta 802.1Q opcional consume espacio adicional en el marco. Los tamaños de campo para esta opción se muestran entre paréntesis en la tabla anterior. IEEE 802.1ad (Q-in-Q) permite múltiples etiquetas en cada cuadro. Esta opción no se ilustra aquí.
Un paquete Ethernet comienza con un preámbulo de siete octetos (56 bits) y un delimitador de trama inicial (SFD) de un octeto (8 bits) . [d] Los valores de bits del preámbulo alternan 1 y 0, lo que permite a los receptores sincronizar su reloj a nivel de bits con el transmisor. El preámbulo es seguido por el SFD que termina con un 1 en lugar de 0, para romper el patrón de bits del preámbulo y señalar el inicio de la trama real. [1] : sección 4.2.5
Se requiere un circuito transceptor de capa física (PHY para abreviar) para conectar el MAC Ethernet al medio físico. La conexión entre un PHY y MAC es independiente del medio físico y utiliza un bus de la familia de interfaces independientes de medios ( MII , GMII , RGMII , SGMII , XGMII ). El preámbulo y la representación SFD dependen del ancho del bus:
El SFD va seguido inmediatamente de la dirección MAC de destino , que es el primer campo en una trama Ethernet.
El encabezado incluye direcciones MAC de destino y de origen (cada una de seis octetos de longitud), el campo EtherType y, opcionalmente, una etiqueta IEEE 802.1Q o una etiqueta IEEE 802.1ad .
El campo EtherType tiene dos octetos de longitud y se puede utilizar para dos propósitos diferentes. Los valores de 1500 e inferiores significan que se utiliza para indicar el tamaño de la carga útil en octetos, mientras que los valores de 1536 y superiores indican que se utiliza como EtherType, para indicar qué protocolo está encapsulado en la carga útil de la trama. Cuando se utiliza como EtherType, la longitud de la trama está determinada por la ubicación del espacio entre paquetes y la secuencia de verificación de trama válida (FCS).
La etiqueta IEEE 802.1Q o la etiqueta IEEE 802.1ad , si está presente, es un campo de cuatro octetos que indica membresía de LAN virtual (VLAN) y prioridad IEEE 802.1p . Los primeros dos octetos de la etiqueta se denominan identificador de ID de protocolo de etiqueta ( TPID ) y funcionan como el campo EtherType, lo que indica que la trama está etiquetada con 802.1Q o 802.1ad. 802.1Q usa un TPID de 0x8100. 802.1ad usa un TPID de 0x88a8.
La carga útil es un campo de longitud variable. Su tamaño mínimo se rige por el requisito de una transmisión de trama mínima de 64 octetos (bytes). [e] Teniendo en cuenta el encabezado y FCS, la carga útil mínima es de 42 octetos cuando una etiqueta 802.1Q está presente [f] y 46 octetos cuando está ausente. Cuando la carga útil real es inferior al mínimo, se añaden octetos de relleno en consecuencia. Los estándares IEEE especifican una carga útil máxima de 1500 octetos. Las tramas gigantes no estándar permiten cargas útiles más grandes en redes diseñadas para soportarlas.
La secuencia de verificación de trama (FCS) es una verificación de redundancia cíclica (CRC) de cuatro octetos que permite la detección de datos corruptos dentro de toda la trama tal como se reciben en el lado del receptor. Según el estándar, el valor FCS se calcula en función de los campos de la trama MAC protegida: dirección de origen y destino, campo de longitud/tipo, datos del cliente MAC y relleno (es decir, todos los campos excepto el FCS).
Según el estándar, este cálculo se realiza utilizando el algoritmo CRC-32 de desplazamiento hacia la izquierda ( polinomio = 0x4C11DB7, CRC inicial = 0xFFFFFFFF, CRC se complementa posteriormente, valor de verificación = 0x38FB2284). El estándar establece que los datos se transmiten primero con el bit menos significativo (bit 0), mientras que el FCS se transmite primero con el bit más significativo (bit 31). [1] : sección 3.2.9 Una alternativa es calcular un CRC utilizando el CRC-32 con desplazamiento hacia la derecha (polinomio = 0xEDB88320, CRC inicial = 0xFFFFFFFF, CRC es postcomplementado, verificar valor = 0x2144DF1C), lo que dará como resultado un CRC que Es una inversión de bits del FCS y transmite primero los datos y el bit menos significativo del CRC, lo que da como resultado transmisiones idénticas.
El estándar establece que el receptor debe calcular un nuevo FCS a medida que se reciben los datos y luego comparar el FCS recibido con el FCS que el receptor ha calculado. Una alternativa es calcular un CRC tanto en los datos recibidos como en el FCS, lo que dará como resultado un valor de "verificación" fijo distinto de cero. (El resultado es distinto de cero porque el CRC se complementa posteriormente durante la generación del CRC). Dado que los datos se reciben primero en el bit menos significativo, y para evitar tener que almacenar en un buffer octetos de datos, el receptor normalmente utiliza el CRC-32 con desplazamiento hacia la derecha. Esto hace que el valor de "verificación" (a veces llamado "verificación mágica") sea 0x2144DF1C. [5]
Sin embargo, la implementación de hardware de un CRC con desplazamiento lógico a la derecha puede utilizar un registro de desplazamiento de retroalimentación lineal con desplazamiento hacia la izquierda como base para calcular el CRC, invirtiendo los bits y dando como resultado un valor de verificación de 0x38FB2284. Dado que el complemento del CRC se puede realizar después del cálculo y durante la transmisión, lo que queda en el registro de hardware es un resultado no complementado, por lo que el residuo para una implementación de desplazamiento a la derecha sería el complemento de 0x2144DF1C = 0xDEBB20E3, y para un desplazamiento a la izquierda implementación, el complemento de 0x38FB2284 = 0xC704DD7B.
El final de una trama suele indicarse mediante el símbolo de fin del flujo de datos en la capa física o mediante la pérdida de la señal portadora; un ejemplo es 10BASE-T , donde la estación receptora detecta el final de una trama transmitida por pérdida de la portadora. Las capas físicas posteriores utilizan un símbolo o secuencia de fin de datos o de fin de flujo explícito para evitar ambigüedades, especialmente cuando la portadora se envía continuamente entre tramas; un ejemplo es Gigabit Ethernet con su esquema de codificación 8b/10b que utiliza símbolos especiales que se transmiten antes y después de transmitir una trama. [6] [7]
La brecha entre paquetes (IPG) es el tiempo de inactividad entre paquetes. Después de enviar un paquete, los transmisores deben transmitir un mínimo de 96 bits (12 octetos) de estado de línea inactiva antes de transmitir el siguiente paquete.
Existen varios tipos de tramas Ethernet:
Los diferentes tipos de tramas tienen diferentes formatos y valores de MTU , pero pueden coexistir en el mismo medio físico. Es posible diferenciar entre tipos de marcos basándose en la tabla de la derecha.
Además, los cuatro tipos de tramas Ethernet pueden contener opcionalmente una etiqueta IEEE 802.1Q para identificar a qué VLAN pertenece y su prioridad ( calidad de servicio ). Esta encapsulación está definida en la especificación IEEE 802.3ac y aumenta la trama máxima en 4 octetos.
La etiqueta IEEE 802.1Q, si está presente, se coloca entre los campos Dirección de origen y EtherType o Longitud. Los primeros dos octetos de la etiqueta son el valor del Identificador de protocolo de etiqueta (TPID) de 0x8100. Este se encuentra en el mismo lugar que el campo EtherType/Length en marcos sin etiquetar, por lo que un valor EtherType de 0x8100 significa que el marco está etiquetado y el verdadero EtherType/Length se encuentra después de la etiqueta Q. El TPID va seguido de dos octetos que contienen la información de control de etiquetas (TCI) (la prioridad IEEE 802.1p ( calidad de servicio ) y la identificación de VLAN). A la etiqueta Q le sigue el resto del marco, utilizando uno de los tipos descritos anteriormente.
La trama Ethernet II (también conocida como DIX Ethernet , llamada así por DEC , Intel y Xerox , los principales participantes en su diseño [8] ), define el campo EtherType de dos octetos en una trama Ethernet , precedido por las direcciones MAC de destino y de origen, que identifica un protocolo de capa superior encapsulado por los datos de la trama. En particular, un valor EtherType de 0x0800 indica que la trama contiene un datagrama IPv4 , 0x0806 indica un datagrama ARP y 0x86DD indica un datagrama IPv6 . Consulte EtherType § Valores para obtener más información.
A medida que este estándar desarrollado por la industria pasó por un proceso formal de estandarización IEEE , el campo EtherType se cambió a un campo de longitud (datos) en el nuevo estándar 802.3. [h] Dado que el destinatario aún necesita saber cómo interpretar la trama, el estándar requería un encabezado IEEE 802.2 para seguir la longitud y especificar el tipo. Muchos años después, el estándar 802.3x-1997 y las versiones posteriores del estándar 802.3 aprobaron formalmente ambos tipos de estructuras. La trama Ethernet II es la más común en las redes de área local Ethernet, debido a su simplicidad y menor sobrecarga.
Para permitir que algunas tramas que usan tramas Ethernet II y otras que usan la versión original de tramas 802.3 se usen en el mismo segmento Ethernet, los valores de EtherType deben ser mayores o iguales a 1536 (0x0600). Se eligió ese valor porque la longitud máxima del campo de carga útil de una trama Ethernet 802.3 es 1500 octetos (0x05DC). Por lo tanto, si el valor del campo es mayor o igual a 1536, la trama debe ser una trama Ethernet II, siendo ese campo un campo de tipo. [9] Si es menor o igual a 1500, debe ser una trama IEEE 802.3, siendo ese campo un campo de longitud. Los valores entre 1500 y 1536, exclusivos, no están definidos. [10] Esta convención permite que el software determine si una trama es una trama Ethernet II o una trama IEEE 802.3, permitiendo la coexistencia de ambos estándares en el mismo medio físico.
El formato de trama 802.3 "sin formato" de Novell se basó en los primeros trabajos de IEEE 802.3. Novell utilizó esto como punto de partida para crear la primera implementación de su propio protocolo de red IPX sobre Ethernet. No utilizaron ningún encabezado LLC pero iniciaron el paquete IPX directamente después del campo de longitud. Esto no se ajusta al estándar IEEE 802.3, pero dado que IPX siempre tiene FF como los dos primeros octetos (mientras que en IEEE 802.2 LLC ese patrón es teóricamente posible pero extremadamente improbable), en la práctica esto generalmente coexiste en el cable con otras implementaciones de Ethernet. con la notable excepción de algunas de las primeras formas de DECnet que se confundieron con esto.
Novell NetWare utilizó este tipo de trama de forma predeterminada hasta mediados de los años noventa, y dado que NetWare estaba entonces muy extendido, mientras que IP no, en algún momento la mayor parte del tráfico Ethernet del mundo corría por 802.3 "sin procesar" con IPX. Desde NetWare 4.10, NetWare utiliza de forma predeterminada IEEE 802.2 con LLC (NetWare Frame Type Ethernet_802.2) cuando se utiliza IPX. [11]
Algunos protocolos, como los diseñados para la pila OSI , operan directamente sobre la encapsulación IEEE 802.2 LLC, que proporciona servicios de red tanto orientados a conexión como sin conexión.
La encapsulación IEEE 802.2 LLC no se usa ampliamente en las redes comunes actualmente, con la excepción de grandes instalaciones corporativas de NetWare que aún no han migrado a NetWare sobre IP . En el pasado, muchas redes corporativas utilizaban IEEE 802.2 para admitir puentes de traducción transparentes entre redes Ethernet y Token Ring o FDDI .
Existe un estándar de Internet para encapsular el tráfico IPv4 en tramas SAP/SNAP IEEE 802.2 LLC. [12] Casi nunca se implementa en Ethernet, aunque se usa en FDDI, Token Ring, IEEE 802.11 (con la excepción de la banda de 5,9 GHz , donde usa EtherType) [13] y otras LAN IEEE 802 . IPv6 también se puede transmitir a través de Ethernet usando IEEE 802.2 LLC SAP/SNAP, pero, nuevamente, casi nunca se usa.
Al examinar el encabezado 802.2 LLC, es posible determinar si va seguido de un encabezado SNAP. El encabezado LLC incluye dos campos de dirección de ocho bits, llamados puntos de acceso a servicios (SAP) en terminología OSI; cuando tanto el SAP de origen como el de destino se establecen en el valor 0xAA, el encabezado LLC va seguido de un encabezado SNAP. El encabezado SNAP permite utilizar valores EtherType con todos los protocolos IEEE 802, además de admitir espacios de ID de protocolo privados.
En IEEE 802.3x-1997, el estándar IEEE Ethernet se cambió para permitir explícitamente el uso del campo de 16 bits después de las direcciones MAC como campo de longitud o campo de tipo.
El conjunto de protocolos AppleTalk v2 en Ethernet (" EtherTalk ") utiliza encapsulación IEEE 802.2 LLC + SNAP.
Podemos calcular la sobrecarga del protocolo para Ethernet como un porcentaje (tamaño del paquete incluido IPG)
Podemos calcular la eficiencia del protocolo para Ethernet.
La máxima eficiencia se logra con el mayor tamaño de carga útil permitido y es:
para tramas sin etiquetar, dado que el tamaño del paquete es de carga útil máxima de 1500 octetos + preámbulo de 8 octetos + encabezamiento de 14 octetos + final de 4 octetos + espacio mínimo entre paquetes correspondiente a 12 octetos = 1538 octetos. La máxima eficiencia es:
cuando se utiliza el etiquetado VLAN 802.1Q.
El rendimiento se puede calcular a partir de la eficiencia.
donde la velocidad de bits neta de la capa física (la velocidad de bits del cable) depende del estándar de capa física de Ethernet y puede ser 10 Mbit/s, 100 Mbit/s, 1 Gbit/s o 10 Gbit/s. En consecuencia, el rendimiento máximo para 100BASE-TX Ethernet es de 97,53 Mbit/s sin 802.1Q y de 97,28 Mbit/s con 802.1Q.
La utilización del canal es un concepto que a menudo se confunde con la eficiencia del protocolo. Considera únicamente el uso del canal sin tener en cuenta la naturaleza de los datos transmitidos (ya sea carga útil o sobrecarga). En la capa física, el canal de enlace y el equipo no conocen la diferencia entre tramas de datos y de control. Podemos calcular la utilización del canal :
El tiempo total considera el tiempo de ida y vuelta a lo largo del canal, el tiempo de procesamiento en los hosts y el tiempo de transmisión de datos y acuses de recibo. El tiempo dedicado a la transmisión de datos incluye datos y reconocimientos.
Una trama runt es una trama Ethernet que tiene menos que la longitud mínima de 64 octetos de IEEE 802.3. Los fotogramas runt son causados más comúnmente por colisiones ; Otras posibles causas son un mal funcionamiento de la tarjeta de red , insuficiencia de datos en el búfer , falta de coincidencia del dúplex o problemas de software. [14]
Los códigos de operación se transmiten primero en el octeto de orden superior. Dentro de cada octeto, los bits se transmiten primero, el bit menos significativo. [...] Cada octeto de la trama MAC, con la excepción del FCS, se transmite primero el bit menos significativo.