FACULATEA DE MATEMATICĂ ȘI INFORMATICĂ LUCRARE DE DISERTATIE COORDONATOR ȘTIINȚIFIC Lect. Dr. Suter Florentina STUDENT Iordachescu Alexandru… [617514]

UNIVERSITATEA DIN BUCUREȘTI
FACULATEA DE MATEMATICĂ ȘI INFORMATICĂ

LUCRARE DE DISERTATIE

COORDONATOR ȘTIINȚIFIC
Lect. Dr. Suter Florentina

STUDENT: [anonimizat]
2016

UNIVERSITATEA DIN BUCUREȘTI
FACULATEA DE MATE MATICĂ ȘI INFORMATICĂ

LUCRARE DE DISERTATIE

Analiza masurilor de performanța ale unei rețele de telecomunicații ce utilizează
comutarea de pachete, prin testare automată, utilizând echipamente și soluții IXIA
pentru simularea conditiilor reale

COORDONATOR ȘTIINȚIFIC
Lect. Dr. Suter Florentina

STUDENT: [anonimizat]
2016

Cuprins
Abstract ………………………….. ………………………….. ………………………….. ………………………….. ………………. 5
Multumiri ………………………….. ………………………….. ………………………….. ………………………….. ……………. 6
Notații și abrevieri ………………………….. ………………………….. ………………………….. ………………………….. … 7
Lista imaginilor ………………………….. ………………………….. ………………………….. ………………………….. …….. 8
Lista tabelelor ………………………….. ………………………….. ………………………….. ………………………….. ………. 9
Capitolul 1 – Introducere ………………………….. ………………………….. ………………………….. …………………. 10
1.1 Necesitatea dezvoltării standardelor globale ………………………….. ………………………….. …………. 10
1.2 Cerințe de performanță ale sistemului ………………………….. ………………………….. ………………….. 12
1.2.1. Latența de la nivelul utilizatorului ………………………….. ………………………….. ………………….. 12
1.2.2 PACHETE ………………………….. ………………………….. ………………………….. …………………………. 13
Capitolul 2 – Testarea si automatizarea in industria software ………………………….. ……………………….. 14
2.1 Metode de testare ………………………….. ………………………….. ………………………….. ………………….. 14
2.2 Testarea automată și automatizarea procesului ………………………….. ………………………….. ……… 14
2.3 Exemple de testare ………………………….. ………………………….. ………………………….. …………………. 15
2.4 Avantajele automatizării ………………………….. ………………………….. ………………………….. …………. 15
2.5 Ce este o regresie ………………………….. ………………………….. ………………………….. …………………… 16
2.6 Beneficiile utilizării regresiilor ………………………….. ………………………….. ………………………….. ….. 16
Capitolul 3 – Arhitectura retelelor de baza ………………………….. ………………………….. ……………………… 17
3.1 Adresele fizice – Protocolul ARP (Address Resolution Protocol) ………………………….. …………….. 17
3.2 Adresarea IP ………………………….. ………………………….. ………………………….. ………………………….. 18
3.3 Nivelul Transport ………………………….. ………………………….. ………………………….. ……………………. 21
Capitolul 4 – Generatorul de trafic ………………………….. ………………………….. ………………………….. …….. 27
Capitolul 5 – Simularea conditiilor unei retele reale ………………………….. ………………………….. …………. 31
Capitolul 6 – Controlul echipamentelor prin REST API ………………………….. ………………………….. ………. 32
6.1 HTTP ………………………….. ………………………….. ………………………….. ………………………….. ………… 32
6.2 Servicii Web ………………………….. ………………………….. ………………………….. ………………………….. . 33
6.3 Servicii Web RESTful ………………………….. ………………………….. ………………………….. ……………….. 35
6.4 Python ………………………….. ………………………….. ………………………….. ………………………….. ……… 37

Capitolul 7 – Rularea testelor si analiza rezultatelor ………………………….. ………………………….. ………… 45
Concluzii ………………………….. ………………………….. ………………………….. ………………………….. ……………. 50
Bibliografie ………………………….. ………………………….. ………………………….. ………………………….. ………… 51

Abstract

În această lucrare este descris procesul de testare a unui produs software în vederea
îmbunătățirii calității acestuia. Pentru a obține ac est efect, testarea software -lui pe
durata de dezvoltare reprezintă un criteriu important. Pentru ușurarea acestui pro ces
este necesară o metodă automată de rulare a regresiei, în vederea rulării ei în condiții
de stres, în multiple situații, pentru a identifica și repara erorile apărute în urma
procesului de dezvoltare.
Keywords: automatizare, regresie, software, fram ework , retele.

Multumiri

Bla blab la

Notații și abrevieri

ISLAND – Suită de teste în vederea rulării regresiei pentru un feature
GUI – Graphical User Interface
P4 – Sistemul de versionare Perforce
CLI – Command Line
QA – Quality Assurance
API – Application Programming Interface
IP v4/v6 – Internet Protocol version 4/6
MAC – Media Acces Control (address)
HTTP – Hyper Text Transfer Protocol
JSON – JavaScript Object Notation

Lista imaginilor

Pic pic

Lista tabelelor

Tab tab

Capitolul 1 – Introducere

Odată cu dezvoltarea tehnologiilor caracteristice Internetului si a telefoniei
mobile, și din cauza apariției necesității unei acoperiri cât mai mari a Internetului,
industria telecomunicațiilor intră într -o perioadă de schimbări radicale. În mare parte,
aceste schimbări sunt declanșate de către telefonia mobilă care, după decenii întregi de
metodologie bazată pe circuite comutate, se îndreaptă către arhitectura de tip IP. Cel
mai mare progres este evoluția rețelelor de bază în vederea suportării noilor ser vicii de
bandă largă.
IXIA este unul din principalii furnizori de sisteme de testare a rețelelor IP,
având peste 16 ani de experiență în acest domeniu. Soluțiile și sistemele IXIA sunt
dedicate atât rețelelor cu o infrastructură bazată pe conectivitatea prin cablu, cât și cele
de tip wireless. Astfel, clienții IXIA își pot testa echipamentele atât din punct de
vedere funcțional, cât și din perspectiva performanței, calității și a respectării
standardelor impuse de forumurile de standardizare.
În cadrul c ompaniei Ixia, ca și în cazul altor companii care dezvoltă software,
calitatea produselor livrate către client este foarte importantă. Din acest motiv este
necesară testarea tuturor produselor înainte de fi trimise către clienți. O astfel de
testare este r ealizată atât automat, cât și manual. Testarea feature -lor este realizată
automat cu ajutorul regresiilor, menținând astfel o calitate ridicată a produsului final.
Modfica mai jos
În cadrul acestei lucrări se urmărește determinarea numerelor de performanță ,
incluzând latențe și pierderi apărute. Acest lucru se va realiza prin simularea unui
mediu real LTE cu ajutorul programului IXIA IxLoad. Se va demonstra faptul că într –
un mediu real ce simulează 100000 utilizatori se pot obține latențe și pierderi mai mi ci
de 2% din totalul procedurilor realizate.

1.1 Necesitatea dezvoltării standardelor globale

Fig 1.1. Parteneriatul 3GPP compus din șase regiuni (Cristina pag 18)
Modifica mai jos scoate LTE
Pentru a realiza un sistem unic global, cele șase regiuni de Organizații de
Implementare a Standardelor (SDO) au colaborat. După succesul avut de sistemele

dezvoltate în cadrul 3GPP, au fost începute redactările pentru specificațiile tehnice ale
LTE. Astfel, au avut loc discuții deschise între cele șase regiuni, pen tru a dezvolta un
sistem optim.
Procesul de standardizare al LTE a fost inaugurat în cadrul întrunirii de la
Toronto din Noiembrie 2004. Cu această ocazie, un număr mare de companii au
prezentat atât conceptul evoluției viitoare, cât și tehnologiile nece sare pentru a întruni
aceste cerințe.
Apariția standardelor globale este o piatră de temelie în dezvoltarea rețelelor
de bază în comunicațiile mobile . Dezvoltarea LTE și SAE reprezintă un interes major
pentru firmele de comunicații mobile, atât din punct de vedere comercial, cât și din
punct de vedere tehnologic. Astfel, s -a pus problema dezvoltării de noi standarde care
au două scopuri majore:
-operabilitatea universală pentru un mediu care permite furnizorilor să
cumpere orice echipamente, indi ferent de producători, echipamente care sunt
compatibile între ele. Apare de asemenea necesitatea comunicării între terminalele
mobile de diferite tipuri și mărci. Utilizatorii pot astfel alege între mai multe noduri și
încă pot comunica unul cu celălalt. Orice nod de la furnizorul A poate să comunice cu
orice nod de la furnizorul B, și invers.
comunicații mobile. Astfel, furnizorii profită de un volum mare al pieței produselor,
putând oferi servicii de calitate superioară, în vederea obținerii unui profit mai mare.
Datorită volumului mare de produse, costul de producție al unui produs scade, deci
prețul final va fi mai scăzut. Astfel, se ajunge la soluții profitabile atât pentru
utilizatori, căt și pentru furnizori.
19
Pentru a îndeplini aceste scopuri, discuțiile duse în cadrul forum -urilor pe tema
dezvoltării sistemelor mobile radio au condus la o listă de specificații. Acestea sunt:
a conexiunii, cât și pentru transmisiuni

celulelor

spectrului, atât în benzile deja existente, cât și
în cele noi

a bateriei).

1.2 Cerințe de performanță ale sistemului

Una din cerințele principale ale dezvoltării sistemelor este îmbunătățirea
performanțelor, comparativ cu sistemele existente. Acest lucru garantează concurența
la nivelul dezvoltării LTE pentru a e xploata interesul pieței de cumpărare.
Atunci când se face comparație între diverse tehnologii radio, se pune un foarte
mare accent pe rata de vârf pe care acestea o pot atinge. Deși aceste valori definesc
gradul de dezvoltare al tehnologiilor, ele nu defi nesc dacă tehnologiile radio sunt sau
nu potrivite pentru fiecare utilizator în parte. În plus, se dorește ca echipamentele să
atingă aceleași rate maxime atât lângă stația de bază, cât și la marginea ei de acoperire.
În cazurile reale, utilizatorii sunt situați la diferite distanțe de stațiile de bază.
La acest lucru se adaugă și faptul că, în realitate, condițiile de utilizare nu sunt ideale,
iar ratele se împart între toți utilizatorii. Aceste lucruri duc la atingerea unor rate mai
mici decât cele defin ite ca fiind maxime. De asemenea, aplicațiile utilizate nu necesită
aceste performanțe maxime pentru a funcționa în parametrii normali.

1.2.1 . Latenț a de la nivelul utilizatorului

Pentru serviciile în timp real, acest parametru este unul foarte important .
Latența de la nivelul utilizatorului este calculată ca fiind timpul mediu dintre
transmisia primului pachet și primirea unei confirmări de recepție (ACK). Acest calcul
include și ratele de retransmisie. Sistemul LTE trebuie să poată opera la nielul IP cu
latențe de maxim 5 ms într -un singur sens, în condiții optime. 1.2.7. Latența și
capacitatea nivelului de control
Acest parametru este la fel de important ca întârzierea de la nivelul
utilizatorului. El este măsurat ca timpul necesar realizării tranziț iilor dintre diferite
stadii LTE (RRC_IDLE și RRC_CONNECTED). Sistemul LTE trebuie să asigure
întârzieri mai mici de 100 ms la trecerea dintre stadii.
Capacitățile sistemului LTE sunt determinate nu numai de capacitatea maximă
a traficului, dar și de num ărul de utilizatori localizați simultan într -o singură celulă.

LTE trebuie să suporte minim 200 utilizatori activi per celulă la alocarea spectrală de
5 MHz și 400 utilizatori totali per celulă.

1.2.2 PACHETE

Bla bla

Capitolul 2 – Testarea si autom atizarea in industria software

În acest capitol voi prezenta conceptele de testate folosite, pentru a oferi o
înțelegere mai bună asupra procesului de automatizare în industria software. Totodată,
voi vorbi despre rularea regresiei și rolul acesteia în îm bunătățirea calității unui
produs.
În cadrul companiei Ixia, ca și în cazul altor companii care dezvoltă software,
calitatea produselor livrate către client este foarte importantă. Din acest motiv este
necesară testarea tuturor produselor înainte de fi tri mise către clienți. O astfel de
testare este realizată atât automat, cât și manual. Testarea feature -lor este realizată
automat cu ajutorul regresiilor, menținând astfel o calitate ridicată a produsului final.

2.1 Metode de testare

Testarea software repr ezintă un procedeu prin care se definește și se
controlează calitatea unui produs. Acest procedeu furnizează rezultate relevante asupra
stadiului proiectului software aflat în curs de dezvoltate deoarece, testând produsul,
sunt descoperite imperfecțiunile (bug-uri) care pot afecta calitatea produsului final.
Totodată, procedeul poate furniza statistici cu privire la parcursul produsului.
De obicei, în testarea unui produs software sunt luate în calcul toate
problemele ce pot apărea în timpul utilizării ac estuia. Sunt testate atât elementele de
performanță ale produsului cât și corectitudinea rezultatelor oferite, precum și
relevanța lor în raport cu input -urile utilizatorilor.
Pentru a oferi o calitate cât mai ridicată este preferabil să existe o cantit ate și o
varietate mare de seturi de teste deoarece, cu cât aplicația este utilizată mai intens și
supusă la scenarii cât mai diverse, există o probabilitate mai mare să fie descoperite
bug-uri software.

2.2 Testarea automată și automatizarea procesului

Testarea automată reprezintă o metodă prin care o persoană din departamentul
QA testează anumite funcționalități ale produsului software și creează teste specifice
folosind un limbaj de scripting.

Testele automate execută o secvență de acțiuni fără int ervenție umană și pot
simula utilizarea unei aplicații în condiții de simultaneitate ridicată. În general,
majoritatea produselor necesită să fie testate de mai multe ori, pe mai multe platforme
software și hardware, precum și în urma unei schimbări aduse produsului sau lansării
unei noi versiuni a acestuia.
Prin testarea automată se poate testa foarte ușor performanța software -ului,
deoarece rularea automată a unor scripturi pe parcursul a mai multor ore sau zile pune
în evidență modul de funcționare al aplicației în condiții de lucru de stres.
Prin procesul de automatizare se înțelege că scripturile care au fost realizate cu
scopul de a testa funcționalitățile sunt integrate într -un singur framework ce rulează
toată suita de teste, fără a mai fi nevoi e de vreo interacțiune din partea persoanei din
departamentul QA.

2.3 Exemple de testare

Un exemplu simplu de scenariu de utilizare a unui script de automatizare este
atunci când se dorește a se testa funcționalitatea de autentificare din cadrul unei
aplicații software.
Persoana din departamentul de QA care dorește să testeze funcționalitatea de
autentificare scrie un script care accesează din API funcționalitatea de login. Primul
caz testat poate fi autentificarea fără completarea credențialelor util izatorului
(username/password). Un al doilea caz testat este acela în care username -ul introdus
este corect, dar parola este incorectă. Pentru ambele scenarii, accesul la aplicație ar
trebui să fie interzis, și să se returneze un mesaj de eroare. Următorul caz testat este
acela în care atât username -ul cât și password -ul sunt scrise corect, utilizatorului
oferindu -i-se acces la aplicație.

2.4 Avantajele automatizării

Un prim avantaj al automatizării îl reprezintă eficiența și creșterea calității
produsu lui, dar și reducerea costurilor, deoarece odată ce scripturile de testare
automată sunt implementate, o parte de personal poate fi redirecționat către alte
proiecte pentru a atrage noi clienți. Prin execuția automată a testelor de performanță în
fazele de început ale proiectului se pot evita eforturi de redesign ale aplicației după o
anumită perioadă de timp, menținând astfel costurile scăzute. În ceea ce privește

creșterea calității, datorită posibilității rulării periodice a testelor sunt prevenite erori le
software atât pentru noile feature -uri, cât și pentru elementele deja existente.
Un alt avantaj al procesului de automatizare privește economia de timp a
persoanelor implicate pe partea de QA în proiecte. Prin rularea testelor automat, se pot
analiza rapid schimbările parametrilor sistemului, se poate obține productivitate mai
mare, deoarece testele pot fi rulate și la finalul programului sau în afara acestuia.

2.5 Ce este o regresie

Prin termenul de regresie se înțelege verificarea impactului pe ca re
implementarea unui nou feature, sau rezolvarea unei probleme anterioare, o are asupra
unui software.
Ca orice testere automată, și regresia încearcă să descopere erorile software
prin retestarea totală sau parțială a aplicației după ce a fost introdu s în aplicație un
feature nou. Prin intermediul rulărilor de regresie se menține o calitate sporită a
aplicației, urmărind să nu apară alte erori în urma rezolvării unor bug -uri.
Acest tip de testare este folosit în mod uzual pentru testarea în mod efic ient a
sistemului deoarece se selectează în mod sistematic o suită minimă de teste necesare
pentru a acoperi în mod adecvat schimbările efectuate. Metodele comune de testare de
regresie includ rularea unor teste anterior executate urmată de verificarea rea pariției
erorilor prestabilite în urma ultimelor modificări.

2.6 Bene ficiile utilizării regresiilor

Prin utilizarea regresiilor se pot identifica, rezolva, și chiar preveni erorile ce
pot surveni în urma adăugării unui feature, sau rezolvării de bug -uri întrun proiect,
menținând astfel o calitate ridicată a produsului final.

Capitolul 3 – Arhitectura retelelor de baza

Maybe add smth here

3.1 Adresele fizice – Protocolul ARP ( Address Resolution Protocol)

ARP este un protocol folosit in telecomunica tii al carui scop principal este
formarea unei legaturi intre o adresa de retea(nivelul 3 in stiva OSI – ex. o adresa
IPv4) si o adresa fizica(nivelul 2 in stiva OSI – ex. o adresa Ethernet numita si adresa
MAC).
Pentru a livra un pachet Etehrnet, emitato rul are nevoie de adresa fizica
(MAC) a receptorului. Daca emitatorul are doar adresa IP a receptorului, el trebuie sa
afle adresa MAC corespunzatoare.
Protocolul ARP serveste gasirii adresei MAC pornind de la adresa IP,
presupunand ca masina cautata este in aceeasi retea Ethernet.
Protocolul presupune ca emitatorul trimite un pachet Ethernet de broadcast in reteaua
locala, intreband "cine are adresa IP cutare". Masina care are adresa IP cautata va
raspunde cu un mesaj de genul "eu am adresa IP cutare" – mesaj ce contine adresa
MAC. Celelalte masini ignora mesajul.
O corespondenta IP – MAC este pastrata in memorie un anumit timp. In cadrul
retelelor IPv6, functia ARP este indeplinita de protocolul NDP(Neighbor Discovery
Protocol).
O retea Ethernet foloseste doua adrese hardware care identifica sursa si
destinatia fiecarui pachet trimis in retea. Adresa de destinatie reprezentata in binar ca
avand toti bitii '1' identifica de obicei adresa de broadcast(de trimis tuturor care sunt
conectati la retea). Adresa ha rdware este numita si adresa MAC(Medium Access
Control) in cadrul standardelor care definesc retelele Ethernet. Fiecare interfata de
retea(placa de retea) are alocata o adresa unica globala care are o lungime de 6 bytes.
Aceasta este stocata in memoria PRO M a interfetei d e retea in momentul fabricarii.
Toate pachetele trimise de un calculator vor avea adresa fizica 'inscriptionata'
in campul adresa sursa. In acelasi timp, calculatorul va primi doar pachetele care au in
campul adresa destinatie aceeasi adres a ca adresa interfetei sale de retea sau adrese de
broadcast/multicast.

Adresa Ethernet este dependenta de interfata de retea folosita. IP(Internet
Protocol) opereaza in schimb la nivelul retea si este decuplat de adresele fizice
individuale ale nodurilor de retea. Din aceasta cauza, ARP este folosit pentru a face
legatura dintre aceste doua tipuri de adrese. Procesele client si server ale protocolului
ARP opereaza pe toate echipamentele care folosesc IP peste Ethernet. Aceste procese
sunt implementate ca f acand parte din driver -ul interfetei de retea.

3.2 Adresarea IP

DE REVIZUIT
O adresă de IP (Internet Protocol) este un identificator unic pentru un
calculator (nod) într -o rețea IP. O adresă IP este un număr binar pe 32 de biți
reprezentat ca o valoare de 4 numere zecimale – fiecare reprezentând 8 biți – cuprinse
în intervalul 0 – 255 (cunoscute ca octeți), separate prin puncte. Această notație mai
este cunoscută ca "dotted decimal".
Exemplu: 193.226.128.65
Uneori este folositor să vedem valorile în forma lor binară:
1100 0001 1110 0010 1000 0000 0100 0001
193 226 128 65
Orice adresă de IP este formată din două parți, una care identifică rețeaua
(Network ID) iar cealaltă care identifică nodul (Host ID). Clasa și masca de rețea
(subnet mask) pentru o anumită adresă de IP identifică care parte a adresei aparține
rețelei și care pa rte aparține nodului.
CLASELE DE ADRESE IP:
Există 5 clase diferite de adrese. Putem determina clasa din care face parte adresa de
IP prin examinarea primilor 4 biți ai adresei de IP:
• CLASA A: adresele încep cu 0xxx, sau de la 1 la 126 zecimal.
• CLA SA B: adresele încep cu 10xx, sau de la 128 la 191 zecimal.
• CLASA C: adresele încep cu 110x, sau de la 192 la 223 zecimal.
• CLASA D: adresele încep cu 1110, sau de la 224 la 239 zecimal.
• CLASA E: adresele încep cu 1111, sau de la 240 la 254 zecimal .
În exemplu de mai sus, 193.226.128.65 este o a dresă de clasă C, deci partea care
aprtine rețelei este formată din primii 3 octeți (193.226.128.x) iar partea care apartine
nodului este formată din ultimul octet (x.x.x.65). Pentru a specifica adresa de rețea
pentru o anumită adresă de IP, partea care ap arține nodului este setată pe "0" (în

exemplul nostru 193.226.128.0 specifică adresa rețelei pentru 193.226.128.65). Când
partea nodului este setată pe "1", aceasta specifică o adresă de broadcast (un pachet
care este trimis avand ca destinație adresa de b roadcast va ajunge la fiecare host din
cadrul rețelei). 193.226.128.255 este de adresa de broadcast pentru exemplul luat în
considerare mai sus. Toate adresele de IP din cadrul unei rețele TCP/IP vor avea
aceeasi parte de rețea iar partea de host va fi dif erită. În concluzie mai multe IP -uri
care au același network ID formează o rețea. Întotdeauna prima adresă IP dintr -o rețea
reprezintă adresa rețelei (network address) iar ultima adresă IP din rețea reprezintă
adresa de broadcast.
Rețele "private"
Există t rei rețele cu adrese de IP rezervate pentru rețele private. Rețelele sunt:
10.0.0.0/8, 172.16.0.0/12 și 192.168.0.0/16. Acestea pot fi folosite de
către oricine configurează rețele interne (de exemplu un laborator, un LAN în
spatele unui NAT/server PROXY/r outer.Aceste adrese sunt definite în RFC 1918
(http://rfc.net/rfc1918.html).
Subnetting (împărțirea unei rețele în subrețele)
Împărțirea unei rețele în subrețele se poate face din diferite motive printre care
menționăm: organizarea, utilizarea unor medii fizice diferite ( Ethernet, FDDI, WAN
etc.), conservarea spatiului de adrese, securitate, etc. Dar principalul motiv este
controlul traficului din rețea. Într -o rețea Ethernet, toate nodurile unui segment văd
toate pachetele transmise de către toate celela lte noduri din acel segment.
Performanțele rețelei sunt afectate în mod negativ când avem trafic prea mare datorită
coliziunilor și implicit a retransmisiei pachetelor. Un router este folosit pentru a
conecta rețele IP și pentru a reduce traficul pe care f iecare segment trebuie să -l
primească. Netmask (masca de rețea) Prin aplicarea unui subnetmask (o masca de biti)
unei adrese de IP vom putea să identificăm partea de rețea și partea de host a
respectivei adrese. Pentru a obține rețeaua este suficient să fa cem ȘI logic pe biți între
adresa de IP și netmask (pentru operații logice vezi anexa A). Pentru calculul adresei
de broadcast se va face XOR între adresa de rețea si netmask.
ADRESĂ IP ȘI NETMASK = ADRESĂ REȚEA
ADRESĂ REȚEA XOR NETMASK = ADRESĂ BROADCAS T
http://elf.cs.pub.ro/rl/2012 -2013/lab/03/home – poza de aici

IPv6

IPv6 este un protocol dezvoltat pentru a înlocui IPv4 în Internet . Adresele au o
lungime de 128 biți (16 octeți ), ceea ce este considerat suficient pentru o perioadă
îndelungată. Teoretic există 2128, sau aproximativ 3,403 × 1038 adrese unice. Lungimea
mare a adresei permite împărțirea î n blocuri de dimensiuni mari și implicit devine
posibilă introducerea unor informații suplimentare de rutare în adresă.
Windows Vista , Mac OS X , toate distribuțiile moderne de Linux[1], precum și foarte
multe alte sisteme d e operare includ suport "nativ" pentru acest protocol. Cu toate
acestea, IPv6 nu este încă folosit pe scară largă de către furnizorii de acces și servicii
Internet, numiți Internet Service Providers sau ISP.
Notație [modificare | modificare sursă ]
Adresele IPv6 sunt scrise de cele mai multe ori sub forma a 8 grupuri de câte 4
cifre hexazecimale , fiecare gru p fiind separat de două puncte (:). De
exemplu, 2001:0db8:85a3:08d3:1319:8a2e:0370:7334 este o adresă IPv6 corectă.
Dacă unul sau mai multe din grupurile de 4 cifre este 0000, zerourile pot fi omise și
înlocuite cu două semne două puncte(::). De
exemplu, 2001:0db8:0000:0000:0000:0000:1428:57ab se
prescurtează2001:0db8::1428:57ab. Această prescurtare poate fi făcută o singură dată,
altfel ar putea apărea confuzii cu privire la numărul de câmpuri omise. Plecând de la
adresa 2001:0000:0000:ffd3:0000:0000:0000: 57ab, prescurtarea 2001::ffd3::57ab ar
putea să
însemne 2001:0000:0000:0000:0000:ffd3:0000:57ab, 2001:0000:ffd3:0000:0000:0000
:0000:57ab, sau altă combinație similară. Zerourile de la începutul unui grup pot fi de
asemenea omise, ca de exemplu în adresa lo calhost ::1.
Toate adresele de mai jos sunt corecte și echivalente:
2001:0db8:0000:0000:0000:0000:1428:57ab
2001:0db8:0000:0000:0000::1428:57ab
2001:0db8:0:0:0:0:1428:57ab
2001:0db8:0:0::1428:57ab
2001:0db8::1428:57ab
2001:db8::1428:57ab
Ultimii 4 octeți a i unei adrese IPv6 pot fi scriși în zecimal, folosind ca separator un
punct. Această notație este folosită în adresele IPv6 compatibile IPv4 (vezi mai jos).
Forma generală este x:x:x:x:x:x:d.d.d.d unde x reprezintă cifre hexazecimale din
primele 6 grupuri, iar d corespunde unei număr zecimal (între 0 și 255), ca și în
adresele IPv4. De exemplu, ::ffff:12.34.56.78 este aceeași adresă cu ::ffff:0c22:384e și

cu 0:0:0:0:0:ffff:0c22:384e. Acest mod de scriere este învechit și nu este folosit decât
de unele aplic ații.
Mai multe informații pot fi găsite în RFC 4291 – IP Version 6 Addressing
Architecture.

3.3 Nivelul Transport

Nivelul transport este miezul întregii întregii ierarhii de protocoale, având ca
sarcin ă transportul datelor de la sursă la destinație într -un mod sigur, eficace din
puntul de vedere al costurilor și independent de rețeaua fizică utilizată. Nivelul
transport este: – Primul dintre nivelurile de tip sursă -destinație [end -to-end] – spre
deosebi re de primele trei, la care protocoalele se desfășurau doar între două IMP de la
capetele unui tronson de linie fizică dintr -o WAN); – cel care separă nivelurile
orientate pe aplicații (nivelurile 5, 6 și 7 – menite să asigure livrarea corectă a datelor
între calculatoarele interlocutoare), de cele destinate operării subrețelei (nivelurile 1, 2
și 3 – responsabile cu vehicularea mesajelor prin rețea, și care pot suferi modificări de
implementare fără a influența nivelurile superioare). Nivelul 4 preia infor mația de la
nivelul 5, o descompune, dacă e necesar, în unități mai mici (TPDU – Transport
Protocol Data Unit = unitate de date a protocolului de transport), și o trece nivelului 3,
asigurând sosirea ei în formă corectă la destinatar.
7.1. Servicii TCP asi gură un serviciu orientat pe conexiune pentru transmisia
fiabilă a datelor, cu detectarea erorilor și controlul fluxului, și deține un mecanism de
validare în 3 faze, acestea fiind:
• stabilirea conexiunii (handshaking)
• transferul datelor
• eliberarea conexiunii
Serviciile oferite de nivelul de transport nivelului 5 sunt de tipurile:
– o conexiune de transport de tip punct -la-punct, fără eroare, ce transmite mesajele în
ordinea în care au fost emise;
– transportul unor mesaje izolate, fără garantare a ordinii la destinatar;
– difuzarea de mesaje către mai mulți destinatari.
Relația logică între nivelurile rețea, transport și aplicație este prezentată în
continuare:
http://carment.ase.ro/rc/curs/ca p7.pdf – pag 2 poza
unde:

– Entitatea de transport – poate aparține nucleului SO, unui proces distinct, unei
biblioteci legate de aplicațiile de rețea, sau se poate găsi în cadrul plăcii de rețea.
– TPDU (Transport Protocol Data Unit) – unitate de date a protocolului de
datereprezintă toate mesajele schimbate între 2 entități de transport corespondente.
TPDU -urile de la nivel transport sunt conținute în pachete, la nivelul rețea, apoi în
cadre, la nivelul legăturii de date.
Poza 2
7.2. Funcții – controlu l fluxului Se realizează printr -un mecanism fiabil de
transport de date între sursă și destinație, împiedicând ca să se transmită mai multe
date decât pot fi recepționate. Asigura una din sarcinile nivelului transport, aceea de
asigurare a integrității dat elor. Transportul fiabil între sursă și destinație implică o
sesiune de comunicație orientată pe conexiune, protocolul asigurând că: o emițătorul
primește o confirmare din partea receptorului; o toate pachetele care nu primesc
confirmare vor fi retransmise ; o la destinație, pachetele vor fi aranjate în ordinea
transmisiei, indiferent de ordinea în care au ajuns; o se evită congestiile,
supraîncărcarea sau pierderea de date.
– comunicații orientate pe conexiune Folosește procedeul numit „three -way-
handshake ” (stabilirea conexiunii în 3 etape, care constă în:
Emițătorul stabilește o sesiune orientată pe conexiune cu receptorul, trimițând un apel
SYN, un pachet de date cu un număr de secvență n și care conține un bit în header, ce
indică faptul că secvența rep rezintă o cerere de conexiune;
– Receptorul primește pachetul, înregistrează secvența n,
– Receptorul răspunde cu o confirmare (ACKnowledgement) n+1 și include secvența
inițială proprie cu numărul m; (confirmarea cu numărul n+1 înseamnă că s -au primit
toți B de date până la n și se așteaptă următoarea secvență n+1);
Altă metodă de transmitere fiabilă a datelor este PAR (Positive
Acknowledgment and Retransmission), în care emițătorul trimite un pachet de date,
pornește un contor de timp și așteaptă o confi rmare înainte de a emite următorul
pachet. Dacă timpul scurs până la primirea confirmării depășește valoarea specificată,
emițătorul retransmite acel pachet de date și repornește contorul de timp.
– memorarea temporară (buffering) Când o stație recepțione ază pachete mai repede
decât poate procesa, acestea sunt stocate într -o zonă de memorie tampon, numită
buffer. Rezolvă problema traficului supraaglomerat doar dacă este de scurtă durată.
Dacă supraaglomerarea persistă, memoria tampon va deveni insuficientă , iar pachetele
se vor pierde.

– transmisia de confirmări (windowing) Windowing – fereastra de date – procedeu de
transmitere a datelor de la emițător la receptor, care atașează confirmarea după mai
multe pachete de date, și nu după fiecare în parte (ceea de scade viteza de transmisie).
Metode de folosire a acestei tehnici:
o protocoale care cuantifică informația trimisă într -o fereastră de date ca multiplu de
pachete; o protocoale (inclusiv TCP) care folosesc multipli de B pentru ferestrele de
date. Exp. : într -o fereastra cu dimensiunea 3, se vor transmite 3 pachete de date fără a
aștepta confirmarea. TCP folosește tehnica de „fereastră glisanta” (slidingwindows),
prin care dimensiunea ferestrei de date este negociată dinamic în timpul transmisiei.
– stabilirea și eliberarea conexiunii;
– multiplexarea – refacerea după căderi
– adresarea – translatarea adresă transport -adresă rețea;
– transferul unităților de date normale și speciale;
– numerotarea TPDU, secvențierea unităților de date;
– detectarea erorilor și supravegherea calității serviciului; – segmentarea, gruparea,
concatenarea.
7.3. Protocoale de transport prin Internet 7.3.1. UDP – descris în RFC 768
utilizat ca multiplexor/demultiplexor pentru emiterea și recepționarea datagramelor –
pentru direcționarea datagramelor folosește porturile;
– oferă un serviciu de transmisie a datagramelor fără conexiune, nefiabil, fără
mecanism pentru controlul fluxului sau recuperarea erorilor, fără asigurarea în caz pe
pierdere sau recepționare în alta ordine ;
– fiecare datagramă UDP este emisă într -o singură datagramă IP (care poate fi
fragmentată pe durata transmisiei și reasamblată pt. UDP) – toate implementările IP
acceptă datagrame de 576B, cu un antet de 60B => datagrama UDP = 516B;
– există implementă ri care acceptă și datagrame mai mari, dar nu sunt garantate. –
Aplicațiile standard care utilizează UDP sunt: TFTP (Trivial FTP), DNS, RPC,
SNMP, LDAP (Lightweight Directory Access Protocol);
– Structura datagramei UDP:
poza 3
Port sursă /destinație (16b ) – identifică numărul de port al procesului emițător
și care va fi adresat în răspuns/ numărul de port al procesului destinație; o Lungime –
lungimea datagramei, inclusiv antetul;

o Suma de control (16b) – este opțională, se calculează pentru pseudoantet ul IP,
antetul UDP, datele UDP. Pseudoantetul UDP conține: adresele IP sursă și destinație,
protocolul, lungimea UDP;
o Datele – urmează antetului UDP.
7.3.2. TCP – RFC 793 – Asigură un serviciu orientat pe conexiune pentru: o
transmisia fluxului de date – transferă un flux continuu de B direct în rețea, fără să se
ocupe de divizarea în blocuri sau datagrame; B sunt grupați în segmente TCP,
încapsulate în datagrame IP; o fiabilitatea conexiunii – asociază un număr de secvență
fiecărui B transmis și așteapt ă o confirmare (ACK –acknowledgment) de la receptor;
dacă nu primește confirmarea după un anumit interval de timp, va retrimite datele
(doar numărul de secvență al primului B din segment); numerele de secvență se
folosesc pentru ordonarea segmentelor și el iminarea duplicatelor; o detectarea erorilor,
o controlul fluxului – când primește un ACK, specifică emițătorului numărul de
secvență al următorului B pe care -l așteaptă; pentru mărirea debitului se folosește
mecanismul de fereastră glisantă; o multiplexar e- realizată prin utilizarea porturilor;
Serviciu duplex – realizează transmisii ale fluxului datelor în ambele direcții, în
același timp; o Conexiune logică – reprezintă starea fluxului de date; este identificată
unic printr -o pereche de socket -uri ale em ițătorului și receptorului; este determinată de
următoarele elemente:
Socket -uri – asocierea dintre o adresă IP și un număr de port;
Numere de secvență;
Mărimea ferestrei;
o mecanism de validare în 3 faze, care constă din:
Stabilirea conexiunii – presupune o negociere în 3 pași:
• TCP client solicită stabilirea unei conexiuni, emițând o cerere de sincronizare și un
număr inițial de secvență: SYN, n;
• TCP server confirmă cererea de conexiune, cere clientului sincronizarea cu numărul
său inițial d e secvență: SYN, m, ACKn+1;
• TCP client confirmă cererea de sincroniza: ACKm+1;
Transferul datelor;
Eliberarea conexiunii;
– Realizează un circuit logic fiabil între perechi de procese;
– Nu răspunde de fiabilitatea protocoalelor nivelurilor inferi oare (exp.: IP);
– Este folosit de majoritatea protocoalelor, inclusiv de FTP, TELNET, HTTP. –
Formatul segmentului TCP este:

Poza 4
Port sursă/destinație – (16b), identifică aplicația emițătoare/receptoare;
o Număr de secvență – (32b) numărul de secvenț ă al primului B din segment; la
stabilirea conexiunii se negociază valoarea inițială a numărului de secvență;
o Număr de confirmare – (32b) numărul de secvență pentru următorul B pe care -l
așteaptă receptorul;
o Lungime antet – (4b) numărul de cuvinte de 32b din antetul segmentului TCP;
o Indicatori – (6b)
URG =1 => pentru acest segment este important indicatorul de urgență;
ACK =1 => pentru acest segment este important numărul de confirmare;
PSH =1 => (opțional) transmite imediat datele, fără memorar e în tampoanele de
comunicație;
RST =1 => reinițializarea conexiunii TCP;
SYN =1 => cerere conexiune (dacă ACK=0), conexiune acceptată (dacă ACK=1) +
sincronizarea numărului de secvență;
FIN =1 =>conexiunea se încheie, nu mai sunt date de transmis;
o Dimensiune fereastră – numărul de B care pot fi trimiși într -o fereastră glisantă; o
Sumă de control – se calculează pentru fiecare segment TCP, și permite destinației să
detecteze erorile;
o Indicator de urgență – specifică ultimul B de date urgente, d acă URG=1;
o Opțiuni – facilități care nu au fost introduse în antet (exp: dimensiunea maximă a
segmentului).
7.5. Adresarea aplicațiilor Un calculator are in general o singura legatura fizica
la retea. Orice informatie destinata unei anumite masini trebu ie deci sa specifice
obligatoriu adresa IP a acelei masini. Insa pe un calculator pot exista concurent mai
multe procese care au stabilite conexiuni in retea, asteptand diverse informatii. Prin
urmare datele trimise catre o destinatie trebuie sa specifice pe langa adresa IP a
calculatorului si procesul catre care se indreapta informatiile respective. Identificarea
proceselor se realizeaza prin intermediul porturilor. Un port este un numar pe 16 biti
care identifica in mod unic procesele care ruleaza pe o an umita masina. Orice aplicatie
care realizeaza o conexiune in retea va trebui sa ataseze un numar de port acelei
conexiuni. Valorile pe care le poate lua un numar de port sunt cuprinse intre 0 si
65535 (deoarece sunt numere reprezentate pe 16 biti), numerel e cuprinse intre 0 si
1023 fiind insa rezervate unor servicii sistem si, din acest motiv, nu trebuie folosite in

aplicatii. Exemple de porturi utilizate pentru serviciile Internet: ftp 21/tcp, telnet
23/tcp, netstat 15/udp, netstat 15/tcp etc.
Există numer e de porturi care pot fi alocate dinamic. Adresarea aplicațiilor este un
exemplu de funcționare a multiplexării, putând exista mai multe conexiuni transport
pentru o singură conexiune de rețea. Datele care provin de la nivelul rețea trebuie
distribuite pro ceselor destinație, realizând demultiplexarea. Aceasta necesita ca IP să
utilizeze: – numere de protocol – pentru a determina protocolul de serviciu; – numere
de port – pentru a identifica serviciile. Socket -ul, inovație a sistemului Berkeley Unix,
– este un punct de comunicație, prin care un proces poate emite sau recepționa
informație sub forma unui flux de B. – Este identificat asemănător fișierelor, printr -un
descriptor. – Adresa unui socket este tripletul: protocol, adresă_locală, proces_local. –
Inter fața socket este un API pentru rețelele TCP/IP.

Capitolul 4 – Generatorul de trafic

Despre IXIA (modifica scoate LTE)

Cu ajutorul IXIA, se poate genera trafic caracteristic mediilor reale. IXIA pune
de asemenea la dispoziția clienților funcționalitate a de a captura traficul. Astfel, se
poate realiza o identificare și analizare ușoară a problemelor ce pot apărea în cursul
testării realizate de clienți. De asemenea, se asigură interoperabilitatea cu majoritatea
echipamentelor existente pe piață, datorită respectării standardelor de nivel global.
Compania IXIA oferă posibilitatea utilizării platformelor fizice cu interfețe
media interschimbabile, pentru clienții ce doresc o flexibilitate adițională în creearea
scenariilor de testare. Aceste interfețe sunt regăsite sub formă de carduri, cu arhitecturi
diferite de la un caz la altul, ce pot fi combinate în multiple moduri. Aceste carduri
sunt încadrate în interiorul șasielor IXIA. Șasiele sunt disponibile de asemenea în mai
multe modele, principala diferență fiind numărul de carduri ce pot fi introduse în
fantele acestora.
În această lucrare se va utiliza un șasiu XM2, ce dispune de suportul pentru
două carduri. Tipul de card utilizat este Xcellon -Ultra -NG, descris în acest capitol.
Interfețele media utiliz ate sunt cele care generează, controlează și analizează traficul,
putând recunoaște toate nivelele stivei OSI.
Echipamentele fizice IXIA sunt controlate prin intermediul soluțiilor software IxLoad,
IxNetwork, IxChariot, IxAutomate, ș.a.m.d.
IxLoad este u nul dintre programele dezvoltate de către IXIA pentru simularea
traficului de nivel 4 -7 din stiva OSI, având o anumită însemnătate în rețea. IxLoad nu
are ca scop testarea protocoalelor de rutare, ci testarea aplicațiilor și simularea
securității într -o rețea reală. Utilizând acest program, se pot simula de asemenea
servere Video sau de Voce, protocoale specifice acestora (MPEG, IGMP, RTP, RTSP,
SIP, ș.a.m.d). De asemenea, se pot simula medii reale WiFi, 3G sau 4G.
IxLoad dispune de asemenea de funcțional ități necesare pentru depistarea problemelor
apărute pe parcursul unui test, cum ar fi:
„Analyzer”

e test, în cazul LTE
afișându -se statistici reprezentative EGTP (erori, controlul ratelor, transferuri,
proceduri, numărul de sesiuni realizate cu succes sau terminate prin erori, numărul de
utilizatori activi și numărul total de utilizatori, lățimea de ba ndă ocupată de aceștia)
de realizare a conexiunilor Telnet, prin afișarea parametrilor de încărcare a
procesoarelor și a memoriei disponibile.
Prin intermediul prog ramului IxLoad, se va simula interfața LTE S1 -U/S11.
Analiza de trafic se realizează în timp real, pentru o rețea simulată LTE cu 1200000 de
utilizatori ce utilizează aplicații WEB de tip HTML (de exemplu, accesarea site -ului
www.google.ro). În același tim p, aceștia realizează transferul apelurilor într -o altă
celulă. De asemenea, se vor simula următoarele activități: actualizarea profilului de
Calitate a Serviciilor regăsit în HSS, procedura de Actualizare și Urmărire a Ariei sau
intrări în starea de inact ivitate.
Scopul acestei simulări este de a emula un mediu 4G -LTE real, cu un număr de
utilizatori ce ar corespunde unui oraș de dimensiuni mari spre foarte mari și care
declanșează anumite evenimente in rețeaua 4G. Proporțiile în care se efectuează acest e
evenimente respectă proporțiile observate în rețeaua 4G funcțională a operatorului de
telefonie mobilă din SUA, AT&T. Proporțiile exacte vor fi prezentate pe parcursul
acestui capitol.
Din punct de vedere al echipamentelor fizice, sunt utilizate două ca rduri Xcellon –
UltraNP, inter -conectate prin fibra optică. Această legătură de fibră optică utilizează o
lungime de undă de 1310 nm, și are o capacitate de 10Gbps.

(Mai merge adaugat de la Cristina pag 58 – cap 4.1 pas cu pas cu screenshot ce s -a
modific at) + sasiu si card

IXNETWORK + VOLCANO DE PE SITE (de adaugat in continuare la serv )

IxNetwork este solutia IXIA de testare a performantelor a infrastructurii unei retele.
Aceasta scaleaza pentru a pentru a putea manipula cele mai puternice echipamente
hardware si cele mai mari retele, de la rutarea si comutarea pachetelor pana la retelele
Ethernet dintr -un Data Center si retelistica definita de software (Software Defined
Networking – SDN).

Problema pe care o rezolva IxNetwork este urmatoarea: complexita tea retelelor ridica
probleme de complexitate .
Majoritatea firmelor isi testeaza de cativa ani retelele informatice din punctul de
vedere al scalabilitatii si al performantei. Dar cum retelele devin din ce in ce mai
complexe, asa si provocarile de a mentin e o performanta ridicata si capacitatea de
adaptare se inaspresc. In afara de testarea pentrul timpul de raspuns al sistemului,
instrumental de testare trebuie sa valideze o topologie complexa de retea care contine
mii de echipament e, sa simuleze niste fluxuri de trafic sofisticate, si sa desfasoare
testarea in conditii de stress ale sistemului in acelasi timp variind diferite scenarii si
conditii ale retelei.
Solutia este un instrument software si hardware pentru testarea retelelor, un sistem de
testare de incredere pentru retele complexe si impredictibile.
Produsul IxNetwork reuseste sa ofere utilizatorilor o suita de teste de performanta sub
cele mai provocatoare conditii.
Capabil sa genereze multipli terabytes de date sis a analiz eze pana la 4 milioane de
fluxuri de trafic simultane, IxNetwork scaleaza pentru a putea manevra cele mai
puternice echipamente hardware si cele mai mari retele.
Folosind o metoda imbunatatita pentru analiza si statistici in timp real, solutia
IxNetwork em uleaza tot ce poate fi gasit intr -o retea de la rutare si comutare, la
Ethernet Data Center, la SDN, la Access Broadband, la Ethernet Industrial, totul
pentru o testare completa a retelei.
IxNetwork a fost gandit pentru testarea specifica a retelelor IP, a infrastructurii, a
functionalitatilor si a masurilor de performanta. IxNetwork ofera utilizatorilor
modelarea serviciilor la scara de Internet, precum si masuratori in timp real per flux de
trafic pentru o izolare rapida a problemelor de retea. De la cele mai simple masuratori
QoS (Quality of Service) ale traficului, pana la cele mai complexe scenarii de test de
nivel 3 VPN, IxNetwork usureaza munca de validare a masurilor de performanta a
echipamentelor de retea.
IxNetwork lucreaza impreuna cu platforma h ardware IXIA pentru a procesa traficul de
pe planul de control si de pe planul de date impreuna cu echipamentul sau reteaua
aflate in faza de testare.
Fiecare port este echipat cu un processor independent si cu memorie proprie odata cu
hardware dedicat spe cializat in genearea, analizarea si capturarea fluxurilor de date
(FPGA – field-programmable gate array ) – totul pentru a oferi viteza si inteligenta
necesare pentru emularea pe scara larga a protocoalelor.

+inca cateva cuvine despre IxN

Capitolul 5 – Simulare a conditiilor unei retele reale

Scrie la serv si fa screenshoturi cum adaugi blab la bla
Network Emulator 2

Network Emulator 2 este un produs al IXIA care simuleaza conditiile de
deteriorare in timp real ale unei retele.
Acest produs a aparut din nevoia de a testa scenariile de tipul “in cel mai rau
caz” pentru mediile de productie. Multe organizatii trec peste importanta emularii
realistice si a celor mai daunatoare scenario in laborator. Neindeplinirea testarii unor
variabile ca performanta aplic atiilor, efectul intarzierilor in retea, protectiei impotriva
unei defectiuni poate avea multiple consecinte neplacute in lumea reala.
Riscul lansarii unor noi aplicatii, protocoale si echipamente hardware creste
fara o cunoastere aprofundata a performante lor acestora.
Organizatiilor le trebuie o metoda de a reproduce in conditii de laborator a
unor deteriorari realistice a conditiilor unei retele.
Network Emulator 2 este un instrument de testare de precizie pentru interfete 10 GbE,
1 GbE si 100 MbE. Acesta aplica degradari si deprecieri ale serviciilor unor retele care
permit departamentului IT dintr -o organizatie sa poata emula cu acuratete conditiile
unei retele reale de productie de tip LAN/WAN.
Network Emulator 2 ofera o paleta bogata de functionalitati care permit utilizatorului
sa testeze in mediul de laborator a unor degradari controlate si predictibile:
 Testarea efectului intarzierilor in retea si cum afecteaza acestea performanta
aplicatiilor
 Testarea efectului intreruperii conexiunilor pentru a det ermina pornirea
scenariilor de fail -over
 Stresarea sistemelor cu erori la nivel de bit controlate si pachete pierdute

+calsifiactori si profile

Capitolul 6 – Controlul echipamentelor prin REST API

Ceva ceva despre arhitectura client server la toate pr odusele

6.1 HTTP

Protocolul HTTP Hypertext Transfer Protocol, pe scurt HTTP, este un protocol
la nivelul aplicație care stă la fundația comunicației în World Wide Web. Hypertext
reprezintă un set de obiecte care construiesc conexiuni între noduri prin le gături
logice, hyperlinks. HTTP este protocolul care permite transferul unor astfel de obiecte.
HTTP este un protocol de tip cerere -răspuns în modelul arhitectural client –
server. Un client, cel mai des un web browser, trimite o cerere HTTP către un server
web, care întoarce un răspuns. Acest răspuns conține o stare al completării cererii și,
în caz de succes, informația cerută.
Resursele HTTP sunt identificate și localizate pe rețea prin Uniform Resource
Locators (URLs) folosind schema http URI definită în RFC 3986 astfel:
<nume_schema> : <Pozitia_ierarhica> [?<query>] [# <fragment>]
În cazul HTTP numele schemei este http. Partea ierarhică începe cu un dublu
forward slash "//", urmat de un nume al autorității, care poate fi un nume de domeniu
sau un ip, ur mat apoi de un port opțional, precedat de ":". După autoritate urmează un
path construit ca o succesiune de segmente, asemănător unei structuri de directoare,
caracterul separator fiind "/". Porțiunea de query este opțională, începe cu "?" și
conține infor mație adițională care nu este ierarhică, ci organizată tipic prin perechi de
tip =, cu perechile separate prin ";" sau "&". Partea fragmentului este de asemenea
opțională, începe cu "#" și conține o directivă către o resursă secundară, cel mai des un
atribut id al resursei principale, așa cum se întâmplă în cazul documentelor HTML.
HTTP definește nouă metode care indică acțiunea dorită asupra resursei
accesate. Aceste nouă metode sunt: HEAD, GET, POST, PUȚ, DELETE, TRACE,
OPTIONS, CONNECT și PATCH. Cele mai utilizate sunt cele de GET, prin care se
citește resursa, și cele de POST, PUT și DELETE, prin care se modifică resursa.
Metodele safe (sigure) sunt considerate cele prin care se intenționează doar citirea
informației, fără modificarea stării serverulu i. Acestea sunt HEAD, GET, OPTIONS și

TRACE. Metodele idempotente sunt cele asupra cărora mai multe cereri identice ar
trebui să aibă același efect. Acestea sunt POST și DELETE.

O cerere HTTP conține următoarele:
• o linie de request, spre exemplu GET /d iverse/car.jpg HTTP/1.1 care formulează o
cerere pentru resursa /diverse/car.jpg de la server.
• Headere Http, cum ar fi Accept -Language: en -US, Accept -Charset: utf -8, etc.
• O linie goală
• Un corp al mesajului, opțional Un răspuns HTTP conține următoa rele:
• linie de Status (spre exemplu HTTP/1.1 200 OK, care indică finalizarea cu succes a
cererii clientului). Un status 3xx indică necesitatea unei redirectari, 4xx și 5xx sunt
statusuri de eroare (4xx – eroare la client, 5xx – eroare la server).
• Head ere HTTP, cum ar fi Content -Type: text/html
• O linie goală
• Un corp al mesajului, opțional
Antetele HTTP sunt perechi "cheie: valoare", scrise în clear -text și separate
prin succesiunea de caractere carriage return (CR) și line feed (FD). Aceste heade re
definesc parametrii de operare a unei tranzacții HTTP. Datorită necesității trasmiterii
unor tipuri diferite de conținut prin mesajele HTTP, am folosit în cadrul aplicației
Smart Presentation setarea headerului Content -Type prin care se specifică mime –
typeul conținutului. Un mime -type (Multipurpose Internet Mail Extension) este un
standard Internet care a pornit de la descrierea seturilor de caractere folosite la
formatul email, ajungând azi să fie utilizat ca standard de descriere al conținutului
unui m esaj web în general. Un astfel de antet descrie atât conținuturi de tip text, cât și
conținut binar. În cazul clienților și al serverului, interpretarea acestui câmp este vital
pentru alegerea modului în care resursa este citită, respectiv scrisă.

6.2 Servicii Web

Sunt aplicații ce comunică prin HTTP în WWW. Ele furnizează un standard ce
facilitează interoperabilitatea aplicațiilor software ce rulează pe o varietate de
platforme și framework -uri. Interoperabilitatea și extensibilitatea sunt date de XML.
Ele pot fi combinate într -un mod care pierde cuplarea pentru a obține operații
complexe.

Prin utilizarea serviciilor web o aplicație pe două nivele poate fi modificată la
una pe trei nivele, ce poate opera peste web. Aplicația devine astfel extensibilă și
interoperabilă cu diferite tipuri de aplicații client.
Există două tipuri de servicii web:
 SOAP (Simple Object Access Protocol) folosesc mesaje XML ce definesc arhitectura
mesajului și formatele acestuia. Aceste sisteme conțin deseori o descriere a operații lor
oferite de serviciu, scrise în fișierul WSDL (Web Service Description Language), care
este de fapt un fișier XML.
 RESTful (Representional State Transfer) este mult mai potrivit pentru scenarii de
bază, cu o integrare ad -hoc. Sunt mult mai bine integrat e cu HTTP decât SOAP, nu
necesită XML sau definiții WSDL. Se bazează pe specificațiile JSR -311, iar Jersey
este o implementare a acestora. Serviciile REST folosesc W3C și standardele IETF
(Internet Engineering Task Force): HTTP, XML, URI, MIME.
Vom utiliza serviciile REST pentru integrarea prin web și vom utiliza serviciile SOAP
în aplicații enterprise ce au scenarii de integrare care cer calități avansate ale
serviciilor (QoS) .
Vom alege JAX -RS pentru că serviciile sunt mai ușor de consumat pentru
multe t ipuri de clienți, în timp ce permite serverului să evolueze și să se scaleze.
Clienții pot alege să consume anumite sau toate aspectele serviciului și să le combine
cu alte servicii web.
Aplicațiile REST sunt simple, lightweight și rapide pentru că:
 Resurs ele sunt identificate prin URI, ceea ce furnizează o modalitate de adresare
globală.
 O interfață uniformă este folosită pentru manipularea resursei.
 Sunt folosite mesaje autodescriptive sau metadate pentru resurse.
 Interacțiunile stateful prin hiperlinkuri sunt bazate pe conceptul de stare explicită de
transfer.
REST indică o arhitectură client server fără stare. Un serviciu REST expune o
mulțime de resurse ce identifică destinațiile interacțiunilor cu clienții. Resursele sunt
identificate prin URI și sunt manipulate de patru operații: PUT, GET, POST și
DELETE.
Resursele sunt decuplate de reprezentare astfel încât pot fi accesate într -o
varietate de formate: HTML, XML, plain text , PDF, JPEG și JSON. Metadatele
despre resurse sunt folosite pentru a controla cache -ul, a detecta erorile de transmitere,

a negocia cel mai potrivit format de reprezentare și pentru autentificare sau controlul
accesului.
Orice interacțiune cu o resursă este stateless , mesajul este așadar self
contained . Avem la dispoziție mai multe t ehnici de a trimite starea precum: rescrierea
URI-ului, cookie -uri, câmpuri hidden . Starea poate fi inclusă în mesajul de răspuns
pentru a crea stări viitoare ale interacțiunii.

6.3 Servicii Web RESTful

Representational State Transfer (REST) reprezintă un stil arhitectural bazat pe
standardele web și pe protocolul HTTP, pentru sisteme distribuite că World Wide
Web. REST s -a evidențiat în ultimii ani ca modelul de design predominant al web –
ului, datorită simplității sale. REST a fost descris în 2000 de R oy Fielding, în lucrarea
sa de doctorat .
Într-o arhitectură bazată pe REST, totul este o resursă. O resursă este accesată
printr -o interfață comună bazată pe metodele standard HTTP. Într -o arhitectură REST,
există tipic un server REST care asigură accesul la resurse și clienți REST care
accesează sau modifică resursele. Fiecare resursă ar trebui să suporte operații le
standard HTTP (GET, POST, PUT , DELETE). Resursele sunt identificate prin ID -uri
globale – URIuri.
"Limbajul" REST este bazat pe substantive ș i verbe și pune accentul pe
lizibilitate. Spre deosebire de SOAP, REST nu necesită parsare XML și nu necesită un
header al mesajului de la/către un service provider, ceea ce duce la reducerea
bandwidth -ului consumat. REST are și o altă metodologie de manip ulare a erorilor: în
timp ce SOAP poate avea mesaje definite de eroare, REST necesită folosirea
meca nismelor HTTP de error handling .
Stilul arhitectural REST impune anumite direcții de luat în considerare la
realizarea designului, implementarea componente lor individuale fiind la discreția
dezvoltatorului:
Client -server – o interfață uniformă separă clienții de servere. Separarea
preocupărilor înseamnă că, spre exemplu, clienții nu se ocupă de stocarea datelor, așa
cum serverul nu se ocupă cu interfața uti lizatorilor sau cu starea clienților. Astfel,
serverele și clienții pot fi dezvoltați independent, interfața rămânând constantă.
• Stateless – acest principiu asigură că niciun context al clientului nu este
memorat pe server între cereri. Fiecare cerere ef ectuată conține toate informațiile

necesare, și orice informație de stare a sesiunii este stocată pe client. Aceasta este o
caracteristică de rezistență la erori a serverelor.
• Cacheable – clienții pot reține în cache răspunsurile. O memorie cache bine
întreținută poate îmbunătăți scalabilitatea și performanța sistemului, prin reducerea
numărul de cereri de la clienți la server.
• Layered – un client nu -și poate da seama prin interfata comună dacă este
conectat direct la server sau la un proxy intermedia r. Servere intermediare pot
îmbunătăți scalabilitatea sistemului prin load -balancing sau prin partajarea unei
memorii cache.
• Code on demand (opțional) – serverele pot să extindă temporar
funcționalitatea clientului prin transferul codului – exemple fiin d Java applets sau
limbajele client -side scripting ca JavaScript.
Un WebService RESTful se bazează pe metodele HTTP și pe conceptele
arhitecturii REST. Acesta definește tipic un URI de baza pentru resurse și tipurile
MIME suportate (XML, Text, JSON, Proto col Buffers, etc) și setul de operații HTTP.
Aceste metode standard sunt [6]:
• GET – definește un acces la citirea unei resurse, fără efecte secundare.
Resursa nu este niciodată alterată în urma unei cereri GET.
• PUT – crează o nouă resursă, trebuie să fie idempotentă.
• DELETE – șterge o resursă; operația trebuie să fie idempotentă, o repetare a
cererii nu trebuie să producă efecte suplimentare primei cereri.
• POST – actulizează resursa existentă sau crează o nouă resursă.
Jersey reprezintă impleme ntarea Java open source, de referință, la calitate de
producție a standardului JAX -RS (JSR 311) pentru dezvoltarea web serviceurilor
RESTful. Dar este mai mult decât implementarea referinței, oferind și un api prin care
programatorii pot extinde Jersey pen tru nevoile proprii [7]:
Standardul JAX -RS implementat de Jersey suportă următoarele anotatii
(annotations) pentru crearea resurselor web:
Adnotare Descriere
@PATH(my_path) setează patul la URL de baza + "/" + my_path. URL -ul de baza
este cel definit ca URL al containerului de bază, în web.xml sau în aplicație, în cazul
folosirii unui container că Grizzly
@POST indică faptul că metoda va răspunde unei cereri POST
@GET indică faptul că metoda va răspunde unei cereri GET
@PUT indică faptul că metoda va r ăspunde unei cereri PUT

@DELETE indică faptul că metoda va răspunde unei cereri DELETE
@Produces(mimetype [, more types]) definește ce mime -type va avea conținutul
returnat l ao metoda adnotată cu @GET. Mime -tipurile pot fi de tip "plain/text" sau
binare, că "application/pdf" sau "application/x -protobuf". Alte exemple:
"application/xml", "application/json" George -Cristian Stoica 9
@Consumes(mimetype [, more types]) Definește ce mime -type este consumată de
această metodă, PUȚ sau POST
@PathParam Folosita pentr a injecta valori din URL că parametru al metodei. Se
folosește spre exemplu la obținerea ID -ului resursei din cadrul URLului, pentru
returnarea resursei corecte
@QueryParam Leagă parametrul de o valoarea unui parameru de inter ogare HTTP
@HeaderParam Leagă parametrul de valoarea unui header HTTP

Strucutra URL ???

6.4 Python

Python este un limbaj de programare foarte popular, oferind posibilitatea
programării structurate dar și orientate pe obiect și incluzând și elemente din
paradigma funcțională. Este un limbaj de scripting, ceea ce înseamnă că este
interpretat și nu compilat, economisind mult timp în procesul de dezvoltare și
debugging.
Limbajul combină o putere remarcabilă cu o sintaxă foarte clară. Are module,
clase, excepții, tipuri dinamice și garbage collection. API-ul Python oferă module
pentru o gamă foarte mare de fun cționalități, de la cele de bază pentru lucrul cu șiruri
și fișiere, până la cele pentru lucrul cu procese, threaduri, sockets, serializare etc.
Multe dintre aceste module oferă o interfață foarte similară programării la nivel de
sistem din C (ceea ce se s tudiază la SO), astfel încât funcțiile Python au același nume
si aproximativ aceiași parametrii ca cei pentru funcțiile din C pentru apeluri de sistem.
Există o varietate de API-uri și pentru aplicații GUI, cum ar
fi PyQT , PyGTK , wxWidgets (lista completă ). Pentru calcul numeric și grafice există
bibliotecile NumPy , SciPy și Matplotlib .
Implementarea principală a Py thon, CPython (scrisă în C) a fost concepută
pentru a fi portabilă: funcționează pe Linux, Unix, Windows, Mac OS X. Pe
platformele mobile actuale exi stă implementări pentru iOS, iar Android oferă SL4A , o

platformă pentru limbaje de scripting cu suport și pentru Python, folosită de engine -uri
precum QPython .
Programele pot fi executate, de asemenea, și pe mașina virtuală Java prin folosirea
compilatorului Jython , care le transformă în bytecode Java și permite folosirea de
clase Java în cadrul acestora. Similar, există IronPython pentru .NET.
Python este un limbaj ce oferă foarte multe funcționalități și are o curbă de
învățare rapidă atât pentru programatori i ce cunosc deja limbaje precum C și Java, cât
și pentru începători. Deși este un limbaj interpretat, acest lucru nu a stat în calea
popularității sale și folosirii în numeroase proiecte. Pentru proiecte open -source puteți
consulta statistici pe site -ul ohloh , și compara evoluția contribuțiilor în proiecte cu cod
Python față de proiecte în alte limbaje de programare, ca exemplul de pe acest link.
Puteți utiliza Python atât pentru scripturi, dezvoltarea unor infrastructuri de
testare, cât și pentru aplicații web folosind framework -uri cum ar fi Django . Există
aplicații desktop variind de la clienți BitTorrent până la unele jocuri video, iar multe
produse software conțin și componente scrise în Python, așa cum este cazul Instagram
( detalii aici ). Statistici legate de site -uri ce folosesc Python găsiți aici, iar o listă a
aplicațiilor ce folosesc Python găsiți aici.
In Windows, daca extensia .py este deja inregistrata, un dublu -clik pe numele
scriptului este suficient. Se poate edita programul fol osind IDLE (Python GUI) si
apasand tasta F5 pentru rulare sau se poate executa din consola (Start ->Run ->cmd).
Daca folositi Linux, exista mai multe posibilitati : fie se lanseaza interpretorul
cu numele scriptului , fie prima linie din program este de forma
#!/calea/catre/interpretor iar scriptul se face executabil .
In Python se poate lucra cu numere intregi si numere in virgula mobila.
Numerele intregi dintr -o expresie se convertesc automat in numere in virgula mobila
daca este necesar.
Numele de variabile s i functii sunt case -sensitive. La definirea variabilelor nu
trebuie precizat tipul acestora. Python asociaza numele unei variabile cu un obiect,
care poate fi numar, string sau ceva mai complex. Cand este folosita o variabila, tipul
acesteia este tipul obi ectului cu care este asociata. Este gresita folosirea intr -o expresie
a unei variabile care nu a fost asociata cu un obiect.
Python pune la dispozitie doua tipuri de structuri pentru a grupa mai multe
elemente : tupluri si liste. Diferenta principala dintr e cele doua tipuri este ca tuplul nu
mai poate fi modificat dupa ce a fost declarat.
Lista se declara folosind paranteze drepte.

Tuplul se declara folosind paranteze rotunde.
Elementele unei liste sau ale unui tuplu pot fi de tipuri diferite.
Accesarea ele mentelor unei liste sau unui tuplu se face la fel ca in cazul
sirurilor de caractere, cu indecsi pozitivi, negativi sau folosing operatorul ”:” .
Spre deosebire de stringuri elementele unei liste pot si modificate cu ajutorul
accesarii prin indecsi. Se pot adauga elemente intr -o lista folosind functia append() si
se pot combina doua liste folosind functia extend() .
Numarul de elemente dintr -o lista sau un tuplu se poate afla folosind
functia len() .
Elementele unui tuplu nu mai pot fi modificate dupa ce au f ost declarate. Din
acest motiv nici o functie prezentata mai sus ce modifica elementele unei liste nu
poate fi aplicata asupra tuplurilor.
O structura dictionar este un set neordonat de chei si valori in care valoarea
poate fi cautata folosindu -se cheia. C heile sunt de obicei numere intregi sau stringuri.
Ele pot sa fie in orice ordine si pot sa nu fie de acelasi tip.
dict[0] = "primul"
dict["unu"] = 2
Pentru a acesa un element al unui dictionar se procedeaza in felul urmator:
var = dict[0]
sau
var = dict[" unu"]
Dictionarele sunt declarate folosind acolade, elementele sunt de
forma cheie:valoare despartite de virgule.
dict = {0: "primul" , "unu":2}
Se poate afla dimensiunea unui dictionar folosindu -se functia len() (cu
sintaxa: len(some_dict) ) si se poate s terge o intrare din dictionar folosindu -se del (cu
sintaxa: del some_dict[index] ).
In plus se poate verifica daca exista o valoare pentru o cheie data. Pentru o
versiune Python mai veche de 2.2. se foloseste functia has_key a obiectului dictionar.
O data cu versiunea 2.2. exista operatorul in care inlocuieste functia de mai sus.
if mykey in dict:
[code]
Functia keys() a obiectului dictionar returneaza o lista ce contine toate cheile
din dictionar.
Functile sunt definite folosind cuvantul def. Rulare a instructiunilor:

def fractie(x,y):
if (y==0):
return
else:
return float(x)/float( y)
print fractie(6,4)

va afisa:
1.5

Se specifica doar numele argumentelor, tipul lor fiind cel trimis la apelarea
functiei.
Pentru a accesa variabilele globale ale programului, trebuie sa folosim
cuvantul -cheie "global" cu sintaxa: global some_var .
Prima instructiune din corpul unei functii poate fi un sir de caractere, acest sir
fiind documentatia functiei.
Functiile care se termina fara sa foloseasca instructiunea return sau care
executa return fara argumente, intorc o valoare None .
Se pot specifica valori implicite pentru parametrii unei functii.
def fractie(x, y=1):

La apelare se pot specifica doua valori sau doar una. Daca func tia se apeleaza
cu doua valori nu se tine cont de valoarea implicita a lui y, daca se apeleaza cu o
valoare (de ex fractie(4) ), x va lua valoarea 4, iar y valoarea implicita 1.
Functiile mai pot fi apelate folosind, in loc de argumente, cuvinte cheie de
forma: cuvant_cheie = valoare . Pentru exemplul de mai sus se poate mai apela functia
si astfel :
fractie(y=7, x=5)
fractie(6,y=1)

Daca o functie are un parametru de tipul *lista, atunci la apelare functia va
primi o lista de argumente. Rularea instructiun ilor:
def suma(*lista):
s=0

for i in lista:
s=s+i
return s
print suma(2,3,5)

va afisa:
10 # adica 2+3+5

Daca o functie are un parametru de tipul **nume, atunci la apelare functia va
primi o lista de cuvinte cheie de forma cuv_cheie = valoare . Rularea instructiunilor:
def afisare(**nume):
for i in nume.keys():
print i,':',nume[i]
va afisa:
client : Alex
vanzator : Alina

Includerea de cod extern
In Python se pot include in alte programe functii scris e in alt fisier. Un astfel
de fisier ce poate fi importat poarta denumirea de modul. Exemplu:
import random

Instructiunea import din exemplul de mai sus nu incarca in tabela de simboluri
numele functiilor definite in modulul random, ci doar numele modulu lui. Folosind
acest nume se pot accesa functii definite in interiorul modulului folosindu -se
sintaxa nume_modul.nume_functie(parametri) .
random.random()

Clase si obiecte
Trebuie subliniat ca in Python, cuvantul "obiect" nu se refera neaparat la
instantie rea unei clase. Clasele in sine sunt obiecte, iar, in sens mai larg, in Python
toate tipurile de date sunt obiecte. Exista tipuri de date care nu sunt clase: numerele
intregi, listele, fisierele. Toate tipurile de date insa au aproximativ acelasi
comportam ent, mai usor de explicat daca ne referim la aceste tipuri de date folosind
cuvantul "obiect".

Un obiect se creaza in Python prin folosirea cuvantului cheie class :
class className [(super_class1 [, super_class2]*)]:
[Suite]
Creaza un obiect de tip clasa si ii da numele className. Suite poate contine
definitii de metode locale si atribuiri pentru variabile locale. Clasa este derivata din
super_class1 si din super_class2.
class MyClass (object): …
Creaza o clasa de tip "new -style" prin mostenire din object. Vechiul tip de
clase nu mostenesc object.
In lucrul cu clase, trebuie stiute urmatoarele reguli:
 Primul argument pentru metodele (operatiile) de instanta ale unei clase este
intotdeauna obiectul sursa, numit "self" prin conventie. Cand ne referim la membr i ai
clasei, vom folosi self.membru, intr -un mod asemanator cu folosirea "this" din Java.
 Metoda speciala __init__() este apelata la instantierea clasei (crearea unui obiect de
tipul clasei) si poate fi asemuita cu un constructor.
 Metoda speciala __del__() este apelata cand nu mai sunt referinte la acest obiect
(mecanism de garbage collector) si poate fi asemuita cu un destructor.
 Instantierea se face prin apelarea obiectului clasa, posibil cu argumente (astfel
instance=apply(aClassObject, args…) creaza o instanta). Spre exemplu:
class Complex:
def __init__(self, realpart, imagpart):
self.r = realpart
self.i = imagpart
x = Complex( 3.0, -4.5)
Generarea de numere pseudo -aleatoare se face la fel de usor ca in alte limbaje. Se
importa modulul random (import r andom), se seteaza eventual seed -ul
folosind random.seed, iar random.randint(a,b) spre exemplu va intoarce un intreg
cuprins in intervalul inchis [a,b].
Lucrul cu liste este foarte comod in Python. Listele pot fi folosite si sub forma de stiva
sau coada pr in intermediul functiilor puse la dispozitie ( append() si pop() ). Afisarea
unei liste se poate face folosind un simplu print lista.
O lista se initializeaza la fel de simplu:
lista = []
Putem referi o sublista a unei liste, ajutandu -ne de doi indecsi:
sublista = lista[index1:index2]

Indexarea se face de la zero. Mai sus, se vor intoarce elementele listei initiale de la
index1 la index2 -1. Astfel, lista[n: (n+1)] va intoarce o lista care contine un singur
element, cel de pe pozitia n, iar lista[n:n] va into arce [].
In plus, exista o suita de functii foarte utile pentru obiectele de tip lista. Cele mai
folosite sunt:
 len(lista) intoarce numarul de elemente din lista
 lista.append(x) adauga un element la sfarsitul listei
 lista.extend(alta_lista) concateneaza al ta_lista la lista
 lista.sort() sorteaza elementele listei
 reverse() inverseaza ordinea elementelor din lista
Unele apeluri de functii pot arunca exceptii care trebuie prinse. Exista mecanismul try-
except, asemanator celui try -catch din Java.
Lucrul cu fisi ere este, de asemenea, simplu. Pentru a obtine un obiect de tip fisier, se
apeleaza functia open, de obicei cu doi parametri: numele (calea) fisierului si modul
de acces ( r – read only; w – write only si daca exista va fi suprascris; a – append; r+ –
citire si scriere; rb, wb, r+b – deschide fisierul in mod binar):
f = open('input.txt','w')
Odata obtinut obiectul fisier f, se vor putea folosi functiile pentru lucrul cu
fisiere: read, readline, readlines, write, seek sau close ca metode ale clasei file
(exem plu: f.read()).
Uneori, pentru a scrie obiecte Python in fisiere, acestea trebuie transformate intr -un
string, proces numit pickling (iar procesul invers: unpickling ). Folosind
modulul pickle cu functiile pickle.dump si pickle.load, acest lucru poate fi re alizat cu
usurinta. Urmatorul exemplu este concludent:
# Salvam un dictionar intr -un fisier folosind pickle
import pickle

culoare_favorita = { "caisa": "galbena", "portocala": "orange", "cireasa": "rosie" }
print culoare_favorita

pickle.dump( culoare_f avorita, open( "save.p", "w" ) )

# Incarcam dictionarul inapoi din fisier folosind pickle
culoarea_mea_fav = pickle.load( open( "save.p" ) )
print culoarea_mea_fav

# culoarea_mea_fav e acum { "caisa": "galbena", "portocala": "orange", "cireasa":
"rosie" }
Pentru lucrul cu siruri de caractere exista functii ajutatoare precum rstrip, lower, etc.

Capitolul 7 – Rularea testelor si analiza rezultatelor
Dat drumul la script screenshoturi, explicat pas cu pas valori, masuratori
7.1 pasii premergatori rularii
7.1.1 Configurare IxNetwork
Adaugare porturi
Configurare interfete pe porturi
Configurare traffic(toate directiile)
Explicat tipul de traffic folosit
Configurare statistic ice vor fi monitorizate
7.1.2 Configurare spatiu de rulare al testului(foldere+libr arii)
7.1.3 Explicat librariile folosite de IXIA
7.1.4 Rularea scriptului automat
 Conectarea la Network Emulator
 Variabile globale
 Cone ctarea la Clientul de IxNetwork
 Configurarea profilelor
 Configurarea degradarilor
 Pornirea traficului
 Oprirea traficului si verificarea statisticilor
Configurarea testelor pentru rularea regresie lor în cadrul regresiei se poate
face prin 2 moduri. Pentru BPS testul poate fi scris în island, singura condiție f iind ca
testul respectiv sa fie scris în Python sau TCL, iar pentru IxLoad, testul trebuie scris

atât în island, dar și pe mașina unde este agentul, unde trebuie să existe fișierul de
config.
Fig. 9. Config IxLoad

După cum se poate vedea in Fig.9, acest a este o configurație simplă pentru
testarea conexiunii HTTP dintre un client și un server.

După ce au fost configurate toate testcase -urile conform cerințelor specificate,
user-ul trebuie să stabilească topologiile. Topologia trebuie să păstreze următo rul
șablon și este necesară pentru toate testele scrise, deoarece pe baza ei aplicația își
alocă dinamic resursele.

#py> TOPOLOGY: <topology_tag#1 topology_tag#2>

Un alt element important ce trebuie inclus în teste este perioada estimată de
rulare a testului. În cazul depășirii acestei perioade, testul se consideră blocat, este
marcat ca failed și se trece la următorul test. În cazul în care nu există tag -ul de
timeout setat în script, timeout va fi considerat cel default, scris în fișierul de setting s.
Timeout este definit în secunde.

#py> TIMEOUT: <integer>

Fișierul de settings.py, este fișierul în care este definită toată regresia și de
aceea trebuie configurat cu atenție.

În acest fișier sunt trecute resursele, cu adresele de conectare, dar și porturile
disponibile topologiilor testelor ce vor urma a fi rulate, după cum se poate vedea in
Fig.10.

Din lista definită de resurse, în funcție de test, Pythar alocă dinamic resursele
astfel: este verificată în prima fază topologia testului. Se determină dacă există resurse
disponibile pentru rularea testului cu acea topologie. În cazul în care nu există resurse
disponibile în acel moment, se așteaptă eliberarea resursei respective sau, dacă mai
sunt teste cu topologii diferite și resursele nece sare sunt disponibile , sunt rulate acele
teste. Acest lucru este posibil însă numai în cazul rulării în paralel.

Fig. 10. Fisierul de settings

Scrierea de teste se poate face prin 2 moduri diferite, în funcție de preferințele
utilizatorului:

Prima metoda de a scrie teste este din GUI -ul de Pythar:

• User -ul își scrie testele pe mașina locală
• User -ul le upload -ează în Perforce
• Deschide Regression Runner și selectează din GUI folder -ul pe care dorește
să-l sincronizeze cu sistemul de versionare și să adauge testele.
• După ce a selectat folder -ul, user -ul apasă click dreapta pe mouse și selectează
opțiunea “Sync folder from P4”

Cea de a doua metodă este realizata de pe mașina client. User -ul trebuie să se
conecteze la mașină fie prin Command L ine, fie prin Remote Desktop Connection.
Pentru ambele variante, utilizatorul trebuie să creeze un fișier sub forma
“test.numetest.py”/ ”test.numetest.tcl” în folder -ul cu locația testelor.

Este obligatoriu ca testele sa aibă structura respectiva și exten sia de “.py” sau
de “.tcl” deoarece acestea sunt singurele limbaje acceptate de Pythar pentru scrierea de
teste.

Pentru a rula testele de regresie este necesară pornirea agentului. User -ul
trebuie să se logheze la mașina de agent, sa deschidă un command prompt și sa ruleze
următoarea comandă:

python /<cale_fisier_agent>/pythar_agent.py –p <numar_port> – r 0

După ce agentul este pornit, iar testele și configurațiile sunt în regulă, user -ul
poate porni rularea regresiei. Startul regresiei se poate da prin următoarele metode:

Prima metoda este aceea din GUI din browser, urmând acești pași:

• User -ul se duce în partea stânga sus la butonul verde “ Regression Runner”
• După ce se deschide fereastra, user -ul trebuie să selecteze versiunea de IxOS
pe care rulează, ce produs va fi folosit pentru testare, ce build are produsul respectiv,
iar pentru field -ul “HLT” de va selecta “None”
• După ce au fost alese produsele folosite pentru rularea testului/ testelor, user -ul
trebuie să se ducă la butonul de “Se ttings” (un ciocan și o cheie în forma de “X”).
• După ce a fost apăsat acest buton se modifică după necesitați: lista de agenți,
lista de porturi și lista de chassis -uri pe care vor rula testele.
• Se salvează fișierul de settings, apăsând pe butonul din d reapta jos de “Save”
• Se selectează suita de test
• Se apasă pe butonul verde cu un triunghi în el, din fereastra, pe care scrie
“Start”

A doua metoda este din linia de comanda. User -ul se conectează la mașina
client, fie prin CLI, fie prin Remote Deskt op Connection și se executa următoarea
comanda:

./start -Pythar <cale_teste>IxOS -+<Versiune_IxOS>_<Produs> –
+<Versiune_Produs>_HLT -+None_<Număr_Iteratii> NO YES

După ce regresia este finalizată, vizualizarea rezultatelor se realizează după
următorii pași:

• Se accesează din browser framework -ul
• Se apasă pe iconița de “Aggregated Results”
• Se deschide o fereastră cu un raport al testelor rulate
• Se selectează printr -un click suita de teste pentru care se dorește să se
vizualizeze rezultatele
• Aceste a sunt împărțite în island -uri ca în Fig. 11, dar există posibilitatea de a
vizualiza și testele separate
• Se selectează testul pentru care se dorește raportul detaliat

Fig. 11. Rezultate regresie

Concluzii
(modificat IxLoad/IxN, LTE)
S-a demons trat faptul că produsele IXIA respectă standardele internaționale
impuse pentru ca echipamentele să poată interacționa, indiferent de rețeaua la care
sunt abonate sau de tipul lor.
Prin intermediul IxLoad, se pot obține până la 15000 de proceduri simulta ne pe
secundă, împărțite în cele cinci tipuri de obiective descrise. Acest lucru face ca
simularea să fie foarte apropiată de ceea ce se intamplă în realitate într -un mediu LTE.
Totodată, se observă faptul că IxLoad dispune de resurse suficiente pentru a
emula un sistem evoluat real, ce oferă posibilitatea oferirii serviciilor de calitate înaltă
prin faptul că pierderile și erorile sunt menținute la un nivel foarte scăzut, în limitele
impuse de standardele internaționale.
Totuși, echipamentele și soluti ile IXIA pot simula medii 4G -LTE
corespunzătoare unor orașe de dimensiuni mari sau foarte mari. Astfel, IXIA acoperă
un segment de piață foarte mare datorită soluțiilor oferite pentru testarea
echipamentelor caracteristice acestui tip de rețea.
Concurent ul principal al IXIA, atinge valori mult mai mici față de ceea ce
IXIA a declarat. Din acest motiv, se dorește întrecerea concurenței, dar în același timp,
limitarea performanței în vederea dezvoltării ulterioare.
S-a demonstrat astfel că podusele IXIA su nt soluții ușor de utilizat, stabile și ce
pot atinge performanțe superioare concurenței. Aceste lucruri fac din IxLoad și
cardurile IXIA soluții viabile și de termen lung pentru clienți.

Bibliografie
Bibliografie: http://www.ietf.org/rfc.html http://www .ietf.org/rfc/rfc1219.txt – On the
Assignment of Subnet Numbers http://www.ietf.org/rfc/rfc1918.txt – Address Allocation for
Private Internets http://www.ietf.org/rfc/rfc917.txt – Internet Subnets
http://www.ietf.org/rfc/rfc932.txt – A Subnetwork Addressin g Scheme
http://www.ietf.org/rfc/rfc940.txt – Toward an Internet Standard Scheme for Subnetting
http://www.ietf.org/rfc/rfc950.txt – Internet Standard Subnetting Procedure
http://www.ietf.org/rfc/rfc1518.txt – An Architecture for IP Address Allocation with CIDR
http://www.ietf.org/rfc/rfc1519.txt – Classless Inter -Domain Routing (CIDR)
http://www.ralphb.net/IPSubnet/ – IP Address Subnetting Tutorial Cisco Network Academy –
CCNA http://www.cisco.com
https://www.ixiacom.com/sites/default/files/resources/case -study/axa -technologies –
web.pdf – studiu de caz
[6] Sameer Tyagi, RESTful Web Services, <
http://www.oracle.com/te chnetwork/articles/javase/index -137171.html> [7] Documentația
oficială Jersey, 20.06.2012, < http://jersey.java.net/nonav/documentation> [8] RESTful Web
Services Developer's Guide, 20.06.2012

Similar Posts