Documente Academic
Documente Profesional
Documente Cultură
Coordonator,
Vidracu Mihai
442A
-2011-
Cuprins
g. Bibliografie
A. Protocolul UDP
Vidracu Mihai
1. Introducere
Internetul este probabil cea mai mare i mai complex realizare a omului, este
un sistem global de reele de calculatoare interconectate, care pune la dispoziia
miliardelor de utilizatori experienta i cunotiinele acumulate de alungul timpului de
om. Este o reea de reele care interconecteaz milioane de calculatoare prin
tehnologii de comunicare prin fir, radio sau optice.
ns pentru a funciona n armonie, toate calculatoarele trebuie s vorbeasc
aceeai limba. De aceea au fost create i standardizate o mulime de protocoale.
Protocolul de comunicare este un sistem de formate i reguli pentru schimbul de
mesaje ntre sisteme de telecomunicaii. Protocolul pentru internet este un protocol
care asigur transmiterea datelor de la un sistem de calcul la altul, prin internet.
Protocoalele au fost standardizate i pot fi clasificate i dup modelul stratificat
OSI (Open Systems Interconnection). Exist 7 nivele: fizic, legatura de date, reea,
transport, sesiune, prezentare i aplicaie. Nivelul de transport ofer transparenta
transferului de date ntre utilizatori. Asigura fiabilitatea unei legturi prin controlul
vitezei, segmentare / desegmentare i controlul erorilor. [14]
n nivelul de transport exist 2 protocoale importante, unul orientat pe
conexiune i altul fr conexiune (sunt complementare unul altuia). Cel fr
conexiune este UDP se ocup n principal numai de transmisia pachetelor ntre
aplicatii. Cel orientat pe conexiune este TCP i este mult mai complex: realizeaza
conexiunea, adauga fiabilitate prin retransmisie, control pentru debit i congestie.
[11]
IP
Cele dou porturi identific cele dou sisteme de calcul care comunica, sursa i
destinaia. Cand un pachet UDP soseste, incarcatura lui este preluat de procesul
ataat portului destinaie. Pe scurt, porturile asigur livrarea segmentelor aplicaiei
corecte.
Portul sursa este necesar n cazul n care receptorul trebuie s raspund
emitorului. Copiind portul sursa din pachetul abia sosit n cmpul de destinaie al
pachetului de rapuns, procesul care trimite rapunsul poate specifica ce proces de
pe emitor l primeste.
Cmpul Lungime UDP include headerul de 8 Bytes i datele. Lungimea
minima este de 8 Bytes (pentru header). Lungimea maxima este de 65.515 bytes
(dimensiune mai mica decat maximul reprezentabil pe 16 biti; limita este data de
dimensiunea maxima a pachetelor IP).
Suma de verificare este optionala i se foloseste pentru cresterea fiabilitii.
Face verificarea header-ului, a datelor i un pseudoheader IP conceptual. Cand se
face calculul, cmpul checksum este setat la 0 i cmpul de date este bordat cu un
byte aditional de 0 dac lungimea lui este un numr impar. Algoritmul de verificare
consta n sumarea tuturor cuvintelor de 16 biti n complement fa de 1 i scoaterea
complementului lui 1 din rezultat. Deci, cnd receptorul face calculul pe ntregul
segment, inclusiv pe cmpul de checksum, rezultatul ar trebui s dea 0. Dac
checksum-ul nu se calculeaz, atunci se va stoca cu valoarea 0.
n cazul IPV4, pseudoheader-ul arata ca n figura urmatoare:
Intr-un fel, trimiterea unui mesaj ctre un host i primirea unui rapuns
seamana cu apelarea unei funcii intr-un limbaj de programare. n ambele cazuri se
porneste cu unul sau mai multi parametrii i se returneaza un rezultat. Asemanarea
aceasta se transpune n mediul de reea sub forma apelurilor de procedura. Aceasta
formulare usureaza mult programarea aplicatiilor. Exemplu: fie procedura
iaAdresaIP(numeHost) , care funcioneaza prin trimiterea unui pachet UDP ctre
serverul DNS i asteapta rapuns, cronometrand i incercand din nou, dac acesta
nu soseste n timp util. Astfel, toate detaliile reelei sunt ascunse pentru programator.
Primii care au folosit acest concept au fost Nelson i Birrell, n 1984. Ei au venit
cu ideea de a permite programelor s initieze apeluri la proceduri aflate pe alte host-
uri. Cand un proces de pe masina A apeleaza o procedura de pe masina B, procesul
apeland se suspenda i executia procedurii are loc pe masina B. Informatia este
transportata de la apelant la apelat sub forma de parametrii, i se intoarce ca
rezultat. Pentru programator, acest schimb de informaie nu este vizibil. Aceasta
tehnica este cunoscuta sub numele de RPC Remote Call Procedure, i a devenit
baza pentru multe din aplicatiile de lucru n reea. Apelantul procedurii este denumit
client; apelatul se numeste server.
Scopul RPC este acela de a face un apel de procedura s para ca unul local. IN
cea mai simpla forma, pentru a apela o procedura aflata n alta parte, programul
client trebuie s detina o biblioteca, numita client stub, care reprezinta procedura
serverului n spatiul de adresa al clientului. Similar, serverul are i el partea lui: server
stub. Aceste proceduri ascund faptul ca apelul de la client ctre server nu este local.
n figura urmatoare sunt prezentate etapele de creare a RPC. Pasul1: clientul
apeleaza stub-ul lui. Aici se apeleaza o procedura locala, cu parametrii introdusi n
stiva n modul obisnuit. n etapa a doua, stub-ul clientului comprima parametrii intr-un
mesaj i face apel la sistemul de operare pentru a trimite pachetul. Aceasta
impachetare se numeste marshaling.
Client Server
1 Client 5
Client stub Server Server
stub
2 4
3
Retea
Interfata pe
baza de socket
UDP
IP
Kernel-ul sistemului
Ethernet de sistemului de
operare
3.1 RTCP
Sunt specificate mai multe tipuri de pachete pentru a transporta diverse infromatii
de control:
- SR (Sender Report): contine statistici de transmisie i receptie de pa
participantii care emit activ.
- RR (Receiver Report): contine statistici de la participantii care nu emit activ
- SDES: descrie obiectele sursa, inclusiv CNAME
- BYE: indica sfarsitul participarii unei masini
- APP: pentru funcii specifice aplicaiei.
Fiecare pachet RTCP incepe cu o sectiune fixa, similara pachetelor de date ale
RTP. Urmeaza elemente structurate, care pot avea lungime variabila, un funcie de
tipul pachetului, insa trebuie s se limiteze pe o frontiera de 32 de biti. Aceasta
cerinta de aliniere i cmpul Lungime din partea fixa a ficarui pachet sunt necesare
pentru a se putea stivui pachetele. Mai multe pachete RTCP pot fi concatenate,
fr a fi nevoie de separatoare, pentru a forma un pachet compus care poate fi trimis
intr-un unic pachet al protocolului inferior (ca UDP). Nu se numra pachetele
individuale RTCP din pachetul compus pentru ca protocoalele din nivelele inferioare
tin cont de lungimea totala i ele determina sfarsitul pachetului compus.
Fiecare pachet individual din pachetul compus poate fi procesat independent, fr
a se impune o anumita ordine. Totui, pentru a se putea folosi eficient funciile
protocolului, se impun anumite constrangeri:
- Statisticile de receptie (in SR sau RR) ar trebui trimise cat mai des (in limita
constrangerilor latimii de banda) pentru a maximiza rezolutia statisticilor, deci,
periodic, unul din pachetele compuse trebuie s contina i unpachet de
raportare
- Participantii noi care primesc date trebuie s primeasca i CNAME-ul pentru o
sursa cat mai repede posibil pentru a identific sursa i pentru a asocia
informaia cu anumite scopuri (ca sincronizarea), deci fiecare pachet compus
RTCP trebuie s includa i SDES CNAME.
n concluzie, toate pachetele RTCP trebuie trimise intr-un pachet compus care
contine cel putin 2 pachete individuale, cu formatul urmator:
4.1 Introducere
4.2 Congestie
Orice conexiune DCCP ruleaza ntre dou capete. Le voi numi DCCP A i
DCCP B. Datele circula n ambele directii, folosind 4 tipuri de pachete:
1. pachete de la A la B
2. confirmri de la B la A
3. pachete de la B la A
4. confirmri de la A la B
Fiecare flux de pachete de mai sus reprezinta un set. Voi defini niste termeni pe
care ii folosesc n continuare:
- sub-fluxuri = un subflux este un pachet fie de date, fie de confirmare, trimis int-
o singura directie. Fiecare din cele 4 seturi de mai sus reprezinta un subflux
(subfluxurile se pot intercala intr-un anumit grad, deoarece confirmrile pot fi
trimise imediat dup pachetele cu date).
- secvente = o seventa consta n totalitatea pachetelor trimise intr-o singura
directie, indiferent dac sunt date sau confirmri. Seturile 1 cu 4, i 2 cu 3 de
mai sus sunt secvente diferite. Fiecare pachet dintr-o secventa are un alt
numr de secventa.
- Emitator/receptor pe jumatate de conexiune (half-connection) = n contextul
unei conexiuni injumatatite, emitorul e cel care trimite date, iar receptorul le
primeste, trimitnt inapoi confirmri. Exemplu: n semi-conexiunea A-B, DCCP
A este emitorul, iar DCCP B este receptorul.
4.6 Header-ul
s
X [ B / s]
2b p 3b p
R (t _ RTO (3 p (1 32 p 2 )))
3 8
Unde:
- X[B/s] este media ratei de transmisie
- S este dimensiunea segmentului n octeti
- R = timpul dus-intors (RTT) n secunde
- p = rata evenimentelor de pierdere a pachetelor, cuplinsa ntre 0 i 1, i este
fractiunea de pachete pierdute din totalul pachetelor emise
- t_RTO = timpul de expirare pentru retransmisie, exprimat n secunde
- b = numrul maxim de pachete care sunt confirmate cu un singur pachet de
confirmare TCP. [1]
7 Bibliografie
- [1] RFC5348
- [2] RFC3448
- [3] RFC4828
- [4] RFC3550
- [5] http://www.cs.odu.edu/~cs778/jeffay/Lecture6.pdf
- [6] http://www.networksorcery.com
- [7] http://opalsoft.net/qos/
- [8] RFC4341
- [9] RFC 4336
- [10] RFC4340
- [11] Andrew S. Tanenbaum: Computer Networks
- [12] http://www.scribd.com/doc/22272663/All-About-UDP
- [13] http://www.netfor2.com/udp.htm
- [14] www.wikipedia.com
- [15]http://www.ardenstone.com/projects/seniorsem/reports/UDP_Protocol.html
- [16]www.unibuc.ro/prof/niculae_c_m/telecom/user_datagram_protocol_udp.ht
m
1) Introducere
CLOSED
PASIVE ACTIVE
ESTABLISMENT ESTABLISMENT
PENDING PENDING
ESTABLISHED
PASIVE ACTIVE
DISCONNECT DISCONNECT
PENDING PENDING
CLOSED
Conexiune TCP
IP IP
nesigura
host A host B
16
Din cele 65536 porturi ( 2 ) , primele 1024 porturi sunt numite well-known-
ports i sunt rezervate pentru servicii standard. Spre exemplu se doreste realizarea
unui transfer de fiiere prin intermediul protocolului FTP (File Transfer Protocol).
Aceasta se realizeaz prin conexiunea la portul 21 pentru a-i realiza conexiunea cu
propriul demon. Demonul reprezint o apicaie care ruleaz pe un anumit calculator
fr control direct realizat de utilizator. Cteva exemple de porturi mai importante
sunt cele din tabelul urmator
Port Protocol Utilizare
21 FTP File transfer
23 Telnet Remote login
25 SMTP E-mail
69 TFTP Trivial file transfer protocol
79 Finger Lookup information about a user
80 HTTP Worl Wide Web
110 POP-3 Temote e-mail access
119 NNTP USENET news
Ar fi posibil ca de exemplu demonului FTP s i fie asociat portulului 21 n
momentul butrii. Similar pentru celelalte porturi. Totuii acest lucru ar umple
memoria cu demoni ce vor fi idle majoritatea timpului.
Modul de realizare este urmtorul: Un singur demon, numit inetd (Internet
demon) este ataat la rndul su la porturi multiple i ateapt prima conexiune.
Cnd se realizeaz acest lucru, inetd realizeaz un nou proces i execut demonul
corespunztor, lsndul pe aceesta s se ocupe de cerere. Cu toate acestea este
posibil si realizarea unor demoni utlizai permanent cum ar fi portul 80 (HTTP) i
inetd n rest.
Toate conexiunile TCP sunt de tip full-duplex capt-la-capt. Full-duplex
nseamn c transmisia se poate face bidirecional i simultan ntre cele 2
calculatoare. Capt-la-capt arat c nu pot exista mesaje de tip multicast sau
broadcast.
O conexiune TCP reprezint o niruire de bii (octei), care au o structur bine
definit i care este mprit n diferite componente. Pe lang mesaj (irul de octei
ce reprezint informaia) la fiecare nivel se mai adaug i alte informaii numite
headere. Acestea conin informaii cum ar fi ip sursa, ip destinaie, port destinaie,
informaii de detecie a erorilor, informaii de ordonare a pachetelor pentru
reconstrucia ntregului mesaj din fragmentele sale, etc. i sunt asociate fiecrui nivel
n parte. n cazul lipsei unor astfel de informaii pachetele pot ajunge la destinaie dar
sunt inutilizabile, sau pot chiar s nu fie recepionate.
S presupunem c avem un mesaj nprit n 4 fragmente (A,B,C,D). Fiecrui
mesaj i va corespunde un header ip si unul TCP ca n figurile urmatoare:
Protocolul TCP se ocup numai de transmiterea sau recepionarea mesajului
ABCD A B C D
a) b)
nu i de interpretarea lui. La emisie mesajului i se adaug informaiile suplimentare
din headere. La recepie mesajul este separat de headere fiind transmis nivelelor
superioare.
Important este de menionat c pentru realizarea conexiunii se folosesc
anumite pachete cu ajutorul crora emitorul i receptorul comunic pentru
realizarea conexiunii. Pachetele care sunt folosite pentru realizarea conexiunii au
proiritate fa de altele n care se transmite informaie. Acestor pachete li se asociaz
un flag numit URGENT flag. Cand un pachet urgent este recepionat acesta are
prioritate fa de celelalte fiind primul interpretat chiar dac alte pachete anterioare
au venit inaintea acestuia.[1]
3) Protocolul TCP
4) Header-ul TCP
32 b
Source address
Destination address
00000000 Protocol =6 TCP segment length
SYN(SEQ=x)
SYN(SEQ=y,ACK=x+1)
(SEQ=x+1,ACK=x+1)
Host 1 Host 2
Exista posibilitatea ca simltan ambele hosturi s ncerce realizarea conexiunii
ntre aceiasi 2 sockei. n final este realizat numai o singura conexiune.[1]
7) Managementul conexiunii
CLOSE/FIN FIN/ACK
FIN/ACK
FIN CLOSING CLOSE
WAIT 1 WAIT
ACK/- FIN+ACK ACK/- COLOSE/FIN
/ACK
FIN TIME LAST
WAIT 2 WAIT ASK
FIN/ACK
(Active close) Timeout/- (Passive close)
ACK/-
CLOSED
SEQ=0 EMPTY
2k
ACK=2048, WIN=2048 2k
SEQ=2048
2k
ACK=4096, WIN=0 2k 2k
ACK=4096, WIN=2048 2k
SEQ=4096
1k
1k 2k
EM
Host 1 Host 2 PTY
Dup cum se observ n imagine, receptorul, n momentul n care trimite
mesaje de ACK, trimite i informaii suplimentare pentru a informa emitorul despre
spaiului liber din buffer, prin utilizarea cmpului WIN. Valoarea cmpului WIN arat
spaiul liber disponibil al bufferului. Astfel, dac bufferul este plin se va oprii
transmisia. n momentul n care se elibereaz o zon din buffer, receptorul trimite un
mesaj cu dimensiunea zonei eliberate din interiorul bufferului adic cantitatea
maxim de informaie pe care emitorul o poate transmite. [1]
Pentru a rezolva diferite probleme ale TCP s-au adoptat 4 algoritmi folosii de
TCP a cror documentaie se gseste n RFC 2001 publicat n 1997. Acetia sunt:
- Slow start
- Congestion avoidance
- Fast retransmit
- Fast recovery algorithms
Congestia poate s apar atunci cnd, pachetele care intr ntr-un ruter i
care urmeaz s ias toate n acelai LAN, depesc debitul maxim suportat de
LAN. Congestion avoidance este un procedeu prin care se pot evita astfel de situaii
pentru a minimiza numrul de pachete pierdute.
Presupunerea algoritmului este c pachetele pierdute prin eronare sunt foarte
mici (maxim 1%), deci pierderea unui pachet semnealeaz existena unei congestii
ntre surs i destinaie. Exist 2 indicatori ai pierderii unui pachet: expirarea timerului
sau recepionarea a 2 ACK-uri.
Congestion avoidance si Slow start sunt algoritmi diferii cu obiective diferite.
Totui cnd congestia apare TCP trebuie s ncetineasc rata de transmisie a
pachetelor n reea, i apoi s invoce Slow start pentru a crete din nou rata de
transmisie. De aceea ele sunt n practic implementate mpreun.
Cei 2 algoritmi necesit 2 variabile pentru fiecare conexiune:cwind (congestion
window) i sstresh(Slow start treshold).
Algoritmul combinat funcioneaz dup cum urmeaz:
I) Iniializarea conexiunii date. Se seteaz cwmd la 1 segment i sstresh la
65535.
II) Rutina de transmisie TCP nu transmite mai mult dect minimul dintre cwnd
i dimensiunea ferestrei de advertisement a receptorului.
III) Cnd apare congestia incidcat de expirarea timerului sau de
recepionarea de ACK dublu, o jumtate din dimensiunea ferestrei curente (minimul
dintre cwnd i dimensiunea bufferului receptorului dar cel puin egal cu 2) este
salvat n sstresh. Suplimentar dac congestia este determinat datorit expirrii
timpului cwnd este setat la 1 segment (Slow start).
IV) Cnd este recepionat un nou ACK de la cellalt capt, cwmd este crescut
cu 1 dar acesta crete n funcie de ce realizeaz TCP: Slow start sau Congestion
avoidance.
Dac cwnd este mai mic sau egal cu sstresh, TCP se aplic Slow start, altfel
este realizat Congestion avoidance. Astfel TCP se afl n Slow start pn n
momentul n care cwnd atinge sstresh dup care se realizeaz Congestion
avoidance.
n cazul slow start cwnd creste cu 1 pentru fiecare ACK primit. n cazul
Congestion avoidance cwnd este credscut cu segsize 2/cwnd pentru fiecare ACK
primit, unde segsize i cwnd au ca unitate de msur bytes. Astfel vom avea o
cretere liniar n cazul Congestion avoidance comparativ cu cea exponenial petru
cazul slow start. [7][9][12]
10.3) Fast retransmit (Retransmitere rapid)
Fast retransmit reprezint o modalta prin care TCP reduce timpul prin care
emitorul asteapt pn cnd retranmite segmentul pierdut.
Emitorul TCP ,n varianta sa iniial, foloseste un timer pentru a detecta
pierderea de pachete. Dac un ACK nu este recepionat pentru un anumit pachet
pn la expirarea timerului, emitorul va presupune c pachetul a fost pierdut deci
va trebui retransmis. De multe ori acest timp duce la ntrzieri nedorite care de multe
ori pot fi eliminate.
ACK dublu st la baza algoritmului.
Un ACK dublu poate fi obinut din 2 motive: pierdere de pachet, sau inversare
de pachete.
Dup recepionarea unui pachet cu SQN=x (Sequence number), receptorul
transmite un mesaj cu ACK=x+1 (Acknowledgement number) care nseamn c
acesta a primit pachetul x si asteapta pachetul x+1. n ruma acestui procedeu
emitorul este informat despre pachetele care au ajuns la destinaie.
S presupunem c dorim s transmitem un ir de pachete, iar pachetul SQN=
x+1 nu ajunge la destinaie, el fiind pierdut. SQN=x ajunge decisemitorul
recepioneaz ACK=x+1. Cnd SQN= x+2 ajunge la destinaie emitorul
recepioneaz ACK=x+1 n loc de x+3 deoarece se ateapt nc pachetul x+1.
Similar la SQN=x+2, SQN=x+3, SQN=x+4, etc. emitorul primete ACK=x+1.
Daca se primesc o succesiune de 4 ACK-uri egale atunci pachetul respectiv
se retransmite deoarece este considerat pierdut.
Se observ c dei timerul nu a expirat nc pentru pachetul SEQ=x+1 el este
retransmis mai repede. Exist posibilitatea ca pachetul s fie retransmis cu mult
naintea timerului i astfel se poate ajunge la ntrzieri mult mai mici.
SEQ=x
SEQ=x+1
SEQ=x+2 ACK=x+1
SEQ=x+3
SEQ=x+4 ACK=x+1
SEQ=x+5 ACK=x+1
Timeout SEQ=x+6 ACK=x+1
SEQ=x+1 SEQ=x+7 ACK=x+1
SEQ=x+8 ACK=x+1
SEQ=x+1 ACK=x+1
SEQ=x+9 ACK=x+1
SEQ=x+10 ACK=x+9
SEQ=x+11
Host 1 Host 2
Pentru cazul cu inversare de pachete(pachetele ajung n alta ordine)
algoritmul funcioneaz conform figurii de mai jos.
Se observ c nu exist probleme aduse algoritmului n cazul n care 2
pachete sunt inversate. Dac ns vom avea un pachet ntrziat foarte mult,exist
celu mult riscul ca s fieretransmis, iar la destinaie va ajunge de 2 ori. Singura
SEQ=x
SEQ=x+1
SEQ=x+2 ACK=x+1
SEQ=x+3 ACK=x+2
SEQ=x+4 ACK=x+2
SEQ=x+5 ACK=x+4
SEQ=x+6 ACK=x+5
SEQ=x+7 ACK=x+6
ACK=x+7
Host 1 Host 2
problem care se pune este aceea de detecie a pachetului pentru eliminarea sa.
[9][12][13]
SYN,ACK(SYN)
ACK(SYN)
request
FIN
ACK(request)
ACK(FIN)
reply
FIN
ACK(reply
)ACK(FIN)
Host 1 Host 2
)
ACK
Host 1 Host 2
12) Bibliografie
o [1]Andrew S. Tanenbaum ,Computer Networks
o [2]http://en.wikipedia.org/wiki/Transmission_Control_Protocol
o [3] http://en.wikipedia.org/wiki/File:Tcp_state_diagram_fixed_new.svg
o [4] http://ro.wikipedia.org/wiki/TCP/IP
o [5]http://condor.depaul.edu/jkristof/technotes/tcp.html
o [6]http://www.unibuc.ro/prof/niculae_c_m/telecom/transm_ctrl_prot_tcp.htm
o [7]http://www.cisco.com/web/about/ac123/ac147/ac174/ac195/about_cisco_i
pj_archive_article09186a00800c83f8.html
o [8]http://www3.gdin.edu.cn/jpkc/dzxnw/jsjkj/chapter3/35.htm
o [9] http://www.faqs.org/rfcs/rfc2001.html
o [10]http://www.cs.umd.edu/~shankar/417-F01/Slides/chapter3b/sld015.htm
o [11]http://nptel.iitm.ac.in/courses/IIT-
MADRAS/Computer_Networks/pdf/Lecture37_TCPConnectionMgmt.pdf
o [12]http://en.wikipedia.org/wiki/Slow-start
o [13] http://www.fcoe.ru/english/data-transfer-protocols-overview/25-fcip
C. Algoritmi de control al congestiei
[5]
Acesta prezint cele trei situaii posibile: transportul optim, trasportul dorit i
cazul in care intr-o reea sunt prezente foarte multe pachete i performanele
acesteia se degradeaz aprnd fenomenul de congestie. Putem spune c atunci
cnd numrul de pachete emise in reea nu depete capacitatea de trasport,
aceastea sunt livrate integral, excepie fcnd cele care prezint erori de transmisie.
In acest caz numrul pachetelor livrate este proporional cu numrul celor emise.
Atunci cnd traficul crete prea mult, ruterele incep s nu mai fac fa i s piard
pachete. Aceast situaie se poate deteriora complet la un trafic intens, ducnd
sistemul in imposibilitatea de a mai livra pachete.
3.1. Algoritmul RED Random Early Detection [1] face parte din
clasa algoritmilor de evitare a congestiei centrai pe rutere, unde
ruterele au un rol activ in inlturarea congestiei prin marcarea
pachetelor. Aceast abordare incearc s previn formarea de cozi la
intrarea in reea prin renunarea la pachete inainte de producerea
propriu-zis a fenomenului de congestie. Congestia incipient este
detectata de gateway-uri prin calculul dimensiunii medii a cozii. Acestea
pot anuna congestionarea unor conexiuni fie prin renuntarea la
pachetele care ajung in dreptul gateway-ului respectiv sau prin
trimiterea unui bit cu rol de flag in header-ele pachetelor. Cnd
dimensiunea medie a cozii depete un anumit prag presetat,
gateway-urile renun sau marcheaz fiecare pachet care ajunge cu o
anumit probabilitate in funcie de valoarea mediei calculate. In acest
mod, algoritmul RED pastreaz dimensiunea medie a cozii sczute dar
permite acumularea ocazional in coad a unui numr mare de
pachete.
Cel mai efectiv mod de detectare al congestiei are loc chiar la gateway-urile
reelei, deoarece numai aici se poate vizualiza comportamentul cozilor in timp.
Metoda de monitorizare a dimensiunii medii a cozii la gateway-ul reelei i de a
semnala conexiuni care se afl in faza incipient de congestie este bazat pe
presupunerea c va fi util sa avem cozi la gateway-uri unde traficul mai multor
conexiuni este multiplexat dup algoritmul FIFO. FIFO este util aici la reducerea
intrzierii pentru o anumit conexiune atunci cnd ea e foarte incrcat, prin
imprirea intrzierii totale intre toate conexiunile.
Algoritmul RED este conceput pentru reelele unde marcarea unui pachet este
suficient pentru a semnala prezena congestiei. Acest mecanism de control
monitorizeaz dimensiunea medie pentru fiecare coad de ieire i alege intr-un mod
aleatoriu ce conxiune s fie notificat de apariia congestiei. Congestiile tranzitorii
sunt eliminate prin creterea temporar a dimensiunii cozii. Congestiile de lung
durat sunt sesizate prin creterea dimensiunii medii a cozii, avnd ca rezultat
transmiterea aleatorie de rspunsuri ctre unele conexiuni pentru a-i micora
ferestrele. Probabilitatea ca o conexiune s fie notificat de apariia congestiei este
proporional cu proporia de participare a conexiunii respective la incrcare.
Se calculeaz probabilitatea pa
Altfel
Cout=cout+1
pa=pb/(1-count*pb)
Altfel
Altfel count=-1
pb=maxp(avg-min)/(max-min)
pb=pb*dim_pachet/dim_max_pachet
pa=pb/(1-count*pb)
avg=(1-w)avg+w*q
(1 w) L 1 1
L 1 min
w
Dac w are setat o valoare prea mic atunci modificrile din coad se
vor sesiza greu, deoarece valorile lui avg vor inregistra fluctuaii foarte
reduse. Astfel stadiile iniiale de congestie vor fi mai greu de depistat.
pb=maxp(avg-min)/(max-min)
P( X n) (1 pb)n1 pb
In acest caz:
n2
pb pb
P( X n)
1 (n 1) pb i 0
(1
1 i pb
) pb pentru 1 n 1/ pb
P( X n) 0 pentru n 1/ pb
count=count+1 si pb=C1*avg-C2
Altfel
Altfel count=-1
1
T , ( p, RTT , T0 , b)
2b(1 ) (1 2 )b
RTT p T0 min(1,3 p ) p(1 32 p 2 )
(1 ) 2
Observm c numitorul formulei de mai sus este alctuit din doi termeni pe
care ii vom nota astfel:
2b(1 )
TD , ( p, RTT , b) RTT p
(1 )
(1 2 )b
TO , ( p, T0 , b) T0 min(1,3 p ) p(1 32 p 2 )
2
(1 2 )b
Termenul Q min(1,3 p ) aproximeaz probabilitatea de timeout.
2
T , ( p, RTT , T0 , b) T 1 ( p, RTT , T0 , b)
1,
2
Aceste perechi (, ) care satisfac egalitatea de mai sus formeaz curba TCP-
friendly.
TD TCP-friendly
TD , ( p, RTT , b) TD 1 ( p, RTT , b)
1,
2
1 1 0.5
*(1 ) 1*(1 0.5)
3(1 )
1
TO TCP-friendly
TO , ( p, T0 , b) TO 1 ( p, T0 , b)
1,
2
(1 2 ) (1 0.52 )
1
4(1 2 )
3
3.3 Algoritmii HSTCP High Speed TCP si STCP Scalable TCP [3]
3.3.1 HSTCP High Speed TCP este un algoritm de tip additive increase
multiplicative decrease (AIMD), cu deosebirea c cei doi factori i depind de
dimensiunea ferestrei.
2w2 ( w) p( w) 0.15
Substituind ( w) si w obinem:
2 ( w) p( w)0.82
4.56
w1 2 ( w2 ) RTT2
w2 2 ( w1 ) RTT1
w1 w1 (1 ) (1 ) RTT1
w2 w2 (1 ) (1 ) RTT2
3.6 Algortimul binomial BITCP Binary Increase TCP [3] este un algoritm
de control al congestiei care adapteaz controlul ferestrei in funcie de dimensiunea
acesteia. Acesta const in dou pri: cutare prin cretere binar (binary search
increase) i creterea aditiv a dimensiunii ferestrei (additive increase).
Atunci cnd dimensiunea ferestrei curente devine mai mare decat valoarea
maxim, nu cunoatem noul maxim. In acest moment se va aplica tehnica de cutare
binar care va seta un maxim egal cu o valoare presetat i dimensiunea ferestrei
curente la o valoare minim. Vom folosi o strategie de tip slow start pentru a cuta
o valoare a maximului mai mica dect Smax. Dac considerm cwnd dimensiunea
curenta a ferestrei i incrementul maxim Smax, la fiecare RTT dimensinea ferestrei
va crete astfel: cwnd+1, cwnd+2....cwnd+Smax. In acest mod se caut banda
disponibil pn cnd se asigur faptul c o cretere cu Smax este neduntoare.
Dup aceast etapa se va crete dimensiunea la fiecare RTT cu Smax.
3.6.4 Implementare
Algoritmul BI-TCP:
if(low_window<=cwnd){
prev_max=max_win;
max_win=cwnd;
cwnd=cwnd*(1-);
min_win=cwnd;
if(prev_max>max_win) max_win=(max_win+min_win)/2;
target_win=(max_win+min_win)/2;
} else { cwnd=cwnd*0.5; }
if(is_BITCP_ss is false ){
if(target_win-cwnd<Smax) cwnd+=(target_win-cwnd)/cwnd;
else cwnd+=Smax/cwnd;
if(max_win>cwnd){
min_win=cwnd;
target_win= (max_win+min_win)/2;
} esle { is_BITCP_ss=true;
ss_cwnd=1;
ss_target=cwnd+1;
max_win=default_max_win;
} else {
cwnd+=ss_cwnd/cwnd;
if(cwnd>=ss_target){
ss_cwnd=2*ss_cwnd;
ss_target+=ss_cwnd;
if(ss_cwnd>=Smax) is_BITCP_ss=false;
Algortimul SIMD
dw(t ) 1
w(t ) w0 , de unde rezult: dw(t ) dt .
dt w(t ) w0
Dup integrare se obine: 2 w(t ) w0 t C . Pentru t=0 avem w(t)=w(0) de
unde rezult C=0.
2
Se obine: w(t ) w0 t 2 . Se poate astfel spune c SIMD devine agresiv cu
4
timpul adic poate s pun la dispoziie lime de band in plus cnd dispune de
aceasta.
3
Definim i o inlocuim in formula lui w(t):
(1 2 / 3) 2w max
9
w(t ) w0 t2 .
8(1 2 / 3) w max
2
Din ultima formul putem spune c SIMD poate fi privit ca un AIMD al crui
parametru variaz.
Concluzie
SIMD este un algoritm cu memorie care converge mai rapid dect algoritmii
fr memorie AIMD i binomial. De exemplu, dac exist dou fluxuri de tip SIMD
competitive atunci cel cu dimensiunea ferestrei mai mic este mai agresiv. Aceast
proprietate duce la obinerea unui comportament convergent mai bun.
3.9 Bibliografie
[1] Random Early Detection Gateways for Congestion Avoidance, Sally Floyd,
Van Jacobson
[2] General AIMD Congestion Control, Yang Richard Yang, Simon S. Lam
[3] Binary Increase Congestion Control for Fast, Long Distance Networks,
Lisong Xu, Khaled Harfoush, Injong Rhee
[4] TCP - friendly SIMD congestion Control and Its Convergence Behavior,
Shudong Jin, Liang Guo, Ibrahim Matta, Azer Bestavros
[5] Computer networks, Andrew S. Tanenbaum, David J. Wetherall, Fifth
Edition, 2011