You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在NS3中使用PointToPoint时如何设置信道的抖动与丢包率

NS3 点对点信道设置抖动与丢包率的实现方法

前置准备

首先引入对应的依赖头文件:

#include "ns3/error-model.h"
#include "ns3/random-variable-stream.h"

丢包率配置

通过RateErrorModel实现指定丢包率的设置,将错误模型绑定到点对点网络设备即可生效:

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

// 新增丢包率配置
Ptr<RateErrorModel> errorModel = CreateObject<RateErrorModel>();
// 按数据包为单位统计丢包
errorModel->SetAttribute("ErrorUnit", EnumValue(RateErrorModel::ERROR_UNIT_PACKET));
// 设置丢包率为1%,可按需修改数值
errorModel->SetAttribute("ErrorRate", DoubleValue(0.01));
pointToPoint.SetDeviceAttribute("ReceiveErrorModel", PointerValue(errorModel));

抖动配置

默认信道延迟为固定值,无抖动,可将延迟参数替换为随机分布变量实现抖动效果,以下提供两种常用配置方案:

  • 正态分布抖动(符合多数真实网络场景的延迟分布)
// 均值2ms,方差0.2ms,抖动范围大致为±0.6ms
Ptr<NormalRandomVariable> delayDist = CreateObject<NormalRandomVariable>();
delayDist->SetAttribute("Mean", DoubleValue(0.002));
delayDist->SetAttribute("Variance", DoubleValue(0.0002));
pointToPoint.SetChannelAttribute("Delay", PointerValue(delayDist));
  • 均匀分布抖动(延迟在固定区间内随机出现)
// 延迟范围1.8ms~2.2ms,抖动幅度为±0.2ms
Ptr<UniformRandomVariable> delayDist = CreateObject<UniformRandomVariable>();
delayDist->SetAttribute("Min", DoubleValue(0.0018));
delayDist->SetAttribute("Max", DoubleValue(0.0022));
pointToPoint.SetChannelAttribute("Delay", PointerValue(delayDist));

内容的提问来源于stack exchange,提问作者woder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 09:09:02