ns-3 模拟器批量发送应用程序完成时间
ns-3 simulator BulkSendApplication completion time?
我设置了一个模拟器,其中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.pcap
( N
= 节点索引; D
= 设备索引)
这将打印相关节点的数据包捕获日志。现在检查最后一次收到确认的时间。您还可以通过确保应用程序使用唯一的套接字端口来检查成功发送了多少数据包(检查另一端接收了多少数据包)。最后一个确认到达的时间基本上是所需的完成时间。
- 我的 c++ 应用程序中的运行时间从 0 增加到 60 太快了(例如一毫秒或一微秒)
- 测量 OpenCL 应用程序的运行时间
- 如何在多线程应用程序中获得花费的时间
- 在关闭应用程序期间正确关闭线程,该线程可能会运行很长时间的循环
- 当该应用程序中加速文件的最后一个修改时间发生更改时,如何重新启动应用程序
- 使用C 的多线程应用程序中测量全局时间(壁挂)的最快方法
- 当后端响应需要很长时间时,WXWIDGET应用程序会挂起
- 有没有一种方法可以测量桌面应用程序 UI 响应时间
- ns-3 模拟器批量发送应用程序完成时间
- C 时间类没有编译错误,执行停止和应用程序在CheckDay函数中崩溃错误
- C 控制台应用程序;在牙科诊所情况下,时间优化了队列
- 在MFC对话框应用程序中全天候检查系统时间
- 一段时间后,C++应用程序占用100%的cpu周期
- 应用程序结束时间和启动时间
- C++linux应用程序在长时间运行后停止系统.如何找到原因
- 应用程序的响应时间与给定时间段内输入触发器的数量不经意地相关
- 如何了解c++应用程序在WINDOWS上运行的时间
- 如何计算将文件加载到应用程序中的时间C++
- QGraphicsScene - 添加带有少量不透明点的大透明像素图时,应用程序会挂起很长时间
- c ++:TCP服务器"bind"功能失败(errno 98),如果我在两次连续应用程序启动之间没有等待足够的时间