Linklaget. Feildeteksjon/feilretting. Feil-deteksjon. Feildeteksjon/feilretting - pålitelig overføring. Oppgaver: 1. Finne feil 2.

Like dokumenter
Linklaget. Feildeteksjon/feilretting - pålitelig overføring. Foreleser: Kjell Åge Bringsrud kjellb 2/17/2004 1

Linklaget. Feildeteksjon/feilretting - pålitelig overføring. Foreleser: Kjell Åge Bringsrud kjellb 2/9/2005 1

Linklaget. Stop-and-Wait. Hvis vi ikke fyller opp røret. Fyll opp røret. Feildeteksjon/feilretting - pålitelig overføring

Linklaget - direkte. forbindelser mellom noder. Foreleser: Kjell Åge Bringsrud kjellb 2/8/2005 1

Internettets Overlay Arkitektur

forbindelser mellom noder Kjell Åge Bringsrud kjellb Foreleser: Linklaget - direkte 2/6/2006 1

Linklaget. Internettets Overlay Arkitektur. Olav Lysne. IP-link. (med bidrag fra Stein Gjessing og Frank Eliassen) Linklaget 1. C.b B.a. A.a. c a. A.

Linklaget - direkte forbindelser mellom noder. Tilbakeblikk. Tilbakeblikk. Generelt om Link-laget

Linklaget - avslutning

Linklaget. Internettets Overlay Arkitektur. Olav Lysne. IP-link. (med bidrag fra Stein Gjessing og Frank Eliassen) Linklaget 1. C.b B.a. A.a. c a. A.

Oversikt. Linklaget. Olav Lysne. (Koding) (Framing) Feilkontroll/feilretting (bare litt) Flytkontroll Eksempler

Litt mer detaljer om: Detaljerte funksjoner i datanett. Fysisk Lag. Multipleksing

Detaljerte funksjoner i datanett

ITF20205 Datakommunikasjon - høsten 2011

Medium Access Control (MAC) Linklaget avslutning. Kjell Åge Bringsrud kjellb. Foreleser: 14/02/2006 1

Kapittel 4: Transportlaget

Dypere forståelse av Linklaget Egenskaper ved Ethernet CSMA/CD

Detaljerte Funksjoner i Datanett

in270 Datakommunikasjon, vår 03 forelesningsnotater, kap. 4

Linklaget - direkte forbindelser mellom noder

KTN1 - Design av forbindelsesorientert protokoll

INF1040 Oppgavesett 6: Lagring og overføring av data

Transport - laget (ende-til-ende protokoller) Internett Best-effort overføring. Best-effort nett kvaliteter

Litt mer detaljer om: Detaljerte funksjoner i datanett. Fysisk Lag. Multipleksing

Linklaget. Olav Lysne. (med bidrag fra Stein Gjessing og Frank Eliassen) Oppsummering 1

Oppsummering: Linjesvitsjing kapasiteten er reservert, og svitsjing skjer etter et fast mønster. Linjesvitsj

Litt mer detaljer om: Tids multipleksing

Litt mer detaljer om: Detaljerte funksjoner i datanett. Fysisk Lag. Multipleksing

Sentrale deler av pensum i INF240. Hensikt. Pål Spilling og Kjell Åge Bringsrud

Sentrale deler av pensum i INF

Kommunikasjonsnett. Et kommunikasjonsnett er utstyr (maskinvare og programvare) for utveksling av informasjon

ITPE2400/DATS2400: Datamaskinarkitektur

Hva består Internett av?

in270 Datakommunikasjon, vår 03 forelesningsnotater

Valg av kontaktpersoner/tillitsvalgte. MAT1030 Diskret matematikk. Oppsummering av kapittel 2. Representasjon av hele tall

IT Grunnkurs Nettverk 3 av 4

I Kapittel 2 lærte vi om tall i alternative tallsystemer, i hovedsak om binære tall, oktale tall og heksadesimale tall.

Detaljerte Funksjoner i Datanett

Computer Networks A. Tanenbaum

Kapittel 10 Tema for videre studier

Søking i strenger. Prefiks-søking Naiv algoritme Knuth-Morris-Pratt-algoritmen Suffiks-søking Boyer-Moore-algoritmen Hash-basert Karp-Rabin-algoritmen

Tall. Posisjons-tallsystemer. Representasjon av heltall. Tall positive, negative heltall, flytende tall. Tekst ASCII, UNICODE XML, CSS

MAT1030 Plenumsregning 3

Norsk informatikkolympiade runde

Turingmaskiner.

Tid og koordinering. Foreleser: Olav Lysne

Plan. Oppgaver og repetisjon Eksempler med fikspunkt og induksjon: 1. sortering 2. divisjon 3. Heis? IN 315: Foilsett 9: Unity: Arkitekturer

Obligatorisk oppgave 1 INF1020 h2005

Transport - laget (ende-til-ende protokoller) Glidende vindu protokoll. Flyt kontroll. dataoverføringsfasen. Sender. Mottaker

Tjenester i skyen. 19. desember

Reelle tall på datamaskin

INF Hjemmeeksamen 1 - Vår 2014 Bridging på linklaget

* + & 2 ( 3+ /. + 4 ( ' 5 ' " 5 0 *. :(( 4 4( " 5

Bakgrunn. Tid og koordinering. Foreleser: Olav Lysne

Detaljerte funksjoner i datanett

Modell: en binær symmetrisk kanal. binær: sendes kun 0 eller 1

Høgskolen i Molde Institutt for Informatikk Prøveeksamen 1 in270: Datakommunikasjon Våren 2003 Skisse til svar:

INF1400. Tilstandsmaskin

6107 Operativsystemer og nettverk

6107 Operativsystemer og nettverk

Dagens plan: INF Algoritmer og datastrukturer. Eksempel. Binære Relasjoner

INF Algoritmer og datastrukturer

INF Algoritmer og datastrukturer

Obligatorisk oppgave nr 2 i datakommunikasjon. Høsten Innleveringsfrist: 04. november 2002 Gjennomgås: 7. november 2002

MAT1030 Diskret matematikk

Oppsummering av Uke 3. MAT1030 Diskret matematikk. Binære tall. Oppsummering av Uke 3

MAT1030 Diskret matematikk

INF1400. Tilstandsmaskin

Tallregning Vi på vindusrekka

MAT1030 Diskret Matematikk

Forelesning 29: Kompleksitetsteori

Løsningsforslag Gruppeoppgaver, januar INF240 Våren 2003

MAT1030 Diskret matematikk

Computer Networks A. Tanenbaum

INF2810: Funksjonell Programmering. Lokale variabler. Og trær.

INF2810: Funksjonell Programmering. Lokale variabler. Og trær.

Alle enheter som skal sende datapakker fra forskjellige strømmer inn på samme link må forholde seg til hvordan strømmene skal prioriteres.

Kodegenerering, del 2: Resten av Kap. 8 pluss tilleggsnotat (fra kap. 9 i ASU ) INF5110 V2007

INF 4130 / / Dagens foiler hovedsakelig laget av Petter Kristiansen Foreleser Stein Krogdahl Obliger:

Hashing. INF Algoritmer og datastrukturer HASHING. Hashtabeller

Kapittel 5 Nettverkslaget

Øvingsforelesning 1 Python (TDT4110)

Høgskolen i Molde Institutt for Informatikk Eksamen in270: Datakommunikasjon Våren 2003 Skisse til svar:

MAT1030 Forelesning 2

Tall. Binære regnestykker. Binære tall positive, negative heltall, flytende tall

MAT1030 Diskret Matematikk

Kapittel 7: Nettverksteknologier

MAT1030 Forelesning 28

Dagens plan. INF Algoritmer og datastrukturer. Koding av tegn. Huffman-koding

Kapittel 11. Multipleksing og multippel aksess

Arbeidshefte Multiplikasjon og divisjon

IN Algoritmer og datastrukturer

Løsningsforslag Gruppeoppgaver mars 2003

Matchinger i ikke-bipartite grafer

Nettverkslaget. Fragmentering/framsending Internetworking IP

Forelesning Instruksjonstyper Kap 5.5

Norsk informatikkolympiade runde

LP. Leksjon 9: Kapittel 13: Nettverk strøm problemer, forts.2

Norsk informatikkolympiade runde. Sponset av. Uke 46, 2016

Uke 5 Disjunkte mengder

Transkript:

Linklaget Feildeteksjon/feilretting - pålitelig overføring Foreleser: Kjell Åge Bringsrud E-mail: kjellb UiO 1 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 (n) blir sendt en gang til (C. Gi blanke, det er ikke så farlig å miste litt data) Generelt prinsipp i informatikken: Oppdag feilen så fort som mulig etter at den har oppstått! UiO 2 Feil-deteksjon Bit-feil i r 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 UiO 3 1

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. (RAID: Redundant Array of Inexpensive Disks) UiO 4 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 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 0 1 0 1 1 1 1 1 1 1 1 1 0 1 1 0 UiO 5 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 UiO 6 2

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. UiO 7 Cyclic Redundency Check Kodeord Data (med hode) Sjekk/CRC m biter 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 Data (med hode) 000 00 Divider dette store tallet på G m biter r biter 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) UiO 8 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) UiO 9 3

Virkelig CRC-utregning Kodeord Data (med hode) Sjekk 01 0000 Anta G er 10011 010000 : 10011 = 1100001010 med rest 1110 010000-1110 = 011110 01 1110 011110 : 10011= 1100001010 nøyaktig (og subtraksjonen ødela ikke dataene våre) UiO 10 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 UiO 11 CRC: Matematikk og polynomer n Data (med hode) Melding/Kodeord r CRC Bitene i meldingen oppfattes egentlig som koeffesientene i et polynom, slik at meldingen kan sees på som et polynom Generatortallet, G, er koeffesientene i et polynom, CRC-polynomet Matematisk grunnlag: polynom aritmetikk modulo-2 UiO 12 4

Cyclic Redundency Check Matematisk grunnlag for CRC Representer en n-bit melding som et n-1 grads polynom eksempel: Data=1000 tilsvarer M(x) = x 7 + x 4 + x 3 + x 1 La k være graden til generator polynomet G(x) eksempel: G(x) = x 3 + x 2 + 1 (dvs. k = 3) Transmitter polynomet P(x) = M(x) + CRC slik at P(x) er delelig med G(x), og motta polynomet P(x) + E(x) E(x)=0 betyr ingen feil Mottaker dividerer (P(x) + E(x)) med G(x); resten vil være null i kun to tilfeller: E(x) var null (dvs. det var ingen feil), E(x) er nøyaktig delelig med G(x). Velg G(x) slik at det andre tilfellet opptrer veldig sjeldent UiO 13 Cyclic Redundency Check Hvordan beregner vi CRC-feltet? multipliser M(x) by x k (leggpåk nuller) i vårt eksempel får vi x 10 + x 7 + x 6 + x 4 (1000000) divider resultet med G(x) (i vårt eksempel: ) 100000 : = 11111001 rest: 101 Send 1000000-101 = 1000101, siden dette må være nøyaktig delelig med C(x) UiO 14 Cyclic Redundency Check Regneeksemplet (sender): 1000000 : = 11111001 1001 1000 1011 1100 1000 101 rest UiO 15 5

Cyclic Redundency Check Regneeksemplet (mottaker): 1000101 : = 11111001 1001 1000 1011 1100 000 rest UiO 16 Velge CRC polynom Intuitivt krav: Hvis n forandrer seg (litt), må det være lite sannsynlig at divisjonen med CRC polynomet går opp På samme måte som det er regler for hvilke tall bl.a. 2 og 3 går opp i, er det regler om hvilke tall (forandring av den orginale meldingen) G går opp i, avhengig av G. Velg derfor G med omhu. Noen egenskaper ved CRC sjekk mhp. deteksjon av feil: Alle enkel-bit feil dersom x k and x 0 termene har koeffesienter som ikke er null Alle dobbel-bit feil dersom C(x) har en faktor med minst tre termer. Etthvert odde antall feil dersom C(x) inneholder faktoren (x + 1). Enhver kaskadefeil (dvs. sekvens av etterfølgende bit-feil) med lengde mindre enn k biter. De fleste kaskadefeil større enn k biter kan også oppdages. UiO 17 Vanlige CRC polynom CRC CRC-8 C(x) x 8 +x 2 +x 1 +1 =100000111 CRC-10 CRC-12 x 10 +x 9 +x 5 +x 4 +x 1 +1 x 12 +x 11 +x 3 +x 2 +x 1 +1 =1100000001111 CRC-16 x 16 +x 15 +x 2 +1 =11000000000000101 CRC-CCITT x 16 +x 12 +x 5 +1 =10001000000100001 CRC-32 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 UiO 18 6

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 UiO 19 Implementasjon CRC Implementasjon i maskinvare av CRC algoritmene kan gjøres enkelt og raskt vha. et shift register og XOR porter Dolphin (tidliger ND, Skullerud) implementerer i SCI en CRC-16 fra en 80 byte pakke i en hastighet av 500Mbyte/sek og med noen få nanosekunders forsinkelse. NB! CRC må da ligge bakerst i pakken UiO 20 Hva bør beskyttes av CRC? Hele n Hele hodet ikke data Deler av hodet Vikigst: mottakeradresse og pakkelengde Kast en pakke så fort som mulig i det en CRCfeil oppdages! UiO 21 7

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. UiO 22 Feilretting uten retransmisjon Kalles Forward Error Correction To-dimensjonal paritet og Hammingkoder kan benyttes Kan f.eks. sende alle pakker to ganger UiO 23 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) UiO 24 8

Pålitelig overføring Når omsending av pakker er nødvendig: To fundamentale mekanismer kvitteringer (engelsk: acknowledgements, ack) er (timeouts) vha. vekkeklokke (timer) Husk at også kvitteringer kan bli borte Ønsker vi at pakkene skal komme frem i riktig rekkefølge? UiO 25 Stop-and-Wait (stopp og vent) Sender A 2. ACK Mottaker B 1. Pakke Mottaker sender ack tilbake når en er mottatt, og først når sender mottar ack, sendes ny. 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? UiO 26 Stop-and-Wait (stopp og vent) Grunnleggende algoritme: send én og vent på kvittering (ACK ) dersom ACK ikke mottatt innen gitt, send n på nytt. ACK ACK UiO 27 9

Stop-and-Wait Problem 1 med grunnleggende algoritme: Men kanskje det var ACK som ble borte Vi må kunne sende den samme n på nytt, selv om den allerede er kommet riktig frem ACK ACK UiO 28 Stop-and-Wait Problem 2 med grunnleggende algoritme: Kanskje vi sendte n om igjen for tidlig Vi må godta at ACK kommer for sent ACK ACK UiO 29 Stop-and-Wait Må sende n på nytt og på nytt helt til ACK kommer tilbake Hvordan vet mottaker at det er den samme n som sendes på nytt? ACK ACK ACK UiO 30 10

Løsning: sekvensnummer ACK (send meg k+1) k+1 k+1 k+1 A Mottaker B k+1 k k k k k Ramme nr. k Det er nok med en en-bit teller (0 og 1) k, k+1 regnes da ut modulo 2. (En buffers Sliding window protokoll) UiO 31 Sekvensnummer som 0 og 1 0 og 1 som sekvensnummere En bit er nok når vi sender én av gangen og venter på kvittering ACK 1: Send med odde sekvensnummer ACK 0: Send med like sekvensnummer Altså: 0, 1, 2, 3, 4, 5, sendes som 0, 1, 0, 1, 0, 1, Går dette bra? Hva betyr det at det går bra? UiO 32 0-1 sekvensnummer Egsenskaper til korrekt løsning? Mottaker leverer aldri samme to eller flere ganger til laget over (nettlaget) Ingen r 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 leveres straks den er korrekt mottat og ikke mottat før) UiO 33 11

0-1 sekvensnummer Analyse av sender - like (0) sendes ut - ignorerer (gamle) ACK 0 - resender like (0) I det ACK 1 kommer: - odde (1) sendes ut - ignorerer (gamle) ACK 1 - resender odde (1) I det ACK 0 kommer: - like (0) sendes ut - ignorerer (gamle) ACK 0 - resender like (0) I det ACK 1 kommer: osv. Vanskelig? 0 0 ACK 1 0 ACK 1 0 1 ACK 1 ACK 0 0 levér 0 ignorér 0 ignorér 0 levér 1 UiO 34 Tilstandsmaskin for en-bit protokoll Ta imot ack 0 Ta imot pakke 0 Start Send pakke 0 Send ack 1 Ta imot ack 0 Ta imot ack 1 Ta imot pakke 0 Ta imot pakke 1 Ta imot ack 1 Sender Ta imot pakke 1 Start Send Send pakke 1 Mottaker ack 0 UiO 35 Petrinett: Generalisert tilstandsdiagram med parallelle aktiviteter Eksempel 1 Anne Et kyss Ole UiO 36 12

Petrinett: Generalisert tilstandsdiagram med parallelle aktiviteter Eksempel 2 Vil gå tur Anne Gå tur sammen Vil gå tur Ole UiO 37 Et bit protokoll A ACK (send meg k+1 mod 2) 1 1 1 B k k+1 k+2 k+3 k+4 k+5 0 1 0 1 0 1 0 Ramme nr. k 0 0 0 Sender A ACK (send meg k+2 mod 2) 0 0 0 Mottaker B k+1 1 k+2 0 k+3 1 k+4 0 k+5 1 1 Ramme nr. k + 1 1 1 1 UiO 38 Stop-and-Wait Det gjør ikke noe om mottaker gjentar en ACK, men det er ikke vanlig, dvs. at det er bare vanlig å sende ACK når en pakke ankommer. Ved mye pakketap kan det være gunstig å gjenta ACK selv om det ikke kommer en ny pakke. Hvorfor? 0 ACK 1 0 ACK 1 0 ACK 1 0 1 ACK 0 UiO 39 13

Stop-and-Wait Grunnleggende svakhet: utnytter linjekapasiteten dårlig senderen kan bare ha én utestående til enhver tid Eksempel: 1.5Mbps link x 45ms RTT = 67.5Kb (8KB) dvs. 8KB data kan være underveis på linjen anta størrelse 1KB stop-and-wait bruker ca. 1/8 av linjekapasiteten (om ingen feil) Mål: senderen må kunne sende opp til 8 r før den må vente på en ACK moralen er: fyll opp røret Avsender Mottaker UiO 40 Fyll opp røret Utnytte linjen bedre. Sender flere pakker rett etter hverandre: A Pakker B Pakker Putte ACK/NAK på ryggen til meldinger som går den andre veien ( piggyback ) UiO 41 Hvis vi ikke fyller opp røret Lange ledninger. Det tar tid før pakken kommer frem og ACK kommer tilbake. Utnyttelsen av linken kan regnes ut: Bruk av ledningen (pakkebruk): pakkelengde * sendehastighet Forsinkelse tur/retur (RTT): avstand * utbredelseshastighet * 2 + pakkebruk + ACKpakkebruk ++ Eksempel: 1500m fiber, 1/2 * 3*10 8 m/s gir 10000 ns hver vei 53 byte pakke, 1G bit/sec, 424 bit gir 424 ns. (samme i ACK) Bruksdel= pakkebruk/rtt = 424/(10000*2 +424+424++) 2% A Sender Pakke UiO Mottaker 42 B 14

Glidende vindu Idé: Tillat senderen å sende flere r før den mottar ACK for derved å holde røret fullt. Det må være en øvre grense på antall r som kan være utestående (som det ikke er mottat ACK for). sender mottaker Eksempel: maks. 5 utestående r UiO 43 Glidende vindu Flere bufre hos sender og flere bufre hos mottaker, mange pakker med forskjellige nummer og mange ack/nack med forskjellige nummer under veis hele tiden. ACK/NACK Pakker UiO 44 Glidende vindu Sendt men ikke fått ack, Disse tre er motatt må kanskje sendes på nytt og kvittert (ack sendt) (vil bli resendt om ack aldri mottas) (men kan ikke sendes videre før x motatt) Ikke motatt x Pakker ack/nak x UiO 45 15

Glidende vindu: sender Tilordner sekvensnummer til hver (SeqNum) Vedlikeholder tre tilstandsvariable send window size (SWS) last acknowledgment received (LAR) last frame sent (LFS) Vedlikeholder invariant: LFS - LAR SWS Rammer som er bekreftet Rammer som venter på å bli bekreftet Rammer som ikke er sendt N N+1 N+2 N+3 N+4 N+5 N+6 N+7 N+8 N+9 N+10N+11N+12N+13N+14 SWS=8 LAR SWS LFS Når ACK mottas, økes LAR, og derved kan ny flyt stoppet sendes slik at LFS økes. Buffer for opptil SWS Frank r, Eliassen/Stein dvs SWS Gjessing, r Ifi, i røret samtidig UiO 46 Glidende vindu: mottaker Vedlikeholder tre tilstandsvariable (fig 2.23 side 107 har feil navn) receive window size (RWS) largest acceptable frame (LAF) last frame received (LFR) (with all smaller frames also received) Vedlikeholder invariant: LAF - LFR RWS Rammer som er mottat Rammer som kan mottas (muligens ute av orden) N N+1 N+2 N+3 N+4 N+5 N+6 N+7 N+8 N+9 N+10N+11 N+12N+13N+14 LFR RWS LAF UiO 47 Glidende vindu: mottaker Kumulativ kvittering ( go back n protokoll), dvs. vi ack-er ikke nye pakker hvis det er hull i sekvensen av mottatte pakker if LFR < MottatRamme.SeqNum < LAF then ta-imot-pakken-og-legg-den-på-plass; beregn-nye-grenser (MottatRamme.SeqNum); else kast pakken; send ACK (LFR + 1) // se neste lysark Rammer som er mottat Rammer som kan mottas (muligens ute av orden) N N+1 N+2 N+3 N+4 N+5 N+6 N+7 N+8 N+9 N+10N+11 N+12N+13N+14 LFR RWS LAF UiO 48 16

Glidende vindu: mottaker Invariant: LFR + 1 er første pakke som ikke er mottatt bergen-nye grenser(seqno) if seqno = LFR + 1 { beregn ny LFR og LAF: for (i= LFR + 1; i er mottatt; i++) { } ; LFR = i-1; LAF = LFR + RWS; } første som ikke er mottatt N N+1 N+2 N+3 N+4 N+5 N+6 N+7 N+8 N+9 N+10N+11 N+12N+13N+14 LFR Frank Eliassen/Stein SeqNum Gjessing, Ifi, UiO LAF 49 Glidende vindu: mottaker Varianter til go back n protokoll Negativ kvittering (NAK) mottaker sender NAK på r som savnes Selektiv kvittering (SAK) mottaker sender ACK på nøyaktig de r som mottas disse behøver da ikke re-sendes Både SAK og NAK øker kompleksiteten til implementasjonen, men kan potensielt bedre utnyttelsen av linjen UiO 50 Glidende vindu: endelige sekvensnummer I praksis representeres sekvensnummer med et endelig antall biter. n biters sekvensnummer => intervall sekv. nr. = (0..2 n -1) I HDLC: n = 3, dvs. sekvensnummerintervall (0..7) sekvensnummer må gjenbrukes 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 Problem skille mellom ulike inkarnasjoner av samme numre Minimum krav: sekvensnummerintervallet må være større enn maks. antall utestående r UiO 51 17

Glidende vindu: endelige sekvensnummer SWS MaxSeqNum+1 er ikke tilstrekkelig anta 3 biters SeqNum felt (0..7) SWS=RWS=8 senderen transmitterer ne 0..6 mottas uten feil, men ACK går tapt senderens utløper, ne 0..6 sendes på nytt mottaker forventer 7,0..5, men mottar andre inkarnasjon av 0..5 SWS,RWS (MaxSeqNum+1)/2 er riktig regel 6 5 7 0 Hindrer overlapp mellom 1 nedre kant av sendervinduet og 2 øvre kant av mottakervinduet. 4 3 UiO 52 Glidende vindu: endelige sekvensnummer Eksempel: SWS, RWS = 4 LAR 7 0 6 1 5 2 4 3 LAR LFS 7 0 6 1 5 2 4 3 LFS send r 0..3 ACK 4 send r 0..3 7 0 6 1 5 2 4 3 NFE NFE LFA LFA 7 0 6 1 5 2 4 3 Hva bør mottaker nå gjøre? UiO 53 Samtidige logiske kanaler Multiplekser flere logiske kanaler over en punkt-til-punkt link; kjører stop-and-wait på hver logiske kanal Vedlikeholder tre biter tilstand for hver kanal : boolsk variabel som angir om kanalen er opptatt sekvens nummer for r som sendes på denne logiske kanalen neste sekvens nummer som forventes på denne logiske kanalen ARPANET understøtter åtte logiske kanaler over hver jord link (16 over hver satellitt link) UiO 54 18

Linklaget - flytkontroll UiO 55 Glidende vindu og flytkontroll Flytkontroll hindrer en sender i å oversvømme en mottaker med r Glidende-vindu-protokoll oppfyller tre formål pålitelig overføring bevarer ordningen av ne ved overføring (?) mer relevant for høyere lags protokoller en link-protokoller understøtter flytkontroll UiO 56 Flytkontroll Normalt en feed-back (tilbakemelding) protokoll der mottaker informerer senderen om sin buffer-kapasitet Gjerne realisert som et tillegg til glidende vindu To vanlige tilnærminger: 1. sender stopper når spesiell NAK mottas 2. mottaker informerer senderen om hvor mange pakker/bytes den har plass til, og sender ikke mer data enn oppgitt inntil den får ny beskjed (kredittbasert flytkontroll) UiO 57 19

Flytkontroll - NAK Tilnærming 1: Eksplisitt NAK (Not acknowledge) I SCI sender mottaker en ACK eller en NAK for hver eneste pakke NAK: Kan ikke ta imot mer Full inn-buffer UiO 58 Flytkontroll - Kreditt-basert Tilnærming 2: Kreditter (jeg har til gode hos deg) Hetrogenous InterConnect (HIC) bruker dette Jeg har plass til 4 pakker Sender Mottaker Meldingen om at mottakeren har plass til mer kan sendes som en egen melding eller bakes inn i ( piggybacked på) annen melding i motsatt retning. Mer om flykontroll seinere (ifb. nettverks- og transportprotokoller) UiO 59 Oppsummering Pålitelig overføring av r krever metoder for 1. Feildeteksjon 2. Feilkorrigering Metoder for feil-deteksjon Cyclic Redundency Check (CRC) Paritet - to-dimensjonal paritet Sjekksum Metoder for feilkorrigering Forward-error-correction (benyttes relativt lite i datanett) Retransmisjon (stop-and-wait, glidende vindu) Flykontroll hindrer en sender i å oversvømme en mottaker glidende vindu basert feed-back (NAK) eller Frank kreditt-basert Eliassen/Stein Gjessing, (credit-message) Ifi, UiO 60 20