您提供的链接具有 TcpNewReno 的实际源代码,但它们来自版本 3.18。当前版本是 3.30.1。所以,你找到的代码已经过时了。如果您使用的是最新版本的ns-3(我推荐),那么TcpNewReno
在./src/internet/model/tcp-congestion-ops.cc
. 如果您查看 的 API 文档TcpNewReno
,您会发现每个成员/函数的源代码链接。API 文档是必不可少的。
默认协议为TcpNewReno
,无需设置。您可以通过两种方式验证默认值:
TCP 模型文档在ns-3 TCP部分下说“支持几种拥塞控制算法,默认使用 NewReno” 。
您可以验证是否在函数中SocketType
设置了默认 TCP。TcpNewReno
./src/internet/model/tcp-l4-protocol.cc
GetTypeId
话虽如此,如果您想更改默认值,可以通过调用Config::SetDefault
脚本的 main 函数来实现,如下所示
Config::SetDefault ("ns3::TcpL4Protocol::SocketType", StringValue ("ns3::TcpNewReno"));
跟进
如果我需要在 TCPNewReno 中编辑 CWND 计算算法,我需要在哪里进行更改?
如果您想创建一个新的拥塞控制算法,我建议您不要更改现有TcpNewReno
代码。相反,创建 TcpNewReno 的子类。在新文件中定义和声明这个子类,./src/internet/model/tcp-placeholder.{h,cc}
. 然后,您需要将这些新文件添加到./src/internet/wscript
. 之后,这些新文件应该在您使用./waf
. 同样,要实际使用这种新的拥塞控制算法,您需要进行上述Config::SetDefault
调用。
因为在开发之后,我需要获取 TCPNewReno 更改后的源代码并将其放入实际设备中。我怎样才能做到这一点?
这可能不会发生。虽然ns-3试图在工作方式上模仿现实世界的实现,但您在ns-3中编写的代码几乎肯定不会在任何操作系统上按原样工作。如果您想在真实设备上测试新的拥塞控制算法,您将需要学习如何专门对该设备进行编程。
根据您所做的工作,您可能会发现使用网络模拟底座很有帮助。