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

发布于:2025-03-11 ⋅ 阅读:(38) ⋅ 点赞:(0)

目录

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

二、更改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
用该类中存在的成员变量和方法来测出 丢包率、带宽利用率、发包率;


网站公告

今日签到

点亮在社区的每一天
去签到