Linklaget - direkte forbindelser mellom noder Foreleser: Kjell Åge Bringsrud E-mail: kjellb 2/8/2005 1
Tilbakeblikk Kursets fokus nett for generell bruk pakkebaserte nett A Noder 1 2 3 4 5 D 6 Link 2/8/2005 2
Tilbakeblikk OSI Referansemodellen: lagdelt / abstraksjonslag et lag bygger på laget under og tilbyr en verdiøket tjeneste A B Transport Nett Link Fysisk Ende-til-ende 2 3 5 Transport Nett Link Fysisk Kommunikasjonsmedium 2/8/2005 3
Generelt om Link-laget Hensikt? Å forbinde to noder i nettet (og ende-maskinene til første node i nettet) Simplex, Half duplex, Full duplex enten eller begge veier samtidig Spesialtilfeller: Flere noder koblet til samme ledning (Ethernet) Flere noder koblet i ring (simplex mellom nodene): (Token ring, FDDI) Disse spesialtilfellene blir behandlet senere 2/8/2005 4
Linklagets abstraksjon Nettlag Linklag abstraksjon Problemer/utfordringer? Fysisk lag 2/8/2005 5
Linklaget - utfordringer Utfordringer Rammeinndeling/innramming Feildeteksjon/feilretting Flytkontroll Spesialtilfelle flere noder deler en link (som i Ethernet) => Behov for adgangskontroll til linken (mediet) 2/8/2005 6
Rammeinndeling Problem: Dele sekvensen av bit opp i rammer Implementeres typisk av nettverksadapter Adapter henter (legger) rammer fra (i) nodens internlager Avsendernode Adapter bit-overføring Mottagernode Adapter ramme-overføring Abstraksjon av linjen: uendelig sekvens av bit. Hvordan bestemme start og slutt til rammen? 2/8/2005 7
Rammer (engelsk: frames) Overføringsenhet mellom noder/adaptere En ramme = data (bit) som utgjør en naturlig helhet (variabelt eller fast antall bit/byte) Bit som skal overføres (f.eks. pakke): Bit som skal overføres, pakkes inn i en ramme: Ekstra biter settes inn bak og/eller foran, og noen ganger inne i dataene som overføres. Hensikt? avgrense rammen detektere feil kontrollere flyt 2/8/2005 8
Innramming i forhold til OSI-lagene Nettverkslag Linklag Fysisk lag 2/8/2005 9
Byte-orienterte protokoller Tidlig tilnærming til innramming opphav i byte/character orienterte terminaler (byte= oktett) BISYNC (Binary Synchronous Communication) IBM 60-tallet PPP (Point-to-Point Protocol) kommunikasjon over modem, f.eks. mellom hjemme-pc og ISP 2/8/2005 10
Byte-orienterte protokoller Bruk av vokter BISYNC 8 8 8 8 8 16 S S S S E Y Y O Header T Body T N N H X X vokter tegn CRC Problem: Hva skjer når SOH, STX og ETX forekommer i datadelen av rammen? Løsning: Markerer disse med DLE foran (og DLE i data med DLE DLE) Kalles gjerne tegn-støffing (character stuffing) 8 8 8 8 8 16 S Y N S Y N S O H D L E E T X S T X D L E S O H E T X CRC 2/8/2005 11
Byte-orienterte protokoller Bruk av byte-teller (antall) 8 8 8 14 42 16 S S Y Y Count Header Body N N Class CRC Problem: Hva skjer når Count feltet har bit-feil? Løsning: oppdages når CRC feiler vente til neste SYN; prøve på nytt derfra rammetap For større sikkerhet (redundans): både End-of-Text og teller 2/8/2005 12
Bit-orienterte protokoller Regnes som mer moderne enn byte-orienterte En ramme er en samling bit HDLC (også SDLC): avgrenser rammen med en spesiel bit-sekvens 01111110 16 16 01111110 Header Body CRC 01111110 flag-byte 2/8/2005 13
Bit-orienterte protokoller Problem: spesielle bit-sekvens forekommer i datadelen Løsning: bit-støffing sender: hver gang fem 1-ere oppdages, settes en ekstra 0 inn 11111 111110 garanterer at flag-byte ikke kan forekomme i datadelen flag-byte er (selvsagt) ikke gjenstand for bit-stuffing mottaker: hver gang fem 1-ere oppdages dersom neste bit er 0, fjern den og fortsett mottaket dersom neste bit er 1 dersom neste bit deretter er 0 slutt på rammen dersom neste bit deretter er 1 rammefeil; vente på neste flag-byte 2/8/2005 14
Tegn- og bit-støffing Fast rammestørrelse er umulig Fordi: antall ekstra tegn (DLE) eller bit (0) er avhengig av hva slags data det er i rammen 2/8/2005 15
Klokke-basert innramming Fast rammestørrelse Klokke-basert er et dårlig navn Prinsipp: mottaker ser etter et bestemt bitmønster som gjentas med fast avstand i bitstrømmen (f.eks. hver 810 byte som i SONET) når det spesielle bit-mønstret dukker opp på rett plass tilstrekkelig antall ganger, konkluderer mottaker at den er synkron med sender og tolker rammen korrekt 2/8/2005 16
SONET/SDH SONET (Synchronous Optical Network)(USA) / SDH (Synchronous Digital Hierarchy) (Europa) ITU standard for transmisjon over optiske fiber Fast rammestørrelse, leter etter SYN-SYN (spesielt bitmønster først i hodet) med jevne mellomrom (hver 810. byte) Når dette er OK regner mottaker med at den er synkronisert I tillegg til SYN-SYN i starten inneholder hodet pekere til sub-rammer i data-delen (sub-rammer kan flyte over flere SONET-rammer) STS-1 (51.84 Mbps) laveste hastighet for SONET/SDH-linker 2/8/2005 17
Feildeteksjon/feilretting Oppgaver: 1. Finne feil 2. Rette feil To alternativer til å rette feil: A. Ha nok informasjon til å rette opp feil i de mottatte dataene B. Be om at dataene (rammen) blir sendt en gang til (C. Gi blanke, det er ikke så farlig å miste litt data) Generelt prinsipp i informatikken: Oppdage feilen så fort som mulig etter at den har oppstått! 2/8/2005 18
Feil-deteksjon Bit-feil i rammer behov for mekanismer som oppdager bit-feil Teknikker som ofte benyttes i datanett Cyclic Redundency Check (CRC) svært utbredt Paritet - to-dimensjonal paritet BISYNC ved ASCII overføring Sjekksum flere Internett-protokoller 2/8/2005 19
Paritet (tverrsum) Ett paritetsbit: F.eks. 7 bit data, sendes som 8 bit Like paritet dvs. et like antall enere i resultatet 0110001 sendes som 01100011 Odde paritet dvs. et odde antall enere i resultatet Odde paritet: 0110001 sendes som 01100010 Generelt: Jo mer data til redundans, jo flere feil oppdages. 2/8/2005 20
To-dimensjonal paritet Rad paritet Kolonne paritet Oppdager alle 1,2 og 3 bit feil og de fleste 4 bit feil I eksemplet: 14 bit redundant informasjon, og 42 bit melding ramme paritets byte paritets biter 0 1 0 1 0 0 1 1 1 1 0 1 0 0 1 0 1 0 1 1 1 1 0 1 0 0 0 1 1 1 0 1 0 1 1 0 1 0 0 1 1 0 1 1 1 1 1 0 1 1 1 1 0 1 1 0 2/8/2005 21
Internett sjekksum algoritme Se på en melding som en sekvens av 16-biters heltall Senderen adderer disse heltallene sammen ved bruk av 16-bit aritmetikk Dette 16-bit tallet er sjekksummen Mottaker utfører samme beregning og sammenligner resultatet med den mottatte sjekksum Får mottaker feil resultat er det bitfeil enten i dataene eller i sjekksummen Benyttes ende til ende i Internett transportlaget 2/8/2005 22
CRC: Cyclic Redundancy Check Generalisering av paritet: Kodeord Data (med hode) Sjekk/CRC Like paritet: Kodeordet delt på 2 skal ikke gi rest CRC: Kodeordet delt på et tall, G, skal ikke gi rest Dette tallet vi deler på kaller vi Generatorpolynomet Deling foregår med modulo-2 regning, dvs ikke mente eller låning. 2/8/2005 23
Cyclic Redundency Check Kodeord Data (med hode) m biter Sjekk/CRC r biter CRC: Kodeordet delt på et Generatortall skal ikke gi rest Hvordan finner vi Sjekk/CRC? Jo, slik: 1. Generatortallet kaller vi G. G er på r+1 biter. 2. Lag et stort tall av Data med r 0-biter bak Divider dette store tallet på G Bruk modulo-2 regning (XOR, dvs. ikke noe mente) 3. Resten av divisjonen er alltid på r eller færre biter! Denne resten blir Sjekk/CRC Da vil Kodeordet være delelig på G (med 0 i rest) Data (med hode) 000 00 m biter r biter 2/8/2005 24
Desimal analogi til CRC-utregning Kodeord Data (med hode) Sjekk/CRC 82532109 0000 Anta G er 3497 825321090000 : 3497 = 236008318 med rest 1954 82532109-1954 = 825321088046 82532108 8046 825321088046 : 3497 = 236008318 nøyaktig (mente i subtraksjonen ødlegger dataene våre) 2/8/2005 25
Virkelig CRC-utregning Kodeord Data (med hode) 1101011011 Sjekk 0000 Anta G er 10011 11010110110000 : 10011 = 1100001010 med rest 1110 11010110110000-1110 = 11010110111110 1101011011 1110 11010110111110 : 10011= 1100001010 nøyaktig (og subtraksjonen ødela ikke dataene våre) 2/8/2005 26
CRC baserer seg på polynomer CRC-algoritmen ser på binærtall som polynomer. F.eks. betraktes 1 0 0 1 1 som polynomet x + x + 1= x + x + x = 1* x + 0* x + 0* x + 1* x + 1* x 4 4 1 0 4 3 2 1 0 Og 1 1 0 0 0 1 som polynomet x + x + 1 = x + x + x 5 4 5 4 0 NB: Hvis polynomet er av grad r, har binærtallet r+1 biter 2/8/2005 27
Cyclic Redundency Check Regneeksemplet (sender): 10011010000 : 1101 = 11111001 1101 1001 1101 1000 1101 1011 1101 1100 1101 1000 1101 101 rest 2/8/2005 28
Cyclic Redundency Check Regneeksemplet (mottaker): 10011010101 : 1101 = 11111001 1101 1001 1101 1000 1101 1011 1101 1100 1101 1101 1101 000 rest 2/8/2005 29
Vanlige CRC polynom CRC CRC-8 CRC-10 CRC-12 CRC-16 CRC-CCITT CRC-32 C(x) x 8 +x 2 +x 1 +1 =100000111 x 10 +x 9 +x 5 +x 4 +x 1 +1 x 12 +x 11 +x 3 +x 2 +x 1 +1 =1100000001111 x 16 +x 15 +x 2 +1 =11000000000000101 x 16 +x 12 +x 5 +1 =10001000000100001 x 32 +x 26 +x 23 +x 22 +x 16 +x 12 +x 11 +x 10 + x 8 +x 7 +x 5 +x 4 +x 2 +x+1 2/8/2005 30
Egenskaper CRC-16 Alle enkle og doble bitfeil Alle feil i et odde antall bit Alle kaskadefeil av lengde mindre enn 17 99,997 % av alle 17 biters kaskader 99,998 % av alle 18 biters kaskader 2/8/2005 31
Hva bør beskyttes av CRC? Hele rammen Hele hodet ikke data Deler av hodet Vikigst: mottakeradresse og pakkelengde Kast en pakke så fort som mulig i det en CRCfeil oppdages! 2/8/2005 32
Feilretting Når skal vi rette feil? Mottakeradresse, pakkelengde mm. i hodet må eventuelt rettes med en gang. Data kan rettes med en gang eller vente Avveiing: Rette med en gang: Tar tid, ønsker vi at alle noder i nettet skal bruke tid på dette? Vente: Da kan det hende at feilen blir verre slik at det ikke er mulig å rette den lenger. 2/8/2005 33
Feilretting uten retransmisjon Kalles Forward Error Correction To-dimensjonal paritet og Hammingkoder kan benyttes Kan også sende alle pakker to ganger og sammenlikne 2/8/2005 34
Feil-korrigerende koder Bruk av Hamming-kode for å korrigere burst feil. 2/8/2005 35
Pålitelig overføring Pakker med feil CRC kastes Fint om vi kan rette opp feilen Hvis feilen ikke kan rettes opp, og vi trenger pakken, da må den sendes en gang til! Også her er det en avveiing: Ende-til ende eller mellom noder? (Problemkomplekset med doblet/triplet (mm.) funksjonalitet) 2/8/2005 36
Pålitelig overføring Når omsending av pakker er nødvendig: To fundamentale mekanismer kvitteringer (engelsk: acknowledgements, ack) tidsfrister (timeouts) vha. vekkeklokke (timer) Husk at også kvitteringer kan bli borte Ønsker vi at pakkene skal komme frem i riktig rekkefølge? 2/8/2005 37
Stop-and-Wait (stopp og vent) Sender A 2. ACK Mottaker B 1. Pakke Mottaker sender ack tilbake når en ramme er mottatt, og først når sender mottar ack, sendes ny ramme. På denne måten blir ikke mottaker oversvømmet av pakker, og avsender vet at alle pakker er kommet trygt fram. Men hva hvis pakker blir borte? 2/8/2005 38
Stop-and-Wait (stopp og vent) Grunnleggende algoritme: send én ramme og vent på kvittering (ACK ramme) dersom ACK ikke mottatt innen gitt tidsfrist, send rammen på nytt. tidsfrist ramme ACK tidsfrist ramme ramme tidsfrist ACK 2/8/2005 39
Stop-and-Wait Problem 1 med grunnleggende algoritme: Men kanskje det var ACK som ble borte Vi må kunne sende den samme rammen på nytt, selv om den allerede er kommet riktig frem ramme ACK ramme tidsfrist tidsfrist ACK 2/8/2005 40
Stop-and-Wait Problem 2 med grunnleggende algoritme: Kanskje vi sendte rammen om igjen for tidlig Vi må godta at ACK kommer for sent ramme ACK ramme tidsfrist tidsfrist ACK 2/8/2005 41
Stop-and-Wait ramme Må sende rammen på nytt og på nytt helt til ACK kommer tilbake Hvordan vet mottaker at det er den samme rammen som sendes på nytt? tidsfrist tidsfrist tidsfrist ramme ACK ramme ACK ramme ACK 2/8/2005 42
Løsning: sekvensnummer A k+1 k ACK (send meg k+1) k+1 k+1 k+1 k k k Ramme nr. k Mottaker k B Det er nok med en en-bit teller (0 og 1) k, k+1 regnes da ut modulo 2. (En buffers Sliding window protokoll) 2/8/2005 43
Sekvensnummer som 0 og 1 0 og 1 som sekvensnummere En bit er nok når vi sender én ramme av gangen og venter på kvittering ACK 1: Send ramme med odde sekvensnummer ACK 0: Send ramme med like sekvensnummer Altså: ramme 0, 1, 2, 3, 4, 5, sendes som ramme 0, 1, 0, 1, 0, 1, Går dette bra? Hva betyr det at det går bra? 2/8/2005 44
0-1 sekvensnummer Egenskaper til korrekt løsning? Mottaker leverer aldri samme ramme to eller flere ganger til laget over (nettlaget) Ingen rammer går tapt (forutsatt at alle meldinger før eller siden kommer frem når de resendes tilstrekkelig antall ganger) Rammene leveres i samme rekkefølge hos mottager som de sendes i av senderen (forutsatt at en ramme leveres straks den er korrekt mottat og ikke mottatt før) 2/8/2005 45
0-1 sekvensnummer Analyse av sender - like ramme (0) sendes ut - ignorerer (gamle) ACK 0 - resender like ramme (0) I det ACK 1 kommer: - odde ramme (1) sendes ut - ignorerer (gamle) ACK 1 - resender odde ramme (1) I det ACK 0 kommer: - like ramme (0) sendes ut - ignorerer (gamle) ACK 0 - resender like ramme (0) I det ACK 1 kommer: osv. Vanskelig? tidsfrist tidsfrist tidsfrist ramme 0 ramme 0 ACK 1 ramme 0 ACK 1 ramme 0 ramme 1 ACK 1 ACK 0 ramme 0 levér ramme 0 ignorér ramme 0 ignorér ramme 0 levér ramme 1 2/8/2005 46