Über MTU-Einstellungen in Maschinen und Switches

13697
performanceuser

Angenommen, ich habe zwei Maschinen und einen Switch.

M1 - Schalter - M2.

Die Einstellungen sind:

  • Bei M1 ist die MTU auf 100 eingestellt
  • Switch hat MTU auf 1000 eingestellt
  • M2 hat MTU auf 1000 eingestellt.

Fragen:

  1. Wenn M1 versucht, ein 100-Byte-Paket an M2 zu senden, sollte es kein Problem geben, oder?

  2. Gibt es ein Problem, wenn M2 versucht, ein 1000-Byte-Paket an M1 zu senden?

  3. M2 kann ein 1000-Byte-Paket an Switch senden. Wenn Switch jedoch versucht, das Paket an M1 zu senden, muss das Paket in 10 kleine Pakete fragmentiert werden. Ist das richtig?

Aktualisieren:

Um realistischer zu sein: M1, Switch und M2 laufen alle in einem 10G-Netzwerk und wir verwenden IPv4.

Die Einstellungen sind:

  • Bei M1 ist die MTU auf 1500 eingestellt

  • Für den Switch wurde die MTU auf 9000 eingestellt

  • M2 hat MTU auf 9000 gesetzt

Hilft es, die Frage zu beantworten?

3
Um genauer und realistischer zu sein: performanceuser vor 13 Jahren 0

3 Antworten auf die Frage

7
Spiff

Sie haben nicht angegeben, über welche Netzwerktechnologien Sie gesprochen haben, also gehe ich von Ethernet und IP [v4] aus.

Ethernet hat den Bereich akzeptabler Nutzdatenlängen immer auf 46 bis 1500 Byte festgelegt und erfordert, dass alle Geräte (Hosts und Switches) im LAN Frames mit 1500 Byte Nutzdaten empfangen können. Aus diesem Grund bietet Ethernet weder einen Fragmentierungsmechanismus noch einen Mechanismus zum Kommunizieren oder Aushandeln von MTUs (oder, was noch wichtiger ist, M R Us - Maximum Receive Units) zwischen Geräten. Tatsächlich erscheint der Begriff "MTU" oder "Maximum Transmission Unit" an keiner Stelle in der IEEE 802.3-Spezifikation.

Fügen wir also IP in das Bild ein. IP hat ein MTU-Konzept, und bei den meisten modernen IP-Stacks können Sie MTUs pro Schnittstelle (und mehr) einstellen. Aber Ihre gestellte Frage klappt im Zusammenhang mit IP auch nicht ganz, denn IP hat eine minimale MTU von 576. Lassen Sie mich Ihre Frage wiederholen, da "M1 eine MTU von 600 hat und M2 eine MTU von 1200 hat ". Aber welche MTU sollen wir sagen, die "Switch" hat? Wenn es sich bei Switch lediglich um einen Layer-2-Ethernet-Switch handelt, gibt es kein Konzept einer einstellbaren MTU. Damit Ihre Frage im IP-Kontext klappen kann, müssen wir diesen Switch in einen Router umwandeln. Nennen wir es "Router" und sagen, es hat zwei Ethernet-Schnittstellen, eine an M1 und eine an M2. Sagen wir auch, dass es auf beiden Schnittstellen MTUs von 1200 gesetzt hat.

  1. Wenn M1 einen Frame mit einer Nutzlast von 600 Byte an M2 sendet, wäre dies kein Problem.
  2. Wenn M2 einen Frame mit einer 1200-Byte-Nutzlast an M1 sendet, wäre dies immer noch kein Problem. Warum nicht? Weil die Einstellung der M1 von M1 nicht notwendigerweise ihre MRU geändert hat, und meiner Erfahrung nach sind MTUs und MRUs voneinander getrennt, und Implementierungen geben Ihnen keine Möglichkeit, Ihre MRU zu ändern. Die MRU von M1 an dieser Schnittstelle wäre also 1500, da es sich um Ethernet handelt.
  3. Der Router weiß nicht, dass er die Frames von M2 fragmentieren muss, da er der Ansicht ist, dass alle Hosts im Ethernet-LAN, in denen M1 eingeschaltet ist, Frames mit 1200-Byte-Payloads empfangen können, da er für eine 1200-Byte-MTU konfiguriert wurde Schnittstelle. Glücklicherweise würde dies wahrscheinlich noch gut funktionieren, wie ich in (2) besprochen habe.

Okay, versuchen Sie immer noch, den wahren Geist Ihrer Frage zu finden und zu beantworten. Nehmen wir an, die Verbindung zwischen M1 und Router ist eigentlich PPP anstelle von Ethernet. Das PPP-Protokoll ermöglicht Hosts die Kommunikation / Verhandlung ihrer MRUs. Nehmen wir an, dass M1 dem Router mitgeteilt hat, dass M1 eine MRU-Beschränkung von 600 Byte hat, sodass der Router seine MTU für diese Verbindung auf 600 Byte gesetzt hat.

Wenn M2 in diesem Fall ein 1200-Byte-IP-Datagramm an M1 sendet (ohne das Bit "Don't Fragment" im IP-Header festzulegen), empfängt der Router das Datenpaket einwandfrei und erkennt, dass es zum Senden fragmentiert werden muss es zu M1. Fragt der Router ihn also in zwei 600-Byte-Fragmente auf? Nun, nein, aus ein paar Gründen ist es nicht so einfach.

Ein Grund ist, dass jedes Fragment einen eigenen IP-Header haben muss, der die Größe jedes Fragments nach dem ersten um 20 Byte erhöht. Der andere Grund ist, dass das Fragmentierungs-Offset-Feld von IP in 8-Byte-Chunks statt in einzelnen Bytes zählt.

Nehmen wir an, das 1200-Byte-Datagramm bestand aus 1172 Byte Anwendungsdaten in einem UDP-Datagramm (8 Byte UDP-Header, 20 Byte IP-Header). Nach der Fragmentierung würde das erste Fragment einen 20-Byte-IP-Header, den 8-Byte-UDP-Header und die ersten 568 Bytes der Anwendungsdaten für insgesamt 586 Bytes enthalten. Der zweite Frame würde einen weiteren 20-Byte-IP-Header, keinen UDP-Header und die nächsten 576 Bytes der Anwendungsdaten für insgesamt 586 Bytes enthalten. So bleiben 28 Byte Anwendungsdaten für das endgültige Fragment übrig, das mit seinem hinzugefügten IP-Header 48 Byte betragen würde.

Das Update basiert auf Kavins Update, dass er über Jumbo-Frames sprach:
Jumbo-Frames sind etwas, das einige Hersteller von Gigabit-Ethernet-Produkten eigenständig um die Zeit herum erstellt haben, als GigE erstellt wurde. Dies wurde (glaube ich) später von der IEEE abgelehnt oder ignoriert und scheint unwahrscheinlich jemals Teil des 802.3-Ethernet-Standards werden. Sogar IEEE 802.3-2008, das nicht nur 1000BASE-T, sondern auch 10 G BASE-T enthält, enthält nichts über 9000-Byte-Frame-Nutzdaten.

Die Anbieter von Jumbo-Frames hatten keine Art von Autonegotiation oder Kommunikationsmechanismus für die Unterstützung von Jumbo-Frames und erstellten auch keine Fragmentierungsmethode auf Ethernet-Ebene, um den (sehr häufigen) Fall zu behandeln, den Sie illustriert haben. Wenn Sie Ihr Ethernet-LAN ​​in diesem nicht standardmäßigen Modus betreiben möchten, müssen Sie sicherstellen, dass alle Hosts und Switches in Ihrem LAN Jumbo-Frames unterstützen.

Wenn die NIC von M1 nicht in der Lage ist, Jumbo-Frames zu empfangen, wird ein Jumbo-Frame als "Ethernet-Jabber" betrachtet - ein defektes Gerät, das "Jabbering on und on" hält; Sendet Bits weit über das Ende eines maximal zulässigen 1500 (wirklich 1518) Bytes hinaus. Beachten Sie, dass diese Bedeutung von Jabber ein Begriff für eine Art Ethernet-Fehlfunktion ist und nicht mit dem gleichnamigen Internet-Chat-System "Jabber" zu verwechseln ist. Sie müssen entscheiden, ob Sie die Verwendung von Jumbo-Frames in diesem Netzwerk beenden oder M1 aktualisieren möchten, um eine NIC zu haben, die Jumbo-Frames unterstützt.

Wenn M1 NIC ist geeignet zum Empfang von Jumbo - Frames, ich vermute, dass für diese Schnittstelle bis zu 1500 seine IPv4 - MTU - Einstellung wird sichergestellt, es nicht überträgt keine Jumbo - Größe IP - Datagramme in einem Jumbo - Ethernet - Frame, aber es wird wahrscheinlich in der Lage sein, Große IP-Datagramme in einzelnen Jumbo-Ethernet-Frames empfangen - kein Problem, da MTU wiederum keine MRU ist und das Festlegen einer IP-Layer-MTU keinen Einfluss darauf hat, welche Frame-Puffer der NIC zulässt. Wenn Sie nun eine NIC / Treibereinstellung ändern, um der NIC zu sagen, dass nur 1500-Byte-Puffer anstelle von 9000-Byte-Puffern verwendet werden sollen, ist dies eine Änderung der Ethernet-Schicht und würde Ihre NIC wahrscheinlich so tun, als wäre sie nicht 9000-Byte-Puffer unterstützen.

Vielen Dank für Ihre Antwort. Sie sagten, dass der Switch keine MTU-Einstellung hat? Kannst du einen Blick auf meinen ursprünglichen Beitrag werfen? Ich habe mich etwas verändert und die Frage ist realistischer. performanceuser vor 13 Jahren 0
In meinem Fall befinden sich alle Maschinen in einem großen 10G-Netzwerk, für die Kommunikation ist kein Router erforderlich. Sie sind alle mit einem Schalter verbunden. Und M1 ist auf 1500 eingestellt, M2 auf den Jumbo-Frame 9000 performanceuser vor 13 Jahren 0
Okay @ Kavin, ich habe meine Antwort mit Informationen zu Jumbo-Frames aktualisiert. Spiff vor 13 Jahren 0
Ich danke dir sehr. Ich freue mich sehr über Ihre Hilfe und eine sehr informative Antwort. Ich habe ein Problem, dass in einem Subnetz alle Maschinen Jumbo-Frames aktiviert haben, während diese Änderung eines der Leistungstestergebnisse beeinflusst. Die CPU-Auslastung fällt von 70% auf 20%. Können Sie uns Vorschläge geben? performanceuser vor 13 Jahren 1
Bitte beziehen Sie sich auf diese Frage: http: //superuser.com/questions/271080/why-jumbo-frames-affects-the-performance-of-the-server performanceuser vor 13 Jahren 0
1
TheCompWiz

Ich glaube nicht, dass Sie eine MTU auf 100 setzen können und trotzdem eine IP-Verbindung herstellen können. Ich glaube, ipv4 erfordert ein Minimum von 576 ... und möglicherweise mehr. Das ist CRAAAZY SMALL ... 10/100 Switches, die in den letzten 20 Jahren gebaut wurden, haben eine MTU von 1492 oder 1500 ... und in anspruchsvolleren Netzwerken mit besserer Ausstattung bis 9000.

Was ist, wenn es über 9000 ist! : P Not Kyle stop stalking me vor 13 Jahren 1
Ich muss gestehen ... ich habe es getan. TheCompWiz vor 13 Jahren 0
Ich habe gerade versucht, mein Problem zu abstrahieren. performanceuser vor 13 Jahren 0
Ich muss nur den Mechanismus kennen. Das erste Wort ist "angenommen". Ich sage nicht, dass dies ein echter Arbeitsfall ist performanceuser vor 13 Jahren 0
Verwenden Sie dann realistische Werte für Ihr Beispiel. Sie haben gefragt, ob ein Paket, das versucht, eine Schnittstelle mit einer auf 100 eingestellten MTU zu verlassen, die andere Maschine erreichen kann. Die Antwort ist nein. Einfach, weil das Fenster zu klein ist, um die erforderlichen Informationen zu enthalten, um zur anderen Seite zu gelangen. TheCompWiz vor 13 Jahren 0
0
Majenko

Es gibt eine Technologie namens "pmtu" oder Path MTU, bei der ein Ende die maximale Paketgröße ermittelt, die es zuverlässig an das andere senden kann, und seine Pakete auf die Größe der kleinsten MTU skaliert.

Größere Pakete als diese sind fragmentiert, es sei denn, im IP-Header ist das Flag "DF" oder "Do not fragment" gesetzt. In diesem Fall geht das Paket unterwegs verloren.

Bei einer Peer-to-Peer-Verbindung, wie Sie sie beschreiben, sollte PMTU sehr gerne verwendet werden. Es wird nur dann zu einem Problem, wenn Sie durch mehrere Netzwerke routen und einer der Router zwischen Ihnen und dem Ziel PMTU nicht ordnungsgemäß unterstützt und die zu verwendende MTU-Größe nicht meldet.