VoipReceiver

Package: simu5g.apps.voip

VoipReceiver

simple module

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.

Inheritance diagram

The following diagram shows inheritance relationships for this type. Unresolved types are missing from the 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
voipFrameLoss
voipFrameDelay
voipPlayoutDelay
voipPlayoutLoss
voipJitter
voipMos
voipTaildropLoss
voipReceivedThroughput

Statistics

Name Title Source Record Unit Interpolation Mode Description
voipFrameLoss VoIP Frame Loss voipFrameLoss mean ratio
voipFrameDelay VoIP Frame Delay voipFrameDelay mean, vector s
voipPlayoutDelay VoIP Playout Delay voipPlayoutDelay mean, s
voipPlayoutLoss VoIP Playout Loss voipPlayoutLoss mean ratio
voipJitter VoIP Jitter voipJitter mean s
voipMos VoIP Mos Signal voipMos mean MOS
voipTaildropLoss VoIP Tail Drop Loss voipTaildropLoss mean ratio
voipReceivedThroughput Throughput received at the application level voipReceivedThroughput simu5g_rateavg, vector Bps

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