Ethernet finns överallt och tiotusentals tillverkare tillverkar utrustning som stöder det. Men nästan alla dessa enheter har en sak gemensamt -
$ 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) definierar den maximala storleken på ett enda datapaket. I allmänhet, när du utbyter meddelanden med enheter på ditt LAN, kommer MTU:n att vara i storleksordningen 1500 byte, och nästan hela Internet fungerar på 1500 byte. Detta betyder dock inte att dessa kommunikationstekniker inte kan överföra större paketstorlekar.
Till exempel har 802.11 (vanligtvis känt som WiFi) en MTU på 2304 byte, och om ditt nätverk använder FDDI är din MTU 4352 byte. Ethernet har i sig konceptet "gigantiska ramar", där MTU:n kan tilldelas en storlek på upp till 9000 byte (med stöd för detta läge av NIC, switchar och routrar).
Men på Internet är detta inte särskilt nödvändigt. Eftersom Internets huvudsakliga stamnät i första hand består av Ethernet-anslutningar, är den de facto inofficiella maximala paketstorleken satt till 1500B för att undvika paketfragmentering på andra enheter.
Siffran 1500 i sig är märkligt - man skulle förvänta sig att konstanter i datorvärlden skulle baseras på tvåpotenser, till exempel. Så var kom 1500B ifrån och varför använder vi det fortfarande?
Magiskt nummer
Ethernets första stora genombrott i världen kom i form av standarder.
Eftersom det fanns många konkurrerande protokoll vid den tiden, och hårdvaran hade sina begränsningar, medger skaparen av formatet att minneskraven för paketbufferten spelade en roll i uppkomsten av det magiska numret 1500:
I efterhand är det uppenbart att ett större maximum kunde ha varit en bättre lösning, men om vi hade ökat kostnaderna för NIC tidigt skulle det ha förhindrat Ethernet från att bli lika utbrett.
Detta är dock inte hela historien. I
Det var nödvändigt att välja ett nummer som inte skulle resultera i för stora förseningar vid överföring av meddelanden i segment (ibland ganska upptaget), och samtidigt inte skulle öka antalet paket för mycket.
Tydligen valde ingenjörer vid den tiden numret 1500 B (cirka 12000 bitar) som det mest "säkra" alternativet.
Sedan dess har olika andra meddelandesystem kommit och gått, men bland dem hade Ethernet det lägsta MTU-värdet med sina 1500 byte. Att överskrida det lägsta MTU-värdet i ett nätverk innebär antingen att orsaka paketfragmentering eller engagera sig i PMTUD [att hitta den maximala paketstorleken för vald sökväg]. Båda alternativen hade sina egna speciella problem. Även om ibland stora OS-tillverkare sänkte MTU-värdet ännu lägre.
Effektivitetsfaktor
Vi vet nu att Internet MTU är begränsad till 1500B, till stor del på grund av äldre latensmått och hårdvarubegränsningar. Hur mycket påverkar detta effektiviteten på Internet?
Om vi tittar på data från en stor internetväxlingspunkt AMS-IX ser vi att minst 20 % av de överförda paketen har en maximal storlek. Du kan också titta på den totala LAN-trafiken:
Om du kombinerar båda graferna får du något i stil med följande (trafikuppskattningar för varje paketstorleksintervall):
Eller, om vi tittar på trafiken för alla dessa rubriker och annan tjänstinformation, får vi samma graf med en annan skala:
En ganska stor del av bandbredden går åt till headers för paket i den största storleksklassen. Eftersom den högsta overheaden vid topptrafik är 246 GB/s, kan man anta att om vi alla hade gått över till "jumbo frames" när ett sådant alternativ fortfarande fanns, skulle denna overhead bara vara cirka 41 GB/s.
Men jag tror i dag för den största delen av Internet att tåget redan har gått. Och även om vissa leverantörer arbetar med en MTU på 9000, stöder de flesta inte det, och att försöka förändra något globalt på Internet har visat sig vara extremt svårt om och om igen.
Källa: will.com