ns-3 - 在 NS3 中使用 PointToPoint 时如何设置通道的抖动和丢失率?
问题描述
我是 NS3 的新手,从它的教程中学习 NS3。在教程示例first.cc中,它展示了如何使用PointToPointHelper
和UdpEchoClientHelper
进行 P2P 测试,我们可以找到如何设置Data Rate
和Delay
通道。但是我想设置通道的抖动和丢失率,有什么方法吗?
PointToPointHelper pointToPoint;
pointToPoint.SetDeviceAttribute ("DataRate", StringValue ("5Mbps"));
pointToPoint.SetChannelAttribute ("Delay", StringValue ("2ms"));
....
解决方案
信道丢失率
好消息是本教程已经涵盖了这个
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
的属性。
推荐阅读
- r - quanteda::dfm_lookup(): 捕获找到的词
- autodesk-forge - forge 查看器中 nwc 文件的对象的 x、y、z 坐标
- r - 在 MatchIt 中使用不同的变量取决于 dummy = true/false
- wordpress - 将产品变体和数量添加到 WooCommerce 块 - 按类别划分的产品
- python - 模块“模块”没有属性“芹菜”
- scala - Scala - 在元组数组中查找特定键
- ruby - 谷歌云功能授权
- oracle - 如何在保存的搜索中比较 netsuite 中的两列
- .net - 使用带有 TLS 1.2 的 SmtpClient 将未经身份验证的邮件发送到 Microsoft 365
- python - Groupby 有条件,包括 0 次出现