Waarom je privénetwerk een andere MTU heeft dan je publieke netwerk
Kort antwoord
MTU (Maximum Transmission Unit) is het grootste pakket dat een netwerkverbinding kan versturen zonder het te fragmenteren. Het publieke internet gebruikt van oudsher 1500 bytes als standaard. Private netwerken en overlay-netwerken worden meestal gebouwd door je verkeer in een extra pakket te verpakken (een techniek zoals VXLAN), en die extra laag neemt ruimte in beslag. Daarom heeft een private interface vaak een iets kleinere MTU nodig, 1450 bytes is een gangbaar voorbeeld, dan de 1500 van de publieke interface. Gaat die afstemming mis, dan krijg je geen foutmelding: je krijgt verbindingen die vastlopen of traag worden, zonder duidelijke reden.
Wat MTU precies bepaalt
Elke netwerkverbinding heeft een bovengrens voor hoe groot één pakket mag zijn voordat het opgesplitst moet worden. Die bovengrens is de MTU, gemeten in bytes. Alles wat een systeem probeert te versturen dat groter is dan de MTU van de verbinding, wordt ofwel opgesplitst in kleinere fragmenten (als fragmentatie is toegestaan), ofwel gewoon weggegooid (als dat niet zo is). Het publieke internet gebruikt in de praktijk 1500 bytes als standaard, geërfd van Ethernet, en de meeste systemen gaan van dat getal uit tenzij iets anders wordt aangegeven.
Waarom de MTU van een privénetwerk vaak kleiner is
Een privénetwerk of overlay-netwerk op gedeelde infrastructuur bestaat meestal niet uit fysiek gescheiden bekabeling per klant. Het wordt gebouwd met encapsulatie: je verkeer wordt verpakt in een extra pakket, met een label zodat het onderliggende netwerk het private verkeer van elke klant gescheiden kan houden van dat van anderen, via een tunneling-techniek zoals VXLAN. Die extra laag is echte data. Er komt een eigen header bij op elk pakket, bovenop wat je eigen verkeer al meedraagt.
Die extra header moet passen binnen dezelfde MTU van de onderliggende verbinding als al het andere verkeer. De ruimte die daadwerkelijk beschikbaar is voor je payload, nadat de encapsulatie-header zijn deel heeft ingenomen, is dus kleiner dan de volledige 1500 bytes die de publieke interface kan gebruiken. In de praktijk draait een private netwerkinterface daarom vaak op een iets lagere MTU, 1450 bytes is een gangbaar voorbeeldcijfer, om genoeg ruimte over te houden voor de tunneling-overhead zonder dat er stilletjes iets kapot gaat.
Hoe een MTU-mismatch er in de praktijk uitziet
Dit is het lastige onderdeel: een MTU-mismatch geeft zelden een duidelijke foutmelding. Wat je wel krijgt, is inconsistentie. Kleine pakketten, zoals een ping of een korte request, komen gewoon door, omdat ze ruim onder elke betrokken MTU blijven. Grotere pakketten zijn degene die tegen de grens aanlopen, en wat er dan gebeurt hangt af van of fragmentatie is toegestaan op dat pad:
- Als fragmentatie is toegestaan, worden te grote pakketten opgesplitst. Dat werkt, maar het voegt overhead toe en kan de doorvoersnelheid stilletjes vertragen zonder ooit een foutmelding te geven.
- Als fragmentatie is uitgeschakeld, wat sommige protocollen bewust doen om prestatieredenen, worden te grote pakketten gewoon weggegooid. Er komt geen foutmelding terug die uitlegt waarom: de verbinding loopt gewoon vast, geeft een timeout, of gedraagt zich alsof het netwerk kapot is.
Het praktische symptoom is meestal: kleine requests werken, grotere overdrachten of specifieke protocollen lopen vast of falen, en het is erger over de private link dan over de publieke, omdat de private link de kleinere effectieve MTU heeft. Dat patroon, prima werken bij klein verkeer en juist breken bij grotere payloads over de private interface, is een van de betrouwbaarste signalen om de MTU-instellingen aan beide kanten van een private netwerkverbinding te controleren.