You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何按报文类型与源节点区分节点接收的报文(结果文件场景)

可行实现方案

针对OMNeT++结果文件(.sca、.anf)中无法直接按源节点、报文类型细分统计packetReceived:count的问题,以下是几个实用方案:

方案一:在报文接收模块中添加自定义分组统计

在接收节点的报文处理模块(比如INET框架的PacketSink或自定义应用模块)中,手动实现分组计数逻辑:

  • 每次收到报文时,提取源节点ID(可通过packet->getSenderModule()->getFullName()获取)、报文类型(比如packet->getClassName()或自定义的报文标识字段)、目的节点ID(当前模块的名称)。
  • 使用OMNeT++的std::map维护不同<源节点, 目的节点, 报文类型>组合的计数器,示例代码:
    #include <tuple>
    #include <map>
    #include <string>
    
    std::map<std::tuple<std::string, std::string, std::string>, long> packetCountMap;
    
    // 收到报文时更新计数
    void handleReceivedPacket(cPacket *packet) {
        std::string senderName = packet->getSenderModule()->getFullName();
        std::string destName = getFullName();
        std::string packetType = packet->getClassName();
        
        auto key = std::make_tuple(senderName, destName, packetType);
        packetCountMap[key]++;
    }
    
    // 仿真结束时输出统计结果
    void finish() override {
        for (const auto& entry : packetCountMap) {
            EV_INFO << "Source: " << std::get<0>(entry.first) 
                    << ", Dest: " << std::get<1>(entry.first)
                    << ", Type: " << std::get<2>(entry.first)
                    << ", Count: " << entry.second << endl;
        }
    }
    
  • 仿真结束时,将这些统计结果导出为CSV或直接整理成目标表格格式。

方案二:利用OMNeT++向量文件(.vec)与分析工具

默认情况下,packetReceived事件的详细属性(源节点、报文类型等)会被记录到.vec向量文件中,可通过工具聚合统计:

  1. 使用OMNeT++自带的scavetool命令行工具,过滤并聚合分组统计结果:
    scavetool export -i results.vec -o stats.csv -f 'name("packetReceived")' -g source,destination,typename -s count=sum(value)
    
    参数说明:
    • -g 指定分组维度(source、destination、typename分别对应源节点、目的节点、报文类型)
    • -s 指定聚合规则(对每个分组的事件计数求和)
  2. 将导出的CSV文件直接转换为目标表格格式即可。

方案三:配置OMNeT++统计模块实现自动分组

通过修改omnetpp.ini配置文件,启用细粒度统计维度:

  • 在ini中为packetReceived统计项配置分组维度,示例:
    # 启用分组统计
    **.packetReceived:count.recording = true
    **.packetReceived:count.group-by = source,typename
    
    部分INET模块支持通过statistic-recorders配置带维度的计数器,配置后统计模块会自动按源节点和报文类型拆分计数,最终结果直接写入.sca文件,可直接提取整理为表格。

内容的提问来源于stack exchange,提问作者Maryam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 00:10:53