Ethernet ram
I datornätverk är en Ethernet-ram en dataenhet för datalänkslagerprotokoll och använder de underliggande Ethernet- transportmekanismerna för fysiska lager. Med andra ord, en dataenhet på en Ethernet- länk transporterar en Ethernet-ram som sin nyttolast.
En Ethernet- ram föregås av en inledning och en startramavgränsare (SFD), som båda är en del av Ethernet-paketet på det fysiska lagret . Varje Ethernet-ram börjar med en Ethernet-header, som innehåller destinations- och käll- MAC-adresser som sina två första fält. Mittsektionen av ramen är nyttolastdata inklusive eventuella rubriker för andra protokoll (till exempel Internet Protocol ) som bärs i ramen. Ramen avslutas med en ramkontrollsekvens (FCS), som är en 32-bitars cyklisk redundanskontroll som används för att upptäcka eventuell korruption av data under transport.
Strukturera
Ett datapaket på tråden och ramen som dess nyttolast består av binära data. Ethernet överför data med den mest signifikanta oktetten (byte) först; inom varje oktett sänds dock den minst signifikanta biten först.
Den interna strukturen för en Ethernet-ram specificeras i IEEE 802.3. Tabellen nedan visar hela Ethernet-paketet och ramen inuti, som sänds, för nyttolaststorleken upp till MTU på 1500 oktetter. Vissa implementeringar av Gigabit Ethernet och andra högre hastighetsvarianter av Ethernet stöder större ramar, så kallade jumboramar .
Lager | Inledning | Starta ramavgränsare | MAC-destination | MAC-källa | 802.1Q -tagg (valfritt) | Etertyp ( Ethernet II ) eller längd ( IEEE 802.3 ) | Nyttolast | Ramkontrollsekvens (32-bitars CRC ) | Interpacket gap (IPG) |
---|---|---|---|---|---|---|---|---|---|
7 oktetter | 1 oktett | 6 oktetter | 6 oktetter | (4 oktetter) | 2 oktetter | 46-1500 oktetter | 4 oktetter | 12 oktetter | |
Layer 2 Ethernet-ram | ← 64–1522 oktetter → | ||||||||
Layer 1 Ethernet-paket & IPG | ← 72–1530 oktetter → | ← 12 oktetter → |
Den valfria 802.1Q-taggen förbrukar ytterligare utrymme i ramen. Fältstorlekar för detta alternativ visas inom parentes i tabellen ovan. IEEE 802.1ad (Q-in-Q) tillåter flera taggar i varje ram. Detta alternativ illustreras inte här.
Ethernet-paket – fysiskt lager
Inledning och startramavgränsare
Ett Ethernet-paket börjar med en sju-oktett- inledning och en-oktett- startramavgränsare (SFD).
Ingressen består av ett 56-bitars (sju-byte) mönster med alternerande 1 och 0 bitar, vilket gör att enheter i nätverket enkelt kan synkronisera sina mottagarklockor, vilket ger synkronisering på bitnivå. Den följs av SFD för att tillhandahålla synkronisering på bytenivå och för att markera en ny inkommande ram. För Ethernet-varianter som överför seriella bitar istället för större symboler , är det (okodade) bitmönstret på tråden för ingressen tillsammans med SFD-delen av ramen 10101010 10101010 10101010101010101010101010101010101010101011; Bitarna sänds i ordning, från vänster till höger.
SFD är det åtta-bitars (en-byte) värde som markerar slutet av ingressen, som är det första fältet i ett Ethernet-paket, och indikerar början av Ethernet-ramen. SFD är designad för att bryta bitmönstret i ingressen och signalera början av den faktiska ramen. SFD:n följs omedelbart av destinationens MAC-adress , som är det första fältet i en Ethernet-ram. SFD är den binära sekvensen 10101011 (0b11010101, 0xD5, decimal 213 i Ethernet LSBs första bitordning).
Transceiverkretsar för fysiskt lager (PHY för kort) krävs för att ansluta Ethernet MAC till det fysiska mediet. Kopplingen mellan en PHY och MAC är oberoende av det fysiska mediet och använder en buss från den mediaoberoende gränssnittsfamiljen ( MII , GMII , RGMII , SGMII , XGMII ). Fast Ethernet- sändtagarechips använder MII-bussen, som är en buss med fyra bitar (en nibble ) bred, därför representeras inledningen som 14 instanser av 0x5, och SFD är 0x5 0xD (som nibbles). Gigabit Ethernet- sändtagarechips använder GMII-bussen, som är ett åtta-bitars brett gränssnitt, så ingresssekvensen följt av SFD:n skulle vara 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0xD5 (som byte).
Ram – datalänkslager
Rubrik
Rubriken innehåller destinations- och käll-MAC-adresser (varje sex oktetter långa), EtherType- fältet och, valfritt, en IEEE 802.1Q - tagg eller IEEE 802.1ad- tagg.
EtherType-fältet är två oktetter långt och det kan användas för två olika ändamål. Värden på 1500 och lägre betyder att den används för att ange storleken på nyttolasten i oktetter, medan värden på 1536 och högre indikerar att den används som en EtherType, för att indikera vilket protokoll som är inkapslat i ramens nyttolast. När den används som EtherType bestäms längden på ramen av platsen för mellanpaketgapet och giltig ramkontrollsekvens (FCS).
IEEE 802.1Q -taggen eller IEEE 802.1ad -taggen, om sådan finns, är ett fyroktettfält som indikerar virtuellt LAN- medlemskap (VLAN) och IEEE 802.1p- prioritet. De första två oktetterna av taggen kallas för T ag Protocol ID- entifier (TPID) och dubblar som EtherType-fältet, vilket indikerar att ramen är antingen 802.1Q- eller 802.1ad-taggad . 802.1Q använder ett TPID på 0x8100. 802.1ad använder ett TPID på 0x88a8.
Nyttolast
Nyttolast är ett fält med variabel längd. Dess minimistorlek styrs av ett krav på en minsta ramöverföring på 64 oktetter (byte). Med hänsyn till header och FCS är den lägsta nyttolasten 42 oktetter när en 802.1Q-tagg finns och 46 oktetter när den saknas. När den faktiska nyttolasten är mindre än minimum, läggs utfyllnadsoktetter till i enlighet med detta. IEEE-standarder anger en maximal nyttolast på 1500 oktetter. Icke-standardiserade jumboramar tillåter större nyttolaster på nätverk som är byggda för att stödja dem.
Ramkontrollsekvens
Ramkontrollsekvensen (FCS) är en fyra-oktett cyklisk redundanskontroll (CRC ) som tillåter detektering av korrupta data inom hela ramen som tas emot på mottagarsidan. Enligt standarden beräknas FCS-värdet som en funktion av de skyddade MAC-ramfälten: käll- och destinationsadress, längd/typfält, MAC-klientdata och utfyllnad (det vill säga alla fält utom FCS).
Enligt standarden görs denna beräkning med den vänsterskiftande CRC32 BZIP2 (poly = 0x4C11DB7, initial CRC = 0xFFFFFFFF, CRC är postkompletterad, verifieringsvärde = 0x38FB2284) algoritm. Standarden anger att data sänds minst signifikanta bit (bit 0) först, medan FCS sänds mest signifikant bit (bit 31) först. Ett alternativ är att beräkna en CRC med den högerskiftande CRC32 (poly = 0xEDB88320, initial CRC = 0xFFFFFFFF, CRC är postkomplementerad, verifieringsvärde = 0x2144DF1C), vilket kommer att resultera i en CRC som är en bitomkastning av FCS:n, och sändning både data och CRC:n minst signifikanta bit först, vilket resulterar i identiska sändningar.
Standarden säger att mottagaren ska beräkna en ny FCS allt eftersom data tas emot och sedan jämföra den mottagna FCS med den FCS som mottagaren har beräknat. Ett alternativ är att beräkna en CRC på både mottagen data och FCS, vilket kommer att resultera i ett fast "verifieringsvärde" som inte är noll. (Resultatet är icke-noll eftersom CRC efterkompletteras under CRC-generering). Eftersom datan tas emot den minst signifikanta biten först, och för att undvika att behöva buffra oktetter av data, använder mottagaren vanligtvis den högra skiftande CRC32. Detta gör att "verifiera"-värdet (ibland kallat "magic check") blir 0x2144DF1C.
Emellertid kan hårdvaruimplementering av en logiskt högerskiftande CRC använda ett vänsterskiftande linjärt återkopplingsskiftregister som bas för att beräkna CRC, vända bitarna och resultera i ett verifieringsvärde på 0x38FB2284. Eftersom komplementeringen av CRC kan utföras efter beräkning och under överföring, är det som finns kvar i hårdvaruregistret ett icke-kompletterat resultat, så resten för en högerförskjutningsimplementering skulle vara komplementet av 0x2144DF1C = 0xDEBB20E3, och för en vänsterväxling implementering, komplementet till 0x38FB2284 = 0xC704DD7B.
Slut på ram – fysiskt lager
Slutet på en ram indikeras vanligtvis av symbolen för slutet av dataströmmen vid det fysiska lagret eller genom förlust av bärvågssignalen; ett exempel är 10BASE-T , där den mottagande stationen detekterar slutet av en sänd ram genom förlust av bärvågen. Senare fysiska lager använder ett explicit dataslut eller strömslutssymbol eller sekvens för att undvika tvetydighet, särskilt där bäraren kontinuerligt skickas mellan bildrutor; ett exempel är Gigabit Ethernet med dess 8b/10b- kodningsschema som använder speciella symboler som sänds före och efter att en ram sänds.
Interpacket gap – fysiskt lager
Interpacket gap (IPG) är ledig tid mellan paket. Efter att ett paket har skickats måste sändare sända minst 96 bitar (12 oktetter) i viloläge innan nästa paket sänds.
Typer
Ramtyp | Etertyp eller längd | Nyttolast startar två byte |
---|---|---|
Ethernet II | ≥ 1536 | Några |
Novell rå IEEE 802.3 | ≤ 1500 | 0xFFFF |
IEEE 802.2 LLC | ≤ 1500 | Övrig |
IEEE 802.2 SNAP | ≤ 1500 | 0xAAAA |
Det finns flera typer av Ethernet-ramar:
- Ethernet II-ram, eller Ethernet Version 2, eller DIX-ram är den vanligaste typen som används idag, eftersom den ofta används direkt av Internetprotokollet.
- Novell rå IEEE 802.3 icke-standardvariationsram
- IEEE 802.2 Logical Link Control (LLC) ram
- IEEE 802.2 SNAP-ram ( Subnetwork Access Protocol ).
De olika ramtyperna har olika format och MTU- värden, men kan samexistera på samma fysiska medium. Differentiering mellan ramtyper är möjlig baserat på tabellen till höger.
Dessutom kan alla fyra Ethernet-ramtyper eventuellt innehålla en IEEE 802.1Q-tagg för att identifiera vilket VLAN den tillhör och dess prioritet ( servicekvalitet) . Denna inkapsling definieras i IEEE 802.3ac -specifikationen och ökar den maximala ramen med 4 oktetter.
IEEE 802.1Q-taggen, om sådan finns, placeras mellan källadressen och fälten EtherType eller Length. De två första oktetterna av taggen är TPID-värdet (Tag Protocol Identifier) på 0x8100. Detta är placerat på samma plats som EtherType/Length-fältet i otaggade ramar, så ett EtherType-värde på 0x8100 betyder att ramen är taggad och den sanna EtherType/Length är placerad efter Q-taggen. TPID följs av två oktetter som innehåller Tag Control Information (TCI) (IEEE 802.1p-prioriteten ( servicekvalitet ) och VLAN-id). Q-taggen följs av resten av ramen, med en av de typer som beskrivs ovan.
Ethernet II
Ethernet II-ramning (även känd som DIX Ethernet , uppkallad efter DEC , Intel och Xerox , de största deltagarna i dess design), definierar tvåoktetternas EtherType- fält i en Ethernet- ram , föregås av destinations- och käll-MAC-adresser, som identifierar en övre lagerprotokoll inkapslat av ramdata. Framför allt indikerar ett EtherType-värde på 0x0800 att ramen innehåller ett IPv4- datagram, 0x0806 indikerar ett ARP -datagram och 0x86DD indikerar ett IPv6 -datagram. Se EtherType § Värden för mer.
Eftersom denna industriutvecklade standard gick igenom en formell IEEE- standardiseringsprocess ändrades EtherType-fältet till ett (data)längdfält i den nya 802.3-standarden. Eftersom mottagaren fortfarande behöver veta hur ramen ska tolkas krävde standarden ett IEEE 802.2 -huvud för att följa längden och specificera typen. Många år senare godkände 802.3x-1997-standarden, och senare versioner av 802.3-standarden, formellt båda typerna av inramning. Ethernet II-ramning är den vanligaste i Ethernet lokala nätverk, på grund av dess enkelhet och lägre overhead.
För att vissa ramar som använder Ethernet II-ramning och vissa som använder originalversionen av 802.3-framing ska kunna användas på samma Ethernet-segment måste EtherType-värdena vara större än eller lika med 1536 (0x0600). Det värdet valdes eftersom den maximala längden på nyttolastfältet för en Ethernet 802.3-ram är 1500 oktetter (0x05DC). Så om fältets värde är större än eller lika med 1536, måste ramen vara en Ethernet II-ram, där det fältet är ett typfält. Om det är mindre än eller lika med 1500 måste det vara en IEEE 802.3-ram, där det fältet är ett längdfält. Värden mellan 1500 och 1536, exklusive, är odefinierade. Denna konvention tillåter programvara att avgöra om en ram är en Ethernet II-ram eller en IEEE 802.3-ram, vilket tillåter samexistens av båda standarderna på samma fysiska medium.
Novell rå IEEE 802.3
Novells "råa" 802.3 ramformat baserades på tidigt IEEE 802.3-arbete. Novell använde detta som utgångspunkt för att skapa den första implementeringen av sitt eget IPX Network Protocol över Ethernet. De använde inte någon LLC-header utan startade IPX-paketet direkt efter längdfältet. Detta överensstämmer inte med IEEE 802.3-standarden, men eftersom IPX alltid har FF som de två första oktetterna (medan det mönstret i IEEE 802.2 LLC är teoretiskt möjligt men extremt osannolikt), så existerar detta i praktiken vanligtvis på tråden med andra Ethernet-implementationer, med det anmärkningsvärda undantaget av några tidiga former av DECnet som blev förvirrade av detta.
Novell NetWare använde denna ramtyp som standard fram till mitten av nittiotalet, och eftersom NetWare då var mycket utbredd, medan IP inte var det, körde vid någon tidpunkt större delen av världens Ethernet-trafik över "rå" 802.3 med IPX. Sedan NetWare 4.10 har NetWare som standard IEEE 802.2 med LLC (NetWare Frame Type Ethernet_802.2) när IPX används.
IEEE 802.2 LLC
Vissa protokoll, som de som är designade för OSI-stacken , fungerar direkt ovanpå IEEE 802.2 LLC-inkapsling, som tillhandahåller både anslutningsorienterade och anslutningslösa nätverkstjänster.
IEEE 802.2 LLC-inkapsling är för närvarande inte i utbredd användning på vanliga nätverk, med undantag för stora företags NetWare- installationer som ännu inte har migrerat till NetWare över IP . Tidigare använde många företagsnätverk IEEE 802.2 för att stödja transparenta översättningsbryggor mellan Ethernet och Token Ring- eller FDDI- nätverk.
Det finns en Internetstandard för att kapsla in IPv4-trafik i IEEE 802.2 LLC SAP/SNAP-ramar. Det implementeras nästan aldrig på Ethernet, även om det används på FDDI, Token Ring, IEEE 802.11 (med undantag för 5,9 GHz-bandet , där det använder EtherType) och andra IEEE 802 LAN. IPv6 kan också överföras över Ethernet med IEEE 802.2 LLC SAP/SNAP, men återigen, det används nästan aldrig.
IEEE 802.2 SNAP
Genom att undersöka 802.2 LLC-huvudet är det möjligt att avgöra om det följs av ett SNAP-huvud. LLC-huvudet inkluderar två åttabitars adressfält, kallade serviceaccesspunkter (SAP) i OSI-terminologi; när både käll- och destinations-SAP är inställda på värdet 0xAA, följs LLC-huvudet av ett SNAP-huvud. SNAP-huvudet gör att EtherType-värden kan användas med alla IEEE 802-protokoll, samt stöder privata protokoll-ID-utrymmen.
I IEEE 802.3x-1997 ändrades IEEE Ethernet-standarden för att uttryckligen tillåta användningen av 16-bitarsfältet efter MAC-adresserna för att användas som ett längdfält eller ett typfält.
AppleTalk v2-protokollsviten på Ethernet (" EtherTalk ") använder IEEE 802.2 LLC + SNAP-inkapsling .
Maximal genomströmning
Vi kan beräkna protokolloverheaden för Ethernet som en procentandel (paketstorlek inklusive IPG)
Vi kan beräkna protokolleffektiviteten för Ethernet
Maximal effektivitet uppnås med största tillåtna nyttolaststorlek och är:
för otaggade ramar, eftersom paketstorleken är maximalt 1500 oktetter nyttolast + 8 oktetter preambel + 14 oktett header + 4 oktett trailer + minsta mellanpaket gap motsvarande 12 oktetter = 1538 oktetter. Den maximala effektiviteten är:
när 802.1Q VLAN-taggning används.
Genomströmningen kan beräknas från verkningsgraden
- ,
där det fysiska lagrets nettobithastighet (trådbithastigheten) beror på Ethernet-standarden för fysiskt lager och kan vara 10 Mbit/s, 100 Mbit/s, 1 Gbit/s eller 10 Gbit/s. Maximal genomströmning för 100BASE-TX Ethernet är följaktligen 97,53 Mbit/s utan 802.1Q, och 97.28 Mbit/s med 802.1Q.
Kanalanvändning är ett begrepp som ofta förväxlas med protokolleffektivitet. Den tar endast hänsyn till användningen av kanalen utan att ta hänsyn till arten av den data som överförs – antingen nyttolast eller overhead. På det fysiska lagret känner länkkanalen och utrustningen inte till skillnaden mellan data- och kontrollramar. Vi kan beräkna kanalutnyttjandet :
Den totala tiden tar hänsyn till tiden för tur och retur längs kanalen, bearbetningstiden i värddatorerna och tiden för sändning av data och bekräftelser. Den tid som går åt till att överföra data inkluderar data och bekräftelser.
Runt ramar
En runt ram är en Ethernet-ram som är mindre än IEEE 802.3:s minimilängd på 64 oktetter. Runt ramar orsakas oftast av kollisioner ; andra möjliga orsaker är ett felaktigt nätverkskort , buffertunderkörning , duplexfel eller programvaruproblem.
Anteckningar
Vidare läsning
Video som förklarar hur man bygger en Ethernet-ram
Minsta ramlängd i Ethernet förklaras