Professional Documents
Culture Documents
Bao Cao Cs TSL
Bao Cao Cs TSL
BI TP LN
ti :Mng hng i
Ging vin hng dn: TS.Trn Th Ngc Lan
Nhm : 08
Sinh vin thc hin:
H v tn
MSSV
Lp
L Minh H
20111458
TTT-05-K56
Nguyn Vn Lm
20111744
TTT-02-K56
Phm V Trung Kin 20111727
TTT-02-K56
Giang Quang t
20111371
TTT-05-K56
Giang Quc Vit
20112499
TTT-09-K56
Mc lc
Trang
M phng
Mt s hnh nh m phng
X l kt qu m phng
Tnh s lng gi i c n ch
La chn tc phc v nh nht s gi truyn c n ch l ln
nht
Chng I : Nghin cu s b
1.Gii thiu
Trong mn C s truyn s liu , chng em c lm quen vi phng php
nh gi hot ng ca mt h thng thng tin bng phng php phn tch ton
hc, c bit l cc m hnh lin quan n h thng hng i n, mng hng i.
Trong phn bi tp ln ny, chng em c lm quen vi mt phng php khc
nh gi hiu nng , l phng php m phng . Cng c m phng c s
dng y l : cng c m phng OMNET++ - cng c m phng mng thng
dng nht hin nay.
2. Tm hiu v OMNET++
2.1. OMNET++ l g ?
OMNeT++ l vit tt ca cm t Objective Modular Network Testbed in C++.
OMNeT++ l mt ng dng cung cp cho ngi s dng mi trng tin hnh
m phng hot ng ca mng. Mc ch chnh ca ng dng l m phng hot
ng mng thng tin, tuy nhin do tnh ph cp v linh hot ca n, OMNeT++
cn c s dng trong nhiu lnh vc khc nh m phng cc h thng thng tin
phc tp, cc mng kiu hng i (queueing networks) hay cc kin trc phn
cng...
OMNeT++ cung cp sn cc thnh phn tng ng vi cc m hnh thc t. Cc
thnh phn ny (cn c gi l cc module) c lp trnh theo ngn ng C++,
sau c tp hp li thnh nhng thnh phn hay nhng m hnh ln hn bng
mt ngn ng bc cao (NED). OMNeT++ h tr giao din ho, tng ng vi
cc m hnh cu trc ca n ng thi phn nhn m phng (simulation kernel) v
cc module ca OMNeT++ cng rt d dng nhng vo trong cc ng dng khc.
2.2 Cc thnh phn chnh ca OMNET++
Th vin phn nhn m phng (simulation kernel)
Trnh bin dch cho ngn ng m t hnh trng (topology description language) NED (nedc)
Trnh bin tp ho (graphical network editor) cho cc file NED (GNED)
Giao din ho thc hin m phng, cc lin kt bn trong cc file thc hin
m phng (Tkenv)
Giao din dng lnh thc hin m phng (Cmdenv)
Cng c (giao din ho) v th kt qu vector u ra (Plove)
Cng c (giao din ho) m t kt qu v hng u ra (Scalars)
Cng c ti liu ho cc m hnh
Cc tin ch khc
Cc ti liu hng dn, cc v d m phng...
2.3. ng dng
OMNeT++ l mt cng c m phng cc hot ng mng bng cc module c
thit k hng i tng. OMNeT++ thng c s dng trong cc ng dng ch
yu nh:
M hnh hot ng ca cc mng thng tin
M hnh giao thc
M hnh ho cc mng kiu hng i
M hnh ho cc h thng a b vi x l (multiprocesser) hoc cc h thng
phn cng theo m hnh phn tn khc (distributed hardware systems)
nh gi kin trc phn cng
nh gi hiu qu hot ng ca cc h thng phc tp...
2.4. M hnh trong OMNET++
3. K hoch lm vic
Sau khi nh gi s b v thc trng, yu cu ra, kh nng nhm pht trin
cng nh qu trnh vn hnh d n c th c pht trin theo trnh t:
2. Mt s hnh nh m phng :
Code :
[General]
network = manghangdoi
sim-time-limit = 200s
**.source.interArrivalTime = exponential(1s/20)
**.source.stopTime = 200s
*.delay.delay = 1s/1000000
*.source.startTime = 0s
*.Q2.serviceTime = exponential(1s/50)
*.Q2.tyle = 1/2
*.Q1.serviceTime = exponential(1s/80)
*.Q1.tyle = 1/4
Code hng i thay i :
//
//
//
//
//
//
//
//
#include "Queue.h"
#include "Job.h"
namespace queueing {
Define_Module(Queue);
Queue::Queue()
{
jobServiced = NULL;
endServiceMsg = NULL;
}
Queue::~Queue()
{
delete jobServiced;
cancelAndDelete(endServiceMsg);
}
void Queue::initialize()
{
droppedSignal = registerSignal("dropped");
queueingTimeSignal = registerSignal("queueingTime");
queueLengthSignal = registerSignal("queueLength");
emit(queueLengthSignal, 0);
busySignal = registerSignal("busy");
emit(busySignal, 0);
endServiceMsg = new cMessage("end-service");
fifo = par("fifo");
capacity = par("capacity");
queue.setName("queue");
}
void Queue::handleMessage(cMessage *msg)
{
if (msg==endServiceMsg)
{
endService( jobServiced );
if (queue.empty())
{
jobServiced = NULL;
emit(busySignal, 0);
}
else
{
jobServiced = getFromQueue();
emit(queueLengthSignal, length());
simtime_t serviceTime = startService( jobServiced );
scheduleAt( simTime()+serviceTime, endServiceMsg );
}
}
else
{
if (!jobServiced)
{
// processor was idle
jobServiced = job;
emit(busySignal, 1);
simtime_t serviceTime = startService( jobServiced );
scheduleAt( simTime()+serviceTime, endServiceMsg );
}
else
{
// check for container capacity
if (capacity >=0 && queue.length() >= capacity)
{
EV << "Capacity full! Job dropped.\n";
if (ev.isGUI()) bubble("Dropped!");
emit(droppedSignal, 1);
delete job;
return;
}
queue.insert( job );
emit(queueLengthSignal, length());
job->setQueueCount(job->getQueueCount() + 1);
}
}
simtime_t Queue::startService(Job *job)
{
// gather queueing time statistics
simtime_t d = simTime() - job->getTimestamp();
emit(queueingTimeSignal, d);
job->setTotalQueueingTime(job->getTotalQueueingTime() + d);
EV << "Starting service of " << job->getName() << endl;
job->setTimestamp();
return par("serviceTime").doubleValue();
}
void Queue::endService(Job *job)
{
EV << "Finishing service of " << job->getName() << endl;
simtime_t d = simTime() - job->getTimestamp();
job->setTotalServiceTime(job->getTotalServiceTime() + d);
double tl=par("tyle");
int test = bernoulli (tl,0);
if (test)
send(jobServiced, "out",0);
else send(jobServiced, "out",1);
}
void Queue::finish()
{
}
}; //namespace
Ci t cc thng s m phng :
3. X l kt qu m phng:
3.1.L thuyt lin quan:
3.1.1. L thuyt mng hng i :
- Ri khi nt mng
- i vo nt k tip
- Quay tr li nt n i qua trc
Gi thit dng lu lng i vo nt i tun theo phn b Poisson vi tham s 1
Tc phc v ca server ti nt mng j tun theo phn b Poisson vi tham s j
Xc sut 1 yu cu sau khi ri nt i c gi ti nt j l r ij( gi l xc
sut nh tuyn), xc sut n ri khi mng l ri0.
3.1.2 . Hng i M/M/1
Lc trng thi:
- Mt lu lung: =
( )
(1)
()
Thi gian i trung bnh ca mi gi : Tq =T-Ts = (1 )
Vi s khch hng l k
n
Pn= .Po; 0<=n<=k
2
k+1
Pn= (1 )(1 )
(k +1) k+1
L= 1 - 1 k+1
(1 )
Pk=
1
k+1
1
1/
1
4 +
2
2
1=
3 = 3 x 20 =
3 1
4
= 2 = 2 x 20 = 40
1
160
3
= 1 =
2
2
2
3
4
= 5
Hng i Q1:
N1 =
1
1 1
2/3
= 12/3
=2
Tr TB : T Ts = 1 1 - 1 = 80160/3 - 80 = 0,025
Hng i Q2 :
2
4/5
N2 = 1 2 = 14 /5 = 4
1
2 2
Tr TB : T Ts =
1
2
1
5040
1
50
= 0,08
k
1
Ta c:
Tnh li
'
1824
47 ,
1368
47
38
65
= 0,58
Hng i Q1: N1 =
T1 =
2
8
x(1- 65
2
3 1
4
2=
'
1
4 +
N1
1
Nq1 = N1 =
( k +1) 1k+1
1 1k+1
= 0,026
1
+ k 1k +1
1 1 1 1k+1 = 0,43
1
1 1
= 1,015
1 1
k+1
1 1
8
65
Tq1 = 0,011
Hng i Q2 : N2 =
N2
2
T2 =
2
1 2
= 1,4
= 0,048
N=
= 0,44
Ta c:
1/
1
4 +
3 1
4 (1-0,44)
= 37
1=0,4625
Hng i Q1 :
1
N1 = 1 1 = 0,86
T1 =
N1
1
= 0,023
2
2
Cu 2:
Cu 3
nh gi v kt lun :
Qua s liu tnh ton theo l thuyt v kt qu m phng, ta nhn thy:
-Vi thi gian m phng 5s th kt qu m phng c sai s kh nhiu so vi l thuyt.
- Vi thi gian m phng 200s th kt qu m phng xp x vi tnh ton theo l thuyt.
Chng IV : Kt Lun
Trong mn C s truyn s liu , chng em c lm quen vi phng php nh gi
hot ng ca mt h thng thng tin bng phng php phn tch ton hc, c bit l
cc m hnh lin quan n h thng hng i n, mng hng i. Trong phn bi tp
ln ny, chng em c lm quen vi mt phng php khc nh gi hiu nng ,
l phng php m phng . Cng c m phng c s dng y l : cng c m
phng OMNET++ - cng c m phng mng thng dng nht hin nay. Do hn ch v
mt thi gian cng nh l kin thc, bi lm khng th trnh khi nhng thiu st, chng
em mong c s nht xt, nh gi ca C gio.
Cui cng, chng em xin chn thnh cm nC: TS. Trn Th Ngc Lan tn tnh
hng dn chng em trong bi tp ln ny !