Professional Documents
Culture Documents
Kontrola Toka
Kontrola Toka
Kontrola toka
K t l
Kontrola
toka
27.10.2010.
Raunarske mree
Kontrola toka
27.10.2010.
Raunarske mree
Kontrola toka
Kontrola toka
Problem nastaje
j kada poiljalac
p j alje
j bre frejmove
j nego
g to je
j primalac
p u stanju
j da
ih primi. Da bi se spreilo pretrpavanje primaoca i gubitak poruka uvodi se
kontrola toka koja je organizovana kao:
povratna sprega (feedback-based
(feedback based flow control)
Prijemnik vraa poiljaocu informaciju ta je primio omoguujui da nastavi sa
slanjem novi frejmova.
Osnovni protokoli:
Simplex
Simplex protokol bez ogranienja
Simplex Stop-and-Wait protokol
Simplex
Si l protokol
t k l za kanal
k l sa umovima
i
Sliding-Window
Povratak na N (Go-Back-N)
Selektivna retransmisija (Selective reject, Selective repeat)
27.10.2010.
Raunarske mree
Kontrola toka
Protokoli - zaglavlje
#define
#d fi MAX_PKT
MAX PKT 1024
typedef enum {false,true} boolean;
typedef unsigned int seq_nr; //redni ili ack-brojevi
typedef struct {unsigned char data[MAX_PKT];}
data[MAX PKT];} packet; //def.
//def paketa
typedef enum {data,ack,nak} frame_kind; //def. tipa frejma
typedef struck {
frame_kind kind; //tip frejma
seq_nr seq; //redni broj
seq nr
seq_nr ack; //ack-broj
//ack broj
packet info; //paket sa nivoa mree
} frame;
27.10.2010.
Raunarske mree
Kontrola toka
Protokoli - zaglavlje
//...Prosleuje informaciju iz prihvaenog frejma ka mrenom nivou
void to_network_layer(packet *p);
//...Preuzima pristigli frejm sa fizikog nivoa i kopira ga u r.
void from_physical_layer(frame *r);
//...Prosleuje frejm ka fizikom nivoa radi transmisija (prenosa).
void to_physical_layer(frame *s);
//...Startuje odbrojavanje kloka i omoguava timeout dogaaj.
void start_timer(seq_nr
start timer(seq nr k);
//...Startuje pomoni broja i omoguava ack_timeout dogaaj.
void start_ack_timer(void);
//
//...Zaustavlja
lj pomoni
i broja
b j i spreava
ack_timeout
k i d j
dogaaj.
void stop_ack_timer(void);
//...Dozvoljava mrenom sloju da izazove network_layer_ready dogaaj.
void enable_network_layer(void);
// Makro-naredba za inkrementaciju k po modulu MAX_SEQ
#define inc(k) if (k<MAX_SEQ) k=k+1; else k=0
// Redni brojevi frejmova se kreu od 0 do MAX_SEQ
// (MAX_SEQ je razliito za razliite protokole!).
27.10.2010.
Raunarske mree
Kontrola toka
27.10.2010.
Raunarske mree
Kontrola toka
P
Protokol
k l 1 - kod
k d
27.10.2010.
Raunarske mree
Kontrola toka
2. Simplex
p Stop-and-Wait
p protokol
p
( Protokol 2 )
27.10.2010.
Raunarske mree
Kontrola toka
Protokol 2 - kod
typedef
d f enum {frame_arrival}
{f i l} event_type;
#include protocol.h
void sender2
d 2(void) id receiver2(void)
void ( id)
{ {
frame s; frame r,s;
packet buffer; event type event;
event_type
event_type event;
while(true) {
while
hil (true)
(t ) { wait for event(&event);
wait_for_event(&event);
from_network_layer(&buffer); from_physical_layer(&r);
s.info=buffer; to_network_layer(&r.info);
to physical layer(&s);
to_physical_layer(&s); //slanje posebnog frejma da bi se
wait_for_event(&event); //probudio poiljlac
} to_physical_layer(&s);
} }
}
27.10.2010.
Raunarske mree
Kontrola toka
#define MAX_SEQ
MAX SEQ 1
// ovaj prtokol broji frejmove po modulu 2
typedef enum {frame_arrival, cksum_err, timeout} event_type;
#i l d protocol.h
#include l h
27.10.2010.
Raunarske mree
Kontrola toka
void sender3(void)
{ Protokol 3 - kod
seq_nr next_frame_to_send;
frame s;
packet buffer;
event_type event;
next frame to send = 0;
next_frame_to_send
from_network_layer(&buffer);
while (true) {
s.info = buffer;
s.seq = next_frame_to_send;
to_physical_layer(&s);
start_timer(s.seq);
wait for event(&event);
wait_for_event(&event);
if(event == frame_arrival) {
from_physical_layer(&s);
if (s.ack == next_frame_to_send) {
from_network_layer(&buffer);
( b ff )
inc(next_frame_to_send);
}
}
}
}
27.10.2010.
Raunarske mree
Kontrola toka
void receiver3(void)
{
Protokol 3 - kod
seq nr frame_expected;
seq_nr frame expected;
frame r,s;
event_type event;
framee_eexpected
pec ed = 0;;
while(true) {
wait_for_event(&event);
_ _ ( );
if (event == frame_arrival) {
from_physical_layer(&r);
if (r.seq == frame_expected) {
to_network_layer(&r.info);
inc(frame_expected);
}
s.ack=1-frame_expected;
to_physical_layer(&s);
}
}
}
27.10.2010.
Raunarske mree
Kontrola toka
#define MAX_SEQ
MAX SEQ 1 while (true) {
typedef enum {frame_arrival, cksum_err, wait_for_event(&event);
timeout} event_type; if(event==frame_arrival) {
#include protocol.h from_physical_layer(&s);
if (r.seq==frame_expected)
( f d) {
void protocol4(void) to_network_layer(&r.info);
{ inc(frame_expected);
seqq_nr next_frame_to_send;; }
seq_nr frame_expected; if (r.ack==next_frame_to_send) {
frame r,s; from_network_layer(&buffer);
packet buffer; inc(next_frame_to_send);
event_type
t t event;
t }
next_frame_to_send = 0; }
frame_expected = 0; s.info=buffer;
from_network_layer(&buffer);
y ( ); s.seq=next
q _frame_to_send;;
s.info=buffer; s.ack=1-frame_expected;
s.seq=next_frame_to_send; to_physical_layer(&s);
s.ack=1-frame_expected; start_timer(s.seq);
t
to_physical_layer(&s);
h i l l (& ) }
start_timer(s.seq); }
27.10.2010.
Raunarske mree
Kontrola toka
Sliding-Window
Dozvoljava da se poalje vie frejmova pre
nego to
t se neki
ki od
d njih
jih potvrdi
t di
Uvode se novi pojmovi:
p j
prozor na predajnoj strani
bafer na predajnoj strani
prozor na prijemnoj strani
bafer na prijemnoj strani
numerisanje poruka
27.10.2010.
Raunarske mree
Kontrola toka
Parametri
Prozor na predajnoj strani opseg frejmova
k ji mogu biti
koji bi i poslati
l i a nepotvreni
i
Bafer na predajnoj strani uva poruke koje su
poslate a nepotvrene
Prozor na p prijemnoj
j j strani opseg
p g pporuka koje
j
se oekuje
Bafer na prijemnoj strani uva poruke koje su
stigle preko reda
27.10.2010.
Raunarske mree
Kontrola toka
5 Sliding-Window
5. Sliding Window ( Protokol 5 )
Ovaj protokol dozvoljava poiljaocu da isporui vie frejmova (do MAX_SEQ), bez ekanja na ack. Za
razliku od prethodnih protokola, ovde se ne podrazumeva da mreni sloj uvek ima spreman paket. Zato se
uvodi
di dogaaj
d j network_layer_ready,
t k l d koji
k ji oznaava
kada
k d jej paket
k t spreman za slanje.
l j
#define MAX_SEQ 7 // Treba da bude 2n-1
typedef enum {frame_arrival, cksum_err, timeout, network_layer_ready} ev_type;
#include protocol.h
p
static boolean between(seq_nr a, seq_nr b, seq_nr c)
{
if (((a<=b) && (b<c)) || ((c<a) && (a<=b)) || ((b<c) && (c<a)))
return
t (t )
(true);
else
return (false);
}
static void send_data(seq_nr frame_nr, seq_nr frame_expected, packet buffer[])
{
frame s;
s.info
i f = buffer[frame_nr];
b ff f
s.seq = frame_nr;
s.ack = (frame_expected + MAX_SEQ) % (MAX_SEQ + 1);
to physical layer (&s);
to_physical_layer
start_timer (frame_nr);
}
27.10.2010.
Raunarske mree
Kontrola toka
while (true) {
wait for event (&event);
wait_for_event
27.10.2010.
Raunarske mree
Kontrola toka
switch (event) {
case network_layer_ready: //mreni sloj ima paket za slanje
/* Prihvati, zapamti i poalji novi frejm */
from network layer(&buffer[next frame to send]);
from_network_layer(&buffer[next_frame_to_send]);
nbuffered=nbuffered + 1;
send_data (next_frame_to_send, frame_expected, buffer);
inc ((next_
_ frame_to_send);
_ _ )
break;
case cksum_err
cksum err: break; //loi frejmovi se ignoriu
case timeout: // !?!. Ponovo poslati sve frejmove iz bafera
next_frame_to_send=ack_expected;
for ( ii=1;
1; i<=nbuffered;
i< nbuffered; i++ ) {
send_data (next_frame_to_send, frame_expected, buffer);
inc (next_frame_to_send);
}
}
if ( nbuffered < MAX_SEQ )
enable_network_layer ();
else
l
disable_network_layer ();
}
}
27.10.2010.
Raunarske mree
Kontrola toka
Primeri
Povratakk na N bez
b NAK poruke
k
P
Povratak
t k na N sa NAK porukom
k
27.10.2010.
Raunarske mree
Kontrola toka
Primeri
Selektivna retransmisija
Selektivna rentransmisija
j moe da funkcionie na:
data-link nivou obzirom da frejmovi putuju istom trasom (medijumom)
ne postoji preticanje, pa se nakon pristizanja ACK sa viim rednim br.
odmah moe poeti retransmisija prethodnih frejmova
transportnom nivou ukoliko je ispod mreni nivo sa skretnim
paketima, svaki paket moe putovati zasebnom trasom,
paketima trasom pa se eka istek
time-out-a pre poetka retransmisije
27.10.2010.
Raunarske mree
Kontrola toka
Primer
Selektivna retransmisija sa gubitkom Info(2) frejma
Timeout
Prozor 0.. 4 0.. 4 0.. 4 0.. 4 0.. 4 1.. 5 2.. 6 2.. 6 2.. 6 2.. 6 2.. 6 2.. 6 2.. 6 7.. 11 7.. 11
4 5 6 6
3 3 4 5 5 6
Bafer 2 2 2 3 4 4 5 6
1 1 1 1 2 3 3 4 5 6 8
0 0 0 0 0 1 2 2 2 2 2 2 2 7 7
0 1 2 3 4 5 6 2 7 8
Kanal
0 1 3 4 5 6 2
3 3 3 3 3 2
4 4 4 4 3
Bafer 5 5 5 4
6 6 5
6
Prozor 0 4
0.. 0 4
0.. 1 5
1.. 2 6
2.. 2 6
2.. 2 6
2.. 2 6
2.. 2 6
2.. 2 6
2.. 2 6
2.. 7 11
7.. 7 11
7.. 7 11
7.. 7 11
7..
0 1
27.10.2010.
Raunarske mree
Kontrola toka
27.10.2010.
Raunarske mree
Kontrola toka
N w+1?
Z t No
Zato
Scenario katastrofe:
- Neka se numeracija vri po modulu W ili manjem (W je veliina
prozora).
- Neka je poiljalac poslao W frejmova.
- Prijemnik
j je
j primio
p sve korektno i poslao
p ACK.
- Svi ACK su izgubljeni (prekid veze, um ili neto drugo)
- Istie time
time-out
out na predajnoj strani i poiljalac ponovo alje pakete
(numerisane 0..W-1)
- Poto je primio sve frejmove regularno, primalac pomera svoj
prozor. Posle W-1 ponovo oekuje 0, ali iz drugog kontingenta
frejmova. Kako ponovo dobija 0, on to shvata kao sasvim novi paket,
koji
j je
j regularno
g stigao,
g , a zapravo
p se radi o retransmisiji.
j ITAVA
PORUKA JE UNITENA !!!
27.10.2010.
Raunarske mree
Kontrola toka
Zato N 2w
Z t No 2 ?
Scenario katastrofe:
- Neka se numeracija vri po modulu W+K ( K < W ).
- Neka je poiljalac poslao W frejmova.
frejmova
- Prijemnik je primio sve korektno i poslao ACK.
- Neki od ACK su
s izgubljeni
i g bljeni (bar j d )
b jedan
27.10.2010.
Raunarske mree
Kontrola toka
Iskorienost kanala
Stop-and-Wait bez greaka
N N+1
Info(N) Ack(N)
N
tprop tframe tproc
i tprop tproc
a
tack
Ukupno vreme potrebno za slanje poruke razbijene na n-frejmova je T = n Tf ,
gde je Tf vreme koje zahteva svaki pojedinani frejm i ono iznosi:
gde su
tprop - propagaciono kanjenje kroz kanal
tframe - vreme potrebno za slanje jednog frejma
t iproc, t aproc - vreme potrebno da bi se obradila pristigli info ili ack frejm,
frejm respektivno
tack - vreme potrebno za slanje ACK frejma
27.10.2010.
Raunarske mree
Kontrola toka
Iskorienost kanala
Stop-and-Wait bez greaka
Zanemarujui neka vremena, moemo uprostiti izraz za T:
T = n ( 2 tprop + tframe )
t prop 1
ako uvedemo da je a , tada dobijamo: U
t frame 1 2 a
Parametar a moemo izraziti i kao:
d
propagaciono_ vreme Rd
a V
t
transmisiono
ii _ vreme L VL
R
gde su: d - rastojanje (distance) prijemnika i predajnika, V - brzina (velocity)
propagacije (za optika vlakna priblino brzini svetlosti Vl = 3 * 108 m/sec, a
za bakarne provodnike oko 0.67 brzine svetlosti), L - duina frejma u
bitovima, a R - brzina slanja (data rate).
27.10.2010.
Raunarske mree
Kontrola toka
I k i
Iskorienost
tkkanala
l
Sliding Window bez greaka
Efikasnost iskorienja kanala se znaajno poveava ako se omogui slanje veeg
broja frejmove pre potvrde bilo koga od njih. Ako sa w oznaimo broj bafera na
predajnoj strani,
strani a sa a odnos propagacionog kanjenja i vremena potrebnog za
slanje jednog frejma ( kao u prethodnom primeru ), iskorienost kanala se moe
aproksimirati sledeim izrazom:
w tf
1 w 2a 1
tu
U
w
2a 1 w 2a 1
Ovi izrazi dobijeni su pod pretpostavkom da je vreme prenosa 1 (normalizacija), te
da je a zapravo propagaciono kanjenje. Ukoliko je broj bafera (tj. veliina prozora)
na predajnoj strani dovoljno veliki ( w ttrans > 2 tprop + tframe ), iskorienost kanala je
100% (u idealnom sluaju bez greaka u kanalu i uz zanemarivanje vremena obrade
i slanja
j ACK frejmova).
j ) Ako brojj bafera na ppredajnoj
j j strani nije j dovoljan,
j , nastaje
j
zastoj nakon poslatih w frejmova sve dok se ne primi prva potvrda.
27.10.2010.
Raunarske mree
Kontrola toka
Iskorienost kanala
Realni protokoli
27.10.2010.
Raunarske mree
Kontrola toka
Iskorienost kanala
Realni protokoli
Stop and Wait
Stop-and-Wait
1 1 P
U
N r 1 2a 1 2a
P = 1 ( 1 E )L
Obrazloenje:
Ak je
Ako j E verovatnoa
t dad je
j bit naruen,
verovatnoa
t dad nije
ij naruen
jej (1-E)
(1 E)
Frejm nije naruen ako
_ i samo ako ni jedan bit u njemu nije naruen, a
verovatnoa za to je P = (1
(1-E)
E) (1
(1-E)
E) (1
(1-E)
E) ... (1
(1-E)
E) = (1 E)L, gde je L broj
(1-E)
bitova u frejmu.
Verovatnoa da jje frejm
j naruen jje komplemetaran
p verovatnoi da nije
j
naruen, tj. _
P=1-P
Stop-and-wait
1 P
U 0.046
2a 1
Go
Go-back-N
back N
w(1 P)
U 0.338
(2a 1)(1 P wP )
0 10 20 30 40 50
Selective-reject
j
w(1 P) Stop and wait Go back N Selective reject
U 0.46
2a 1
27.10.2010.
Raunarske mree
Kontrola toka
Z d i
Zadaci
1. Prikazati saobraajj izmeu 2 vora koji
j za kontrolu toka poruka
p koristi
selektivnu retransmisiju. Paketi su veliina 1000b, brzina slanja 100 Kb/s,
kanjenje full-duplex linije je 10 s/KM, a razdaljina izmeu vorova je
2000 KM. Petpostaviti da su Info-ramovi 2 i 5 narueni, kao i ACK-ram 3.
(Numeracija poinje od nule.) Veliine predajnog i prijemnog prozora su po
5, a bafera 4 poruke.
2. Predajnik
j i prijemnik
p j se nalaze na udaljenosti
j od 1000 KM,, a prenos
p poruka
p
se obavlja pod kontrolom protokola povratak_na_N sa veliinom prozora 7 i
u predajniku. Paketi su veliine 1000b. Signal se kroz kanal prostire brzinom
od 2 108 m/s.
a) Odrediti brzinu slanja podataka tako da iskorienost kanala u sluaju da u njemu
ne nastaju greke, bude bar 50%.
b) Za brzinu slanja podataka dobijenu pod a) skicirati postupak slanja paketa
izmeu predajnika i prijemnika u sluaju da su narueni INFO2 i ACK3 ramovi.
c) Za brzinu slanja podataka dobijenu pod a) izraunati iskorienost kanala u
sluaju da je verovatnoa naruenosti nekog bita u poruci E = 210-5.
27.10.2010.
Raunarske mree
Kontrola toka
Zad.1
ad. Reenje
ee je
Prikazati saobraaj izmeu 2 vora koji za kontrolu toka poruka koristi selektivnu retransmisiju.
Paketi su veliina 1000b, brzina slanja 100 Kb/s, kanjenje full-duplex linije je 10 s/KM, a razdaljina
izmeu vorova je 2000 KM. Petpostaviti da su Info-ramovi 2 i 5 narueni, kao i ACK-ram 3.
(N
(Numeracija
ij poinje
i j odd nule.)
l ) Veliine
V lii predajnog
d j i prijemnog
ij prozora su po 5,
5 a bafera
b f 4 poruke.
k
tf = 10 ms tp = 20 ms => a = 2 Timeout
Prozor 0.. 4 0.. 4 0.. 4 0.. 4 0.. 4 1.. 5 2.. 6 2.. 6 2.. 6 2.. 6 2.. 6 2.. 6 2.. 6 3.. 7 5.. 9
3 3 4 5 5 5 5 6 6 6 7 8
Bafer 2 2 2 3 4 4 4 4 5 5 5 6 7
1 1 1 1 2 3 3 3 3 3 3 3 5 6
0 0 0 0 0 1 2 2 2 2 2 2 2 3 5
0 1 2 3 4 5 2 3 6 5 7 8
Kanal
0 1 3 4 2 3 6 5
3 3 3 3 3 2 6 6 5
4 4 4 3 6
Bafer 4
Prozor 0.. 4 0.. 4 1.. 5 2.. 6 2.. 6 2.. 6 2.. 6 2.. 6 2.. 6 2.. 6 5.. 9 5.. 9 5.. 9 5.. 9 7.. 1
27.10.2010.
Raunarske mree
Kontrola toka
Zad.2 Reenje
Predajnik i prijemnik se nalaze na udaljenosti od 1000 KM, a prenos poruka se obavlja pod kontrolom
protokola povratak_na_N sa veliinom prozora 7 i u predajniku. Paketi su veliine 1000b. Signal
se kroz
k kkanall prostire
ti brzinom
b i 2 108 m/s.
odd 2 /
a) Odrediti brzinu slanja podataka tako da iskorienost kanala u sluaju da u njemu ne
nastaju greke, bude bar 50%.
b) Za brzinu slanja podataka dobijenu pod a) skicirati postupak slanja paketa izmeu
predajnika
d j ik i prijemnika
ij ik u sluaju
l j da
d su narueni
i INFO2 i ACK4 ramovi. i
c) Za brzinu slanja podataka dobijenu pod a) izraunati iskorienost kanala u sluaju da je
verovatnoa naruenosti nekog bita u poruci E = 210-5.
a)
U 0.5 w a + 0.5 a 6.5
tp = 106 / 2 108 = 5 ms
tf = 103/vs tp/6.5 vs 1.3 Mb/s
27.10.2010.
Raunarske mree
Kontrola toka
Zad 2 Reenje
Zad.2
b)
6 6 6 7 0 0 0 0 0 0 0 0 0 0 1 1 3
5 5 5 5 6 7 7 7 7 7 7 7 7 7 7 0 0 2 2
4 4 4 4 4 5 6 6 6 6 6 6 6 6 6 6 7 7 1 1
3 3 3 3 3 3 4 5 5 5 5 5 5 5 5 5 5 6 6 0 0
2 2 2 2 2 2 2 3 4 4 4 4 4 4 4 4 4 4 5 5 7 7
1 1 1 1 1 1 1 1 2 3 3 3 3 3 3 3 3 3 3 4 4 6 6
0 0 0 0 0 0 0 0 0 1 2 2 2 2 2 2 2 2 2 2 3 3 5 5
0 1 2 3 4 5 6 7 0 2 3 4 5 6 7 0 1 2 3
NAK(1)
0 1 E D D D D D D 2 3 4
27.10.2010.