Fragen zu MTU und MSS

Started by n3, September 17, 2025, 08:38:55 PM

Previous topic - Next topic
Hey Zusammen, ich habe ein Glasfaseranschluss der Telekom und das WAN Interface entsprechend konfiguriert. Ich möchte nun auch die MTU und MSS richtig setzen. Für die Telekom wird 1492 empfohlen und die opnsens zeigt als Hinweis "Calculated PPP MTU 1484" an. Was bedeutet das?

Ich habe über Ping die MTU geprüft:
ping -f -l 1456 8.8.8.8

Alles was über 1456 ist geht nicht, da es fragmentiert werden würde. Die 1456 deutet aber eher auf eine MTU von 1484 hin (IP-Header 20 + ICMP-Header 8).

Bin dacher verwirrt, ob ich nun 1484 oder 1492 eintragen soll.

Dann kommt MSS. Da ich IPv4 und IPv6 nutzen will, ziehe ich 60 hab und könnte auf 1432 bzw. 1424. Aber im Hinweis steht, dass die 40 bzw. 60 von eingetragenen Wert angezogen werden. Bin daher unschlüssig was ich eintragen soll.

Soll ich dann noch unter Firewall - > Setting - > Normalization das MSS konfigurieren, oder reicht der Wert im WAN Interface.

Hab auch im Netzwerkkontroller vom WAN in proxmox die MTU angegeben. Müssen alle Controller die MTU gesetzt bekommen?

September 17, 2025, 09:54:44 PM #1 Last Edit: September 17, 2025, 10:11:47 PM by meyergru
Die MSS musst Du normalerweise nicht setzen, da sie aus der MTU abgeleitet wird.

Dann solltest Du wissen, dass der ping-Befehl unter Linux sich von dem unter FreeBSD unterscheidet, denn offenbar hast Du nicht die OpnSense CLI genutzt. Ich würde zuerst vom OpnSense-CLI testen, um den Einfluss der LAN-MTU und MSS-Clamping auszuschließen. Dort geht das so:

ping -s 1472 8.8.8.8

Eine funktionierende Ping-Size von 1472, wenn sie funktioniert, zeigt eine maximal mögliche MTU von 1500 Bytes an (eben abzüglich IP-Header + ICMP-Header).

1456 entspräche also einer MTU von 1484, was ungewöhnlich wenig ist. Normal wären 1492 oder 1488, weil man von der physischen MTU 8 Byte PPPoE-Header und ggf. noch 4 Byte VLAN-Header abziehen muss (letzteres braucht man aber oft nicht). Die Telekom verwendet m.W. sowohl bei Glasfaser wie bei VDSL PPPoE über VLAN und normalerweise macht das Tagging die OpnSense, nicht das Modem oder der ONT.

Lies vielleicht mal dies und entferne vorher die ganzen unnötigen Einstellungen wie MSS und MSS-Clamping, bevor Du testest. Beachte auch, das die Reihenfolge der Konfiguration der Interfaces (WAN/PPPoE/VLAN/physisches Interface) eine Rolle spielt und mach dann einen sauberen Reboot vor weiteren Tests.

MSS-Clamping würde ich erst dann machen, wenn Du eine WAN-MTU < 1500 benötigst und auf Deinen LAN-Interfaces weiter 1500 haben willst - es funktioniert auch ohne, wenn Du LAN-MTU = WAN MTU setzt, aber wie gesagt: wenn die feststeht.

Je nachdem, wie Du das Ganze von der Topologie her aufgebaut hast, kann Dir da auch Dein Proxmox reinspucken (BTW: Du solltest so etwas erwähnen, das verkompliziert ggf. einiges, siehe auch hier, Punkte 8 und 16, oder am besten gleich ganz).
Intel N100, 4* I226-V, 2* 82559, 16 GByte, 500 GByte NVME, ZTE F6005

1100 down / 800 up, Bufferbloat A+

Quote from: meyergru on September 17, 2025, 09:54:44 PMDie MSS musst Du normalerweise nicht setzen, da sie aus der MTU abgeleitet wird.
OK, hab die Einstellung zurückgenommen und auch die in proxmox.

Quote from: meyergru on September 17, 2025, 09:54:44 PMDann solltest Du wissen, dass der ping-Befehl unter Linux sich von dem unter FreeBSD unterscheidet, denn offenbar hast Du nicht die OpnSense CLI genutzt. Ich würde zuerst vom OpnSense-CLI testen, um den Einfluss der LAN-MTU und MSS-Clamping auszuschließen. Dort geht das so:

ping -s 1472 8.8.8.8

Eine funktionierende Ping-Size von 1472, wenn sie funktioniert, zeigt eine maximal mögliche MTU von 1500 Bytes an (eben abzüglich IP-Header + ICMP-Header).

1456 entspräche also einer MTU von 1484, was ungewöhnlich wenig ist. Normal wären 1492 oder 1488, weil man von der physischen MTU 8 Byte PPPoE-Header und ggf. noch 4 Byte VLAN-Header abziehen muss (letzteres braucht man aber oft nicht). Die Telekom verwendet m.W. sowohl bei Glasfaser wie bei VDSL PPPoE über VLAN und normalerweise macht das Tagging die OpnSense, nicht das Modem oder der ONT.
Hab jetzt den Ping über die CLI von opnsense gemacht und 1460 geht, 1461 geht nicht. (vorher war es ja 1456 als MTU und MSS gesetzt war)

Quote from: meyergru on September 17, 2025, 09:54:44 PMLies vielleicht mal dies
Ich habe es jetzt nicht mit dem Tool getestet, aber das Skript macht ja nur den Ping solange, bis die max. Größe gefunden ist. Das habe ich manuell auch gemacht und lande bei 1460.

Jetzt würde ich diesen Wert in der Advanced Configuration setzen und nicht im WAN Interface wie bisher. Aber was meinst du mit:
QuoteAs an example, if you have a WAN over PPPoE over VLAN, you should have to set WAN MTU = 1500, PPPOE VLAN = 1508, ethernet port = 1512, and it really only works for me with these tightly controlled MTUs:

Quote from: meyergru on September 17, 2025, 09:54:44 PMBeachte auch, das die Reihenfolge der Konfiguration der Interfaces (WAN/PPPoE/VLAN/physisches Interface) eine Rolle spielt
Was meinst du damit?



September 17, 2025, 11:39:26 PM #3 Last Edit: September 17, 2025, 11:42:30 PM by meyergru
Quote from: n3 on September 17, 2025, 11:25:31 PMHab jetzt den Ping über die CLI von opnsense gemacht und 1460 geht, 1461 geht nicht. (vorher war es ja 1456 als MTU und MSS gesetzt war)

Klar, also ist die MTU 1488, wie erwartet, nämlich 1500 - 8 Byte PPPoE - 4 Byte VLAN, wie ich sagte.

Quote from: n3 on September 17, 2025, 11:25:31 PMIch habe es jetzt nicht mit dem Tool getestet, aber das Skript macht ja nur den Ping solange, bis die max. Größe gefunden ist. Das habe ich manuell auch gemacht und lande bei 1460.

Das Tool ist nicht der Punkt, Du solltest vielleicht alles lesen. Es geht darum, wie Du auch bei defekter PMTUD mit der üblichen MTU von 1500 bei WAN und LAN arbeiten kannst, ohne, dass irgendwelches MSS-Clamping o.ä. notwendig sind.

Quote from: n3 on September 17, 2025, 11:25:31 PMJetzt würde ich diesen Wert in der Advanced Configuration setzen und nicht im WAN Interface wie bisher. Aber was meinst du mit:
QuoteAs an example, if you have a WAN over PPPoE over VLAN, you should have to set WAN MTU = 1500, PPPOE VLAN = 1508, ethernet port = 1512, and it really only works for me with these tightly controlled MTUs:

Darum geht es: Du setzt die "äußerere" MTU höher (was oft funktioniert), um damit für Dein WAN-Interface wieder die "üblichen" 1500 Bytes zu erreichen. Das Beispiel findet für Dich exakt Anwendung (wenn es funktioniert). Danach hast Du eine MTU von 1500 auf dem WAN und damit eine Ping-Size von 1472.

Quote from: n3 on September 17, 2025, 11:25:31 PM
Quote from: meyergru on September 17, 2025, 09:54:44 PMBeachte auch, das die Reihenfolge der Konfiguration der Interfaces (WAN/PPPoE/VLAN/physisches Interface) eine Rolle spielt
Was meinst du damit?

Ist alles im Artikel erklärt. Wenn man die Einstellungen macht, werden sie nicht sofort übernommen. Es braucht einen Reboot, um das alles zum Funktionieren zu bringen. Heißt: Du machst die Einstellungen, aber die gelieferten Werte sind nicht "sofort" richtig.
Intel N100, 4* I226-V, 2* 82559, 16 GByte, 500 GByte NVME, ZTE F6005

1100 down / 800 up, Bufferbloat A+

OK, ich habe jetzt nochmal alles sorgfältig gelesen und auch alle verlinken Artikel usw. Für mich ergeben sich jedoch weiterhin Fragen, die zumindest für mein Verständnis in dem Artikel nicht geklärt werden.

Quote from: meyergru on September 17, 2025, 11:39:26 PMKlar, also ist die MTU 1488, wie erwartet, nämlich 1500 - 8 Byte PPPoE - 4 Byte VLAN, wie ich sagte.
Ergibt für mich z.B. keinen Sinn. Wie kommst du von 1460 auf 1488. Ich habe jetzt auch mal das Skript von der opnsense aus gestartet und auch da kommt eine 1460 raus. Das bedeutet, dass die MTU 1460 beträgt.
QuoteYou should set your WAN MTU to the value that the tool will tell you can achieve.

An dieser Stelle im HowTo steht aber auch nicht, wo man diesen Wert einträgt. Ich würde natürlich von hier ausgehen:
You cannot view this attachment.

Ja, weiter unten geht es dann weiter und es ist nicht ganz klar, ob das Optional ist, denn es geht hier um Jumbo Frames und das unterstützt nicht jeder ISP. Die Telekom unterstützt laut Schnittstellenbeschreibung kein RFC 4638, welches Jumbo Frames über PPPoE ermöglicht. Es wird auf eine maximale/empfohlene MTU von 1492 verwiesen, was mich etwas irritiert, da ich ja nur 1460 kann.

Ich verstehe das HowTo daher wie folgt:

Wenn dein ISP Jumbo Frames NICHT unterstützt (geht bei mir)
1. Prüfe mit dem Skript, welche max. MTU du nutzen kannst
2. Füge diesen MTU Wert in WAN Interface ein

Wenn dein ISP Jumbo Frames unterstützt (geht bei mir NICHT)
1. Setze in der PPP Configuration einen MTU Wert von 1500
2. Auf der Netzwerkkarte (in proxmox) eine MTU von 1512

Der Ping-Wert ist nicht die MTU. So komme ich auf die reale MTU. Du hast gesagt, Dein Ping könnte 1460 Bytes. Mit einer MTU von 1500 gehen noch 1472 Bytes, also 28 Bytes weniger als die reale MTU. Wenn ich auf Deine 1460 Bytes maximalen Ping die selben 28 Bytes draufaddiere, komme ich auf 1488 Bytes MTU, also exakt den Wert, den man erwarten dürfte.

Dieser liegt bei 1500 Bytes MTU minus 8 Bytes PPPoE - 4 Bytes VLAN, also effektiv nur noch 1488 Bytes MTU bei PPPoE mit VLAN, wie es z.B. bei der Telekom üblich ist. Schau Dir nochmal die Bilder im HOWTO an, dann verstehst Du es.

Das ist genau der Wert, den Du auf dem WAN und dem LAN als MTU eintragen solltest, wenn Dein sonstiges Equipment oder das des ISP Mini-Jumbo-Frames mit 1512 Bytes nicht wirklich unterstützt.


Davon bin ich aber aufgrund Deiner Ausführungen noch nicht ganz überzeugt:

Der ONT (oder das DSL-Modem) und das ISP-Equipment müssen das Mini-Jumbo-Frames unterstützen, damit das Rezept mit den 1512 Bytes funktioniert. In Deinem Fall kommt aber hinzu, dass auch Dein Proxmox auf der Bridge und dem zugrundeliegenden Interface die höhere MTU haben müssen. Es muss die gesamte Kette richtig konfiguriert sein, um Mini-Jumbo-Frames durchzulassen:

ISP (außerhalb Deiner Kontrolle) -> ONT/Modem (???) -> physisches Proxmox-Interface (1512) -> vmbrX (1512) -> vtnetX (1512) -> vlanXX (1508) -> pppoeX (1500)

(und bitte innerhalb der OpnSense genau so, wie es in den Screendumps dargestellt ist, NICHT auf dem WAN-Interface)
Intel N100, 4* I226-V, 2* 82559, 16 GByte, 500 GByte NVME, ZTE F6005

1100 down / 800 up, Bufferbloat A+

OK Danke! Ich habe erstmal auf meinen Interfaces direkt den Wert 1488 eingetragen. Das funktioniert soweit.

Jetzt zur Optimierung:

ISP (außerhalb Deiner Kontrolle) ->
ONT/Modem (???) -> Telekom Glasfasermodem 2
physisches Proxmox-Interface (1512) -> hatte ich auf 1512 gestellt
vmbrX (1512) -> hatte ich auf 1512 gestellt
vtnetX (1512) -> hatte ich vergessen (Hardwareeinstellung der vm)
vlanXX (1508) -> meinst du damit das Interface, oder wo das das eingetragen werden? Ich nutze keine VLAN, da ich 5 NICs habe.
pppoeX (1500) -> hatte ich eingestellt

You cannot view this attachment.
You cannot view this attachment.
You cannot view this attachment.


Quote from: meyergru on Today at 05:51:03 PMDieser liegt bei 1500 Bytes MTU minus 8 Bytes PPPoE - 4 Bytes VLAN, also effektiv nur noch 1488 Bytes MTU bei PPPoE mit VLAN, wie es z.B. bei der Telekom üblich ist.
Die Telekom nutzt eine IP MTU von 1492.

Ethernet maximum frame size
QuoteThe IP MTU and Ethernet maximum frame size are configured separately. In Ethernet switch configuration, MTU may refer to Ethernet maximum frame size. In Ethernet-based routers, MTU normally refers to the IP MTU.

Frame format
Quote802.1Q adds a 32-bit field between the source MAC address and the EtherType fields of the original frame. Under 802.1Q, the maximum frame size is extended from 1,518 bytes to 1,522 bytes.

Das VLAN-Tagging hat also keinen Einfluss auf die IP MTU, um die es hier wohl geht. Es erhöht nur die "maximum frame size".

Today at 06:56:02 PM #8 Last Edit: Today at 07:06:26 PM by meyergru
Wenn Du Telekom hast, musst Du pppoe1 auf ein VLAN-Interface konfiguriert haben, weil m.W. die Telekom VLAN 7 benutzt.

Der Stack innerhalb der OpnSense ist also:

WAN (pppoe1) -> VLANxxx (vlan???) -> vtnetX

Schau mal unter Interfaces: Devices: VLAN.  Und beachte (auch das ist beschrieben): Du kannst im VLAN selbst die MTU nicht setzen, das geht nur, indem Du das VLAN einem Interface zuweist (also ihm einen Namen gibst, was man sonst nicht braucht) und dort dann die MTU 1508 setzt.

Es sei denn, Du machst das VLAN-Tagging irgendwo anders (im Glasfasermodem selbst oder im Proxmox?).

Aha, ich sehe gerade, Du setzt das VLAN im Proxmox. Dann sieht der Stack bei Dir anders aus:

ISP (außerhalb Deiner Kontrolle) -> ONT/Modem (1512) -> physisches Proxmox-Interface (1512) -> vmbrX mit VLAN (1512) -> vtnetX (1508) -> pppoeX (1500)

@Bob.Dig: Ja, ich weiß: Das wurde alles schon im Thread zum HOWTO diskutiert. Viele modernere Gerätetreiber können einfach das VLAN immer implizit ohne Aufschlag, weil sie schon mehr Speicher haben, weshalb man die 4 Bytes für das VLAN nicht immer braucht. Die Logik führt spätestens bei QinQ in die Irre und außerdem schaden die 4 Bytes mehr definitiv nicht. Hier verwirrt es nur.

Intel N100, 4* I226-V, 2* 82559, 16 GByte, 500 GByte NVME, ZTE F6005

1100 down / 800 up, Bufferbloat A+