当前位置: 首页 > news >正文

NS3学习——运行自定义拥塞控制算法步骤

目录

一、添加优化后的代码文件

二、更改CMakeLists文件中内容

三、重新配置和编译ns-3

四、常见问题 


目的:想在tcp拥塞控制算法的基础上进行优化改进,之后在ns3中运行优化后的算法,即自定义拥塞控制算法;

以tcpVegas算法为例,优化后的算法为TcpVegasImproved,使用ns3中最简单的点对点网络,基于fifth.cc脚本文件:

一、添加优化后的代码文件

需要三个代码文件:

1.在 examples/tutorial/ 下添加fifth-tcpvegas-improved.cc脚本文件

使用ns-3网络模拟器的示例脚本,设置一个包含两个节点的简单点对点网络,并在其中使用一个自定义的TCP拥塞控制算法(改进后的tcpvegas算法),脚本主要展示如何在ns3中配置和使用自定义的TCP拥塞控制算法,并跟踪一些网络事件,如拥塞窗口的变化和丢包事件;

2.在src/internet/model/  下添加tcpvegas-improved.h 头文件 和 tcp-vegas-improved.cc 文件

tcpvegas-improved.h文件是c++的头文件,定义了一个名为TcpVegasImproved的类,该类继承自ns3网络模拟器中的TcpVegas类,TcpVegasImproved类旨在通过重写TcpVegas类中的某些方法,如:IncreaseWindow来实现改进的拥塞控制算法;提供了一些私有成员方法:计算拥塞控制分数、根据分数动态调整拥塞窗口大小、测量丢包率、带宽利用率和发包率;

tcpvegas-improved.cc文件是 TcpVegasImproved 类的实现文件,文件中包含了TcpVegasImproved 类中所有私有成员方法的实现,以及类构造函数和析构函数的日志记录。

二、更改CMakeLists文件中内容

1.在examples/tutorial下的CMakeLists.txt文件最后添加如下代码:

build_exampl
  NAME fifth-tcpvegas-improved 
  SOURCE_FILES fifth-tcpvegas-improved.cc
               tutorial-app.cc
  LIBRARIES_TO_LINK
    ${libcore}
    ${libpoint-to-point}
    ${libinternet}
    ${libapplications}
)

 注:fifth-tcpvegas-improved/fifth-tcpvegas-improved.cc  需替换成 自己定义的脚本文件名字

 2.在src/internet/CMakeLists.txt 文件中:

在set(source_files   中添加一行代码

model/tcpvegas-improved.cc  //需替换成自己定义的拥塞控制算法的文件名

在set(header_files 下添加一行代码

model/tcpvegas-improved.h //需替换成自己定义的拥塞控制算法的头文件名

三、重新配置和编译ns-3

./ns3 configure
./ns3 build

四、常见问题 

1.编译报错: .cc文件中有引用 .h头文件,名字要和头文件的命名一致;

2.目标文件不存在:ns3运行自定义拥塞控制算法报错:目标不存在“Target to build does not exist: examples/tutorial/fifth-tcpvegas-improved”-CSDN博客

3. 修改后,重新配置和编译之前 先清理: ./ns3 clean

4. 编译报错: TcpSocketState 类中 没有 用在测量丢包率、带宽率利用率、和发包率中的成员变量

解决:先查看 TcpSocketState 类中有什么成员变量和成员方法:tcp-socket-state.h
用该类中存在的成员变量和方法来测出 丢包率、带宽利用率、发包率;

相关文章:

  • 动态规划中固定倒数第二个数与倒数第一个数的区别与应用场景分析 —— 从最长等差数列问题到统计等差数列个数的填表策略对比
  • 关于前后端整合和打包成exe文件的个人的总结和思考
  • 数据集构建与训练前准备
  • VIC模型有哪些优势?适用哪些范围?基于QGIS的VIC模型建模;未来气候变化模型预测;基于R语言VIC参数率定和优化
  • 【Academy】Web 缓存欺骗 ------ Web cache deception
  • 如何实现wordpress搜索自字义字段内容
  • 分享最佳ChatGPT替代11个方案(2025)
  • 计算机组成原理(第六章 总线)
  • 关于在electron(Nodejs)中使用 Napi 的简单记录
  • 内容中台的核心架构是什么?
  • 【在校课堂笔记】Python 第 3 节课 总结
  • FlinkSQL源码笔记
  • ~(取反)在算法竞赛中的常见用法和注意事项
  • 线程管理操作
  • 【CSS3】金丹篇
  • 3.3.5 VO-O语法- 高级语法
  • 大语言模型中Token的输出过程
  • vue+dhtmlx-gantt 实现甘特图-快速入门【甘特图】
  • Python 编程题 第八节:字符串变形、压缩字符串、三个数的最大乘积、判定字符是否唯一、IP地址转换
  • KL散度详解与应用
  • 预算1600万寻装修供应商,济宁银行山东省内第八家分行将落户济南
  • 上海乐高乐园客流预测来了:工作日0.8万人次/日,周末节假日2万人次/日
  • 海南省市监局与香港标准及检定中心签署合作协议,加快检验检测国际化
  • 中美贸易代表会谈后是否已确定下一次会谈?外交部回应
  • 杨建全已任天津市委副秘书长、市委市政府信访办主任
  • 国际金价下跌,中概股多数上涨,穆迪下调美国主权信用评级