ns-3 模拟器批量发送应用程序完成时间

ns-3 simulator BulkSendApplication completion time?

本文关键字:应用程序 时间 模拟器 ns-3      更新时间:2023-10-16

我设置了一个模拟器,其中N从节点使用 BulkSendApp 将数据发送到主节点。问题是我似乎找不到如何记录操作的完成时间。我知道使用 prefix_time 标志进行日志记录(例如)

export 'NS_LOG=BulkSendApplication=level_all|prefix_func|prefix_time

但这只会记录所有数据包。我只想要完成时间。有没有办法在不修改应用程序类本身的情况下获得它?

没有跟踪源来通知您此应用程序中的 tx 结束事件。但是,添加一个应该很简单,既可以作为与m_totBytes变量关联的跟踪源,也可以作为跟踪回调。例如:

static TypeId BukSendApplication::GetTypeId (void)
{
  static TypeId tid = // ...
    // ...
    .AddTraceSource ("TotBytes",
                     "Total number of bytes sent",
                     MakeTraceSourceAccessor (&BukSendApplication::m_totBytes))
    ;
  return tid;
}

和:

void TotBytes (uint32_t oldval, uint32_t newval) {}
Config::ConnectWithoutContext (
  "/NodeList/0/ApplicationList/0/$ns3::BulkSendApplication/TotBytes",
  MakeCallback (&TotBytesTracer));

文档中也有关于此的大量文档:http://www.nsnam.org/docs/release/3.19/manual/html/tracing.html#overview

我找到了一种简单且合理可靠的方法来实现这一目标(欢迎评论)。

1.将 pcap 日志添加到发送节点:

对我来说是:

csma.EnablePcapAll ("tcp-bulk-send", false); .

csma是我用来构造交换机拓扑的助手。启用此功能后,运行模拟时将获得一个 .pcap 文件。

阿拉伯数字。使用 tcpdump -nn -tt -r tcp-bulk-send-N-D.pcapN = 节点索引; D = 设备索引)

这将打印相关节点的数据包捕获日志。现在检查最后一次收到确认的时间。您还可以通过确保应用程序使用唯一的套接字端口来检查成功发送了多少数据包(检查另一端接收了多少数据包)。最后一个确认到达的时间基本上是所需的完成时间。

相关文章: