首页 > 解决方案 > 在 NS3 中使用 PointToPoint 时如何设置通道的抖动和丢失率?

问题描述

我是 NS3 的新手,从它的教程中学习 NS3。在教程示例first.cc中,它展示了如何使用PointToPointHelperUdpEchoClientHelper进行 P2P 测试,我们可以找到如何设置Data RateDelay通道。但是我想设置通道的抖动和丢失率,有什么方法吗?

    PointToPointHelper pointToPoint;
    pointToPoint.SetDeviceAttribute ("DataRate", StringValue ("5Mbps"));
    pointToPoint.SetChannelAttribute ("Delay", StringValue ("2ms"));

    ....

标签: ns-3

解决方案


信道丢失率

好消息是本教程已经涵盖了这个

ns-3 提供了可以附加到 Channels 的 ErrorModel 对象。我们正在使用 RateErrorModel,它允许我们以给定的速率将错误引入通道。

Ptr<RateErrorModel> em = CreateObject<RateErrorModel> ();
em->SetAttribute ("ErrorRate", DoubleValue (0.00001));
devices.Get (1)->SetAttribute ("ReceiveErrorModel", PointerValue (em));

上面的代码实例化了一个 RateErrorModel 对象,我们将“ErrorRate”属性设置为所需的值。然后,我们将生成的实例化 RateErrorModel 设置为点对点 NetDevice 使用的错误模型。这会给我们一些重传,让我们的情节更有趣一些。

抖动

抖动是数据包遇到的处理和排队延迟的函数。这不是您直接设置的数量。相反,它是根据对连接生命周期内所有数据包延迟的测量来计算的。抖动的典型定义是连接生命周期内所有数据包延迟的标准偏差。

所以,ns-3没有提供直接设置抖动的方法(虽然它可以,因为它是一个模拟器,但我离题了)。

但是有希望:如果你想改变抖动,你需要改变处理和排队延迟。处理延迟有点不确定,但可以通过选择 NetDevice 上的队列类型轻松更改排队延迟。请参阅PointToPointNetDeviceTxQueue的属性。


推荐阅读