跳转至

队列追踪

其实跟上面一节的link_utilization_tracking完全一致

组件

  • 跟踪器实现:model/core/ptop-link-queue-tracker.cc/h
  • 辅助类:helper/core/ptop-link-queue-tracker-helper.cc/h

使用调度器

config_file -> helper

  1. 配置文件设置:
    Text Only
    1
    enable_link_queue_tracking=true
    
  2. 引入头文件与安装:
    C++
    1
    2
    3
    4
    5
    #include "ns3/ptop-link-queue-tracker-helper.h"
    
    PtopLinkQueueTrackerHelper 
    
    linkQueueTrackerHelper(basicSimulation, topology);
    
  3. 结果输出:
    C++
    1
    linkQueueTrackerHelper.WriteResults(); // 运行后调用
    

手动安装

obj -> tracker

C++
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
#include "ns3/ptop-link-queue-tracker.h" // 头文件

Ptr<PointToPointNetDevice> device = ...; // 获取网络设备
Ptr<PtopLinkQueueTracker> tracker = CreateObject<PtopLinkQueueTracker>(device);

// 结果提取示例
const std::vector<std::tuple<int64_t, int64_t, int64_t>> log_entries_pkt = tracker->GetIntervalsNumPackets();
for (size_t j = 0; j < log_entries_pkt.size(); j++) {
    int64_t interval_start_ns = std::get<0>(log_entries_pkt[j]);
    int64_t interval_end_ns = std::get<1>(log_entries_pkt[j]);
    int64_t interval_queue_num_packets = std::get<2>(log_entries_pkt[j]);
    // ... then do something with it, print it
}

日志文件规范

文件名 内容格式 计量单位
link_queue_pkt.csv <from>,<to>,<start_ns>,<end_ns>,<packets> 数据包数
link_queue_byte.csv <from>,<to>,<start_ns>,<end_ns>,<bytes> 字节数