De regel van dertig extra bytes voor MTU breekt op MPLS-pseudowires
Een vast overheadgetal verbergt zijn aannames. Tel de Ethernet-header, VLAN-tags, labelvermeldingen en het controlewoord, en vergelijk dan met het juiste veld.
Vraag een ingenieur hoeveel je voor MPLS moet optellen en je hoort een getal, meestal dertig, met vertrouwen gebracht. Het getal is niet zozeer fout als wel losgeslagen: het hangt volledig af van wat het uitgangsgetal telt en wat de provider-edge werkelijk verzendt. Op een Ethernet-pseudowire zijn de aannames zichtbaar, en zodra je ze opschrijft, vervangt de rekenkunde de folklore.
Drie verschillende dingen worden onder één naam gemeten. Er is het IP-pakket van de klant, het Ethernet-frame dat over de pseudowire wordt gedragen, en de eigen buitenste linkframing van de provider. Een budget dat ze vermengt, levert een waarde op die geen enkel apparaatveld verwacht.
Eén doorgerekend budget met elke aanname benoemd
Neem een klant-IP-pakket van 1500 byte, een gewone Ethernet-header die zonder de FCS van de klant over de pseudowire wordt gedragen, geen behouden VLAN-tag, een labelstack met twee vermeldingen en een controlewoord van vier byte. De gedragen Ethernet-header voegt 14 toe, behouden tags voegen niets toe, de twee labelvermeldingen voegen 8 toe omdat elke vermelding 4 byte is, en het controlewoord voegt 4 toe. Dat geeft 1526 byte MPLS-ingekapseld pakket.
Lees het resultaat aandachtig. Het sluit de buitenste Ethernet-header van de providerlink en de FCS daarvan uit, en het is een voorbeeld, geen constante om in een veld met de naam MTU te typen. Twee labels zijn ook een aanname: de echte stack kan een transportlabel, een servicelabel en soms meer dragen, en elke vermelding kost dezelfde 4 byte.
Wat er werkelijk over de pseudowire gaat
RFC 4448 definieert hoe Ethernet-frames binnen MPLS reizen, en in het gewone model worden de preamble en FCS van de klant bij ingress verwijderd en bij egress opnieuw gegenereerd. Daarom verschijnt de FCS niet in het budget hierboven. VLAN-afhandeling hangt af van de servicemodus: een modus die klanttags behoudt, voegt hun bytes weer toe, en een modus die ze mapt, doet dat niet. Extra behoud of extra inkapseling moet er bovenop worden geteld.
Het controlewoord maakt deel uit van de rekenkunde telkens wanneer het wordt gebruikt. RFC 8469 beveelt het aan voor Ethernet-pseudowires, dus een oudere tekst die het als optioneel beschrijft, is geen bewijs dat jouw pad het weglaat. Bevestig de werkelijke servicemodus bij de provider in plaats van hem uit een diagram af te leiden.
Vergelijk het getal met het juiste veld
Houd nu de vereiste ingekapselde grootte naast elke relevante link, en naast de definitie van de leverancier van de limiet die je configureert. Sommige velden beschrijven een IP-pakket, andere een frame of een andere inkapselingsgrens. Twee getallen kunnen identiek lijken en verschillende capaciteiten beschrijven, en zo levert een configuratie die lijkt te passen verliezen op in productie.
Daarom is het ook riskant om een waarde tussen niet-verwante platforms te kopiëren. De naam van het veld is de specificatie, niet het decimale getal dat je van de console van een andere leverancier onthoudt.
Ping-payloads zijn geen MTU-waarden
Een IPv4-pingpayload is geen IP-MTU. De IP-header en de ICMP-header verbruiken ook bytes, dus een payloadgrootte die slaagt, komt overeen met een groter pakket op de draad. Een probe die bij één grootte doorkomt, zegt ook niets over een dienst met een andere VLAN-modus of een diepere labelstack. De test meet één pad, één grootte en één payloadvorm, en de dienst kan alle drie variëren.
Erger nog, een ping kan slagen terwijl grote frames falen, omdat de probe een pad en een grootte heeft geprobeerd die het echte verkeer nooit gebruikt. Behandel het als één datapunt over bereikbaarheid, niet als een specificatie van een layer-2-dienst.
Wanneer het frame niet past
Als te grote frames niet kunnen worden gedragen en er geen ondersteund fragmentatie- of herassemblagemechanisme is, worden ze weggegooid, meestal zonder een duidelijke fout aan beide uiteinden. Applicaties tonen dan time-outs bij bulkoverdrachten terwijl interactieve sessies gezond blijven, wat mensen naar firewalls en routes laat kijken in plaats van bytes te tellen.
Los het werkelijke budget op met de provider: servicemodus, tagafhandeling, labeldiepte, controlewoord en de exacte limiet die jouw apparaat afdwingt. Schrijf de aannames naast het getal, want anders erft de volgende ingenieur de dertig-byte-regel en een raadsel.