¿Cuál es el tamaño "en el cable" de un marco de Ethernet? 1518 o 1542?

22

Según la tabla aquí , dice que MTU = 1500 bytes y que la parte de la carga útil es 1500 - 42 bytes o 1458 bytes (<- ¡esto es realmente incorrecto!). Ahora, además de eso, debe agregar encabezados IPv4 y UDP, que son 28 bytes (20 IP + 8 UDP). ¡Eso deja mi mensaje de aplicación máximo posible a 1430 bytes! Pero al buscar este número en Internet, veo 1472 en su lugar. ¿Estoy haciendo mal este cálculo aquí?

Todo lo que quiero saber es el mensaje de aplicación máxima que puedo enviar por cable sin riesgo de fragmentación. Definitivamente no es 1500 porque eso incluye los encabezados de trama. Alguien puede ayudar?


La confusión es que la CARGA DE PAGO en realidad puede ser tan grande como 1500 bytes y esa es la MTU. Entonces, ¿cuál es el tamaño en el cable para una carga útil de 1500? Desde esa tabla puede ser tan grande como 1542 bytes.

Entonces, la cantidad máxima de mensajes de aplicaciones que puedo enviar es 1472 (1500 - 20 (ip) - 8 (udp)) para un máximo en el tamaño del cable de 1542. Me sorprende cómo las cosas pueden complicarse tanto cuando en realidad son simples. Y no tengo idea de cómo se le ocurrió a alguien el número 1518 si la tabla dice 1542.

chrisapotek
fuente
La verdadera pregunta aquí es, ¿qué quiere decir con "en el tamaño del cable" y qué hará con esta información? ¿Estás tratando de calcular paquetes por segundo?
Mike Pennington
@MikePennington Intentando determinar el tiempo de tránsito en el cable. Con el tamaño del paquete y la velocidad de Ethernet (10 gigabits) puede calcular eso.
chrisapotek

Respuestas:

26

El diagrama en Wikipedia es horrible. Espero que lo que voy a escribir sea más claro.


La carga útil máxima en Ethernet 802.3 es de 1500 bytes.
Estos son los datos que intenta enviar por cable (y a qué se refiere la MTU).
[payload]<- 1500 Bytes

La carga útil se encapsula en una trama Ethernet (que agrega el MAC de origen / destino, la etiqueta VLAN, la longitud y la suma de comprobación CRC. Esto es un total de 22 bytes de "cosas" adicionales
[SRC+DST+VLAN+LENGTH+[payload]+CRC]<- 1522 Bytes

La trama se transmite a través del cable: antes de que su tarjeta de ethernet lo haga, básicamente se pone de pie y grita muy fuerte para asegurarse de que nadie más esté usando el cable (CSMA / CD): este es el delimitador de preámbulo y inicio de trama (SFD): 8 bytes adicionales, por lo que ahora tenemos:
[Preamble+SFD+[Ethernet Frame]]<- 1530 bytes

Finalmente, cuando un transceptor ethernet termina de enviar una trama, 802.3 requiere que transmita 12 bytes de silencio ("Interframe Gap") antes de que se le permita enviar su próxima trama.
[Preamble+SFD+[Ethernet Frame]+Silence]<- 1542 bytes transmitidos en el cable.


El preámbulo, SFD y la brecha entre tramas no cuentan como parte de la trama. Son una estructura de soporte para el protocolo Ethernet en sí.

La MTU se aplica a la carga útil: es la unidad de datos más grande que puede incluir en el paquete. Por lo tanto, un paquete de Ethernet con una MTU de 1500 bytes será en realidad una trama de 1522 bytes y 1542 bytes en el cable (suponiendo que haya una etiqueta de vLAN).

Entonces, la respuesta a su pregunta: ¿cuál es el paquete más grande que puedo enviar a través de Ethernet 802.3 sin fragmentación? - son 1500 bytes de datos de carga útil .

SIN EMBARGO, la capa de Ethernet puede no ser su factor limitante. Para descubrir si algo en el camino está restringiendo que la MTU sea menor a 1500 bytes de datos de carga útil, use uno de los siguientes:

  • Windows: ping hostname -f -l sizeofdata(técnica mencionada por John K)
  • BSD: ping -D -s sizeofdata hostname
  • Linux: ping -M do -s sizeofdata hostname

El mayor valor de sizeofdataeso funciona es la MTU (sobre la ruta particular que están tomando sus datos).

voretaq7
fuente
Sin embargo, tengo que excluir los encabezados IP y UDP de este 1500, ¿verdad? Entonces, la longitud máxima de mi mensaje de aplicación es 1472 para UDP.
chrisapotek
@chrisapotek Correcto: los encabezados IP y UDP (o TCP, GRE, etc.) son parte de la carga útil que se coloca en el marco de Ethernet
voretaq7
2
traceroute --mtu {target} en linux también mostrará max mtu
Rqomey
¿deberíamos ponernos un poco más "físicos"? en.wikipedia.org/wiki/8b/10b_encoding
SaveTheRbtz
@SaveTheRbtz oh, por favor, no: llegar a la representación binaria me duele bastante la cabeza :-)
voretaq7
2

Depende de la cantidad de datos que coloque en el marco. Si coloca 1500 bytes de datos en un marco, el tamaño total de su marco será de 1518 bytes. Con 1472 bytes de datos, terminará con un tamaño de trama total de 1500 ..

http://en.wikipedia.org/wiki/Ethernet_frame

Dicho esto, si realmente está interesado en probar la fragmentación, una buena manera de probar esto es con un buen ping antiguo con algunas banderas:

ping nombre de host -f -l sizeofdata

El indicador -f hará que el ping falle si el paquete está fragmentado. La clave para entender aquí es "sizeofdata" es la cantidad de datos que puede poner en un mensaje sin fragmentar, por lo que si envía una carga útil de 1500, comenzará a fragmentar a medida que supere los 1500 bytes. Sin embargo, baje eso a 1472 (1500 - los 18 bytes de arriba), y verá pasar los pings.

Univ426
fuente
Lo siento, 1542 bytes está muy por encima del marco estándar de Ethernet definido por IEEE 802.3. Una carga útil de Ethernet de 1500 bytes sin etiquetar es de 1518 bytes (sin incluir el SFD / preable). Una trama con etiqueta 802.1q tiene 1522 bytes (mismas advertencias)
Mike Pennington
Eso es muy confuso. MTU = 1500 pero el tamaño del cuadro es de 1542 ??? Entonces, MTU es solo la carga útil, en otras palabras, es el tamaño de cuadro de 1542 menos las 42 cosas adicionales. ¿Es eso correcto?
chrisapotek
Lo siento, escribí mal, acabo de actualizar la respuesta, pero si todavía estoy equivocado, hágamelo saber: esta es la matemática que recuerdo: S
Univ426
Lo siento, debo estar equivocado, pensé que lo entendía, pero claramente tengo mis números apagados, parece que es 1518: S lo siento
Univ426
No eres tú quien está confundido, sino todos. Entonces mis preguntas continúan. ¿Cuál es la diferencia entre MTU y el tamaño de trama de Ethernet? ¿La carga útil es de 1500 o menos?
chrisapotek
0

Para la trama básica Ethernet_II, el tamaño de la trama es de 1518 bytes (dentro o fuera del cable). Está formado por 6 bytes para cada una de las direcciones de destino y de origen, 2 bytes para el campo de tipo entre 46 y 1500 bytes para la carga útil (en su caso, el paquete IP completo con su encabezado IP y encabezado UDP) y 4 bytes para el FCS Además de esto, existe una restricción sobre cuán pequeño puede ser un marco (64 bytes). Es por eso que el rango es de 46 bytes (agregue esto a las dos direcciones y el tipo y el FCS y obtendrá 64 bytes: 46 + 6 + 6 + 2 + 4 = 64).

Si el marco está en una red que admite múltiples vlans y necesita etiquetar el marco con una etiqueta vlan, entonces se agrega un campo adicional antes del campo de tipo. Esto es de 4 bytes. Esto ahora significa que el rango de tamaños para la carga útil se puede reducir en 4 bytes en el extremo inferior y aún tener 64 bytes como mínimo. De ahí el 42. (Entonces 42 + 6 + 6 + 2 + 4 + 4 para la etiqueta vlan = 64)

Entonces, cuando el rango se escribe 1500-42 no significa 1500 menos 42, significa que cualquier cosa de 1500 a 42 bytes es válida. Uno de los cables, este marco etiquetado podría ser tan grande como 1522 bytes (si solo se usa una etiqueta, o 1526 si se usan dos etiquetas). Nada de esto explica el número 1542.

Para llegar a este número, debe considerar cómo se puede enviar una trama en Ethernet. No hay reloj en una LAN Ethernet, por lo que el transmisor de una trama envía una serie de 1 y 0 para configurar un reloj. Esto se llama preámbulo. No todos los oyentes 'escucharán' todo el preámbulo, pero la mayoría debería escuchar alguna parte del mismo. Para señalar el final del preámbulo, uno de los últimos 8 bits enviados se voltea para que, en lugar de 10101010, se convierta en 10101011. Este byte se denomina Inicio del delimitador de trama (SDF). Esto no es técnicamente útil para capturar el cable, por lo que los 7 bytes del preámbulo y el SDF de 1 byte normalmente no se cuentan, pero si fueran nuestro 1518 original ahora serían 1526. Todavía no es 1542 ..

Después de que se ha enviado un marco, hay un silencio forzado en el cable que se denomina espacio entre cuadros. Esto es equivalente a una transmisión de 12 bytes. Esto tampoco se cuenta ni se captura, pero si lo fuera, nos llevaría a 1538 bytes. La única forma de llegar ahora a 1542 desde 1538 es decir que el marco está etiquetado (es decir, contiene la etiqueta del plan de 4 bytes). Uf, 1542 por fin.

Todo está en la terminología. Una trama estándar tiene 1518 bytes en el cable (en lo que respecta a cualquier dispositivo de captura). Una trama etiquetada (etiqueta única) tiene 1522 bytes en el cable. Estos ocupan 1538 bytes o 1542 bytes de espacio de transmisión en el cable.

Espero que ayude a aclarar ..

Joevpt
fuente
-1

no, quiere que ocurra la fragmentación, esta es la razón por la cual el paquete debe fragmentarse, pero df set lo toma así como una carretera de 2 vías con un montón de semifinales frente a la misma carretera con un montón de pequeños autos inteligentes que van a los mismos semirremolques de destino transportan más carga útil pero son más lentos y pueden congestionar más fácilmente. Los automóviles más pequeños transportan menos pero viajan más rápido MSS tampoco es lo mismo que MTU

Joseph
fuente
1
Esta respuesta es casi, pero no del todo, totalmente ajena a la pregunta.
Kasperd