Maximum Transmission Unit: Unterschied zwischen den Versionen

Aus Foxwiki
Subpages:
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Zeile 44: Zeile 44:
|}
|}


Das Problem ist, dass die Probleme, die durch eine falsche MTU-Größe verursacht werden, sehr subtil sein können. Beispielsweise kann es möglich sein, zu einem Webserver zu navigieren, indem die Dateiübertragung fehlschlägt oder Verbindungen zu einem Chat-Server funktionieren, aber die Informationen darüber, wer online ist, um unvollständig zu sein oder zu fehlen.
==Probleme durch falsche MTU-Größe==
* Können sehr subtil sein
** Es ist möglich einem Webserver zu erreichen, die Dateiübertragung schlägt jedoch fehl
** Verbindung zu einem Chat-Server funktioniert, aber die Informationen darüber, wer online ist, sind unvollständig


Wenn Sie vermuten, dass das Problem die MTU-Größe ist, besteht das erste Problem darin, die MTU-Größe für die Netzwerkverbindung zu ermitteln. Zu diesem Zweck können Sie 'ping' verwenden, um ein Paket der erforderlichen Größe mit gesetztem Bit "Nicht fragmentieren" zu senden (es ist auch eine gute Idee, eine Paketanzahl von eins zu verwenden, da es keinen Sinn macht, mehr Netzwerkverkehr zu senden als Sie brauchen).
==Analyse==
* Wenn Sie vermuten, dass das Problem die MTU-Größe ist, besteht das erste Problem darin, die MTU-Größe für die Netzwerkverbindung zu ermitteln.  
* Zu diesem Zweck können Sie 'ping' verwenden, um ein Paket der erforderlichen Größe mit gesetztem Bit "Nicht fragmentieren" zu senden
* Es ist auch eine gute Idee, eine Paketanzahl von eins zu verwenden, da es keinen Sinn macht, mehr Netzwerkverkehr zu senden als Sie brauchen


'''Hinweis''' - Die im Befehl ping angegebene Größe entspricht der Anzahl der zu sendenden Datenbytes. Diese muss also 28 Byte kleiner sein als die tatsächliche Paketgröße, um die Größe des Paket-Headers zu berücksichtigen.
'''Hinweis'''
 
Die beim Befehl ping angegebene Größe entspricht der Anzahl der zu sendenden Datenbytes. Diese muss also 28 Byte kleiner sein als die tatsächliche Paketgröße, um die Größe des Paket-Headers zu berücksichtigen.


==Beispiel Ethernet==
==Beispiel Ethernet==
Ein Ethernet Frame besteht aus zwei Teilen: dem ''„Header“'', in dem Quell- und Zieladressen und andere wichtige Parameter für den Versand kodiert sind, und der Nutzlast, deren Größe durch die MTU bestimmt ist.
* Ein Ethernet Frame besteht aus zwei Teilen: dem ''„Header“'', in dem Quell- und Zieladressen und andere wichtige Parameter für den Versand kodiert sind, und der Nutzlast, deren Größe durch die MTU bestimmt ist.
 
* In diesem Versuch ist die Größe der MTU mit 1500 Byte vorgegeben. Mit Hilfe des ping-Programmes wird ein ''„Frame“'' erzeugt, der dann im Netzwerk über das Ethernet-Protokoll versendet wird.  
In diesem Versuch ist die Größe der MTU mit 1500 Byte vorgegeben. Mit Hilfe des ping-Programmes wird ein ''„Frame“'' erzeugt, der dann im Netzwerk über das Ethernet-Protokoll versendet wird. Die Verwendung des Begriffes Nutzlast ist hier mehrdeutig, da im OSI-Modell die verschiedenen Protokolle ineinander eingepackt (gekapselt) werden. Der im Versuch verwendete Linux-Befehl <tt>ping -s 1472 10.0.0.1</tt> (Windows-Befehl <tt>ping -l 1472 10.0.0.1</tt>) sendet dann ein Internet Control Message Protocol|ICM-Paket mit der Nutzlast von 1472 Bytes an die IP-Adresse 10.0.0.1.
* Die Verwendung des Begriffes Nutzlast ist hier mehrdeutig, da im OSI-Modell die verschiedenen Protokolle ineinander eingepackt (gekapselt) werden.  
* Der im Versuch verwendete Linux-Befehl <tt>ping -s 1472 10.0.0.1</tt> (Windows-Befehl <tt>ping -l 1472 10.0.0.1</tt>) sendet dann ein Internet Control Message Protocol|ICM-Paket mit der Nutzlast von 1472 Bytes an die IP-Adresse 10.0.0.1.
   
   
  ping -f -l 1472 10.0.0.1
  ping -f -l 1472 10.0.0.1
Zeile 66: Zeile 75:
         = 1518 bytes (kompletter Ethernet Frame)
         = 1518 bytes (kompletter Ethernet Frame)


Mit einem Sniffer wie z.&nbsp;B. Wireshark wird als Ethernet Header nur die Größe von 14 Byte angezeigt. Hierzu kommt noch die 4 Byte große Frame Check Sequence am Ende des Frames. Falls Virtual Local Area Network|VLANs verwendet werden, besteht der Header der Sicherungsschicht aus 18 Byte und der gesamte Ethernet Frame kann eine Größe von bis zu 1522 Byte annehmen. Würde IPv6 verwendet, änderte sich obige Berechnung dahingehend, dass der IPv6-Header der Vermittlungsschicht 40 statt 20 Byte beträgt und damit statt 1472 Byte ICMP-Nutzlast nur 1452 Byte möglich wären.
* Mit einem Sniffer wie z.&nbsp;B. Wireshark wird als Ethernet Header nur die Größe von 14 Byte angezeigt.  
* Hierzu kommt noch die 4 Byte große Frame Check Sequence am Ende des Frames.  
* Falls Virtual Local Area Network|VLANs verwendet werden, besteht der Header der Sicherungsschicht aus 18 Byte und der gesamte Ethernet Frame kann eine Größe von bis zu 1522 Byte annehmen.  
* Würde IPv6 verwendet, änderte sich obige Berechnung dahingehend, dass der IPv6-Header der Vermittlungsschicht 40 statt 20 Byte beträgt und damit statt 1472 Byte ICMP-Nutzlast nur 1452 Byte möglich wären.
 
Oft ist es hilfreich dem ping-Programm vorzugeben das ''„don’t fragment (DF) bit“'' für die Testpakete im IPv4-Header zu setzen denn dann erhält man eine Nachricht, falls die MTU überschritten wird.  


Oft ist es hilfreich dem ping-Programm vorzugeben das ''„don’t fragment (DF) bit“'' für die Testpakete im IPv4-Header zu setzen (für Linux z.&nbsp;B. <tt>ping -M do -s 1472 10.0.0.1</tt>, für Windows: <tt>ping -l 1472 -f 10.0.0.1</tt> ), denn dann erhält man eine Nachricht, falls die MTU überschritten wird. Leicht sichtbar machen lässt sich die ''Path MTU'' mit dem Programm ''tracepath'' für IPv4 bzw. ''tracepath6'' für IPv6.
* für Linux z.&nbsp;B. <tt>ping -M do -s 1472 10.0.0.1</tt>
* für Windows: <tt>ping -l 1472 -f 10.0.0.1</tt> )
Leicht sichtbar machen lässt sich die ''Path MTU'' mit dem Programm ''tracepath'' für IPv4 bzw. ''tracepath6'' für IPv6.




= Quellen=
= Quellen=
https://de.wikipedia.org/wiki/Maximum_Transmission_Unit
https://de.wikipedia.org/wiki/Maximum_Transmission_Unit

Version vom 28. Juli 2020, 15:19 Uhr

MTU (Maximum Transmission Unit) beschreibt die maximale Paketgröße eines Protokolls der Vermittlungsschicht (Schicht 3) des OSI-Modells in Byte, die ohne Zerlegung in den Rahmen (engl. „Frame“) eines Netzes der Sicherungsschicht (Schicht 2) passt.

  • Das Paket passt also in die Nutzlast (Payload) des Protokolls der Sicherungsschicht.
  • Die maximale Größe der Nutzlast der Sicherungsschicht wird auch oft als MTU der Sicherungsschicht (engl. 'link MTU') bezeichnet.

Die maximale Größe eines Rahmens der Sicherungsschicht lässt sich so berechnen:

Maximale Rahmengröße = Größte MTU aller benutzten Protokolle der Vermittlungsschicht + Größe der Sicherungsschichtheader
Typische MTU-Größen
Medium MTU in Bytes
Hyperchannel 65535
Token Ring (4)(802.5) 4464
Token Ring (16) 17914
FDDI 4352
Ethernet 1500
Gigabit Ethernet
mit Jumboframes
9000
PPPoE (z. B. DSL) ≤ 1492
SLIP / Point-to-Point Protocol|PPP (low delay) 296
X.25 576
FibreChannel theoretisch unbegrenzt
ISDN 576
DQDB
HIPPI
ATM 4500, s. u.
ARCNET
802.11 2312 (WiFi)

Probleme durch falsche MTU-Größe

  • Können sehr subtil sein
    • Es ist möglich einem Webserver zu erreichen, die Dateiübertragung schlägt jedoch fehl
    • Verbindung zu einem Chat-Server funktioniert, aber die Informationen darüber, wer online ist, sind unvollständig

Analyse

  • Wenn Sie vermuten, dass das Problem die MTU-Größe ist, besteht das erste Problem darin, die MTU-Größe für die Netzwerkverbindung zu ermitteln.
  • Zu diesem Zweck können Sie 'ping' verwenden, um ein Paket der erforderlichen Größe mit gesetztem Bit "Nicht fragmentieren" zu senden
  • Es ist auch eine gute Idee, eine Paketanzahl von eins zu verwenden, da es keinen Sinn macht, mehr Netzwerkverkehr zu senden als Sie brauchen

Hinweis

Die beim Befehl ping angegebene Größe entspricht der Anzahl der zu sendenden Datenbytes. Diese muss also 28 Byte kleiner sein als die tatsächliche Paketgröße, um die Größe des Paket-Headers zu berücksichtigen.

Beispiel Ethernet

  • Ein Ethernet Frame besteht aus zwei Teilen: dem „Header“, in dem Quell- und Zieladressen und andere wichtige Parameter für den Versand kodiert sind, und der Nutzlast, deren Größe durch die MTU bestimmt ist.
  • In diesem Versuch ist die Größe der MTU mit 1500 Byte vorgegeben. Mit Hilfe des ping-Programmes wird ein „Frame“ erzeugt, der dann im Netzwerk über das Ethernet-Protokoll versendet wird.
  • Die Verwendung des Begriffes Nutzlast ist hier mehrdeutig, da im OSI-Modell die verschiedenen Protokolle ineinander eingepackt (gekapselt) werden.
  • Der im Versuch verwendete Linux-Befehl ping -s 1472 10.0.0.1 (Windows-Befehl ping -l 1472 10.0.0.1) sendet dann ein Internet Control Message Protocol|ICM-Paket mit der Nutzlast von 1472 Bytes an die IP-Adresse 10.0.0.1.
ping -f -l 1472 10.0.0.1
          1472 bytes Nutzlast des ICMP-Protokolles (Transportschicht)
        +    8 bytes ICMP-Header (Transportschicht)
        +   20 bytes IPv4-Header (der Vermittlungsschicht)
       -------------
        = 1500 bytes (Nutzlast von Ethernet)
        +   14 bytes (Header der Sicherungsschicht)
        +    4 bytes (Frame Check Sequence)
       -------------
        = 1518 bytes (kompletter Ethernet Frame)
  • Mit einem Sniffer wie z. B. Wireshark wird als Ethernet Header nur die Größe von 14 Byte angezeigt.
  • Hierzu kommt noch die 4 Byte große Frame Check Sequence am Ende des Frames.
  • Falls Virtual Local Area Network|VLANs verwendet werden, besteht der Header der Sicherungsschicht aus 18 Byte und der gesamte Ethernet Frame kann eine Größe von bis zu 1522 Byte annehmen.
  • Würde IPv6 verwendet, änderte sich obige Berechnung dahingehend, dass der IPv6-Header der Vermittlungsschicht 40 statt 20 Byte beträgt und damit statt 1472 Byte ICMP-Nutzlast nur 1452 Byte möglich wären.

Oft ist es hilfreich dem ping-Programm vorzugeben das „don’t fragment (DF) bit“ für die Testpakete im IPv4-Header zu setzen denn dann erhält man eine Nachricht, falls die MTU überschritten wird.

  • für Linux z. B. ping -M do -s 1472 10.0.0.1
  • für Windows: ping -l 1472 -f 10.0.0.1 )

Leicht sichtbar machen lässt sich die Path MTU mit dem Programm tracepath für IPv4 bzw. tracepath6 für IPv6.


Quellen

https://de.wikipedia.org/wiki/Maximum_Transmission_Unit