Dlaczego rozmiar MTU dla ramek Ethernet obliczono jako 1500 bajtów?

38

Czy istnieje jakieś konkretne obliczenie, które zostało wykonane, aby dojść do tej liczby, i jakie czynniki zostały wzięte pod uwagę przy tym obliczeniu.

Padmaraj
źródło
2
Ludzie z IEEE nie chcą dodawać 9k do standardu, ponieważ matematyczne gwarancje, które FCS daje dziś na 1,5k, nie byłyby już prawdziwe przy 9k.
ytti
5
@ytti, to tylko jeden z argumentów przeciwko poparciu> 1500 ramek. Pełny tekst listu Geoffa Thomsona (zawierający zastrzeżenia IEEE do standaryzacji ramek jumbo) znajduje się w załączniku 1 do projektu ietf-isis-ext-eth-01 . Zastrzeżenia zaczynają się od słowa „Rozpatrzenie”
Mike Pennington
Czy jakaś odpowiedź ci pomogła? jeśli tak, powinieneś zaakceptować odpowiedź, aby pytanie nie wyskakiwało wiecznie, szukając odpowiedzi. Alternatywnie możesz podać i zaakceptować własną odpowiedź.
Ron Maupin

Odpowiedzi:

27

Odpowiedź znajduje się w draft-ietf-isis-ext-eth-01 , sekcje 3-5. Ethernet wykorzystuje te same dwa bajty na różne sposoby w enkapsulacjach Ethernet II (DIX) i 802.3:

  • Ethernet II używa pierwszych dwóch bajtów po źródłowym adresie MAC źródła Ethernet dla typu
  • 802.3 używa tych samych dwóch bajtów dla pola Długość .

Poniżej zamieszczam diagram z adnotacjami dla każdego typu ramki, który pokazuje dokładnie, gdzie w nagłówku ethernetowym znajdują się sprzeczne bajty:

  • RFC 894 (powszechnie znane jako ramki Ethernet II) używają tych bajtów dla typu

       +----+----+------+------+-----+
       | DA | SA | Type | Data | FCS |
       +----+----+------+------+-----+
                 ^^^^^^^^
    
       DA      Destination MAC Address (6 bytes)
       SA      Source MAC Address      (6 bytes)
       Type    Protocol Type           (2 bytes: >= 0x0600 or 1536 decimal)  <---
       Data    Protocol Data           (46 - 1500 bytes)
       FCS     Frame Checksum          (4 bytes)
    
  • IEEE 802.3 z 802.2 LLC / SNAP (używane przez Spanning-Tree, ISIS) używają tych bajtów dla długości

       +----+----+------+------+-----+
       | DA | SA | Len  | Data | FCS |
       +----+----+------+------+-----+
                 ^^^^^^^^
    
       DA      Destination MAC Address (6 bytes)
       SA      Source MAC Address      (6 bytes)
       Len     Length of Data field    (2 bytes: <= 0x05DC or 1500 decimal)  <---
       Data    Protocol Data           (46 - 1500 bytes)
       FCS     Frame Checksum          (4 bytes)
    

Zarówno enkapsulacja Ethernet II, jak i 802.3 musi istnieć na tym samym łączu. Jeśli IEEE zezwoli na ładunki Ethernet przekraczające 1536 bajtów (0x600 hex), nie będzie możliwe odróżnienie dużych ramek LLC.33 lub SNAP od ramek Ethernet II; Wartości typu ethernet zaczynają się od 0x600 hex.

EDYTOWAĆ:

Podaję link do kopii pdf specyfikacji Ethernet w wersji 1 i Ethernet w wersji 2 , na wypadek, gdyby ktoś był zainteresowany ...

Mike Pennington
źródło
2
Cóż, ramki Ethernet II mają pole typu zaczynające się od 0x0600 (ze specyfikacji IEEE 802.3x-1997), ponieważ maksymalna maksymalna długość 802.3 była tuż poniżej tego. To tylko efekt, a nie przyczyna.
nos
1
@nos, aby twierdzić, że jest to skutek zamiast przyczyny, zakłada się, że możesz udowodnić przyczynę ... czy możesz przedstawić wiarygodne dowody na swoją proponowaną przyczynę? Oryginalna specyfikacja Ethernet w wersji 1, opublikowana w 1980 r., Już korzysta z pola Typ, aw 1984 r. Protokół IP został określony przy użyciu Ethertype 0x0800
Mike Pennington
2
Rzeczywiście, specyfikacja Ethernet I i II miała już pole typu (które w tym czasie nie miało żadnych ograniczeń) i już określiła maksymalną długość danych wynoszącą 1500 - w tym czasie nie było ramek 802.3. Nie można zatem stwierdzić, że limit 1500 został dodany w późniejszej specyfikacji ze względu na pole typu.
nos
2
@nos Nie zgadzam się, Ethernet II musiał współistnieć z istniejącym standardem. Zdefiniował także zastosowanie tego samego pola do działania zarówno jako pole typu we wcześniejszym standardzie, jak i pole długości w nowym standardzie. Biorąc pod uwagę, że NIE MOŻE istnieć możliwość pomylenia dwóch standardów, które muszą współistnieć w tej samej sieci, żadna długość, która mogłaby wyglądać jak istniejący typ, nie byłaby dozwolona. Ponieważ istniejąca lista typów zaczynała 0x600się od liczby mniejszej niż ta, którą należało wybrać. Aby nie dopuścić do dalszego rozszerzania standardu, trzeba było zostawić trochę dostępnego pasma, gdyby było to konieczne.
14

Na drugim końcu zakresu - 1500 bajtów, były dwa czynniki, które doprowadziły do ​​wprowadzenia tego limitu. Po pierwsze, jeśli pakiety są zbyt długie, wprowadzają dodatkowe opóźnienia w innym ruchu za pomocą kabla Ethernet. Innym czynnikiem było urządzenie bezpieczeństwa wbudowane we wczesne współdzielone nadajniki-odbiorniki kablowe. To urządzenie zabezpieczające było systemem zapobiegającym bełkotaniu.Jeśli urządzenie podłączone do urządzenia nadawczo-odbiorczego rozwinie się i zacznie nadawać w sposób ciągły, wówczas skutecznie zablokuje wszelki inny ruch przed użyciem tego segmentu kabla Ethernet. Aby zabezpieczyć się przed tym zjawiskiem, wczesne urządzenia nadawczo-odbiorcze zostały zaprojektowane tak, aby wyłączały się automatycznie, jeśli transmisja przekroczyła około 1,25 milisekundy. Odpowiada to zawartości danych nieco ponad 1500 bajtów. Ponieważ jednak nadajnik-odbiornik użył prostego analogowego timera do wyłączenia transmisji, jeśli wykryto bełkotanie, limit 1500 został wybrany jako bezpieczne przybliżenie maksymalnego rozmiaru danych, który nie uruchomiłby urządzenia zabezpieczającego.

Źródło: http://answers.yahoo.com/question/index?qid=20120729102755AAn89M1

użytkownik1171
źródło
5
Cześć @ user1171: Preferowanym stylem StackExchange jest dołączenie tutaj materiału z odpowiedzią i link jako odniesienie. W ten sposób, gdy link w końcu się zepsuje, odpowiedź jest nadal przydatna.
Craig Constantine
Funkcja Jabber wymagała wyłączenia MAU po 20 do 150 ms dla 10 Mbit / s (IEEE 802.3, klauzula 8.2.1.5), 40 do 75 kbit dla Fast Ethernet (klauzula 27.3.2.1.4) i dwa razy więcej niż w przypadku Gigabit Ethernet, znacznie przekraczający długość ramy. Post w Yahoo jest nieprawidłowy.
Zac67
10

Kiedy Ethernet został pierwotnie opracowany jako wspólny nośnik lub magistrala z 10Base5 i 10Base2, kolizje ramek były częste i oczekiwano w ramach projektu. Porównaj to do dnia dzisiejszego, kiedy większość wszystkiego jest przełączana z oddzielnymi domenami kolizyjnymi i działającym w trybie pełnego dupleksu, gdzie nikt nie spodziewa się zobaczyć kolizji.

W mechanizmie udostępniania „eteru” zastosowano CMSA / CD (Carrier Sense Multiple Access / Collision Detection)

Sense Carrier oznaczało, że stacja chcąca nadawać musi słuchać drutu - wyczuwać sygnał nośny - aby upewnić się, że nikt inny nie mówi, ponieważ był to wielokrotny dostęp na tym medium. Allowing 1500 bytes (though an arbitrary number as far as I can tell) was a compromise that meant a station could not capitalize the wire too long by talking too much at one time. Im więcej bajtów przesyłanych jest w ramce, tym dłużej wszystkie inne stacje muszą czekać na zakończenie transmisji. Innymi słowy, krótsze impulsy lub mniejsze MTU oznaczały, że inne stacje miały więcej możliwości nadawania i bardziej sprawiedliwy podział. Im wolniejsza prędkość medium transmisyjnego (10 Mb / s), stacje będą miały dłuższe opóźnienia w transmisji wraz ze wzrostem MTU (jeśli pozwolą na przekroczenie 1500).

Ciekawym następczym pytaniem byłoby, dlaczego minimalny rozmiar ramki to 64 bajty? Ramki były transmitowane w „szczelinach”, które mają 512 bitów i zajmowały 51,2us dla propagacji sygnału w obie strony w medium. Stacja musi nie tylko słuchać, kiedy zacząć mówić, wykrywając IFG (przerwa między ramkami 96 bitów), ale także słuchać kolizji z innymi ramkami. Wykrywanie kolizji zakłada maksymalne opóźnienie propagacji i podwaja to (dla bezpieczeństwa), aby nie przegapić transmisji rozpoczynającej się mniej więcej w tym samym czasie z drugiego końca drutu lub odbicia sygnału własnej transmisji, gdy ktoś zapomniał rezystor końcowy na końce kabla. Stacja nie może zakończyć wysyłania swoich danych przed wykryciem kolizji, dlatego czekanie 512 bitów lub 64 bajtów to gwarantuje.

generalnetworkerror
źródło
2

Pierwotnie maks. ładunek został zdefiniowany jako 1500 bajtów w 802.3. Ethernet v2 obsługuje długość ramki> = 1536 i tego właśnie używają implementacje IP. Większość dostawców klasy operatorskiej obsługuje obecnie około 9000 bajtów („duże ramki”). Ponieważ 1500 bajtów jest standardem, który muszą obsługiwać wszystkie implementacje Ethernet, jest to zwykle ustawienie domyślne dla wszystkich interfejsów.


źródło
Powinieneś google maxValidFrame, to zostało zdefiniowane przez IEEE; w związku z tym powszechnie stosowane obecnie implementacje ramek jumbo 9 KB nie są oficjalnie zgodne z Ethernetem, ale działają całkiem dobrze w przypadku ładunków Ethernet II
Mike Pennington
Ściśle mówiąc, niezgodny z 802.3. IP wykorzystuje Ethernet v2, więc nie myślę nawet o 802.3 ...
5
Jumbos nie są zgodne z Ethernetem II lub 802.3 po ratyfikacji 802.3x. Punkt 4.2.7.1 802.3x definiuje maxValidFrame przy ładunku 1500B. Zatem po 1997 r. Jakakolwiek ładowność przekraczająca 1500 bajtów jest niezgodna. Zobacz list wysłany przez IEEE 802.3 do IETF w związku z tym problemem . Krótko mówiąc, 802.3 to znacznie więcej niż standard ramki ... definiuje zarówno wymagania dotyczące ramek, jak i sprzętu. Oznacza to, że implementacje sprzętowe zależą od zgodności z formatem ramki. Half Duplex w / CSMA-CD wymaga <= 1500B ładunków.
Mike Pennington
-1

Minimalna ramka ethernetowa oparta jest na czasie szczeliny Ethernet, który wynosi 512 bitów (64 bajty) dla 10M ethernet. Po odjęciu 18 bajtów dla nagłówka Ethernet i CRC, otrzymujesz 46 bajtów ładunku.

Czas szczeliny Ethernet został określony, aby CSMA / CD działał poprawnie. Trzeba mieć pewność, że minimalny rozmiar ramy nie przekracza najdłuższej możliwej długości kabla; gdyby tak było, deterministyczne wykrywanie kolizji byłoby niemożliwe. Po wykryciu kolizji na maksymalnej długości kabla potrzebny jest sygnał wykrycia kolizji, aby powrócić do nadawcy.

Pooja Khatri
źródło
3
Mam problem ze zrozumieniem, w jaki sposób mechanizm określania minimalnego rozmiaru ramki Ethernet ma coś wspólnego z obecnym standardem defacto 1500 bajtów. Proszę opracować!
Stuggi
2
@Stuggi Nie.
Ken Sharp