OMNeT++ Simulation Source code
OMNeT++ Simulation Source code maintains information of how network performance metrics are calculated in this OMNET++ simulation. The performance metrics are,
- Latency.
- Speed.
- Throughput.
Throughput:
- Throughput is a measure of how much actual data can be sent per unit of time across a network, channel or interface.
Where, t – Throughput
s- Distance
cm – speed of light in the medium
[code lang="js"] void ThruputMeter::initialize() { startTime = par("startTime"); long _batchSize = par("batchSize"); if ((_batchSize < 0) || (((long)(unsigned int)_batchSize) != _batchSize)) throw cRuntimeError("Invalid 'batchSize=%ld' parameter at '%s' module", _batchSize, getFullPath().c_str()); batchSize = (unsigned int)_batchSize; maxInterval = par("maxInterval"); numPackets = numBits = 0; intvlStartTime = intvlLastPkTime = 0; intvlNumPackets = intvlNumBits = 0; WATCH(numPackets); WATCH(numBits); WATCH(intvlStartTime); WATCH(intvlNumPackets); WATCH(intvlNumBits); bitpersecVector.setName("thruput (bit/sec)"); pkpersecVector.setName("packet/sec"); } void ThruputMeter::handleMessage(cMessage *msg) { updateStats(simTime(), PK(msg)->getBitLength()); send(msg, "out"); } void ThruputMeter::updateStats(simtime_t now, unsigned long bits) { numPackets++; numBits += bits; // packet should be counted to new interval if (intvlNumPackets >= batchSize || now-intvlStartTime >= maxInterval) beginNewInterval(now); intvlNumPackets++; intvlNumBits += bits; intvlLastPkTime = now; } [/code]
Speed:
- Speed is defined as the rate at which something moves, is done or acts.
Formula for calculating network speed:
Where S – Speed
D – Distance
T – Time
[code lang="js"] channel C extends DatarateChannel { delay = 0.01us; // ~ 2m datarate = 10Mbps; } module SubTest { parameters: string cliTcpType = default("n/a"); string srvTcpType = default("n/a"); int k = default(3); submodules: server: StandardHost { parameters: numTcpApps = 1; tcpType = srvTcpType; } switch: Router { parameters: } client[k]: StandardHost { parameters: numTcpApps = 1; tcpType = cliTcpType; tcpApp[0].connectAddress = substringBeforeLast(fullPath(),".client[")+".server"; } connections: server.pppg++ <--> C <--> switch.pppg++; for i=0..k-1 { client[i].pppg++ <--> C <--> switch.pppg++; } } [/code]