Linklaget Feildeteksjon/feilretting - pålitelig overføring Foreleser: KjellÅge Bringsrud E-mail:kjellb Stop-and-Wait Grunnleggende svakhet: utnytter linjekapasiteten dårlig senderen kan bare ha én utestående ramme til enhver tid Eksempel:.5Mbps link x 45ms RTT = 67.5Kb (8KB) dvs. 8KB data kan være underveis på linjen anta rammestørrelse KB stop-and-wait bruker ca. /8 av linjekapasiteten (om ingen feil) Mål: senderen må kunne sende opp til 8 rammer før den må vente på en ACK moralen er: fyll opp røret Avsender Mottaker 2/9/2005 2/9/200 Fyll opp røret Utnyttelinjen bedre. Senderflere pakkerrettetterhverandre: A B Hvis vi ikke fyller opp røret Lange ledninger.dettartid førpakken kom m erfrem og ACK kommertilbake. Utnyttelsen av linken kan regnesut: Bruk avledningen (pakkebruk): pakkelengde * sendehastighet Forsinkelse tur/retur(rtt): (avstand /utbredelseshastighet)* 2 + pakkebruk + ACKpakkebruk ++ Eksem pel: 500m fiber,/2 * 3*0 8 m/s gir0000 ns hvervei 53 byte pakke,g bit/sec, 424 bitgir424 ns. (sam m eiack) PutteACK/NAK på ryggen tilm eldingersom går den andreveien ( piggyback ) 2/9/2005 3 Bruksdel= pakkebruk/rtt = 424/(0000*2 +424+424++) 2% A B Sender Pakke Mottaker 2/9/2005 4
Glidende vindu Idé: Tillat senderen å sende flere rammer før den mottar ACK for derved å holde røret fullt. Det må være en øvre grense på antall rammer som kan være utestående (som det ikke er mottatt ACK for). Eksem pel: maks.5 utestående ram m er sender mottaker Glidende vindu Flerebufrehossenderogflerebufrehosm ottaker, mange pakkerm ed forskjellige num m erog m ange ack/nack m ed forskjelligenum m erunderveisheletiden. ACK/NACK 2/9/2005 5 2/9/2005 6 Glidende vindu Glidende vindu: sender Sendtm en ikkefåttack, Disse treermotatt m å kanskjesendespånytt ogkvittert(ack sendt) (vilbliresendtom ackaldrim ottas) (men kan ikke sendes videreførx motatt) x ack/nack x Ikkem otatt Tilordner sekvensnummer til hver ramme (SeqNum) Vedlikeholder tre tilstandsvariable send window size (SWS) last acknowledgment received () last frame sent (LFS) Vedlikeholder invariant: LFS - SWS Rammersom erbekreftet Rammersom venter på å blibekreftet Rammersom ikkeersendt 2/9/2005 7 SW S=8 SW S LFS Når ACK mottas, økes, og derved kan ny ramme flytstoppet sendes slik at LFS økes. Buffer for opptil SWS rammer, dvs SWS rammer i røret samtidig 2/9/2005 8 2
Vedlikeholder tre tilstandsvariable receive window size (RWS) largest acceptable frame (LAF) last frame received (LFR) (with all smaller frames also received) Vedlikeholder invariant: LAF - LFR RWS Ramm ersom erm ottat Ramm ersom kanm ottas (muligensuteavorden) 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 (MottattRamme.SeqNum); // se neste lysark else kast pakken; send ACK (LFR + ) Ramm ersom erm ottatt Ramm ersom kanm ottas (muligensuteavorden) LFR RW S LAF 2/9/2005 9 LFR RW S LAF 2/9/2005 0 Invariant: LFR + er første pakke som ikke er mottatt beregn-nye grenser(seqno) if seqno = LFR + { beregn ny LFR og LAF: for (i= LFR + ; ramme i er mottatt; i++) { } ; LFR = i-; LAF = LFR + RWS; } førstesom ikkeerm ottatt Varianter til go back n protokoll Negativ kvittering (NAK) mottaker sender NAK på rammer som savnes Selektiv kvittering (SAK) mottaker sender ACK på nøyaktig de rammer 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 SeqN um 2/9/2005 LFR LAF 2/9/2005 2 3
Glidende vindu: I praksis representeres sekvensnummer med et endelig antall biter. n biters sekvensnummer => intervall sekv. nr. = (0..2 n -) I HDLC: n = 3, dvs. sekvensnummerintervall (0..7) sekvensnummer må gjenbrukes 0 2 3 4 5 6 2 3 4 5 6 Problem skille mellom ulike inkarnasjoner av samme nummere Minimum krav: sekvensnummerintervallet må være større enn maks. antall utestående rammer 2/9/2005 3 Glidende vindu: SWS MaxSeqNum+ er ikke tilstrekkelig anta 3 biters SeqNum felt (0..7) SWS=RWS=8 senderen transmitterer rammene 0..6 mottas uten feil, men ACK går tapt senderens tidsfrist utløper, rammene 0..6 sendes på nytt mottaker forventer 7,0..5, men mottar andre inkarnasjon av 0..5 SWS,RWS (MaxSeqNum+)/2 er riktig regel 6 Hindreroverlapp m ellom nedrekantav sendervinduetog øvrekantav m ottakervinduet. 2/9/2005 4 Glidende vindu: Oppsummering Eksempel: SWS, RWS = 4 6 LFS 6 LFS send ram mer0..3 ACK 4 send ram m er0.3 NFE 6 5 2 LFA LFA 6 NFE Hvabørm ottakernågjøre? Linklaget abstraherer fysisk lag fra en uendelig sekvens av bit til en sekvens av pakker (rammer) Oppdager og korrigerer feil Tre metoder for innramming Tegn-baserte protokoller med tegn-støffing Bit-baserte protokoller med bit-støffing Klokkebasert protokoller med fast rammestørrelse 2/9/2005 5 2/9/2005 6 4
Oppsummering 2 Pålitelig overføring av rammer krever metoder for. 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) 2/9/2005 7 5