【问题标题】:Where I can find the source code of TCP New Reno and run it on NS3我可以在哪里找到 TCP New Reno 的源代码并在 NS3 上运行它
【发布时间】:2020-04-06 03:45:52
【问题描述】:

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

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

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

我尝试搜索,但与该问题相关的信息很少。我从 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

【问题讨论】:

    标签: ns-3 tcp-new-reno transport-layer-protocol


    【解决方案1】:
    1. 您提供的链接包含 TcpNewReno 的实际源代码,但它们来自版本 3.18。当前版本是 3.30.1。所以,你找到的代码已经过时了。如果您使用的是最新版本的ns-3(我推荐),那么TcpNewReno./src/internet/model/tcp-congestion-ops.cc 中实现。如果您查看TcpNewReno 的 API 文档,您会发现每个成员/函数的源代码链接。 API 文档是必不可少的。

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

      1. TCP model documentationns-3 TCP 部分下表示“支持多种拥塞控制算法,默认使用 NewReno”。

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

    话虽如此,如果您想更改默认值,可以通过在脚本的主函数中调用 Config::SetDefault 来实现,就像这样

    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 中编写的代码几乎肯定不会在任何操作系统上按原样工作。如果您想在真实设备上测试新的拥塞控制算法,您将需要学习如何专门对该设备进行编程。

    根据您的工作,您可能会发现使用Network Simulation Cradle 很有帮助。

    【讨论】:

    • 感谢您的回答。如果我需要在 TCPNewReno 中编辑 CWND 计算算法,我需要在哪里进行更改?因为在开发之后,我需要获取 TCPNewReno 更改后的源代码并将其放入实际设备中。我该怎么做?
    猜你喜欢
    • 2011-08-31
    • 1970-01-01
    • 2019-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多