我在哪里可以找到 TCP New Reno 的源代码和 运行 它在 NS3 上

Where I can find the source code of TCP New Reno and run it on NS3

我计划对现有的传输层协议进行一些拥塞控制调整。在这种情况下,我选择了 TCP New Reno。主要是我有两个问题。

1)主要问题是如何找到TCP New Reno的源代码

2) 另一件事是,即使我找到了源代码,我如何在两个节点之间的 NS3 中使用它(在 seventh.cc 中,他们没有指定协议。它采用默认协议。我需要使用 TCP New Reno)

我尝试搜索,但与该问题相关的信息很少。我从 NS3 文档中找到了某种源代码。但我不认为那是 TCP New Reno 的真正源代码。

tcp-newreno.h >> 摘自 https://www.nsnam.org/docs/release/3.18/doxygen/tcp-newreno_8h_source.html

tcp-newreno.cc >> 摘自 https://www.nsnam.org/docs/release/3.18/doxygen/tcp-newreno_8cc_source.html#l00247

  1. 您提供的链接具有 TcpNewReno 的实际源代码,但它们来自 3.18 版。当前版本为 3.30.1。因此,您找到的代码已过时。如果您使用的是最新版本的 ns-3(我推荐),那么 TcpNewReno 是在 ./src/internet/model/tcp-congestion-ops.cc. If you look at the API documentation of TcpNewReno 中实现的,您会找到源代码的链接对于每个 member/function。 API 文档必不可少。

  2. 默认协议为TcpNewReno,无需设置。您可以通过两种方式验证默认值:

    1. TCP model documentationns-3 TCP 部分下说 "several congestion control algorithms are supported, with NewReno the default"。

    2. 您可以验证默认 TCP SocketTypeGetTypeId 函数中的 ./src/internet/model/tcp-l4-protocol.cc 中设置为 TcpNewReno

话虽这么说,如果您想更改默认设置,可以通过在脚本的主函数中调用 Config::SetDefault 来实现

Config::SetDefault ("ns3::TcpL4Protocol::SocketType", StringValue ("ns3::TcpNewReno"));

跟进

If I need to edit the CWND calculation algorithm in TCPNewReno, where do I need to do the changes?

如果您想创建一个新的拥塞控制算法,我建议您不要更改现有的 TcpNewReno 代码。相反,创建一个 TcpNewReno 的子类。在新文件 ./src/internet/model/tcp-placeholder.{h,cc} 中定义并声明此子类。然后,您需要在 ./src/internet/wscript 中添加这些新文件。之后,这些新文件应该在您使用 ./waf 构建时编译。同样,要实际使用这个新的拥塞控制算法,您需要进行上面的 Config::SetDefault 调用。

Because later on after the developments, I need to get the changed source code of the TCPNewReno and put it inside an actual device. How Can I do that?

这可能不会发生。虽然 ns-3 试图模仿现实世界的实现方式,但您在 ns-3 中编写的代码几乎肯定不会像-在任何操作系统上。如果您想在真实设备上测试新的拥塞控制算法,您将需要学习如何专门为该设备编程。

根据您正在做的事情,您可能会发现使用 Network Simulation Cradle 很有帮助。