Ethernet er overalt, og titusindvis af producenter producerer udstyr, der understøtter det. Men næsten alle disse enheder har én ting til fælles -
$ ip l
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp5s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 state UP
link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
MTU (Maximum Transmission Unit) definerer den maksimale størrelse af en enkelt datapakke. Generelt, når du udveksler beskeder med enheder på dit LAN, vil MTU'en være i størrelsesordenen 1500 bytes, og næsten hele internettet opererer på 1500 bytes. Det betyder dog ikke, at disse kommunikationsteknologier ikke kan transmittere større pakkestørrelser.
For eksempel har 802.11 (almindeligvis kendt som WiFi) en MTU på 2304 bytes, og hvis dit netværk bruger FDDI, så er din MTU 4352 bytes. Ethernet selv har konceptet "gigantiske rammer", hvor MTU'en kan tildeles en størrelse på op til 9000 bytes (med understøttelse af denne tilstand af NIC'er, switches og routere).
Men på internettet er dette ikke særlig nødvendigt. Da internettets primære backbones primært består af Ethernet-forbindelser, er den de facto uofficielle maksimale pakkestørrelse sat til 1500B for at undgå pakkefragmentering på andre enheder.
Selve tallet 1500 er mærkeligt - man kunne forvente, at konstanter i computerverdenen for eksempel er baseret på to-poter. Så hvor kom 1500B fra, og hvorfor bruger vi det stadig?
magiske tal
Ethernets første store gennembrud i verden kom i form af standarder.
Da der var mange konkurrerende protokoller på det tidspunkt, og hardware havde sine begrænsninger, indrømmer skaberen af formatet, at hukommelseskravene til pakkebufferen spillede en rolle i fremkomsten af det magiske nummer 1500:
Set i bakspejlet er det klart, at et større maksimum kunne have været en bedre løsning, men hvis vi havde øget omkostningerne til NIC'er tidligt, ville det have forhindret Ethernet i at blive så udbredt.
Dette er dog ikke hele historien. I
Det var nødvendigt at vælge et tal, der ikke ville resultere i for store forsinkelser ved afsendelse af beskeder i segmenter (nogle gange ret travlt), og samtidig ikke ville øge antallet af pakker for meget.
Tilsyneladende valgte ingeniører på det tidspunkt nummeret 1500 B (ca. 12000 bits) som den mest "sikre" mulighed.
Siden da er forskellige andre meddelelsessystemer kommet og gået, men blandt dem havde Ethernet den laveste MTU-værdi med sine 1500 bytes. At overskride minimums-MTU-værdien i et netværk betyder enten at forårsage pakkefragmentering eller engagere sig i PMTUD [finde den maksimale pakkestørrelse for valgt sti]. Begge muligheder havde deres egne særlige problemer. Selv om nogle gange store OS-producenter sænkede MTU-værdien endnu lavere.
Effektivitetsfaktor
Vi ved nu, at Internet MTU er begrænset til 1500B, hovedsageligt på grund af ældre latency-metrikker og hardwarebegrænsninger. Hvor meget påvirker dette effektiviteten af internettet?
Hvis vi ser på data fra et stort internetudvekslingspunkt AMS-IX, ser vi, at mindst 20 % af de transmitterede pakker har en maksimal størrelse. Du kan også se på den samlede LAN-trafik:
Hvis du kombinerer begge grafer, får du noget i stil med følgende (trafikvurderinger for hvert pakkestørrelsesområde):
Eller hvis vi ser på trafikken af alle disse overskrifter og andre serviceoplysninger, får vi den samme graf med en anden skala:
En ganske stor del af båndbredden bruges på headere til pakker i den største størrelsesklasse. Da den højeste overhead ved spidstrafik er 246 GB/s, kan det antages, at hvis vi alle havde skiftet til "jumbo frames", når en sådan mulighed stadig eksisterede, ville denne overhead kun være omkring 41 GB/s.
Men jeg tror i dag for den største del af internettet, at toget allerede er kørt. Og selvom nogle udbydere arbejder med en MTU på 9000, understøtter de fleste det ikke, og at forsøge at ændre noget globalt på internettet har vist sig at være ekstremt svært igen og igen.
Kilde: www.habr.com