Documente Academic
Documente Profesional
Documente Cultură
EXata poate rula sub Windows, Linux și Mac OS X. O listă completă cu cerințele de
sistem necesare pentru a funcționa se poate găsi în EXata-2.2-InstallationGuide din
documentație.
EXata e instalat în directoare diferite, în funcție de sistemul de operare și/sau alegerea
utilizatorului. Pe parcursul laboratoarelor următoare, directorul de instalare EXata va fi
denumit EXATA_HOME.
2
Simularea Sistemelor de Comunicații Laborator 1
EXata este, de fapt, un emulator de rețea care permite evaluarea rețelelor de comunicații,
creând o replică virtuală a unei rețele care se interfațează cu rețele și aplicații reale.
Un emulator de rețea mimează funcționalitățile unei rețele reale, astfel încât aceasta să
apară, să interacționeze și să se comporte precum o rețea reală. Astfel, sistemul emulat nu
poate fi deosebit de unul real. Folosirea unui emulator permite o metodă de evaluare eficientă
din punctul de vedere al costurilor a noilor tehnologii înainte de a începe construcția propriu -
zisă a rețelelor sau sistemelor.
Un simulator de rețea redă comportamentul unei rețele reale, dar nu poate interacționa cu
aceasta. Folosește o reproducere sau o abstractizare a sistemului real și singurul său scop e de
a reproduce comportamentul acestuia. O simulare a unei rețele este o metodă eficientă folosită
în cadrul primelor etape de dezvoltare a rețelelor. Utilizatorii pot evalua comportamentul
primar al rețelei și pot testa combinații ale proprietăților rețelei care sunt susceptibile de a
funcționa.
Emularea rețelelor ajută la dezvoltarea așa-numitelor „net-centric systems” sau sisteme de
rețele, furnizând un mediu în care deciziile de proiectare alese pot fi schimbate rapid și
impactul lor evaluat. Utilizatorii pot folosi rețeaua emulată și vedea cum aplicațiile lor (VoIP,
redare video etc.) se vor comporta când sistemul real este construit. Rețeaua emulată poate, de
asemenea, fi integrată cu sisteme mai vechi pentru a testa interoperabilitatea cu acestea și a
forma utilizatorii pentru rețelele de generații viitoare.
3
Simularea Sistemelor de Comunicații Laborator 1
Notă: Implicit, la pornirea EXata, modul de lucru este emulare. Totodată, la fiecare încărcare
a unui scenariu, modul de lucru este tot emulare. Va trebui, pentru a rula EXata în modul
simulare, ca, de fiecare dată, să se selecteze modul „Simulation” din bara de emulare.
S.1. Zona de lucru pentru un nou scenariu este deja creată și ea trebuie doar salvată. Pentru
a salva un scenariu, se apasă File > Save din meniu (sau Ctrl+S folosind tastatura) și se
navighează către directorul %EXATA_HOME%/scenarios/user. Se denumește scenariul
Lab1.config. Se va crea automat un director cu același nume în care va fi plasat fișierul
.config.
4
Simularea Sistemelor de Comunicații Laborator 1
Din Panoul lateral cu unelte de lucru, de sub bara Devices se selectează Default device
(prima iconiță din stânga). Apoi se face click pe zona de lucru în colțurile din stânga -sus și
dreapta-jos (se creează astfel nodurile 1 și 2). Se face clic în continuare pentru a amplasa m ai
multe noduri între cele două, aproximativ ca în figura de mai jos:
Se apasă pe Select în bara de aspect și apoi se mută nodurile prin zona de lucru folosind
mouse-ul. Se face clic dreapta pe un nod și se selectează Properties pentru a vedea
proprietățile implicite ale nodului respectiv:
5
Simularea Sistemelor de Comunicații Laborator 1
Se creează o aplicație de tip CBR (rată de bit constantă) între nodurile 1 și 2 astfel: în
panoul lateral, se apasă CBR din bara Applications, apoi se face clic pe nodul 1 și se ține
apăsat; se deplasează mouse-ul pe nodul 2 și se dă drumul. Pentru a vedea proprietățile
implicite ale aplicației, se face click dreapta pe legătura CBR și se selectează Properties.
Se șterg toate nodurile în afară de 1 și 2 folosind unealta Select pentru a selecta nodurile și
apoi se apasă tasta Delete sau se face click-dreapta și se selectează Delete din meniul pop-up.
Mai simplu, se poate folosi unealta Lasso pentru a se selecta toate nodurile deodată și a le
șterge.
6
Simularea Sistemelor de Comunicații Laborator 1
Se selectează din meniu Tools > Node Placement. Va apărea o astfel de fereastră:
Number of Nodes: 25
Placement Model: Uniform
Se creează încă 2 aplicații CBR între nodurile 21 -25 și 5 -20. Zona de lucru ar trebui să
arate acum aproximativ așa:
7
Simularea Sistemelor de Comunicații Laborator 1
Se alege „Simulation” din bara de emulare. Se apasă acum butonul Run Simulation din
În panoul lateral din partea stângă, se selectează Animation Filters > Event Filters >
Node Radio Range:
Se apasă Play și se lasă scenariul să ruleze până la sfârșit. Prin activarea acestui filtru se
poate vedea acoperirea radio a unui nod. Zona de lucru va arăta aproximativ astfel:
8
Simularea Sistemelor de Comunicații Laborator 1
Se selectează din meniu Animation > Step Setting > By Command. Va apărea
următoarea fereastră:
Se setează Command Interval la valoarea 100. Se apasă OK. Apoi se apasă butonul Step
din bară ( ). Astfel simularea va avansa cu un pas de 100 de comenzi, la fiecare apăsare a
butonului. Apăsați de câteva ori, apoi se apasă Play și se lasă scenariul să ruleze până la
sfârșit.
Se face click pe Output Window din panoul inferior și se observă mesajele de ieșire și
faptul că scenariul a rulat 100%.(De obicei, dacă apare o eroare, zona se extinde automat
pentru ca utilizatorul să vadă ce erori au apărut).
9
Simularea Sistemelor de Comunicații Laborator 1
Se apasă din nou butonul Run Simulation. Se selectează din meniu Animation >
Dynamic Statistics > Scenario Statistics. În fereastra ce apare, se setează următoarele:
10
Simularea Sistemelor de Comunicații Laborator 1
E.1. Se vizualizează statisticile apăsând butonul . Se face clic pe Application > CBR
Server > Total Packets Sent. Se observă valorile pentru cele 3 noduri client (1, 5 și 21). Se
face apoi clic tot în submeniul Application pe CBR Client > Total Packets Received.
Q.1. Se compară numărul de pachete de date trimise de clienți (nodurile 1, 5, respectiv 21)
cu numărul de pachete primite de către servere (2, 20, respectiv 25). De ce diferă? Există
soluții pentru ca pierderile de pachete să fie mai mici (ideal nule)?
Se plasează pe zona de lucru două noduri. Se face clic pe unealta Link din panoul lateral
de sub tabul Links. Se face clic pe nodul 1 și se trage mouse -ul până la nodul 2, apoi se dă
drumul. Se creează astfel o conexiune de tip punct-la-punct (cablată) între cele 2 noduri.
Se face clic dreapta pe legătură și se alege Properties. Se fac, sau se verifică existența
următoarelor setări:
11
Simularea Sistemelor de Comunicații Laborator 1
Se face clic pe aplicația CBR din panoul lateral și se definește o aplicație CBR de la nodul
2 la nodul 1. În acest moment, se va vedea doar una din cele două (aplicația sau l egătura
punct-la-punct). Faptul că există mai mult de o conexiune între două noduri va fi denotat de
un + care apare deasupra liniei:
Pentru a comuta între cele două, se face clic dreapta și se alege Links and Applications >
CBR sau Link.
Se apasă pe Architect din bara de componente pentru a reveni la modul Architect. Apoi se
12
Simularea Sistemelor de Comunicații Laborator 1
E.3. Se adaugă o aplicație de tip Lookup între nodurile 1 și 4. În EXata, Lookup este un
model abstract de trafic de tip cerere/răspuns cum ar fi DNS look-up sau ping. Se setează
următoarele:
Reply Delay: 1 ms
Start time: 5 min
End Time: 10 min
13
Simularea Sistemelor de Comunicații Laborator 1
Se rulează simularea și se încearcă setarea vitezei de execuție cât mai mică pentru a
permite vizualizarea detaliilor animației.
Q.2. Se notează momentul la care a fost trimis primul pachet de către client, momentul la
care primul pachet este primit de către server și intervalul mediu dintre momentul trimiterii
unei cereri și momentul primirii răspunsului ( Average Roundtrip Delay). Ce legătură există
între valorile obținute?
E.5. Se șterge aplicația Lookup și se creează din nou o aplicație CBR între nodurile 1și 4.
Se face clic dreapta pe aplicație și se introduc următoarele setări:
14
Simularea Sistemelor de Comunicații Laborator 1
Q.4. Se rulează iar simularea și se compară momentul la care a fost trimis primul pachet de
către client cu momentul la care primul pachet este primit de către server. Luând în
considerație aceste valori, care este cauza pierderilor de pachete și care ar putea fi soluția (sau
soluțiile) pentru remedierea problemei?
Se revine în modul Design prin apăsarea butonului Switch to Design Mode. Se activează
modul Packet Tracer astfel:
Se face clic pe Scenario Properties > Open Scenario Properties, apoi tabul Statistics
and Tracing. Se introduc următoarele:
E.7. Se rulează iar simularea, iar după terminarea acesteia se face clic pe fișierul .trace
corespunzător din fereastra File system din bara de componente și se apasă Open din meniul
apărut:
15
Simularea Sistemelor de Comunicații Laborator 1
Se plasează 7 noduri pe diagonală de la colțul din stânga -sus la cel din dreapta-jos.
16
Simularea Sistemelor de Comunicații Laborator 1
Fiecare scenariu are o subrețea fără fir ( wireless subnet) implicită. Orice nod plasat în zona
de lucru ce nu este conectat la un alt dispozitiv sau o altă subrețea face parte din subrețeaua
implicită. Aceasta nu este reprezentată în nici un fel pe zona de lucru. Se face clic pe View >
Display Settings (sau pe butonul din bara de aspect) și se bifează IP Address. Astfel,
adresele IP asociate fiecărui nod vor apărea pe zona de lucru. Se observă astfel că toate
nodurile fac parte din aceeași subrețea.
Se face clic pe Scenario Properties > Channel Properties. Se fac următoarele setări:
Number of Channels: 1
Channel Frequency[0]: 2.0 GHz
Pathloss Model[0]: FreeSpace (modelul atenuării de cale în spațiu liber)
E.8. Se definește o aplicație CBR de la nodul 1 la 7. Se aleg parametrii aplicației astfel încât
să încapă în durata de 2 minute a simulării. Se rulează scenariul și se vizualizează rezultatele
în Analyzer, notând numărul total de pachete trimise și recepționate.
Se revine în modul Design. Modificarea proprietăților nivelului fizic se poate face fie la nivel
de subrețea, fie la nivel de nod, fie la nivel de interfață. Fiind mai comod, se vor modifica
proprietățile subrețelei fără fir implicite. Se face clic în panoul inferior pe Table View >
Networks, se dă clic dreapta pe Default Wireless Subnet și se alege Properties apoi din
fereastra care apare, tabul Physical Layer.
17
Simularea Sistemelor de Comunicații Laborator 1
E.9. Se rulează scenariul, se vizualizează rezultatele și se notează din nou, numărul de pachete
trimise și recepționate.
E.10. Se revine în modul Design și, folosind procedura descrisă mai sus, se deschide fereastra
ce conține proprietățile nivelului fizic. Se modifică rata de date la 5.5 Mbps și se reia
simularea.
Q.5. Ce se întâmplă acum? (Indicație: Se verifică statisticile de la nivelul MAC > 80211DCF
> Packet Drops due to retransmission limit, RTS packets sent și CTS packets sent)
Q.6. Se poate modifica scenariul pentru a nu avea pierderi de pachete la rata de transmisie de
2 Mbps?
18
Laborator 2
Nodul 1 și nodul 2 trimit fiecare trafic tip CBR către nodul 4. Fiecare trimite 750 de
pachete de date (512B) la fiecare 1 ms începând de la 0 s la 30 s.
Se dă clic pe Table View în panoul inferior și apoi sub tabul Networks, se selectează,
ținând apăsat Ctrl toate elementele existente (sau alternativ, pe zona de lucru se selectează, tot
cu Ctrl, toate cele trei legături), se dă clic dreapta și se alege Properties. În fereastra care
apare, se face clic pe Routing Protocol și se specifică următoarele:
20
Simularea Sistemelor de Comunicații Laborator 2
În Display Settings se bifează Queues pentru a vizualiza cozile de așteptare ale nodurilor.
Se apasă Run și, înainte de a apăsa Play, se verifică sub Event Filters, activarea filtrului
Packet Queuing. Se apasă Play pentru a rula scenariul. Se vizualizează rezultatele.
E1. Notați numărul de pachete primite de server, respectiv trimise de client. Notați
numărul de pachete aruncate de nivelul rețea (Network->FIFO->Total Packets Dropped)
E2. Modificați parametrii scenariului astfel încât să nu mai existe pachete aruncate.
E3. Schimbați direcția uneia dintre legăturile CBR (de ex: în loc de 1 ->4 să fie 4->1).
Modificați corespunzător fișierul La b2-1.routes-static. Rulați din nou scenariul și notați
statisticile cerute la E1
2. Simularea unei rețele complexe fără fir. Crearea mai multor canale radio.
S2. Se creează un nou scenariu numit Lab2-2. Nodurile se plasează conform ilustrației de
mai jos:
21
Simularea Sistemelor de Comunicații Laborator 2
Se deschide Scenario Properties > Channel Properties. Se adaugă un nou canal radio
modificând Number of Channels la valoarea 2. Se apasă iconița pentru a vizualiza și
modifica proprietățile celor două canale radio. Canalele apar într-o listă și sunt indexate
începând cu 0. Se modifică frecvența canalului 1 la valoarea 2,5 GHz.
22
Simularea Sistemelor de Comunicații Laborator 2
Se adaugă două subrețele fără fir, și se conectează nodurile ca în figura de mai sus folosind
unealta Link din panoul lateral. Se modifică proprietățile ambelor subrețele astfel încât fiecare
să utilizeze canale radio diferite. Pentru aceasta se face clic dreapta pe fiecare din subrețelele
reprezentate pe zona de lucru, se alege Properties > Physical Layer și se editează valorile
câmpurilor Listenable și Listening Channel Mask, astfel încât să aibă valorile 10 pentru cea
din stânga și 01 pentru cea din dreapta:
23
Simularea Sistemelor de Comunicații Laborator 2
o Start Time: 1 s
o Duration Time: 30 s
24
Simularea Sistemelor de Comunicații Laborator 2
25
Simularea Sistemelor de Comunicații Laborator 2
Pentru a rula în modul Batch, se lucrează cu tabul Batch Experiments din panoul inferior.
Parametrii ce trebuie modificați în cursul simulărilor multiple trebuie adăugați fiecare în
tabelul cu parametri din Batch Experiments. Acest lucru se face mergând la fereastra de
editare a parametrului ca în cazul unui scenariu obișnuit, se face click pe acel parametru și se
apasă butonul Add to Batch.
Atenție! Dacă un parametru este dependent de un parametru părinte, atunci acela trebuie
adăugat primul în tabelul cu parametri. De exemplu, pentru a adăuga Pathloss Model, trebuie
mai întâi adăugat parametrul Number of Channels
26
Simularea Sistemelor de Comunicații Laborator 2
Se apasă apoi butonul Run Experiments, ceea ce va duce la apariția fere strei de alegere a
modului de rulare. Se alege Non-Interactive.
În modul non-interactiv, toate experimentele sunt executate unul după altul fără intervenția
utilizatorului. Execuția scenariului nu este animată. Fiecare din experimente se numește
Experiment-1, Experiment-2 ș.a.m.d. și fișierele asociate fiecărui experiment sunt denumite
corespunzător. Acestea sunt plasate automat într-un subdirector numit BatchRun din
directorul scenariului.
S4. Pe baza experimentului de mai sus, se rulează același scenariu în mod Batch cu
următorii parametri:
Parametri impliciți
Model de propagare Two-Ray cu o înălțime a antenei de 1.5 m:
o Fără fading
o Fading Rayleigh
27
Simularea Sistemelor de Comunicații Laborator 2
o Fading Rice (K = 5)
S5. Se creează un nou scenariu intitulat Lab2-4. Se plasează 3 noduri în linie la o distanță
de aproximativ 500 m între ele și se creează o aplicație CBR între nodurile 1 și 3. Se vor
folosi setările implicite mai puțin modelul de antenă.
Se setează modelul de antenă la antenă direcțională tot la nivelul subrețelei fără fir
implicite. În tabul Physical Layer din proprietățile acesteia, se scriu următoarele:
28
Simularea Sistemelor de Comunicații Laborator 2
Apoi, în tabul MAC Layer se setează opțiunea Enable Directional Antenna Mode: Yes
și se lasă setările care apar implicite.
29
Simularea Sistemelor de Comunicații Laborator 2
30
Simularea Sistemelor de Comunicații Laborator 2
E7. Se adaugă încă două noduri în mijloc, între cele 3 noduri. Se rulează scenariul și se
observă rezultatele, apoi se revine la modul Design și se mută cele două noduri în sus sau în
jos. Se rulează din nou scenariul. Ce se observă?
Se revine în modul Design și se mută unul din noduri înapoi pe linie. Se setează, folosind
pașii de mai devreme, modelul de antenă la steerable antenna. Se alege fișierul
steerable.antenna-azimuth:
31
Simularea Sistemelor de Comunicații Laborator 2
32
Laborator 3
Scriptul Urban Grid (urban_grid.pl) este un script scris în limbajul Perl plasat în
directorul EXATA_HOME/bin care poate fi folosit pentru a genera eșantioane de date cu
caracteristici ale terenului (clădiri, străzi, parcuri, stații de metrou) în format de teren specific
EXata (un fișier tip .xml). Datele sunt generate în coordonate carteziene.
Străzile sunt aranjate într-o grilă. O stație de metrou este plasată în fiecare din cele 4
colțuri ale grilei. Un bloc al grilei trebuie să fie un parc. Toate celelalte blocuri au clădiri
plasate aleator. Înălțimile clădirilor sunt alese la întâmplare dintr -o gamă specificată. Liniile
sunt numerotate începînd cu 0, crescînd în direcția axei Y. Coloanele sunt numerotate
începând de la 0, crescând în direcția axei X. Semafoare nu sunt generate cu acest utilitar.
Datele de ieșire sunt afișate pe ecran dacă nu sunt direcțio nate către un fișier.
Pentru a folosi scriptul Urban Grid, se tastează următoarea comandă (toți parametrii
trebuie scriși pe o singură linie):
perl urban_grid.pl <num_linii> <num_col> <lat_grila> <lat_strada>
<linie_parc> <coloana_parc> <inalt_min> <inalt_max>
unde
Notă: Comanda perl va funcționa numai dacă este instalată o variantă de perl pe stația de
lucru.
35
Simularea Sistemelor de Comunicații Laborator 3
Pentru a manipula vizualizarea în mod 3-D a scenariului, se pot folosi următoarele butoane:
Lista cu opțiuni, precum și alte detalii se găsesc în Anexa D5 din EXata User’s Guide
36
Simularea Sistemelor de Comunicații Laborator 3
37
Simularea Sistemelor de Comunicații Laborator 3
38
Simularea Sistemelor de Comunicații Laborator 3
o Se apasă OK
o Se face clic dreapta pe Default Wireless Subnet, se alege Properties >
Physical Layer și se completează următoarele:
Listening Channel Mask: 00000000 (0 pentru toate canalele)
Radio Type: GSM
Packet Reception Model: BER-based Reception Model
Number of BER Tables: 1
BER Table[0]: C:/snt/qualnet/5.0/data/modulation/gmsk.ber
o Se trece la MAC Layer și se completează:
MAC Protocol: GSM
GSM Control Channel List: [0 4] (canalele de control ale tuturor
stațiilor de bază din simulare)
o La Network Layer > General Properties se scrie:
Network Protocol: GSM Layer3
GSM Node Type: Mobile Station
o Se face apoi clic dreapta pe Link, se alege Properties > Network Protocol și
se alege
Network Protocol: GSM Layer3
o Se repetă pentru cealaltă legătură punct-la-punct
o Se face clic pe MSC și se specifică:
La Network Layer > General Properties se scrie:
Network Protocol: GSM Layer3
GSM Node Type: Mobile Switching Center
6. Se alocă un canal de control pentru fiecare stație de bază:
o Se face clic dreapta pe BS1 și se alege Properties > Interfaces > Interface# >
MAC Layer (# corespunde numărului interfeței GSM)
o Se introduc următoarele:
BS Downlink Control Channel: [0]
Location Area Code: 226
Cell ID: 1
Channel Range: 0-3
Neighboring Base Stations: 4-226-2
o Se repetă pentru BS2:
BS Downlink Control Channel: [4]
Location Area Code: 226
Cell ID: 2
Channel Range: 4-7
Neighboring Base Stations: 0-226-1
39
Simularea Sistemelor de Comunicații Laborator 3
40
Simularea Sistemelor de Comunicații Laborator 3
Q2:Se notează diferențele (dacă există) dintre valorile statisticilor generate la scenariul
precedent și cele generate ac um.
E3: Se utilizează utilitarul radio_range și se notează acoperirea radio a unei stații de bază.
41
Laborator 4
Number of Channels: 2
Pentru fiecare canal se introduc aceiași parametri:
o Channel Frequency: 2.4 GHz
o Pathloss Model: Two-Ray
o Restul parametrilor rămân cei impliciți
Se face clic dreapta pe fiecare din subrețelele fără fir și în Properties > Physical Layer se
introduc:
În acest moment, toți parametrii configurați la nivel de subrețea vor fi preluați și de către
nodurile ce aparțin acestora. Însă, nodurile 1 și 15, fiind stații de bază, fac excepție și trebuie
configurate separat.
Se face clic dreapta pe nodul 1, și se alege Properties > Interfaces > Interface# > MAC
Layer, unde # este numărul interfeței care are ca MAC Protocol 802.16. Se pune Station
Type: Base Station și se lasă restul parametrilor impliciți . Se setează înălțimea antenei de
emisie la 10m. Similar se procedează și pentru nodul 15.
E1. Se creează o aplicație CBR între nodul 9 și nodul 14. Se rulează simularea, se
vizualizează rezultatele. Se notează următoarele:
Dacă sunt pierderi de pachete sau o întârziere excesivă a pachetelor, atunci se încearcă
ajustarea în continuare a parametrilor scenariului pentru obținerea unor rezultate cât mai bune
(pe baza a ceea ce s-a studiat deja în laboratoarele trecute).
(iconița ) din panoul lateral. Apoi se face clic pe nodul pentru care se vrea adăugată
mobilitatea și apoi se face clic pe zona de lucru în punctul unde urmează să se deplaseze
nodul. Va apărea un steguleț (numit și punct de referință sau waypoint) care va reprezenta
43
Simularea Sistemelor de Comunicații Laborator 4
poziția nodului la un moment dat. Se repetă acțiunea până când zona de lucru arată ca mai jos.
Se observă că punctele astfel unite dau traiectoria pe care se va deplasa nodul.
Se face acum clic dreapta pe unul din punctele de referință și se alege Properties ceea ce
va deschide un editor unde se pot modifica proprietățile acestor puncte. Importante sunt
coloanele Simulation Time (momentul simulării la care nodul va fi în punctul respectiv) și
coordonatele punctului. Pe baza acestora, se poate determina viteza pe care o va avea nodul.
Trebuie avut grijă să nu se definească o viteză prea mare, căci va duce la pierderi de pachete.
Tehnologia WiMAX (în teorie) permite recepție bună chiar și în condiții de mobilitate foarte
mare, până la 125 km/h. Pentru simularea de față, se recomandă o viteză maximă de 60-80
km/h.
44
Simularea Sistemelor de Comunicații Laborator 4
Se face clic dreapta pe nodul 1 și se merge la Properties > Interfaces > Interface# > Mac
Layer. Aici se introduc următoarele:
Se face click dreapta pe fiecare din subrețelele fără fir și în Properties > MAC Layer se
pune Enable Mobility Mode: Yes, restul parametrilor rămânând cei impliciți.
45
Simularea Sistemelor de Comunicații Laborator 4
Pentru stația mobilă, se schimbă în Properties > Interfaces > Physical Layer >
Listenable și Listening Channel Mask la valoarea 11. Astfel, stația va putea asculta și
canalul vecin și se va putea conecta la stația de bază vecină când puterea semnalului
recepționat de la stația de bază curentă scade sub -78 dBm. (vezi parametrul Handover RSS
Trigger din figura de mai sus), adică va putea efectua un transfer.
Se rulează din nou, se verifică și se notează dacă apar îmbunătățiri ale rezultatelor. Dacă nu,
se pot micșora intervalul de expirare a rutei active (Active Route Timeout Interval) și
intervalul de expirare a rutei curente (My Route Timeout Interval). De reținut că ultima
trebuie să fie dublul primeia. Se vor nota aceiași parametri ca la E1.
46
Simularea Sistemelor de Comunicații Laborator 4
47
Simularea Sistemelor de Comunicații Laborator 4
48
Simularea Sistemelor de Comunicații Laborator 4
11. Se configurează protocolul de rutare pentru SGSN, GGSN și HLR Bellman -Ford
(Node Configuration->Routing Protocol).
12. Se creează o rețea IP. Pentru aceasta se plasează 3 noduri Default pe zona de lucru. Se
conectează un nod (nodul 15) la celelalte 2 (nodurile 16 și 17) și la GGSN prin
legături punct-la-punct.
49
Simularea Sistemelor de Comunicații Laborator 4
13. Se configurează gateway-ul implicit pentru nodurile 15, 16, 17 să fie GGSN-ul. Se
merge la Properties > Node Configuration > Routing Protocol. Se pune Configure
Default Gateway:Yes și Default Gateway: 13.
14. Se configurează protocolul de rutare pentru nodurile IP să fie RIP. Se verifică faptul că
pe interfața GGSN către rețeaua IP, valoarea Network Layer este IPv4, iar protocolul
de rutare este tot RIP. Legătura punct-la-punct dintre GGSN și nodul 15 trebuie să fie
de tip IPv4 nu Cellular Layer3.
Parametrul Precedence specifică din ce clasă QoS face parte aplicația (vezi Anexa
2). O valoare de 4 înseamnă clasa Streaming.
Q1. Verificați dacă apar pierderi de pachete și dacă pot fi îmbunătățite performanțele (vezi și
Anexele 1 și 2)
51
Simularea Sistemelor de Comunicații Laborator 4
Anexe
Este necesar un protocol de rutare în rețeaua core UMTS pentru a permite rutarea
pachetelor între SGSN-uri, GGSN-uri și HLR-uri care ar putea fi la mai multe noduri
distanță unul de altul.
Rețelele IP au propria lor arhitectură IP. Pentru a ruta pachetele între PLMN și IP, sunt
necesare mai ales informații despre nodurile de la marginile celor două rețele. Acestea
sunt descrise mai jos.
Rutarea de la rețeaua UMTS către IP. Nodul GGSN trebuie să ruteze pachetele
către gateway-ul IP corespunzător.
Rutarea de la rețelele IP către UMTS. Următoarele considerații se aplică:
o Ruterele IP de obicei nu știu adresa IP individuală atribuită nodului UE.
Totuși, trebuie să știe cum să ajungă la rețeaua UMTS luată ca un întreg.
o Segmentele de adrese IP alocate unui PLMN sunt de obicei configurate static.
o Informațiile globale de rutare pentr u segmentele de adrese IP ale fiecărei
PLMN trebuie făcute cunoscute rețelelor IP.
Protocolul BGP (Border Gateway Protocol) poate fi folosit pentru a conecta domeniile de
rutare ale rețelelor UMTS și IP între ele. Următorii pași trebuie urmați pentru a configura
rutarea BGP:
52
Simularea Sistemelor de Comunicații Laborator 4
În această configurație, GGSN -ul din rețeaua UMTS este inclus în domeniul de rutare al
rețelei IP. Nodul GGSN e configurat ca gateway implicit al rețelei IP. Acesta învață rutele
către nodurile IP prin intermediul protocolului dinamic de rutare configurat pentru rețeaua IP.
Metoda funcționează în cazul rutării pachetelor dinspre PLMN către rețeaua IP. Totuși
pachetele nu pot fi rutate dinspre rețeaua IP către PLMN deoarece nodurile IP nu știu că
pachetele trebuie rutate prin GGSN. În acest caz, rute statice sau implicite trebuie folosite.
Rutele statice pot fi configurate pentru a informa nodurile IP să ruteze pachetele către nodul
GGSN al unei rețele UMTS. Totuși, dacă topologia rețelei se schimbă, rutele statice nu mai
sunt corecte.
Notă. Din moment ce un singur gateway implicit poate fi configurat pentru fiecare nod IP,
această abordare funcționează doar dacă o singură rețea UMTS este conectată la re țeaua IP.
Aplicațiile de tip servicii cu comutație de pachete (packet service) din rețele UMTS pot fi
simulate prin modele de generare de trafic ale EXata. Modelele CBR și VBR pot fi folosite
pentru a simula fluxuri coversaționale și de streaming în rețele UMTS .
Apelurile de voce (servicii cu comutație de circuite) pot fi simulate prin aplicația Phone Call.
În EXata, modelele de generare de trafic, cum ar fi CBR, VBR, suportă configurarea claselor
QoS prin trei parametri QoS: PRECEDENCE, TOS și DSCP. În rețelele UMTS, doar
parametrul PRECEDENCE este suportat.
6-7 Conversațional
4-5 Streaming
3 Interactiv, prioritate = 1
53
Simularea Sistemelor de Comunicații Laborator 4
2 Interactiv, prioritate = 2
1 Interactiv, prioritate = 3
0 Fundal
Pentru rețelele UMTS, fiecare rate level impune limite asupra ratei de date maxime și
dimensiunii maxime a pachetului. Aplicația CBR/VBR ar trebui configurată astfel încât
dimensiunile pachetelor și rata de date se încadrează în aceste limite. Tabelele următoare dau
limitele impuse pentru tipurile de trafic conversațional și streaming.
Tabel 2 Limitele pentru rata de date și dimensiunea pachetului de date pentru trafic conversațional
Tabel 3 Limitele pentru rata de date și dimensiunea pachetului de date pentru trafic de tip streaming
O proprietate importantă a tehnologiei WiMAX este suportul său QoS. Totuși, în EXata, doar
aplicațiile de generare de trafic CBR/VBR au fost modificate astfel încât să dea parametri
QoS corecți. Tabelul următor dă corespondența dintre valorile câmpului PRECEDENCE și
clasele de servicii.
54
Simularea Sistemelor de Comunicații Laborator 4
Servicii Precedence
Best Effort 0
Notă: Valorile 6, 2, 1 corespund toate tipului nrtPS. Acest lucru permite alocarea diferitelor
priorități fluxurilor nrtPS. Totuși, în implementarea din EXata, planificarea nu permite
priorități multiple în cadrul unui tip de serviciu. Planificarea folosește WFQ și ponderile
folosite se bazează pe cerințele de bandă ale fluxurilor.
55
Laborator 5
all:
cd main
nmake -f Makefile-windows-vc9
rebuild: clean
nmake -f Makefile-windows-vc9
clean:
cd main
nmake -f Makefile-windows-vc9 clean
2. Se deschide Microsoft Visual Studio 2008 făcând clic pe iconița de pe Desktop
3. Se face clic pe File > New > Project From Existing Code și se introduc următoarele:
Project file location: C:\snt\exata\2.2
Project name: exata
Folder: C:\snt\exata\2.2
Simularea Sistemelor de Comunicații Laborator 5
4. Se apasă Next și, în fereastra următoare se bifează How do you want to build the
project?: Use external build system și se apasă din nou Next
5. Se introdc următoarele configurări pentru depanare:
Build command line: nmake
Rebuild command line: nmake rebuild
Clean command line: nmake clean
Output (for debugging): bin\exata.exe
6. Se apasă Finish
57
Simularea Sistemelor de Comunicații Laborator 5
58
Simularea Sistemelor de Comunicații Laborator 5
de dedesubt membrii acelei structuri, iar dacă se dă dublu clic, se va deschide fi șierul ce
conține definiția structurii respective, cursorul fiind plasat la linia definiției.
Versiunea 2.2 a EXata dă posibilitatea efectuării transferului folosind aceste trei metrici, însă
codul sursă al EXata conține doar implementarea transferului folosind RSS ca metrică.
Laboratorul acesta propune modificarea codului sursă al EXata pentru a implementa luarea
deciziei de transfer pe baza celei de a doua metrici, CINR. Acest lucru presupune următorii
pași:
59
Simularea Sistemelor de Comunicații Laborator 5
E1. Se editează fișierul mac_dot16e.h și, la linia 64, între definiția parametrului
DOT16e_DEFAULT_HO_RSS_MARGIN și cea a DOT16e_TRIGEGER_METRIC_TYPE_CINR(sic!), se
adaugă următoarele definiții:
// /**
// CONSTANT :: DOT16e_DEFAULT_NBR_SCAN_CINR_TRIGGER : 16.0
// DESCRIPTION :: CINR value to trigger neighbor BS scan
// **/
#define DOT16e_DEFAULT_NBR_SCAN_CINR_TRIGGER (16.0)
// /**
// CONSTANT :: DOT16e_DEFAULT_HO_CINR_TRIGGER : 12.0
// DESCRIPTION :: CINR value to trigger handover decision
// **/
#define DOT16e_DEFAULT_HO_CINR_TRIGGER (12.0)
// /**
// CONSTANT :: DOT16e_DEFAULT_HO_CINR_MARGIN : 2.0
// DESCRIPTION :: Margin in CINR value for choosing the new BS
// **/
#define DOT16e_DEFAULT_HO_CINR_MARGIN 2.0
Indicație: Pentru a sări la o anumită linie, se apasă Ctrl+G și se intorduce numărul liniei.
Parametrii de mai sus sunt similari celor legați de RSS și dau valorile implicite ale CINR
care declanșează scanarea stațiilor de bază vecine și decizia de transfer. Al treilea parametru
dă marginea de RSS. La alegerea stației de bază vecine către care să se efectueze transferul,
stația mobilă va considera doar acele stații de bază ale căror ale căror niveluri RSS sunt mai
mari decât nivelul RSS al stației curente cu cel puțin valoarea marginii de RSS. Acest lucru
elimină transferurile frecvente. Valorile implicite au fost alese experimental, pe baza
simulărilor repetate.
//dot16e
60
Simularea Sistemelor de Comunicații Laborator 5
........................
// dot16e
dot16Bs->para.resrcRetainTimeout =
DOT16e_HO_SYTEM_RESOURCE_RETAIN_TIME;
IO_ReadString(
node,
node->nodeId,
interfaceIndex,
nodeInput,
"MAC-802.16e-HANDOVER-TRIGGER-TYPE",
&wasFound,
stringVal);
if(wasFound)
{
if (strcmp(stringVal, "RSSI") == 0)
{
dot16Bs->trigger.triggerType =
DOT16e_TRIGEGER_METRIC_TYPE_RSSI;
IO_ReadDouble(
node,
node->nodeId,
interfaceIndex,
nodeInput,
"MAC-802.16e-HANDOVER-RSS-TRIGGER",
&wasFound,
&doubleVal);
if (wasFound)
{
dot16Bs->para.hoRssTrigger = doubleVal;
}
else
{
dot16Bs->para.hoRssTrigger =
DOT16e_DEFAULT_HO_RSS_TRIGGER;
}
IO_ReadDouble(
node,
node->nodeId,
interfaceIndex,
nodeInput,
"MAC-802.16e-HANDOVER-RSS-MARGIN",
&wasFound,
&doubleVal);
if (wasFound)
{
dot16Bs->para.hoRssMargin = doubleVal;
61
Simularea Sistemelor de Comunicații Laborator 5
}
else
{
dot16Bs->para.hoRssMargin =
DOT16e_DEFAULT_HO_RSS_MARGIN;
}
}
else if (strcmp(stringVal, "CINR") == 0)
{
dot16Bs->trigger.triggerType =
DOT16e_TRIGEGER_METRIC_TYPE_CINR;
IO_ReadDouble(
node,
node->nodeId,
interfaceIndex,
nodeInput,
"MAC-802.16e-HANDOVER-CINR-
TRIGGER",
&wasFound,
&doubleVal);
if (wasFound)
{
dot16Bs->para.hoCinrTrigger = doubleVal;
}
else
{
dot16Bs->para.hoCinrTrigger =
DOT16e_DEFAULT_HO_CINR_TRIGGER;
}
IO_ReadDouble(
node,
node->nodeId,
interfaceIndex,
nodeInput,
"MAC-802.16e-HANDOVER-CINR-MARGIN",
&wasFound,
&doubleVal);
if (wasFound)
{
dot16Bs->para.hoCinrMargin = doubleVal;
}
else
{
dot16Bs->para.hoCinrMargin =
DOT16e_DEFAULT_HO_CINR_MARGIN;
}
}
}
62
Simularea Sistemelor de Comunicații Laborator 5
Codul de mai sus citește din fișierul de configurare mai întâi care va fi metrica de transfer
(MAC-802.16e-HANDOVER-TRIGGER-TYPE) și apoi citește valorile parametrilor necesari pentru
CINR (valoarea la care se ia decizia de transfer și marginea). Aceștia sunt stocați în
variabilele care au fost create în prealabil în structura MacDot16BsPara din fișierul header
(hoCinrMargin și hoCinrTrigger).
....................
// start dot16e realted init
if (dot16->dot16eEnabled)
{
dot16Bs->configChangeCount = 0;
dot16Bs->lastNbrAdvSent = 0;
//dot16Bs->trigger.triggerType = DOT16e_TRIGEGER_METRIC_TYPE_RSSI;
dot16Bs->trigger.triggerFunc =
DOT16e_TRIGEGER_METRIC_FUNC_SERV_LESS_ABSO;
dot16Bs->trigger.triggerAction = DOT16e_TRIGGER_ACTION_MOB_SCN_REQ;
if (dot16Bs->trigger.triggerType ==
DOT16e_TRIGEGER_METRIC_TYPE_RSSI)
{
dot16Bs->trigger.triggerValue =
(signed char) DOT16e_DEFAULT_NBR_SCAN_RSS_TRIGGER;
}
else if (dot16Bs->trigger.triggerType ==
DOT16e_TRIGEGER_METRIC_TYPE_CINR)
{
dot16Bs->trigger.triggerValue =
(signed char)
DOT16e_DEFAULT_NBR_SCAN_CINR_TRIGGER;
}
dot16Bs->trigger.triggerAvgDuration =
(unsigned char) DOT16e_DEFAULT_TRIGGER_AVG_DURATION;
.......................
static
void MacDot16BsCheckHandover(Node* node,
MacDataDot16* dot16,
MacDot16BsSsInfo* ssInfo)
{
MacDot16Bs* dot16Bs = (MacDot16Bs*) dot16->bsData;
Message* pduMsg;
63
Simularea Sistemelor de Comunicații Laborator 5
if (!ssInfo->inHandover &&
dot16Bs->trigger.triggerType == DOT16e_TRIGEGER_METRIC_TYPE_RSSI &&
!ssInfo->bsInitHoStart &&
ssInfo->ulRssMean < dot16Bs->para.hoRssTrigger)
{
int i;
double maxBsRssi;
........
if (found &&
(maxBsRssi - ssInfo->ulRssMean > dot16Bs->para.hoRssMargin))
{
.........
}
}
else if (!ssInfo->inHandover &&
dot16Bs->trigger.triggerType ==
DOT16e_TRIGEGER_METRIC_TYPE_CINR &&
!ssInfo->bsInitHoStart &&
ssInfo->ulCinrMean < dot16Bs->para.hoCinrTrigger)
{
int i;
double maxBsCinr;
int maxIndex;
BOOL found = FALSE;
if (found &&
(maxBsCinr - ssInfo->ulCinrMean > dot16Bs-
>para.hoCinrMargin))
{
pduMsg = MacDot16eBsBuildMobBshoReqPdu(
node,
dot16,
ssInfo,
ssInfo->nbrBsSignalMeas[i].bsId);
MacDot16BsScheduleMgmtMsgToSs(node,
dot16,
64
Simularea Sistemelor de Comunicații Laborator 5
ssInfo,
ssInfo-
>basicCid,
pduMsg);
ssInfo->bsInitHoStart = TRUE;
ssInfo->lastBsHoReqSent = getSimTime(node);
// update stat
dot16Bs->stats.numBsHoReqSent ++;
if (DEBUG_HO)
{
MacDot16PrintRunTimeInfo(node, dot16);
printf("BS inits a handover for SS w/ basicCid %d
to"
"bs %d:%d:%d:%d:%d:%d\n",
ssInfo->basicCid,
ssInfo->nbrBsSignalMeas[i].bsId[0],
ssInfo->nbrBsSignalMeas[i].bsId[1],
ssInfo->nbrBsSignalMeas[i].bsId[2],
ssInfo->nbrBsSignalMeas[i].bsId[3],
ssInfo->nbrBsSignalMeas[i].bsId[4],
ssInfo->nbrBsSignalMeas[i].bsId[5]);
}
}
}
}
Codul de mai sus tratează transferul inițiat de stația de bază și respectă întru totul
algoritmul pentru metrica RSS de transfer, fiind adaptat pentru CINR. Conform codului de
mai sus, transferul inițiat de stația de bază are loc astfel:
Mai întâi începe scanarea stațiilor de bază vecine. Scanarea începe dacă:
o Stația mobilă nu a început ea însăși procedura de transfer (condiția !ssInfo-
>inHandover din if)
o Stația de bază nu a început deja procedura de transfer (condiția !ssInfo-
>bsInitHoStart)
o Valoarea RSS sau CINR de la stația mobilă a scăzut sub pragul de transfer
(condiția ssInfo->ulRssMean < dot16Bs->para.hoRssTrigger sau
ssInfo->ulCinrMean < dot16Bs->para.hoCinrTrigger în funcție de
valoarea dot16Bs->trigger.triggerType).
Se caută apoi stația de bază care are valoarea RSS sa u CINR de la stația mobilă mai
mare decât cel al stației de bază curente. Dacă acesta este mai mare cu marginea RSS
sau CINR atunci se poate iniția transferul către stația de bază aleasă, prin trimiterea
mesajului MOB-BSHO-REQ.
E4. Urmează tratarea transferului inițiat de stația mobilă. Pentru aceasta, mai întâi se va
edita structura MacDot16SsPara din fișierul mac_dot16_ss.h de la linia 475 pentru a conține
variabile legate de metrica CINR de transfer:
...............
clocktype nbrMeaLifetime; // timeout for signal quality measure of a BS
65
Simularea Sistemelor de Comunicații Laborator 5
.....................
dot16Ss->para.t42Interval = DOT16e_SS_DEFAULT_T42_INTERVAL;
dot16Ss->para.t44Interval = DOT16e_SS_DEFAULT_T44_INTERVAL;
IO_ReadString(
node,
node->nodeId,
interfaceIndex,
nodeInput,
"MAC-802.16e-HANDOVER-TRIGGER-TYPE",
&wasFound,
stringVal);
if(wasFound)
{
if (strcmp(stringVal, "RSSI") == 0)
{
IO_ReadDouble(
node,
node->nodeId,
interfaceIndex,
nodeInput,
"MAC-802.16e-NEIGHBOR-SCAN-RSS-TRIGGER",
&wasFound,
&doubleVal);
if (wasFound)
{
...............
}
IO_ReadDouble(
node,
node->nodeId,
interfaceIndex,
nodeInput,
"MAC-802.16e-HANDOVER-RSS-TRIGGER",
&wasFound,
&doubleVal);
if (wasFound)
{
........
}
66
Simularea Sistemelor de Comunicații Laborator 5
IO_ReadDouble(
node,
node->nodeId,
interfaceIndex,
nodeInput,
"MAC-802.16e-HANDOVER-RSS-MARGIN",
&wasFound,
&doubleVal);
if (wasFound)
{
...........
}
}
else if (strcmp(stringVal, "CINR") == 0)
{
IO_ReadDouble(
node,
node->nodeId,
interfaceIndex,
nodeInput,
"MAC-802.16e-NEIGHBOR-SCAN-CINR-TRIGGER",
&wasFound,
&doubleVal);
if (wasFound)
{
dot16Ss->para.nbrScanCinrTrigger = doubleVal;
}
else
{
dot16Ss->para.nbrScanCinrTrigger =
DOT16e_DEFAULT_NBR_SCAN_CINR_TRIGGER;
}
IO_ReadDouble(
node,
node->nodeId,
interfaceIndex,
nodeInput,
"MAC-802.16e-HANDOVER-CINR-
TRIGGER",
&wasFound,
&doubleVal);
if (wasFound)
{
dot16Ss->para.hoCinrTrigger = doubleVal;
}
else
{
dot16Ss->para.hoCinrTrigger =
DOT16e_DEFAULT_HO_CINR_TRIGGER;
}
IO_ReadDouble(
node,
node->nodeId,
interfaceIndex,
nodeInput,
67
Simularea Sistemelor de Comunicații Laborator 5
"MAC-802.16e-HANDOVER-CINR-MARGIN",
&wasFound,
&doubleVal);
if (wasFound)
{
dot16Ss->para.hoCinrMargin = doubleVal;
}
else
{
dot16Ss->para.hoCinrMargin =
DOT16e_DEFAULT_HO_CINR_MARGIN;
}
}
}
dot16Ss->isCRCEnabled = DOT16_CRC_STATUS;
dot16Ss->isFragEnabled = DOT16_FRAGMENTATION_STATUS;
......................
---------------------------------------------------------------------------
Acum, decizia de transfer se ia în funcția MacDot16SsUpdateBsMeasurement. Tot ce
trebuie făcut este să se modifice codul de la linia 14620 pentru a ține cont și de CINR ca
metrică de transfer
static
void MacDot16SsUpdateBsMeasurement(Node* node,
MacDataDot16* dot16,
PhySignalMeasurement* signalMea)
{
MacDot16Ss* dot16Ss = (MacDot16Ss*) dot16->ssData;
MacDot16SignalMeasurementInfo meanMeas;
........
if (dot16->dot16eEnabled &&
dot16Ss->nbrScanStatus == DOT16e_SS_NBR_SCAN_InScan &&
dot16Ss->operational)
{
// update signal measurement of neighbor BS
if (dot16Ss->targetBs != NULL)
{
// update the measurement histroy and return the mean
...........
if (
(dot16Ss->servingBs->trigger.triggerType ==
DOT16e_TRIGEGER_METRIC_TYPE_RSSI &&
dot16Ss->targetBs->rssMean > dot16Ss->servingBs->rssMean &&
dot16Ss->servingBs->rssMean <
IN_DB(PhyDot16GetRxSensitivity_mW(
node,
dot16->myMacData->phyNumber,
moduCodeType)))
|| (dot16Ss->servingBs->trigger.triggerType ==
DOT16e_TRIGEGER_METRIC_TYPE_CINR
&& dot16Ss->targetBs->cinrMean > dot16Ss->servingBs-
>cinrMean
&& dot16Ss->servingBs->cinrMean < 5.0))
{
68
Simularea Sistemelor de Comunicații Laborator 5
...................
}
}
}
else
{
if (dot16Ss->initInfo.dlSynchronized)
{
...................
// only when SS has already finish the intitialization with
// serving BS could it start the scan and handover procedure
if (dot16->dot16eEnabled && dot16Ss->operational &&
dot16->numChannels > 1)
{
// check if need to trigger handover
if (dot16Ss->nbrScanStatus == DOT16e_SS_NBR_SCAN_None &&
dot16Ss->hoStatus == DOT16e_SS_HO_None)
{
if ((dot16Ss->servingBs->rssMean <
dot16Ss->para.hoRssTrigger
&& dot16Ss->servingBs->trigger.triggerType ==
DOT16e_TRIGEGER_METRIC_TYPE_RSSI)
|| (dot16Ss->servingBs->trigger.triggerType ==
DOT16e_TRIGEGER_METRIC_TYPE_CINR
&& dot16Ss->servingBs->cinrMean < dot16Ss-
>para.hoCinrTrigger
))
{
// need to init handover
if (dot16Ss->nbrBsList != NULL)
{
// select a nbr BS to perform handover
MacDot16SsBsInfo* targetBs;
targetBs = MacDot16eSsSelectBestNbrBs(node, dot16);
if ((targetBs != NULL &&
(targetBs->rssMean - dot16Ss->servingBs-
>rssMean)
>= dot16Ss->para.hoRssMargin
&& dot16Ss->servingBs->trigger.triggerType ==
DOT16e_TRIGEGER_METRIC_TYPE_RSSI)
|| (targetBs != NULL &&
dot16Ss->servingBs->trigger.triggerType ==
DOT16e_TRIGEGER_METRIC_TYPE_CINR &&
(targetBs->cinrMean - dot16Ss->servingBs-
>cinrMean)
>= dot16Ss->para.hoCinrMargin
))
{
// find a suitable nbr BS, do handover
..............
dot16Ss->targetBs = targetBs;
Message* msHoReq;
msHoReq = MacDot16eSsBuildMobMshoReqMsg(node,
dot16);
MacDot16SsEnqueueMgmtMsg(node,
dot16,
DOT16_CID_BASIC,
msHoReq);
dot16Ss->hoStatus = DOT16e_SS_HO_LOCAL_Begin;
dot16Ss->hoNumRetry = DOT16e_MAX_HoReqRetry;
69
Simularea Sistemelor de Comunicații Laborator 5
70
Simularea Sistemelor de Comunicații Laborator 5
((dot16Ss->servingBs->trigger.triggerType ==
DOT16e_TRIGEGER_METRIC_TYPE_RSSI &&
dot16Ss->servingBs->rssMean <
dot16Ss->para.nbrScanRssTrigger
) || (dot16Ss->servingBs->trigger.triggerType ==
DOT16e_TRIGEGER_METRIC_TYPE_CINR &&
dot16Ss->servingBs->cinrMean <
dot16Ss->para.nbrScanCinrTrigger))
&&
(dot16Ss->lastScanTime + dot16Ss->para.nbrScanMinGap)
<=
getSimTime(node))
{// less than threshold
if (dot16Ss->servingBs->trigger.triggerAction ==
DOT16e_TRIGGER_ACTION_MOB_SCN_REQ)
{
// needs to scan NBR BSs
if (DEBUG_NBR_SCAN)
{
MacDot16PrintRunTimeInfo(node, dot16);
printf("inits neighbor BS scan\n");
}
Codul de mai sus implementează transferul inițiat de stația mobilă. Procedura este
următoarea:
Se scanează stațiile de bază vecine. Scanarea este efectuată periodic de către stația
mobilă, atunci când valoarea RSS sau CINR de la stația de bază curentă este mai mică
decât pragul de declanșare al procedurii de scanare (condiția dot16Ss->servingBs-
>rssMean < dot16Ss->para.nbrScanRssTrigger sau dot16Ss->servingBs-
>cinrMean < dot16Ss->para.nbrScanCinrTrigger ).
Transferul se inițiază în una din următoarele situații:
o La inițializarea stației mobile, dacă semnalul recepționat de la stația de bază
curentă este prea slab, sub pragul de sensibilitate al receptorului (condiția
dot16Ss->servingBs->rssMean <
IN_DB(PhyDot16GetRxSensitivity_mW(node, dot16->myMacData-
>phyNumber, moduCodeType))) sau dot16Ss->servingBs->cinrMean <
5.0), se efectuează transferul către o stație de bază cu semnal mai bun
71
Simularea Sistemelor de Comunicații Laborator 5
E6. După ce s-au editat toate fișierele sursă, se apasă Save All și se compilează proiectul
exata, apăsând Build > Build exata.
Dacă nu apar erori de compilare, ecranul Output ar trebui să apară, arătând astfel:
72
Simularea Sistemelor de Comunicații Laborator 5
Acum că s-a efectuat modificarea de cod propusă, noile opțiuni disponibile, de a putea
selecta metrica de transfer și stabili parametrii aferenți, trebuie să se refle cte în mediul vizual
al EXata.
Mai multe detalii se pot găsi în Capitolul 5 (Customizing EXata Graphical User
Interface) din EXata-2.2-ProgrammersGuide.pdf.
Integrarea codului adăugat necesită modificarea unui fișier de descriere partajat. Cum
procedura de transfer se declanșează în funcții ce acț ionează la nivelul MAC în simulator, va
trebui modificat fișierul mac_layer.prt din directorul
EXATA_HOME/gui/settings/protocol_models.
73
Simularea Sistemelor de Comunicații Laborator 5
<variable name="Neighbor BS
Scanning RSS Trigger (dBm)" key="MAC-802.16e-NEIGHBOR-SCAN-RSS-TRIGGER"
type="Fixed" default="-76.0" help="The SS will try to scan neighboring BSs
if the receiving signal strength (RSS) from serving BS is below is
threshold." />
<variable name="Handover RSS
Trigger (dBm)" key="MAC-802.16e-HANDOVER-RSS-TRIGGER" type="Fixed"
default="-78.0" help="The SS will try to start handover if the receiving
signal strength (RSS) from serving BS is below is threshold." />
<variable name="Handover RSS
Margin (dB)" key="MAC-802.16e-HANDOVER-RSS-MARGIN" type="Fixed"
default="1.0" help="The SS will only handover to a target BS whose RSS
level is higher than that of current serving BS no smaller than this
margin." />
</option>
<option value="CINR" name="CINR">
<variable name="Neighbor BS
Scanning CINR Trigger" key="MAC-802.16e-NEIGHBOR-SCAN-RSS-TRIGGER"
type="Fixed" default="18.0" help="The SS will try to scan neighboring BSs
if the carrier-to-interference-plus-noise-ratio (CINR) from serving BS is
below this threshold." />
<variable name="Handover CINR
Trigger" key="MAC-802.16e-HANDOVER-CINR-TRIGGER" type="Fixed"
default="12.0" help="The SS will try to start handover if the carrier-to-
interference-plus-noise-ratio (CINR) from serving BS is below is
threshold." />
<variable name="Handover CINR
Margin" key="MAC-802.16e-HANDOVER-CINR-MARGIN" type="Fixed" default="1.5"
help="The SS will only handover to a target BS whose CINR is higher than
that of current serving BS no smaller than this margin." />
</option>
</variable>
<variable name="Enable Sleep Mode"
key="MAC-802.16e-SS-SUPPORT-SLEEP-MODE" type="Checkbox" default="NO"/>
<variable name="Enable Idle Mode" key="MAC-
802.16e-SS-SUPPORT-IDLE-MODE" type="Checkbox" default="NO"/>
</option>
</variable>
74
Simularea Sistemelor de Comunicații Laborator 5
Se salvează și se închide editorul. Dacă mediul vizual EXata este deschis, trebuie repornit
pentru ca schimbările să aibă efect.
75
Simularea Sistemelor de Comunicații Laborator 5
Se validează tot ceea ce s-a realizat până acum prin rularea unui scenariu. Se alege un
scenariu predefinit din cele plasate în directorul
EXATA_HOME/scenarios/advanced_wireless. Se copiază directorul WiMAXHomeToOffice
în EXATA_HOME/scenarios/user și apoi se modifică metrica de transfer pentru toate
nodurile din scenariu la CINR, păstrându-se valorile implicite.
76