VoipReceiver

Package: simu5g.apps.voip

simple module VoipReceiver

Represents a model for the receiver of Voice-over-IP (VoIP) traffic. It receives packets sent by a VoipSender application via UDP and records statistics such as packet loss, end-to-end latency, jitter, and throughput. Furthermore, it computes and emits a MOS (Mean Opinion Score) value, which represents the Quality-of-Experience of the end users.

simu5g.apps.voip.VoipReceiverVoipReceiversimple

Inheritance diagram

Parameters

Name

Type

Default value

Description

localPort

int

3000

emodel_Ie

int

5

TODO from some ITU standard, figure it out

emodel_Bpl

int

10

emodel_A

int

5

emodel_Ro

double

93.2

playoutDelay

double

0s

dimBuffer

int

20pk

Number of packets

samplingTime

double

0.02s

Properties

Name

Value

Description

display

i=block/source

Gates

Name

Direction

Size

Description

socketOut

output

socketIn

input

Signals

Name

Type

Unit

Description

voipFrameDelay

voipFrameLoss

voipJitter

voipMos

voipPlayoutDelay

voipPlayoutLoss

voipReceivedThroughput

voipTaildropLoss

Statistics

Name

Title

Source

Record

Unit

Interpolation Mode

Description

voipFrameDelay

VoIP Frame Delay

voipFrameDelay

mean,vector

s

voipFrameLoss

VoIP Frame Loss

voipFrameLoss

mean

ratio

voipJitter

VoIP Jitter

voipJitter

mean

s

voipMos

VoIP Mos Signal

voipMos

mean

MOS

voipPlayoutDelay

VoIP Playout Delay

voipPlayoutDelay

mean,

s

voipPlayoutLoss

VoIP Playout Loss

voipPlayoutLoss

mean

ratio

voipReceivedThroughput

Throughput received at the application level

voipReceivedThroughput

simu5g_rateavg,vector

Bps

voipTaildropLoss

VoIP Tail Drop Loss

voipTaildropLoss

mean

ratio

Source code

//
// Represents a model for the receiver of Voice-over-IP (VoIP) traffic.
// It receives packets sent by a ~VoipSender application via UDP and records statistics
// such as packet loss, end-to-end latency, jitter, and throughput. Furthermore, it computes
// and emits a MOS (Mean Opinion Score) value, which represents the Quality-of-Experience of
// the end users.
//
simple VoipReceiver like IApp
{
    parameters:
        int localPort = default(3000);
        int emodel_Ie = default(5);  // TODO from some ITU standard, figure it out
        int emodel_Bpl = default(10);
        int emodel_A = default(5);
        double emodel_Ro = default(93.2);
        double playoutDelay @unit("s") = default(0s);
        int dimBuffer @unit(pk) = default(20pk); // Number of packets
        double samplingTime @unit("s") = default(0.02s);

        @signal[voipFrameLoss];
        @statistic[voipFrameLoss](title="VoIP Frame Loss"; unit="ratio"; source="voipFrameLoss"; record=mean);
        @signal[voipFrameDelay];
        @statistic[voipFrameDelay](title="VoIP Frame Delay"; unit="s"; source="voipFrameDelay"; record=mean,vector);
        @signal[voipPlayoutDelay];
        @statistic[voipPlayoutDelay](title="VoIP Playout Delay"; unit="s"; source="voipPlayoutDelay"; record=mean,);
        @signal[voipPlayoutLoss];
        @statistic[voipPlayoutLoss](title="VoIP Playout Loss"; unit="ratio"; source="voipPlayoutLoss"; record=mean);
        @signal[voipJitter];
        @statistic[voipJitter](title="VoIP Jitter"; unit="s"; source="voipJitter"; record=mean);
        @signal[voipMos];
        @statistic[voipMos](title="VoIP Mos Signal"; unit="MOS"; source="voipMos"; record=mean);
        @signal[voipTaildropLoss];
        @statistic[voipTaildropLoss](title="VoIP Tail Drop Loss"; unit="ratio"; source="voipTaildropLoss"; record=mean);
        @signal[voipReceivedThroughput];
        @statistic[voipReceivedThroughput](title="Throughput received at the application level"; unit="Bps"; source="voipReceivedThroughput"; record=simu5g_rateavg,vector);
        @display("i=block/source");
    gates:
        output socketOut;
        input socketIn;
}

File: src/simu5g/apps/voip/VoipReceiver.ned